Files
aetherbound-guild/docs/runtime/PHASE9_GODOT_VERTICAL_SLICE_CONTRACT.md
T
wushenghua e7eb408e0e feat: build p9.1 opening market runtime
Implement the bounded Godot opening Company and first-Market preparation flow with deterministic one-shot state, real touch verification, responsive layouts, prototype feedback, and current design regressions.\n\nCo-Authored-By: Codex <noreply@anthropic.com>
2026-08-12 16:47:44 +08:00

2.8 KiB

Phase 9 Godot Vertical Slice Contract

Runtime Envelope

  • Engine: Godot 4.6.1.stable.
  • Project root: runtime/.
  • Orientation: landscape, reference viewport 1280x720, stretch canvas_items.
  • Input: touch-first; mouse is a desktop convenience and not mobile evidence.
  • Languages: Simplified Chinese default and English.
  • Rendering: gl_compatibility, mobile-safe 2D only for P9.1.
  • Offline: no account, analytics, network or purchase dependency.

P9.1 State Machine

contract -> offers -> opening_review -> opening_receipt
  -> market_hire_mael -> market_hire_ilya -> equipment_purchase
  -> equipment_equip -> order -> readiness_receipt

Legal reverse paths before commits are offers-to-contract, opening-review-to- offers, and order revision. Opening, each hire, purchase, equip and readiness commit are one-shot. Repeated input returns the current state and cannot duplicate Recruit, Coin, equipment or receipt mutations.

Fixed Runtime Data

  • Contract: CTR-R1-01 First Crossing.
  • Opening Coin: 52; Company capacity: 4.
  • Stable offers: OFF-01 Elian/Hearthguard, OFF-02 Nia/Farstring, OFF-03 Tomas/Wayrunner, OFF-04 Sable/Kindhand.
  • Market offers: MKT-R1-01 Mael/Hearthguard and MKT-R1-02 Ilya/Farstring, each 14 Coin.
  • Equipment: EQ-012 Open-Line Cord, 12 Coin, explicitly equipped to one current Company member; fixed evidence equips OFF-03 Tomas.
  • Final readiness: Coin 12, Company 4/4; exposed-front direction remains on the right and protected rear on the left in both locales.

Presentation Contract

The opening frame reads in three seconds as a traveling fantasy Company about to cross a dangerous suspended route. Priority is (1) current decision and primary action, (2) Company/Recruits, (3) Coin/capacity/receipt state. Existing accepted candidate scene, actor and equipment assets are reused; they remain candidate production assets, not final art.

Selection must change card border, check mark and count. A transaction must show the old and new resource values, a short visual pulse and a captioned prototype sound cue. Disabled actions are visibly disabled and state why. Reduced motion removes movement but preserves state change. Mute changes no result. No tutorial wall, decorative nested cards or battle content is legal.

Test Contract

  • ABG_P9_1_DOMAIN_OK: state transitions, invalid boundaries, stable IDs, one-shot transactions and exact final values.
  • ABG_P9_1_TOUCH_OK: fresh runtime driven by parsed ScreenTouch events reaches the readiness receipt with fallback/direct count zero.
  • ABG_P9_1_LAYOUT_OK: all declared viewport/language/accessibility fixtures remain within safe bounds.
  • ABG_P9_1_RUNTIME_CAPTURE_OK: normal-render screenshots cover six required states and strict runtime diagnostics are clean.

Tests and tools may not implement product behavior or relax product guards.