You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: the build doc was lossy in three places, and none of them cost a point
The canonical build doc is meant to be what a file corpus stores: the
rebuild document, no prose, round-trippable. Moving kirby-combat's suite
onto it found three things it silently forgot. Every one of them
round-tripped to the same TOTAL, which is why cost parity never caught
any of them and never could.
NATIVE_TONGUE. A native tongue is free, and the flag is the only thing
that says so -- the element still carries the option's base cost, so
Bokor's Creole is `OPTIONID="ACCENT" BASECOST="3.0"` with
`NATIVE_TONGUE="Yes"`. `Language._init` has always read it; nothing wrote
it back, so the reader rebuilt an ordinary three-point Language and Bokor
came back 279 points against the .hdc's 276. This one DID move a total,
and it is the reason the other two were looked for.
EQUIPMENT. `_SECTION_TAG` listed seven sections and equipment was not one
of them, so a character whose weapon is CARRIED round-tripped into being
unarmed. The loader has always read an <EQUIPMENT> section, with the same
`_load_powers_section` as powers -- 6E2 p.182: "Most equipment is built
with Powers" -- and kirby-combat has read `hero.equipment` for its
attacks since 2026-09-07. Only the document forgot. Verified on the HSEG
19th-century prefabs: 126 weapons in, 126 out.
THE PD/ED SPLIT. HD writes PDLEVELS/EDLEVELS/MDLEVELS/POWDLEVELS on a
Resistant Protection element and `ForceField.XML_ATTRS` has read them
since a re-export was caught losing the whole power. The doc never wrote
them, so Power Lad's 45 points rebuilt as 0/0 and the consumer was left
guessing which half was physical -- kirby-combat guessed half and half,
then capped the guess against natural PD, and he fought a gunfight at
rPD 2 instead of 25. Costing does not notice: HD prices the power by
LEVELS, so a doc without the split is worth exactly the same points and
looks correct. What it loses is the fight.
THE PATTERN IS THE FINDING. Three fields, three different places, and all
three invisible to a totals comparison. A document that is checked only
by its cost can drop anything the cost does not read -- which includes
most of what combat consumes. What this wants next is a round-trip test
that walks a real character field by field rather than comparing points.
Suite 1811 passed, oracle parity unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Lvepxj9B2mDc4cRN3jaWwn
0 commit comments