docs: open P9.0R4 second cycle

This commit is contained in:
2026-08-13 01:23:31 +08:00
parent 232e3a0a45
commit 05cc64279d
5 changed files with 236 additions and 6 deletions
+9 -3
View File
@@ -10,12 +10,18 @@ Runtime source belongs under `runtime/`; accepted HTML design authority remains
under `prototype/` and may not be silently rewritten to fit implementation.
P9.0R3 is the Owner-accepted baseline for tutorial-battle pacing and
event-bound combat feedback inside the preserved Title -> Guild Yard ->
tutorial battle -> victory flow. Its source is frozen.
tutorial battle -> victory flow. Its source is frozen. P9.0R4 is the only
active runtime slice: diagnose that first victory, apply the existing 20-Coin
Steady payout, choose one of two run-local loaned adaptations, and see the
consequence in one second short battle. It uses a fast H5 preview before full
candidate evidence so Owner direction can be reviewed without waiting for a
complete matrix on every iteration.
It shortens dead holds between accepted authored animation states and adds
bounded damage/heal number pops, impact nudge and existing VFX timing without
changing HP results, roles, victory, animation assets or the opening flow.
Contract, difficulty, Market, equipment, Party order, authoritative combat,
persistence, chapters, device packaging, stores and release remain frozen.
Contract, difficulty, Market, permanent equipment inventory, Party order,
authoritative combat, persistence, chapters, device packaging, stores and
release remain frozen.
## Originality Boundary
+20 -3
View File
@@ -1,13 +1,30 @@
# Current Checkpoint
Active Goal: `docs/goals/PHASE9_0R3_BATTLE_FEEDBACK_GOAL.md`
Active contract: `docs/runtime/PHASE9_0R3_BATTLE_FEEDBACK_CONTRACT.md`
Active Goal: `docs/goals/PHASE9_0R4_SECOND_CYCLE_ADAPTATION_GOAL.md`
Active contract: `docs/runtime/PHASE9_0R4_SECOND_CYCLE_ADAPTATION_CONTRACT.md`
Active ledger: `docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md`
P9.0R4 baseline: `232e3a0a45ec2437ddd528502d487d5264f1c6ae`
Animation repair baseline: `db75a17ce8b0a3bc702ad535fa16491debf582e4`
Fixed product source: `425fae82d3d88a002bdaadeabb498d8bf0d069cd`
Battle-feedback behavior commit: `3b26b3d671ae7d043ab4bfcbd8b31e77df6d6d0d`
Battle-feedback baseline: `be17debf4ed3ebe5c3e6de2701d5e3c374de1dcb`
Stage: `P9_0R3_OWNER_ACCEPTED`
Stage: `P9_0R4_SECOND_CYCLE_ADAPTATION_ACTIVE`
P9.0R4 owns only the first-result diagnosis, the existing `B0/R1/Q0` Steady
`+20 Coin` payout, one unselected choice between run-local loaned `EQ-002` and
`EQ-061`, and one second tutorial battle whose survival/time consequence is
visible. The accepted first battle remains unchanged. Market, permanent
inventory, Party order, casualty/recovery, persistence, chapters, authoritative
combat, packaging and release stay frozen.
This milestone uses a two-stage review cadence. First publish a fast H5 preview
after its focused test, one `844x390` normal-render route and strict scan. Only
after Owner direction acceptance run the complete candidate regressions,
matrices, both route recordings, immutable inventory, PCK/browser and final
Gallery gates. Shortest next action: implement the bounded second-cycle loop
without reopening P9.0R3.
## P9.0R3 Owner-Accepted Baseline
Fixed clean/upstream source `425fae8` tightens the six-phase automatic battle
from the prior `13.50` seconds to `7.25` declared / `7.33` rendered seconds.
@@ -0,0 +1,117 @@
# Phase 9.0R4 Second-Cycle Adaptation Goal
## Owner Decision And Role
On 2026-08-13 the Owner accepted the P9.0R3 battle cadence, authored character
motion and event-bound combat feedback, asked development to continue, and
reported that waiting for each playable delivery is too slow.
- Role: development task.
- Repository: `aetherbound_guild` only.
- Baseline: clean/upstream P9.0R3 Owner-acceptance closure `232e3a0`.
- Fixed accepted product source:
`425fae82d3d88a002bdaadeabb498d8bf0d069cd`.
- Active contract:
`docs/runtime/PHASE9_0R4_SECOND_CYCLE_ADAPTATION_CONTRACT.md`.
- Active ledger: `docs/reviews/PHASE9_GODOT_VERTICAL_SLICE_LEDGER.md`.
## Player Hypothesis
After the first automatic battle, a new player can identify the causal lesson,
understand the earned reward, choose between safety and tempo, and see that
choice change a second battle without opening a form-like Market or inventory.
The bounded loop is:
`first battle -> diagnosis -> +20 Coin -> two-option adaptation -> second battle -> changed result`
## Owned Slice
1. Replace the first-victory terminal with a readable diagnosis that names the
selected front/rear roles and their committed contribution before totals.
2. Bind the tutorial fight to the existing `B=0/R=1/Q=0` Steady reward formula:
`battle_coin = floor(18 + 2) = 20`. Apply it once on first victory.
3. Show the next known threat before preparation: the veteran Riftblade's first
strike pushes and heavily damages the exposed front.
4. Offer exactly two stable, unselected, run-local loan choices from the
accepted equipment catalog:
- `EQ-002 Frontpin Greaves`: resist the first push and reduce its damage, but
delay the next front basic;
- `EQ-061 Early Bell`: resolve the first front basic before the enemy strike,
but delay the second front basic and accept the full strike.
5. Commit exactly one loan, start one second automatic battle using the accepted
actors, animation states, feedback language and controls, then show the exact
surviving front HP, elapsed battle time and first decisive difference.
6. Keep Home and confirmed Restart available throughout. Restart clears Coin,
adaptation and both battles; repeated input cannot grant Coin or commit the
loan twice.
## Fixed Second-Cycle Fixture
The second encounter is a bounded tutorial veteran using the existing
Riftblade identity and assets. It is not a new catalog enemy or authoritative
full-combat implementation.
| Loan | First decisive change | Front result | Cadence consequence |
|---|---|---|---|
| `EQ-002` | First push is resisted; committed hit is `100 -> 90` | `90`, or `100` after Kindhand's capped heal | Front follow-up resolves later; safer route is slower |
| `EQ-061` | Front basic commits before the first enemy strike | Full strike commits `100 -> 70`, then Kindhand may heal to `82` | Delayed second front basic still produces the faster route |
Farstring keeps one committed rear hit; Kindhand keeps one committed heal. Both
adaptations win this tutorial, but one preserves more front HP and the other
finishes sooner. The result must compare only actual committed facts.
## Preview-First Delivery Cadence
P9.0R4 uses two explicit gates so the Owner can judge direction quickly:
1. `FAST_PREVIEW`: run the new focused domain/UI test, one normal-render
landscape route and strict diagnostic scan; export and publish a clearly
labeled H5 preview. This is not a candidate and cannot upgrade final evidence.
2. `FORMAL_CANDIDATE`: only after the Owner accepts the preview direction, bind
a clean pushed source and run affected regressions, required viewport/
language/accessibility matrices, both adaptation routes, MovieWriter,
immutable inventory, PCK scope, browser verification and final Gallery
publication.
No formal evidence is silently omitted. Expensive evidence is postponed until
the product direction is accepted instead of being regenerated for every
preview revision.
## Frozen
- P9.0R3 first-battle HP values, roles, targets, event order, victory and timing.
- Existing character, enemy, background, VFX and animation source assets.
- Title, Yard selection, Home and confirmed Restart semantics.
- Market, recruit hiring, permanent equipment inventory, Party order, risk
selection, casualty, recovery, persistence, chapters and content expansion.
- Authoritative full combat, paid generation, audio expansion, device packaging,
TestFlight, stores and release.
## Acceptance
- The diagnosis precedes the reward and adaptation choice and uses no raw IDs as
its primary player explanation.
- Coin changes `0 -> 20` exactly once on first victory and never on view/replay.
- Neither adaptation is preselected. Each names benefit, tradeoff and expected
next-threat interaction before commit.
- The two routes produce different event order, front HP and elapsed time while
preserving one victory and exact feedback deltas.
- The second result names what changed because of the selected loan and offers
Replay and Home without opening the frozen Market.
- The fast preview is playable in phone landscape and is clearly reported as
direction-review evidence rather than a fixed candidate.
## Legal Terminals
Preview:
`Aetherbound Guild P9.0R4 fast H5 preview ready`
Formal candidate after Owner direction acceptance:
`Aetherbound Guild P9.0R4 second-cycle adaptation candidate ready`
or
`Aetherbound Guild P9.0R4 redesign required: <earliest failed player boundary>`
@@ -24,3 +24,4 @@ separate.
| 2026-08-12 | source `425fae8`; `p9-0r3-425fae8-attempt03` | `INVALID_WEB_EXPORT_TEMPLATE_HOME` | Product, capture, recordings and normal audio-lifecycle test passed, but isolated Web export stopped before packaging because its HOME did not expose the installed Godot 4.6.1 templates. This was an export-environment failure, not a product failure, and the attempt was not reused. |
| 2026-08-12 | fixed source `425fae8`; `p9-0r3-425fae8-attempt04`; Gallery `_N8bdzMkdn1c` | `P9_0R3_BATTLE_FEEDBACK_CANDIDATE_READY` | Fresh isolated archive passes feedback `duration=7.25 values=-18,-12,-36,+12,-30,-34 once=true`, default audio lifecycle, P9.0R2 animation and P9.0R1 domain/touch/layout regressions. Eighteen normal-render frames cover three landscape viewport/locale/text profiles. Two `1280x720`, 30 fps H.264 recordings run `15.233333` seconds with battle victory at `7.33` seconds, all four route payloads, visible victory holds and no teardown gray. Strict diagnostics are zero. The 65-row inventory SHA-256 is `d1040cec77d3cc63e8322c63d2df5dcc6ee88c35ab04329d52f6687c5529720a`. Runtime-only PCK excludes tests/evidence, and the nine-file Web manifest SHA-256 is `d48922ed4892e15057284275e237d6ef35dd77201a2c67efd170e870c98225bb`. Local Chrome reaches Title -> Yard -> battle -> victory, portrait rotate guidance and browser diagnostics zero; remote HTML/JS/WASM/PCK identity, MIME and bytes pass. Human phone feel/readability, fun, listening, device, packaging, store and release remain open. |
| 2026-08-13 | Owner play review of Gallery `_N8bdzMkdn1c` | `P9_0R3_OWNER_ACCEPTED` | Owner reports that this version is acceptable and authorizes continued development. The accepted P9.0R3 battle cadence, character motion and event-bound damage/heal feedback become the frozen `human_reviewed` direction. Listening, broader fun/continuation, physical device, packaging, store and release remain open. The next slice must start from the first victory and prove one readable adaptation before a strategically different second battle; it may not reopen accepted battle values or presentation. |
| 2026-08-13 | P9.0R4 task opened from clean/upstream `232e3a0` | `P9_0R4_SECOND_CYCLE_ADAPTATION_ACTIVE` | Owner authorizes continued development and requests faster playable review. The bounded slice is first-result diagnosis, existing Steady `B0/R1/Q0` `+20 Coin`, unselected loan choice `EQ-002` safety versus `EQ-061` tempo, one changed second battle and exact consequence. A fast H5 preview follows focused plus one-route runtime validation; complete immutable candidate evidence waits for Owner direction acceptance. P9.0R3 and all frozen Market/persistence/content/release scope remain unchanged. |
@@ -0,0 +1,89 @@
# Phase 9.0R4 Second-Cycle Adaptation Runtime Contract
## State Machine
```text
first_battle
-> first_result_diagnosis_and_coin
-> adaptation_unselected
-> adaptation_selected
-> second_battle
-> second_result
```
`first_result_diagnosis_and_coin` commits the existing Steady `B0/R1/Q0`
victory Coin exactly once. Viewing or leaving any page does not mutate Coin.
The adaptation is reversible until `Begin second battle`; after that it is
locked for the encounter.
## First Result
The cause line is derived only from committed P9.0R3 facts:
- Hearthguard: first strike `-18`, explicitly blocked;
- Wayrunner: first strike `-12`, explicitly evaded/reduced;
- Farstring: one rear hit `-36` opened the finish;
- Kindhand: one heal `+12`, capped by current front HP.
The player sees the cause before `+20 Coin`, current front HP and the next
action. The result does not claim casualty, reward draft, Market or persistence.
## Adaptation Choice
| Stable ID | Player-facing promise | Tradeoff | Recommended when |
|---|---|---|---|
| `EQ-002` | Anchor the front against the veteran's first push; first hit becomes `-10` | The next front basic resolves after the rear action | No rear healer is present or survival is preferred |
| `EQ-061` | Resolve the first front basic before the veteran strikes | Full `-30` strike lands and the second front basic is delayed | Kindhand can recover the hit or speed is preferred |
Recommendation is explanatory, never selection. Both buttons remain equally
reachable and the selected state can be changed before commit.
## Second Battle Event Map
### `EQ-002` safer route
1. both lines enter;
2. veteran telegraphs a pushing strike;
3. Frontpin resists displacement and the front commits `100 -> 90` (`-10`);
4. Farstring commits enemy `100 -> 64` (`-36`) or Kindhand commits front
`90 -> 100` (`+10`, exact capped heal);
5. delayed front/rear coordination commits enemy to `34`;
6. finisher commits enemy `34 -> 0`.
### `EQ-061` faster route
1. both lines enter;
2. Early Bell advances the first front basic and commits enemy `100 -> 72`
(`-28`) before the strike;
3. the full pushing strike commits front `100 -> 70` (`-30`);
4. Farstring commits enemy `72 -> 36` (`-36`) or Kindhand commits front
`70 -> 82` (`+12`);
5. the delayed second front basic commits enemy to `24`;
6. finisher commits enemy to `0`.
Every HP mutation emits one matching P9.0R3 feedback payload. Non-mutating
telegraph/recovery states emit no number. Existing animations may be retimed or
reordered but their source frames cannot change.
## Presentation
- Result and preparation remain battlefield scenes, not receipt tables or
nested cards.
- The two loan choices read as physical tactical plinths with a familiar shield
and bell/tempo symbol, exact effect, cost `借用/Loan`, and one tradeoff.
- The known threat and current two-person squad stay visible with the choice.
- Second result leads with `更稳/Safer` or `更快/Faster`, then shows exact front
HP and elapsed time. It never says one route is globally best.
- `844x390` is the primary fast-preview viewport; content must not require
scrolling. Portrait retains the rotate notice.
## Preview Evidence
- Focused test covers once-only Coin, no preselection, selection revision,
commit lock, both route event maps, exact HP, distinct elapsed time, Restart
and Home cleanup.
- One normal-render `844x390` Simplified-Chinese route captures first result,
unselected adaptation, selected adaptation, second battle and second result.
- Logs are scanned for script, parse/resource/import, assertion, ObjectDB and
cleanup markers.
- The exported H5 is labeled preview. It is not immutable candidate evidence.