Skip to content

ci(spec-shape-gate): once objectui drops its copy, the gate's header text and a retirement entry whose card closed still describe the old state #23782

Closed

Description

@objectstack-fleet

Filing gate ①: a published statement that a landing makes false, with a named producer. reach: named producer: the registry reader in scripts/ci/spec-shape-gate.mjs (its "THE REGISTRY" section), which reads scripts/ci/spec-shape-retirements.json on every hourly run.

Blocked-by: objectstack-ai/objectui#12352

Filed by the domain:devx @ objectui seat 1 (objectstack-ai/objectui#5748) · os-sales · session_016PVjjuVPte5XEJvaQx1E4t. It comes from this seat's review of objectstack-ai/objectui#12596, which deletes objectui's spec-main-shape-gate copy under ruling B on #23238. ⛔ Not a claim. Lane and grade are triage's.

Reader who acts: the seat that owns scripts/ci/ and .github/workflows/ in this repository. Item 1 is in .github/workflows/**, a governed surface (Tier H). The Blocked-by: line holds items 1 and 2 until the objectui PR lands; item 3 is already stale.

What goes stale, read on origin/main 6362c66ca8

  1. .github/workflows/spec-shape-gate.yml, the header (the paragraph that opens "The objectui half --"). It describes objectui's spec-main-shape-gate.yml, its script and its pins as a card still to be filed, with the two gates running "in parallel until then". After ci: delete the spec-main-shape-gate copy, the spec shape gate runs in objectstack (objectui#12352) objectui#12596 lands, objectui has no copy and nothing runs in parallel.
  2. scripts/ci/spec-shape-gate.mjs, the header:
    • It calls the file "the objectstack port of objectui's scripts/spec-main-shape-gate.mjs", and says "its header carries the measurements behind the virtual-store injection, the hardlink trap, the dependency re-pointing and the turbo-cache false green". After the deletion those measurements live only in objectui's git history. The pointer needs a commit (the last objectui main commit that has the file), or the measurements need to move here.
    • The "marker name is objectui's, on purpose" paragraph stays true. objectui keeps turbo.json's globalDependencies entry for .spec-main-shape-gate.json on purpose (ci: delete the spec-main-shape-gate copy, the spec shape gate runs in objectstack (objectui#12352) objectui#12596, "What stays here"), and MARKER_FILE still writes it.
  3. scripts/ci/spec-shape-retirements.json, the entry whose downstream_card is objectstack-ai/objectui#12325.
    • The file's own $comment says an entry is "deleted when that card closes". objectui#12325 closed completed on 2026-10-14, and the entry is still there.
    • Its packages/** patterns (TS2367 / TS2678 with message '"api"') match nothing today: objectui's hourly runs have been green since.
    • But they would read a later, unrelated break of the same shape as known rather than red. That is the reader acting on a stale entry.

Executable criterion

After objectstack-ai/objectui#12596 is on objectui main:

  • spec-shape-gate.yml and spec-shape-gate.mjs no longer describe objectui's copy as live or pending. A pointer to the deleted objectui files names the objectui commit it reads at.
  • spec-shape-retirements.json has no entry whose downstream_card is closed.
  • The registry's self-checks in scripts/ci/spec-shape-gate.mjs stay green, and git grep -n 'objectui#12325' -- scripts/ci gives 0 hits.

Dedupe

MCP search_issues on this repo, closed included, at this filing:

Dedupe words: spec-shape-gate header objectui half; spec-shape-retirements stale entry; 12325 registry entry.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    First grade · domain:spec · p2 · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-16T03:07Z

    Read in this act: the body in full (0 comments), objectstack-ai/objectui#12352 and objectstack-ai/objectui PR #12596.

    ⛔ Not a claim.

  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 5 · 2026-10-16T05:05Z · two PRs, because one path is governed. PR A (Part of #23782, seat-landed) deletes the spec-shape-retirements.json entry whose downstream_card (objectstack-ai/objectui#12325) is closed: that entry is the false-green hazard behind the p2 grade. In the same PR, the scripts/ci/spec-shape-gate.mjs header points at the objectui commit that last carried the deleted copy, rather than at the copy as a live port. PR B (Fixes #23782, Tier H, the maintainer's hand) rewrites the .github/workflows/spec-shape-gate.yml header paragraph that still describes objectui's copy as pending and parallel.
    Session: session_01HjR8RUwTPQ3TgbfKihmxp9 (the dispatching seat; the dev runs as a cloud session the seat post names)
    Account: os-elon-musk (the seat's linked user as GET /user answers it; this card's assignee)
    Branch: claude/issue-23782-spec-shape-registry (PR A) and claude/issue-23782-spec-shape-workflow-header (PR B)
    Worktree: objectstack-issue-23782 (in the cloud session's container)
    Domain: domain:spec
    Seat: domain:spec#1 (seat post #6017)
    File surface (at origin/main f846cc2020 or later; stop on a breach and explain it in the report):

  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 23782,
      "status": "done",
      "branch": "claude/issue-23782-spec-shape-registry (PR A) + claude/issue-23782-spec-shape-workflow-header (PR B)",
      "pr": "PR A https://github.com/objectstack-ai/objectstack/pull/23822 (Part of #23782, seat lands) · PR B https://github.com/objectstack-ai/objectstack/pull/23823 (Fixes #23782, Tier H, maintainer lands)",
      "session": "session_017rP7fP8F2BVtpC3SDZBAdu",
      "premise_still_valid": true,
      "summary": "Verified on origin/main d795719926 (newer than the card's 6362c66ca8; all three stale items still present). The newest Claim (6208509835) names both branches. PR A empties spec-shape-retirements.json to \"retirements\": [] (the objectui#12325 entry, card closed 2026-10-14; $comment and grammar unchanged). It also rewrites the spec-shape-gate.mjs header: objectui deleted its copy in objectui PR #12596 (card objectui#12352), and the measurements are read at objectui commit 7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd. The registry example and the self-test fixture card literal move to placeholder numbers, so git grep 'objectui#12325' -- scripts/ci gives 0 hits. PR B rewrites only the 'The objectui half --' paragraph of spec-shape-gate.yml: copy deleted, only gate, nothing in parallel, same commit pointer. No on:/job/step change.",
      "tests": "Hypothesis 1 (empty list): parseRegistry checks Array.isArray(doc.retirements), then each entry in a loop; on the edited live file it returns entries=0 and does not throw. pnpm check:spec-shape-gate (--self-test): '60/60 passed across 7 batteries', exit 0. Hypothesis 2 (pointer commit), blobless clone of objectui: git log -- scripts/spec-main-shape-gate.mjs, newest = c6a42be392cf9ae820424a694c59fb2a7287d2ae (PR #12596), first parent 7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd; git cat-file -e confirms that scripts/spec-main-shape-gate.mjs and .github/workflows/spec-main-shape-gate.yml exist there; c6a42be392 is an ancestor of objectui origin/main. Criterion grep: git grep -n 'objectui#12325' -- scripts/ci, 0 hits (exit 1).",
      "gates": "PR A: dispatch-gates --commands --repo objectstack-ai/objectstack derived 29 commands, all 29 exit 0 (captured before any pipe); --ran reconciliation: '29 derived famil(ies) accounted for — 29 run, 0 NOT-MEASURED (a DERIVED zero)'. PR B: 40 derived (including check:required-contexts and check:workflow-status-functions), all 40 exit 0 after pnpm install in that worktree (a first pass without node_modules gave 15 exit 3 and 1 exit 1, all prerequisite refusals; the whole list was re-run); --ran: '40 derived — 40 run, 0 NOT-MEASURED (a DERIVED zero)'. CI at report time, PR A #23822: success = Check Changeset, Check PR Size, Type Check · workspace, Type Check · debt ledger, Governed Surface Queue Guard, Part-of PR must not also close its card, No other open PR may claim the same issue, No other open PR may claim the same single-writer path, The card this PR closes must claim this branch, Check Documentation Links, Dogfood Regression Gate, Auto Label; in_progress = Spec Shape Gate, Lint · (ESLint, repo & tooling, CI release & engine, docs & code guards, PM dispatch-gates, scoped x3), Type Check · source/consumer gates, Test Core 1-6/6. PR B #23823: success = Check Changeset, Check PR Size, Part-of PR must not also close its card, The card this PR closes must claim this branch, both no-other-PR checks, Check Documentation Links, Lint · scoped · slot lookup & corpus, Test Core, Dogfood Regression Gate, Auto Label; in_progress = Spec Shape Gate, Governed Surface Queue Guard, Lint · (the other 7), Type Check x4. No failure on either.",
      "mcp_calls": "5 — mcp__github__issue_read x2 (get, get_comments on #23782), mcp__github__list_commits x1 (objectui, refused by session repo scope, so the measurement went through a public blobless git clone), mcp__github__pull_request_read x2 (get_check_runs on #23822 and #23823). All reads; no MCP write tool.",
      "api_writes": "5 relay strokes (each one POST /repos/objectstack-ai/objectstack/dispatches via scripts/pm/fleet-write, executed as objectstack-fleet[bot]): pr_create #23822 (POST /repos/objectstack-ai/objectstack/pulls + POST /repos/objectstack-ai/objectstack/issues/23822/assignees), pr_create #23823 (POST pulls + POST issues/23823/assignees), label-write skip-changeset on #23822 (POST issues/23822/labels), label-write skip-changeset on #23823 (POST issues/23823/labels), comment os-dev-report (POST issues/23782/comments). Plus 2 git push (not REST): two branch probes, then the work commits.",
      "line_budget": {
        "PR_A_23822": 63,
        "PR_B_23823": 16
      },
      "files_changed": {
        "PR_A_23822": [
          "scripts/ci/spec-shape-retirements.json +1/-36 (entry deleted; retirements now [])",
          "scripts/ci/spec-shape-gate.mjs +16/-10 (header comments + self-test fixture card literals)"
        ],
        "PR_B_23823": [
          ".github/workflows/spec-shape-gate.yml +9/-7 (header comment paragraph only)"
        ]
      },
      "deviations": [
        "Self-test fixture literals in spec-shape-gate.mjs (FIXTURE_ENTRY.downstream_card and the two checks comparing against it, plus the malformed sample 'objectui 12325') now use objectstack-ai/objectui#999999 / 'objectui 999999'. The fixture is inline and does not read the live registry, but the card's criterion (0 grep hits in scripts/ci) cannot hold without changing it. Values only; no reader, matcher or assertion changed.",
        "The THE REGISTRY header example's downstream_card is now objectstack-ai/objectui#N (a placeholder), for the same grep criterion.",
        "The dispatch prompt's commit trailer (Co-Authored-By with a model name) and the 'Part of #23782' line in the first commit were refused by the pre-push check:commit-card-trailers. Both were reworded on the unpushed commit (model-free 'Claude' with the noreply anthropic address, card relation only in the PR body). No force-push.",
        "PR bodies end with the repo's session-URL footer form (os-dev.md), not the harness '🤖 Generated with' line."
      ],
      "open_questions": [
        {
          "question": "Item 2 remedy: a pointer to objectui's deleted header, or move the measurements here?",
          "options": [
            "A pointer to objectui commit 7d0c174ba8383d08b8dd1d4f7d7845009f1bf2fd with the file path",
            "B copy the measurements into this header"
          ],
          "recommendation": "A (done). Real need: nobody here maintains those measurements and the mechanism is unchanged. Long term: a pinned 40-hex commit cannot drift, while a copy ages. AI error: the pointer names the exact git show path. Scope: no new maintained text."
        },
        {
          "question": "Self-test fixture card number",
          "options": [
            "A placeholder #999999",
            "B a real closed objectui card"
          ],
          "recommendation": "A (done). A real number would read as a live registration; the fixture only needs a card that passes the parser."
        }
      ],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #23822 comment 6209772596 and PR #23823 comment 6209779754 · domain:spec seat 1 · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T06:46Z · PR #23822 (Part of, items 2 and 3) lands from the seat once its head is green. PR #23823 (Fixes, item 1, .github/workflows/**) is Tier H, the maintainer's hand, and closes this card when it merges.

  5. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #23822 → 43567a8fcb (Part of, items 2 and 3) · domain:spec seat 1 · os-elon-musk · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T07:02Z

    probe reading
    PR object merged 2026-10-16T07:01Z out of the merge queue (entered 06:49:26Z); merge commit 43567a8fcb
    origin/main git merge-base --is-ancestor 43567a8fcb origin/main → exit 0
    merged vs reviewed head both files' blobs at 43567a8fcb equal the reviewed head 1b10608543 (ACCEPT 6209772596)
    queue branch no gh-readonly-queue/main/pr-23822-* ref remains
    mis-close scan the body carries Part of #23782 and no closing keyword; this card is still open, as intended
    the card's criterion git grep -n 'objectui#12325' -- scripts/ci on origin/main: 0 hits; spec-shape-retirements.json reads "retirements": []

    State: pm:dispatched stays, because item 1 is still in flight: PR #23823 (Fixes #23782, .github/workflows/**, Tier H) is the maintainer's hand, accepted in 6209779754, and closes this card when it merges. The cloud dev session is kept until then.

    • From this merge on, a spec retirement that reds objectui's type check reads red on the hourly Spec Shape Gate until a seat registers it with its downstream card.

    Generated by Claude Code

  6. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #23823 → 944f03850e (PR B, item 1) · domain:spec seat 1 · os-elon-musk · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T11:32Z

    probe reading
    PR object merged 2026-10-16T11:20Z out of the merge queue (entered 10:49:08Z, queued by os-zhuang after the APPROVED review 5546718862 on 898d297275); merge commit 944f03850e
    origin/main git merge-base --is-ancestor 944f03850e origin/main → exit 0
    merged vs reviewed head the one file's blob at 944f03850e equals the reviewed head 898d297275 (ACCEPT 6209779754, contract review PASS 6214160554, same head)
    queue branch no gh-readonly-queue/main/pr-23823-* ref remains
    mis-close scan the body's only closing keyword is Fixes #23782; this card closed completed. PR A (#23822, Part of) landed earlier (6210015726)

    State: pm:dispatched is removed in this act; tooling, priority:p2 and domain:spec stay. The cloud dev session was archived at the seat's ACCEPT.

    • Both halves of the card hold on main. .github/workflows/spec-shape-gate.yml's header says objectui deleted its copy in objectstack-ai/objectui PR fix(objectql,spec): run the pre-delete reference check under the system identity #12596, so this gate is the only one. The header points to objectui 7d0c174ba8 for the deleted measurements, the same pointer scripts/ci/spec-shape-gate.mjs carries. spec-shape-retirements.json holds no entry for a closed card.
    • Process note: the CONTRACT_REVIEW_TIER review this governed workflow text owed before the queue ran after the approval, not before it. It PASSed on the merged head.

    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions