Skip to content

test(cli): set the command-population vacuity floors at about two thirds of the measured counts - #26555

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-hojl34
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-hojl34

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Leehom · project thread

Fixes #26523

Part of #26444 (the CLI half; the ui half and the two-sided baselines are other lanes' children, and the spec liveness floor is the spec seat's).

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

Each anti-vacuity floor in the two command-population pins moves to about two thirds of its count, re-measured on origin/main 185512cc (2026-10-27), rounded down:

File Floor Before Measured After Margin
exit-signal.pin.test.ts POPULATION_FLOOR (command modules) 65 72 48 24
exit-signal.pin.test.ts SITE_FLOOR (signal-raising calls inside a try) 131 164 109 55
exit-signal.pin.test.ts JSON_FACE_FLOOR (JSON-capable commands) 46 53 35 18
refusal-renders-once.test.ts FILE_FLOOR (command modules) 60 72 48 24
refusal-renders-once.test.ts PRINTER_FILE_FLOOR (modules calling a refusal printer) 50 64 42 22
refusal-renders-once.test.ts ERROR_FILE_FLOOR (modules raising this.error) 3 3 1 (non-empty) 2
  • A population of 3 or fewer keeps a non-empty floor rather than a fraction, so ERROR_FILE_FLOOR is 1 under the existing toBeGreaterThanOrEqual, which is > 0.
  • Each floor is written once, as one constant, with a one-line comment naming the measured value, the date and the commit. The docblocks above them now describe them as vacuity floors and drop the per-commit count history the old floors were derived from.
  • The three floor messages that read "than this pin was widened over" (or "written over") now read "than the vacuity floor", since the floor is no longer that count.

Why

A floor equal to today's count turns every legitimate deletion of a command into a red run and a floor bump (#26444, after #26343 needed five bumps for one deletion). A vacuity floor only needs to catch a discovery or scan that silently resolves nothing.

Tests

  • Each floor still reds on an emptied population. One filter-to-empty ablation per floor, through scripts/ablation-replace.mjs on committed f78d7c29. Each landed (anchor 1 to 0), turned exactly one test red with the floor's own message, and was restored to the HEAD blob with git diff HEAD empty.
  • Deleting one CLI command keeps every floor green. src/commands/datasource/introspect.ts was deleted and both files were run. It is the worst single deletion for these floors: it is a command module, a refusal-printer module, and one of the three this.error modules. Result: 2 files, 126 of 126 tests green. The file was then restored to its HEAD blob.
  • Control on the base. The same deletion with both files at 185512cc reds ERROR_FILE_FLOOR (expected 2 to be greater than or equal to 3). This is the defect the card describes.
  • Both files at HEAD: 2 files, 127 of 127 tests green.
Ablations, one per floor (f78d7c2)
POPULATION_FLOOR   expect(POPULATION.length,  ->  expect(POPULATION.filter(() => false).length,
  AssertionError: fewer commands discovered than the vacuity floor: expected 0 to be greater than or equal to 48
  Tests  1 failed | 115 passed (116) · ok restored: blob == HEAD (e63791dc05e7)
JSON_FACE_FLOOR    POPULATION.filter((c) => !c.faces...)  ->  POPULATION.filter((c) => false && !c.faces...)
  AssertionError: fewer JSON-capable commands labelled than the first population held: expected 0 to be greater than or equal to 35
  Tests  1 failed | 115 passed (116) · ok restored: blob == HEAD (e63791dc05e7)
SITE_FLOOR         [...FLOW.values()].reduce(  ->  [...FLOW.values()].filter(() => false).reduce(
  AssertionError: fewer signal-raising calls inside a try found than the vacuity floor: expected 0 to be greater than or equal to 109
  Tests  1 failed | 115 passed (116) · ok restored: blob == HEAD (e63791dc05e7)
FILE_FLOOR         expect(FILES.length,  ->  expect(FILES.filter(() => false).length,
  AssertionError: fewer command modules than the vacuity floor: expected 0 to be greater than or equal to 48
  Tests  1 failed | 10 passed (11) · ok restored: blob == HEAD (6256e9a8312e)
PRINTER_FILE_FLOOR SCANS.filter((s) => s.scan.printerCalls > 0)  ->  SCANS.filter((s) => false && s.scan.printerCalls > 0)
  AssertionError: refusal printers not found: expected 0 to be greater than or equal to 42
  Tests  1 failed | 10 passed (11) · ok restored: blob == HEAD (6256e9a8312e)
ERROR_FILE_FLOOR   SCANS.filter((s) => s.scan.errorCalls > 0)  ->  SCANS.filter((s) => false && s.scan.errorCalls > 0)
  AssertionError: `this.error` not found: expected 0 to be greater than or equal to 1
  Tests  1 failed | 10 passed (11) · ok restored: blob == HEAD (6256e9a8312e)
One-command deletion dry run, and the base control
HEAD f78d7c29, src/commands/datasource/introspect.ts deleted:
  vitest exit 0 · Test Files 2 passed (2) · Tests 126 passed (126)
  restored blob 3d03b9378f8e == HEAD blob; git diff HEAD empty

base 185512cc test files, same deletion:
  FAIL test/refusal-renders-once.test.ts > ... > the population is not vacuous — the floors hold
  AssertionError: `this.error` not found: expected 2 to be greater than or equal to 3
  Test Files 1 failed | 1 passed (2) · Tests 1 failed | 125 passed (126)

Acceptance notes

  • The premise had partly drifted. On 185512cc, five of the six floors already sat below today's counts (65 of 72, 131 of 164, 46 of 53, 60 of 72, 50 of 64). The card's "equal to the measured values" matches the counts the old docblocks recorded, not today's. Only ERROR_FILE_FLOOR still equalled its count (3 of 3), and the base control shows that one deletion red it. All six were moved anyway, by the parent's rule ("every anti-vacuity floor moves to roughly two thirds of today's value") and this card's acceptance (every floor below its re-measured value by a stated margin).
  • Both files floor the same population. The command-module population (72) is floored in both files, once in each. A constant shared between the two files would need a helper module outside the claimed file surface, so it was not added.
  • No census reads these floors. A git grep for the two file names outside themselves finds only prose references in refusal-renders-once.e2e.test.ts, and no ledger carries their values. No open PR touched either file at start or before this PR was opened.
  • Other packages/cli floors, not edited. test/option-b-reader-acceptance.pin.test.ts:312 has floor 38 and measured 38. It equals its count on purpose: its comment says "⛔ never lower it", so it is a raise-only ratchet. test/platform-page-i18n-parity.test.ts:845 has floor 38, measured 40. test/print-metadata-stats-zero-row.test.ts:258 has floor 18, measured 19.

Verification

  • pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2 under the verify lock: 336 files passed and 2 failed, because packages/cli itself was not built yet (published-subpath-console.pin, published-subpath-hook-body.pin say "packages/cli is not built"). After pnpm --filter @objectstack/cli build, those two pass (2 files, 29 tests). That makes 338 of 338 files green, 4890 tests passed and 29 skipped. The integration tier is left to CI: the diff touches only two unit-tier files and no spawn entry.
  • pnpm --filter @objectstack/cli typecheck: exit 0 (check:test-typecheck: OK).
  • eslint --no-inline-config packages/cli: exit 0.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 48 commands on f78d7c29. 47 ran with exit 0. pnpm check:dual-build-cjs-loads exited 3 (PREREQUISITE NOT MET: it needs every package's dist), so it is NOT MEASURED. check-plugin-teardown-shape --self-test first exited 3 on the shallow clone and exited 0 after fetching its positive-control commit. Reconciliation: ✓ dispatch-gates --ran: 48 derived famil(ies) accounted for — 47 run, 1 NOT-MEASURED.

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (not touched)
  • 2. Every name I added uses the casing for its kind. (no names added)
  • 3. No formatter ran; pnpm lint passes. (eslint over packages/cli exit 0)
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. (tests only: skip-changeset)
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (not touched)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English. (the 维护者速读 block is Chinese by the dispatch convention)
  • The Before Submitting list in CONTRIBUTING.md is done.

Generated by Claude Code

…s at about two thirds of the measured counts

Each anti-vacuity floor in the two command-population pins now sits at about
two thirds of its count measured on 185512c (72/164/53 and 72/64/3), so
deleting one command is a green change while an emptied population still
reds. The `this.error` population (3 modules) keeps a non-empty floor.
Each floor is written once, with its measured value and date beside it.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FEkQ5m4bTCRGQcuJTsnyfD
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs.

What this run could not see

Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json ab3c776a957f18f3f61c0fc85dec7180b31bca55 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT · domain:server seat 2 · os-project-manager · session_0186vfjHHMsRXC9EUT9hTFMo · 2026-10-27T08:24Z · head f78d7c29bb · #26523

The maintainer's standing authorisation for landing reviewed PRs, verbatim: 「按照 pm-dispatch 规则复核过的都授权」.

  1. Shape: a draft against main, assignee os-project-manager, skip-changeset (tests only). The body carries Fixes #26523, Part of #26444, Clause-②: no and Metadata-protocol: none, all line-initial. check-governed-merges --pr 26555 reads NOT governed, 60 changed lines. No contract face is touched, so no at-tier review is owed. The card's newest claim (6436024957) names this PR's branch.

  2. Diff against the order (the seat read the whole diff, 2 files, +27 / −33): six floors, each a single constant with a one-line "measured N on date (commit)" comment. Each is about two thirds of the count re-measured on 185512cc, rounded down:

    • exit-signal.pin.test.ts: population 72 → 48, sites 164 → 109, JSON face 53 → 35.
    • refusal-renders-once.test.ts: files 72 → 48, printer files 64 → 42.
    • ERROR_FILE_FLOOR covers a population of 3, so it is a non-empty floor of 1, as the order said.

    Assertion messages and docblocks now say "vacuity floor", and the per-commit count history is dropped. No other assertion changes.

  3. Not weakened: there is one filter-to-empty ablation per floor, six in all. Each reds exactly its own floor's case and was restored to the HEAD blob. The dry run deletes datasource/introspect.ts, the worst single deletion because it is in all three refusal-renders-once populations. Both files stay green at head (126 / 126). On base, the same deletion reds ERROR_FILE_FLOOR (2 < 3), which is the card's defect.

  4. Premise drift, accepted: five of the six floors already sat below their counts on 185512cc. Only ERROR_FILE_FLOOR equalled its count. All six moved under the parent's rule and the card's acceptance; the body records this.

  5. Overlap: none. No other open PR touches the two files (seat's read at this stamp).

  6. Gates: at this stamp every check-run on the head reads success or skipped; none reads failed or in progress. Locally the dev reports:

    • cli unit tier 338 / 338 files, after the package's own build;
    • typecheck and scoped ESLint green;
    • 48 derived gates: 47 exit 0, with check:dual-build-cjs-loads not measured (prerequisite; CI covers it).
  7. Out of scope:


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 27, 2026 08:25
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 27, 2026 08:25
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 1080f07 Oct 27, 2026
53 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-hojl34 branch October 27, 2026 08:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test(floors, cli): CLI command and refusal floors equal today's measured counts, so deleting one command reds them — floors at about two thirds

2 participants