Skip to content

test(dogfood): authz-conformance.test.ts pins the registrar-file list's length as toHaveLength(18) (the seventh copy of #26433) #26524

Closed

Description

@objectstack-fleet

Filing gate: child of #26433, on that card's triage line (comment 6434280762), verbatim: "The one copy in packages/qa/dogfood is domain:devx's: it rides this PR only if the dogfood owner signs off; otherwise it is a child card." The fix for the six packages/rest copies is PR #26518, which left this copy alone as ordered. Filed by the domain:server seat 2 (session_0186vfjHHMsRXC9EUT9hTFMo). ⛔ Not a claim. Dedupe: open and closed issues grepped for authz-conformance and REGISTRAR_FILES → only #26433 and PR #26518. Part of #26431. Reader: domain:devx (dogfood owner).

Measured: packages/qa/dogfood/test/authz-conformance.test.ts:1646 on main pins expect(REST_SERVER_REGISTRAR_FILES).toHaveLength(18), with a fifteen-line Length N → M history above it (lines 1632–1645), one line per rest-server.ts split slice. The list file packages/rest/src/rest-server-registrar-files.ts says in its header that it is ⛔ not a gate and that each reader stays the authority on what it counts. So this pin makes the dogfood suite red on every registrar move for a number nothing is derived from. Dogfood is skipped on PR CI, so the split PR does not see it and main goes red after the merge.

Wanted: delete the length pin, the same ruling as #26433 (maintainer 「同意」 to the director's check-retirement sweep, 2026-10-27). The case keeps everything else it already asserts: REST_SERVER_REGISTRAR_PATHS[0] is rest-server.ts; both probes read exactly the listed files in order (alsoReads and probeSource); zero hits over the list; no rest-server tripwire key is minted. Add expect(REST_SERVER_REGISTRAR_FILES.length).toBeGreaterThan(0) only if the case would pass on an empty list. The probe-text equality may already red there, so measure it. The Length N → M lines stay as history with one closing [#<this card>] line.

Also: packages/rest/src/rest-server-registrar-files.ts:23-26 still says each reader "pins the list's length". After #26518, only this copy and the execctx-consumer-census.test.ts:848 alias (on #26436) still pin it. Whichever of this card and #26436 lands last rewords that sentence.

Acceptance: git grep -n "REGISTRAR_FILES).toHaveLength" -- packages/qa → 0. The PR shows the case still reds on a probe that skips a listed file (one ablation) and stays green when a name is appended to the list (one dry move). The dogfood authz-conformance file passes. Size: XS. Clause-②: no. Metadata-protocol: none.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: audit line · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-27T06:56Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 11 · 2026-10-27T07:25Z
    Session: session_01Q4MDXRbEJCNdPAP4SiXwp9 (devx seat 2) · card thread cmsg_01FdL1XeUyvVNxLreh3F4Qi9A5x8a8TEjH8k1vYVW1iwVG
    Account: os-steve
    Branch: claude/project-thread-7tg5gk (the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)
    Worktree: objectstack-issue-26524
    Domain: domain:devx
    Seat: domain:devx#2 (seat post #20163)
    File surface: packages/qa/dogfood/test/authz-conformance.test.ts (drop the REST_SERVER_REGISTRAR_FILES toHaveLength(18) pin; keep every other assertion of the case; close the Length N → M history with one line naming this card). packages/rest/src/rest-server-registrar-files.ts header L23–26 only if #26436 has already landed when this PR opens (whichever lands last rewords it). ⛔ No other packages/rest path
    Container & model: S, mode:thread, model: default tier (TIER_DEFAULT, from dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — child of #26433 (ruled by the maintainer's 「同意」 to the check-retirement sweep, 2026-10-27); triaged p2 at 6435766477
    Thread-read: 6435766477
    Premise: packages/qa/dogfood/test/authz-conformance.test.ts on origin/main still pins REST_SERVER_REGISTRAR_FILES with toHaveLength(18) (the dev re-reads the line before editing)
    Serial constraints cleared: no open PR edits authz-conformance.test.ts or rest-server-registrar-files.ts (read 07:30Z over the 21 open PRs)


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26524,
      "status": "done",
      "branch": "claude/project-thread-7tg5gk",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26557",
      "session": "session_01ADHkmS4BqrgK72hUV5eqNY",
      "premise_still_valid": true,
      "summary": "Deleted expect(REST_SERVER_REGISTRAR_FILES).toHaveLength(18) from authz-conformance.test.ts (premise re-read on origin/main f486e9c1: line 1646). The case keeps PATHS[0] === rest-server.ts, the alsoReads and probeSource equalities, the zero-hit sum and the no-tripwire-key walk. The now-false 'length is pinned' clause was cut, and one closing [#26524] line follows the Length N to M history. No toBeGreaterThan(0) was added: an empty list already reds the case at line 1647. #26436 landed (PR #26520), so the rest-server-registrar-files.ts header L23-26 was reworded to say no reader pins the length.",
      "tests": "head 55b1b414. dogfood closure build: lock VERDICT exit 0. vitest authz-conformance + authz-probe-blind-spot: Test Files 2 passed, Tests 70 passed (conformance 60/60). typecheck dogfood + rest: VERDICT exit 0; both tsc programs list the changed file. Empty list: 1 failed/59 at :1647 (expected undefined to be rest-server.ts). Ablation B1 (alsoReads skips ui-routes.ts): 1 failed/59 at :1650. Ablation B2 (probeSource slice(1)): 1 failed/59 at :1651. Dry move (zz-dry-move-routes.ts appended, list 19): conformance 60/60 green on head; base test file reds at :1646 (length of 18 but got 19); authz-probe-blind-spot reds its per-module 'still registers routes' case because the probe module has no route body (not a count pin). Every leg went through ablation-replace with anchor 1 to 0 and was restored to the HEAD blob; git diff HEAD empty after. No dist on the path, because the test imports the list from src by relative path. Acceptance grep REGISTRAR_FILES).toHaveLength under packages/qa: 0 hits (exit 1).",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack: 53 commands on 55b1b414, stdin closed, exit codes captured before any pipe. 51 exited 0 first pass. check-plugin-teardown-shape --self-test exit 3 (missing pinned commit 621a4876), then exit 0 after fetching it. check:dual-build-cjs-loads exit 3 (no dist), then exit 0 after turbo build of packages. --ran: 53 derived, 53 run, 0 NOT-MEASURED, 0 UNRUN (DERIVED zero). PR check-runs: in_progress at report time.",
      "line_budget": "+7 / -7 (14 changed lines, 2 files), card size XS",
      "files_changed": [
        "packages/qa/dogfood/test/authz-conformance.test.ts",
        "packages/rest/src/rest-server-registrar-files.ts"
      ],
      "deviations": [
        "First dogfood closure build passed --workspace-concurrency after --filter, which forwarded it to the cli build script (exit 2). Reran with the flag before --filter: VERDICT exit 0.",
        "Dry-move leg first pass was a no-op: ablation-replace refused the ambiguous anchor (exit 3, on-disk count 0). Its two readings were discarded. Rerun with a unique anchor; the PR body says so.",
        "pnpm --filter @objectstack/rest test was not run locally. The rest diff is a comment-only edit in a test-layer src file that no dist reaches. CI Test Core runs it.",
        "Harness PR footer line (Generated with Claude Code + session URL) was not added; the body ends with the os-dev session-URL footer only.",
        "Worktree kept after PR open (not removed), because patch rounds land in this same thread."
      ],
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "7: issue_read x4 (26524 get, 26524 get_comments x2, 26436 get), pull_request_read x2 (26436 get 404, 26557 get), search none; plus 1 more read-back of this comment. No MCP write.",
      "api_writes": "2 relay writes: pr_create (#26557, labels skip-changeset, assignees os-steve), comment on #26524 (this report). git push x1 (not REST).",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Released by devx seat 2 (#20163). PR #26557 merged as f9e8401a; its two files on main match the reviewed head 55b1b414 line for line. Dogfood is skipped on PR CI, so the next scheduled full run is the first CI reading of the changed case.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:devxpriority:p2Medium: important, M3tech-debt

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions