docs(vt): round 3 item 11 — record the MyMonsters persistence gap

CombatSettings.Rules lives only in MossTank's JSON side-car;
VtankSettingsProfileSerializer preserves the real .usd MyMonsters table
byte-for-byte but never parses it into MonsterRules or regenerates it from
them (VtankSettingsProfileSerializer.cs:24-30). MonsterRules.cs/
MonsterExpression.cs (the rule-grammar evaluator itself) is a faithful,
well-cited port with no material gap — only the real-file round trip is
missing.

Filed TS-86 (temporary stopgap; slice 3 ports the table) and added it as
gap item 6 in docs/research/vtank-kb/03-combat.md section 8 (previously
absent — the existing five gaps are about rule-grammar/priority fidelity,
not about whether the real table round-trips at all). Corrected the TS
section header's stale active-row count (was undercounting by one before
this row) to the actual count. Documentation-only; the parse is
deliberately NOT implemented this round, per the task's explicit scope.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-07 02:00:19 +02:00
parent fbb584436b
commit 55010f92c7
2 changed files with 19 additions and 1 deletions

File diff suppressed because one or more lines are too long

View file

@ -538,6 +538,23 @@ and `PetDeviceCatalog.cs` — but was not compared step-by-step against
`CombatController.cs`. Effect: minor DPS/time loss from unnecessary
re-wields when several adjacent monsters need different weapons,
lower impact than 13 above.
6. **The real `.usd` `MyMonsters` table is preserved but never read or
written — a persistence gap, not a rule-grammar gap.** Round 3 item 11:
`CombatSettings.Rules` (the live `MonsterRule` list `MonsterRules.cs`/
`MonsterExpression.cs` evaluate against, item 5's own faithful port)
lives ONLY in MossTank's JSON side-car
(`MossTankProfileStore.SideCarDocument.CombatRules`); the real 21-column
`MyMonsters` table `VtankSettingsProfileSerializer` round-trips inside
the `.usd` file (`VtankSettingsProfileSerializer.cs:24-30`: "every table
other than Settings … is preserved byte-for-byte") is never parsed into
`MonsterRule`s on load and never regenerated from them on save. Effect:
a drop-in `.usd` from real VTank (or a hand-edited one) keeps its
`MyMonsters` rows completely inert in acdream — MossTank always uses
whatever the side-car separately holds instead, and a real VTank opening
an acdream-saved `.usd` would see stale/absent `MyMonsters` rows
regardless of what MossTank's own rule editor currently shows. Deferred
to a future slice (slice 3) that ports the table; NOT implemented this
round (see `docs/architecture/retail-divergence-register.md`).
`AutoAttackPower.cs` (melee power table) and `MonsterRules.cs` /
`MonsterExpression.cs` (rule expression grammar) were both checked in