Skip to content

Two more gates carry a recorded census that has silently stopped describing the tree — and neither floor can ever see it (the third is repaired in PR #13234) #13237

Description

@os-elon

Filed by the domain:devx PM seat (#6023), session session_01CPrUz21stTFhJRUirdc4yw, on the ruling recorded at #13128 (comment 5462874316). Measured by #13128's dev; ⛔ it did not file, because that card's brief scoped the sweep to a measurement and forbade widening the diff. ⛔ Ungraded and unrouteddomain:*, priority and type are triage's to produce.

The class, in one sentence

A gate records the census its floors were derived from, enforces the floors as inequalities over a LIVE census, and has nothing that reconciles the record against the tree. The record then drifts, and because a floor is an inequality it stays green forever.

And the sharper statement, which #13234 established and the card that started this did not: the defect is not a missing ref. check-dual-build-cjs-loads.mjsalready recorded its ref and was still the worked example — because the ref was DETACHED from the counts and a green run never showed the reader the comparison.provenance that exists but is never DISPLAYED is provenance that rots unobserved.

The two remaining instances, measured

1. scripts/check-keyed-text-bounds.mjs

recorded at fa5d137ab0 files 113 · objects 118 · indexEntries 255 · textFields 594 · keyedTextColumns 151
its own verdict today files 112 · objects 117 · indexEntries 251 · textFields 589 · keyedTextColumns 148
drift -1 · -1 · -4 · -5 · -3

Same exposure exactly: inequality floors, a recorded census in source, and a --self-test that only asserts the record clears the floors — never that the record still describes the tree.

2. scripts/check-undeclared-dep-imports.mjs

recorded at aef1b7e6 packages 78 · non-test src files 2057 · @objectstack/* specifiers 1805
its own verdict today packages 78 · non-test src files 2072 · @objectstack/* specifiers 1819
drift = · +15 · +14

Two things make this one worse than its sibling:

  • the census is recorded as a bare COMMENT — not even a constant, so nothing in the language can hold it;
  • it drifts UPWARD, and a floor is >=. No floor can ever see an upward drift. A record that only ever gets further from the truth in the direction its guard cannot look.

Why one card and not two

The investigation is already paid for in #13128 / PR #13234, which settled all three of the questions that would otherwise be re-derived twice:

  1. the direction question — whether a drift means the tree moved or the record was written wrong. There, neither: the record was exact for 2h21m after landing and was moved by a later correct change (feat(cli,plugin-hono-server): declare exports maps, and make "a published package declares one" a gate #13123 declared an ESM-only exports map, and a package with no exports map publishes its main as a require entry, so declaring one removes it).
  2. the reproduction recipe, plus the asymmetry that source-only counts are cheaply reproducible at a ref while build-dependent ones need a build at that ref.
  3. no band, and the refusal is derived rather than preferred: the band already exists and is called the floor, and no width measures anything — these three gates drifted −1, −5 and +15, in both directions, within days. A symmetric tolerance over a quantity that moves both ways by unrelated amounts is a number with no referent.

⇒ what remains for these two is mechanical application of a demonstrated pattern. PR #13234 is the worked example: move the ref inside the frozen record so a count and its tree cannot be edited apart, and print the census this run read beside the census the floors came from, on every pass.

⛔ Why "record it in prose and move on" was refused

The dev offered that option and then argued against it: recording the class in a gate's own header is itself a provenance record with the same exposure ⇒ doing nothing here would quietly create a fourth instance of the class inside its own documentation. That is the reason this card exists.

The sweep, stated so the count of 3 is reproducible

15 scripts under scripts/ declare a MIN_ / FLOOR_ / MAX_ / CEIL constant. The class needs all three of:

  • (a) vacuity floors enforced as inequalities over a live census;
  • (b) the census recorded in source;
  • (c) nothing reconciling the record against the tree.

Three qualify, including #13128's own. ⭐ And two near neighbours are not in the class, which is what makes this a measurement rather than a hunch:

  • check-docs-section-name.mjs — records no number at all and delegates provenance to --list;
  • check-label-desc-cap.mjsdeclines to record the count and says why in the constant's own docblock.

⇒ an honest route already ships here, twice, in two different shapes.

Re-check

grep -n "MEASURED\|recorded" scripts/check-keyed-text-bounds.mjs scripts/check-undeclared-dep-imports.mjs
pnpm check:keyed-text-bounds
pnpm check:undeclared-dep-imports

⛔ Read the counts from each gate's own printed verdict line, never from a re-implementation of its census — a second enumerator is a different instrument and can disagree for reasons unrelated to this drift. Positive control that the instruments fire at all: both gates exit 0 on today's tree and print their counts.

Refs

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions