Sync progression_design.md with implemented action items

Prune completed action items 1-4 and 8 (scrap-from-threat, schematic
upgrade and ship level removal, balancing tool cleanup, unlock
prerequisites), renumber the remaining three, and update stale
cross-references: cite REQ-LOCK-PREREQ and unlock_requires, reflect
that REQ-THREAT-SCRAP is now the 1/scrap_per_threat constant, and
drop the obsolete level-up wording from the artifact rule.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
This commit is contained in:
2026-07-03 09:44:53 +02:00
parent 730cd3bdf3
commit 4098e40c8c

View File

@@ -153,7 +153,7 @@ supporting different fleet doctrines feel structurally different to build.
- **All time scaling lives in the threat rate** — waves get bigger, ships
of a given schematic never get individually stronger. There is no ship
level dimension: stat formulas are plain values, and per-ship level
scaling (`ship_level_formula`) does not exist (see Action items). Push
scaling does not exist. Push
scaling on enemy defence stations is the separate, player-triggered
difficulty axis and keeps its level formulas.
@@ -169,9 +169,10 @@ supporting different fleet doctrines feel structurally different to build.
its materials need can be unlocked alongside it.
- **Schematics can require other schematics.** Beyond the station-level
gate, a schematic (ship, module, or assembler recipe) may list
prerequisite schematics that must already be unlocked before it enters
the drop pool — e.g. the medium laser requires the small laser; a
future Mk2 requires its base version. Station level gates the earliest
prerequisite schematics (`unlock_requires`, REQ-LOCK-PREREQ) that must
already be unlocked before it enters the drop pool — e.g. the medium
laser requires the small laser; a future Mk2 requires its base version.
Station level gates the earliest
*when*; prerequisites gate the *order*, keeping drop offers coherent
with what the player already owns.
- **No duplicate drops.** Ship and module schematics leave the drop pool
@@ -184,8 +185,8 @@ supporting different fleet doctrines feel structurally different to build.
tasks), never as free level-ups.
- **Artifacts trade power for progress.** Artifact options compete with
schematic picks in the same choice dialog; the artifact chance must be
tuned so that taking one is a real decision (giving up a level-up or
unlock), not automatic in either direction.
tuned so that taking one is a real decision (giving up an unlock), not
automatic in either direction.
## Scrap & reprocessing economy
@@ -206,8 +207,8 @@ supporting different fleet doctrines feel structurally different to build.
the exception: they keep authored `scrap_drop_formula`s, because pushing
rewards are tuned independently of ship production costs.
- Consequence: the threat value of scrap is the constant
`1 / scrap_per_threat`. The min-`scrap_drop` schematic derivation
(REQ-THREAT-SCRAP) and its potential circularity disappear.
`1 / scrap_per_threat` (REQ-THREAT-SCRAP). The former min-`scrap_drop`
schematic derivation and its potential circularity are gone.
- **Rule:** the late-game input's income rate meaningfully gates capital
production — unlocking a capital hull must not mean spamming it; the
input trickles in slowly enough that every capital ship is a noticeable
@@ -272,47 +273,22 @@ Constraints that every recipe must respect, independent of tuning:
## Action items — changes beyond this document
Agreed changes that require edits to `requirements.md`, the code, and the
configs:
configs. Completed items are removed from this list (their outcomes live
in `requirements.md` and the git history). Still open:
1. **Derive ship scrap from threat.** Add `scrap_per_threat` to
`world.toml`; remove `[ship.loot].scrap_drop` from `ships.toml`; update
REQ-RES-SCRAP-DROP; replace REQ-THREAT-SCRAP with the constant
`1 / scrap_per_threat`. Station `scrap_drop_formula`s stay.
2. **Remove schematic upgrades.** Owned ship/module schematics leave the
drop pool (REQ-DEF-SCHEMATIC-DROP); drop the new-unlock/level-up
annotation from the choice dialog; remove `player_production_level`
from `ships.toml`, `modules.toml`, and the code paths that increment
and evaluate it (REQ-BLD-SHIPYARD, REQ-MOD-CONFIG).
3. **Remove ship levels entirely.** Delete `ship_level_formula`
(REQ-WAV-SHIP-LEVEL); replace all stat formulas in `ships.toml` and
`modules.toml` with plain values (REQ-SHP-STATS, REQ-MOD-CONFIG,
REQ-MOD-STAT-CALC evaluation rules). Enemy defence stations keep their
station-level formulas — push scaling is unaffected.
4. **Balancing tool follow-up.** Remove the per-ship-entry `level` from
`balancing.toml` and the `L<level>` display format (REQ-BAL-TEAM,
REQ-BAL-CONFIG-GAME, REQ-BAL-UI-WIDGET, REQ-BAL-UI-INSPECT-WINDOW);
station entries keep their level. Ship stats panels no longer evaluate
at a level (REQ-MOD-UI-STATS-PANEL, REQ-UI-SHIP-STATS-PANEL).
5. **Fill unfillable schematic slots with artifacts.** With duplicates
1. **Fill unfillable schematic slots with artifacts.** With duplicates
removed, the schematic drop pool can run dry — previously unreachable.
Decision: every slot in the choice dialog that cannot be filled with a
schematic because the eligible pool is exhausted is filled with an
artifact option instead (in addition to any artifact option granted by
the regular artifact roll). A push therefore always awards a full
dialog. Update REQ-DEF-SCHEMATIC-DROP.
6. **Confirm wave scaling carries alone.** With per-ship level scaling
gone, `threat_rate_formula` is the only time-scaling axis; verify the
current `world.toml` values still produce the intended difficulty
curve (the config reportedly already runs with a flat ship level, so
this is likely a review, not a retune).
7. **Gate shortcut-recipe drops on their inputs.** Extend the assembler
2. **Confirm wave scaling carries alone.** With per-ship level scaling
removed, `threat_rate_formula` is the only time-scaling axis; verify
the current `world.toml` values still produce the intended difficulty
curve (likely a review, not a retune, since the config already ran
with a flat ship level before the removal).
3. **Gate shortcut-recipe drops on their inputs.** Extend the assembler
recipe schematic pool eligibility in REQ-DEF-SCHEMATIC-DROP: in
addition to the existing station-level and output-item checks, all of
the recipe's input item types must be implicitly unlocked as well.
8. **Schematic prerequisites.** Add an optional prerequisite list to
ship, module, and assembler recipe schematic entries (e.g.
`unlock_requires = ["laser_cannon_s"]`): a schematic enters the drop
pool only when every listed schematic is already unlocked, in addition
to the station-level check. Update REQ-DEF-SCHEMATIC-DROP and
REQ-LOCK-EXPLICIT. This is also the mechanism the future Mk2 design
builds on (`*_mk2` requires the base schematic).