chore(pmo): route foundation atomicity hotfix

This commit is contained in:
2026-08-13 14:39:08 +08:00
parent 5ccf3d12ad
commit 3dfd836758
25 changed files with 373 additions and 31 deletions
@@ -0,0 +1,32 @@
# Context Manifest: ABG-P9.1-RUNTIME-FOUNDATION
> Task ID: `ABG-P9.1-RUNTIME-FOUNDATION`
> Revision: `p91-runtime-foundation-r4`
> Mode: `deep`
> Budget exception: `none`
## 必须读取(默认不超过 8 项)
| 路径或稳定引用 | Revision / 范围 | 为什么本 Goal 必须读 |
|---|---|---|
| `AGENTS.md` | 0121015 | repository execution, evidence and release boundaries |
| `.agent-taskgraph/PROJECT.md` | p9.1 profile | confirmed runtime, model and write ownership |
| `.agent-taskgraph/spec.md` | p9.1-spec-r2 | frozen stage topology and scope |
| `docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md` | p9.1-contract-r2 | reconciled foundation paths, APIs and exact accepted 22-script regression gate |
| `docs/runtime/p9_1/RUNTIME_ARCHITECTURE_SPEC.md` | 7bc871d | detailed extraction order and rollback criteria |
| `runtime/main.gd` | 41204ac product authority | accepted monolithic runtime to extract behavior-equivalently |
| `runtime/tests/` | P9.0R1-R10 accepted | exact contract-listed regressions and facade seams |
| `docs/runtime/PHASE9_0R10_PAIR_ADAPTATION_CONTRACT.md` | P9.0R10 | latest accepted product behavior boundary |
## 按需检索(先搜索,再局部读取)
| 路径/范围 | 触发条件 | 检索提示 |
|---|---|---|
| source tree | Goal 需要实现细节时 | 先 rg,再局部读取 |
## 最近 Delta
- 2026-08-13T01:31:53+00:00: structured pre-dispatch manifest created.
- 2026-08-13T01:36:00+00:00: attempt-1 stopped before implementation because the worker branch predated its queue Goal; zero writes. PMO authorized only a fast-forward to the current dispatch closure and a fresh identity ACK.
- 2026-08-13T02:04:00+00:00: product attempt remained zero-write and correctly terminaled on a PMO contract error. R10 retained authority proves exactly 22 scripts (summary SHA-256 `3de791bb...`); old `game.run` tests and non-authoritative R3 dynamic were removed from the foundation gate without editing them.
- 2026-08-13T02:18:00+00:00: attempt-3 stopped at durable identity mismatch before product work. Full contract-r2 alignment is committed before attempt-4 session binding.
@@ -0,0 +1,21 @@
# Dispatch Bootstrap: ABG-P9.1-RUNTIME-FOUNDATION
| Field | Value |
|---|---|
| Task ID | ABG-P9.1-RUNTIME-FOUNDATION |
| Dispatch ID | dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 |
| Role ref | role:p91-runtime-foundation-developer |
| Role profile | roles/p91-runtime-foundation-developer/ROLE.md |
| Role lifecycle | persistent |
| Team revision | rev-p9.1-1 |
| Goal ref | task:ABG-P9.1-RUNTIME-FOUNDATION |
| Context manifest | context.md |
| Context revision | p91-runtime-foundation-r4 |
| Continuity | attempts 1-3 ended before product writes; attempt-4 is a clean redispatch from contract-r2 and source e9fe1bc |
| Session ID | c70ab47f-b764-42a1-b4b5-2eab342e8b25 |
| Expected identity ACK | IDENTITY_READY dispatch_id=dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 role=role:p91-runtime-foundation-developer team_revision=rev-p9.1-1 goal=task:ABG-P9.1-RUNTIME-FOUNDATION context_revision=p91-runtime-foundation-r4 |
| Delivery | SENT: dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 via HAPI c70ab47f after pre-redispatch verification 41d0e0b0 |
| Identity ACK | VERIFIED: IDENTITY_READY dispatch_id=dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 role=role:p91-runtime-foundation-developer team_revision=rev-p9.1-1 goal=task:ABG-P9.1-RUNTIME-FOUNDATION context_revision=p91-runtime-foundation-r4 |
| ACK evidence | exact standalone agent message observed in HAPI c70ab47f-b764-42a1-b4b5-2eab342e8b25 after binding commit 2ae9f84 and clean worktree fast-forward |
Read Role, PROJECT, context, Goal and direct evidence in that order. Return the exact identity ACK before executing the Goal.
@@ -0,0 +1,103 @@
# Goal: P9.1 behavior-equivalent runtime foundation extraction
> Stage: implementation-foundation
> Started: 2026-08-13T01:31:53+00:00
> Task ID: `ABG-P9.1-RUNTIME-FOUNDATION`
> Baseline: `e9fe1bcffd4364049e22dc8f697ad1ffe4611a4a; branch=agent/abg-p91-runtime-foundation; clean; prior product writes zero`
> Frozen spec: `.agent-taskgraph/spec.md revision p9.1-spec-r2; docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md revision p9.1-contract-r2`
> Graph node: `.agent-taskgraph/graph.yaml#p91_runtime_foundation`
> Independent contract: 不适用
> Context manifest: `context.md`
> Context revision: `p91-runtime-foundation-r4`
> Legal terminal: **ABG-P9.1-RUNTIME-FOUNDATION candidate ready** 或 **ABG-P9.1-RUNTIME-FOUNDATION redesign required: <最早失败边界>**
## Objective
Behavior-equivalently extract the architect-defined P9.1 foundation from runtime/main.gd, keep one mutable source of truth, preserve the complete accepted P9.0R1-R10 surface, and leave stable disjoint APIs for later domain, UI and test workers.
## 图输入、输出与写入范围
- 直接依赖(needs):p91_spec_integration
- 必须读取(consumes):p9.1-contract-r2, P9.0R10 fixed runtime source, exact accepted 22-script R10 regression manifest
- 必须产出(produces):architect-defined foundation files and clean pushed foundation candidate
- 唯一写入范围(writes):runtime/main.gd, runtime/domain/p9_1/contracts.gd, runtime/domain/p9_1/session_state.gd, runtime/domain/p9_1/session_service.gd, runtime/domain/p9_1/battle_fixture.gd, runtime/presentation/, runtime/ui/session_presenter.gd, runtime/ui/widgets.gd, runtime/compat/p9_0_root_facade.gd
- 路由:PASS -> p91_domain_implementation;FAIL -> failed;最大尝试 2
## 分配记录
- Role ref:`role:p91-runtime-foundation-developer`
- 角色职责:Extract one authoritative runtime state, command, snapshot, clock, presenter and compatibility boundary without changing accepted P9.0 behavior
- 角色生命周期:persistent
- 派给:p91-runtime-foundation-developer
- 分配理由:职责匹配
- 连续性:attempts 1-3 ended before product writes; attempt-4 is a clean redispatch from contract-r2 and source e9fe1bc
- 工作区:`/Users/wusumac/Documents/game/tmp/aetherbound-guild-worktrees/p91-runtime-foundation`(分支:`agent/abg-p91-runtime-foundation`)
- Runtime requested:`runtime=hapi; flavor=codex; model=gpt-5.6-sol; effort=xhigh; permission=yolo; visibility=visible`
- Runtime observed:`runtime=hapi; flavor=codex; model=gpt-5.6-sol; effort=xhigh; permission=yolo; visibility=visible`
- Runtime verification:`VERIFIED pre-redispatch; verification 41d0e0b0-a471-41b5-9450-2819583b58e6; message watermark seq 125`
- Session evidence:`HAPI c70ab47f-b764-42a1-b4b5-2eab342e8b25; PID 31232; runtime-evidence.json`
- Dispatch bootstrap:`dispatch.md`
- Dispatch message:`SENT: dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 via HAPI c70ab47f after pre-redispatch verification 41d0e0b0`
- Identity ACK:`VERIFIED: IDENTITY_READY dispatch_id=dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 role=role:p91-runtime-foundation-developer team_revision=rev-p9.1-1 goal=task:ABG-P9.1-RUNTIME-FOUNDATION context_revision=p91-runtime-foundation-r4`
- 完整启动方式:派发预览批准后由所选 runtime 控制面生成
## 报告协议
- 完成、失败或阻塞时通知 PMO,并引用任务号、legal terminal 和证据路径。
- worker 不修改 PMO 管理的 queue ledger、STATUS 或角色注册表。
## 验收标准(证据门)
- [ ] Introduce exactly one authoritative FirstSessionState and FirstSessionService with immutable snapshots and atomic command results
- [ ] Extract battle clock, animation, audio, feedback, presenter and widgets without changing accepted values, timing, pixels or input behavior
- [ ] Keep main.gd as a thin RuntimeShell/facade and add no P9.1-only gameplay branch
- [ ] Leave old run_state.gd and old p9_1_* tests unchanged and excluded from the foundation pass claim
- [ ] Run the exact 22 contract-listed R10 scripts serially with unique markers and strict diagnostics zero
- [ ] Rerun the four named 844x390 presentation regressions and compare accepted behavior
- [ ] Commit and push only the owned paths; worktree clean/upstream; no owned process remains
## Frozen(禁止触碰,明确列出)
- Do not implement the six-pair P9.1 downstream gameplay matrix, new screens or new test expectations
- Do not change assets, paid generation, product values, timing, copy, node names or accepted P9.0 assertions
- Do not edit PMO TaskGraph files, checkpoint, ledger, packaging, devices, stores or release files
## Estimate
foundation extraction 4-6h; exact regression and presentation gate 1-2h; confidence medium
## 完成时交付
- graph 节点约定的 produces
- 验收证据与残余风险
## Developer Completion
- Legal terminal: `ABG-P9.1-RUNTIME-FOUNDATION candidate ready`
- Candidate: `c33c3042b10a1079674859a3f37b6d1fe3140c77`
- Evidence: `/tmp/abg-p91-foundation-final-candidate-22.aP23Ws`
- Result: exact 22 scripts pass with strict diagnostics zero; four 844x390 groups / 30 frames match the activation baseline byte-for-byte; pure-domain contract passes; worktree is clean/upstream with no owned process.
- Open gate: fresh independent Foundation review. This is not final P9.1 integration or Owner acceptance.
## Review Failure And Attempt 2
- Candidate `c33c304` is append-only rejected by reviewer HAPI `9f8ea165-362e-4907-8c67-8aa0ace32fbd`.
- Earliest failed boundary: frozen P9.1 domain IDs must be `retain_loan | add_recruit`; the candidate's new domain API uses legacy `retain_item | recruit_rear`.
- Bounded repair: change new P9.1 contracts/state/service/events to the frozen IDs. Preserve old R1-R10 behavior only through one-way translation inside `runtime/compat/p9_0_root_facade.gd` when legacy callers require it. New domain truth must never accept, store or emit the legacy IDs.
- Re-run the pure-domain contract, exact 22 scripts and all four 844x390 / 30-frame comparisons from the repaired source, then commit/push a new candidate. Do not change content values, UI copy, assets, tests or PMO files.
### Attempt-2 Candidate
- Candidate: `bd505d6188556b5d407bebe9769d1c99e74dc9c1`
- Product delta after R1 FAIL: four authorized files only.
- Evidence: `/tmp/abg-p91-foundation-id-repair-final.HQdpxC`.
- Exact-ID gate: frozen IDs accepted/stored/emitted; legacy IDs rejected by the domain boundary; legacy leaks zero.
- Exact 22 scripts and four 844x390 / 30-frame comparisons pass again; clean/upstream; no owned process.
- Open gate: fresh R2 independent review.
## Final Independent Review Result
- Fixed candidate `bd505d6` failed R5 at the earliest structural contract boundary.
- One successful `open_new_session` command increments revision twice; expected exactly once.
- R5 evidence: `/private/tmp/abg-p91-foundation-r5-evidence.UYsX7a/terminal.txt`, SHA-256 `ae6045c523036e2aeb075303980d8145cdba5961d5b54b8cae13d38f7e510945`.
- This Goal exhausted its two product candidates. A new bounded successor Goal owns the atomicity repair; historical candidates remain append-only.
@@ -0,0 +1,56 @@
# 台账记录:ABG-P9.1-RUNTIME-FOUNDATION
| 字段 | 值 |
|---|---|
| 任务 ID | ABG-P9.1-RUNTIME-FOUNDATION |
| Goal ref | task:ABG-P9.1-RUNTIME-FOUNDATION |
| Goal current path | queue/failed/ABG-P9.1-RUNTIME-FOUNDATION/goal.md |
| Context manifest | context.md |
| Context revision | p91-runtime-foundation-r4 |
| Role ref | role:p91-runtime-foundation-developer |
| Role lifecycle | persistent |
| Role profile | roles/p91-runtime-foundation-developer/ROLE.md |
| Role continuity | attempts 1-3 ended before product writes; attempt-4 is a clean redispatch from contract-r2 and source e9fe1bc |
| Reviewer Role ref | PENDING |
| Reviewer Role profile | PENDING |
| Frozen spec | .agent-taskgraph/spec.md revision p9.1-spec-r2; docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md revision p9.1-contract-r2 |
| Graph node | .agent-taskgraph/graph.yaml#p91_runtime_foundation |
| 依赖/路由 | needs: p91_spec_integration; PASS -> p91_domain_implementation; FAIL -> failed; max_attempts=2 |
| 状态 | failed |
| 负责人 | p91-runtime-foundation-developer |
| 分配理由 | 职责匹配 |
| 轮次 | product 2/2; dispatch recovery 4; prior recovery work zero-write |
| 开始时间 | 2026-08-13T01:31:53+00:00 |
| 最后更新 | 2026-08-13T06:31:00+00:00 |
| 验收结果 | FAIL after attempt-2: R5 proves open_new_session revision delta=2; exactly-once command revision invariant violated |
| 日志指针 | developer evidence /tmp/abg-p91-foundation-id-repair-final.HQdpxC; R5 FAIL /private/tmp/abg-p91-foundation-r5-evidence.UYsX7a/terminal.txt SHA-256 ae6045c523036e2aeb075303980d8145cdba5961d5b54b8cae13d38f7e510945 |
| Runtime requested | runtime=hapi; flavor=codex; model=gpt-5.6-sol; effort=xhigh; permission=yolo; visibility=visible |
| Runtime observed | runtime=hapi; flavor=codex; model=gpt-5.6-sol; effort=xhigh; permission=yolo; visibility=visible |
| Runtime verification | VERIFIED |
| Session ID | c70ab47f-b764-42a1-b4b5-2eab342e8b25 |
| Runtime evidence | runtime-evidence.json |
| Dispatch bootstrap | dispatch.md |
| Dispatch message | SENT: dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 via HAPI c70ab47f after pre-redispatch verification 41d0e0b0 |
| Identity ACK | VERIFIED: IDENTITY_READY dispatch_id=dispatch:ABG-P9.1-RUNTIME-FOUNDATION:attempt-4 role=role:p91-runtime-foundation-developer team_revision=rev-p9.1-1 goal=task:ABG-P9.1-RUNTIME-FOUNDATION context_revision=p91-runtime-foundation-r4 |
| 等待归属 | none; original Goal exhausted two product candidates; successor ABG-P9.1-FOUNDATION-ATOMICITY-H1 owns bounded repair |
## 备注
Prepared from task-manifest.json. Do not hand-edit field names.
## 状态转换历史(追加式)
| 时间 | from -> to | 操作者 | 依据/证据 | 唯一下一步 |
|---|---|---|---|---|
| 2026-08-13T01:31:53+00:00 | created -> inbox | PMO | structured manifest | run pre-dispatch validation |
| 2026-08-13T01:32:48+00:00 | inbox -> inbox | PMO | HAPI runtime VERIFIED; correct cwd/model/effort/yolo; zero-message watermark | commit binding and send Role bootstrap |
| 2026-08-13T01:36:00+00:00 | inbox -> inbox | PMO | attempt-1 IDENTITY_BLOCKED: worker branch predated queue Goal; both worktree and product paths clean | fast-forward branch, verify, send attempt-2 bootstrap |
| 2026-08-13T01:41:00+00:00 | inbox -> active | PMO | HAPI c70ab47f exact attempt-2 IDENTITY_READY after pre-redispatch VERIFIED | fast-forward activation commit, then execute Goal |
| 2026-08-13T02:04:00+00:00 | active -> active | PMO | zero-write terminal exposed PMO's 26-script contract error; retained R10 summary proves exact 22 scripts | freeze contract-r2, require fresh attempt-3 identity, rerun Step 0 |
| 2026-08-13T02:18:00+00:00 | active -> inbox | PMO | attempt-3 found PROJECT/identity records incompletely aligned; product worktree remained clean | commit complete r2/r4 PENDING identity, then verify same HAPI session for attempt-4 |
| 2026-08-13T02:29:45+00:00 | inbox -> inbox | PMO | HAPI reuse VERIFIED at correct cwd/model/effort/yolo; watermark seq 125 | commit binding, fast-forward worker branch, send attempt-4 bootstrap |
| 2026-08-13T02:33:36+00:00 | inbox -> active | PMO | exact attempt-4 IDENTITY_READY observed in HAPI c70ab47f after binding commit 2ae9f84 | fast-forward activation commit, resume Goal, run exact 22-test Step 0 |
| 2026-08-13T04:12:33+00:00 | active -> active | PMO | candidate c33c304 legal terminal; clean/upstream; 13 owned paths; 22/22 strict-clean; independent 30-frame developer comparison | start fresh visible fixed-source Foundation reviewer; do not open downstream yet |
| 2026-08-13T04:31:03+00:00 | active -> active | PMO | Foundation reviewer FAIL: frozen IDs retain_loan/add_recruit differ from new domain API IDs retain_item/recruit_rear | same Goal attempt-2: repair domain IDs, keep legacy IDs only as one-way facade translation, rerun all evidence |
| 2026-08-13T04:45:08+00:00 | active -> active | PMO | repaired candidate bd505d6 clean/upstream; exact-ID negative gate, 22/22 and 30-frame evidence pass | start fresh R2 fixed-source reviewer; do not open downstream |
| 2026-08-13T06:31:00+00:00 | active -> failed | PMO | R5 fresh runtime probe proves open_new_session revision delta=2; two product candidates exhausted | create bounded atomicity successor Goal on same persistent Foundation role; downstream frozen |
@@ -0,0 +1,12 @@
# Completion Report: ABG-P9.1-RUNTIME-FOUNDATION
`ABG-P9.1-RUNTIME-FOUNDATION redesign required: successful-command revision atomicity`
- Candidate 1 `c33c304` failed frozen Guild response IDs.
- Candidate 2 `bd505d6` repaired IDs and passed developer 22-script/30-frame evidence.
- Independent R5 then proved `open_new_session` advances revision by `2`, not exactly `1`.
- R5 terminal evidence SHA-256: `ae6045c523036e2aeb075303980d8145cdba5961d5b54b8cae13d38f7e510945`.
- Original two-candidate Goal is closed. Product source remains clean/upstream on its development branch.
Route: bounded successor `ABG-P9.1-FOUNDATION-ATOMICITY-H1`; Domain/UI/Test
remain frozen until its candidate independently passes.
@@ -0,0 +1,39 @@
{
"status": "VERIFIED",
"phase": "pre-redispatch",
"verification_id": "41d0e0b0-a471-41b5-9450-2819583b58e6",
"goal_ref": "task:ABG-P9.1-RUNTIME-FOUNDATION",
"session_id": "c70ab47f-b764-42a1-b4b5-2eab342e8b25",
"machine_id": "a15888ad-d405-4884-a407-c28ddd8b397c",
"machine_name": "小吴家",
"machine_host": "wusumacdeMac-mini.local",
"pid": "31232",
"flavor": "codex",
"cwd": "/Users/wusumac/Documents/game/tmp/aetherbound-guild-worktrees/p91-runtime-foundation",
"model": "gpt-5.6-sol",
"effort": "xhigh",
"permission": "yolo",
"messages_received": 1,
"message_watermark": {
"latest_page_count": 1,
"latest_message_id": "f0fc7615-db23-4b71-baf1-75c255a665c4",
"snapshot_head_seq": 125,
"snapshot_head_at": 1786587144577,
"epoch": 0,
"captured_at": "2026-08-13T02:29:45.354732+00:00"
},
"active": true,
"thinking": false,
"lifecycle": "running",
"catalog": {
"status": "VERIFIED",
"source": "/api/machines/:id/codex-models",
"checked_at": "2026-08-13T02:29:45.075248+00:00",
"model": "gpt-5.6-sol",
"effort": "xhigh",
"model_supported": true,
"effort_supported": true
},
"evidence": "HAPI Hub session metadata, model catalog, and message watermark",
"verified_at": "2026-08-13T02:29:45.354773+00:00"
}
@@ -0,0 +1,107 @@
{
"task_id": "ABG-P9.1-RUNTIME-FOUNDATION",
"title": "P9.1 behavior-equivalent runtime foundation extraction",
"stage": "implementation-foundation",
"baseline": "e9fe1bcffd4364049e22dc8f697ad1ffe4611a4a",
"branch": "agent/abg-p91-runtime-foundation",
"worktree": "/Users/wusumac/Documents/game/tmp/aetherbound-guild-worktrees/p91-runtime-foundation",
"frozen_spec": ".agent-taskgraph/spec.md revision p9.1-spec-r2; docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md revision p9.1-contract-r2",
"graph_node": ".agent-taskgraph/graph.yaml#p91_runtime_foundation",
"context_revision": "p91-runtime-foundation-r4",
"context_mode": "deep",
"context_items": [
{
"path": "AGENTS.md",
"revision": "0121015",
"reason": "repository execution, evidence and release boundaries"
},
{
"path": ".agent-taskgraph/PROJECT.md",
"revision": "p9.1 profile",
"reason": "confirmed runtime, model and write ownership"
},
{
"path": ".agent-taskgraph/spec.md",
"revision": "p9.1-spec-r2",
"reason": "frozen stage topology and scope"
},
{
"path": "docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md",
"revision": "p9.1-contract-r2",
"reason": "reconciled foundation paths, APIs and exact accepted 22-script regression gate"
},
{
"path": "docs/runtime/p9_1/RUNTIME_ARCHITECTURE_SPEC.md",
"revision": "7bc871d",
"reason": "detailed extraction order and rollback criteria"
},
{
"path": "runtime/main.gd",
"revision": "41204ac product authority",
"reason": "accepted monolithic runtime to extract behavior-equivalently"
},
{
"path": "runtime/tests/",
"revision": "P9.0R1-R10 accepted",
"reason": "exact contract-listed regressions and facade seams"
},
{
"path": "docs/runtime/PHASE9_0R10_PAIR_ADAPTATION_CONTRACT.md",
"revision": "P9.0R10",
"reason": "latest accepted product behavior boundary"
}
],
"role_id": "p91-runtime-foundation-developer",
"role_lifecycle": "persistent",
"role_responsibility": "Extract one authoritative runtime state, command, snapshot, clock, presenter and compatibility boundary without changing accepted P9.0 behavior",
"role_continuity": "attempts 1-3 ended before product writes; attempt-4 is a clean redispatch from contract-r2 and source e9fe1bc",
"runtime_requested": {
"runtime": "hapi",
"flavor": "codex",
"model": "gpt-5.6-sol",
"effort": "xhigh",
"permission": "yolo",
"visibility": "visible"
},
"objective": "Behavior-equivalently extract the architect-defined P9.1 foundation from runtime/main.gd, keep one mutable source of truth, preserve the complete accepted P9.0R1-R10 surface, and leave stable disjoint APIs for later domain, UI and test workers.",
"needs": [
"p91_spec_integration"
],
"consumes": [
"p9.1-contract-r2",
"P9.0R10 fixed runtime source",
"exact accepted 22-script R10 regression manifest"
],
"produces": [
"architect-defined foundation files and clean pushed foundation candidate"
],
"writes": [
"runtime/main.gd",
"runtime/domain/p9_1/contracts.gd",
"runtime/domain/p9_1/session_state.gd",
"runtime/domain/p9_1/session_service.gd",
"runtime/domain/p9_1/battle_fixture.gd",
"runtime/presentation/",
"runtime/ui/session_presenter.gd",
"runtime/ui/widgets.gd",
"runtime/compat/p9_0_root_facade.gd"
],
"pass_route": "p91_domain_implementation",
"fail_route": "failed",
"max_attempts": 2,
"acceptance": [
"[ ] Introduce exactly one authoritative FirstSessionState and FirstSessionService with immutable snapshots and atomic command results",
"[ ] Extract battle clock, animation, audio, feedback, presenter and widgets without changing accepted values, timing, pixels or input behavior",
"[ ] Keep main.gd as a thin RuntimeShell/facade and add no P9.1-only gameplay branch",
"[ ] Leave old run_state.gd and old p9_1_* tests unchanged and excluded from the foundation pass claim",
"[ ] Run the exact 22 contract-listed R10 scripts serially with unique markers and strict diagnostics zero",
"[ ] Rerun the four named 844x390 presentation regressions and compare accepted behavior",
"[ ] Commit and push only the owned paths; worktree clean/upstream; no owned process remains"
],
"frozen": [
"Do not implement the six-pair P9.1 downstream gameplay matrix, new screens or new test expectations",
"Do not change assets, paid generation, product values, timing, copy, node names or accepted P9.0 assertions",
"Do not edit PMO TaskGraph files, checkpoint, ledger, packaging, devices, stores or release files"
],
"estimate": "foundation extraction 4-6h; exact regression and presentation gate 1-2h; confidence medium"
}