193 lines
10 KiB
YAML
193 lines
10 KiB
YAML
version: 1
|
|
batch:
|
|
id: "abg-p9-1-continuous-development-01"
|
|
revision: "graph-p9.1-r3"
|
|
spec: ".agent-taskgraph/spec.md"
|
|
spec_revision: "p9.1-spec-r2"
|
|
approved_by: "Owner"
|
|
approved_at: "2026-08-13"
|
|
max_concurrency: 3
|
|
|
|
nodes:
|
|
- id: "p91_game_design"
|
|
title: "Design arbitrary-party complete first session"
|
|
kind: "expert"
|
|
goal_ref: "task:ABG-P9.1-GAME-DESIGN"
|
|
needs: []
|
|
consumes: [".agent-taskgraph/spec.md", "docs/runtime/PHASE9_0R10_PAIR_ADAPTATION_CONTRACT.md", "docs/product/GAME_PRODUCT_CONTRACT.md"]
|
|
produces: ["docs/runtime/p9_1/GAMEPLAY_EXPERIENCE_SPEC.md"]
|
|
writes: ["docs/runtime/p9_1/GAMEPLAY_EXPERIENCE_SPEC.md"]
|
|
acceptance: ["All six starting pairs complete five battles", "Guild response, route and growth values change with actual party state", "No frozen system or content expansion"]
|
|
on_pass: "p91_spec_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_ux_visual_design"
|
|
title: "Design P9.1 screens, states and causal presentation"
|
|
kind: "expert"
|
|
goal_ref: "task:ABG-P9.1-UX-VISUAL"
|
|
needs: []
|
|
consumes: [".agent-taskgraph/spec.md", "docs/runtime/PHASE9_0R10_PAIR_ADAPTATION_CONTRACT.md", "docs/presentation/UI_AND_VISUAL_SYSTEM.md"]
|
|
produces: ["docs/runtime/p9_1/UX_VISUAL_FLOW_SPEC.md"]
|
|
writes: ["docs/runtime/p9_1/UX_VISUAL_FLOW_SPEC.md"]
|
|
acceptance: ["Every P9.1 screen and state has one readable primary action", "Chinese causal copy and landscape hierarchy are explicit", "Motion and accessibility preserve accepted combat feedback"]
|
|
on_pass: "p91_spec_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_technical_architecture"
|
|
title: "Design modular runtime architecture and migration"
|
|
kind: "expert"
|
|
goal_ref: "task:ABG-P9.1-TECH-ARCH"
|
|
needs: []
|
|
consumes: [".agent-taskgraph/spec.md", "P9.0R10 runtime architecture baseline", "P9.0R1-R10 test architecture baseline"]
|
|
produces: ["docs/runtime/p9_1/RUNTIME_ARCHITECTURE_SPEC.md"]
|
|
writes: ["docs/runtime/p9_1/RUNTIME_ARCHITECTURE_SPEC.md"]
|
|
acceptance: ["State ownership and APIs are executable", "Extraction preserves P9.0R10 behavior", "Later developer write scopes do not overlap"]
|
|
on_pass: "p91_spec_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_spec_integration"
|
|
title: "Integrate and freeze P9.1 implementation contract"
|
|
kind: "merge"
|
|
goal_ref: "task:ABG-P9.1-SPEC-INTEGRATION"
|
|
needs: ["p91_game_design", "p91_ux_visual_design", "p91_technical_architecture"]
|
|
consumes: ["docs/runtime/p9_1/GAMEPLAY_EXPERIENCE_SPEC.md", "docs/runtime/p9_1/UX_VISUAL_FLOW_SPEC.md", "docs/runtime/p9_1/RUNTIME_ARCHITECTURE_SPEC.md"]
|
|
produces: ["docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md"]
|
|
writes: ["docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md"]
|
|
acceptance: ["Product, presentation and architecture terms agree", "All implementation values and boundaries are frozen", "No unresolved decision is delegated to a developer"]
|
|
on_pass: "p91_runtime_foundation"
|
|
on_fail: "failed"
|
|
max_attempts: 1
|
|
|
|
- id: "p91_runtime_foundation"
|
|
title: "Extract behavior-equivalent runtime foundations"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-RUNTIME-FOUNDATION"
|
|
needs: ["p91_spec_integration"]
|
|
consumes: ["docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md", "P9.0R10 fixed runtime source"]
|
|
produces: ["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"]
|
|
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"]
|
|
acceptance: ["The exact accepted 22-script P9.0R10 summary remains green", "P9.0R1-R10 declared behavior remains equivalent", "Shared state has one owner", "Parallel extension APIs compile and are covered"]
|
|
on_pass: "p91_foundation_atomicity_h1"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_foundation_atomicity_h1"
|
|
title: "Repair Foundation successful-command revision atomicity"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-FOUNDATION-ATOMICITY-H1"
|
|
needs: ["p91_runtime_foundation"]
|
|
consumes: ["bd505d6 rejected candidate", "R5 FAIL evidence ae6045c5", "docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md"]
|
|
produces: ["Foundation atomicity repair candidate"]
|
|
writes: ["runtime/domain/p9_1/session_state.gd", "runtime/domain/p9_1/session_service.gd", "runtime/tests/p9_1/foundation_atomicity_test.gd"]
|
|
acceptance: ["Every successful public command increments revision exactly once", "Rejected commands preserve snapshot and revision", "Exact IDs remain frozen", "Exact accepted 22-script regressions and four-group/30-frame presentation equivalence pass"]
|
|
on_pass: "p91_domain_implementation"
|
|
on_fail: "failed"
|
|
max_attempts: 1
|
|
|
|
- id: "p91_representative_visual_slice"
|
|
title: "Produce the bounded first-battle visual slice"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-VISUAL-SLICE"
|
|
needs: ["p91_spec_integration"]
|
|
consumes: ["docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md", "docs/runtime/p9_1/UX_VISUAL_FLOW_SPEC.md", "accepted P9.0R3-R10 visual assets"]
|
|
produces: ["docs/runtime/p9_1/visual_slice/"]
|
|
writes: ["docs/runtime/p9_1/visual_slice/"]
|
|
acceptance: ["Formation-to-diagnosis composition reads at 844x390", "Paid generation stays within four calls and USD 5", "Prompts, task IDs, costs and hashes are recorded", "No runtime integration or bulk asset expansion"]
|
|
on_pass: "p91_runtime_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_domain_implementation"
|
|
title: "Implement arbitrary-party P9.1 domain flow"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-DOMAIN"
|
|
needs: ["p91_foundation_atomicity_h1"]
|
|
consumes: ["runtime/domain/p9_1/session_service.gd", "runtime/domain/p9_1/session_state.gd", "docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md"]
|
|
produces: ["runtime/domain/p9_1/content/", "runtime/domain/p9_1/rules/"]
|
|
writes: ["runtime/domain/p9_1/content/", "runtime/domain/p9_1/rules/"]
|
|
acceptance: ["Six-pair deterministic state matrix passes", "Transactions commit exactly once", "No Control-tree or frame-rate dependency"]
|
|
on_pass: "p91_runtime_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_ui_implementation"
|
|
title: "Implement P9.1 Godot screens and feedback"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-UI"
|
|
needs: ["p91_foundation_atomicity_h1"]
|
|
consumes: ["runtime/ui/session_presenter.gd", "runtime/ui/widgets.gd", "docs/runtime/p9_1/UX_VISUAL_FLOW_SPEC.md"]
|
|
produces: ["runtime/ui/p9_1/"]
|
|
writes: ["runtime/ui/p9_1/"]
|
|
acceptance: ["All declared screens render from real state", "Chinese first and accessibility variants fit", "Accepted battle movement and feedback are preserved"]
|
|
on_pass: "p91_runtime_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_test_implementation"
|
|
title: "Implement P9.1 tests, matrix and capture harness"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-TESTS"
|
|
needs: ["p91_foundation_atomicity_h1"]
|
|
consumes: ["docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md", "runtime/tests/"]
|
|
produces: ["runtime/tests/p9_1/", "runtime/tests/support/p9_1/"]
|
|
writes: ["runtime/tests/p9_1/", "runtime/tests/support/p9_1/"]
|
|
acceptance: ["Pair-path and negative boundaries are executable", "Parsed touch and layout states are declared", "Strict diagnostics and cleanup are enforced"]
|
|
on_pass: "p91_runtime_integration"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_runtime_integration"
|
|
title: "Integrate the complete P9.1 first session"
|
|
kind: "merge"
|
|
goal_ref: "task:ABG-P9.1-RUNTIME-INTEGRATION"
|
|
needs: ["p91_domain_implementation", "p91_ui_implementation", "p91_test_implementation", "p91_representative_visual_slice"]
|
|
consumes: ["runtime/domain/p9_1/content/", "runtime/domain/p9_1/rules/", "runtime/ui/p9_1/", "runtime/tests/p9_1/", "runtime/tests/support/p9_1/", "docs/runtime/p9_1/visual_slice/"]
|
|
produces: ["P9.1 fixed candidate revision"]
|
|
writes: ["runtime/main.gd", "runtime/project.godot", "runtime/tools/run_p9_1_tests.sh"]
|
|
acceptance: ["Complete five-battle flow works for all pairs", "Full R1-R10 plus P9.1 suite passes", "Normal-render and touch evidence meet the frozen contract"]
|
|
on_pass: "p91_independent_review"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_independent_review"
|
|
title: "Independently review the fixed P9.1 candidate"
|
|
kind: "verifier"
|
|
goal_ref: "task:ABG-P9.1-INDEPENDENT-REVIEW"
|
|
needs: ["p91_runtime_integration"]
|
|
consumes: ["P9.1 fixed candidate revision", "docs/runtime/PHASE9_1_ARBITRARY_PARTY_FIRST_SESSION_CONTRACT.md"]
|
|
produces: ["read-only PASS, FAIL or INVALID terminal"]
|
|
writes: []
|
|
acceptance: ["Review starts from a clean immutable revision", "Every gate is rerun from zero", "Reviewer makes no repair or product write"]
|
|
on_pass: "p91_h5_publish"
|
|
on_fail: "failed"
|
|
max_attempts: 1
|
|
|
|
- id: "p91_h5_publish"
|
|
title: "Export and publish the accepted P9.1 H5"
|
|
kind: "worker"
|
|
goal_ref: "task:ABG-P9.1-H5-PUBLISH"
|
|
needs: ["p91_independent_review"]
|
|
consumes: ["P9.1 fixed candidate revision", "read-only PASS, FAIL or INVALID terminal"]
|
|
produces: ["new private Artifact Gallery item"]
|
|
writes: ["runtime/build/web-preview/"]
|
|
acceptance: ["Runtime-only export excludes tests and evidence", "Remote PCK is source-bound", "Remote Chinese Title loads with zero browser diagnostics"]
|
|
on_pass: "p91_owner_play_gate"
|
|
on_fail: "failed"
|
|
max_attempts: 2
|
|
|
|
- id: "p91_owner_play_gate"
|
|
title: "Owner judges the complete first session"
|
|
kind: "human_gate"
|
|
goal_ref: "decision:ABG-P9.1-OWNER-PLAY"
|
|
needs: ["p91_h5_publish"]
|
|
consumes: ["new private Artifact Gallery item"]
|
|
produces: ["Owner accept or revise decision"]
|
|
writes: []
|
|
acceptance: ["Owner understands the choices and consequences", "Owner judges the first session worth continuing"]
|
|
on_pass: "done"
|
|
on_fail: "failed"
|
|
max_attempts: 1
|