This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

isAbsentValue reads an empty flow sequence as absent but not an empty flow mapping or an explicit null tag so a blank grounds passes the gate and silences the report

issueresolvedmajoriss-2608301649337965

isAbsentValue reads an empty flow sequence as absent but not an empty flow mapping or an explicit null tag so a blank grounds passes the gate and silences the report

Found by the round-5 security review. Branch-introduced.

isAbsentValue special-cases the empty flow SEQUENCE and not the empty flow MAPPING, and knows no explicit null tag:

if strings.HasPrefix(v, "[") && strings.HasSuffix(v, "]") { ... }

So grounds: {}, grounds: { }, grounds: {} # c and grounds: !!null reach checkRecordRequiredFields as present and non-blank, draw zero findings, and the admission is accepted. admittedProposals then keys the pair as admitted and the proposal vanishes from the outstanding report: a groundless admission answers a proposal and nothing says so.

What makes this an asymmetry rather than a missing feature is the siblings. [], [ ], "", '', " ", ~, Null, |, |+ and >- are ALL caught. One flow collection is handled and the other is not.

It also falsifies two claims this branch has already shipped. The resolution note on iss-2608300935218982 says an empty, whitespace-only or quoted-whitespace required field is refused in EVERY store that shares the check; and commands/capture.md tells the user that record_schema refuses an admission with a blank grounds. Both are currently false. capture/blankrequired_parity_test.go enumerates exactly four blank spellings, and neither of these is among them.

Remedy: one branch beside the flow-sequence one, plus the two spellings added to blankSpellings and to the schema tests.

Frontmatter

idiss-2608301649337965
typeissue
lifecycleresolved
severitymajor

mentions5