Development record
an empty collection in superseded_by is an absence to the gate and a rendered link to record Describe so the two readers disagree about whether the record names a successor
an empty collection in superseded_by is an absence to the gate and a rendered link to record Describe so the two readers disagree about whether the record names a successor
Found by the round-5 ruthless review, on a call site the isAbsentValue widening in iss-2608301649337965 reached without being audited.
checkRecordSchema's supersession leg reports a superseded_by that parses to
no handle, and it tests absence with isAbsentValue — deliberately, because
superseded_by: [] is this record's house spelling for an empty list. So both
empty flow collections are an absence to the gate and draw no finding.
record.describeADR does not share that predicate. It gates the link on
sup != "" && !frontmatter.IsNull(sup), and none of [], {} or !!null
is in the YAML null set, so it renders Links["superseded_by"] = "[]" — a successor link
whose target is a bracket pair. One record, two readings: the gate says the ADR
names no successor and the dispatcher shows one.
The [] half is pre-existing; the {} and !!null halves arrived with the widening, which
made the two spellings agree with each other rather than with the dispatcher.
Both are the same defect and neither is separately fixable, because the
disagreement is between the two predicates and not between the two spellings.
Remedy: give the dispatcher the same emptiness question the gate asks, so one
value gets one answer — not a second special case in isAbsentValue, which
would leave the dispatcher rendering [] as a link.
Grounds
- pursued: the dispatcher and the gate agree on whether a record names a successor; an ADR or intent whose superseded_by the gate reads as absent but abcd renders as a link, as TestDescribeReadsAnEmptySupersededByAsNoSuccessor asserts for [], {}, !!null, [ ] and ~, would show it wrong
Frontmatter
| id | iss-2608301744300631 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608301744300631-an-empty-collection-in-superseded-by-is.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-2608301649337965isAbsentValue 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
- iss-2608301813259334three nits from the itd-189 delta ruthless review including a godoc whose ordinals no longer match the code order