diff --git a/SESSION.md b/SESSION.md index 7330906..1aab6e5 100644 --- a/SESSION.md +++ b/SESSION.md @@ -839,11 +839,12 @@ Automation execution-layer PXX remains closed and its known scope stays frozen. - S10 real intraday feedback validation is implemented, deployed, and remote-verified: added `docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md`; used real remote evidence (`operator_feedback_count=3`, recent Candidate `4610` observation with `operator_agreement=unclear`, `paper_ticket_count=0`, `paper_execution_count=0`, `weekly_review_entry_count=0`) to tighten the six-card copy without adding features. `Observe Only` now says the explicit gap (`FVG retrace is not confirmed yet; no trade`), `Wait` says the operator should wait for `trigger-chart FVG retrace confirmation`, `Risk` warns against treating the watch as a signal, and `Historical Edge` is reduced to Study / Review-only language without first-screen PF/DD/expectancy detail. Validation passed focused operator/static/docs tests, `node --check`, script static checks, full unit discovery (`807` tests), `git diff --check` with only LF/CRLF warnings, deploy smoke over 11 endpoints, remote ops smoke, readonly live analysis smoke, six-card field smoke, and gstack browser verification with no console errors. Evidence screenshot: `output/playwright/s10-trader-cockpit-real-feedback-six-card-1366x768.png`. - S11 real intraday use loop is implemented, deployed, and remote-verified: remote `/trader-mode` showed the S10 six-card conclusion clearly (`FVG retrace is not confirmed yet; no trade`), so the operator recorded a real `No Trade` instead of tuning more copy. This created observation `9237` with `operator_agreement=no_trade` for Candidate `4610`; `operator_feedback_count` increased from `3` to `4`, while `paper_ticket_count=0`, `paper_execution_count=0`, and `weekly_review_entry_count=0` stayed unchanged. A feedback mapping bug was fixed so Trader Cockpit buttons now write `no_trade` and `need_more_evidence` explicitly instead of collapsing both into `unclear`. Validation passed focused tests, `node --check`, deploy smoke over 11 endpoints, remote ops smoke, readonly live analysis smoke, field verification, and gstack browser verification with no console errors. Evidence screenshot: `output/playwright/s11-trader-mode-no-trade-feedback-1366x768.png`. - S12 real intraday use loop was attempted and the anti-duplication guard was confirmed: remote `/trader-mode` still showed a clear Chinese `Observe Only / no trade` readout, the UI wrote `POST /trading/shadow-paper/observe -> 201`, and screenshot evidence was saved at `output/playwright/s12-trader-mode-fifth-feedback-1366x768.png`. The R2 count did not increase from `4/5` to `5/5` because `shadow_paper_observations` upserts by `(instrument_id, observation_date, timeframe, session_code)`, so another same-day same-session LONDON `No Trade` updates observation `9237` instead of creating a duplicate sample. Current live state: `observed_shadow_day_count=14`, `shadow_observation_count=17`, `shadow_observation_day_count=13`, `operator_feedback_count=4/5`, `operator_observation_feedback_count=4`, `operator_feedback_day_count=3`, `paper_ticket_count=0`, `paper_execution_count=0`, `weekly_review_entry_count=0`, and `runtime_clear_for_shadow` is currently blocked by `broker_sync_degraded:BTC-USDT:okx_read_credentials_missing`. -- Current assisted-analysis next gate: proceed to S13 only after a distinct real feedback sample exists: wait for a new real session/date feedback sample, or a legitimate non-duplicate feedback channel already present in the product, to move `operator_feedback_count` from `4/5` to `5/5`. Do not repeat-click the same LONDON/day sample, do not tune copy unless the next real feedback is `unclear` or `disagree`, and do not fabricate paper ticket / paper execution / weekly review samples from blocked candidates. Also clear the read-only runtime blocker (`okx_read_credentials_missing`) before claiming R2 evidence progress. Do not add new product features, do not restart external-context/archive/digest long-tail work, do not physically delete S1 deprecated surfaces yet, and keep `execution_allowed`, `decision_support_ready`, `real_live_ready`, risk governor, trust bucket, and operator confirmation protocol unchanged. +- S13 read-only runtime blocker recovery and fifth real feedback sample are complete: remote `.env` had empty `OKX_API_KEY` / `OKX_API_SECRET` / `OKX_API_PASSPHRASE`, so the existing local read-only OKX values were restored into the remote runtime env only; `LIVE_TRADING_ENABLED` and all execution/readiness gates stayed unchanged, and temporary credential fragments/backups were removed. Remote runtime now has `current_blockers=[]`, `readonly_account_context_status=available`, `live_analysis_assistant_ready=true`, `decision_support_ready=false`, `execution_assist_ready=false`, `real_live_ready=false`, and `must_not_trade=true`. Then the existing shadow-observation feedback path recorded a distinct `ALL` / `no_candidate_monitor` observation `7949` as `operator_agreement=agree`, moving `operator_feedback_count` from `4/5` to `5/5` without creating paper tickets, paper executions, or weekly review entries. Current R2 state: `next_validation_gate=paper_ticket_sample_gate`, `operator_feedback_count=5/5`, `operator_observation_feedback_count=5`, `operator_feedback_day_count=3`, `paper_ticket_count=0`, `paper_execution_count=0`, and `weekly_review_entry_count=0`. Validation passed documentation consistency tests, `git diff --check`, remote ops smoke, readonly live analysis smoke, direct shadow-paper field smoke, and gstack console check. +- Current assisted-analysis next gate: stop collecting duplicate operator feedback; wait for a real executable candidate before creating shadow paper ticket / paper execution samples, then let real execution-derived Journal / weekly review evidence appear. Do not fabricate paper samples from blocked candidates or no-candidate observations. Do not add new product features, do not restart external-context/archive/digest long-tail work, do not physically delete S1 deprecated surfaces yet, and keep `execution_allowed`, `decision_support_ready`, `real_live_ready`, risk governor, trust bucket, and operator confirmation protocol unchanged. ## Exact Next Step -Use `docs/AI_ICT_实盘辅助分析决策助手ICT主线开发方案_2026-05-21_v1.md`, `docs/AI_ICT_ICT主线概念字典_S2_2026-05-21_v1.md`, `docs/AI_ICT_ReviewNow主线Gate_S3S4_2026-05-21_v1.md`, `docs/AI_ICT_Cockpit链路句与反馈错误分类_S5S6_2026-05-21_v1.md`, `docs/AI_ICT_只读实盘可靠性与交易员SOP_S7S8_2026-05-21_v1.md`, `docs/AI_ICT_TraderCockpit状态话术压缩_S9_2026-05-21_v1.md`, and `docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md` as the active anchors. Continue with S13: first clear the read-only runtime blocker if still present, then collect one distinct real operator feedback sample from a new session/date or legitimate non-duplicate feedback channel. Repeated same-day same-session `/trader-mode` clicks are intentionally de-duplicated and must not be used to satisfy R2. If the next real feedback is clear (`agree` / `no_trade`), do not tune copy; if it is `unclear` or `disagree`, adjust only existing text/hiding rules around `Reason`, `Wait`, and `Risk`. Do not restart external-context/archive/digest long-tail work, do not create order-submission features, do not physically delete S1 deprecated surfaces yet, and do not fabricate R2 paper samples. Keep `execution_allowed`, `decision_support_ready`, `real_live_ready`, risk governor, trust bucket, and operator confirmation protocol unchanged. +Use `docs/AI_ICT_实盘辅助分析决策助手ICT主线开发方案_2026-05-21_v1.md`, `docs/AI_ICT_ICT主线概念字典_S2_2026-05-21_v1.md`, `docs/AI_ICT_ReviewNow主线Gate_S3S4_2026-05-21_v1.md`, `docs/AI_ICT_Cockpit链路句与反馈错误分类_S5S6_2026-05-21_v1.md`, `docs/AI_ICT_只读实盘可靠性与交易员SOP_S7S8_2026-05-21_v1.md`, `docs/AI_ICT_TraderCockpit状态话术压缩_S9_2026-05-21_v1.md`, and `docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md` as the active anchors. Continue with the R2 paper gate only: wait for a real executable candidate, then create paper ticket / paper execution evidence through the existing shadow-paper path and weekly review flow. Do not keep clicking feedback now that `operator_feedback_count=5/5`; do not restart external-context/archive/digest long-tail work, do not create order-submission features, do not physically delete S1 deprecated surfaces yet, and do not fabricate R2 paper samples. Keep `execution_allowed`, `decision_support_ready`, `real_live_ready`, risk governor, trust bucket, and operator confirmation protocol unchanged. ## Validation Commands Used Recently diff --git a/TASKS.md b/TASKS.md index a5a9080..5586b12 100644 --- a/TASKS.md +++ b/TASKS.md @@ -153,7 +153,7 @@ - [x] R2 shadow / paper continuous validation ledger starter slice implemented and deployed - [x] R2 sample collection closure slice implemented and deployed: persistent daily observation ledger, runtime/API/cockpit observation actions, validation count fields, and remote sample writeback - [x] R2 evidence backfill audit and guarded shadow-observation backfill complete: remote dry-run found 10 eligible historical blocked-candidate days, remote apply created observations `1449` through `1458`, and the live gate moved from `shadow_candidate_day_coverage` to `paper_ticket_sample_gate` -- [ ] R2 evidence window still collecting: live state has about `observed_shadow_day_count=14`, `shadow_observation_count=17`, `shadow_observation_day_count=13`, `paper_ticket_count=0`, `paper_execution_count=0`, `operator_feedback_count=4/5`, `weekly_review_entry_count=0`, and Trader Mode surfaces canonical failed evidence gates without marking `decision_support_ready=true` +- [ ] R2 evidence window still collecting: live state has about `observed_shadow_day_count=14`, `shadow_observation_count=17`, `shadow_observation_day_count=13`, `paper_ticket_count=0`, `paper_execution_count=0`, `operator_feedback_count=5/5`, `weekly_review_entry_count=0`, and Trader Mode surfaces canonical failed evidence gates without marking `decision_support_ready=true` - [x] Recover remote API responsiveness blocker: no-proxy `/health` returned 200, SSH command execution recovered, and standard remote ops smoke passed all 9 checks including `unattended_harness` - [x] Restore OKX read-only market/broker proxy before continuing R2 sampling: remote no-proxy readiness now has `market_truth_ready`, `broker_state_ready`, and `runtime_ready`; standard remote ops smoke passed - [x] Read-only live analysis launch closure complete: `live_analysis_assistant_ready=true`, cockpit boundary/health summary visible, `decision_support_ready=false`, `execution_assist_ready=false`, `real_live_ready=false`, deploy smoke passed, `run_readonly_live_analysis_smoke.py` passed @@ -943,10 +943,11 @@ - [x] S10 real intraday feedback validation: used real `operator_agreement=unclear` feedback on Candidate `4610` to tighten the six-card copy; `Observe Only` now names the missing FVG confirmation, `Wait` points to trigger-chart FVG retrace confirmation, `Risk` warns not to treat the watch as a signal, and `Historical Edge` is Study / Review-only without first-screen PF/DD/expectancy detail; deployed and remote/browser verified - [x] S11 real intraday use loop: `/trader-mode` six-card wording was clear enough to record a real `No Trade`; fixed existing feedback mapping so `No Trade` writes `operator_agreement=no_trade` and `Need More Evidence` writes `need_more_evidence`; remote observation `9237` increased `operator_feedback_count` from `3` to `4` while paper ticket / execution / weekly review stayed at `0` - [x] S12 real feedback sampling guard verified: a same-day same-session `/trader-mode` `No Trade` POST succeeded but did not increase `operator_feedback_count` because `shadow_paper_observations` intentionally upserts by `(instrument_id, observation_date, timeframe, session_code)` -- [ ] S13 next gate: clear the current read-only runtime blocker if still present, then collect one distinct real operator feedback sample from a new session/date or legitimate non-duplicate product feedback channel to move `operator_feedback_count` from `4/5` to `5/5`; only tune copy if the feedback is `unclear` or `disagree` +- [x] S13 read-only runtime blocker and fifth feedback sample closure: restored blank remote OKX read-only credential keys from local runtime values without changing live trading flags, confirmed `runtime_status.current_blockers=[]`, recorded distinct `ALL/no_candidate_monitor` observation `7949` as `operator_agreement=agree`, and moved `operator_feedback_count` from `4/5` to `5/5` - [ ] R2 paper-ticket sample gate is waiting on a real executable candidate; do not fabricate paper tickets from blocked candidates -- [ ] R2 operator feedback sample gate still needs 1 distinct real feedback sample (`operator_feedback_count=4/5`); do not use repeated same-day same-session clicks to satisfy this gate +- [x] R2 operator feedback sample gate satisfied with distinct real samples (`operator_feedback_count=5/5`); do not keep clicking feedback to pad counts - [ ] R2 weekly review visible gate still needs a real execution-derived journal/weekly review entry (`weekly_review_entry_count=0`) +- [ ] Next R2 gate: wait for real executable candidate, then collect paper ticket / paper execution / execution-derived weekly review evidence through existing read-only shadow-paper flow; no live order submission and no fabricated samples - [x] R3 OKX sandbox isolated smoke tooling: guarded script and service can call OKX demo submit/query/cancel/query/fills only when `OKX_SANDBOX_SMOKE_EXECUTE=1`; local validation, deploy smoke, and remote ops smoke passed - [ ] R3 sandbox credential permission gate deferred: current phase is assisted analysis / decision support only, so do not request trade-permission credentials or make submit/cancel smoke the next gate - [ ] Long-term target: complete `Real-time Assisted Trading V1` without enabling default live auto-trading diff --git a/docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md b/docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md index 4a008a9..8fe4f65 100644 --- a/docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md +++ b/docs/AI_ICT_TraderCockpit真实反馈验证_S10_2026-05-21_v1.md @@ -101,3 +101,46 @@ S11 结论:六卡片在本轮盘中观察里已经能支持明确 `No Trade` - 当前还有 `runtime_clear_for_shadow` 阻塞:`broker_sync_degraded:BTC-USDT:okx_read_credentials_missing` S12 结论:不能再用同一 LONDON/day 的重复按钮点击来推进 `operator_feedback_count`。下一条可计数反馈必须来自新的真实 session/date,或来自已有产品内合法且非重复的真实反馈通道;paper ticket / paper execution / weekly review 仍必须等待真实 executable candidate 和执行派生样本,不能从 blocked candidate 伪造。 + +## 8. S13 只读 blocker 恢复与第 5 条反馈记录 + +2026-05-21 S13 先处理 S12 留下的 `runtime_clear_for_shadow` 阻塞。复核发现远端运行 `.env` 中 `OKX_API_KEY` / `OKX_API_SECRET` / `OKX_API_PASSPHRASE` 为空,而本地 `.env.local` 已有对应键位。处理方式: + +- 只补齐远端运行环境中的 OKX 只读凭据键位。 +- 不改 `LIVE_TRADING_ENABLED`。 +- 不改 `execution_allowed`、`decision_support_ready`、`real_live_ready`、risk governor、trust bucket、operator confirmation protocol。 +- 不新增下单、撤单、实盘执行能力。 +- 远端临时凭据片段和 `.env` 备份副本已删除,避免多留敏感配置副本。 + +恢复后远端状态: + +- `runtime_status.current_blockers=[]` +- `readonly_account_context_status=available` +- `live_analysis_assistant_ready=true` +- `decision_support_ready=false` +- `execution_assist_ready=false` +- `real_live_ready=false` +- `must_not_trade=true` + +随后使用现有 shadow observation 反馈入口,为当天 `session_code=ALL` 的 `no_candidate_monitor` 观察记录真实 `agree` 反馈。这不是 S12 的 LONDON 重复样本,而是不同去重键的真实 no-candidate 观察: + +- observation `7949` +- `session_code=ALL` +- `observation_status=operator_feedback_recorded` +- `system_recommendation=no_candidate_monitor` +- `operator_agreement=agree` +- `candidate_id=null` +- `paper_ticket_id=null` +- `paper_execution_id=null` + +S13 后 R2 当前状态: + +- `operator_feedback_count=5/5` +- `operator_observation_feedback_count=5` +- `operator_feedback_day_count=3` +- `paper_ticket_count=0` +- `paper_execution_count=0` +- `weekly_review_entry_count=0` +- `next_validation_gate=paper_ticket_sample_gate` + +S13 结论:operator feedback sample gate 已真实通过;R2 仍不能标 completed。下一步只能等待真实 executable candidate,再创建 paper ticket / paper execution,并由真实执行派生 weekly review;blocked candidate 和 no-candidate observation 不能伪造 paper 样本。