裁决 R9/R6 schema 所有权与原子切换 - #1902
Conversation
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 59 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughSummary by CodeRabbit
Walkthrough三个计划文档更新了 TypeBox schema 真源、R6/R9 职责、contract-first 交付规则,以及 production activation 和跨轨 cutover 条件。 ChangesSchema 与激活治理
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
Central reviewDecision: Validated findings[major] R9 still declares the superseded R6 P1 dependency
The changed master plan makes R9's contract-only start depend on Root cause: the master plan's new authoritative wave/dependency rule was added without synchronizing the dependent r9 plan's phase dependency and acceptance wording. the same cast contract now has conflicting upstream gates, so the plan family cannot reliably determine when r9 contract work or production preparation is allowed. [major] Wave authority conflicts with R6 and R9 child-plan dependencies
The changed master plan declares the Wave table the sole authority for inter-track ordering and schedules R6 only after R2, while requiring R9 contract-only to wait for R6 P2 ( Root cause: the master-plan amendment changed the authoritative sequencing and phase dependency but did not synchronize the dependent r6 and r9 plan documents, leaving multiple conflicting ordering contracts for the same cross-track work. this can cause premature contract/production work or unnecessary blocking depending on which plan an executor follows. [major] R9 contract-only start gate contradicts the contract-first rule
Root cause: the wave 2 dependency was updated to require an r6 phase for r9 contract work, but the newly added generalized contract-first rule defines that work as explicitly independent of missing upstream production artifacts. the plan therefore has no single authoritative start condition for r9, so orchestration can either unnecessarily block the intended contract-only merge or violate the stated dependency rule. |
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/plans-skeleton/plan-refactor-master-v1.md`:
- Line 74: 在 §4.1 中明确列出“R9 四类 concrete consumers”的具体名称,并说明其与
BEGIN、CastSync、PLAY、STOP 消息类型的对应关系;若定义位于
plan-refactor-cast-av-contract-v1.md,则补充双向引用,确保 P1 原子切换核对项无歧义。
- Line 74: 在 §10 或 §5 的工作流说明中补充跨仓库、跨 PR 的执行规则:明确 R6 bridge/router plumbing 与 R9
concrete consumers 若无法纳入同一分支或 PR,必须建立专门的联合 activation merge
unit(或等效协调机制),并在其中完成共同验证后再切换 producer、移除旧 receiver;若无法达成,则继续保留旧
producer/receiver,禁止提前拆除。
- Line 71: Unify the schema-authority terminology across all three plan sites by
establishing “TypeBox canonical content” as the fixed authoritative phrase in
docs/plans-skeleton/plan-refactor-master-v1.md lines 71-71, then using the same
phrase in docs/plans-skeleton/plan-refactor-wire-s2c-v1.md lines 17-17 and
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md lines 38-38; preserve
the existing meaning that all other artifacts are constrained mirrors.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 22cad99a-c2d5-40de-af5f-05c083d91773
📒 Files selected for processing (3)
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
docs/**/*.md
📄 CodeRabbit inference engine (docs/CLAUDE.md)
docs/**/*.md: 新 plan 头部必须写明接入面:进料、出料、复用的共享类型/event/schema、server/agent/client 跨仓库契约,以及对应的worldview.md锚点。
涉及真元、灵气、衰减、逸散、半衰、距离损耗、排斥或吸力的 plan,必须调用qi_physics;新物理常数和公式必须先扩展qi_physics,不得在功能 plan 中重复实现。
所有真元/灵气流动必须遵守守恒律并通过qi_physics::ledger::QiTransfer;释放使用qi_release_to_zone,吸收使用qi_excretion,不得凭空生成或销毁真元。
涉及玩家可感知行为的 plan,必须在对应机制阶段中内联可直接实现的粒子、音效、HUD、环境、动画和 narration 规格;不得将视听内容笼统推迟到独立阶段。纯 server 逻辑 plan 例外。
每份 plan 必须列出开放问题;实施前必须追加§N.1 决议,逐项给出结论、实施方案、边界条件,并以文件:行号和 plan 章节双锚点落地。
scope 大于或等于 4 个 PR 的 plan,必须在末尾包含§10 实施工作流,并按依赖顺序在一个 plan 内序列化多个 PR,不得拆成多个 plan。
涉及 NBT 建筑、worldgen layout 或复杂视觉资产的 TODO,必须完成三轮提交:(round 1/3)、(round 2/3)、(round 3/3);终轮提交必须包含拼写准确的<PROMISE>担保块。
§10 最末必须包含“单次 consume-plan 全自动到 merge”章节,明确用户提交/consume-plan后即可等待最终归档至docs/finished_plans/。引用世界观内容时统一使用
worldview.md §X L<line>格式;不得自动修改docs/worldview.md或主动回写docs/library/。
Files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
docs/plans-skeleton/**/*.md
📄 CodeRabbit inference engine (CLAUDE.md)
新 plan 必须先读取
docs/CLAUDE.md;骨架、Active 和 Finished plan 必须遵循三态流转及规定的阶段状态、Finish Evidence 结构。
Files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
**/*
📄 CodeRabbit inference engine (CLAUDE.md)
**/*: commit message 必须使用中文,每个逻辑单元一个 atomic commit;agent 生成的 commit 必须带真实模型Model: <精确模型 id>trailer。
禁止使用--no-verify、--no-gpg-sign、关闭签名配置、未经确认的 force push、hard reset、amend 或交互式 rebase。
禁止留下 auto-stash 产生的孤儿 WIP stash;自动 stash 流程完成后必须恢复自己的 stash。
Files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
🧠 Learnings (3)
📚 Learning: 2026-07-17T00:31:10.779Z
Learnt from: Kizunad
Repo: Kizunad/Bong PR: 1218
File: docs/plans-skeleton/plan-skill-av-relink-v1.md:1-1
Timestamp: 2026-07-17T00:31:10.779Z
Learning: 在审查该仓库 `docs/plans-skeleton/` 下的“docs-only skeleton plan”创建类 PR 时:先核对 `docs/CLAUDE.md` 中“Plan 消费规范”,并逐份查看本计划文档里的“§10 实施工作流”,确认后续实施阶段是否会遵循“每个 PR 只修改一个 plan”,且实施/归档时不会出现跨 plan 的修改。该规则不适用于用户显式指定、共享调研基线且计划之间存在互相交叉引用的 skeleton plan 同批创建 PR;对这类情况应按实际交叉引用关系放宽,确保仍能按独立或约定的序列化方式推进。
Applied to files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
📚 Learning: 2026-07-17T00:31:13.643Z
Learnt from: Kizunad
Repo: Kizunad/Bong PR: 1218
File: docs/plans-skeleton/plan-skill-av-relink-v1.md:81-85
Timestamp: 2026-07-17T00:31:13.643Z
Learning: 审核 docs/plans-skeleton/*.md 下的 skeleton 草案 PR 时:不得要求作者在“§N 开放问题(P0 决策门前需收口)”核查完成之前提前填写对应的“§N.1 决议”。仅当计划进入 active 且 P0 实施前,已由 Explore agent 并行核查代码现状后,才允许追加“§N.1 决议”,且该决议需包含结论、实施方案、边界条件,并使用“文件:行号 + plan 章节”的双锚点格式。
Applied to files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
📚 Learning: 2026-07-22T02:11:59.191Z
Learnt from: Kizunad
Repo: Kizunad/Bong PR: 1247
File: docs/plans-skeleton/plan-bughunt-animal-air-spawn-gravity-v1.md:0-0
Timestamp: 2026-07-22T02:11:59.191Z
Learning: 在 `docs/plans-skeleton/` 目录下的计划状态行中,若起草日期同时涉及 UTC 与本地日期(例如时区换算后可能跨到不同日期),请在该行中同时标注 UTC 起草日与本地起草日。这样可以避免基于 UTC 的时间基准在 GitHub/CodeRabbit 审查时将本地日期误判为“未来日期”。
Applied to files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
🔇 Additional comments (2)
docs/plans-skeleton/plan-refactor-wire-s2c-v1.md (1)
40-40: 依赖条目表述清晰,与总纲 §3/§4.1 引用一致。第 40 行明确区分了 "start gate"(Wave 0,schema/generation 可先行)与 "production cutover"(Wave 1/2,需前置条件),并正确引用总纲 §3 Wave 表和 §4.1 裁决。dropped-loot 的 scoped production cutover 条件与 master 文件第 57 行描述一致。
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md (1)
15-19: 接入面条目更新逻辑清晰。第 15-19 行把 R5/R6/R2 接缝明确标注为 production activation 的输入而非 contract-first 的启动门,并新增 STOP/INTERRUPT 权威事件与
SkillAvBindingfail-fast 校验要求,与总纲 §4.1 point 3(contract-first 可早合)一致。
| 1. **Schema authority**:TypeBox source 是 repo-wide schema source of truth;它拥有 shape、discriminant 与 validation semantics。protobuf、generated Rust/Java、Rust conversion、Java bridge、`ServerDataRouter` registration plumbing、dist/JSON Schema/samples 都是生成或受约束 mirror,不得反向定义 TypeBox 为“被动镜像”。 | ||
| 2. **Domain content vs machinery**:R9 负责 author/review cast domain 的 TypeBox message content(BEGIN/CastSync/PLAY/STOP、identity/source/target/outcome)、reducer/state machine、concrete cast consumers 与 `SkillAvBinding`;R6 负责对**所有 wire domain(含 cast)**运行 generation pipeline,并拥有 generated mirrors、`proto_convert.rs`、`ProtoServerDataBridge`、`ServerDataRouter` 通用 registration plumbing 与 channel migration machinery。R9 定义“cast 消息/状态是什么意思”,R6 定义“canonical schema 如何生成、转换和运输”;双方不得复制对方 artifact。 | ||
| 3. **Contract-first 可早合**:R9 contract-first 工作不等待 R6 production machinery;R9 可先合入 canonical TypeBox cast content、reducer/tests 与未启用 declarations,R6 随后据此生成 mirrors/conversions/plumbing。该阶段不得删除旧 receiver、切 producer 或宣称 BEGIN/CastSync/PLAY/STOP live reachable;R6 的 schema/generation 与 contract stub 也不因 R2 production 接线尚未完成而停止。 | ||
| 4. **Atomic production activation**:旧 receiver removal、新 channel producer activation、R6 bridge/router plumbing、R9 四类 concrete consumers 必须在**同一 merge unit**落地并验证。若平台或跨轨 PR 无法做到单一 merge unit,则旧 producer/receiver 必须原样保留,直到新 consumers 已部署且 live-path 验证通过;随后才在最终 activation merge unit 切 producer并删除旧 receiver。禁止 receiver-removed-before-consumer-installed,也禁止长期 dual emit。 |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
"R9 四类 concrete consumers" 缺少明确定义。
第 74 行提到 "R9 四类 concrete consumers 必须在同一 merge unit 落地并验证",但本文件未说明这"四类"具体指哪些 consumer。第 72 行只列出了四种消息类型(BEGIN/CastSync/PLAY/STOP),不能确定"四类 consumers"是否与这四种消息一一对应。
实施者在 P1 阶段执行原子切换时,需要明确知道要核对哪四类 consumer,否则容易漏项或产生歧义。建议在 §4.1 中显式列出这四类 consumer 的名称,或在 plan-refactor-cast-av-contract-v1.md 中补充对应定义并双向引用。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/plans-skeleton/plan-refactor-master-v1.md` at line 74, 在 §4.1 中明确列出“R9
四类 concrete consumers”的具体名称,并说明其与 BEGIN、CastSync、PLAY、STOP 消息类型的对应关系;若定义位于
plan-refactor-cast-av-contract-v1.md,则补充双向引用,确保 P1 原子切换核对项无歧义。
🧹 Nitpick | 🔵 Trivial
跨仓库/跨 PR 的"同一 merge unit"落地在操作上需要额外说明。
第 74 行要求"旧 receiver removal、新 channel producer activation、R6 bridge/router plumbing、R9 四类 concrete consumers 必须在同一 merge unit 落地并验证"。若 R6 与 R9 分属不同代码仓库或不同 PR,GitHub 原生不支持多 PR 原子合并。文本给出了退路(旧 producer/receiver 保留直到新 consumer 部署验证后再切换),但没有说明如何在实施阶段验证"同一 merge unit"这一约束本身是否可达(例如是否要求 R6 与 R9 在同一分支/同一 PR 完成)。
建议在 §10 或 §5(工作流)补充:当 R6/R9 分属不同 tmux 会话/分支时,如何具体执行"同一 activation merge unit",例如是否需要一个专门的联合 PR。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/plans-skeleton/plan-refactor-master-v1.md` at line 74, 在 §10 或 §5
的工作流说明中补充跨仓库、跨 PR 的执行规则:明确 R6 bridge/router plumbing 与 R9 concrete consumers
若无法纳入同一分支或 PR,必须建立专门的联合 activation merge unit(或等效协调机制),并在其中完成共同验证后再切换
producer、移除旧 receiver;若无法达成,则继续保留旧 producer/receiver,禁止提前拆除。
Central reviewDecision: Validated findings[major] R6 has no phase that delivers its newly required generation pipeline
The changed cross-repository contract makes R6 responsible for running a TypeBox-driven generation pipeline that emits protobuf, generated Rust, Rust conversions, Java bridge/router plumbing, dist JSON Schema, and samples. However, the phase list that defines R6's work contains no phase to design, implement, migrate to, or verify that pipeline: P0 inventories bypass channels/builders and freezes scope/snapshot contracts; P1 implements emit/scope; P2 restructures the client bridge/router; P3 migrates channels; P4 adds sample pins and long-tail emit migration; P5 is bot acceptance. Thus the plan can complete every listed phase and acceptance scenario while the newly claimed generation pipeline does not exist, leaving TypeBox unable to serve as the stated source of truth and requiring mirrors/converters to continue being maintained independently. Root cause: the amendment broadens r6's canonical deliverable to a repo-wide schema generation pipeline but only updates overview, ownership, and dependency prose; it does not add a corresponding implementation phase or acceptance evidence to the authoritative r6 plan. |
补足 R6 P1 contract-only pipeline skeleton 与 P3 generated mirrors、ServerDataRouter production integration 的交付锚点,并同步波次依赖。 Model: claude-sonnet-5 Co-Authored-By: Claude <noreply@anthropic.com>
Central reviewDecision: Validated findings[major] R6 P1/P3 dependencies refer to deliverables absent from the R6 plan
The changed master table and Wave rules assign R6 P1 to a contract-only TypeBox generation skeleton and R6 P3 to productionized generated proto/Rust/Java mirrors plus bridge/router integration ( Root cause: the master plan reassigned meanings to r6 p1 and p3 without updating the authoritative r6 child plan's phase definitions, producing an internally inconsistent dependency graph and leaving the new schema-generation deliverables unowned. [major] Fallback cutover requires live verification before any live traffic exists
At Root cause: the non-atomic deployment fallback has a circular ordering dependency: successful live verification requires the new producer to emit, but producer activation is prohibited until that verification succeeds, and the only obvious bridge (bounded dual/shadow emission) is categorically forbidden. thus the plan provides no executable cutover sequence when server, bridge/router, and client consumers cannot become active atomically. [major] Atomic cast activation requires undefined BEGIN and PLAY consumers
The new cast-wire ruling defines the R9 contract as Root cause: the master amendment introduced two additional cast contract concepts and an activation requirement without adding them to the r9 owning plan's contract, phases, or acceptance criteria. |
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
Central reviewDecision: Validated findings[major] Pin TypeBox-to-generated-artifact synchronization
The changed cross-stack contract claims TypeBox is canonical and that R6's generation pipeline synchronizes protobuf, generated Rust, conversion, Java bridge, router plumbing, dist JSON Schema, and samples, but the stated tests only perform S2C sample round-trips. A concrete implementation can modify TypeBox while leaving one generated mirror or the committed dist artifact stale, and those round-trips can still pass when they exercise the stale mirror; no TypeBox-to-generated-artifact freshness/drift test or negative mismatch check is required. Root cause: the plan changes the schema source-of-truth and adds a multi-artifact generation contract without specifying regression protection that proves generated artifacts were derived from the current typebox source. sample conversion coverage alone does not detect stale generated outputs when both producer and consumer use the same stale representation. [major] R6 does not phase or verify the newly owned schema generation chain
Root cause: the change expands r6 ownership from the wire/client refactor to the typebox generation and all cross-stack mirrors, but the r6 plan's phase and acceptance sections were not updated to define that machinery's implementation, artifact inventory, ordering, or verification. the plan can therefore be considered complete while the schema producer, generated representations, and consumers remain disconnected or stale. |
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/plans-skeleton/plan-refactor-master-v1.md`:
- Around line 55-57: 为三个 plan 补充统一的 §10 实施工作流:在
docs/plans-skeleton/plan-refactor-master-v1.md 的总纲中新增总纲级工作流,并将现有 flash-review
清算流程移为子章节;在 docs/plans-skeleton/plan-refactor-wire-s2c-v1.md 的 §10 中列出 R6 的多 PR
依赖顺序、production cutover 条件及最终归档步骤;在
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md 的 §10 中列出 R9 的多 PR
依赖顺序并绑定 Wave、owner 与 atomicity 条件。三处 §10 末尾均必须包含“单次 consume-plan 全自动到 merge”章节。
- Around line 9-10:
在计划头部补充结构化的“接入面”章节,明确列出进料、出料、复用的共享类型、event、schema,server/agent/client
的跨仓库契约,以及各项对应的 worldview 锚点;内容需与 R6、R9 子计划保持一致,并保留现有 TypeBox source-of-truth 约束。
In `@docs/plans-skeleton/plan-refactor-wire-s2c-v1.md`:
- Line 18: 将 docs/plans-skeleton/plan-refactor-wire-s2c-v1.md 第18行的 R6 amendment
obligation 改为可执行的 schema generation phase,明确列出 source、mirrors、pin、CI 验证与
acceptance evidence,并定义完成条件;同时更新 docs/plans-skeleton/plan-refactor-master-v1.md
第72行,引用该具体 phase,并将其完成证据明确设为 production cutover gate。
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: ee1d469d-21b7-46a9-aa4f-0623afa86fb1
📒 Files selected for processing (3)
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-master-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
docs/**/*.md
📄 CodeRabbit inference engine (docs/CLAUDE.md)
docs/**/*.md: 新 plan 头部必须写明接入面:进料、出料、复用的共享类型/event/schema、server/agent/client 跨仓库契约,以及对应的worldview.md锚点。
涉及真元、灵气、衰减、逸散、半衰、距离损耗、排斥或吸力的 plan,必须调用qi_physics;新物理常数和公式必须先扩展qi_physics,不得在功能 plan 中重复实现。
所有真元/灵气流动必须遵守守恒律并通过qi_physics::ledger::QiTransfer;释放使用qi_release_to_zone,吸收使用qi_excretion,不得凭空生成或销毁真元。
涉及玩家可感知行为的 plan,必须在对应机制阶段中内联可直接实现的粒子、音效、HUD、环境、动画和 narration 规格;不得将视听内容笼统推迟到独立阶段。纯 server 逻辑 plan 例外。
每份 plan 必须列出开放问题;实施前必须追加§N.1 决议,逐项给出结论、实施方案、边界条件,并以文件:行号和 plan 章节双锚点落地。
scope 大于或等于 4 个 PR 的 plan,必须在末尾包含§10 实施工作流,并按依赖顺序在一个 plan 内序列化多个 PR,不得拆成多个 plan。
涉及 NBT 建筑、worldgen layout 或复杂视觉资产的 TODO,必须完成三轮提交:(round 1/3)、(round 2/3)、(round 3/3);终轮提交必须包含拼写准确的<PROMISE>担保块。
§10 最末必须包含“单次 consume-plan 全自动到 merge”章节,明确用户提交/consume-plan后即可等待最终归档至docs/finished_plans/。引用世界观内容时统一使用
worldview.md §X L<line>格式;不得自动修改docs/worldview.md或主动回写docs/library/。
Files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.mddocs/plans-skeleton/plan-refactor-master-v1.md
docs/plans-skeleton/**/*.md
📄 CodeRabbit inference engine (CLAUDE.md)
新 plan 必须先读取
docs/CLAUDE.md;骨架、Active 和 Finished plan 必须遵循三态流转及规定的阶段状态、Finish Evidence 结构。
Files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.mddocs/plans-skeleton/plan-refactor-master-v1.md
**/*
📄 CodeRabbit inference engine (CLAUDE.md)
**/*: commit message 必须使用中文,每个逻辑单元一个 atomic commit;agent 生成的 commit 必须带真实模型Model: <精确模型 id>trailer。
禁止使用--no-verify、--no-gpg-sign、关闭签名配置、未经确认的 force push、hard reset、amend 或交互式 rebase。
禁止留下 auto-stash 产生的孤儿 WIP stash;自动 stash 流程完成后必须恢复自己的 stash。
Files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.mddocs/plans-skeleton/plan-refactor-master-v1.md
🧠 Learnings (3)
📚 Learning: 2026-07-17T00:31:10.779Z
Learnt from: Kizunad
Repo: Kizunad/Bong PR: 1218
File: docs/plans-skeleton/plan-skill-av-relink-v1.md:1-1
Timestamp: 2026-07-17T00:31:10.779Z
Learning: 在审查该仓库 `docs/plans-skeleton/` 下的“docs-only skeleton plan”创建类 PR 时:先核对 `docs/CLAUDE.md` 中“Plan 消费规范”,并逐份查看本计划文档里的“§10 实施工作流”,确认后续实施阶段是否会遵循“每个 PR 只修改一个 plan”,且实施/归档时不会出现跨 plan 的修改。该规则不适用于用户显式指定、共享调研基线且计划之间存在互相交叉引用的 skeleton plan 同批创建 PR;对这类情况应按实际交叉引用关系放宽,确保仍能按独立或约定的序列化方式推进。
Applied to files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.mddocs/plans-skeleton/plan-refactor-master-v1.md
📚 Learning: 2026-07-17T00:31:13.643Z
Learnt from: Kizunad
Repo: Kizunad/Bong PR: 1218
File: docs/plans-skeleton/plan-skill-av-relink-v1.md:81-85
Timestamp: 2026-07-17T00:31:13.643Z
Learning: 审核 docs/plans-skeleton/*.md 下的 skeleton 草案 PR 时:不得要求作者在“§N 开放问题(P0 决策门前需收口)”核查完成之前提前填写对应的“§N.1 决议”。仅当计划进入 active 且 P0 实施前,已由 Explore agent 并行核查代码现状后,才允许追加“§N.1 决议”,且该决议需包含结论、实施方案、边界条件,并使用“文件:行号 + plan 章节”的双锚点格式。
Applied to files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.mddocs/plans-skeleton/plan-refactor-master-v1.md
📚 Learning: 2026-07-22T02:11:59.191Z
Learnt from: Kizunad
Repo: Kizunad/Bong PR: 1247
File: docs/plans-skeleton/plan-bughunt-animal-air-spawn-gravity-v1.md:0-0
Timestamp: 2026-07-22T02:11:59.191Z
Learning: 在 `docs/plans-skeleton/` 目录下的计划状态行中,若起草日期同时涉及 UTC 与本地日期(例如时区换算后可能跨到不同日期),请在该行中同时标注 UTC 起草日与本地起草日。这样可以避免基于 UTC 的时间基准在 GitHub/CodeRabbit 审查时将本地日期误判为“未来日期”。
Applied to files:
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.mddocs/plans-skeleton/plan-refactor-wire-s2c-v1.mddocs/plans-skeleton/plan-refactor-master-v1.md
🔇 Additional comments (3)
docs/plans-skeleton/plan-refactor-master-v1.md (1)
44-50: LGTM!Also applies to: 63-65
docs/plans-skeleton/plan-refactor-wire-s2c-v1.md (1)
17-17: 🗄️ Data Integrity & Integration明确 TypeBox source 与
agent/packages/schema的关系。Line 17 规定 agent 只消费生成结果。但现有上下文显示
agent/packages/schema/src/client-request.ts的 Line 1131 定义 TypeBox union,agent/packages/schema/src/schema-registry.ts的 Line 634 导出 schema registry。请在 R6 P0 或 generation phase 中明确该目录是 canonical TypeBox source 还是 generated mirror,并说明 C2S、S2C 如何共享同一 source。否则实施者可能创建第二个 schema source,或错误删除现有 source。docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md (1)
23-23: 🗄️ Data Integrity & Integration明确 R9 P1 的 TypeBox-first 和 contract-only 边界。
Line 23 直接描述补充
cast_sync字段、STOP 事件、SkillAvBinding注册表和 fail-fast 校验,但没有明确cast_sync/STOP 必须先修改 TypeBox canonical content,再由 R6 生成并 pin mirrors。也没有说明 registry 和 fail-fast 在 P1 中是 declared、unwired、test-only,还是会进入 production。请写明该顺序,并禁止 P1 提前启用 production traffic 或 live consumer。
| - **玩法/运行时重构只动 `server/` + `client/`**。`worldgen/`、`library-web/` 不动,agent runtime/prompt/arbiter 等行为域独立保留(§6.11-6.12);跨端 wire 的 TypeBox schema source 是本范围的唯一基础设施例外,按 §4.1 分 owner。 | ||
| - **TypeBox source 是 repo-wide schema source of truth**。对外契约(Redis IPC、proto schema)原则上不动形状;确需变更时先改 TypeBox canonical content,再由 R6-owned generation/transport machinery 按 R6 plan 同步其 mirrors,并走必要的 breaking checks。**不写兼容层**——production activation 服从 §4.1 不变量。 |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
补齐总纲的“接入面”。
该计划头部没有结构化列出进料、出料、复用的共享类型/event/schema、server/agent/client 跨仓库契约和 worldview 锚点。Line 10 只声明 TypeBox source。请在计划头部增加完整的“接入面”,并与 R6、R9 子计划对齐。
As per coding guidelines: 新 plan 头部必须写明接入面:进料、出料、复用的共享类型/event/schema、server/agent/client 跨仓库契约及对应的 worldview 锚点。
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/plans-skeleton/plan-refactor-master-v1.md` around lines 9 - 10,
在计划头部补充结构化的“接入面”章节,明确列出进料、出料、复用的共享类型、event、schema,server/agent/client
的跨仓库契约,以及各项对应的 worldview 锚点;内容需与 R6、R9 子计划保持一致,并保留现有 TypeBox source-of-truth 约束。
Source: Coding guidelines
| - **Wave 0(立即并行)**:V(bot 骨干 + build token 最先)、R3、R5、R2、registry-datafication;同时全部轨道的 P0(设计收口 + 吸收清单验真)都可开工;R6 的 contract-first 工作与 R9 的 cast domain contract-first 工作均可在本波次按各自 plan 开工,不等待 production activation 条件。 | ||
| - **Wave 1**:R6、R7(R2 合入后)、R1(R3 P1 合入后)按各自 plan 推进;涉及 R2-owned production 接缝的工作须等待 R2 P1。 | ||
| - **Wave 2**:R4、R9 production activation(R5、R6、R2 的所属责任按各自 plan 就绪后,服从 §4.1 的 ownership 与 atomicity invariants)、R10(R3 P1 后)。本表只裁决跨轨顺序与 activation 边界;各轨具体 deliverable inventory、phase mapping 与验收证据由各自 plan 定义,不在总纲重述。 |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
为三份 plan 补充同一套 §10 实施工作流。
三个 plan 的 scope 都超过 4 个 PR,但没有按依赖顺序序列化实施 PR。总纲现有 §10 还是 flash-review issue 清算流程。请完成以下修改:
docs/plans-skeleton/plan-refactor-master-v1.md#L55-L57:增加总纲级§10 实施工作流,并将现有 flash-review 流程移出该章节或改为子章节。docs/plans-skeleton/plan-refactor-wire-s2c-v1.md#L41-L41:列出 R6 的多 PR 依赖顺序、production cutover 条件和最终归档步骤。docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md#L38-L38:列出 R9 的多 PR 依赖顺序,并绑定 Wave、owner 和 atomicity 条件。
每份 plan 的 §10 末尾都必须包含“单次 consume-plan 全自动到 merge”章节。
As per coding guidelines: scope 大于或等于 4 个 PR 的 plan 必须包含 §10 实施工作流,且 §10 最末必须包含“单次 consume-plan 全自动到 merge”章节。
📍 Affects 3 files
docs/plans-skeleton/plan-refactor-master-v1.md#L55-L57(this comment)docs/plans-skeleton/plan-refactor-wire-s2c-v1.md#L41-L41docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md#L38-L38
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/plans-skeleton/plan-refactor-master-v1.md` around lines 55 - 57, 为三个
plan 补充统一的 §10 实施工作流:在 docs/plans-skeleton/plan-refactor-master-v1.md
的总纲中新增总纲级工作流,并将现有 flash-review 清算流程移为子章节;在
docs/plans-skeleton/plan-refactor-wire-s2c-v1.md 的 §10 中列出 R6 的多 PR
依赖顺序、production cutover 条件及最终归档步骤;在
docs/plans-skeleton/plan-refactor-cast-av-contract-v1.md 的 §10 中列出 R9 的多 PR
依赖顺序并绑定 Wave、owner 与 atomicity 条件。三处 §10 末尾均必须包含“单次 consume-plan 全自动到 merge”章节。
Source: Coding guidelines
Central reviewDecision: Validated findings[major] Dropped-loot cutover gate violates the new sole Wave authority
The changed master now declares §3 the sole authority for every inter-track start/order/cutover dependency and explicitly forbids child plans from adding ordering not present there ( Root cause: the pr centralizes all cross-track ordering in the master wave table but leaves a concrete r10/r3 production ordering rule exclusively in the r6 child plan. [major] Contract-first cast schema and reducer lack required pin tests
P1 now allows the cast contract to land contract-first with new Root cause: the changed p1 deliverable expands the observable typebox and state-machine contract without adding the dedicated schema enum/negative pin tests and reducer transition tests required to protect that contract; the later bot scenarios only verify selected emitted events, not validation and consumption semantics. [major] R6 still has no phase that delivers the required schema generation chain
The changed master plan requires the R6 plan to add an R6-owned phase that defines, delivers, and verifies the schema generation chain, and says dependent production cutovers cannot be scheduled until that phase is defined and complete ( Root cause: the required r6 schema-generation-chain amendment was deferred as an obligation instead of being incorporated into the r6 phase plan in this change, despite the master plan making that defined phase a prerequisite for production wiring. [major] Dropped-loot producer and atomic page consumer remain split across P1/P2
The new master invariant requires a channel's producer, transport plumbing, all consumers, and old-path removal to activate in the same merge unit ( Root cause: the master plan introduces a same-merge-unit atomic cutover invariant, but the owner plan continues to split the dropped-loot producer activation and its required atomic page-assembly consumer across sequential phases, with no coupling gate between them. |
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
Central reviewDecision: Validated findings[major] Retarget downstream dropped-loot gates from R6 P1 to the new P3 activation
The changed P1 definition now limits dropped-loot to a paginated envelope plus producer/consumer API stubs and pins, explicitly says it does not send, and line 24 moves the real paginated producer, generated conversion/router transport, and revision-aware store replacement to P3. However, the unchanged owner plans still use “R6 P1 recipient projection/page” as the completed authorization consumer: Root cause: the diff reassigns “r6 p1” from the production recipient projection/page consumer to declared, unwired stubs, but leaves r3 and r10 contracts referring to the old phase identity. the master amendment also does not restate the corresponding r10 p2b gate in terms of r6 p3 production activation, so the plan family no longer has one consistent producer-to-consumer cutover contract. [major] R9 P1 omits the mandatory first-commit cast contract pin suite
The changed P1 deliverable introduces the cast_sync source/target/phase schema, STOP event, and binding registry but names no contract pin tests. The only R9 test coverage listed later is deferred to P4 bot acceptance: Root cause: the owner track was updated to start contract-first implementation in p1 without bringing the master plan's mandatory first-commit schema, reducer/state-machine, and registry pin-test acceptance criteria into that phase. because the master also says concrete acceptance evidence belongs in the owner plan, the cross-reference does not supply an executable r9 test inventory and leaves the newly changed contract materially unprotected. [major] Rephased dropped-loot activation leaves canonical R3/R10 dependencies stale
The changed Wave table and R6 plan move dropped-loot production projection/transport to R6 P3: P1 now permits only an unwired pagination envelope and producer/consumer stubs, P2 only an unwired reducer, and P3 performs the atomic producer/router/store activation. However, the unchanged owner plans still make the live dependency Root cause: the diff rephases dropped-loot projection from r6 p1/p2 to the atomic r6 p3 production activation but does not migrate the canonical r10 and r3 cross-track dependency references. this leaves two meanings for “r6 p1 projection/page” and makes a test-only contract phase appear to satisfy a production privacy/consumer prerequisite. |
Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
Central reviewDecision: Validated findings[major] Contract-first schema commits cannot pass the mandatory freshness gate
The new contract says R9's P1 TypeBox cast-schema change may merge independently in Wave 0 and remain declared/unwired/test-only (lines 72-75), while every generated or constrained artifact must carry a pin matching the current TypeBox source and CI must fail closed on any stale mirror (line 71). The same phase split assigns mirror generation/refresh to R6 P3 rather than the early R9 commit (line 72; Root cause: the plan separates a canonical schema-source modification from regeneration of its committed pinned mirrors, while simultaneously requiring source-to-mirror freshness on every commit. contract-first wiring status and artifact freshness are independent concerns, so the proposed early schema phase cannot pass its own ci contract. [major] Production
|
- P0 标记为已完成(2026-08-02),补契约底座落地证据(qi_flow 类型化事务、 ALL_CONCRETE_QI_TRANSFER_REASONS 全枚举、join 身份锚/退避重试) - P0 冻结契约新增 §4 生产接线与枚举/边界测试契约,固化 7 个 review major 修复 - 新增「裁决对齐(PR #1902)」:TypeBox 为 repo-wide schema source of truth、 R6 拥有 generation machinery、R9 拥有 cast domain 语义、原子切换 merge unit、 master §3 Wave 表唯一权威;本轨只消费冻结 API,不复制他人 artifact - 跨仓库契约明确 R5 纯 server 内部、不定义 TypeBox schema 内容 Model: cc-sonnet-high Co-Authored-By: Claude <noreply@anthropic.com>
Summary
Test plan
git diff --checkdocs/plans-skeleton/plan-refactor-master-v1.mdModel: cc-sonnet-high
🤖 Generated with Claude Code