fix: complete general command success differential coverage

This commit is contained in:
2026-07-26 01:05:30 +00:00
parent 4f74303228
commit b26b4d42e9
7 changed files with 218 additions and 40 deletions
@@ -56,10 +56,12 @@ normalized to the core `*Id` spelling before command identity comparison.
canonical projection.
- `trace.ts`: before/execute/after capture boundary.
- `compare.ts`: exact snapshot and delta comparison.
- `turnCommandGeneralMatrix.integration.test.ts`: 37 successful general
command paths, including the four-call `전투태세` completion path and
movement/return/gift/spy/sabotage, recruitment, proficiency transfer,
trait reset and equipment-trade commands.
- `turnCommandGeneralMatrix.integration.test.ts`: 54 successful general
command paths. Together with the live sortie fixture, this exercises a
completed success path for every one of the 55 general command keys.
The matrix includes the four-call `전투태세` path, lifecycle and
appointment commands, troop assembly, rebellion and all three founding
variants.
- `turnCommandNationMatrix.integration.test.ts`: 8 successful nation
command paths.
- `turnCommandCoreReference.integration.test.ts`: declaration and live
@@ -77,9 +79,11 @@ Two committed cases exercise the guarded runner end to end:
defeated-general neutralization and last-city nation collapse.
Each case may include a structured `setup` object for `world`, `nations`,
`cities`, `generals` and `diplomacy`. The runner accepts only explicitly mapped
fields; it does not accept SQL. Setup and command mutation happen only inside
the cloned `sammo_td_*` databases.
`cities`, `generals`, `troops` and `diplomacy`. The runner accepts only
explicitly mapped fields; it does not accept SQL. Founding fixtures may pin
`initYear`/`initMonth` and an ordered random-founding city candidate set so
both maps expose the same RNG domain. Setup and command mutation happen only
inside the cloned `sammo_td_*` databases.
## Case request
@@ -164,13 +168,17 @@ Compatibility is established per case only when:
4. live sortie also passes the battle trace comparison;
5. any ignored path is documented in the case evidence.
As of 2026-07-25, 37 general cases, 8 nation cases, declaration and live sortie
pass this boundary. Live sortie covers battle entry, conquest, defeated-general
neutralization and last-city nation collapse. This is 47 executable comparison
cases, not a claim that all 55 general and 38 nation command classes have been
dynamically compared.
As of 2026-07-25, 54 general matrix cases, 8 nation matrix cases, declaration
and live sortie pass this boundary. Live sortie is the remaining general
command key and covers battle entry, conquest, defeated-general neutralization
and last-city nation collapse. Thus all 55 general command keys have a
completed success-path comparison. This is 64 executable comparison cases;
it is not yet a claim that failure/boundary paths or all 38 nation commands
have been dynamically compared.
The fixture runner also reports whether the requested legacy command reached
its completed execution path. For multi-turn commands this is derived from the
pre-execution `LastTurn`, because commands such as `전투태세` reset their result
term to `1` on the completion call.
term to `1` on the completion call. `등용수락` and the founding commands have
explicit state-based completion checks because their successful legacy result
turn is not a reliable completion marker.