这页只做一件事:把当前最重要的三条收口线并排讲清楚,回答 现在最值得继续做什么、什么该讲清楚、什么该收口归档。
EMA / PSAR 当前是 closest to paper:已经有 final survivor map + paper candidate / operating / monitoring spec + runbook,并已落下首份 day-0 ledger snapshot + first-refresh queue。breakout-short follow-up 当前更诚实的 reader-facing 结论已改成 bench:它仍保留条件性 alpha 价值与完整证据链,但在“唯一一枪”打完后,关键 blocker 仍停在 pure_down=0/100、predown_bridge_12h=0/11、downrisk_48h=0/109、future_pure_down_48h=0/44,因此不再占用默认主资源。Fibonacci 则已进入 park / archive。
先把三条线的 当前结论 / 不支持什么 / 下一步 写清楚,再去补图,不要先堆页面数量。
等这三条线完成一轮更完整的成本 / OOS / rolling / 角色判断后,再决定是否回拨更多资源给外部 alpha scouting。
这张路线图不是收益承诺,也不是“快要上实盘”的营销图;它只是把当前项目强制放进同一条 deployment ladder 里,回答:我们现在到底在哪一格,离 `paper trading` 和小资金实盘还差哪几道硬门槛。
| Step | 这一步在回答什么 | 当前状态 | 离部署还差什么 |
|---|---|---|---|
| Step 1 — 收口 / survivor map / archived map | 把候选分成 keep / mixed-watch / archive,先回答“还有什么值得留下来”。 | 基本完成:三条线的 keep / park / mixed 边界已经清楚。 | 这一层本身不够,下一步必须进入更 deployment-facing 的 admission gate。 |
| Step 2 — admission gate / candidate spec | 回答谁有资格进入 paper-admission queue,当前 verdict 是 `paper-now / bench / park` 哪一个。 | 我们现在主要就在这一步。 EMA 已经到 `closest to paper`;breakout 已正式转成 `bench`;Fib 已 park。 | 要把候选从“看起来值得做”推进成“可以真正准备跑 shadow / paper”,或者诚实地退出默认资源位。 |
| Step 3 — operating spec / monitoring board / shadow-ready runbook | 回答如果真开始伪实盘,该盯哪些市场、哪些 symbol、怎样记账、怎样升降级。 | EMA 已基本补齐:已有 candidate spec / operating spec / monitoring board / runbook,并已落下一份 day-0 ledger snapshot + first-refresh queue;breakout 还没完全到这层。 | EMA 已从 runbook 走到首笔 day-0 账本记录与首刷顺序;下一步不是再补页面,而是按同一张 queue 继续做真实 shadow / paper refresh。 |
| Step 4 — 真实 paper trading / shadow run | 在真实前瞻观察下检验路径、回撤、停机条件、promotion/demotion 是否还成立。 | 尚未开始,但现在已有一版项目级 `promotion gate v1` 可直接约束 paper -> live 顺序。 | 需要先按同一套 gate 跑出真实 forward 账本,而不是从研究页直接跳到真钱。 |
| Step 5 — 小资金实盘试点 | 在通过 paper/shadow gate 后,用 capital cap / kill switch / rollback rules 做最小 live pilot。 | 尚未开始;但 `capital cap / kill switch / rollback` 的项目级底线已固定成 v1。 | 仍不能跳过 Step 4;要先满足最短观察期、回撤护栏、以及监控板连续不过红线。 |
EMA 大致位于 Step 3.6:runbook、day-0 ledger snapshot 与 first-refresh queue 都已落地,等于已经迈出第一笔 `0` 真资金记账动作并写清首刷顺序,但还没积累出真实 forward review。breakout 当前更诚实的位置已不是继续卡在 `one_more_gate`,而是完成 hard verdict 后退回 bench:保留证据,但退出默认主资源位。Fibonacci 已固定在 `park / archive`。
EMA:首份 day-0 ledger snapshot 与 first-refresh queue 都已经落表,离真正 paper trading 不再差“要不要开账”,而是差后续真实 refresh / week-1 review 能不能按同一张 queue 持续跑下去。breakout:当前已不再默认排队争夺 shadow-ready,而是先退回 `bench`;除非后续拿出 genuinely new blocker reduction,否则不再继续消耗默认主资源。
现在终于不只是“更远一些”这句空话了:项目级 `promotion gate v1` 已写清 最短观察期 / 回撤护栏 / kill switch / capital cap / rollback,随后又把 routing dry-run / live ledger / mismatch guard 压成了 tiny-live plumbing board,并继续补出 routing dry-run checklist + paper-live shadow parity checklist。也就是说,当前不只知道“什么时候才配上 live”,还知道上 live 前先要按什么执行栏位做检查、以及进入 `paper vs live-shadow` 同步审计时要先锁哪些红旗。但因为两条主候选都还没跑出真正的 forward 观察期,所以正确顺序仍不变:EMA 先沿已落地的 day-0 ledger snapshot + first-refresh queue 持续进入 paper/shadow refresh,breakout 先清掉最后一道 gate,再谈 small live。
这张表不是在问“结构事件有没有一点 alpha 感”,而是更 deployment-facing 地问:它们有没有比当前 EMA baseline 更诚实地拿到 paper admission 资格,或者至少明确展示出值得并列保留的增量价值。 当前项目级答案已经能先写死:EMA 仍是默认 baseline seat;breakout 还在争取有条件并列资格;Fib 则已退出主资源竞争。
| 研究线 | 当前相对 EMA 的排位 | EMA 在这张比较里的角色 | 当前是否已证明增量价值 | 为什么还不能高于 EMA | 下一刀什么才算有效比较 |
|---|---|---|---|---|---|
| EMA baseline family | 默认 baseline / closest to paper | 基准本体:当前主 raw alpha baseline 与 deployment reference | 不适用;它本身就是当前默认比较基线。补充读法:PSAR overlay 当前只在 `创业板ETF 1d` 显示出 shadow-protective 方向,还没有形成新的 baseline seat。 | 不适用。当前 seat 之所以还由 EMA 持有,是因为它已有 survivor map + candidate spec + runbook + day-0 ledger snapshot,并且 active 1d lanes 已清掉 source-risk;同时 A股 daily overlay overall 仍是 mixed,不支持把 PSAR 额外焊成默认保护层。 | 继续沿同一张 live ledger 落下真实 market-close refresh / week-1 review;若 primary 或 front-queue secondary 转弱,再按 runbook demote / rollback。PSAR overlay 只在 `创业板ETF 1d` 的 shadow protocol 下继续观察,不改默认持有规则。 |
| support_breakout_v0 / breakout-short follow-up | bench / conditional alpha | 当前所有结构层都该先回答:它有没有比 EMA 更早、更诚实地拿到 paper admission 资格;如果没有,就应退出默认资源位。 | 有条件性 alpha 价值,但 deployment rank 上已被 desk 正式压成 `bench`。当前更诚实的位置是保留证据、等待 genuinely new blocker reduction,而不是继续争主位。 | 默认 pair halfsize 虽把 hourly path 抬到约 +19.90%,但 pure down coverage 仍是 0/100,predown_bridge_12h 仍是 0/11,downrisk_48h 仍是 0/109;在“唯一一枪”打完后 blocker 仍未下降,所以它不能继续占用默认 Live Seat 主资源。 | 只有新的 shadow / holdout 真正命中 pure-test/down-tail blocker reduction,或 Scout Seat 先产出更强 challenger 后再回来同框比较,才配讨论它是否重回默认资源位。 |
| Fibonacci confirmation / retest_hold | archive / optional filter | 默认只作为过滤层候选;若不能先胜过 breakout v0,就更谈不上挑战 EMA baseline seat。 | 当前没有。它改善了一些 invalidation / 机制表达,但在 breakout v0 同样本 A/B 里并没有把主线收益或部署可用性做得更诚实。 | Fib A/B 里平均单笔约 +0.71%、累计约 +20.00%,明显弱于 breakout v0,而且平均还延迟约 12.5 根 bar;因此当前连 structure 主线内部都不是胜出者。 | 除非以后只把它放回更窄的 down-regime filter 问题,并证明它能在不明显压塌 entry 的前提下改善一个已保留候选,否则继续维持 archive。 |
artifact:reports/artifacts/alpha_closure_board/structure_vs_ema_baseline_v1.csv
这不是“准备马上上实盘”的承诺,而是一套更保守的项目级底线:只有先跑出真实 paper / shadow 账本,并满足同一套最短观察期、回撤护栏、停机条件、capital cap 与 rollback 规则,才配讨论小资金 pilot。
| 阶段 | 适用对象 | 最小前瞻观察 | 回撤 / 路径护栏 | 停机 / kill switch | 资金上限 | rollback 规则 |
|---|---|---|---|---|---|---|
| Paper / shadow start | 只适用于已过 Step 2 且已有 candidate spec + operating spec + monitoring board / runbook 的对象。当前更像先给 EMA 用;breakout 已退回 `bench`,若 future genuinely new blocker reduction 出现,再重新申请。 | 先以 `0` 真资金启动;从第 1 天开始并行记 paper / shadow 账。若缺 runbook、监控字段、或 promote-demote 规则,则不得启动。 | 启动阶段不谈真钱回撤容忍;核心要求是 forward 记账口径与监控字段先稳定跑起来。 | 数据断流、执行规则不完整、或 monitoring board 无法日常更新时,不启动 / 立即暂停。 | `0`(paper / shadow only)。 | 不适用;未满足条件时继续留在 Step 3。 |
| Paper -> small-live review eligible | 所有已进入 paper / shadow 的候选。 | 至少满足 `30` 个自然日,且 `>=20` 个已关闭 decision cycles / trades;若策略更慢,则至少 `60` 个自然日 + `>=8` 个已关闭 trades。 | paper max drawdown 不得超过研究基线的 `max(1.25x, +3pp)` 容忍带;同时不能连续两次 review 都落在 monitoring board 的 `red` 区。 | 若 paper 累计回撤跌破 `-5%`,或触发上述 drawdown guardrail,则冻结 promotion review,只保留 paper。 | 仍为 `0`;这里只是拿到 small-live review 资格,不自动上真钱。 | 任一条件未达标,维持 / 退回 `paper only`,并按 monitoring board 标红。 |
| Small-live pilot start | 只适用于已经通过 paper review 的对象。 | 继续保留 paper 并行记账;small-live 只做最小 pilot,不取消 shadow。 | live 期间的 max drawdown 不得超过通过 review 时的 paper guardrail;若 live 与 paper 同步路径偏离超过 `5pp`,视为 execution mismatch。 | 任一 kill switch 触发即停:`drawdown breach`、`live vs paper mismatch > 5pp`、`连续两次 red review`、`数据/执行异常`。 | 单候选 live pilot 先限制在 `<= 总可部署资金 1%` 且 `<= 该策略 sleeve 10%`;单 symbol / pair 不得超过 pilot capital 的 `50%`。 | 任一 kill switch 触发,立即退回 `paper only`;问题修复前不得自动重启 live。 |
| Rollback / re-entry | 所有已进入 live pilot 的候选。 | rollback 后至少再观察 `10` 个交易日或 `5` 个 closed trades(更慢系统取更长 calendar)后,才可重新申请 live review。 | rollback 后重新以新的 paper equity baseline 记账,不得用旧 live 高水位稀释本次失败。 | 同一 candidate 若 `90` 天内两次触发 kill switch,自动降回 Step 3,等待人工重新立项,而不是自动二次尝试。 | rollback 期间真实资金 = `0`。 | 这是硬规则,不因单次反弹自动取消。 |
artifact:reports/artifacts/alpha_closure_board/paper_live_promotion_gate_v1.csv
这张表只回答一个更容易被误读的问题:当前有没有哪条 lane 会因为自己属于 P3 / narrow paper、或者还有 open paper positions,就自动重回 tiny-live / Live Seat review。当前统一答案都是 no:默认 Live Seat 继续留空,除非 bot2 明确点名新的 promoted candidate;否则 Rank 2 / 17 / 29 只分别停在 closeout、manual refresh continuity、或 paper-only monitoring。
| # | seat / candidate | 当前阶段 | 现在可进 tiny-live review? | 默认 owner | 当前硬阻断 | 什么条件下才配重开 | 证据备注 |
|---|---|---|---|---|---|---|---|
| 0 | Live Seat / default | empty_by_default | no | bot2 explicit promotion only | 当前 board 明确要求 Live Seat 保持暂空;P3 身份、open paper positions 或 narrow-paper continuity 都不能自动占位。 | 只有 bot2 明确点名新的 promoted candidate 时,才允许重新进入 tiny-live review。 | 这张队列表达的是默认部署排序,而不是谁在研究上看起来更有希望。 |
| 1 | Rank 2 / rank2_combo_all | narrow_paper_candidate_closeout_only | no | run3 closeout / operator dry-run | 仍缺 whitelist-bound test/no-fill receipt chain。 | 先拿到同一条 whitelist-bound replay 的真实 intent/ack/cancel(close) refs,再由 bot2 明确点名是否进入 shadow parity / tiny-live review。 | Rank 2 当前仍停在 paper_candidate_only / blocked。 |
| 2 | Rank 17 / rank17_pullback_ethsol_narrow_pilot | p3_narrow_paper_continuity_only | no | manual_narrow_paper_runner | 当前 open paper positions 只属于 manual narrow-paper refresh continuity,不自动构成 tiny-live review need。 | manual narrow-paper refresh 新增 closed trade append 或 weekly-review row;若无 bot2 promoted candidate 点名,仍不自动进入 tiny-live review。 | 当前仍有 2 个 open paper positions,但它们只属于 continuity;只有后续 refresh 真正追加 closed trade 或 weekly-review row 才需要 bot3 回补。 |
| 3 | Rank 29 / rank29_trendline_breakout_navigator | p3_monitoring_only | no | manual_narrow_paper_runner | 当前只保留 paper-only narrow pilot + middle-bucket red-watch;没有新的 append/review 行,也没有新的 live review promotion。 | manual narrow-paper refresh 新增 closed trade append 或 weekly-review row;若无 bot2 promoted candidate 点名,仍不自动进入 tiny-live review。 | strict-causal 复盘后确认旧口径受未来函数污染;Rank 29 baseline 已撤销,不再等待 append/review。 |
| 9 | Rank 29 / rank29_trendline_breakout_gate_shadow | narrow_paper_pilot_rank29_low_trend_high_noise_w25_shadow | no | manual_narrow_paper_runner | Rank 29 gate shadow 同步降为 P0 archived:仅保留作历史审计材料,不再视为有效 pilot 或 baseline 辅助线。 | manual narrow-paper refresh 新增 closed trade append 或 weekly-review row;若无 bot2 promoted candidate 点名,仍不自动进入 tiny-live review。 | gate shadow 仅保留作历史审计对照;Rank 29 全线不再进入 bot3 回补队列。 |
| 9 | Rank 32 / rank32b_slope_floor_continuation | narrow_paper_pilot_rank32b_full_scope | no | manual_narrow_paper_runner | Rank 32b 现属 P3 narrow paper;日常 continuity 已并入专属 narrow-paper refresh 链,不再默认占用 bot3 主资源。 | manual narrow-paper refresh 新增 closed trade append 或 weekly-review row;若无 bot2 promoted candidate 点名,仍不自动进入 tiny-live review。 | full-scope P3 已接入专属 narrow-paper refresh 链;只有后续 refresh 真正追加 closed trade 或 review row 时才需要 bot3 回补。 |
Live Seat = empty by default。P3 身份、open paper positions、或 narrow-paper continuity 本身都不再自动占位。
它把“默认空席”与“什么情况下才允许重新进 tiny-live review”写成 deployable queue,避免后续继续把 Rank 17 的 open positions 或 Rank 29 的 P3 身份误读成 bot3 / operator 现在就该接手的 live review。
只有 Rank 2 还保留一个更贴近执行的 closeout blocker:同一条 whitelist-bound test/no-fill replay 的真实 receipt chain。即便这一步过了,也只是进入 shadow_parity,仍不是 tiny-live 放行。
artifact:reports/artifacts/alpha_closure_board/small_live_default_seat_queue_v1.csv
这张表不是再谈“谁研究上更好看”,而是把 什么事件才真的允许 Live Seat 从空席变成 review 中 压成统一 trigger matrix。它把当前 desk 最容易滑坡的边界写死:默认空席、Rank 2 只有真实 replay 才能改状态、Rank 17 / Rank 29 只有在 manual runner 真新增 append/review 行且 bot2 明确升格时,才配进入 P4 / tiny-live review。
| # | seat / candidate | 当前阶段 | 唯一 status-changing 事件 | 最小证据包 | 下一步只允许到哪 | 为什么现在还不行 |
|---|---|---|---|---|---|---|
| 0 | Live Seat / default | empty_by_default | 只有 bot2 明确点名新的 promoted candidate,才允许从空席改成 review 中。 | seat verdict change + promoted candidate id + why-now reason | tiny_live_review_candidate_only | 当前 desk 明确保持空席;P3 身份、open paper positions、或 manual continuity 都不自动改席位。 |
| 1 | Rank 2 / combo_all | paper_candidate_only / blocked | 同一条 whitelist-bound `test/no-fill` replay 真正留下 `intent + ack + cancel(close)` refs。 | receipt chain refs + whitelist scope freeze + capital=0 dry-run proof | eligible_for_shadow_parity_review_only | 当前真正会改状态的只剩真实 replay;继续补 packet / starter rows 不再减少 blocker。 |
| 2 | Rank 17 / pullback recovery(ETH+SOL only) | P3 narrow paper continuity | manual runner 真新增 `closed trade append` 或 `weekly-review row`,且 bot2 明确把它从 P3 升到 P4 review。 | new append/review row + ETH/SOL continuity proof + explicit bot2 promotion | P4 tiny-live review candidate | 当前 open paper positions 只说明 narrow-paper continuity 在跑,不说明该自动重开 Live Seat。 |
| 3 | Rank 29 / trendline breakout navigator | P3 monitoring / paper-only red-watch | manual runner 真新增 `closed trade append` 或 `weekly-review row`,并且 middle-bucket red-watch 不再恶化,再由 bot2 明确升到 P4 review。 | new append/review row + red-watch not worse note + explicit bot2 promotion | P4 tiny-live review candidate | 当前新增的只是 open continuity position,不是新的 review trigger;仍属于 paper-only narrow pilot。 |
Live Seat 现在没有任何 auto-reentry 通道。没有 bot2 明确 promotion,就默认继续空席。
它把 “真正会改状态的只剩真实 whitelist-bound replay” 再压成一张 desk-level trigger matrix;所以后续没有 receipt refs 时,不该再把相邻 packet / wording 当进展。
open paper positions 或 manual continuity 只是运行状态,不是 re-entry trigger。只有 新 append/review 行 + bot2 明确升格 才配进 P4 / tiny-live review。
artifact:reports/artifacts/alpha_closure_board/small_live_live_seat_reentry_trigger_matrix_v1.csv
这张表不是再增加一层 closeout 文档,而是把 未来到底要盯哪个外部事件、在哪个文件里出现、谁负责、出现后只允许推进到哪一步 压成统一 watchboard。它解决的是当前 Run 3 最容易继续空磨的问题:没有真实 status-changing 事件时,bot3 不该继续把 tiny-live 资源花在近义 packet 上;有事件时,也要知道该看哪条证据链。
| # | seat / candidate | 当前阶段 | 去哪里看 | 默认 owner | 什么事件才会唤醒 tiny-live | 最小证据 | 事件出现后只允许推进到哪 | 事件没出现时该怎么读 |
|---|---|---|---|---|---|---|---|---|
| 0 | Live Seat / default | empty_by_default | docs/TODO.md top desk board + bot2 explicit promotion note | bot2 | bot2 明确点名新的 promoted candidate,并写清 why-now reason | promoted candidate id + seat verdict change + why-now reason | 才允许从 empty_by_default 切到 tiny_live_review_candidate_only | 继续空席;P3 continuity / open positions 不自动占位 |
| 1 | Rank 2 / combo_all | paper_candidate_only / blocked | small_live_rank2_receipt_chain_log_template_v1.csv + small_live_rank2_receipt_chain_audit_v1.csv | operator / run3 closeout | 同一条 whitelist-bound test/no-fill replay 真回填 intent + ack + cancel(close) refs | real receipt chain refs + whitelist scope freeze + capital=0 dry-run proof | 只允许进入 eligible_for_shadow_parity_review / shadow_parity,不是 tiny-live pass | 不要再把 packet / starter row / wording 近义页当进展 |
| 2 | Rank 17 / pullback recovery(ETH+SOL only) | P3 narrow paper continuity | manual_narrow_paper_bot3_reentry_queue.csv + manual_narrow_paper_status.csv + bot2 promotion note | manual_narrow_paper_runner + bot2 | manual runner 真新增 closed trade append / weekly-review row,且 bot2 明确升到 P4 review | new append/review row + ETH/SOL continuity proof + explicit bot2 promotion | 才配进入 P4 tiny-live review candidate | 继续按 cron-managed continuity 处理,不因 open positions 自动升级 |
| 3 | Rank 29 / trendline breakout navigator | P3 monitoring / paper-only red-watch | manual_narrow_paper_bot3_reentry_queue.csv + manual_narrow_paper_status.csv + bot2 promotion note | manual_narrow_paper_runner + bot2 | manual runner 真新增 closed trade append / weekly-review row,且 middle-bucket red-watch 不再恶化,再由 bot2 明确升到 P4 review | new append/review row + red-watch not worse note + explicit bot2 promotion | 才配进入 P4 tiny-live review candidate | 继续 paper-only monitoring;P3 身份本身不是 re-entry 通道 |
现在 tiny-live 侧真正该看的不是更多近义文档,而是 status-changing 事件本身有没有落地。 没有事件,就继续 empty / blocked / continuity-only;有事件,也必须沿既定证据链推进,而不是跳步。
因为它把 watch source + owner + wake event + next allowed stage 放到同一张表里。以后不管是 Rank 2 receipt refs、还是 Rank 17 / 29 的 append-review 行,都能先回答“到底该看哪里、看到什么才算数”。
当 `EMA = waiting_not_due` 且 `Scout fast lane = temporarily exhausted` 时,Run 3 默认也不该无限长在同一条 doc-chain 上;更诚实的做法是守着这张 watchboard,等真正的 status-changing event 出现再接力。
artifact:reports/artifacts/alpha_closure_board/small_live_status_change_watchboard_v1.csv
watchboard 负责告诉后续轮次 该看哪里;这张快照则直接回答 现在有没有任何 tiny-live 相关事件已经落地。这里刻意把两件事拆开:P3 continuity 事件(例如 manual runner 刚追加了新的 closed trade / review 行)应该被如实标出来,但它 不等于 tiny-live re-entry;真正要从 `paper / continuity` 升到 `tiny-live review`,仍然必须额外满足 `bot2 promotion`(以及 Rank 2 的 receipt refs / Rank 29 的 red-watch 约束)。因此读这张表时,先看有没有新事件,再看它最多只允许推进到哪一步。
| # | seat / candidate | 当前触发状态 | 最新观察证据 | 若触发也只允许推进到哪 | 当前硬读法 | 观察时间 |
|---|---|---|---|---|---|---|
| 0 | Live Seat / default | blocked_now | desk board should be re-read for latest live-seat verdict | tiny_live_review_candidate_only | 继续 empty_by_default;只有 bot2 明确 promotion 才配重开 Live Seat | 2026-06-18 06:55 UTC |
| 1 | Rank 2 / combo_all | waiting_real_receipt_chain | real_refs=0/3; missing=intent_ref, ack_ref, cancel_or_close_ref | eligible_for_shadow_parity_review / shadow_parity | 没有同一条 whitelist-bound replay 的 intent+ack+cancel(close) 真实 refs,就继续 paper_candidate_only / blocked | 2026-03-17 19:16:59 UTC |
| 2 | Rank 17 / pullback recovery(ETH+SOL only) | fresh_p3_append_landed | manual_refresh_run_at=2026-04-30T06:45:21Z; new_trades_appended=1; latest_closed_exit_ts_utc=2026-04-28T10:00:00Z; open_position=open | P3 review / continuity writeback now;P4 tiny-live review candidate only after real append/review + bot2 promotion | 已出现新的 closed-trade append,但这仍只构成 P3 review / continuity 事件;没有 bot2 promotion,就不要把它误读成 tiny-live re-entry。 | 2026-04-30T06:15:00Z |
| 3 | Rank 29 / trendline breakout navigator | continuity_only | bot3_reentry_now=yes; new_trades_appended=0; open_position=none; latest_closed_exit_ts_utc=n/a; manual_refresh_new_closed_trades=8 | P3 review / continuity writeback now;P4 tiny-live review candidate only after real append/review + bot2 promotion | strict-causal 复盘后确认旧口径受未来函数污染;Rank 29 baseline 已撤销,不再等待 append/review。 | 2026-04-30T06:15:00Z |
现在没有任何一条 tiny-live re-entry trigger 已经落地。 所以当前不是“快上 tiny-live 了”,而是继续保持默认空席、Rank 2 blocked、Rank 17 / 29 continuity-only。
因为它把静态规则换成了 live-now snapshot:后续轮次可以直接先看 trigger 有没有真变化,而不是再猜“是不是已经快够了”。
只要这张快照继续显示 trigger 没落地,Run 3 就不该再次围着同一条 tiny-live 文档链打转;应该继续等真实事件,或在允许时切回 Scout / Paper 主线。
artifact:reports/artifacts/alpha_closure_board/small_live_status_trigger_snapshot_v1.csv
这张表不再重复“谁该等谁该动”,而是补 tiny-live 侧一个更容易被忽略的真实 blocker:我们现在看的这些 watch source,到底够不够新。如果 desk board、Rank 2 audit 或 manual runner summary 已经变陈旧,那“继续空席 / 继续 blocked / 继续 continuity-only”的结论就可能只是读旧快照。
| # | 证据源 | 支撑哪条 lane | 最新文件时间 | 大概年龄 | freshness | 为什么重要 | 当前 hard read |
|---|---|---|---|---|---|---|---|
| 0 | docs/TODO.md top desk board | Live Seat default verdict / whole desk routing | 2026-05-12 09:04 UTC | 885.9h | stale | 如果 desk board 太旧,tiny-live 空席或 scout exhaustion 的读法可能已经落后。 | board 新鲜时,才适合继续把 Live Seat 读成 empty_by_default;若转 stale,就该优先重读顶板后再解释 tiny-live。 |
| 1 | small_live_rank2_receipt_chain_audit_v1.csv | Rank 2 receipt-chain blocker | 2026-06-18 06:55 UTC | 0m | fresh | Rank 2 只差真实 replay refs;若 audit 过旧,就不能太自信地说它仍卡在完全相同的 missing refs。 | audit 新鲜时,继续把 Rank 2 读成 waiting_real_receipt_chain;若 stale,优先补新 audit 或 replay,而不是继续写 doc-chain。 |
| 2 | manual_narrow_paper_status.csv | Rank 17 / Rank 29 P3 continuity snapshot | 2026-04-30 06:45 UTC | 1176.2h | stale | P3 lane 最容易因为 status 表过旧而把 continuity / append 事件读错层级。 | status 新鲜时,新的 closed-trade append 才能被诚实压成 P3 continuity;若 stale,就别过度解读 continuity 没变化。 |
| 3 | manual_narrow_paper_last_run_summary.json | manual runner latest append / refresh evidence | 2026-04-30 06:45 UTC | 1176.2h | stale | 这决定 tiny-live snapshot 看到的是刚跑完的 manual refresh,还是一张过时 summary。 | summary 新鲜时,可把 fresh append 限定为 P3 review 事件;若 stale,应该先等下一次 runner refresh,而不是把旧 snapshot 当现状。 |
先校验证据是不是还新,再决定 tiny-live 该不该继续等待。 这能避免后续轮次把“没有 trigger”误读成真实静止,实际上只是监控源太旧。
当 `EMA = waiting_not_due`、Scout 又暂时耗尽时,Run 3 最诚实的工作之一就是把 tiny-live 监控链做成可审计。freshness board 让后续知道:应该继续相信当前 snapshot,还是先等下一次 source refresh。
若 source 仍 fresh,就继续遵守 now-action queue;若转 stale,优先补新 snapshot / refresh,而不是继续写 tiny-live 近义说明页。
artifact:reports/artifacts/alpha_closure_board/small_live_evidence_freshness_board_v1.csv
这张表把上轮暴露出来的一个真实执行坑压成了 deployable guardrail:当 manual runner source 已经更新时,closure-layer 的 snapshot / queue / 网页入口有没有跟上。它不是再写一遍 tiny-live 规则,而是回答:什么时候必须先 resync,什么时候才配继续相信当前 reader-facing 解释。
| # | source file | dependent artifact | source 时间 | artifact 时间 | lag read | guard state | 为什么重要 | 当前 hard read | required action |
|---|---|---|---|---|---|---|---|---|---|
| 0 | manual_narrow_paper_status.csv | small_live_status_trigger_snapshot_v1.csv | 2026-04-30 06:45 UTC | 2026-06-18 06:55 UTC | source_newer_by=-70571m; source_age=1176.2h | synced | status source 一旦更晚,Rank 17 / Rank 29 的 continuity / append 读法就可能已经变了。 | closure-layer 没落后于 source;可继续相信当前 now-action queue / snapshot。 | 继续按现有 queue 行动;等下一次真实 source 更新后再检查。 |
| 1 | manual_narrow_paper_last_run_summary.json | small_live_now_action_queue_v1.csv | 2026-04-30 06:45 UTC | 2026-06-18 06:55 UTC | source_newer_by=-70571m; source_age=1176.2h | synced | summary source 更晚时,now-action queue 可能还在替上一个 refresh 说话。 | closure-layer 没落后于 source;可继续相信当前 now-action queue / snapshot。 | 继续按现有 queue 行动;等下一次真实 source 更新后再检查。 |
不是等到看错状态后才补 sync。 guard 表会直接告诉后续轮次:当前 closure-layer 是同步的,还是已经落后于 source。
当 `EMA = waiting_not_due` 且 Scout 暂时 exhaustion 时,Run 3 最容易退化成“继续解释旧状态”。这个 guard 让 bot3 / operator 先回答:该先 resync,还是可以继续按 now-action queue 执行。
若 guard state = `resync_due / resync_soon`,优先重跑 closure board builder;只有 guard state 回到 `synced`,才继续相信当前网页上的 tiny-live 解释。
artifact:reports/artifacts/alpha_closure_board/small_live_state_resync_guard_v1.csv
这张 guard 不再回答“现在先做哪一腿”,而是专门回答:当前 reader-facing 的 Rank 2 replay bundle 还跟不跟得上它依赖的 preflight / rounding / receipt-audit / runsheet。如果上游 evidence 比 bundle 更新,就先重建 bundle;别拿旧页面继续解释 whitelist replay 顺序。
| source | source role | dependent | source mtime | dependent mtime | lag read | guard | hard read | required action |
|---|---|---|---|---|---|---|---|---|
| small_live_rank2_replay_preflight_snapshot_v1.csv | preflight symbol / budget read | small_live_rank2_next_replay_bundle_v1.csv | 2026-03-17 19:16 UTC | 2026-06-18 06:55 UTC | dependent_not_older(133178m) | synced | 当前可继续相信这张 replay bundle 的 symbol / budget / blocker 读法;不用再凭旧截图手动拼接。 | keep current bundle authoritative |
| small_live_rank2_replay_rounding_budget_ladder_v1.csv | rounding ladder order | small_live_rank2_next_replay_bundle_v1.csv | 2026-03-17 19:30 UTC | 2026-06-18 06:55 UTC | dependent_not_older(133165m) | synced | 当前可继续相信这张 replay bundle 的 symbol / budget / blocker 读法;不用再凭旧截图手动拼接。 | keep current bundle authoritative |
| small_live_rank2_receipt_chain_audit_v1.csv | receipt-chain blocker read | small_live_rank2_next_replay_bundle_v1.csv | 2026-06-18 06:55 UTC | 2026-06-18 06:55 UTC | dependent_not_older(0s) | synced | 当前可继续相信这张 replay bundle 的 symbol / budget / blocker 读法;不用再凭旧截图手动拼接。 | keep current bundle authoritative |
| small_live_rank2_replay_runsheet_v1.csv | operator replay steps | small_live_rank2_next_replay_bundle_v1.csv | 2026-06-18 06:55 UTC | 2026-06-18 06:55 UTC | dependent_not_older(0s) | synced | 当前可继续相信这张 replay bundle 的 symbol / budget / blocker 读法;不用再凭旧截图手动拼接。 | keep current bundle authoritative |
不是再写一张 Rank 2 说明页。 而是明确告诉 future run:只要 bundle 落后于上游 evidence,先 resync,再谈 replay。
它把“这张 replay bundle 还能不能信”压成显式 guard;operator 不用自己比对多个 CSV 的时间戳。
如果这里全是 synced,就继续相信下面那张 next replay bundle;若不是,就先重建 alpha_closure_board。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_execution_sync_guard_v1.csv
这张表不再把 Run 3 的信息拆在 queue、bundle、sync guard 三处看,而是把 Rank 2 当前到底能不能进入那 1 次 whitelist-bound test/no-fill replay、如果不能先该修哪层同步、如果能做也只允许推进到哪一步 压成单行 gate。它解决的是当前 operator 最容易犯的错:拿着已经不再同步的 replay bundle,或者在 tiny-live state 已落后时,继续按旧读法执行。
| candidate | 当前 ready state | 当前 bundle leg | 当前 owner | execution sync | tiny-live state sync | 现在唯一允许动作 | 还在等什么 | 硬阻断 | hard read | observed at |
|---|---|---|---|---|---|---|---|---|---|---|
| Rank 2 / combo_all | ready_for_one_test_no_fill_replay | SOLUSDT | operator / run3 closeout | synced | synced | 只做 1 次 whitelist-bound test/no-fill replay,并回填 intent+ack+cancel(close) 真实 refs;若坚持 50U 且要把 rounding 损耗预算压到 <=25bps,当前先做 SOL 更诚实。 | 同一条 replay 的 real receipt chain refs | 没有三段真实 refs,就继续 paper_candidate_only / blocked,不得跳去 shadow parity | 当前所有已落地 guard 都表明:可以继续把 Rank 2 的下一步读成 1 次 whitelist-bound test/no-fill replay;成功也只推进到 shadow parity review eligible。 | 2026-03-17 19:16:59 UTC |
它把 queue + bundle + guards 合成一条 operator-ready 判断:当前若两层 guard 都同步,才允许继续把下一步读成 1 次 SOL 优先的 test/no-fill replay;任何一层不同步,都先回到 resync。
只要这里还是 ready_for_one_test_no_fill_replay,成功也最多推进到 eligible_for_shadow_parity_review;它不是 tiny-live 放行卡。
先看这张单行 gate:若任一 sync 不是 synced,先做 resync;只有双 sync 都绿时,才继续按下面的 replay bundle 读 operator next step。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_replay_ready_gate_v1.csv
watchboard 解决“去哪里看”,snapshot 解决“刚才有没有新事件”;这张队列再往前压一步,直接回答 现在谁该等、谁该由谁接、下一步唯一允许动作是什么。它刻意不发明新的流程,只把当前已落地的硬边界压成 operator / bot2 / manual runner 都能立刻执行的 `now-action` 队列,避免后续轮次继续围着 tiny-live 文档链猜“那现在到底该做什么”。
| # | seat / candidate | 当前触发状态 | 当前 owner | 现在唯一允许动作 | 还在等什么 | 硬阻断 | 为什么这是最诚实下一步 | 观察时间 |
|---|---|---|---|---|---|---|---|---|
| 0 | Live Seat / default | blocked_now | bot2 | 保持空席;只等待 bot2 明确 promotion note | promoted candidate id + why-now reason + seat verdict change | P3 continuity / open paper positions / manual append 都不能自动占 Live Seat | 当前 desk 顶板明确要求 Live Seat 默认空席;最诚实动作就是别偷跑。 | 2026-06-18 06:55 UTC |
| 1 | Rank 2 / combo_all | waiting_real_receipt_chain | operator / run3 closeout | 只做 1 次 whitelist-bound test/no-fill replay,并回填 intent+ack+cancel(close) 真实 refs;若坚持 50U 且要把 rounding 损耗预算压到 <=25bps,当前先做 SOL 更诚实。 | 同一条 replay 的 real receipt chain refs | 没有三段真实 refs,就继续 paper_candidate_only / blocked,不得跳去 shadow parity | 它当前唯一会改状态的动作就是真 replay;若坚持 50U test/no-fill 且把 rounding 损耗预算压到 <=25bps,当前更诚实的 replay 顺序应读成 SOL → ETH → BTC;其中 SOL 已过线,ETH 更适合先把样例抬到 >= 100U,BTC 继续只保留最后备选(约 >= 300U 才接近同档口径)。 | 2026-03-17 19:16:59 UTC |
| 2 | Rank 17 / pullback recovery(ETH+SOL only) | fresh_p3_append_landed | manual_narrow_paper_runner + bot2 | 只做 P3 review / continuity writeback;若无 bot2 promotion,不得升成 tiny-live review | new append/review row + ETH/SOL continuity proof + explicit bot2 promotion | fresh append 也只代表 P3 continuity 事件,不代表 Live Seat 重开 | 当前最容易犯的错是把新 append 误读成 tiny-live trigger;这张队列把层级钉死。 | 2026-04-30T06:15:00Z |
| 3 | Rank 29 / trendline breakout navigator | continuity_only | manual_narrow_paper_runner + bot2 | 继续 monitoring / continuity;等真实 append/review 行 + bot2 promotion | new append/review row + red-watch not worse note + explicit bot2 promotion | 没有新的 append/review 行或 bot2 promotion,就不得推进到 P4 / tiny-live review | 当前没有真正的 status-changing event;继续补 tiny-live 同义文档不会减少 blocker。 | 2026-04-30T06:15:00Z |
当前 tiny-live 侧最多只配做三类动作:保持 Live Seat 空席、催成 Rank 2 的唯一一次真实 receipt-chain replay、以及把 Rank 17 / 29 的新事件如实限制在 `P3 review / continuity`。除此之外的近义 tiny-live 文档扩写,当前都不算真实进展。
因为它不再只回答“有没有变化”,而是把 owner + next allowed action now + 仍缺的证据 + 硬阻断 放在一张表里。后续轮次可以直接拿它当操作队列,而不是先读三四张表再自己拼结论。
只要这张队列没有出现新的 `next allowed action now` 级别变化,Run 3 就不该继续围绕 tiny-live 做同义补文档;更应该等待真实事件,或在允许时切回 Scout / Paper 主线。
artifact:reports/artifacts/alpha_closure_board/small_live_now_action_queue_v1.csv
这张表不回答“该不该上 live”,而是回答:一旦 promotion gate 放行,真正执行前要先怎么做 routing dry-run、live ledger、mismatch guard 与 kill switch。它的作用是把 Step 5 从一句抽象 policy 再压成 operator 可执行的检查栏位,避免 future run 临时拼接。
| 阶段 | 账户 / venue 模式 | 资金规则 | routing 规则 | ledger 必记字段 | mismatch guard | kill switch |
|---|---|---|---|---|---|---|
| Routing dry-run / symbol whitelist lock | `0` 真资金;先在目标 venue 的 dry-run / test / no-fill 路径验证 symbol mapping、最小下单单位与时钟同步。 | 真实资金 = `0`;只允许 candidate spec 已批准的 symbol / pair 进入路由白名单。 | 同一条信号必须先产出 `intent -> route_ack -> cancel/close_ack` 三段回执;缺任一段就不允许进入 tiny-live。 | 每次 dry-run 都写进同一张 live ledger:至少记录 `candidate / symbol / side / intended_qty / route_ts / ack_ts / cancel_ts / venue_mode`。 | 若 paper intent 与路由 payload 的 symbol / side / qty / timestamp 任一不一致,或时钟漂移 > `60s`,直接阻断。 | 连续 `1` 次 route_ack 缺失、qty 被 venue 强制改写、或 symbol mapping 漂移,即刻停在 dry-run,不升级。 |
| Paper-live shadow parity | 继续 `0` 真资金;paper 与 live-shadow 并行,不发真实成交。 | 真实资金 = `0`;仅允许读取 paper candidate 的目标 notional 与 cap snapshot,不做真钱发送。 | 每条 paper 信号都生成一条 live-shadow payload,检查 price source、qty rounding、venue precision、pair whitelist 是否一致。 | 同一行 ledger 必须同时留 `paper_ref_id / live_shadow_ref_id / intended_notional / cap_pct_total / cap_pct_sleeve / shadow_price`。 | 若 live-shadow 与 paper 同步路径偏离 > `1 bar` 或同笔预估成本偏离 > `25bps`,标记 `parity_red`。 | 连续 `2` 次 `parity_red`、或出现 data gap / precision mismatch 未解释,继续留在 paper,不升级。 |
| Tiny-live pilot start | 只适用于已通过 paper review 的候选;paper 与 live 并行记账,live 只做最小 pilot。 | 沿用项目级硬上限:单候选 `<= 总可部署资金 1%` 且 `<= sleeve 10%`;单 symbol / pair `<= pilot capital 50%`。 | 只允许白名单 symbol;每笔 live 下单前先检查 `remaining_cap / min_notional / venue_precision / cooldown`。 | 每笔 live 必须与 paper row 成对:新增 `live_order_id / fill_price / fill_qty / slippage_bps / remaining_cap / mismatch_status`。 | 若 live 与 paper 同步路径偏离 > `5pp`、或出现未解释滑点 > `50bps`,视为 execution mismatch。 | 任一触发即停:`drawdown breach`、`capital breach`、`live vs paper mismatch > 5pp`、`连续两次 red review`、`数据/执行异常`。 |
| Rollback / re-entry | kill switch 后立即回到 `paper only`;live 资金归零。 | 真实资金 = `0`;未完成复盘前不得自动恢复 live。 | 先冻结白名单与路由开关;修复后也必须先重走 dry-run -> shadow parity。 | rollback 行必须记录 `trigger_reason / trigger_ts / exposure_zeroed_ts / reopen_earliest_ts / operator_note`。 | rollback 后至少再观察 `10` 个交易日或 `5` 个 closed trades;不得用旧 live 高水位稀释本次失败。 | 同一 candidate 若 `90` 天内两次触发 kill switch,自动降回 Step 3,等待人工重新立项。 |
当前读法:EMA 还要先把同一张 paper ledger 连续跑起来;breakout 已退回 `bench`,所以这张表现在主要是在给 future challenger 与 tiny-live operator 流程预铺执行栏位,而不是继续默认替 breakout 预留升级通道。
artifact:reports/artifacts/alpha_closure_board/small_live_plumbing_v1.csv
这张快照不回答“Rank 2 能不能直接上 tiny-live”,而是把当前最关键的一句实话挂到 alpha closure board:它已经是窄范围 paper candidate,但 closeout 仍卡在 `paper_candidate_only / blocked`,唯一允许动作仍是一次 whitelist-bound `test/no-fill` receipt-chain replay。换句话说,这张表是把最近几轮散落在 scout 页面里的 closeout 规则,压回当前更核心的部署读板。
| # | 研究口径 | venue symbol | 当前 scope | 当前唯一允许动作 | operator 限定 | 什么时候才算 closeout 通过 | 硬阻断 | 当前 blocker |
|---|---|---|---|---|---|---|---|---|
| 1 | BTC-USD | BTCUSDT | paper_candidate_only | only one real test/no-fill receipt-chain replay on BTC/ETH/SOL whitelist, else keep parked at paper_candidate_only | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | all three refs are real and candidate scope stays unchanged with capital=0 | any scope drift / capital > 0 / missing ack or cancel / new symbol routing => keep blocked at paper_candidate_only | idle_gap_watch=58.6d; time_pocket_review=early_bucket_-1.34%_0of3_positive; route_receipt_chain_missing; promotion_boundary=paper_candidate_only |
| 2 | ETH-USD | ETHUSDT | paper_candidate_only | only one real test/no-fill receipt-chain replay on BTC/ETH/SOL whitelist, else keep parked at paper_candidate_only | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | all three refs are real and candidate scope stays unchanged with capital=0 | any scope drift / capital > 0 / missing ack or cancel / new symbol routing => keep blocked at paper_candidate_only | idle_gap_watch=58.6d; time_pocket_review=early_bucket_-1.34%_0of3_positive; route_receipt_chain_missing; promotion_boundary=paper_candidate_only |
| 3 | SOL-USD | SOLUSDT | paper_candidate_only | only one real test/no-fill receipt-chain replay on BTC/ETH/SOL whitelist, else keep parked at paper_candidate_only | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | all three refs are real and candidate scope stays unchanged with capital=0 | any scope drift / capital > 0 / missing ack or cancel / new symbol routing => keep blocked at paper_candidate_only | idle_gap_watch=58.6d; time_pocket_review=early_bucket_-1.34%_0of3_positive; route_receipt_chain_missing; promotion_boundary=paper_candidate_only |
Rank 2 = narrow paper candidate,但当前 closeout_state 仍是 dry_run_only,并且 hard verdict 仍是:没有真实 receipt chain 之前,只能继续 paper_candidate_only / blocked。
不是模板、不是单段 ack,也不是换 scope 后的“差不多同一条 replay”。只有同一条 whitelist-bound replay 上同时拿到真实 intent_ref + ack_ref + cancel_or_close_ref,且 scope 不漂移、capital=0,才允许收口到 eligible_for_shadow_parity_review。
把当前 desk 最容易被误读的一点钉死:Rank 2 已经不该继续扩 scout 研究,但也绝对还没到 tiny-live ready。现在缺的不是更多漂亮解释,而是一条真实 dry-run receipt chain。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_closeout_snapshot_v1.csv
这张表是对 small_live_rank2_receipt_chain_log_template_v1.csv 的诚实审计,不再只说“需要三段 refs”,而是逐个白名单符号直接回答:现在到底落了几段真实 refs、还缺哪几段、因此下一步只能排到哪个队列。当前模板里 3 个 leg 都还是占位 refs,所以这张 audit 的价值是把“blocked”从一句原则话压成逐行可复核的 operator 证据。
| # | 研究口径 | venue symbol | 当前链路状态 | 真实 refs 已落地 | 还缺哪些真实 refs | scope guard | capital guard | 当前 verdict | 当前 next queue |
|---|---|---|---|---|---|---|---|---|---|
| P1 | SOL-USD | SOLUSDT | pending_real_replay | 0/3 | intent_ref, ack_ref, cancel_or_close_ref | must_match_packet_scope | must_remain_0 | keep paper_candidate_only / blocked | routing_dry_run_replay |
| P2 | ETH-USD | ETHUSDT | pending_real_replay | 0/3 | intent_ref, ack_ref, cancel_or_close_ref | must_match_packet_scope | must_remain_0 | keep paper_candidate_only / blocked | routing_dry_run_replay |
| P3 | BTC-USD | BTCUSDT | pending_real_replay | 0/3 | intent_ref, ack_ref, cancel_or_close_ref | must_match_packet_scope | must_remain_0 | keep paper_candidate_only / blocked | routing_dry_run_replay |
当前 3 条 whitelist leg 都还是 0/3 真实 refs 落地,因此 next queue 只能继续是 routing_dry_run_replay,不能偷切到 shadow_parity。
因为以后只要 operator 把真实 intent_ref / ack_ref / cancel_or_close_ref 回填进同一张 log template,再重建一次,这张 audit 就会自动显示到底是继续 blocked,还是终于够资格进入 eligible_for_shadow_parity_review。
这依然不是 tiny-live pass,更不是 venue execution 本身;它只是把 Rank 2 receipt-chain blocker 变成一张能跟着真实 refs 自动收口的审计表。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_receipt_chain_audit_v1.csv
这张表不再继续解释为什么 blocked,而是直接回答 operator 下一步该怎么排:如果现在只允许做一次真实 whitelist-bound test/no-fill replay,优先顺序应该怎么走、每个 leg 要抓哪三段 refs、过了以后才允许进入什么 gate。它把前几轮已经散落的 ticket / packet / log template / completion gate 压成一张更接近开工包的读板。
| 优先级 | 研究口径 | venue symbol | venue mode | 为什么排这个顺序 | 允许动作 | 必须抓到的 refs | 当前 log stub | 通过后才允许进入的 gate | 硬阻断 |
|---|---|---|---|---|---|---|---|---|---|
| P1 | SOL-USD | SOLUSDT | test/no-fill | 保留 50U 也可;若想把预算压到 <=10bps,样例名义金额抬到约 100U 更稳。 | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | intent->ack->cancel/close receipt chain on test/no-fill for at least one whitelisted symbol | rank2-solusdt-test-receipt-001 | eligible_for_shadow_parity_review only; still not tiny-live | any scope drift / capital > 0 / missing ack or cancel / new symbol routing => keep blocked at paper_candidate_only |
| P2 | ETH-USD | ETHUSDT | test/no-fill | 若 operator 坚持 ETH 首腿,优先把 replay 样例从 50U 提到 >=100U;若坚持 50U,则应让位给 SOL。 | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | intent->ack->cancel/close receipt chain on test/no-fill for at least one whitelisted symbol | rank2-ethusdt-test-receipt-001 | eligible_for_shadow_parity_review only; still not tiny-live | any scope drift / capital > 0 / missing ack or cancel / new symbol routing => keep blocked at paper_candidate_only |
| P3 | BTC-USD | BTCUSDT | test/no-fill | 保守做法是继续放最后;若真要做 BTC replay,样例 notional 至少提到约 150U(<=50bps)/ 300U(<=25bps)。 | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | intent->ack->cancel/close receipt chain on test/no-fill for at least one whitelisted symbol | rank2-btcusdt-test-receipt-001 | eligible_for_shadow_parity_review only; still not tiny-live | any scope drift / capital > 0 / missing ack or cancel / new symbol routing => keep blocked at paper_candidate_only |
SOL → ETH → BTC。若坚持 50U test/no-fill 且把 rounding 损耗预算压到 <=25bps,当前更诚实的 replay 顺序应读成 SOL → ETH → BTC;其中 SOL 已过线,ETH 更适合先把样例抬到 >= 100U,BTC 继续只保留最后备选(约 >= 300U 才接近同档口径)。
把“下一步只能做一次真实 replay”再往前压半步:不是继续补近义说明,而是把 operator 真正开工时的腿顺序、log stub 与 pass gate 放到同一张表里,减少 future run 临时拼接。
这依然不是 tiny-live 放行。即使首腿 replay 成功,也只是第一次拿到 eligible_for_shadow_parity_review,仍不是 live ready。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_replay_runsheet_v1.csv
这张表继续只做 runsheet 的紧邻下一步:如果某一条 whitelist-bound replay 真的执行了,应该开什么 review ticket、成功时怎么关单、失败时又该如何写回同一条审计链。它的价值不是新增一层规则,而是把 一次真实 replay 的 green / blocked 两种收口写成 operator 能直接照抄的 closeout matrix。
| 优先级 | 研究口径 | venue symbol | 当前 log stub | 建议打开的 review ticket | 若 replay 成功 | 成功时 writeback | 若 replay 失败 | 失败时 writeback | 成功后 next queue | 失败后 next queue |
|---|---|---|---|---|---|---|---|---|---|---|
| P1 | SOL-USD | SOLUSDT | rank2-solusdt-test-receipt-001 | SL-DRYRUN-RANK2-SOLUSDT-TEST-RECEIPT-001 | dry_run_pass -> eligible_for_shadow_parity_review only | close only as dry_run_pass -> eligible_for_shadow_parity_review if same candidate scope is preserved and full receipt chain lands | keep dry_run_only / blocked | otherwise keep dry_run_only / blocked and route back to routing_dry_run_replay | shadow_parity | routing_dry_run_replay |
| P2 | ETH-USD | ETHUSDT | rank2-ethusdt-test-receipt-001 | SL-DRYRUN-RANK2-ETHUSDT-TEST-RECEIPT-001 | dry_run_pass -> eligible_for_shadow_parity_review only | close only as dry_run_pass -> eligible_for_shadow_parity_review if same candidate scope is preserved and full receipt chain lands | keep dry_run_only / blocked | otherwise keep dry_run_only / blocked and route back to routing_dry_run_replay | shadow_parity | routing_dry_run_replay |
| P3 | BTC-USD | BTCUSDT | rank2-btcusdt-test-receipt-001 | SL-DRYRUN-RANK2-BTCUSDT-TEST-RECEIPT-001 | dry_run_pass -> eligible_for_shadow_parity_review only | close only as dry_run_pass -> eligible_for_shadow_parity_review if same candidate scope is preserved and full receipt chain lands | keep dry_run_only / blocked | otherwise keep dry_run_only / blocked and route back to routing_dry_run_replay | shadow_parity | routing_dry_run_replay |
runsheet 解决的是先做哪条腿;这张 matrix 解决的是:腿真的跑完之后,operator 该把它关成什么状态。这样 future run 不会只知道要抓 receipt refs,却不知道通过/失败后该怎样落 review registry。
即使 replay 成功,green closeout 也只能收口到 eligible_for_shadow_parity_review,默认 next queue 只是 shadow_parity;它依然不是 tiny-live 放行。
因为它把真实 operator replay 后的 closeout / writeback 路径直接写成表格,减少后续轮次在 ticket、registry、next queue 之间临时拼接。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_replay_closeout_matrix_v1.csv
这张表只补 replay 成功后的下一步:不是再解释为什么 blocked,也不是偷写成 tiny-live ready,而是把 一次 whitelist-bound replay 真通过后,operator 应该如何打开第一张 shadow parity review ticket、绑定哪条 paper_ref / live_shadow_ref、以及第一条 green row 至少要写回哪些字段 压成可直接照抄的启动包。
| 优先级 | 研究口径 | venue symbol | 触发条件 | 建议打开的 parity ticket | paper_ref stub | live_shadow_ref stub | 第一条 shadow row 必须写回 | 硬边界 |
|---|---|---|---|---|---|---|---|---|
| P1 | SOL-USD | SOLUSDT | eligible_for_shadow_parity_review only; still not tiny-live | SL-PARITY-paper-rank2-solusdt-next-001-<yyyymmddhhmm> | paper-rank2-solusdt-next-001 | shadow-rank2-solusdt-next-001 | paper_ref_id + live_shadow_ref_id + rounded_qty + cost_estimate_bps + mismatch_status=green | 仍只允许 shadow_parity;若缺 paper_ref / qty rounding / cost snapshot / whitelist / clock 对齐,继续 blocked,绝不进入 tiny-live。 |
| P2 | ETH-USD | ETHUSDT | eligible_for_shadow_parity_review only; still not tiny-live | SL-PARITY-paper-rank2-ethusdt-next-001-<yyyymmddhhmm> | paper-rank2-ethusdt-next-001 | shadow-rank2-ethusdt-next-001 | paper_ref_id + live_shadow_ref_id + rounded_qty + cost_estimate_bps + mismatch_status=green | 仍只允许 shadow_parity;若缺 paper_ref / qty rounding / cost snapshot / whitelist / clock 对齐,继续 blocked,绝不进入 tiny-live。 |
| P3 | BTC-USD | BTCUSDT | eligible_for_shadow_parity_review only; still not tiny-live | SL-PARITY-paper-rank2-btcusdt-next-001-<yyyymmddhhmm> | paper-rank2-btcusdt-next-001 | shadow-rank2-btcusdt-next-001 | paper_ref_id + live_shadow_ref_id + rounded_qty + cost_estimate_bps + mismatch_status=green | 仍只允许 shadow_parity;若缺 paper_ref / qty rounding / cost snapshot / whitelist / clock 对齐,继续 blocked,绝不进入 tiny-live。 |
前一张 closeout matrix 解决的是 dry-run replay 如何关单;这张 launch packet 解决的是:dry-run 真关成 green 以后,第一张 shadow parity ticket 应该怎么开。这样 future run 不会从 eligible_for_shadow_parity_review 直接跳成口头‘可以继续’。
SOL → ETH → BTC 是当前更诚实的 launch 顺序;若坚持 50U test/no-fill 且把 rounding 损耗预算压到 <=25bps,当前更诚实的 replay 顺序应读成 SOL → ETH → BTC;其中 SOL 已过线,ETH 更适合先把样例抬到 >= 100U,BTC 继续只保留最后备选(约 >= 300U 才接近同档口径)。 这次只是把这三个腿各自的 SL-PARITY-*、paper_ref 与 live_shadow_ref 启动 stub 一次写清,减少 future run 临时命名漂移。
即使 dry-run replay 成功,下一步也仍然只是 shadow_parity;只要缺 paper_ref、qty rounding / cost snapshot、白名单或时钟对齐,仍继续 blocked,绝不允许偷写成 tiny-live ready。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_shadow_parity_launch_packet_v1.csv
这张表只补 launch packet 的紧邻下一格:一旦 Rank 2 的那条 whitelist-bound replay 真关成 green,第一条 shadow-parity 绿行应该怎么落。它不是新规则,而是把 ticket stub / paper_ref / live_shadow_ref / stage_status / operator_action / 最低 writeback 预先压成 starter rows,避免 future run 到了真要写第一条 green row 时再临时拼字段。
| 优先级 | 研究口径 | venue symbol | parity ticket stub | paper_ref stub | live_shadow_ref stub | stage | mismatch_status | operator_action | 最小 writeback | closeout 前仍待补字段 | 硬边界 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| P1 | SOL-USD | SOLUSDT | SL-PARITY-paper-rank2-solusdt-next-001-<yyyymmddhhmm> | paper-rank2-solusdt-next-001 | shadow-rank2-solusdt-next-001 | shadow_parity | green_when_first_row_lands | continue_shadow_review | paper_ref_id + live_shadow_ref_id + rounded_qty + cost_estimate_bps + mismatch_status=green | rounded_qty=<fill_after_qty_rounding>; cost_estimate_bps=<fill_after_shadow_snapshot> | 若 rounded_qty / cost / whitelist / clock 任一未过关,就不要用这张 starter row 冒充 green closeout;必须回到 parity_red / freeze_review。 |
| P2 | ETH-USD | ETHUSDT | SL-PARITY-paper-rank2-ethusdt-next-001-<yyyymmddhhmm> | paper-rank2-ethusdt-next-001 | shadow-rank2-ethusdt-next-001 | shadow_parity | green_when_first_row_lands | continue_shadow_review | paper_ref_id + live_shadow_ref_id + rounded_qty + cost_estimate_bps + mismatch_status=green | rounded_qty=<fill_after_qty_rounding>; cost_estimate_bps=<fill_after_shadow_snapshot> | 若 rounded_qty / cost / whitelist / clock 任一未过关,就不要用这张 starter row 冒充 green closeout;必须回到 parity_red / freeze_review。 |
| P3 | BTC-USD | BTCUSDT | SL-PARITY-paper-rank2-btcusdt-next-001-<yyyymmddhhmm> | paper-rank2-btcusdt-next-001 | shadow-rank2-btcusdt-next-001 | shadow_parity | green_when_first_row_lands | continue_shadow_review | paper_ref_id + live_shadow_ref_id + rounded_qty + cost_estimate_bps + mismatch_status=green | rounded_qty=<fill_after_qty_rounding>; cost_estimate_bps=<fill_after_shadow_snapshot> | 若 rounded_qty / cost / whitelist / clock 任一未过关,就不要用这张 starter row 冒充 green closeout;必须回到 parity_red / freeze_review。 |
launch packet 解决的是第一张 parity ticket 怎么开;这张 starter rows 解决的是:开完以后,第一条 green parity row 至少该长什么样。这样 future run 不会只知道 stub 名称,却还得现场临时拼 row 字段。
因为它已经把 SOL → ETH → BTC 三条腿的 `ticket / paper_ref / live_shadow_ref / operator_action / minimum_writeback` 固定成可直接照抄的 starter rows;当前排序口径同样遵循:若坚持 50U test/no-fill 且把 rounding 损耗预算压到 <=25bps,当前更诚实的 replay 顺序应读成 SOL → ETH → BTC;其中 SOL 已过线,ETH 更适合先把样例抬到 >= 100U,BTC 继续只保留最后备选(约 >= 300U 才接近同档口径)。 后面真的拿到 replay green closeout 时,只需要把 `rounded_qty` 与 `cost_estimate_bps` 这些真实字段补进去。
这仍然不是 tiny-live 放行。只要 `rounded_qty / cost / whitelist / clock` 任一没过,就不能用 starter row 冒充 green parity closeout;默认必须回到 parity_red / freeze_review。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_shadow_parity_starter_rows_v1.csv
这张表专门给最近几轮的 Rank 2 doc-chain 设一个止损闸门:现在到底什么动作还会真的改变状态,什么动作已经不该再默认算进展。它不是再发明新流程,而是把当前 desk 最需要钉死的一句实话 reader-facing 化:launch packet 与 starter row 已经够了;接下来若没有真实 whitelist-bound replay 的 receipt refs,状态就不会动。
| # | gate | 当前状态 | 什么才算 status change | 什么不再算 | 为什么 | 今天已经就绪的证据 | 一旦做完会进哪条队列 |
|---|---|---|---|---|---|---|---|
| 1 | 当前唯一会改变状态的动作 | Rank 2 is now a narrow paper candidate with closeout artifacts ready, but it remains blocked at paper_candidate_only until a real dry-run receipt chain is completed without scope drift. | only one real test/no-fill receipt-chain replay on BTC/ETH/SOL whitelist, else keep parked at paper_candidate_only | 再补 launch packet / starter row / review wording / operator packet 近义页,都不算 status change。 | Rank 2 现在缺的不是字段模板,而是同一条 whitelist-bound replay 的真实 intent/ack/cancel(close) refs;没有真实 refs,state 不会从 blocked 变成 eligible_for_shadow_parity_review。 | launch_packet_rows=3; starter_rows=3; 第一条 shadow_parity green row 所需 paper_ref/live_shadow_ref/qty/cost 占位字段已齐。 | eligible_for_shadow_parity_review -> shadow_parity only |
| 2 | 为什么当前默认不再继续补 doc-chain | dry_run_only | 只允许 operator 真跑一次 whitelist-bound replay,并把真实 refs 回填进同一 receipt-chain log / audit。 | 新增 closeout copy、重复写 no-default-append 边界、或继续预写更多 green sample rows。 | starter rows 已把 replay 成功后的第一条 shadow_parity green row 最小字段压成可照抄模板;继续写更多相邻文档不会再减少真实 blocker。 | small_live_rank2_shadow_parity_launch_packet_v1.csv + small_live_rank2_shadow_parity_starter_rows_v1.csv | 若 replay 失败 -> routing_dry_run_replay;若 replay 成功 -> shadow_parity review |
继续补 Rank 2 近义 packet / starter / wording,默认已不再减少 blocker。 真正会改状态的只剩一次真实 whitelist-bound test/no-fill replay。
因为 Rank 2 这条线已经连续几轮主要新增 launch packet / starter row / closeout copy。与其继续磨同类 artifact,不如把“文档链到此为止”的闸门写清楚,逼后续只在真实 replay 或新 intake 之间做选择。
除非 operator 真回填 receipt refs,否则 bot3 默认不该再把 Run 3 主资源继续花在 Rank 2 相邻文档;更诚实的下一步要么是真 replay,要么切回新的 paper / repo Scout intake。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_next_status_change_gate_v1.csv
这张表把当前 Run 3 真正唯一允许的一腿压成单行执行包:如果现在只做 1 次不会动用真钱的 whitelist-bound test/no-fill replay,到底先做哪条腿、样例金额怎么读、必须抓哪三段 refs、成功后又只允许推进到哪一步。它不再要求 operator 自己在 runsheet、closeout matrix、shadow parity packet 之间来回拼接。
| 优先级 | 研究口径 | venue symbol | 为什么先做这条腿 | 样例名义金额(USDT) | 当前预算读法 | 唯一允许动作 | 必须抓到的 refs | 当前 log stub | 若通过 | 若通过后建议开的 parity ticket | 硬阻断 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| P1 | SOL-USD | SOLUSDT | 保留 50U 也可;若想把预算压到 <=10bps,样例名义金额抬到约 100U 更稳。 | 40 | pass_25bps | one whitelist-bound test/no-fill replay only; cancel_after_ack; capital stays 0 | intent->ack->cancel/close receipt chain on test/no-fill for at least one whitelisted symbol | rank2-solusdt-test-receipt-001 | dry_run_pass -> eligible_for_shadow_parity_review only | SL-PARITY-paper-rank2-solusdt-next-001-<yyyymmddhhmm> | missing any ref / scope drift / capital > 0 / missing cancel-close |
当前最诚实的第一腿是 SOL-USD / SOLUSDT。 通过也只意味着 eligible_for_shadow_parity_review;仍不是 tiny-live 放行。
next status-changing gate 已经把“只有真实 replay 才会改状态”写死;这张 bundle 再往前半步,把 那次 replay 该怎样开工 压成一行 deployable artifact。
因为它直接回答现在只许做什么、不许做什么,并把 log stub / refs / parity ticket stub 放进同一行,减少 future run 继续长文档链却不减 blocker。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_next_replay_bundle_v1.csv
这张表只给上面的 replay bundle 做一个最小 numeric sanity check:同样按当前 venue precision / step-size 读,白名单三条腿在样例金额下各自会损失多少 rounding bps、因此当前更该先碰哪条腿。它不是新的 admission gate,只是把“为什么是这条腿先上”从口头判断压成可复核快照。
| 优先级 | 研究口径 | venue symbol | 样例名义金额(USDT) | rounded notional(USDT) | rounding loss(bps) | 当前优先级 verdict | 最小名义金额检查 | 一句话硬读法 |
|---|---|---|---|---|---|---|---|---|
| P1 | ETH-USD | ETHUSDT | 50.00 | 49.820913 | 35.8174 | keep_current_order | pass | stepSize=0.0001,50 USDT 测试单 rounding 损耗极小,且 minNotional 余量充足;继续保留首腿更诚实。 |
| P2 | SOL-USD | SOLUSDT | 50.00 | 49.979120 | 4.1760 | keep_current_order | pass | stepSize=0.01,50 USDT 仍能轻松过最小名义金额;若 ETH 当下 route 条件不顺,SOL 仍是干净替补。 |
| P3 | BTC-USD | BTCUSDT | 50.00 | 49.361176 | 127.7649 | keep_last_reserve_leg | pass | 同样能过 50 USDT test/no-fill,但单位价格高、展示级别更容易让 operator 误读为“金额很小却价格很大”;继续放最后更稳。 |
在当前 50U 示例下,SOL 的 rounding 损耗最干净;ETH 也可做,但若要更稳地压到同一档预算,名义金额抬高会更诚实;BTC 继续只保留最后备选。
避免 future run 只因为白名单顺序或主观偏好就先碰高 rounding-loss 的腿。当前选择顺序必须能被最小 precision / notional 快照解释,而不是只靠文字偏好。
这依然不是 venue replay 本身;就算 preflight 最优,也必须等真实 intent -> ack -> cancel/close 三段 refs 落地后才会改状态。
artifact:reports/artifacts/alpha_closure_board/small_live_rank2_replay_preflight_snapshot_v1.csv
这张表继续只做 Run 3 的一个紧邻子点:把 live ledger 从“要记哪些字段”的口头提醒,压成 future dry-run / shadow / tiny-live / rollback 都能复用的最小 schema。它不替代交易逻辑,只负责把 paper_ref、route_ack、数量精度、滑点、mismatch、rollback 这些 execution 字段锁进同一张账本。
| # | 字段 | 必须出现在哪些阶段 | 填写规则 | 缺失时的红旗 | 为什么重要 |
|---|---|---|---|---|---|
| 1 | candidate_id / deployment_scope | dry-run / shadow parity / tiny-live / rollback | 只允许引用已批准 candidate spec 里的候选与 scope;例如 `EMA-paper-primary`、`breakout-live-challenger`,不得临时手写新 scope。 | 账本行若无法映射回已批准候选,或同一策略被写成多个随意别名,直接阻断。 | 先把 live row 和研究 admission scope 锁死,避免 paper/live 混账。 |
| 2 | stage_status | all rows | 只能填 `dry_run` / `shadow_parity` / `tiny_live` / `rollback` 四类之一;状态切换必须按顺序前进。 | 若出现跳过 `dry_run`/`shadow_parity` 直接写 `tiny_live`,或 kill switch 后未落 `rollback` 行,直接判流程失真。 | 把 operator 流程写进账本,而不是只靠口头记忆当前跑到哪一步。 |
| 3 | paper_ref_id / signal_bar_utc | shadow parity / tiny-live / rollback | 每笔 shadow/live 都必须能追溯到对应的 paper 信号行与触发 bar;dry-run 可先留空 paper_ref,但必须记录 signal bar。 | 若 live 行找不到对应 paper row,或 bar 时间与 paper 偏离 > `1 bar` 仍未解释,直接标 `mismatch_red`。 | 这是 `paper vs live` 同步审计的主键;没有它就无法判断 execution mismatch。 |
| 4 | research_symbol / venue_symbol / side | dry-run / shadow parity / tiny-live | 同时记录研究口径 symbol 与 venue 实际路由 symbol,并写明方向;只允许白名单 pair。 | symbol mapping 含糊、pair 不在白名单、或 venue_symbol 与 research_symbol 未对齐时,直接阻断发送。 | crypto live 最容易在 symbol mapping 和合约命名上出错,这列是第一道防呆。 |
| 5 | route_intent_ts_utc / route_ack_ts_utc / ack_latency_ms | dry-run / shadow parity / tiny-live | 每次路由都要成对记录 intent 与 ack 时间,并回填延迟;没有 ack 就不能假装‘已发出’。 | 缺 `route_ack_ts_utc`、或时钟漂移 > `60s`、或 ack latency 异常却无说明,直接停在当前阶段。 | 把 routing dry-run 从一句‘测过了’变成可审计回执。 |
| 6 | intended_notional_usd / cap_pct_total / cap_pct_sleeve / remaining_cap_pct | shadow parity / tiny-live | 按当前项目级 cap 规则同步记录目标 notional、占总资金比例、占 sleeve 比例与剩余容量。 | 任何一列缺失、或超过 `<=总可部署资金1%` / `<=sleeve10%` / `单 pair <= pilot 50%`,直接触发 capital breach。 | 让 capital cap 不再只是 policy,而是每笔都能核对的硬字段。 |
| 7 | intended_qty / rounded_qty / min_notional_check | shadow parity / tiny-live | 先写策略想下的数量,再写 venue rounding 后数量,并记录是否通过最小下单单位 / 最小名义金额检查。 | 若 rounding 后数量偏离 intended 太多、或 min_notional 未通过却仍下发,直接停机。 | 很多 crypto live mismatch 不是方向错,而是数量被交易所精度规则 silently 改写。 |
| 8 | shadow_price / fill_price / fill_qty | shadow parity / tiny-live | shadow 阶段至少留 `shadow_price`;tiny-live 阶段必须补 `fill_price / fill_qty`。 | 有 route ack 却没有 shadow/fill 价格,或 fill_qty 与 rounded_qty 明显不符却没解释,直接标红。 | 没有价格与成交量,就无法算后续偏差、滑点与剩余容量。 |
| 9 | cost_estimate_bps / slippage_bps | shadow parity / tiny-live | shadow 阶段记录预估成本;tiny-live 阶段补真实滑点。 | 若 live 出现未解释滑点 > `50bps`,或 shadow 预估与 live 实际偏离持续 > `25bps`,直接触发 mismatch review。 | 这列把 ‘crypto live mismatch’ 从感觉不对变成量化阈值。 |
| 10 | mismatch_status / mismatch_reason | shadow parity / tiny-live / rollback | 统一写 `ok` / `yellow` / `red`,并在非 `ok` 时补一句原因,如 `clock_drift`、`precision_gap`、`slippage_spike`。 | 若出现 `parity_red` 或 `execution_mismatch` 却没有原因与后续动作,说明账本不可审计。 | 这是把 mismatch guard 真接进 operator 流程的核心状态列。 |
| 11 | operator_action / live_order_id | shadow parity / tiny-live / rollback | 记录本次动作是 `hold` / `send` / `cancel` / `rollback`;若进入 tiny-live,还必须有 `live_order_id`。 | 若账本写了 tiny-live 但没有订单引用,或标了 rollback 却没执行动作,直接视为流程断链。 | 让审计能直接回答:这笔信号最后到底有没有真的被路由/撤单/回滚。 |
| 12 | trigger_reason / reopen_earliest_ts / operator_note | rollback rows | 一旦 kill switch 触发,必须补这三列:为什么触发、最早何时可重开、操作员备注。 | 若 rollback 行缺原因或重开时间,说明 future run 可能会无约束重启 live。 | 把 rollback / re-entry 也纳入同一张 ledger,避免失败被静默覆盖。 |
当前作用不是“准备立刻上 live”,而是把 `crypto live mismatch` 继续往前压成可审计 ledger schema。未来若先跑 `routing dry-run` 或 `paper-live shadow parity`,默认也应该沿这张模板落行,而不是临时想起再补字段。
artifact:reports/artifacts/alpha_closure_board/small_live_ledger_template_v1.csv
这张表继续沿同一个 Run 3 主线,只做 routing dry-run 这一刀:把“先做一次 dry-run 再说”压成 operator 真能逐项勾的 checklist。它不假装已经接通交易所,只负责把 候选白名单、symbol/precision 映射、intent→ack→cancel 回执链、时钟对齐、数量舍入与资金上限 这些最容易 silently 出错的步骤先锁死。
| # | 步骤 | 必须先拿到什么 | 什么才算通过 | 失败时为什么直接阻断 | 必须落到哪些 ledger 字段 |
|---|---|---|---|---|---|
| 1 | 白名单候选冻结 | candidate spec / deployment_scope / 允许交易的 research_symbol 清单 | 只允许已批准 candidate 与白名单 pair 进入 dry-run;未批准 symbol 不生成路由 payload。 | candidate_id、deployment_scope 或 symbol whitelist 任一缺失 / 临时手写,直接停在 dry-run 前。 | candidate_id / deployment_scope、research_symbol / venue_symbol / side |
| 2 | venue symbol / precision 映射快照 | venue_symbol、lot size、tick size、min_notional、price source timestamp | 研究 symbol 与 venue symbol 一一映射,数量精度 / 最小名义金额规则已落快照。 | symbol mapping 含糊、precision 缺失、或 min_notional 无法提前校验,直接阻断发送。 | research_symbol / venue_symbol / side、intended_qty / rounded_qty / min_notional_check |
| 3 | intent → ack → cancel/close 回执链 | route_intent_ts_utc、route_ack_ts_utc、cancel_ts 或 close_ack_ts、venue_mode=test/no-fill | 同一条 dry-run 必须完整留下 intent、ack、cancel/close 三段回执;无真实成交。 | 任一回执缺失、或 venue_mode 不是 dry-run / test / no-fill,直接停机,不进入下一阶段。 | route_intent_ts_utc / route_ack_ts_utc / ack_latency_ms、operator_action / live_order_id |
| 4 | 时钟 / bar 对齐审计 | signal_bar_utc、paper_ref_id(若已有)、venue clock、price source clock | paper intent 与路由 payload 的 bar / timestamp 对齐,clock drift <= 60s。 | bar 对齐偏差 > 1 bar,或 clock drift > 60s 未解释,直接标记 mismatch_red。 | paper_ref_id / signal_bar_utc、mismatch_status / mismatch_reason |
| 5 | 数量舍入 / 资金占用预检 | intended_notional_usd、cap_pct_total、cap_pct_sleeve、remaining_cap_pct、rounded_qty | dry-run 前先验证 rounding 后数量仍在资金上限内,且通过 min_notional 检查。 | rounded_qty 偏离 intended 太多、capital cap 超限、或 min_notional 未过仍试图路由,直接阻断。 | intended_notional_usd / cap_pct_total / cap_pct_sleeve / remaining_cap_pct、intended_qty / rounded_qty / min_notional_check |
| 6 | 同账本留痕 + 红旗动作 | 同一张 live ledger row、mismatch_status、operator_action、operator_note | 每次 dry-run 都在同一张 live ledger 留痕,并明确写出 `hold` / `cancel` 等 operator 动作。 | dry-run 结果只出现在终端 / 日志、没有落 ledger,或红旗没有对应动作,视为流程不可审计。 | mismatch_status / mismatch_reason、operator_action / live_order_id、trigger_reason / reopen_earliest_ts / operator_note |
当前读法:这还不是 `paper-live shadow parity`,更不是 tiny-live 放行;它只是把 Step 5 最前面的 `routing dry-run` 从一句抽象提醒压成可审计清单,避免 future run 一上 venue 就先踩 symbol mapping / precision / receipt chain 这些基础坑。
artifact:reports/artifacts/alpha_closure_board/small_live_routing_dry_run_checklist_v1.csv
这张表不是再写一份 checklist,而是把 一条合格的 dry-run 回执到底该怎么落到账本 固定成样例。它回答的不是“能不能 tiny-live”,而是:当 routing dry-run 通过 symbol/precision/cap 检查,且完整留下 `intent -> ack -> cancel` 三段回执后,第一条 green dry-run row 应该长什么样。
| row_kind | candidate | stage | signal_bar_utc | research_symbol | venue_symbol | side | venue_mode | route_intent_ts | route_ack_ts | cancel_ts | ack_latency_ms | notional_usd | intended_qty | rounded_qty | mismatch_status | operator_action | operator_note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| routing_dry_run_green_example | future-crypto-live-challenger | dry_run | 2026-03-16 07:32:00 UTC | ETHUSDT | ETH-USDT-SWAP | short | test/no-fill | 2026-03-16 07:38:12 UTC | 2026-03-16 07:38:13 UTC | 2026-03-16 07:38:17 UTC | 880 | 50.00 | 0.0250 | 0.0250 | green | cancel_after_ack | 示例 row:同一条 dry-run 已完整留下 intent->ack->cancel 回执,symbol/precision/cap 检查通过,但 venue_mode 仍是 test/no-fill,不代表 tiny-live 已放行。 |
当前读法:这张 sample row 仍然只停在 `test/no-fill`,不是 tiny-live 放行,也不是任何真实成交。它的价值是把最前面的 dry-run 留痕方式固定下来,避免 future run 只在日志里说“回执链没问题”,却没有同账本样例。
artifact:reports/artifacts/alpha_closure_board/small_live_routing_dry_run_sample_row_v1.csv
这张表不是新增一套 live 规则,而是把 dry-run green row → shadow parity checklist → parity_red 分支 → reopen gate → green resume row 串成一条 operator 真能顺着走的对账顺序。它回答的是:future run 真开始对账时,先看哪张 artifact、通过后产出什么、失败后又该停在哪。
| # | operator 阶段 | 复用哪张 artifact | 这一步到底核对什么 | 通过后应产出什么 | 失败后必须停在哪 | 同账本锚点 |
|---|---|---|---|---|---|---|
| 1 | dry-run green row 先落账 | small_live_routing_dry_run_sample_row_v1.csv | 先确认 route_intent / route_ack / cancel 三段回执完整,且 venue_mode 仍是 test/no-fill,不把 dry-run 误读成 live。 | 保留一条 green dry_run row,并把 candidate 维持在 dry_run_only。 | 若 ack 缺失、cancel 缺失、或 symbol/precision/cap 未过,则停在 routing review,不进入 shadow parity。 | signal_bar_utc / route_intent_ts_utc / route_ack_ts_utc / cancel_ts_utc / operator_action |
| 2 | paper_ref 与 shadow payload 对齐 | paper_live_shadow_parity_checklist_v1.csv | 把同一条 paper 信号绑定到唯一 live-shadow payload,检查 symbol / side / qty rounding / cost snapshot / clock drift。 | 允许生成一条新的 shadow parity row,并继续做成本/数量 parity 审计。 | 任一 payload、clock、qty、cost 失真就记 parity_red;不得跳过 shadow 审计直接讨论 tiny-live。 | paper_ref_id / live_shadow_ref_id / rounded_qty / cost_estimate_bps / mismatch_status |
| 3 | parity_red 时按硬分支处理 | small_live_parity_red_action_ladder_v1.csv + small_live_shadow_parity_sample_row_v1.csv | 看到 red row 后,必须按 mismatch_reason 选择 hold / cancel_or_no_send / escalate / freeze review,而不是口头说‘先等等看’。 | red row 留下清楚 trigger_reason、operator_action 与 reopen_earliest_ts,形成可审计冻结状态。 | 若 red 只出现在日志里、没有账本动作,视为流程失真;candidate 保持 paper only。 | mismatch_reason / operator_action / trigger_reason / reopen_earliest_ts / operator_note |
| 4 | reopen gate 逐条过关 | small_live_reopen_gate_checklist_v1.csv | 只有 cooldown 到点、root-cause 被单独关单、并重走一次最小 routing receipt 后,才配讨论重开。 | 允许新开一条 green shadow parity row,恢复 shadow review。 | 任一条件未满足都继续 freeze review;reopen_earliest_ts 不是自动赦免。 | operator_note / route_intent_ts_utc / route_ack_ts_utc / mismatch_status |
| 5 | green resume row 接回同一审计链 | small_live_reopen_resume_sample_row_v1.csv | 恢复行必须显式引用 prior_red_ref_id,并把新的 paper_ref / shadow_ref / qty / cost / operator_action 一次落齐。 | 账本形成 red -> reopen -> green 的闭环,candidate 才算恢复到 resume_shadow_review。 | 若恢复行与 prior red 脱节,或只写‘已恢复’不写引用,视为审计链断裂,不能推进 tiny-live review。 | prior_red_ref_id / paper_ref_id / live_shadow_ref_id / cost_estimate_bps / operator_action |
当前读法:它依然不是 tiny-live 放行卡;价值在于把已有的多个 v1 artifact 压成同一条执行顺序,避免 future run 明明已经有 checklist 和 sample row,却不知道先看哪张、失败后该回退到哪一步。
artifact:reports/artifacts/alpha_closure_board/small_live_operator_reconciliation_sequence_v1.csv
这张表继续沿同一条 Run 3 执行链,只补一个更贴近开工的切面:当 future run 真要开始一次 venue / shadow review 时,operator 该一口气打开哪几张 artifact、目标写回哪条 row、什么情况下必须立刻停手。它不是替代 sequence,而是把 sequence 压成更像“启动包”的场景化 bundle。
| # | 当前 review 场景 | 先打开哪几张 artifact | 这次 handoff 的目标 | 预期写回 | 什么时候必须停 |
|---|---|---|---|---|---|
| 1 | 准备启动一次新的 venue / route review | small_live_routing_dry_run_checklist_v1.csv + small_live_routing_dry_run_sample_row_v1.csv + small_live_ledger_template_v1.csv | 先确认 symbol whitelist、precision、intent->ack->cancel 回执链与 live ledger 主键字段都齐,再决定这次 review 只能停在 dry_run 还是能继续往 shadow parity 走。 | 至少留下 1 条 green dry_run row;如果 ack / cancel 缺失或时钟漂移超阈值,就继续 `dry_run_only`,不得伪装成 shadow 通过。 | 只要 route receipt chain 不完整、candidate/scope 对不上,或 ledger 主键字段没写齐,就不允许打开下一张 shadow parity 卡。 |
| 2 | dry-run 已干净,准备核对 paper vs live-shadow | paper_live_shadow_parity_checklist_v1.csv + small_live_green_shadow_parity_sample_row_v1.csv | 把同一条 paper 信号映射成唯一 live-shadow payload,并一次核对 qty rounding、cap、price snapshot 与 cost snapshot 是否都在允许带内。 | 若全部过关,就写 1 条 `mismatch_status=green` 的 shadow parity row,并把 operator_action 固定成 `continue_shadow_review`。 | 只要 rounded_qty / cost / clock / whitelist 任一不合格,就不能把这次检查描述成‘影子侧基本没问题’。 |
| 3 | shadow parity 出现 red,需要冻结并等待重开 | small_live_parity_red_action_ladder_v1.csv + small_live_shadow_parity_sample_row_v1.csv + small_live_reopen_gate_checklist_v1.csv | 把 red 变成清楚的 `hold / escalate / freeze review` 动作,并同时写清 reopen 最早时点与必须补齐的 root-cause 证据。 | 至少留下 1 条 parity_red row,包含 `mismatch_reason / trigger_reason / reopen_earliest_ts / operator_note`;后续是否能重开,由 reopen gate 单独决定。 | red 不能只留在日志里;若没有 ledger writeback 或没有明确 reopen 条件,就默认继续 `paper only`。 |
| 4 | red cause 已关闭,准备恢复 shadow review | small_live_reopen_gate_checklist_v1.csv + small_live_reopen_resume_sample_row_v1.csv + small_live_operator_reconciliation_sequence_v1.csv | 确认 cooldown 到点、root-cause 已单独关单、并重新拿到干净 route receipt 后,再把恢复动作接回同一条审计链。 | 写 1 条带 `prior_red_ref_id` 的 green resume row,把 candidate 恢复到 `resume_shadow_review`,而不是开一条与历史断开的新记录。 | 如果 prior_red_ref_id 缺失、route receipt 没重走、或新的 qty/cost parity 还没重新过关,就继续 freeze review。 |
当前读法:它依旧不是 tiny-live 放行;价值在于把多张已存在的 v1 卡片压成 4 个最常见 review 场景的开工包,减少 future operator 在多张 CSV / 页面之间来回找,结果却没写出同账本 row 的摩擦。
artifact:reports/artifacts/alpha_closure_board/small_live_operator_handoff_packet_v1.csv
这张表继续沿 handoff bundle 再往前补一格,但不重新发明规则:它只回答一个更贴近 future venue review 的问题——当 operator 真要开一张 dry-run / parity / reopen 恢复 review 时,这张 ticket 至少要带哪些引用、成功时怎么关单、失败时必须怎么收口。这样 future run 不会只在日志里说“这轮看了哪几张卡”,却没有一张可复用的 review ticket 模板把 artifact 与 writeback 锚在一起。
| # | 当前 review 场景 | ticket stub | 必须绑定的引用 | 开工 bundle | 成功时怎么关单 | 失败时怎么收口 |
|---|---|---|---|---|---|---|
| 1 | 新的 venue / route dry-run review | SL-DRYRUN-<candidate>-<yyyymmddhhmm> | candidate_id / deployment_scope、symbol whitelist snapshot、small_live_ledger_template 主键字段、dry-run intent->ack->cancel receipt ref | small_live_routing_dry_run_checklist_v1.csv + small_live_routing_dry_run_sample_row_v1.csv + small_live_operator_handoff_packet_v1.csv | 至少绑定 1 条 green dry_run row ref,并把结论写成 `dry_run_pass -> eligible_for_shadow_parity_review`。 | 若 ack/cancel 缺失、clock drift 超阈值或 candidate/scope 对不上,就把 ticket 关成 `dry_run_only / blocked`,不得口头推进到 shadow parity。 |
| 2 | paper vs live-shadow parity review | SL-PARITY-<paper_ref>-<yyyymmddhhmm> | paper_ref_id、live_shadow_ref_id、shadow price snapshot、qty rounding / cap snapshot、paper_live_shadow_parity_checklist ref | paper_live_shadow_parity_checklist_v1.csv + small_live_green_shadow_parity_sample_row_v1.csv + small_live_operator_handoff_packet_v1.csv | 绑定 1 条 `mismatch_status=green` 的 shadow parity row,并把结论写成 `continue_shadow_review`。 | 若 rounded_qty / cost / clock / whitelist 任一不合格,就必须关成 `parity_red / freeze_review`,并留下 red row ref。 |
| 3 | parity_red 冻结 / reopen 准备 review | SL-RED-<candidate>-<yyyymmddhhmm> | prior parity_red row、trigger_reason、reopen_earliest_ts、root-cause evidence ref、small_live_reopen_gate_checklist ref | small_live_parity_red_action_ladder_v1.csv + small_live_shadow_parity_sample_row_v1.csv + small_live_reopen_gate_checklist_v1.csv | 把 ticket 关成 `freeze_review_with_reopen_gate`,并显式留下 reopen gate 所需的补件列表。 | 若 red 只有日志没有 ledger writeback,或 reopen 条件没写清,就继续标 `paper_only / blocked`,不得默认可重开。 |
| 4 | red cause 已关闭,恢复 shadow review | SL-RESUME-<prior_red_ref>-<yyyymmddhhmm> | prior_red_ref_id、reopen gate pass ref、最新 dry-run receipt ref、green resume row / operator reconciliation sequence ref | small_live_reopen_gate_checklist_v1.csv + small_live_reopen_resume_sample_row_v1.csv + small_live_operator_reconciliation_sequence_v1.csv | 绑定 1 条带 `prior_red_ref_id` 的 green resume row,并把结论写成 `resume_shadow_review`。 | 若 prior_red_ref_id 缺失、route receipt 没重走、或新的 qty/cost parity 仍未过关,就继续关成 `freeze_review`。 |
当前读法:它仍然不是 tiny-live 放行卡;价值在于把 handoff packet 从“知道先开哪几张 artifact”推进到“知道这次 review ticket 至少要绑哪些 ref、结束时必须留哪条 closeout”。
artifact:reports/artifacts/alpha_closure_board/small_live_review_ticket_template_v1.csv
这张表是 review ticket template 的紧邻下一格:它不再回答“ticket 该带什么”,而是把每种 closeout 结果至少要写回哪些字段、必须留在同一条 review registry / ledger 上的状态、以及下一步该进哪条队列压成固定矩阵。这样 future operator 关单时不只是写一句“绿了/红了”,而是能把 `ticket -> row ref -> next queue` 这条链闭合。
| # | closeout 场景 | ticket 状态 | 最少要写回什么 | 必须留在同账本/同 registry 的状态 | 下一步进入哪条队列 | 什么时候不能口头过关 |
|---|---|---|---|---|---|---|
| 1 | dry_run_pass -> eligible_for_shadow_parity_review | closed_green | ticket_id、candidate_id / deployment_scope、dry_run_row_ref、route receipt ref、ack_latency_ms、close_reason=dry_run_pass | 在同一 review registry / ledger row 上补 `review_stage=dry_run`、`closeout_state=eligible_for_shadow_parity_review`、`next_queue=shadow_parity`。 | 排入 shadow parity review;不得因为 ticket 关绿就直接跳 tiny-live。 | 若缺 dry_run row ref 或 route receipt 链不完整,只能回退 `dry_run_only / blocked`。 |
| 2 | shadow parity green -> continue_shadow_review | closed_green | ticket_id、paper_ref_id、live_shadow_ref_id、green parity row ref、shadow_price / rounded_qty / cost_estimate_bps 快照、close_reason=parity_green | 同账本写 `review_stage=shadow_parity`、`mismatch_status=green`、`closeout_state=continue_shadow_review`,并保留 paper/live-shadow 主键配对。 | 继续 shadow review 或等待 paper review 达到 small-live eligible;默认不直接切真钱。 | 若 paper/live_shadow 主键断裂、qty/cost 快照缺失,不能关绿。 |
| 3 | shadow parity red -> freeze_review_with_reopen_gate | closed_red | ticket_id、parity_red row ref、trigger_reason、reopen_earliest_ts、root_cause_owner、close_reason=parity_red | 同账本写 `mismatch_status=red`、`operator_action=freeze_review`、`closeout_state=freeze_review_with_reopen_gate`,并绑定 prior red row。 | 进入 root-cause / reopen gate 审计;停止新的 shadow parity 尝试。 | 如果 red 只有日志描述、却没有 red row / reopen ts writeback,就不能算真正 freeze。 |
| 4 | freeze review 完成 -> reopen_ready | closed_yellow | ticket_id、prior_red_ref_id、reopen_gate_pass_ref、missing_docs_checklist、close_reason=reopen_gate_pass | 同账本写 `review_stage=reopen_gate`、`closeout_state=reopen_ready`、`next_queue=routing_dry_run_replay`,但 candidate 仍保持非 live。 | 必须先重走 routing dry-run,再回 shadow parity;不允许从 freeze 直接跳到 resume green。 | 若 prior_red_ref_id / reopen_gate_pass_ref 任一缺失,只能继续 freeze_review。 |
| 5 | resume green -> resume_shadow_review | closed_green | ticket_id、prior_red_ref_id、new dry_run receipt ref、green resume row ref、close_reason=resume_shadow_review | 同账本写 `review_stage=resume`、`mismatch_status=green`、`closeout_state=resume_shadow_review`,并把历史 red 链接到新的 green resume row。 | 恢复 shadow review 连续性,等待后续 paper/live promotion review。 | 若没重走 receipt、或新的 qty/cost parity 仍未过关,就继续 freeze,不得口头宣布恢复。 |
当前读法:它依旧不是 tiny-live 放行卡;价值在于把 `review ticket -> closeout -> writeback -> next queue` 固定成同一条可审计链,减少 future venue/shadow review 只留下日志、不留下 registry / ledger 状态切换的摩擦。
artifact:reports/artifacts/alpha_closure_board/small_live_review_writeback_matrix_v1.csv
这张表继续沿 `closeout / registry / writeback` 这条 Run 3 fallback 执行链,只补一格最贴近 future venue review 落表的模板:一张 review ticket 真关掉以后,同一条 registry row 至少该长什么样、哪些状态字段必须一起落、历史 red/ref continuity 要怎样接回去。它不是新规则,而是把 writeback matrix 里提到的“同一条 registry / ledger 状态切换”具体压成可复用的 row schema。
| # | registry 行类型 | 最小主键 / 引用 | 必须同时落下的状态字段 | 证据 / 附件引用 | 什么情况下才配进下一队列 | 什么时候必须继续阻断 |
|---|---|---|---|---|---|---|
| 1 | dry_run review row | ticket_id、candidate_id / deployment_scope、review_stage=dry_run、dry_run_row_ref、route_receipt_ref、opened_ts / closed_ts | ticket_status=closed_green 或 blocked、closeout_state=eligible_for_shadow_parity_review / dry_run_only、next_queue=shadow_parity / routing_dry_run_replay | symbol whitelist snapshot、intent->ack->cancel receipt chain、ack_latency_ms、operator_note | 只有 dry_run row ref 与 receipt chain 都齐,且 candidate/scope 未漂移时,才配排入 shadow_parity。 | 若只写了一句 dry-run 通过、却没有 row ref / receipt ref / next_queue,就不能算 registry closeout 完成。 |
| 2 | shadow parity green row | ticket_id、paper_ref_id、live_shadow_ref_id、review_stage=shadow_parity、green_parity_row_ref、candidate_id、closed_ts | ticket_status=closed_green、mismatch_status=green、closeout_state=continue_shadow_review、next_queue=shadow_monitor / paper_review_gate | shadow_price、rounded_qty、cost_estimate_bps、cap snapshot、paper/live-shadow 主键配对 ref | paper/live-shadow 主键、qty rounding 与成本快照都齐,才配继续 shadow review 或等待 promotion review。 | 若 green closeout 没绑定 parity row ref 或 paper/live-shadow 主键断裂,就不能口头写成‘影子侧已对齐’。 |
| 3 | parity_red freeze row | ticket_id、parity_red_row_ref、prior_green_or_ticket_ref、review_stage=shadow_parity、trigger_reason、reopen_earliest_ts、root_cause_owner | ticket_status=closed_red、mismatch_status=red、operator_action=freeze_review、closeout_state=freeze_review_with_reopen_gate、next_queue=root_cause_audit | mismatch_reason、root-cause evidence placeholder、operator_note、freeze_ts | 只有 red 已显式写成 freeze review,且 reopen 最早时点与 root-cause owner 都齐,才算真正进入 root-cause / reopen 队列。 | 如果 red 只留在日志里、registry 没有 freeze row,就不能假装已经完成停机与收口。 |
| 4 | reopen gate row | ticket_id、prior_red_ref_id、review_stage=reopen_gate、reopen_gate_pass_ref、missing_docs_checklist、closed_ts | ticket_status=closed_yellow、closeout_state=reopen_ready、next_queue=routing_dry_run_replay、candidate_live_state=still_blocked | reopen gate checklist ref、补件清单、operator_note、cooldown_done_ts | 只有 prior_red_ref_id 与 reopen_gate_pass_ref 都能追溯,才配回到 routing dry-run replay。 | 若 reopen_ready 没绑定 prior_red_ref_id,就会把恢复动作与历史红单断开,必须继续 freeze_review。 |
| 5 | resume green row | ticket_id、prior_red_ref_id、review_stage=resume、green_resume_row_ref、new_dry_run_receipt_ref、closed_ts | ticket_status=closed_green、mismatch_status=green、closeout_state=resume_shadow_review、next_queue=shadow_monitor | new dry-run receipt、qty/cost parity refresh、operator_reconciliation_sequence ref、operator_note | 只有 receipt replay 与新的 qty/cost parity 都重新过关,才配把历史 red 链接回绿色连续链。 | 若缺 prior_red_ref_id 或新的 receipt / parity ref,就不能把 resume 写成 green continuity。 |
当前读法:它仍然不是 tiny-live 放行卡;价值在于把 `ticket -> registry row -> next queue` 固定成可以直接复用的记录模板,避免 future run 明明已经有 closeout 结论,却仍把状态切换散落在日志、邮件与多张 CSV 之间。
artifact:reports/artifacts/alpha_closure_board/small_live_review_registry_template_v1.csv
这张表是 Run 3 当前最紧邻的下一刀:把 paper vs live-shadow 的同步审计,压成真正可复用的 checklist。它不回答“现在能不能上 tiny-live”,只回答:当 paper 信号被映射成 live-shadow payload 时,哪些 symbol / qty / cost / clock / ledger 红旗必须先被锁死,否则一律停在 parity review。
| # | 步骤 | 必须先拿到什么 | 什么才算通过 | 失败时为什么直接阻断 | 必须落到哪些 ledger 字段 |
|---|---|---|---|---|---|
| 1 | paper signal 配对冻结 | candidate_id / deployment_scope、paper_ref_id、signal_bar_utc、已批准的 paper candidate row | 每条 live-shadow 检查都必须先绑定到唯一一条 paper row;bar 时间与 deployment scope 一致,不能临时换候选或换口径。 | 找不到 paper_ref、同一 live-shadow 对应多个 paper row、或 scope 与 candidate spec 不一致,直接停在 shadow parity 前。 | candidate_id / deployment_scope、paper_ref_id / signal_bar_utc |
| 2 | payload parity 快照 | research_symbol、venue_symbol、side、intended_notional_usd、intended_qty、venue precision / pair whitelist | live-shadow payload 必须逐项复用 paper 的 symbol / side / scope,并通过 venue precision 与白名单检查;不允许靠人工临时修 payload。 | symbol / side / whitelist / precision 任一不一致,或 payload 需要手工改写后才能发出,直接记 `parity_red`。 | research_symbol / venue_symbol / side、intended_notional_usd、intended_qty / rounded_qty / min_notional_check |
| 3 | shadow price + 成本快照 | shadow_price、price_source_ts_utc、cost_estimate_bps、cap_pct_total / cap_pct_sleeve | 在 hypothetic send 前就锁定 shadow 价格、价格源时间戳与预估成本;价格源与 paper 所见市场状态不得错位超过 `1 bar`。 | 缺 `shadow_price`、price source 过旧、或成本预估根本没落表,说明还不能审计 live vs paper 偏差,直接阻断。 | shadow_price、cost_estimate_bps / slippage_bps、cap_pct_total / cap_pct_sleeve / remaining_cap_pct |
| 4 | 数量舍入 / 资金占用 parity | intended_qty、rounded_qty、min_notional_check、remaining_cap_pct、pilot cap snapshot | venue rounding 后的数量仍应落在同一笔 paper 想表达的资金范围内,并继续满足 min_notional 与 pilot cap 约束。 | rounded_qty 把 notional 拉出资金上限、min_notional 未过、或 venue rounding 让 exposure 明显偏离 paper 意图,直接记 `parity_red`。 | intended_qty / rounded_qty / min_notional_check、intended_notional_usd / cap_pct_total / cap_pct_sleeve / remaining_cap_pct |
| 5 | paper vs live-shadow 时钟 / 路径对齐 | paper signal ts、shadow payload ts、route/shadow ack ts、price source clock、paper path snapshot | paper 与 live-shadow 必须对齐到同一 decision bar;clock drift <= `60s`,且 shadow 预估成本相对 paper 偏差 <= `25bps`。 | bar 偏离 > `1 bar`、clock drift > `60s`、或同笔成本差持续 > `25bps` 仍无解释,直接标 `parity_red` 并停止升级。 | route_intent_ts_utc / route_ack_ts_utc / ack_latency_ms、mismatch_status / mismatch_reason |
| 6 | 同账本留双引用 + 红旗动作 | paper_ref_id、live_shadow_ref_id、mismatch_status、operator_action、operator_note | 同一行 ledger 同时留下 paper 与 live-shadow 引用,并明确写出 `hold` / `cancel` / `escalate` 等 operator 动作。 | shadow parity 结果只留在终端/日志,没有回写 ledger,或出现 `parity_red` 却没有动作与备注,视为流程不可审计。 | paper_ref_id / live_shadow_ref_id、mismatch_status / mismatch_reason、operator_action / live_order_id、trigger_reason / reopen_earliest_ts / operator_note |
当前读法:这仍然不是 tiny-live 放行卡,而是先把 `paper_ref -> live_shadow_ref` 这条同步审计链写死。只有 shadow parity 自己先可审计,后面才谈得上 live mismatch、kill switch 与 rollback 是否靠谱。
artifact:reports/artifacts/alpha_closure_board/paper_live_shadow_parity_checklist_v1.csv
这张表继续沿同一个 Run 3 子链,只补一件事:一旦 shadow parity 真出现 `parity_red`,operator 当场到底该怎么做。目标不是写更多原则,而是把 `hold / cancel / escalate / freeze review` 的默认动作锁死,避免 future run 看到红旗后又靠临场解释把它淡化。
| # | 触发红旗 | 默认 operator 动作 | route / shadow 如何处理 | 必须怎么回写 ledger | 什么条件下才允许重试 |
|---|---|---|---|---|---|
| 1 | payload / whitelist / precision mismatch | 立即 `hold` 当前 shadow parity,并把 route 尝试停在 `cancel_or_no_send`;不得手工改 payload 后硬发。 | 若 route 还没出 ack,就不继续发送;若已出 dry-run ack,则补一条 cancel/close 回执并冻结这条 parity row。 | 写 `mismatch_status=red`、`mismatch_reason=payload_or_precision_gap`、`operator_action=hold`,并补 `paper_ref_id / live_shadow_ref_id / operator_note`。 | 只有等 symbol mapping、precision snapshot 与白名单重新核对一致后,才允许重开下一条 shadow row。 |
| 2 | clock drift > 60s / stale price source / bar misalignment | 直接 `hold`;当前 row 不升级成 tiny-live,也不把这次检查包装成‘只是小延迟’。 | 停止继续沿旧 price source 走下去;重新抓 price snapshot、校对 paper signal bar,再决定是否新开 shadow row。 | 写 `mismatch_reason=clock_drift_or_stale_price`,并记录 `route_intent_ts_utc / route_ack_ts_utc / ack_latency_ms / signal_bar_utc`。 | 只有在 paper 与 shadow 回到同一 decision bar,且 drift 回到 `<=60s`,才允许重试。 |
| 3 | rounded_qty 把 notional 拉出 cap / min_notional 未过 / venue rounding 失真 | 保持 `paper only`,本次 shadow row 记 `hold`;不得临时手改数量凑单。 | 不继续发送新 payload;先回到 sizing / cap review,确认 intended_qty 与 venue rounding 重新一致。 | 写 `mismatch_reason=qty_rounding_or_cap_breach`,并回填 `intended_qty / rounded_qty / min_notional_check / remaining_cap_pct`。 | 只有在 rounded_qty 重新落回 cap 规则内,且 min_notional 检查通过时,才允许开下一条 parity row。 |
| 4 | shadow 成本偏差 > 25bps / 成本快照缺失 / 无法解释的高滑点预估 | 记 `escalate` 到 parity review;当前 row 不进入 tiny-live 资格讨论。 | 停止沿当前成本假设继续;先补 price / fee / slippage 证据,再决定是否重跑 shadow parity。 | 写 `mismatch_reason=cost_gap_or_missing_snapshot`,并保留 `shadow_price / cost_estimate_bps / operator_note`。 | 只有成本快照齐全,且 paper vs shadow 成本差回到 `<=25bps` 或有明确解释,才允许继续。 |
| 5 | 连续 `2` 次 parity_red / 未解释 data gap / 未解释 precision mismatch | 冻结当前 candidate 的 small-live promotion review,明确退回 `paper only`;必要时标记 `rollback_pre_live`。 | 暂停新的 shadow parity 尝试,直到问题被单独审计关闭;不允许靠更多重试稀释红旗。 | 写 `mismatch_status=red`、`operator_action=rollback_or_freeze_review`、`trigger_reason=repeat_parity_red`、`reopen_earliest_ts`。 | 只有完成 root-cause 审计,并重新走 `routing dry-run -> shadow parity`,才允许恢复。 |
当前读法:`parity_red` 不是一句状态标签,而是会直接改变 operator 动作顺序的硬分支。尤其连续两次 `parity_red` 时,默认动作应是冻结当前 candidate 的 small-live review,而不是靠更多重试稀释问题。
artifact:reports/artifacts/alpha_closure_board/small_live_parity_red_action_ladder_v1.csv
这张表不是新规则,而是把前面的 checklist / action ladder 压成 同一行 ledger 长什么样 的最小示例。当前示例故意选 `parity_red` 场景:让 future run 不用再猜,看到成本偏差超阈值时,哪几个字段必须同时出现、这行应停在哪一步、最早何时才允许重开。
| row_kind | candidate | stage | paper_ref | shadow_ref | research_symbol | venue_symbol | side | notional_usd | intended_qty | rounded_qty | shadow_price | cost_bps | mismatch_status | mismatch_reason | operator_action | trigger_reason | reopen_earliest_ts | operator_note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| parity_red_shadow_example | breakout-live-challenger | shadow_parity | paper-20260316-0519-breakout-ethusdt-short-001 | shadow-20260316-0519-breakout-ethusdt-short-001 | ETHUSDT | ETH-USDT-SWAP | short | 50.00 | 0.0250 | 0.0200 | 1985.20 | 31 | red | cost_gap_or_missing_snapshot | hold | shadow_cost_delta_gt_25bps | 2026-03-16 05:35:00 UTC | paper 与 shadow bar 对齐,但当前 shadow 成本预估 31bps,高于 v1 阈值 25bps;本行留在 parity review,不升级 tiny-live。 |
当前读法:sample row 的作用不是假装已经有真实 live 订单,而是给 future `shadow_parity` 留一份“红旗发生时账本该怎么写”的模板,避免只在日志里说“这次先 hold”。
artifact:reports/artifacts/alpha_closure_board/small_live_shadow_parity_sample_row_v1.csv
这张表补的是另一半:如果 shadow parity 本身通过了,第一条 green row 该怎么写。它回答的是:在还没进入 tiny-live、只允许继续 `shadow review` 的情况下,哪些字段必须一次落齐,才能证明这轮不是“看起来没问题”,而是真的留下了可审计的 green parity 行。
| row_kind | candidate | stage | paper_ref | shadow_ref | research_symbol | venue_symbol | side | notional_usd | intended_qty | rounded_qty | shadow_price | cost_bps | mismatch_status | mismatch_reason | operator_action | trigger_reason | reopen_earliest_ts | operator_note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| green_shadow_parity_example | future-crypto-live-challenger | shadow_parity | paper-20260316-0820-ema-btcusdt-long-001 | shadow-20260316-0820-ema-btcusdt-long-001 | BTCUSDT | BTC-USDT-SWAP | long | 40.00 | 0.00092 | 0.00090 | 43210.50 | 14 | green | none | continue_shadow_review | shadow_parity_pass | 2026-03-16 08:40:00 UTC | paper_ref 与 live-shadow payload、qty rounding、cap 与成本快照都已对齐;当前行只表示 shadow parity 通过,可继续 shadow review,仍不代表 tiny-live 已放行。 |
当前读法:这不是 tiny-live 放行,也不是说某条候选已经过审;它只是把 `paper_ref -> live_shadow_ref` 真过关时的 green ledger 模板写死,让 future run 知道什么时候只该继续 `shadow review`,而不该偷渡成真钱发送。
artifact:reports/artifacts/alpha_closure_board/small_live_green_shadow_parity_sample_row_v1.csv
这张表是前一轮 `parity_red action ladder + sample row` 的紧邻续刀:不是再解释为什么会红,而是明确 红旗之后,什么条件都补齐了,才配重新打开下一条 shadow parity row。目标是防止 future run 把 `reopen_earliest_ts` 误读成“时间到了就能自动重试”。
| # | 重开前必须过的步骤 | 什么才算真的满足 | 如果没满足就该怎么做 | 必须怎么回写 ledger |
|---|---|---|---|---|
| 1 | 先尊重 cooldown / reopen_earliest_ts | 当前时间已晚于 ledger 里的 `reopen_earliest_ts`,且没有新的 `parity_red` / route ack 缺失还挂在同一 candidate 上。 | 继续 `paper only`,不新开 shadow parity row,也不把等待包装成‘问题已自然消失’。 | 保留上一条 red row,并在 operator note 明确写 `waiting_reopen_window`。 |
| 2 | root-cause 必须被单独关单 | 前一条 red row 的 `mismatch_reason / trigger_reason` 已有明确解释,且补上对应证据:例如 precision snapshot、fee/slippage snapshot、symbol mapping diff、或 data-gap 修复说明。 | 不得靠‘再试一次也许就好’重开;默认维持 freeze review。 | 新增 `operator_note` 或审计引用,明确是哪条证据把 red cause 关掉。 |
| 3 | 先重走 routing dry-run 最小回执 | 同一 candidate / symbol 已重新拿到干净的 `intent -> ack -> cancel/close` 回执链,且 `clock drift <= 60s`。 | 说明基础执行链还不稳;继续停在 dry-run,不回 shadow parity。 | 回填新的 `route_intent_ts_utc / route_ack_ts_utc / ack_latency_ms`,必要时补 `cancel_ts` 备注。 |
| 4 | 新 shadow row 必须重新过 qty / cost parity | 新的 shadow row 在 `rounded_qty / min_notional / cap` 上都重新通过,且 paper vs shadow 成本差回到 `<=25bps`。 | 继续记 `parity_red`,并把 candidate 留在 `paper only`;不能跳过 shadow parity 直接讨论 tiny-live。 | 写新的 `paper_ref_id / live_shadow_ref_id / rounded_qty / cost_estimate_bps / mismatch_status`。 |
| 5 | 只有 green shadow parity 才允许恢复 review | 至少出现一条新的 `mismatch_status=green` shadow parity row,且当前 candidate 仍在 whitelist / capital cap / sleeve cap 内。 | 继续冻结 small-live promotion review;必要时降回更早的 paper review。 | 把 `operator_action` 改回 `resume_shadow_review`,并记录新的 `reopen_earliest_ts`(若仍需观察)。 |
当前读法:`reopen_earliest_ts` 只是最早时点,不是自动赦免。真正的 reopen 必须先关掉上一条 red cause、重走最小 routing 回执,再拿到新的 green shadow parity row,才允许恢复 small-live review。
artifact:reports/artifacts/alpha_closure_board/small_live_reopen_gate_checklist_v1.csv
这张表继续沿同一条 Run 3 子链往前走半步:不是再写一张新 checklist,而是把 reopen gate 真的通过后,第一条 `green shadow parity row` 该长什么样 固定成样例。这样 future run 不会只知道“可以恢复 review 了”,却不知道账上要怎样同时保留 `prior_red_ref_id`、新的 route 回执、以及恢复后的 `resume_shadow_review` 动作。
| row_kind | candidate | prior_red_ref | stage | paper_ref | shadow_ref | research_symbol | venue_symbol | side | notional_usd | intended_qty | rounded_qty | shadow_price | cost_bps | mismatch_status | mismatch_reason | operator_action | trigger_reason | reopen_earliest_ts | operator_note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| reopen_green_shadow_example | breakout-live-challenger | shadow-20260316-0519-breakout-ethusdt-short-001 | resume_shadow_review | paper-20260316-0659-breakout-ethusdt-short-002 | shadow-20260316-0659-breakout-ethusdt-short-002 | ETHUSDT | ETH-USDT-SWAP | short | 50.00 | 0.0250 | 0.0250 | 1984.80 | 18 | green | resolved_after_fee_snapshot_refresh | resume_shadow_review | reopen_gate_passed | 2026-03-16 07:20:00 UTC | 上一条 red row 的成本快照缺口已补齐,并重走 intent->ack->cancel/close 回执;当前 qty/cap/cost 都重新过关,因此恢复 shadow review,但仍保留下一次最早重检时点。 |
当前读法:这张 green sample row 不是说 tiny-live 已经放行,而是把“red 已被关掉,shadow review 允许恢复”时必须留下的最小审计链一次写清。尤其 `prior_red_ref_id` 不能丢,否则 future run 很容易把恢复动作写成一条与历史断开的新行。
artifact:reports/artifacts/alpha_closure_board/small_live_reopen_resume_sample_row_v1.csv
bench:一次性 hard verdict 已同步;当前仍只能诚实地读成 up-flat biased conditional alpha / cached evidence challenger,不再占用默认主资源
park / archive:正式收口,降级为 optional filter candidate / archived idea
closest to paper:EMA baseline family 已有 paper-trading candidate spec + operating spec + monitoring board + runbook,并已落下首份 day-0 ledger snapshot + first-refresh queue;A股 daily primary/shadow refresh 也已切到 live source,当前账本是在按时等待下一次 market-close refresh,而 PSAR overlay 现已被收紧成 `创业板ETF 1d` 的 narrow shadow-protective protocol
| 资源顺序 | paper admission | 研究线 | 当前角色 | 当前状态 | 下一步最值得做什么 |
|---|---|---|---|---|---|
| bench | bench | V3 final verdict / breakout-short follow-up | 保留历史证据与条件性 alpha 读法,但默认退出 Live Seat 主资源竞争,等待 genuinely new blocker reduction 再申请重开 | bench:一次性 hard verdict 已同步;当前仍只能诚实地读成 up-flat biased conditional alpha / cached evidence challenger,不再占用默认主资源 | 下一步默认不是继续在 breakout 上重跑同类 rerun,而是把默认 bot3 主资源让给 Scout Seat 与 tiny-live plumbing。breakout 这条线从现在起只保留两种重开条件:一是未来拿到 genuinely new `pure-test / down-tail` blocker reduction;二是 Scout Seat 产出更强 challenger 后,再回头做替换比较。换句话说,这页现在要表达的不是‘它下一刀该怎么继续切’,而是‘它为什么被 bench,以及什么证据才配让它回来’。 |
| archive | park | Fibonacci confirmation / retest_hold | 当前不再当主 alpha 推进;只保留为小过滤器备选 | park / archive:正式收口,降级为 optional filter candidate / archived idea | 网页上把它改成清晰的 archived/filter 结论页;如果以后再看,只问一个更窄的问题:在更明确的 down regime 里,它能不能当小过滤器。 |
| #1 | closest to paper | EMA / PSAR raw alpha focus | EMA = 主 raw alpha baseline / paper candidate;PSAR = 只配 `创业板ETF 1d` sidecar shadow-protective 观察位,不是默认 runbook overlay | closest to paper:EMA baseline family 已有 paper-trading candidate spec + operating spec + monitoring board + runbook,并已落下首份 day-0 ledger snapshot + first-refresh queue;A股 daily primary/shadow refresh 也已切到 live source,当前账本是在按时等待下一次 market-close refresh,而 PSAR overlay 现已被收紧成 `创业板ETF 1d` 的 narrow shadow-protective protocol | 既然 `day-0 ledger snapshot + first-refresh queue` 都已经落表,且 A股 daily 的 primary / shadow source-risk 已显著下降,EMA 默认下一步就该按这张 queue 执行真实 forward refresh / week-1 review。当前更诚实的状态不是‘还缺一页说明’,而是 active `1d` ledger 正在按时等待下一次真实 market close;因此后续默认别再扩近义 board 页面,而是等下一根 completed bar 后继续写账。若还要补研究刀口,也只该围绕 `沪深300ETF 1d` 这种 mixed pocket 的升格诚实度,或抽查 secondary batch backstops 是否需要从 active_secondary_backstop 降回 shadow;`PSAR overlay` 则只保留在 `创业板ETF 1d` 的 shadow protocol 观察位,不改默认持有逻辑。 |