Skip to content

test(dogfood): re-measure the authz census for the approval record-lock read - #26406

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

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

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Yibo Wang · project thread
Fixes #26400

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

Census bookkeeping for the route #26361 added, GET {basePath}/approvals/records/:object/:recordId/lock in packages/rest/src/approvals-routes.ts. Each figure below was measured with deriveProbeFileCensus() on this tree, not copied from the card or from the server seat's reading (6431978738). The reading agreed with the server seat on every figure it gave.

Row / figure Before After Why
rest-route-ledger.ts population / reachable / blindSpot 80 / 80 / 0 81 / 81 / 0 one new ledger row carrying family: 'approvals', a family the other approval rows already carry
rest-route-ledger.ts keys 18 18 no new family, so no new key
rest-route-ledger.ts controls route: ' / family: ' 80 / 80 81 / 81 the same row
rest-server.ts population / reachable / blindSpot 69 / 19 / 50 70 / 19 / 51 a new blind spot: one direct this.routeManager.register( site in registerApprovalsEndpoints, outside registerMetadataEndpoints and the /meta subset, the same as its seven siblings
rest-server.ts controls this.routeManager.register( / approvals-routes.ts: … / enforceAuth 62 / 7 / 115 63 / 8 / 116 the new site, and its handler opens with this.enforceAuth(…) (the only enforceAuth line #26361 added)
BLIND_SPOT_TOTAL_STATIC / _RUNTIME 64 / 69 65 / 70 one call site and one runtime mount; it is a direct registration, not a route factory, so the 5-mount static/runtime delta holds
authz-conformance.matrix.ts docblock (the figure #17111 parses) 80 rows / 18 families 81 rows / 18 families plus a line in the dated drift note

Every edited figure has a provenance comment in the row, in the shape the earlier re-measurements use.

Why

Dogfood Regression Gate (1/3) and (3/3) have been red on every main push run that runs them since #26361 (6a2866af). This is the main-red stop-bleed under convention ①. It moves the census forward and does not revert #26361.

Tests

Both files, under the verify lock, on 1cc4fa20:

before (origin/main b33dd25): 2 files failed, 10 tests failed, 98 passed
Test Files  2 failed (2)
     Tests  10 failed | 98 passed (108)
os-verify-lock: VERDICT command-exit 1
AssertionError: expected 81 to be 80        (rest-route-ledger.ts population)
AssertionError: expected 70 to be 69        (rest-server.ts population)
control "route: '" moved in packages/rest/src/rest-route-ledger.ts: expected 81 to be 80
control "this.routeManager.register(" moved in packages/rest/src/rest-server.ts: expected 63 to be 62
"packages/rest/src/rest-route-ledger.ts: docblock says 80 rows, the table holds 81"   (#17111 pin and its 5 doctoring cases)
after (1cc4fa2): 2 files passed, 108 tests passed
Test Files  2 passed (2)
     Tests  108 passed (108)
os-verify-lock: VERDICT command-exit 0 · held the lock 21s

Acceptance notes

Verification

Local derived gate set (dispatch-gates.mjs on 1cc4fa20, 50 families): 48 exit 0, 2 NOT MEASURED, 0 red.

NOT MEASURED (exit 3, prerequisite not met in this container)
  • node scripts/check-plugin-teardown-shape.mjs --self-test: its positive control is pinned to a commit that this shallow clone cannot reach.
  • pnpm check:dual-build-cjs-loads: it reads built output, and seven packages outside this diff have no dist/.

Both run in CI's Lint & Repo Gates. --ran reconciliation: 50 derived famil(ies) accounted for — 48 run, 2 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. (CI-owned)
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset. (@objectstack/dogfood is private, test files only: skip-changeset)
  • 6. packages/spec touched: n/a.
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English, except the 维护者速读 block.
  • The Before Submitting list in CONTRIBUTING.md is done.

🤖 Generated with Claude Code


Generated by Claude Code

…ck read

The record-lock route added one ledger row (80 -> 81, family `approvals`,
blind spot 0) and one direct registration site in approvals-routes.ts
outside registerMetadataEndpoints (rest-server.ts row 69/19/50 -> 70/19/51,
register 62 -> 63, enforceAuth 115 -> 116; totals 64/69 -> 65/70). The
matrix docblock's REST ledger figure moves to 81 rows / 18 families.

Claude-Session: https://claude.ai/code/session_01WGufzfNhdx3xRKeaa8e7JB
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 27, 2026
@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 48a9d9db9bedba7c47abbff22574fa4e82bb6bc9 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · domain:spec seat 1 (#6017) · session session_01WGufzfhobWEgUUrjz4rrbh · 2026-10-27T02:32Z

Head 1cc4fa2059269ec9804c072a6370f878003dc6ee. Card #26400 (main-red anchor, p0), claim 6432019740, dev report 6432279665.

  • Shape: draft, base main, Fixes #26400. Two files, packages/qa/dogfood/test/authz-conformance.matrix.ts and packages/qa/dogfood/test/authz-probe-blind-spot.census.ts, both inside the claim's file surface. No packages/rest/**. skip-changeset (the dogfood package is private). check-governed-merges --pr 26406: NOT governed, 51 changed lines.
  • Contract faces: none. These are test-only measurement pins: no published surface, no governed path, Clause-②: no. CI plus this seat's read are enough.
  • Diff read against the cause (feat(plugin-approvals,rest,client): a record-anchored approval lock read, { locked } for every caller who can read the record #26361):
    • The ledger row goes 80/80/0 → 81/81/0, with route: ' and family: ' at 81 and keys 18. The new row carries family: 'approvals', which its siblings already carry.
    • The rest-server.ts row goes 69/19/50 → 70/19/51. this.routeManager.register( goes 62 → 63, approvals-routes.ts 7 → 8, and enforceAuth 115 → 116.
    • Totals go 64/69 → 65/70, and the matrix docblock now reads 81 rows / 18 families with a dated history line.
    • Every figure has a [#26400] note naming its cause. That is the re-read the census header asks for, not a bare bump.
    • The new site sits in registerApprovalsEndpoints, not registerMetadataEndpoints, so recording it as one more blind spot matches its seven sibling approval routes.
    • Server seat 2's reading 6431978738 agreed on the ledger row and left reachable to measurement. The dev measured it with deriveProbeFileCensus().
  • Gates:
    • Both files are green under the verify lock on the head, 108/108 (before: 10 failed).
    • Derived local gates: 48 exit 0. Two are NOT MEASURED (plugin-teardown self-test on a shallow clone, dual-build-cjs-loads with no dist), and CI's lint lanes cover both.
    • Check-runs at arming: the fast set is green (Governed Surface Queue Guard, Check Changeset, branch-claim, single-writer, liveness, dispatch-gates lint). Build, Test Core and the lint/type lanes are in progress. Auto-merge waits on the required set.
  • Accepted deviations: shards 1/3 and 3/3 were not run whole, which is accepted for a pin-only diff. The two failing files are the whole red. Acceptance on the card is the first main push run that runs the dogfood legs after landing, plus the next scheduled run, and the seat reports both.
  • Landing: main-red stop-bleed, Tier S, not governed. pr_ready + automerge_enable in this act.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 27, 2026 02:33
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 27, 2026 02:33
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 56b0a58 Oct 27, 2026
51 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-78ytp9 branch October 27, 2026 03:18
zhuangjianguo pushed a commit that referenced this pull request Oct 27, 2026
Brings in main's re-measured authz census (#26406), the fix for main's
own dogfood red (#26400) that the full battery on this branch showed.
Main's automation skill change (#26390) left the approvals reference
two bytes under its token ceiling, so the queue approver row is
shortened to fit (members of the named ownership queue at node entry;
an empty queue adds nobody).

Claude-Session: https://claude.ai/code/session_01GTntg542RUmmRRbMY6wMZD
Co-authored-by: Claude <noreply@anthropic.com>
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

Projects

None yet

2 participants