Development record
the gate never judges schema_version's value so fifteen spellings the ledger reader refuses are lint-green
the gate never judges schema_version's value so fifteen spellings the ledger reader refuses are lint-green
Found by the round-3 security review. PRE-EXISTING and REPRODUCES ON MAIN — the reviewer ran the identical probe there and found the same silences in a superset of 30. Recorded, not chased.
checkRecordRequiredFields asks presence and non-blankness only (schema.go:733:
if present && !r.valueEmpty(field, f) { continue }); there is no typed-value
check anywhere in the store's required-field path. So schema_version: 2,
"1", "null", [a], {}, &a, !!null, # nothing, a block scalar with
content, a trailing comment and padded quotes are all lint-green, while
validateStrict (capture/validate.go:32) returns unsupported schema_version
and the record is skipped — invisible to capture list, capture status and
every other ledger surface. found_during: [a] is the same shape.
This is a FOURTH instance of "the gate checks presence where the reader checks
type", and it belongs on one record with iss-2608300224316569 (lapsed_at: [])
rather than being chased on this branch. The A/B against 24860b61 is identical
on all 252 combinations, so round 3 neither caused nor worsened it.
Grounds
- pursued: record_schema and capture's ledger reader give one verdict on every committed issue record; a record capture list skips that record-lint passes, or the reverse, would show it wrong
Frontmatter
| id | iss-2608301519255156 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608301519255156-the-gate-never-judges-schema-version-s.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2608300224316569A list-valued lapsed_at ([]) on a non-lapse record is lint-green because the record-shape check tests absence with isAbsentValue, which treats an empty inline list as absent, while capture's reader refuses it as not a string and skips the record silently. Same pre-existing class as found_at; the lapsed_at check should test nullness with the frontmatter null set only and let a list-shaped value fall through to the RFC 3339 finding.