301 lines
17 KiB
Markdown
301 lines
17 KiB
Markdown
# P10.2 Siltwake Mid-Contract Implementation Plan
|
|
|
|
> Status: `COMPLETE`
|
|
> Active step: `NONE`
|
|
> Planning baseline: `230ccc5c8032be6e92c59336fec941ccb53558cc`
|
|
> Product predecessor: `47f2028c71215117d5cc37ffc7bb2797d9e9c84c`
|
|
> Goal: `docs/goals/PHASE10_2_SILTWAKE_MID_CONTRACT_GOAL.md`
|
|
> Contract: `docs/runtime/PHASE10_2_SILTWAKE_MID_CONTRACT_CONTRACT.md`
|
|
|
|
## Player-Visible Stopping Point
|
|
|
|
Starting at saved Market 2, the player completes three decision-bearing
|
|
Siltwake Rounds, grows Line capacity from four to six, restores the Reed Ferry
|
|
and reloads at stable Market 5 with the surviving Run state intact.
|
|
|
|
## Ordered Steps
|
|
|
|
<!-- markdownlint-disable MD013 -->
|
|
|
|
| Step | Status | Player outcome | Commit boundary |
|
|
| --- | --- | --- | --- |
|
|
| P10.2-STEP-0 Contract | `COMPLETE` | The three-Round scope and Market-5 stopping point are frozen. | Goal, contract, plan, checkpoint and ledger. |
|
|
| P10.2-STEP-1 Content and boards | `COMPLETE` | Markets 2-4 expose deterministic Recruit, equipment and route decisions with exact previews. | Source `24b22f0`; four fixed-source markers pass strict-clean. |
|
|
| P10.2-STEP-2 Save v8 and repeated Market | `COMPLETE` | Market 2 resumes exactly and Company/Reserve/locks/capacity persist across repeated Markets. | Source `c3d9aa1`; six fixed-source markers pass strict-clean. |
|
|
| P10.2-STEP-3 Three-Round battle arc | `COMPLETE` | Three different pressures make movement, focus and protected center timing matter. | Source `30613bb`; ten fixed-source markers pass strict-clean. |
|
|
| P10.2-STEP-4 Continuous landscape runtime | `COMPLETE` | Parsed touch carries the player from Market 2 through visible Ferry restoration and Market 5. | Source `9692958`; 14 tests, 10 normal frames and one 22.07s recording pass strict-clean. |
|
|
| P10.2-STEP-5 Profiles and candidate | `COMPLETE` | Five policies prove bounded pacing, persistence and no universal response. | Source `f0ae25d`; 16 tests plus one normal matrix pass strict-clean. |
|
|
|
|
<!-- markdownlint-enable MD013 -->
|
|
|
|
## Step Contracts
|
|
|
|
### P10.2-STEP-1 CONTENT AND BOARDS
|
|
|
|
```text
|
|
ID: P10.2-STEP-1
|
|
PLAYER OUTCOME: At Markets 2-4 the player can compare stable Recruit,
|
|
equipment and route offers whose previews explain the next decision.
|
|
IN SCOPE: isolated P10.2 catalog/registry; EN-R2-08..10; EQ-049..56;
|
|
three deterministic 3/4/3 Market boards; nine exact route rows; localized
|
|
names/previews; content, reference, seed, hash, count and formula tests.
|
|
OUT OF SCOPE: state mutation, Save v8, transactions, battle execution,
|
|
presentation, media, H5 and packaging.
|
|
OWNED FILES: runtime/p10_2/catalog.json; runtime/p10_2/content_registry.gd and
|
|
UID; runtime/p10_2/mid_market_generator.gd and UID; focused P10.2 tests and
|
|
UIDs; durable status after the source commit.
|
|
ACCEPTANCE CHECKS: exact IDs and source bindings; same inputs byte-identical;
|
|
Market/refresh changes only owned draws; board shape 3/4/3; risk set 0/1/2;
|
|
route compositions and Coin formulas exact; offer levels/prices exact;
|
|
no unresolved or duplicate reference; malformed fixtures reject; P10.1
|
|
content/Market regressions retain exact markers.
|
|
EVIDENCE LEVEL EXPECTED: automated_verified for content authority.
|
|
COMMIT BOUNDARY: focused source/test push, then durable Step-1 closure.
|
|
LEGAL TERMINAL: P10.2 Step 1 content and boards complete.
|
|
NEXT STEP: P10.2-STEP-2.
|
|
```
|
|
|
|
### P10.2-STEP-2 SAVE V8 AND REPEATED MARKET
|
|
|
|
```text
|
|
ID: P10.2-STEP-2
|
|
PLAYER OUTCOME: Saved Market 2 resumes exactly; hires, Reserve, loadout, order,
|
|
locks and route commitment remain trustworthy through restart.
|
|
IN SCOPE: Save-v7-to-v8 migration; repeated Market state; hire, dismiss, buy,
|
|
sell, equip, lock, refresh, deploy/order, Reserve and route transactions;
|
|
pre-battle checkpoint and interruption-safe persistence.
|
|
OUT OF SCOPE: battle execution, new runtime presentation, media and H5.
|
|
OWNED FILES: isolated P10.2 state/Market/save modules and focused tests.
|
|
ACCEPTANCE CHECKS: exact migration; full success/negative atomicity; Company,
|
|
deployed and Reserve distinction; legal capacity; one equipment slot;
|
|
stable boards/locks; checksum/backup/rollback/corruption; zero offline value;
|
|
P10.1 Save/Market regressions unchanged.
|
|
EVIDENCE LEVEL EXPECTED: automated_verified.
|
|
COMMIT BOUNDARY: focused source/test push, then durable Step-2 closure.
|
|
LEGAL TERMINAL: P10.2 Step 2 Save v8 and repeated Market complete.
|
|
NEXT STEP: P10.2-STEP-3.
|
|
```
|
|
|
|
### P10.2-STEP-3 THREE-ROUND BATTLE ARC
|
|
|
|
```text
|
|
ID: P10.2-STEP-3
|
|
PLAYER OUTCOME: Current Company state changes which of nine routes is rational,
|
|
and each result creates a meaningful next-Market consequence.
|
|
IN SCOPE: Rounds 2-4; seed/Medic/Fogjaw mechanics; nine compositions; Coin,
|
|
XP/level/survival, casualty, recovery, route history, capacity and Ferry
|
|
settlement; fixed counterfactuals and P10.1 regressions.
|
|
OUT OF SCOPE: Artifacts, promotion, later enemies, Boss, presentation and H5.
|
|
OWNED FILES: isolated P10.2 battle/settlement modules and focused tests; minimal
|
|
explicit reuse of read-only P10.1 authority.
|
|
ACCEPTANCE CHECKS: all routes terminate in bounds; exact event causality;
|
|
required movement/focus/center counterfactuals; no universal response;
|
|
rewards/XP/clears/capacity/Ferry apply once; permanent Fallen and bounded
|
|
recovery; interruption restores the exact pre-battle checkpoint.
|
|
EVIDENCE LEVEL EXPECTED: automated_verified plus simulation-ready domain.
|
|
COMMIT BOUNDARY: focused source/test push, then durable Step-3 closure.
|
|
LEGAL TERMINAL: P10.2 Step 3 three-Round battle arc complete.
|
|
NEXT STEP: P10.2-STEP-4.
|
|
```
|
|
|
|
### P10.2-STEP-4 CONTINUOUS LANDSCAPE RUNTIME
|
|
|
|
```text
|
|
ID: P10.2-STEP-4
|
|
PLAYER OUTCOME: The player performs the complete Market-2-to-Market-5 arc in
|
|
the game world and sees growth, pressure, recovery and restoration happen.
|
|
IN SCOPE: direct world targets; Market/Reserve/capacity presentation; route
|
|
previews; accepted battle motion plus new event bindings; settlements;
|
|
Ferry transformation; parsed touch/drag; normal-render fixtures/recording.
|
|
OUT OF SCOPE: new paid media, card/form UI, H5, native package and release.
|
|
OWNED FILES: isolated P10.2 controller/presentation helpers; one narrow main
|
|
handoff; focused runtime/touch/layout/recording tests and UIDs.
|
|
ACCEPTANCE CHECKS: targets >=48px; no card wall; full flow uses parsed
|
|
ScreenTouch/ScreenDrag with fallback/direct zero; new event states are
|
|
causal and return to rest; Ferry transformation and Market-5 handoff visible;
|
|
required layouts/locales/accessibility pass strict diagnostics.
|
|
EVIDENCE LEVEL EXPECTED: runtime_verified and agent_visual_reviewed.
|
|
COMMIT BOUNDARY: focused source/test push, then durable Step-4 closure.
|
|
LEGAL TERMINAL: P10.2 Step 4 continuous landscape runtime complete.
|
|
NEXT STEP: P10.2-STEP-5.
|
|
```
|
|
|
|
### P10.2-STEP-5 PROFILES AND CANDIDATE
|
|
|
|
```text
|
|
ID: P10.2-STEP-5
|
|
PLAYER OUTCOME: The three-Round arc remains understandable, recoverable and
|
|
strategically variable across play styles, layouts and reload points.
|
|
IN SCOPE: five profiles; decision timestamps; anti-dominance; starvation and
|
|
recovery; Save-v8 phase matrix; layout/accessibility matrix; immutable
|
|
source-bound candidate evidence.
|
|
OUT OF SCOPE: product changes unless a declared gate exposes a product failure;
|
|
H5, devices, package, store and release.
|
|
OWNED FILES: bounded P10.2 simulation/matrix tests and UIDs; evidence roots;
|
|
durable closure.
|
|
ACCEPTANCE CHECKS: five distinct policies; explicit decisions and maximum gap
|
|
<=12 seconds outside automatic battle; all routes/mechanics and opposed
|
|
counterfactuals covered; stable Market-5 reload; no negative Coin,
|
|
resurrection or offline reward; required layouts and strict diagnostics;
|
|
clean/upstream source and owned processes zero.
|
|
EVIDENCE LEVEL EXPECTED: simulation_verified plus runtime_verified.
|
|
COMMIT BOUNDARY: focused verification source, immutable evidence and docs-only
|
|
closure, each pushed before the legal terminal.
|
|
LEGAL TERMINAL: Aetherbound Guild P10.2 Siltwake mid-contract candidate ready.
|
|
NEXT STEP: Owner review or a separately activated later product milestone.
|
|
```
|
|
|
|
## Issue Register
|
|
|
|
<!-- markdownlint-disable MD013 -->
|
|
|
|
| ID | Status | Finding |
|
|
| --- | --- | --- |
|
|
| P102-I01 | `RESOLVED_IN_CONTRACT` | P10.1 stores only a Market-2 handoff. Save v8 must migrate it into a generated Market-2 board without changing the first result. |
|
|
| P102-I02 | `RESOLVED_IN_CONTRACT` | Three more Rounds are not a Contract clear. The stopping point is stable Market 5 with four clears and restored Ferry only. |
|
|
| P102-I03 | `RESOLVED_STEP_3` | Isolated P10.2 battle authority preserves P10.1 results while reusing event semantics through the presentation adapter. |
|
|
| P102-I04 | `OPEN_FINAL_MEDIA` | Existing source-bound rigs remain temporary. New media stays frozen until the complete three-Round runtime proves composition and motion. |
|
|
|
|
<!-- markdownlint-enable MD013 -->
|
|
|
|
## Completed Step Evidence
|
|
|
|
### P10.2 Step 1 Content And Boards - 2026-08-15
|
|
|
|
- Source `24b22f01ae3da591f4b0d18ff5fda5e8473cc10b` adds only the
|
|
isolated P10.2 catalog, validator, Market generator, two focused tests and
|
|
their tracked UID files. P10.1 source remains byte-unchanged.
|
|
- The registry exposes eight equipment, three new enemies, nine routes and
|
|
three Markets. All 22 bounded identities have zh_CN/en authority, previews,
|
|
response tags, execution keys and deterministic mechanic signatures.
|
|
- Markets 2-4 generate exact `3/4/3` boards. Recruit slots bind stable future
|
|
materialization keys; equipment is unique and costs 15 Coin; route risks,
|
|
compositions, waves, rewards, recovery costs and tide data are disclosed.
|
|
- Refresh changes Recruit/equipment rows only. Route and tide data never reroll,
|
|
while a changed Run seed changes owned Market identities.
|
|
- Fresh fixed-source R1 evidence is
|
|
`/private/tmp/abg-p102-24b22f0-step1-r1/`. Both P10.2 tests and both P10.1
|
|
content/Market regressions pass with strict diagnostics and owned Godot
|
|
process counts zero. Source archive SHA-256 is
|
|
`d80fa163bd1977e74ad2ac0f9a3f1640f93dd4fad11ade69c8a89e18f14a0eca`;
|
|
the seven-row inventory SHA-256 is
|
|
`980de2713a44c79c0247238e9848e91388c1c095be1aa5cdfea5f4fa08617baf`.
|
|
- Step 1 reaches `automated_verified`. Step 2 alone now owns Save v8, exact
|
|
Market-2 migration and repeated Market transactions.
|
|
|
|
### P10.2 Step 2 Save V8 And Repeated Market - 2026-08-15
|
|
|
|
- Source `c3d9aa12805edd4e7f25dcca2865071e417b3c9b` adds five isolated
|
|
P10.2 modules, one shared fixture, two focused tests and tracked UID files.
|
|
P10.1 source remains byte-unchanged.
|
|
- Save v8 migrates only valid saved Market 2, advances sequence once, binds the
|
|
v7 commit, preserves exact Run/Company/Coin/equipment/history facts and keeps
|
|
checksum, backup, rollback, candidate interruption and zero-offline rules.
|
|
- Repeated Market transactions support Recruit/equipment locks, stable refresh,
|
|
unbounded Company hires, capacity-bounded ordered deployment, Reserve,
|
|
buy/equip/sell, dismissal preview/confirm and one exact pre-battle checkpoint.
|
|
Sixteen applied operations each increment once; seven declared rejection
|
|
branches preserve the complete snapshot.
|
|
- Fresh fixed-source R1 evidence is
|
|
`/private/tmp/abg-p102-c3d9aa1-step2-r1/`. Four P10.2 and two P10.1 markers
|
|
pass with strict diagnostics and owned Godot process counts zero. Source
|
|
archive SHA-256 is
|
|
`6ee413a03d497391359a15d295605f91fbe66fbcc8c00432ac45c450ada544b8`;
|
|
the nine-row inventory SHA-256 is
|
|
`8e585bf988f9f4f915dd45f1fe0a7a5cc4d698ba8878167d8465a9a9f795d777`.
|
|
- The 602660-KiB extracted source/state harness copy was removed after the run;
|
|
the compact evidence root remains 28 KiB and verifies 9/9.
|
|
- Step 2 reaches `automated_verified`. Step 3 alone now owns battle execution,
|
|
settlement, progression, casualty/recovery and Reed Ferry restoration.
|
|
|
|
### P10.2 Step 3 Three-Round Battle Arc - 2026-08-15
|
|
|
|
- Source `30613bb40a16456d47cd923bea6da1ffca731fca` adds isolated
|
|
battle/settlement services and two focused tests while widening only shared
|
|
P10.2 state, locked-board carry and fixture support. P10.1 remains unchanged.
|
|
- All nine routes terminate deterministically on the fixed clock. Hold, move,
|
|
focus and center-guard are preferred by `2/2/3/2` routes; each route has a
|
|
fixed preferred-versus-wrong outcome counterfactual.
|
|
- Drownseed placement/burst or evade, Mire Medic healing/hindrance shortening,
|
|
Fogjaw hidden/center/reveal and existing tide/order pressures are causal
|
|
events. Battle snapshots bind route, board, checkpoint, actors and hashes.
|
|
- Three victories grant exact Coin `24/33/42` and XP `14/20/26`, carry HP,
|
|
preserve locks, grow capacity `4/5/5/6`, record four total route rows and
|
|
restore the Reed Ferry at a Save-v8-stable Market 5.
|
|
- Defeat permanently removes one Recruit, returns equipment, grants bounded
|
|
Credit and half XP to survivors, preserves the Market board and completes
|
|
exact-cost recovery without resurrection.
|
|
- Fresh fixed-source R1 evidence is
|
|
`/private/tmp/abg-p102-30613bb-step3-r1/`. Six P10.2 and four P10.1 markers
|
|
pass with strict diagnostics and owned Godot process counts zero. Source
|
|
archive SHA-256 is
|
|
`0126fbf6f86ba4e4d30a43d4fcac890db199863216c52054276e9ee9dad7ead8`;
|
|
the 13-row inventory SHA-256 is
|
|
`6292b9b5f9ab0494a80e7505991b7fd103e243615c62019e1bd2898230361129`.
|
|
- The 602744-KiB extracted source/state harness copy was removed after the run;
|
|
the compact evidence root remains 44 KiB and verifies 13/13.
|
|
- Step 3 reaches `automated_verified`. Step 4 now owns runtime presentation,
|
|
parsed touch/drag, normal renders and one fixed recording.
|
|
|
|
### P10.2 Step 4 Continuous Landscape Runtime - 2026-08-16
|
|
|
|
- Source `96929580289504e8209b905132b3b40abc5a4c72` adds the isolated
|
|
P10.2 controller and motion adapter, one narrow `runtime/main.gd` handoff,
|
|
four focused runtime programs and tracked UID files. P10.1 source is
|
|
unchanged and fresh Title still uses its accepted controller.
|
|
- Saved P10.1 Market 2 migrates into Save v8; a direct world-first landscape
|
|
carries Market 2 through three plan/battle/settlement transitions to Market
|
|
5. Line/Reserve swaps, equipment inspection, route posts and all four plans
|
|
are real targets; capacity changes `4/5/5/6` and the restored Ferry changes
|
|
hull, deck, posts, mast, flag and lantern before the final handoff.
|
|
- Drownseed countdown/evade/burst, Mire Medic heal/interruption and Fogjaw
|
|
hidden/reveal/center contact consume authoritative events through the
|
|
accepted motion system. Enemy entrance, anticipation, contact, damage text,
|
|
HP change, recovery and terminal settlement remain causal and return to
|
|
rest.
|
|
- Attempt R1 is append-only `INVALID_EVIDENCE_RETENTION` because the successful
|
|
fresh import output was not retained. No R1 execution evidence is reused.
|
|
- Fresh fixed-source R2 is
|
|
`/private/tmp/abg-p102-9692958-step4-r2/evidence/`. Fourteen tests, ten
|
|
normal captures and one MovieWriter run pass with strict diagnostics zero.
|
|
Touch flow records Touch `21` / Drag `1`; recording records Touch `5` / Drag
|
|
`1`; fallback/direct are zero.
|
|
- The `844x390`, 30 FPS recording has 662 frames, lasts `22.066667s` and has
|
|
zero black intervals. MP4 SHA-256 is
|
|
`647615ba8dde9669cd9903ac33698e66e2df7472c37e228b838c6f5636ad83c6`.
|
|
The 40-row inventory verifies completely; inventory SHA-256 is
|
|
`22a8f683693a6b4c304b34d3efb74f0fb3c668749214bdc3952cba4398ccc3d5`.
|
|
- Step 4 reaches `runtime_verified + agent_visual_reviewed`. Step 5 alone now
|
|
owns five profiles, decision timestamps, anti-dominance and the complete
|
|
Save-v8/layout candidate matrix. Human, H5, device and release gates remain
|
|
open or frozen.
|
|
|
|
### P10.2 Step 5 Profiles And Candidate - 2026-08-16
|
|
|
|
- Verification source `f0ae25d081ff8188ecb907759c7b74cb7015e92e`
|
|
adds only five-profile and candidate-matrix tests plus tracked UID files.
|
|
Product runtime bytes remain unchanged from Step-4 source `9692958`.
|
|
- Five distinct policies record 85 decisions across all nine routes and four
|
|
plans. The maximum nonbattle decision gap is `4.0s`; nine fixed
|
|
counterfactuals reverse outcomes. Recovery retains one permanent casualty,
|
|
returning performs six exact Save-v8 reloads and all profiles reach Market 5
|
|
without negative Coin, resurrection or offline rewards.
|
|
- The candidate matrix roundtrips nine Save-v8 states and normally renders 32
|
|
combinations of four viewports, two locales, two text scales and two
|
|
accessibility profiles. Controls remain at least 48px; panels and cards are
|
|
zero.
|
|
- Attempt R1 is append-only `INVALID_EVIDENCE_FINALIZATION_POLICY` because
|
|
execution control rejected its cleanup command before execution. Its
|
|
24-row inventory SHA-256 is
|
|
`89ec98afe306787aa73a56cc60c226b3536b7ce9739d2493f93dd8ee56375677`;
|
|
no R1 execution evidence is reused.
|
|
- Fresh fixed-source R2 is
|
|
`/private/tmp/abg-p102-f0ae25d-step5-r2/evidence/`. Sixteen tests and one
|
|
normal-render matrix pass with strict diagnostics and owned processes zero.
|
|
The 26-row inventory verifies completely; inventory SHA-256 is
|
|
`263ebba5510979ecb37eeb925acf25c8acc2adeb3943b68d520d40ae2c6e1719`.
|
|
- Step 5 reaches `simulation_verified + runtime_verified`; Step-4 agent visual
|
|
evidence remains source-bound because no product runtime byte changed.
|
|
Owner understanding, fun, visual/listening acceptance, H5, device, package,
|
|
store and release remain open or frozen.
|