Record S12 feedback sampling guard

This commit is contained in:
Codex
2026-05-21 16:23:40 +08:00
parent 0ec5169278
commit 023ad9fe9c
3 changed files with 33 additions and 5 deletions
+3 -2
View File
@@ -838,11 +838,12 @@ Automation execution-layer PXX remains closed and its known scope stays frozen.
- S9 Trader Cockpit status copy compression is implemented, deployed, and remote-verified: added `docs/AI_ICT_TraderCockpit状态话术压缩_S9_2026-05-21_v1.md`; `trader_mode_summary.trader_readout` now exposes fixed six-card copy fields `Now / Reason / Wait / Risk / Historical Edge / Boundary`, and the frontend prioritizes those compressed fields before fallback text. `Review Now` now reads as manual review only, `Observe Only` as wait/no-trade, and `Do Not Use` as restore data/runtime first. Chinese Trader Cockpit display now renders the six cards as trader-readable sentences and removes the visible S9 residues `Risk:`, `Wait for FVG`, `Trader Mode changed:`, and raw `sweep -> MSS -> FVG` on `/trader-mode`. 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/s9-trader-cockpit-six-card-copy-final2-1366x768.png`.
- 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`.
- Current assisted-analysis next gate: proceed to S12 only: collect one more real `/trader-mode` operator feedback sample to move `operator_feedback_count` from `4/5` to `5/5`; do not tune copy unless the next real feedback is `unclear` or `disagree`. Paper ticket / paper execution / weekly review gates still wait for a real executable candidate and cannot be backfilled from blocked candidates. 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.
- 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.
## 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 S12: use `/trader-mode` in the real intraday loop and collect the fifth real operator feedback sample. If it 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 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.
## Validation Commands Used Recently
+4 -3
View File
@@ -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=13`, `shadow_observation_count=15`, `shadow_observation_day_count=12`, `paper_ticket_count=0`, `paper_execution_count=0`, `operator_feedback_count=3/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=4/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
@@ -942,9 +942,10 @@
- [x] S9 Trader Cockpit status copy compression: first-screen readout now uses fixed `Now / Reason / Wait / Risk / Historical Edge / Boundary` cards, keeps `Review Now` as manual review only, `Observe Only` as wait/no-trade, and `Do Not Use` as restore data/runtime first without adding features or widening beyond the ICT book mainline; deployed and remote-verified on `/trader-mode` with Chinese six-card wording and no S9 English residue in the checked cards
- [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`
- [ ] S12 next gate: collect one more real `/trader-mode` operator feedback sample to move `operator_feedback_count` from `4/5` to `5/5`; only tune copy if the feedback is `unclear` or `disagree`
- [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`
- [ ] 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 more real feedback sample (`operator_feedback_count=4/5`)
- [ ] 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
- [ ] R2 weekly review visible gate still needs a real execution-derived journal/weekly review entry (`weekly_review_entry_count=0`)
- [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
@@ -75,3 +75,29 @@ S10 改为更明确的盘中语言:
本轮还修复了一个已有映射问题:`No Trade` 和 `Need More Evidence` 按钮不再都写成 `unclear`,而是分别写入 `no_trade` 与 `need_more_evidence`。这属于现有反馈闭环修正,不是新增交易能力。
S11 结论:六卡片在本轮盘中观察里已经能支持明确 `No Trade`,本轮不继续调文案;后续只继续真实反馈采集,不能伪造 paper ticket / paper execution / weekly review 样本。
## 7. S12 真实反馈采样保护记录
2026-05-21 S12 继续使用远端 `/trader-mode` 主屏,并通过真实 UI 记录了一次 `No Trade`:
- 浏览器页面显示:`仅观察:FVG 回撤尚未确认;不交易。`
- 操作动作:点击 `No Trade`
- HTTP 写入结果:`POST /trading/shadow-paper/observe -> 201`
- 证据截图:`output/playwright/s12-trader-mode-fifth-feedback-1366x768.png`
复核后确认:`operator_feedback_count` 没有从 `4/5` 增长到 `5/5`。这不是 UI 失败,而是样本防重复机制生效:`shadow_paper_observations` 按 `(instrument_id, observation_date, timeframe, session_code)` 做 upsert,同一天同品种同周期同 session 的重复点击会更新已有观察,不会制造新的 R2 样本。
当前远端 R2 状态:
- `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`
- 当前还有 `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 伪造。