Files
aetherbound-guild/docs/runtime/p9_1/GAMEPLAY_EXPERIENCE_SPEC.md
T

29 KiB
Raw Blame History

P9.1 Arbitrary-Party Gameplay Experience Specification

Status: expert candidate for P9.1 contract reconciliation Authority: game-design output only; UX/visual and runtime architecture remain separate expert inputs Baseline: P9.0R10 pair adaptation plus the preserved P9.0R5-R7 first-session continuation Review language: Chinese first Scope: one deterministic, non-authoritative five-battle first-session fixture

1. Outcome And Boundary

Every unordered selection of two different Recruits must complete this same player arc:

choose any two -> automatic formation -> battle 1 -> pair diagnosis
-> choose one loan adaptation -> battle 2 -> choose one Guild response
-> battle 3 -> choose and review one route -> battle 4
-> choose and review one member growth -> battle 5 -> first-session result

P9.1 proves that the current four-Recruit fixture supports arbitrary starting pairs. It does not create authoritative combat, economy, XP, inventory, casualty, recovery, save, difficulty, chapter, Market or promotion systems. All battles below are deterministic presentation fixtures. A fixture victory must not be described as proof of balance outside this session.

The implementation must preserve P9.0R3 action pacing and event-bound feedback, P9.0R8 entry behavior, P9.0R9A automatic formation, and every accepted standard pair value explicitly marked as a regression anchor below.

2. Stable Terms And State

2.1 Identity, formation and origins

Stable profession IDs and automatic priority remain:

Hearthguard -> Wayrunner -> Farstring -> Kindhand

The lower priority index is placed nearer the threat. Selection order never changes formation. P9.1 uses these identity terms instead of inferring behavior from a visual slot:

Term Exact meaning
starting_pair The two selected Recruit IDs, normalized by automatic priority.
lead_id The first current member after automatic formation.
initial_second_id The second member of the committed two-Recruit formation; this origin identity never changes.
added_id The one Recruit added by the Guild response, or empty.
field_order Current member IDs sorted by automatic priority after a legal addition.
marked_id initial_second_id; battles 4 and 5 must target this identity, even if adding a Recruit moved its visible position.
member_origin starting or guild_added; it is independent of current field position.

If a Guild addition changes field order, the Guild commit result must name the move before battle 3. In particular, adding Hearthguard to Farstring + Kindhand changes the lead from Farstring to Hearthguard. This is a system re-formation, not a player-selected front/rear decision.

2.2 Profession actions

No branch may use else = Kindhand or derive an action from front, rear, second or added. It must resolve the actual profession ID:

Profession Lv.1 battle response Fifth-battle Lv.2 change
Hearthguard Leads with guard/contact when first in field order. If lead, removes 20 more damage from the lead pressure after item mitigation.
Wayrunner If lead, evades part of contact; otherwise makes one -30 flank counter. If lead, removes 20 more lead damage; if marked_id, removes 20 from its own split damage.
Farstring Makes one ranged hit (-36 in battle 3; -30 in battles 4-5). Moves that one battle-5 shot before pressure and changes time 7.40 -> 6.40; never adds an attack.
Kindhand Makes one recovery action on the member damaged by the current pressure. Changes its battle-5 recovery from +12 to +25; never adds a heal.

Damage and recovery clamp to [0, 100] for Recruit HP and to [0, enemy_max] for enemy HP. Each non-zero mutation emits exactly one number/VFX payload on the actual target. A member acts at most once in each scripted role-action window.

2.3 Required run state

The domain snapshot must be able to express these values without reading a Control tree or render clock:

starting_pair: [member_id, member_id]
lead_id: member_id
initial_second_id: member_id
field_order: [member_id, member_id] | [member_id, member_id, member_id]
added_id: empty | member_id
adaptation_id: empty | EQ-002 | EQ-061
guild_response_id: empty | retain_loan | add_recruit
retained_item_id: empty | EQ-002 | EQ-061
coin: integer
company_size: 2 | 3
route_id: empty | R6-01 | R6-02 | R6-03
trained_member_id: empty | one current member_id
member_level(member_id): 1 | 2
formation_commit_count: 0 | 1
first_reward_committed: bool
adaptation_committed: bool
guild_committed: bool
route_committed: bool
route_reward_committed: bool
training_committed: bool
fifth_reward_committed: bool

One run cannot contain duplicate member IDs or duplicate professions in this bounded fixture.

3. Battles 1 And 2: Preserved Pair Foundation

3.1 All six starting pairs

Battle 1 resets both members to 100 HP, the enemy to 100 HP, and runs for 7.25 s. The existing first reward commits +20 Coin once after enemy HP is zero. These are the required results:

Pair key Lead response Second response Battle-1 lead HP Diagnosis fact
HG-WR Hearthguard blocks -18 (100 -> 82) Wayrunner flank counter 82 防住首击;第二位以侧翼反击补伤害。
HG-FS Hearthguard blocks -18 (100 -> 82) Farstring ranged hit 82 防住首击;第二位以远射打开终结线。
HG-KH Hearthguard 100 -> 82 Kindhand +12 94 防住首击;第二位恢复先行者。
WR-FS Wayrunner evades to 88 Farstring ranged hit 88 闪避减伤;第二位以远射补伤害。
WR-KH Wayrunner 100 -> 88 Kindhand +12, capped 100 闪避减伤;第二位把先行者恢复至满值。
FS-KH Farstring exposed lead 100 -> 58 Kindhand +12 70 远程成员先行而高暴露;治疗只补回部分损失。

The diagnosis names both actual Recruits and their actual actions. The accepted first-battle qualifier 后排命中 remains unchanged where P9.0R3 uses it; later pages say 第二位 or the Recruit name.

3.2 Unselected adaptation and battle 2

The adaptation page always opens with no selection. Both options name the actual lead_id and the same exact counterfactual:

ID Chinese-first option consequence Battle-2 time
EQ-002 钉阵胫甲:先行者只承受 -10;放弃先手。 7.05 s
EQ-061 先鸣铃:敌人先失去 28 生命;先行者承受完整 -30。 6.00 s

Selection and revision mutate only the pending ID. BeginSecondBattle is the single commit. It records one loan, cannot be repeated, and resets battle HP; it never spends Coin. Battle 2 gives no additional Coin.

Pair group EQ-002 final lead HP EQ-061 final lead HP Reason
no Kindhand: HG-WR, HG-FS, WR-FS 90 70 No recovery follows the veteran hit.
has Kindhand: HG-KH, WR-KH, FS-KH 100 82 Kindhand restores +12 after the hit.

Enemy HP reaches zero on every row. Coin remains 20; the first reward count remains one. Wayrunner in second position always counters, Farstring always shoots, and Kindhand always heals.

3.3 Six-pair continuation registry

This registry makes the complete path entitlement explicit. Every row may take either adaptation, either mapped Guild branch, every R6 route, every current member as the one growth target, and must then reach the first-session result.

Starting pair Battle-1 lead HP Battle-2 EQ-002 / EQ-061 HP Retain growth candidates Add growth candidates
HG-WR 82 90 / 70 HG, WR after EQ-002: HG, WR, FS; after EQ-061: HG, WR, KH
HG-FS 82 90 / 70 HG, FS HG, FS, KH
HG-KH 94 100 / 82 HG, KH HG, FS, KH
WR-FS 88 90 / 70 WR, FS WR, FS, KH
WR-KH 100 100 / 82 WR, KH WR, FS, KH
FS-KH 70 100 / 82 FS, KH HG, FS, KH; HG becomes lead

For each cell, routes R6-01, R6-02 and R6-03 are legal. The final result uses the exact HP/time function in section 6.2 and the exact Coin/Company table in section 6.4; no row stops at an earlier preview boundary.

4. Guild Response And Battle 3

4.1 Transaction and unselected state

The Guild page inherits the actual pair, field order, selected loan, 20 Coin and the battle-2 facts. It opens with neither response selected.

The exact unselected guidance template is:

尚未选择。花 12 金币保留【{loan_name}】,继续使用{loan_effect};
或花 14 金币招募【{added_name}】,{addition_effect}。
选择不会扣款;确认出发后才结算,出发前可更改。

The two stable responses are:

ID Atomic commit Persistent consequence in this session
retain_loan coin 20 -> 8; keep the selected loan; Company remains 2. EQ-002 remains a lead-pressure brace; EQ-061 remains a tempo opener.
add_recruit coin 20 -> 6; return the loan; add exactly the mapped Recruit; Company becomes 3. Gains one role action, one later training candidate, and state-dependent route coverage.

The addition is deterministic and must not use the old missing rear fallback:

Starting pair Prior loan added_id field_order after commit addition_effect
HG-WR EQ-002 Farstring HG, WR, FS 增加远射,弥补只有近身回应的阵线;仍没有治疗。
HG-WR EQ-061 Kindhand HG, WR, KH 增加治疗,补回先手装备接受的完整重击;仍没有远射。
HG-FS either Kindhand HG, FS, KH 增加受击后恢复,形成远射与治疗两种支援。
HG-KH either Farstring HG, FS, KH 增加远射;原 Kindhand 保留 starting 身份。
WR-FS either Kindhand WR, FS, KH 增加恢复,保护闪避失败后的阵线。
WR-KH either Farstring WR, FS, KH 增加远射,换取更稳定的击破节奏。
FS-KH either Hearthguard HG, FS, KH Hearthguard 接替先行,修复 Farstring 的高暴露;两名原成员保留身份。

This table is both the offer matrix and the duplicate-prevention allowlist. Any unmapped pair/item, already-present Recruit, insufficient Coin, stale selection or repeated commit is rejected with zero partial mutation.

4.2 Battle-3 event contract

Battle 3 starts all present members at 100 HP and the captain at 130 HP. The deterministic order is:

  1. Retained EQ-061 changes enemy 130 -> 102; otherwise telegraph only.
  2. Captain pressure changes lead to 90 with retained EQ-002, otherwise 70.
  3. Each non-lead profession acts once in field order: Wayrunner -30 enemy, Farstring -36 enemy, Kindhand +12 lead.
  4. A retained two-member build follows up and clamps enemy to at most 44; a three-member build proceeds directly to coordination.
  5. Coordination clamps enemy to 26 for two members or 32 for three.
  6. The finisher changes enemy to 0. Battle 3 gives no Coin.

The accepted durations remain 7.60 s for retained EQ-002, 6.60 s for retained EQ-061, and 7.00 s for an added Recruit.

4.3 Complete battle-3 branch table

Each row represents two legal Guild branches for one pair/adaptation state. HP/time/coin/company are the exact battle-3 result.

Pair Loan Retain result Add result
HG-WR EQ-002 90 / 7.60 / 8 / 2 add FS; 70 / 7.00 / 6 / 3
HG-WR EQ-061 70 / 6.60 / 8 / 2 add KH; 82 / 7.00 / 6 / 3
HG-FS EQ-002 90 / 7.60 / 8 / 2 add KH; 82 / 7.00 / 6 / 3
HG-FS EQ-061 70 / 6.60 / 8 / 2 add KH; 82 / 7.00 / 6 / 3
HG-KH EQ-002 100 / 7.60 / 8 / 2 add FS; 82 / 7.00 / 6 / 3
HG-KH EQ-061 82 / 6.60 / 8 / 2 add FS; 82 / 7.00 / 6 / 3
WR-FS EQ-002 90 / 7.60 / 8 / 2 add KH; 82 / 7.00 / 6 / 3
WR-FS EQ-061 70 / 6.60 / 8 / 2 add KH; 82 / 7.00 / 6 / 3
WR-KH EQ-002 100 / 7.60 / 8 / 2 add FS; 82 / 7.00 / 6 / 3
WR-KH EQ-061 82 / 6.60 / 8 / 2 add FS; 82 / 7.00 / 6 / 3
FS-KH EQ-002 100 / 7.60 / 8 / 2 add HG and reform; 82 / 7.00 / 6 / 3
FS-KH EQ-061 82 / 6.60 / 8 / 2 add HG and reform; 82 / 7.00 / 6 / 3

5. Route Choice And Battle 4

5.1 Offers and state-derived coverage

The route board opens unselected and displays current Company, retained item or added Recruit, known pressure, exposure, reward, coverage state and a causal reason. It never displays future exact HP or marks a recommendation.

Exact unselected guidance:

尚未选择路线。比较已知压力、当前应对与胜利奖励;
选择只会打开复核,确认出发前仍可返回更换。

Each option uses this exact fact order:

【{route_name}】|{pressure_name}|{exposure_label}|胜利 +{reward} 金币
{coverage_label}:{coverage_reason_zh}
ID Pressure Reward
R6-01 风墙长堤 正面粉碎 +4 Coin
R6-02 钟晶疾道 速度爆发 +7 Coin
R6-03 双辉裂谷 标记并分击 marked_id +10 Coin

Coverage is evaluated from actual state:

Route covered partial gap
R6-01 retained EQ-002 directly braces the crush Company 3 with Kindhand recovers after impact all other states
R6-02 retained EQ-061 acts before the burst any Company 3 responds with an extra action after the burst retained two-member state without EQ-061
R6-03 Company 3 contains both Farstring and Kindhand Company 3 lacks one of those roles every two-member state

The reason must name the actual item/member and limitation. Example: 部分应对:赛布尔能在爆发后恢复先行者,但不能打断首次伤害。

Selection mutates only route_id. Review mutates nothing and can return to the same selection. commit_route is the single lock/start boundary and costs no Coin. Reward commits once only after enemy HP is zero.

5.2 Complete battle-4 result function

Battle 4 resets all members to 100 HP and the enemy to 120 HP. The result uses one of these mutually exclusive build rows. KH? means Kindhand is present. FS+KH? means both are present.

Build state R6-01 lead / marked / time R6-02 lead / marked / time R6-03 lead / marked / time
retained EQ-002, no KH 90 / 100 / 7.40 70 / 100 / 8.00 100 / 65 / 7.80
retained EQ-002, KH 100 / 100 / 7.40 82 / 100 / 8.00 100 / 77 / 7.80
retained EQ-061, no KH 60 / 100 / 6.40 70 / 100 / 6.00 100 / 65 / 6.70
retained EQ-061, KH 72 / 100 / 6.40 82 / 100 / 6.00 100 / 77 / 6.70
Company 3, no KH 70 / 100 / 7.00 70 / 100 / 6.80 100 / 65 / 7.00
Company 3, KH but not FS 82 / 100 / 7.00 82 / 100 / 6.80 100 / 77 / 7.00
Company 3, FS + KH 82 / 100 / 7.00 82 / 100 / 6.80 100 / 88 / 7.00

Battle-4 pressure is exact:

  • R6-01: retained EQ-002 deals -10; a three-member line deals -30; retained EQ-061 deals -40. Kindhand then restores +12 to lead.
  • R6-02: pressure deals -30. Kindhand then restores +12 to lead. Retained EQ-061 changes enemy 120 -> 90 before pressure.
  • R6-03: pressure deals -35 to marked_id. Kindhand restores +12; a three-member Farstring + Kindhand line instead performs one combined +23 recovery, preserving the accepted 65 -> 88 anchor.
  • Every non-lead Wayrunner/Farstring performs one actual attack. A closer clamps enemy to 28, then the finisher changes it to 0.

Coin after the once-only route reward is:

Guild branch R6-01 R6-02 R6-03
retained loan 12 15 18
added Recruit 10 13 16

Company size and membership never change at the route boundary.

6. Individual Growth And Battle 5

6.1 Offer contract

Training opens only from a verified battle-4 result with route reward committed. It shows every current member, current field position, origin, profession, current level and exact next-event change. No member is selected initially. An absent member never renders and is illegal.

Exact unselected guidance:

尚未选择历练成员。比较先行承压、标记者生存、射击节奏与恢复;
唯一印记只能让一名当前成员升至 Lv.2,确认前可换人。

Selection mutates only the pending member ID. Review names the same member and one exact counterfactual. commit_training consumes the one bounded veteran mark, changes exactly that member to Lv.2, locks once and starts battle 5. Every other member remains Lv.1.

The Chinese option templates are:

State Exact template
Hearthguard lead 历练【{name}】:正面重压再减少 20;先行者生命 {base_lead} -> {trained_lead}。
Wayrunner lead 历练【{name}】:闪避再减少 20 正面伤害;先行者生命 {base_lead} -> {trained_lead}。
Wayrunner is marked_id 历练【{name}】:自身分裂伤害减少 20;受击后生命 60 -> 80(治疗另行结算)。
Farstring 历练【{name}】:唯一射击提前;不增加次数;用时 7.40 -> 6.40 秒。
Kindhand 历练【{name}】:对受伤标记者的恢复 +12 -> +25。

6.2 Battle-5 calculation

Battle 5 resets each present member to 100 HP and the enemy to 140 HP. The deterministic sequence is:

  1. A trained Farstring performs its only -30 shot (140 -> 110) before pressure.
  2. Lead pressure is -30 with retained EQ-002, otherwise -45. A trained lead Hearthguard/Wayrunner removes another 20.
  3. Split pressure is -40 to marked_id; a trained marked Wayrunner removes 20 from its own hit.
  4. Unspent member actions resolve once. Farstring deals -30; Wayrunner deals -30; Kindhand restores +25 when trained, otherwise +12, to marked_id.
  5. The Company/retained-build closer and finisher change enemy to 0.
  6. Verified victory commits +8 Coin exactly once.

The result functions are therefore:

base_lead_hp = 70 when retained_item_id == EQ-002, otherwise 55
lead_hp = base_lead_hp + 20 only when trained member is current lead
          and profession is Hearthguard or Wayrunner

marked_hp_after_split = 80 only when trained member == marked_id
                        and profession == Wayrunner;
                        otherwise 60
marked_hp = clamp(marked_hp_after_split + kindhand_heal, 0, 100)
kindhand_heal = 25 when Kindhand is trained, 12 when Kindhand is present,
                otherwise 0

time = 6.40 when Farstring is trained, otherwise 7.40
enemy_hp = 0

Route changes inherited Coin and the causal recap, but does not secretly alter this fixed encounter.

6.3 Complete growth-state matrix

Cells use trained member: lead HP / marked HP / time. This table enumerates every distinct state reachable from all six pair paths. Route choice adds Coin per section 6.4 but does not change a cell.

Starting/Guild state Legal training results
HG-WR, retain EQ-002 HG: 90/60/7.40; WR: 70/80/7.40
HG-WR, retain EQ-061 HG: 75/60/7.40; WR: 55/80/7.40
HG-WR, add FS after EQ-002 HG: 75/60/7.40; WR: 55/80/7.40; FS: 55/60/6.40
HG-WR, add KH after EQ-061 HG: 75/72/7.40; WR: 55/92/7.40; KH: 55/85/7.40
HG-FS, retain EQ-002 HG: 90/60/7.40; FS: 70/60/6.40
HG-FS, retain EQ-061 HG: 75/60/7.40; FS: 55/60/6.40
HG-FS, add KH HG: 75/72/7.40; FS: 55/72/6.40; KH: 55/85/7.40
HG-KH, retain EQ-002 HG: 90/72/7.40; KH: 70/85/7.40
HG-KH, retain EQ-061 HG: 75/72/7.40; KH: 55/85/7.40
HG-KH, add FS HG: 75/72/7.40; KH: 55/85/7.40; FS: 55/72/6.40
WR-FS, retain EQ-002 WR: 90/60/7.40; FS: 70/60/6.40
WR-FS, retain EQ-061 WR: 75/60/7.40; FS: 55/60/6.40
WR-FS, add KH WR: 75/72/7.40; FS: 55/72/6.40; KH: 55/85/7.40
WR-KH, retain EQ-002 WR: 90/72/7.40; KH: 70/85/7.40
WR-KH, retain EQ-061 WR: 75/72/7.40; KH: 55/85/7.40
WR-KH, add FS WR: 75/72/7.40; KH: 55/85/7.40; FS: 55/72/6.40
FS-KH, retain EQ-002 FS: 70/72/6.40; KH: 70/85/7.40
FS-KH, retain EQ-061 FS: 55/72/6.40; KH: 55/85/7.40
FS-KH, add HG and reform HG: 75/72/7.40; FS: 55/72/6.40; KH: 55/85/7.40

For add rows shared by both prior loans, the returned loan has no battle-5 effect, but the result history must still retain which adaptation was returned.

6.4 Final resources

Guild branch R6-01 final Coin R6-02 final Coin R6-03 final Coin Company
retained loan 20 23 26 2
added Recruit 18 21 24 3

The final Company has exactly one Lv.2 member, enemy HP 0, and no persistent item/inventory claim beyond the current in-memory session.

7. Result Causality And Next Action

Every result presents action, cause, changed state and next action in that order. Values are substituted from the committed snapshot; UI code must not recompute pair logic.

7.1 Chinese-first result templates

Battle 1 / pair diagnosis

发生了什么:系统让【{lead_name}】先行;{lead_action_zh}。
为什么:【{second_name}】随后{second_action_zh}。
状态变化:先行者 {lead_hp}/100;获得 20 金币(仅一次)。
下一步:比较钉阵胫甲与先鸣铃,选择本队下一战的安全或节奏。

Battle 2 / adaptation result

发生了什么:【{loan_name}】让{loan_action_zh}。
为什么:【{lead_name}】{lead_consequence_zh};【{second_name}】{second_action_zh}。
状态变化:先行者 {lead_hp}/100;用时 {time} 秒;金币仍为 20。
下一步:返回公会,在保留这件装备与招募【{mapped_recruit_name}】之间选择。

Battle 3 / Guild result

发生了什么:你选择了【{guild_response_name}】;{guild_action_zh}。
为什么:{battle3_cause_zh}。
状态变化:先行者 {lead_hp}/100;金币 {coin};小队 {company_size} 人;用时 {time} 秒。
下一步:打开路线板,比较三条路线对当前【{build_summary_zh}】的覆盖与奖励。

Battle 4 / route result

发生了什么:小队通过【{route_name}】,获得 {route_reward} 金币。
为什么:路线压力是【{pressure_name}】;当前构筑为【{coverage_label}】,因为{coverage_reason_zh}。
状态变化:先行者 {lead_hp}/100;【{marked_name}】{marked_hp}/100;金币 {coin};用时 {time} 秒。
下一步:用唯一历练印记选择一名当前成员升至 Lv.2;确认前可返回换人。

Battle 5 / first-session result

发生了什么:【{trained_name}】升至 Lv.2;{training_effect_zh}。
为什么:{battle5_cause_zh};此前【{guild_response_name}】与【{route_name}】分别决定了小队结构和金币。
状态变化:先行者 {lead_hp}/100;【{marked_name}】{marked_hp}/100;金币 {coin};小队 {company_size} 人;用时 {time} 秒。
决定链:{pair_names} -> {loan_name} -> {guild_response_name} -> {route_name} -> 历练 {trained_name}。
下一步:本次首局已结束。可重新开始尝试另一组搭配,或返回主菜单;后续章节尚未开放。

English follows the same fact order and substitutes the same IDs/numbers. It must not shorten away the cause, choice or next action. At 130% text, the copy may wrap but no fact may be removed.

7.2 Unsupported-state truthfulness

If a committed snapshot violates any allowlist or exactly-once precondition, the game must not fabricate a battle or result. It remains on the last valid decision state and exposes a bounded recovery message:

当前选择与小队状态不一致,未进行结算。请返回并重新选择。

No route may enter an old front + rear fallback, label Wayrunner/FS as Kindhand, recruit a duplicate, train an absent member, pay twice, grant a reward before enemy defeat, or navigate to an unimplemented next chapter.

8. Transaction And Exactly-Once Boundaries

Boundary Preconditions Atomic mutations Duplicate/out-of-state behavior
formation commit exactly two distinct allowlisted members; valid automatic order set pair/origins/order; count 0 -> 1; start battle 1 inert
first reward battle-1 enemy 0; not committed coin += 20; flag true inert
adaptation commit adaptation page; one legal loan; not committed lock loan; flag true; start battle 2 inert
Guild commit Guild page; mapped response; enough Coin; not committed revalidate; spend once; retain or add/reform; update Company; flag true; start battle 3 reject with zero partial mutation
route commit review page; legal route; not committed lock state snapshot; flag true; start battle 4 inert
route reward route committed; enemy 0; reward not committed add 4/7/10; flag true inert
training commit review page; member currently present; mark available; not committed consume mark; set that member Lv.2; flag true; start battle 5 reject with zero partial mutation
fifth reward training committed; enemy 0; not committed coin += 8; flag true inert

Selection/revision/review/back never spends, rewards, recruits, levels or starts a battle. Home and confirmed Restart clear the complete transient snapshot, all selections, origins, members, levels, items, Coin and commit flags. Cancel Restart changes none of them.

9. Decision-Density And Non-Dominance Audit

No option dominates across every pair/state and all visible outcomes:

Decision Option with a rational best case Counter-option with a rational best case Proof of tradeoff
Adaptation EQ-002 maximizes battle-2 lead HP and later covers R6-01 if retained. EQ-061 is 1.05 s faster in battle 2 and later covers/accelerates R6-02 if retained. Safety and tempo move in opposite directions.
Guild Retain leaves 2 more final Coin and preserves brace or tempo. Add supplies a third action/training candidate and can cover R6-03 with FS+KH. Equipment/wealth versus roster breadth; neither contains the other.
R6-01 Best lead survival for retained EQ-002. R6-02 is fastest with EQ-061; R6-03 pays 3-6 more Coin. Survival, time and reward have different maxima.
R6-02 Best time for retained EQ-061. R6-01 protects brace builds; R6-03 rewards full FS+KH coverage. Its value changes with retained item and Company.
R6-03 Highest reward and covered by a three-member FS+KH line. Two-member/no-heal states preserve only 65 marked HP, making safer routes legible alternatives. Reward rises with targeted-member exposure.
Growth Lead HG/WR maximizes lead HP. Marked WR maximizes its own split survival; FS minimizes time; KH maximizes recovery. One mark cannot improve all three metrics.

State changes visibly alter value rather than only wording:

  • HG-WR + EQ-002 offers Farstring at the Guild; HG-WR + EQ-061 offers Kindhand, so the prior adaptation changes the roster opportunity.
  • Adding Hearthguard to FS-KH changes the lead and removes the unsupported fragile-lead continuation.
  • R6-03 changes from gap/65 marked HP in a two-person build to covered/88 only for a three-person FS+KH support line.
  • Training a second-position Wayrunner changes its own marked HP 60 -> 80 instead of incorrectly improving another member because of an old slot assumption.

10. Deterministic Coverage Required For Implementation

The implementation contract and tests must expand the compact functions above into these complete products:

formation: 6 unordered pairs x 2 click orders
battle 2: 6 pairs x 2 adaptations = 12
battle 3: 12 pair/adaptation states x 2 Guild responses = 24
battle 4: all 24 prior branches x 3 routes = 72
battle 5: each of those 72 branches x every present member (2 or 3)

For every row, assert identities/origins, field order, actual role events, lead/marked/enemy HP, time, Coin, Company, retained/returned item, route coverage/reward, exactly one Lv.2 member, all commit flags, Chinese causal facts and the two legal final actions. Counterfactual tests must include:

  • Wayrunner as second member (HG-WR) and as lead (WR-FS, WR-KH);
  • exposed Farstring lead before and after FS-KH adds Hearthguard;
  • HG-WR adding different Recruits from the two prior loans;
  • original Kindhand moving behind an added Farstring while remaining marked_id;
  • Company 3 without Kindhand (HG-WR-FS), without Farstring (HG-WR-KH), and with both (HG-FS-KH, WR-FS-KH);
  • every invalid ID, duplicate/stale commit, insufficient-Coin commit, absent training member and premature reward.

This matrix is the game-design authority for P9.1 reconciliation. UX may choose layout and architecture may choose representation, but neither may change the IDs, state dependency, mutations, exact numeric results, decision meaning or result causality without returning to the game-design boundary.