Development record
unescapeScalar in the schema gate is a second independent copy of capture.unquote and the parity table has no escaping row
unescapeScalar in the schema gate is a second independent copy of capture.unquote and the parity table has no escaping row
Found by the round-2 adversarial ruthless review of build/itd-179.
internal/core/lint/schema.go:683 unescapeScalar is a second, independent
copy of capture.unquote (internal/core/capture/parse.go:270). The parity
table meant to bind the gate to the reader carries rows for single quoted,
empty list, block spelled, empty string, bare null and well formed —
but no escaping row, so the two decoders are not actually pinned to each other
on the dimension where they duplicate logic.
Repo law (one-canonical-primitive): "Found the same primitive in two places? Flag for consolidation — never add a third copy."
The risk is precisely the class round 1 closed in 050f3366: if capture.unquote
gains a case the gate does not, they diverge silently and a record the reader
skips goes lint-green.
Remedy: export the decoder from one shared home, or at minimum add a backslash-escaped row to the parity table so a divergence fails a row rather than passing unnoticed.
Grounds
- pursued: we expect two copies of one decoder to drift on the case neither table covers, and the parity table's missing escaping row over a duplicated escaping loop is exactly that gap
Frontmatter
| id | iss-2608301212424896 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608301212424896-unescapescalar-in-the-schema-gate-is-a.md
open on GitHub ↗ · commit history ↗
mentions1
- itd-179The reasoning behind what was pursued no longer evaporates at the gate — readiness and triage record grounds for the conjecture, not only the decision