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>
65 lines
2.8 KiB
Markdown
65 lines
2.8 KiB
Markdown
# 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
|
|
|
|
```text
|
|
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.
|