Skip to content

chore(devx): lower @objectstack/lint TEST_DEBT to its measured 19 and re-tally its note (#8728) - #8980

Merged
os-project-manager merged 2 commits into
mainfrom
claude/issue-8728-lint-test-debt-lower
Aug 16, 2026
Merged

chore(devx): lower @objectstack/lint TEST_DEBT to its measured 19 and re-tally its note (#8728)#8980
os-project-manager merged 2 commits into
mainfrom
claude/issue-8728-lint-test-debt-lower

Conversation

@os-project-manager

Copy link
Copy Markdown
Collaborator

Fixes#8728

@objectstack/lint's TEST_DEBT entry recorded 20 where tsc measures 19. Lowered
via the gate's own affordance, and the entry's note — stale in both the number it
claimed to explain and the pile it described — re-tallied from a fresh measurement rather
than rescaled.

Diff is one errors: digit, one rewritten note, and one corrected comment block. No
package source changes.

Measured, and reproducible

Base 585edf738, closure built exactly as lint.yml builds it
(pnpm exec turbo run build --filter='./packages/*' --filter='./packages/*/*', 70/70 tasks
successful, exit 0):

ℹ @objectstack/lint: TEST_DEBT records 20, tsc now reports 19 (-1) -- the entry can be lowered.
check-type-check-coverage --lower: 1 ledger entr(ies) lowered to their measurement.
↓ TEST_DEBT @objectstack/lint: 20 -> 19
check-type-check-coverage --re-measure: OK — 33 ledger entr(ies) re-measured in 213.1s,
1926 raw tsc error(s) total, none above its recorded number.

Exactly one entry moved--lower reported one lowering and the diff is one digit.
The 33 entries / 1926 raw errors independently reproduce the reading recorded on the
now-closed duplicate #8922 (taken at f9811727d, 211.5s, 1926 raw) on a different head.
That is the bar the 2026-08-08 non-reproducibility incident sets for any number that carries
a policy: three readings of this very entry — 19, 39 and 147 — were in circulation in one
day, all from unbuilt closures.

The note was wrong by 22, not just out of date

The card called the note stale in its composition. It was worse: it ended
RECORDED 42 is a bootstrap margin (+10 over 32 ...) beside an errors field reading
20, and its stated composition (TS7006 x22, TS2835 x6, TS6059 x4) summed to 32.

Attributed, not guessed: #7888 / PR #8225 lowered this entry 42 to 20 against a measured
20 at b5e09b21, and that PR states it deliberately left the note describing the larger pile
because "inventing a composition for errors that are gone is the one thing this ledger's own
rules forbid". So the note has been describing a 32-error pile through two tightenings. The
tally below is the first one taken at the size the entry actually is.

old notemeasured now
TS70062211
TS283565
TS605943
total3219

Per file: validate-semantic-roles.test.ts x5, validate-dashboard-action-refs.test.ts x4,
validate-translatable-sections.test.ts x3, validate-filter-tokens.test.ts x3,
validate-capability-references.test.ts x3, validate-managed-api-methods.test.ts x1.

The old note's claim that "10 of the 32 sit in src/validate-visibility-predicates.test.ts"
is now false — that file reports none — and is corrected rather than carried forward.

The −1 is attributed

#8515 / PR #8610 dropped exactly one live import from
validate-translatable-sections.test.ts:

-import { TaskViews } from '../../../examples/app-showcase/src/ui/views/task.view.js';

while keeping the other three. That is the TS6059 that left: the surviving three name
contact.object.ts, contact.view.ts and system/translations/index.ts — exactly the three
example files those tests still import. Nothing here is recorded as unattributed.

The bootstrap-margin block was stale too, and that mattered more

The top-of-ledger BOOTSTRAP MARGINS block still enumerated five packages as "recorded at
their measurement PLUS TEN, and each says so in its own note". None of the five carries
that slack today
— verified against this run, not recalled:

packagerecordedstatus
@objectstack/rest155tightened 163 to 155 (#6939 / #7038, PR #7248)
@objectstack/lint1942 to 20 (#7888 / PR #8225), 20 to 19 here
@objectstack/mcp53tightened 63 to 53 (#7888 / PR #8225)
@objectstack/service-storage51tightened 52 to 51 (#7888 / PR #8225)
@objectstack/objectql355never lowered — measures 355 exactly, so its +10 was spent by real growth

This is the block documenting the ledger's only sanctioned slack, so a roster naming five
packages where the tree supports none is the more consequential of the two staleness bugs.
It is rewritten to keep the ruling's history and roster while stating plainly that it is not
a current inventory. The final --re-measure confirms the end state the block now claims:

surplus: none — every entry sits exactly at its measurement, so any new error is red.

Why now rather than someday

While the gap was open, @objectstack/lint's test layer had exactly one error of free
headroom
— nothing else reads that layer, so a genuine new type error there landed green.
#6376 is the precedent the gate itself cites: driver-mongodb's 33 swallowed an entire
signature reversion.

Verification

All gates run at final commit 81acf6f1f, the head this PR pushes:

  • pnpm check:type-check-debtgreen. 33 ledger entr(ies) re-measured in 212.3s, 1926 raw tsc error(s) total, none above its recorded number and surplus: none.
  • pnpm check:type-check-coveragegreen. Self-test: 23 semantic + 24 observation + 25
    re-measure + 28 built-closure + 9 auto-lowering cases hold.
  • pnpm check:nul-bytesgreen (5935 text files, no raw control bytes). Explicit
    control-character self-scan over the changed file also clean.
  • Gate list re-derived against the actual changed path via
    node scripts/pm/dispatch-gates.mjs scripts/check-type-check-coverage.mjs: it returns
    these same two families and adds none.

No changeset: scripts/ is not published package source, so this releases nothing and the
PR carries skip-changeset.

Out of scope — reported, not touched

Two of the five margin notes still narrate a margin in the present tense against an errors
field that no longer carries one — @objectstack/mcp ("RECORDED 63 is a bootstrap margin")
and @objectstack/service-storage ("RECORDED 52"). Stale narration, not stale arithmetic:
both errors values are their exact measurements. Same defect class as this card, left to
their own cards because this one is scoped to the lint entry; the corrected block names them
so the next reader is not misled meanwhile. Flagged for the PM to file.


Generated by Claude Code

@vercel

vercelBot commented Aug 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 16, 2026 3:47am

Request Review

@os-project-manageros-project-manager added skip-changeset PR has no user-facing published change; bypasses the changeset gate and removed size/s labels Aug 16, 2026 — with Claude
@os-project-manager
os-project-manager marked this pull request as ready for review August 16, 2026 03:49
@os-project-manager
os-project-manager added this pull request to the merge queueAug 16, 2026
Merged via the queue into main with commit dca52daAug 16, 2026
29 checks passed
@os-project-manager
os-project-manager deleted the claude/issue-8728-lint-test-debt-lower branch August 16, 2026 04:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

@objectstack/lint's TEST_DEBT entry is a surplus after #8515 — recorded 20, measured 19

2 participants

@os-project-manager@claude