Files
aetherbound-guild/docs/product/ECONOMY_AND_BALANCE.md

35 KiB

Aetherbound Guild: Economy And Balance Authority

Authority: Market offers, prices, locks, refreshes, Coin and Replacement Credit, rewards, progression rates, Line-capacity selection, difficulty parameters, first-clear pacing, solvency, recovery, and anti-dominance tests.

Revision: anti-dominance-fixture-r1 / 2026-08-11

GAME_PRODUCT_CONTRACT.md owns the player promise and content envelope. SYSTEMS_AND_BATTLE.md owns battle and content schemas. SAVE_AND_FAILURE_CONTRACT.md owns exactly-once application, run failure, interruption, and recovery.

1. Economy Invariants

  1. All gameplay value is earned in play. There is no paid currency, paid reroll, ad reward, energy, streak, offline income, or real-time wait.
  2. Coin and Replacement Credit exist only in the current run. Renown and progression facts persist, but cannot buy raw combat stats, starting Coin, or starting Line capacity.
  3. Every Market contains one steady battle offer. A random offer or refresh is never required to obtain a baseline counter for a mandatory boss.
  4. Death is costly through lost level, Profession, Trait, history, and order, but returned equipment and Credit make ordinary replacement recoverable.
  5. Dismissal, selling, refresh, lock, reward, and purchase formulas cannot create Coin-positive loops.
  6. All 320 equipment and 60 Artifact rows change a decision. Economy tiers and prices may not turn a scalar variant into a gameplay identity.
  7. Reward, Market, Recruit-generation, and combat random streams are separated. Reload, speed, input repeat, and unrelated draws do not change offers.
  8. The Standard first clear is solvent on deterministic steady offers without Meta power, random high-tier equipment, or repeated failed-run farming.

2. Resource Ledger

ID Player name Persistence/cap Sources Sinks or closure
coin Coin Current run; nonnegative; no hard cap Run start, battle rewards, reward cards, equipment sales, dismissal rebate Recruit/equipment purchase, refresh, lock; cleared when run closes
replacement_credit Replacement Credit Current run; cap 54 Fallen non-summon Recruits Optional reduction on a later Recruit hire; cleared when run closes
xp Experience Current Recruit; level cap 10 Completed battles entered by that Recruit Level thresholds; disappears with Recruit/run close
renown Renown Guild; cap 9,999 first Contract clears, first discoveries, mastery goals, limited repeat objective Catalog breadth, previews, challenge laws, hidden-hybrid discovery clues
clear_fact Region/Contract clear Guild fact, not spendable first valid boss result Region order, ending, postgame access
discovery_fact Catalog discovery Guild fact, not spendable first valid inspection/acquisition/encounter Collection, deterministic future pool access, completion

There is no material or crafting currency in the base contract. Equipment is bought, rewarded, equipped, returned after death, sold, or closed with the run. Adding a persistent resource requires an Owner-approved contract revision.

3. Run Opening And Capacity Economy

A run begins with:

  • two of four provisional generated Recruits selected at zero Coin price;
  • 52 Coin;
  • zero Replacement Credit;
  • Line capacity four;
  • no equipment beyond the provisional Profession defaults;
  • no active Artifact.

The first Market contains at least two base-Profession Recruit offers at level

  1. The two together cost 28 Coin, leaving 24 for an equipment, lock, refresh, or reserve decision.

For C cleared ordinary Rounds in 0..12:

line_capacity(C) = min(10, 4 + floor(C/2))

Capacity therefore becomes 4,5,6,7,8,9,10 at clear counts 0,2,4,6,8,10,12. It is granted automatically after result settlement, is not sold, and resets next run. Purchases and cumulative hires do not change it.

4. Market Board And Offer Generation

Every ordinary Market contains:

Row Slots Generation constraint
Recruit 3 At least one base Profession; after a casualty, one protected recovery offer
Equipment 4 At least three different behavior tags and two legal current users unless Company is empty
Battle 3 Exactly one steady offer and two distinct higher-risk or different-counter offers

Boss Muster uses the same Recruit/equipment counts but one fixed boss offer. It cannot refresh or replace the boss.

Each Market is generated from:

hash(run_seed, contract_id, Market_index, row_id, slot_index, refresh_index)

Labeled substreams are recruit, equipment, battle, and reward. An offer stores its complete generated fields and hash before presentation. Reopening, changing language, inspecting another screen, or closing the application does not redraw it.

4.1 Offer Level And Pool

For ordinary Round R in 1..12:

offer_level(R) = min(10, 1 + floor((R-1)/3))

Boss Muster uses the Round-12 offer level. Base Professions remain in every pool. Regular advanced direct hires may appear from Round 7 after their catalog unlock. Hidden hybrids are promotion outcomes and cannot be bought directly.

Equipment uses Region band B in 0..7 and item tier T in 0..3. At least one tier-0/1 legal item remains possible in every ordinary Market. A boss counter has one deterministic Region objective or fixed Muster offer; it is never refresh-gated.

4.2 Lock

The player may lock at most three unbought Recruit/equipment offers. Each newly locked offer costs 2 Coin once and persists through the next Market or until bought/declined. Unlocking does not refund Coin. Battle offers can be locked only within the current Market so the player can refresh other rows; they never carry beyond a committed battle.

The protected recovery offer needs no paid lock, survives refresh, and expires only when bought, explicitly declined, or the run closes.

4.3 Refresh

Refreshing replaces every unlocked, unbought offer except a fixed boss and a protected recovery offer. Let N be prior refreshes in the current Market and L the number of paid locked offers:

refresh_cost(N,L) = min(24, 6 + 3*N + 2*L)

N starts at zero each Market and increments atomically with the new board. The first no-lock refresh costs 6, the second 9, and the seventh and later cost 24. Insufficient Coin rejects the operation without changing offers or N.

5. Prices, Sales, And Dismissal

5.1 Recruit Price

For offer level L and Profession tier P (0 base, 1 regular advanced):

hire_list_price(L,P) = 10 + 4*L + 10*P

Trait and rolled distribution do not add a hidden price because level totals are equal-budget and every Trait has a cost. A Recruit's generated offer stores the list price.

Replacement Credit is optional at confirm. If use_credit is true:

credit_used = min(replacement_credit_balance, hire_list_price)
coin_cost = hire_list_price - credit_used

If false, credit_used=0. Coin cost, Credit spend, Recruit creation, and offer removal apply atomically. Credit cannot buy equipment, refreshes, locks, or Meta progression.

5.2 Equipment Price And Sale

For Region band B in 0..7 and item tier T in 0..3:

equipment_list_price(B,T) = 12 + 3*B + 6*T
sale_value = floor(0.30 * coin_price_paid)

An equipment reward stores coin_price_paid=0 and therefore sells for zero; its value is the behavior it enables. Purchased copies never sell above 30%. Locked, equipped, or battle-committed items must be released before sale.

5.3 Dismissal Rebate

The product authority's canonical count and precondition apply before rebate calculation:

live_recruit_count = count(unique Recruit IDs owned by the current run
                           whose state is living,
                           across deployed party and Reserve)
dismissal_legal = Market_open and target_is_living and
                  live_recruit_count >= 2

Only for a legal dismissal:

if survived_battles >= 2:
    dismissal_rebate = min(10, floor(0.25 * coin_price_paid))
else:
    dismissal_rebate = 0

coin_price_paid excludes Credit. Equipment returns before the Recruit is removed, all in one operation. Dismissal creates no Credit, Renown, XP transfer, offer reroll, or reward. A same-level replacement always costs more Coin than the rebate unless Credit came from an unrelated death.

When live_recruit_count == 1, preview and commit reject FINAL_LIVE_RECRUIT before the rebate formula. The blocked action grants zero Coin, zero Credit, no protected recovery offer, and no economic or roster mutation. Abandon Run remains a separately confirmed run-close operation and does not pay a dismissal rebate.

Counterexample trace:

state: Market open; one living Recruit; Coin=3; Credit=0;
       no protected recovery offer; Recruit paid 32 Coin and survived 3 battles
attempt: preview dismissal, then submit the same confirm after interruption
result: FINAL_LIVE_RECRUIT at preview and commit
after: one living Recruit; Coin=3; Credit=0; no protected offer;
       dismissed_total unchanged; calculated dismissal rebate is not applied
next legal terminal choice: continue Market play or confirm Abandon Run

The hypothetical eight-Coin rebate cannot make the final dismissal legal. Casualty settlement may later create Credit or a protected offer if the Recruit falls; it is not simulated by dismissal.

6. Battle Income And Reward Drafts

Battle risk Q is 0 steady, 1 pressured, or 2 elite. For Region band B in 0..7 and ordinary Round R:

battle_coin(B,R,Q) =
  floor((18 + 2*R + 2*B + 7*Q) * difficulty_reward_multiplier)
reward_budget(B,R,Q) = 12 + 2*R + 3*B + 6*Q

Coin pays once on victory before the reward choice. Defeat, timeout, and retreat pay no battle Coin. Economic consequences after those outcomes are owned only by the save/failure authority.

The victory reward draft is stable:

Risk Cards Required composition
Steady 2 choose 1 one legal equipment/tag card; one floor(0.50*reward_budget) Coin card
Pressured 3 choose 1 two distinct legal equipment/tag cards; one Coin or Recruit-discount card
Elite 3 choose 1 one Artifact-eligible card, one equipment/tag card, one Coin/recovery card

An Artifact card offers three fixed Artifact IDs and the player chooses one. If three Artifacts are already active, comparison/replacement is part of the same operation. Declining a reward is legal and grants nothing. A reward card cannot be rerolled by leaving the result.

The boss awards no spendable Coin because the run closes. A first boss clear grants the persistent values in Section 9 and one fixed discovery choice.

7. Death Credit And Recovery Solvency

When a hired or provisional Recruit becomes Fallen, use its original list price and actual Coin paid:

credit_grant = min(original_list_price,
                   10 + floor(coin_price_paid/2))
new_credit_balance = min(54, old_credit_balance + credit_grant)

Credit, permanent Recruit removal, and equipment return apply in one casualty operation. A provisional Recruit has coin_price_paid=0 and an implicit level-1 base list price of 14, so it grants 10 Credit. Summons grant none.

After one or more casualties, the next Market reserves one base-Profession recovery offer with all of these properties:

  • its level is max(1, offer_level-1);
  • its Profession supplies at least one missing primary responsibility among protection, damage, reach, or sustain when such a catalog row is unlocked;
  • it is not replaced by refresh and needs no lock fee;
  • its list price uses the normal formula and Credit can reduce it to zero;
  • buying or explicitly declining it clears protection, not remaining Credit.

The guarantee makes a replacement visible, not automatically optimal. A lost advanced or promoted Recruit returns as a cheaper base Recruit unless the player chooses to spend more on another offer.

7.1 Three-Death Fixture

At Round 7, three base Recruits originally bought for 18 Coin each fall. The current base list price is 22, the player has 12 Coin, and Credit cap is 54:

grant per Recruit = min(22, 10 + floor(18/2)) = 19
balance after three grants = min(54, 57) = 54
replacement Coin costs = 0, 0, 12
ending Coin = 0; ending Credit = 0

Three legal replacements are therefore purchasable in the next Market. The player has lost their levels, Traits, promotion progress, history, and all liquid flexibility, so the loss is recoverable but not profitable.

8. XP, Levels, And Promotion Pace

For Recruit level L from 1 through 9:

xp_to_next(L) = 20 + 10*L
battle_xp(R,Q) = 10 + 2*R + 4*Q

Living deployed Recruits receive 100% on victory, 50% on defeat/timeout when at least one deployed Recruit survives, and 50% on completed retreat. Reserve and Fallen Recruits receive zero. Difficulty and display speed do not multiply XP.

XP is applied after casualty determination. A Recruit can gain multiple levels from one award, checking the formula at each new level, but cannot exceed 10. At cap, excess is discarded and shown. Promotion eligibility at level 4 plus three survived battles is owned by the systems authority.

There is no permanent Recruit level, inheritance, XP item, or Meta stat. New hires catch up through offer level and price rather than receiving another Recruit's progress.

8.1 Enemy Rank And Within-Run Scaling

Regions add mechanics, not a permanent vertical stat ladder. Within a run, enemy stat pressure follows the current offer level and risk:

encounter_rank(R,Q,boss) =
  min(6, offer_level(R) + Q + (1 if boss else 0))
rank_multiplier = 1 + 0.08*(encounter_rank - 1)

Apply rank_multiplier once to an enemy row's base MaxHP, power, Guard, Ward, Potency, and Tenacity, rounding half up. Tempo, Initiative, reach, target rules, cooldowns, footprint, and status durations do not scale. Difficulty then applies its declared HP and damage/healing multipliers once.

Identity base budgets are content-authored within the systems ranges and must pass fixed same-rank comparisons. A later Region cannot substitute a larger base budget for a new mechanic, and no mandatory battle assumes a prior run's Recruit or equipment.

9. Renown And Meta Progression

For Region number G in 1..8 and Contract rank K in {1,2}:

first_clear_renown(G,K) = 8 + 2*G + 4*K
repeat_objective_renown = min(2, unclaimed_repeat_goals_for_contract)

First discovery of a Profession, Trait, equipment behavior family, Artifact, ordinary/elite enemy, or boss grants one Renown once. A row's presentation variants grant none. Repeat objectives are finite checklist entries; replaying an unchanged clear after they are claimed grants zero Renown.

Renown purchases only breadth:

Unlock Cost range Allowed effect
Catalog pool packet 4-8 Add sidegrade equipment/Trait/Artifact rows to future eligible pools
Advanced Profession clue/trial 8-12 Reveal requirements and enable a deterministic trial
Hidden-hybrid clue/trial 14-18 Reveal one predicate and enable its mastery trial
Threat archive upgrade 6-10 Expose additional exact preview fields for encountered families
Oath law 12-20 Add a postgame optional run modifier and its completion Record

Forbidden effects include percentage power, HP, defense, Coin gain, cheaper shops, free refreshes, starting equipment, starting Recruits, extra reward cards, larger starting Line capacity, or casualty reversal.

All mandatory Standard counters are in the default or deterministic Contract pool. A player never needs a Renown purchase to finish the first clear.

10. Equipment And Artifact Distribution

The 320 equipment entries are divided into eight Region bands of 40. Every band contains rows for all three equipment slots, all primary responsibilities, and at least three opposed order/reach/protection plans. Tier describes price and availability, not strict power. A lower tier must lead one fixed comparison in which it is the rational choice.

Each item has a numeric support budget separate from its required behavior:

item_stat_budget(T) = 30 + 8*T

The behavior hook reserves 12-24 budget points. At most 50% of the total budget may be generic HP, power, Guard, or Ward. Remaining numeric support uses:

Stat Cost
+1 Might, Finesse, Insight, Vigor, or Resolve 2
+1 WeaponPower, FocusPower, ArmorGuard, or ArmorWard 1
+6 MaxHP 1
+1 Potency or Tenacity 1
+0.20 Tempo or Initiative 1

Fractions sum across equipped items before derived-stat rounding. Region band does not increase this budget; later bands introduce new interactions rather than automatic vertical power.

All 320 entries pass the systems behavior fixture. No scalar-only allowance or minimum subset exists.

The 60 Artifacts are distributed across first-clear, elite, boss, mastery, and postgame pools. Every run sees at least one deterministic Artifact choice by the end of Round 6 and at least one additional choice by boss Muster. No Artifact is required for a mandatory boss. Duplicate active Artifact IDs are illegal.

Bad-luck protection uses behavior tags:

if two consecutive eligible equipment drafts omit the selected behavior tag:
    the third eligible draft contains that tag

The counter resets when offered, not accepted. The selected tag may be changed at any Market for zero Coin before a draft is generated. It cannot name an undiscovered exact item.

11. Capacity Selection Simulation

The 10-12 target range was evaluated with an explicit analytical workload model. It is a design simulation, not human readability evidence.

For profile P and candidate capacity C:

prep_seconds(P,C) = ceil(base_P + inspect_P*C +
                         reorder_P*C*(C-1)/2)
battle_p95_seconds(C) = ceil(52 + 5.4*C)
causal_events_per_second(C) = 1.2 + 0.24*C

The pair term models order comparisons, not every permutation. The gate is prep <= 150 s for every profile, battle p95 <=120 s, causal events <=4.0/s, and the three-death fixture recoverable in at most one Market.

Profile base inspect reorder C=10 prep C=11 prep C=12 prep
Normal 20 4.0 0.8 96 s 108 s 121 s
Deliberate 25 5.0 1.4 138 s 157 s 178 s
Efficient 15 3.0 0.5 68 s 76 s 84 s
Adversarial 20 4.5 1.3 124 s 141 s 160 s
Returning 30 5.5 1.3 144 s 162 s 182 s
Candidate Profiles passing prep Battle p95 Causal events/s Three-death recovery Result
10 5/5 106 s 3.60 1 Market Pass
11 3/5 112 s 3.84 1 Market Fail profile gate
12 2/5 117 s 4.08 1 Market Fail profile and event gates

Ten is the largest candidate passing every declared gate. Human testing still owns whether ten simultaneous allies plus enemies remain visually legible.

12. Contract And First-Clear Pacing

Each Region contains two Contracts. Every Contract is twelve ordinary Rounds, boss Muster, and one boss. The Normal authored means are:

Region Contract 1 Contract 2 Region total Content pressure
1 50 min 54 min 104 min recruit valuation, front/rear, reach
2 54 min 58 min 112 min protection bypass and healing access
3 56 min 60 min 116 min projectiles and interception
4 58 min 62 min 120 min movement, push, and pull
5 60 min 64 min 124 min summons and footprint pressure
6 62 min 66 min 128 min status ordering and control
7 64 min 68 min 132 min promotion and Artifact conflicts
8 66 min 70 min 136 min full-system synthesis

Successful Contract time sums to 972 minutes. This time is active Market, battle, result, and boss play; it excludes loading and forced waiting.

12.1 Five Full-Clear Profiles

Profile Successful Contract minutes Failed/abandoned-run minutes Guild/onboarding/recap minutes Total First-clear hours
Efficient 768 120 90 978 16.30 h
Normal 972 120 78 1,170 19.50 h
Deliberate 1,152 150 90 1,392 23.20 h
Adversarial 928 300 92 1,320 22.00 h
Returning 1,024 120 161 1,305 21.75 h

Every profile is inside 15-25 hours. The efficient profile cannot skip required bosses or decisions; it saves time through faster comparison and presentation speed. Adversarial includes more elite offers and recoverable losses. Returning includes recap/segmentation overhead, not forced repetition.

Mastery targets 60+ cumulative hours. At least 70% of post-ending time must use a previously unclear Profession, Trait, equipment behavior, Artifact conflict, enemy/boss fixture, or Oath law. An unchanged clear may contribute at most 20% of any mastery milestone.

13. Exact Twenty-Minute Pacing Traces

All timestamps are simulation-independent wall time spent actively playing a representative 1,200-second session. M lists Market openings. B lists battle start-end intervals. D lists meaningful decisions; confirmation, inspection, speed changes, and reward animation do not count.

Profile M Market opens (s) B battle intervals (s) D decision timestamps (s) Maximum decision gap
Normal [0,300,600,900] [(180,270),(480,570),(780,870),(1080,1170)] [25,90,175,280,325,390,475,580,625,690,775,880,925,990,1075,1180] 105 s
Deliberate [0,330,660,990] [(210,300),(540,630),(870,960),(1140,1200)] [20,75,135,205,310,350,410,475,535,640,680,740,805,865,970,1015,1070,1135] 105 s
Efficient [0,260,520,780,1040] [(130,230),(390,490),(650,750),(910,1010),(1170,1200)] [35,125,240,295,385,500,555,645,760,815,905,1020,1075,1165] 115 s
Adversarial [0,290,610,940] [(150,260),(440,580),(760,910),(1100,1200)] [30,80,145,270,320,375,435,590,640,700,755,920,970,1030,1095] 165 s
Returning [0,270,590,930] [(140,240),(420,550),(760,890),(1090,1180)] [25,85,135,250,300,355,415,560,620,680,755,900,950,1015,1085,1190] 145 s

The gap includes time zero to the first decision and the last decision to 1,200. Every battle that completes before the trace boundary is followed by its next decision within 15 seconds. Decision kinds across each trace must include Recruit/equipment valuation, order or deployment, battle-risk commitment, reward/recovery, and next-Market budget. Adversarial's 165-second gap is a long elite battle and remains below the product veto because the battle itself is capped at 150 simulation seconds and the result decision appears immediately afterward.

14. Standard Solvency Trace

A lowest-reward run takes only steady offers. In Region band B, ordinary battle income is:

sum(battle_coin(B,R,0), R=1..12)
= sum(18 + 2*R + 2*B)
= 372 + 24*B Coin

With starting Coin, total pre-boss resources are 424 + 24*B Coin. The baseline plan spends:

Required purchase Cost
Eight base hires needed to grow from two provisional Recruits to capacity ten 156
Two tier-0/1/2/3 items in Region band B 168 + 24*B
Two refreshes in one no-lock Market 15
Three locks 6
Total 345 + 24*B

The Region-band income and equipment-price terms cancel exactly, so the run reaches boss Muster with 79 Coin before optional sales, risky-offer bonuses, reward Coin cards, or Credit. The deterministic boss-counter objective costs no more than one omitted baseline equipment purchase. Standard solvency passes when every Region seed can follow an equivalent plan with at least 40 Coin or one complete three-casualty recovery set entering boss Muster.

15. Anti-Dominance And Balance Gates

15.1 Required Strategy Tests

Candidate policy Why it might dominate Rejection fixture
Always refresh twice More chances at desired synergies Costs at least 15 Coin per Market before locks; 12-Market use costs 180, exceeds the 79-Coin baseline reserve and must lose one fixed low-variance seed
Never refresh Preserves all Coin Must lose value in at least two of five seeds where one refresh exposes a counter tag worth more than 6 Coin
Buy every Recruit Reserve breadth and death insurance Reserve earns no XP/Coin; dismissal returns at most 25% paid Coin; fixed plan must lose equipment/refresh flexibility and fail one boss comparison
Dismiss after every battle Attempt to cycle Traits/offers No Credit, zero rebate before two survivals, maximum 10 later; cycle is strictly Coin-negative and loses history/level
Never dismiss Avoid sunk-cost loss Must lose one fixture where releasing an obsolete low-level Reserve funds a reachable counter without weakening deployed footprint
Never replace Preserve Coin after death Must lose one post-casualty fixture because lower footprint changes reach/protection and leaves Coin unused
Always take steady Minimize death Must trail pressured/elite in at least one build-breadth objective and one Artifact timing fixture
Always take elite Maximize rewards Expected casualties and missed steady recovery must reduce clear rate or terminal Coin in at least two profiles

No policy needs to be bad everywhere. A policy is dominant if it weakly beats all alternatives in every fixed state and strictly beats one; any such result blocks the design.

15.2 Executable Fixed-Seed Comparator

The Gate 6 build-policy proof is ANTI_DOMINANCE_FIXED_SEEDS.json, recalculated by python3 tools/simulate_anti_dominance.py. It is a prebattle feasibility comparator, not a second combat model: the fixture declares the locked route's ordered enemy inputs, required counter tags, minimum deployed footprint, and casualty counts. The script replays the Market transactions, tests that the resulting deployed build covers those route requirements, and then applies the Section 6 battle-Coin formula only on a clear. It introduces no accuracy, evasion, random draw, hidden generator state, or formula override.

Every seed declares all of the following rather than asking a generator for them at test time:

Fixture field Required declared input or recalculation
State Round, cleared Rounds, Region band, difficulty, Coin, Credit before casualties, prior refresh count, paid locks, and expected capacity/offer-level/refresh-cost values
Company Every living Recruit ID, deployed/Reserve assignment, counter tags, Coin paid, and survived-battle count
Recovery Every casualty's original list price, Coin paid, expected Credit grant, post-casualty Credit, and the protected offer ID or explicit null
Boards All three Recruit, four equipment, and three battle offers on both the opening and first-refresh board, including exact price inputs and stored prices
Route The paid-locked route preserved through refresh, ordered enemy inputs, risk, required tags, deployed footprint, outcome casualties, and stored battle Coin
Oracle Exact action trace and outcome metrics for every policy plus the expected winner

Each fixture's opening Coin is the post-lock balance; the declared paid lock is already sunk. Its count still enters the first-refresh formula, and the locked route is byte-identical on the refresh board so every policy faces the same combat contract.

The script rejects a missing row or field, a sixth or duplicate seed, a changed locked route or protected offer, a noncanonical price/reward/Credit value, an illegal deployment, or an expected-result mismatch. A casualty state must have exactly one protected Recruit on both boards. The protected offer remains unchanged through refresh. Dismissal checks the canonical living count before target selection; with one living Recruit it records FINAL_LIVE_RECRUIT, pays no rebate, and may still perform a separate legal equipment purchase. Casualty Credit and protected recovery are inputs to later hire transactions, never a dismissal side effect.

The four fixed policy families are intentionally narrow and deterministic:

Policy Exact algorithm
refresh_first Pay exactly the declared first refresh when affordable, then buy at most one affordable refreshed equipment offer that maximizes missing route-tag coverage; ties use lower price then offer ID
hire_first Buy at most one affordable opening-board Recruit, preferring the protected offer, then missing route-tag coverage, lower Coin cost after optional Credit, lower list price, and offer ID; deploy it only when capacity has a vacancy
dismiss_first If legal, dismiss one Reserve with least route relevance, then highest rebate and offer ID tie-breaks; otherwise record the rejection; buy at most one affordable opening-board equipment counter
no_replace Never refresh, hire, or dismiss; buy at most one affordable opening-board equipment counter using the same coverage/price/ID ordering

The comparison is lexicographic and all higher values are better: route_cleared, ending Coin, ending Credit, ending living Recruit count, then counter-tag coverage. The JSON also records deployed/required footprint, battle Coin, Market Coin spent, dismissal rebate, Credit used, Line capacity, and exact actions. This ordering does not convert Credit into Coin and does not claim that the fixture policies are exhaustive play. It makes one declared prebattle choice comparable without hiding a utility weight.

For two policies A and B, A weakly dominates B only when A's complete comparison tuple is at least B's on all five seeds and strictly greater on at least one. The run fails if either policy has no win, has no loss, or any ordered policy pair meets that definition. --self-test first accepts the canonical matrix, then creates an in-memory matrix in which refresh_first beats every peer on every seed and proves that the dominance check rejects it.

Stable seed Fixed state counterfactual Expected winner
AD-FS-001-REFRESH-COUNTER First refresh exposes the locked pressured route's only affordable wardbreak counter refresh_first
AD-FS-002-PROTECTED-HIRE One casualty leaves both a protection and fourth-deployed-Recruit gap hire_first
AD-FS-003-DISMISSAL-REBATE A legal four-Coin obsolete-Reserve rebate makes the current reach counter affordable dismiss_first
AD-FS-004-PRESERVE-COIN The current line already clears; extra transactions lose Coin or living roster value no_replace
AD-FS-005-CREDIT-CROSSOVER Final-Recruit dismissal is illegal and a zero-Coin protected hire beats two equipment paths hire_first

Canonical verification is:

python3 tools/simulate_anti_dominance.py --self-test
python3 tools/simulate_anti_dominance.py
python3 tools/simulate_anti_dominance.py | shasum -a 256

Two default runs must be byte-identical. The summary prints every policy's clear, ending Coin, ending Credit, ending living count, and counter coverage for every seed, the win counts, a canonical result SHA-256, and ABG_ANTI_DOMINANCE_OK no_weak_dominance=1.

15.3 Complete Gates

  1. Solvency: all eight Region bands have a steady Standard plan reaching boss Muster with 40 Coin or the full declared recovery set.
  2. Recovery: the Section 7.1 three-death state fields three legal base replacements in one Market and does not increase total Coin-equivalent value.
  3. Capacity: candidate ten is the only candidate passing all profile, battle-duration, event-rate, and recovery gates.
  4. Profession diversity: each base branch pair and hidden hybrid has opposed fixtures; no identity leads both without a different Company/order cost.
  5. Equipment/Artifact diversity: every row changes two observable events; no price/tier creates strict catalog-wide superiority.
  6. Market diversity: across five fixed run seeds and five profiles, at least three different first purchases, battle risks, and final orders are optimal.
  7. Failure pressure: one death is consequential; three are recoverable; a full-company loss can close a run without making next-run Meta power required.
  8. Decision density: exact traces reproduce their maximum gaps, and no battle/result handoff exceeds 15 real seconds after resolution at 1x.
  9. Campaign: all profiles finish within 15-25 hours and mastery has new decision content through 60+ hours.

16. Difficulty Contracts

Difficulty is chosen before run creation and stored for the entire run:

Difficulty Enemy HP Enemy damage/healing Reward multiplier Audience
Wayfinder 0.90x 0.90x 1.00x learning and accessibility-forward play
Standard 1.00x 1.00x 1.00x authored first-clear baseline
Oathbound 1.10x 1.12x 1.15x prepared high-risk play

Multipliers apply once after enemy derived stats and once to battle Coin where declared. They do not change offer access, Recruit attribute budgets, XP, Renown, target rules, telegraph length, Replacement Credit, Line capacity, or save behavior. Fallen Recruits remain permanent on every difficulty.

Postgame Oath laws are opt-in rule changes, not hidden difficulty multipliers. Each declares Market/formation/enemy/reward changes and its Record. Laws may not alter transaction integrity or reintroduce permanent Meta stats.

17. Fixed Economy Test Vectors

Vector Inputs Expected result
Capacity cleared Rounds 0,2,4,6,8,10,12 4,5,6,7,8,9,10
Base hire L=3, P=0 22 Coin list price
Advanced hire L=3, P=1 32 Coin list price
Credit hire list 22, Credit 19, use=true 3 Coin, Credit becomes zero
Item price B=4, T=2 12+12+12=36 Coin
Item sale 36 Coin paid 10 Coin
Refresh N=0/L=0; N=1/L=0; N=7/L=0 6, 9, 24 Coin
Steady income B=0, R=5, Standard 28 Coin
Region steady income B=7, R=5, Standard 42 Coin
Elite income B=0, R=5, Oathbound floor((18+10+14)*1.15)=48 Coin
Level XP L=4 60 XP to level 5
Battle XP R=5, Q=2 28 XP to living deployed winner
Death Credit original list 22, paid 18 19 Credit
Dismissal paid 32, survived 3 8 Coin; no Credit
Final dismissal one living Recruit, paid 32, survived 3, Coin 3 reject FINAL_LIVE_RECRUIT; Coin remains 3, no rebate/offer/roster change
Solvency any B; start plus 12 steady wins minus baseline 79 Coin
Decision gaps five Section 13 traces 105, 105, 115, 165, 145 seconds
Capacity candidate C=10 5/5 prep, 106 s p95, 3.60 events/s, one-Market recovery

18. Acceptance Checklist

  • Market board, offer levels, prices, refresh, lock, purchase, sale, and reward formulas are complete.
  • Coin, Credit, XP, Renown, and progression facts have explicit persistence, sources, sinks, caps, and non-power boundaries.
  • Death recovery is affordable without making dismissal/death profitable.
  • The dismissal rebate is unreachable when the target is the final living Recruit; abandonment and casualty recovery remain separate.
  • Capacity ten follows a declared five-profile analytical selection.
  • Five exact Market/battle/decision traces and campaign budgets meet 15-25 first-clear and 60+ mastery targets.
  • Solvency and anti-dominance gates cover refresh, hire, dismiss, replace, and risk policies.
  • All fixed content counts and no-filler requirements match the other authorities.