What is wrong
scripts/tenant-audit-census.mjs makes two mutually exclusive statements about how its own generated counts file merges. Both are on origin/main today.
Line 1230, in the docblock of renderCountsFile():
That is what makes merge=os-regen the right resolution for it, the same as its strictness-ledger sibling
Line 1259, in the prose that same function emits into the generated file itself:
This file is deliberately NOT merge=os-regen: that driver resolves an artefact's gen:/check: scripts in @objectstack/spec only, and these are root-level tooling. The gate is the backstop
One of the two is necessarily wrong. The docblock is the wrong one.
Measurement
git check-attr merge against origin/main, using the docblock's own named comparator as the lit control, read 2026-09-18T0744Z:
| path |
merge attribute |
docs/audits/2026-07-unknown-key-strictness-ledger.counts.md — the "strictness-ledger sibling", control, must hit |
os-regen |
docs/audits/2026-08-tenant-audit-write-call-sites.counts.md — the file the docblock describes |
unspecified |
The control hits, so the unspecified reading is a real absence and not a dead instrument. grep os-regen .gitattributes (the authoritative list) carries the 2026-07 path, does not carry the 2026-08 path, and has no docs/audits/** glob that would cover it.
The docblock's parity claim — "the same as its strictness-ledger sibling" — is therefore false by exactly the comparison it names.
The emitted prose is the accurate side, and the backstop it points at is real: scripts/check-tenant-audit-census.mjs exists and runs in .github/workflows/lint.yml at lines 1995-1996 (--self-test, then the live check).
Why it is worth fixing
The docblock is the first thing an author reads before touching this artefact, and it instructs the opposite of the guidance the file ships. Acting on it means registering docs/audits/2026-08-tenant-audit-write-call-sites.counts.md as merge=os-regen in .gitattributes — a registration the emitted prose says is wrong and that the driver cannot service, because scripts/git-merge-regen.mjs resolves an artefact's gen:/check: scripts inside @objectstack/spec and this is root-level tooling.
This was reached in practice rather than hypothetically: while reviewing PR #18943 this seat followed the docblock trail and had begun filing a "missing os-regen registration" card against exactly this path, until the emitted prose contradicted it.
Not introduced by PR #18943
PR #18943 (card #18548) edits this file (+440/-3) and carries both statements forward unchanged, at lines 1566 and 1595 on head 9f183ea780a34c7a2929dfe7bd3a3521e5decef8. The contradiction is present on origin/main independently of that PR, so it is pre-existing and was not treated as blocking for it.
Fix shape
Correct or delete the docblock sentence at scripts/tenant-audit-census.mjs:1230 so the docblock agrees with the prose the same function emits. Prose only: no behaviour change and no .gitattributes change. Whether the two .counts.md siblings ought to merge the same way is a separate question and is deliberately not what this card asks.
Dedup words
merge=os-regen, tenant-audit-census, renderCountsFile, strictness-ledger sibling, check-tenant-audit-census
Generated by Claude Code
What is wrong
scripts/tenant-audit-census.mjsmakes two mutually exclusive statements about how its own generated counts file merges. Both are onorigin/maintoday.Line 1230, in the docblock of
renderCountsFile():Line 1259, in the prose that same function emits into the generated file itself:
One of the two is necessarily wrong. The docblock is the wrong one.
Measurement
git check-attr mergeagainstorigin/main, using the docblock's own named comparator as the lit control, read 2026-09-18T0744Z:mergeattributedocs/audits/2026-07-unknown-key-strictness-ledger.counts.md— the "strictness-ledger sibling", control, must hitos-regendocs/audits/2026-08-tenant-audit-write-call-sites.counts.md— the file the docblock describesunspecifiedThe control hits, so the
unspecifiedreading is a real absence and not a dead instrument.grep os-regen .gitattributes(the authoritative list) carries the 2026-07 path, does not carry the 2026-08 path, and has nodocs/audits/**glob that would cover it.The docblock's parity claim — "the same as its strictness-ledger sibling" — is therefore false by exactly the comparison it names.
The emitted prose is the accurate side, and the backstop it points at is real:
scripts/check-tenant-audit-census.mjsexists and runs in.github/workflows/lint.ymlat lines 1995-1996 (--self-test, then the live check).Why it is worth fixing
The docblock is the first thing an author reads before touching this artefact, and it instructs the opposite of the guidance the file ships. Acting on it means registering
docs/audits/2026-08-tenant-audit-write-call-sites.counts.mdasmerge=os-regenin.gitattributes— a registration the emitted prose says is wrong and that the driver cannot service, becausescripts/git-merge-regen.mjsresolves an artefact'sgen:/check:scripts inside@objectstack/specand this is root-level tooling.This was reached in practice rather than hypothetically: while reviewing PR #18943 this seat followed the docblock trail and had begun filing a "missing os-regen registration" card against exactly this path, until the emitted prose contradicted it.
Not introduced by PR #18943
PR #18943 (card #18548) edits this file (+440/-3) and carries both statements forward unchanged, at lines 1566 and 1595 on head
9f183ea780a34c7a2929dfe7bd3a3521e5decef8. The contradiction is present onorigin/mainindependently of that PR, so it is pre-existing and was not treated as blocking for it.Fix shape
Correct or delete the docblock sentence at
scripts/tenant-audit-census.mjs:1230so the docblock agrees with the prose the same function emits. Prose only: no behaviour change and no.gitattributeschange. Whether the two.counts.mdsiblings ought to merge the same way is a separate question and is deliberately not what this card asks.Dedup words
merge=os-regen,tenant-audit-census,renderCountsFile,strictness-ledger sibling,check-tenant-audit-censusGenerated by Claude Code