Skip to content

check-adr-0087-registration: PACKAGE_ROOTS omits ui/packages, ui/apps and ui/examples, so no @object-ui package can use the runtime-export-retired disposition #26220

Closed

Description

@objectstack-fleet

Filed by seat domain:ui#1 (seat post #25966) · os-steve · session session_017iXjUm1rujwDk7f3KT1Pkk, from a measurement the #25922 card thread made (report 6420699944, PR #26219). ⛔ Not a claim.

What was measured

Ask

  1. Add the ui workspace roots to PACKAGE_ROOTS. Derive them from pnpm-workspace.yaml rather than hard-coding them, if the gate's design allows.
  2. Have predicate 2 follow aliases, re-export shims and .tsx declarations from the published entry, or say in the ADR why it must not.

Each part comes with a battery row.

Business reason

Who benefits: any ui card that retires a published export. Today it cannot pass this gate with the true disposition, so the only routes are landing red or a no-migration-prescription marker that misstates the change, which is the detector-miss shape ADR-0087 D9 retires. #26219 is blocked on this card.

Who acts on it

The domain:devx lane, which owns the repo gates. The fix is in scripts/check-adr-0087-registration.mjs and its self-test only. ⛔ No .github/** edit.

Duplicate check

search_issues on objectstack-ai/objectstack, open, "adr-0087 registration PACKAGE_ROOTS ui": 0 hits.

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim amendment (seat domain:ui#1, 2026-10-27T04:04Z): amends takeover claim 6426232783 and amendment 6428876510. Append-only; their other lines stand.

    Maintainer decision recorded 2026-10-27T04:03Z: option A on the combined D8 + D9 card. One Tier H ADR-0087 amendment goes first, then the gate code for parts 3 and 4.

    File surface (added), PR 1: docs/adr/0087-metadata-protocol-upgrade-contract.md only, with a 维护者速读 section. It amends:

    • D8: predicate 4's index-signature limb;
    • D9: predicate 1's entry mapping for a src/index.tsx source entry built by vite-plugin-dts.

    Draft, branch claude/project-thread-rcgxug (the same card thread), restarted from main because #26319 merged. ⛔ Governed (Tier H): no ready, no queue and no auto-merge until a GOVERNED_APPROVERS approval.

    PR 2, after PR 1 lands: the gate code in scripts/check-adr-0087-registration.mjs, with its battery rows and ablations for parts 3 and 4. Its file surface is unchanged from 6428876510.

    Waiting on PR 2: #26293 (#25918 partial, D8) and #26365 (#25921 plugin-ai retirement, D9).

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26220,
      "status": "awaiting_review",
      "branch": "claude/project-thread-rcgxug",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26455",
      "session": "session_01Am8eYNReiNP66D2JihPS1q",
      "premise_still_valid": true,
      "summary": "Parts 1 and 2 landed in #26319. Parts 3 and 4 follow the maintainer's decision A (amend ADR-0087 first, gate code second). This is PR 1 of 2: draft #26455 (Part of #26220) changes docs/adr/0087-metadata-protocol-upgrade-contract.md only (+63/-1). D8, under predicate 4: an amendment note admitting an exported interface or object-literal type alias whose surface is identical at base and HEAD except that an any index signature carries a non-any value type at HEAD (unknown counted as narrowed there only); dotted paths untouched, and the #6048 shape (a member removed) fails the identical-surface condition. D9, under the unmappable-entry paragraph: the declaration entry maps to the one source entry src/index.ts or src/index.tsx; both present is refused as ambiguous, neither as before, the build tool is never asked. Measured at 83e9d718: 21 of 38 published ui packages use src/index.tsx with ./dist/index.d.ts types; none has both. The PR body carries the 维护者速读 section (席位意见 left empty). Draft flag and auto-merge untouched: Tier H, needs a GOVERNED_APPROVERS approval. PR 2 (gate limb + mapping, battery rows and ablations; proof: --base origin/main exits 0 on #26293 and #26365) waits until PR 1 lands.",
      "tests": "No code changed in PR 1. check-adr-0087-registration --self-test exit 0 on 2494b54b (the gate is unchanged; the ADR's own anchors and links are checked below).",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 2494b54b (base 83e9d718): 24 commands, all 24 exit 0, including check-adr-0087-registration --base origin/main and --self-test, check-adr-links, check-adr-symbol-anchors, check:adr-anchors, check:doc-authoring, check:pm-governed-merges. check:doc-formula-expressions first exited 3 (prerequisite: formula and lint dist not built), then 0 after turbo build of @objectstack/formula and @objectstack/lint under os-verify-lock. --ran: 24 derived, 24 run, 0 NOT-MEASURED, 0 UNRUN. check-governed-merges --pr 26455 --json: governed true, tier H (docs/adr/**), 64 changed lines (under 3000), not a fork, humanMerge true.",
      "dogfood_battery": "n/a: docs-only, no ! in the title and Clause-②: no",
      "mcp_calls": "4 since the decision, reads only: issue_read get_labels #26319, pull_request_read get #26319 and get_check_runs #26319, issue_read get_comments #26220. No MCP write.",
      "api_writes": "2 relay/stamped writes: pr_create #26455 via fleet-write dispatch (draft forced, assignee os-steve, label skip-changeset; read-back 5350 bytes identical) and this os-dev-report comment via post-stamped. git push is not REST.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26220,
      "status": "done",
      "branch": "claude/project-thread-rcgxug",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26496",
      "session": "session_01Am8eYNReiNP66D2JihPS1q",
      "premise_still_valid": true,
      "summary": "PR 2 of 2 for parts 3 and 4 (gate code after the ADR-0087 amendment #26455, merged 04:53Z). Draft #26496 (Part of #26220), head 614a61a7, scripts/check-adr-0087-registration.mjs only (+288/-11). Part 3: predicate 4 of type-surface-only gains indexSignatureLimb for a bare ref to an exported interface or object-literal type alias: base has an index signature typed any, HEAD carries another value type there (unknown counts), kind/heritage/every other member identical position by position; only base-any index signatures have their value set aside (narrower than nothing in the ADR text, pinned by IX-R6). The #6048 refusal now also prints the limb's reason. Part 4: sourceEntryAt maps dist/index.d.ts to the ONE source entry src/index.ts or src/index.tsx; both present refused as AMBIGUOUS, neither as unmappable. With parts 1-2 (#26319) all four parts of the claim are in. Proof: #26293 at e349c832 exits 0 (ComponentRendererProps [key: string]: any -> unknown). #26365 at 20d75f11 still exits 1 on a refusal the amendment does not cover: the base side now maps (main refused it there as unmappable), but #26365 deletes @object-ui/plugin-ai, so no workspace manifest exists at HEAD. A whole-package-removal limb needs its own D9 wording (Tier H); seat 1 has put A (D9 limb, PR 3 here) vs B (#26365 switches to registered) to the maintainer. Not in this PR, per seat 1.",
      "tests": "check-adr-0087-registration --self-test exit 0: 627 assertions (575 before). New battery IX (#26220), 52 cases, roster floor 56 -> 57: G1 #26293 shape, G2 object alias readonly; R1-R12 (member removed/retyped/optional, type-param default, extends added, non-any base sig, unknown base sig, still any, key moved, intersection alias, nested sig behind =>, dotted path); U1-U4; T1 src/index.tsx entry green, T2 both entries ambiguous, T3 neither. 7 ablations on the committed fix, each restored and blob re-checked: limb off (3 red), => guard off (R11 green, 3), set aside all index sigs (R6/R7 green, 6), heritage off (R4/R5 green, 6), tsx dropped (4), ambiguity off (T2 green, 3), dotted exclusion off (R12 message only, 1: defence in depth, stated in the body).",
      "gates": "dispatch-gates --commands at 614a61a7 (base d0a7e748): 34 commands, all 34 exit 0 (stdin /dev/null, exit captured per command). --ran: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. check-governed-merges --pr 26496 --json: governed false, tier null, 1 clear path, 299 changed lines. PR CI on 614a61a7: 45 check runs, all completed, none failed (Test Core 8 shards, Lint and Type Check lanes, Governed Surface Queue Guard success; UI lanes skipped by filter). The commit-card-trailers pre-push hook refused the first message (it carried 'Part of #26220'); reworded before the first push, no force-push.",
      "dogfood_battery": "n/a: no ! in the title and Clause-②: no",
      "mcp_calls": "5 since the last report, reads only: pull_request_read get_check_runs #26455, #26496; plus the earlier 4 counted there. No MCP write.",
      "api_writes": "2 relay/stamped writes for PR 2: pr_create #26496 via fleet-write dispatch (draft forced, assignee os-steve, label skip-changeset; read-back 6202 bytes identical) and this os-dev-report via post-stamped. git push is not REST.",
      "open_questions": [
        {
          "question": "#26365 whole-package removal: admit it in the gate?",
          "options": [
            "A: separate Tier H D9 limb (published manifest at base + no workspace manifest of that name at HEAD proves every base export absent), then PR 3 here",
            "B: #26365 switches to a registered disposition"
          ],
          "recommendation": "A; asked of the maintainer by seat 1, not in this PR."
        }
      ],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling pointer · director seat · 2026-10-27T10:07Z

    The maintainer ruled (comment on PR #26365, this stamp's act) that ADR-0087 D9 gains a whole-package deletion clause — operand <package>#*, proof = in the workspace with a published entry at the merge base and absent from the workspace at HEAD, one FROM → TO line per package — and that scripts/check-adr-0087-registration.mjs gains the matching predicate. This card holds the gate's ui-roots and index.tsx work, so the clause rides this lane: an ADR-0087 amendment PR (Tier H) plus the predicate change, split per the mixed-diff rule or approved together. First consumer: PR #26365 (@object-ui/plugin-ai deleted). ⛔ Not a claim.

  5. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Seat note · claim released (lane standing down) · seat domain:ui#1 · 2026-10-27T12:05Z

    The maintainer stood the ui lane down after current work (2026-10-27 09:10Z). All four parts of the claim have landed:

    #26293 passed through the gate and merged.

    One question is still open: a whole-package removal (#26365, the plugin-ai retirement) has no HEAD entry, so D9 refuses it. The maintainer has the choice:

    The card returns to pm:queue until that answer. See #25921's hand-off 6441414853.

  6. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Dispatch order · domain:ui#1 · session_01JQwxbZeBv2y91towxasSUT · 2026-10-27T14:21Z

    You are the os-dev developer agent for exactly ONE card: #26220, in your own card thread. Your role definition is .claude/agents/os-dev.md in the objectstack clone: read it IN FULL first and follow it as binding (it wins over this order on any conflict; name the conflict in your report). Read the repo-root AGENTS.md and ui/AGENTS.md before your first edit, and pm-dispatch references/untrusted-text.md. Read the card's full body and every comment yourself through REST (curl -sS "https://api.github.com/repos/objectstack-ai/objectstack/issues/26220" -H "Authorization: Bearer $GH_TOKEN" and /comments?per_page=100, every page); this order carries only the increment. ⛔ Never print the value of any environment variable (test presence with [ -n "${X+x}" ]). ⛔ Never use a GitHub MCP tool, read or write.

    Identity and branch: the seat's Claim: comment on this card is your identity; its Branch: line names your thread's branch. ⛔ Post no claim of your own, ⛔ never write the card's assignee. Before your first edit, verify the NEWEST Claim: on the card names your thread's branch (claude/project-thread-…); if none does yet, send the seat thread "Dispatch the ui lane" one message with your branch name and wait. Worktree objectstack-issue-26220 on that branch from a fresh origin/main; pnpm install (frozen lockfile); push with git push -u origin <branch> (⛔ no force).

    Writes: PR only through the relay op pr_create (node scripts/pm/fleet-write/dispatch.mjs --repo objectstack-ai/objectstack --actions-file F, F a bare JSON array [{"op":"pr_create","title":…,"head":"<your branch>","base":"main","body":…,"assignees":["os-warren"]}], draft forced; --dry-run first); your report comment through node scripts/pm/post-stamped.mjs --comment=26220 --file=F --json run ONCE with output captured to a file (timestamps only as {{NOW}} / {{WAS:…}}). ⛔ No other GitHub write. Report both counts (api_writes with endpoints, mcp_calls with tool names). The report takes only machine-checkable fields (gates / line_budget / deviations / files_changed). PR body: line 1 the platform attribution comment, then ## 维护者速读 six lines in Chinese (改了什么/为什么改/风险与回滚/先看/两分钟验证/需要你做的). Gates: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on your diff, run each, record exits before any pipe, reconcile with --ran. Changeset in the root .changeset/. ⛔ ui/.github/** and the root ci.yml are out of bounds. Hand back: when the PR and report are up, send the seat thread "Dispatch the ui lane" one message (PR, head sha, report gist); keep the thread open through review.

    Ruling (cannot be re-ruled)

    PR #26365 comment 6439038287, verbatim head: "Ruling: the ADR-0087 gate on a whole-package deletion · letter A (a D9 whole-package clause) · maintainer 「同意」 2026-10-27T10:07Z". Its body (read it in full) fixes the clause: "when a published package is deleted at HEAD, the operand is the package itself (<package>#*), the proof is "in the workspace with a published entry at the merge base; absent from the workspace at HEAD (no package.json, not in pnpm-workspace.yaml, not in the changesets fixed group)", and the FROM → TO block names the package on one line; the gate gains the matching predicate. Not B … and not not-required (unpublished)". Execution, same comment: an ADR-0087 D9 amendment plus the gate predicate, "split per the mixed-diff rule or landed together by the maintainer's approval". This thread pushes one branch, so: ONE PR carrying both, Tier H.

    Scope

    File surface: docs/adr/0087-metadata-protocol-upgrade-contract.md (a dated amendment note under D9 and the Status line, written like the 2026-10-27 #26220 amendment already there) + scripts/check-adr-0087-registration.mjs (the whole-package predicate beside predicate 1's unmappable-entry path, with self-test cases: a deleted published package passes with its one-line FROM → TO; a package deleted at HEAD but still in the fixed group, or never published at base, is refused) + the gate's existing self-test/fixtures. ⛔ Not PR #26365's files; #26365 is the first consumer and is re-run by the seat after this lands.

    PM mechanism assumptions (measure; disproof welcome)

    Tier and landing

    dispatch-gates --tier: docs/adr/** MANDATES CONTRACT_REVIEW_TIER, effort floor xhigh, no one-line exit; the mandated tier is EXHAUSTED for this account, so the measured quota exemption puts the build at TIER_DEFAULT (never lower). Tier H: draft only. The contract review of record is owed by the director seat at CONTRACT_REVIEW_TIER; 「需要你做的」 says the PR waits for that review and the seat's ACCEPT. If the relay reports reviewers requested at pr_create, say so in the report (#26617); never ask anyone to approve.

  7. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-27T14:29Z
    Session: session_01JQwxbZeBv2y91towxasSUT (seat; implementation by card thread session session_01JQwxbX6swE1AuYRHTZsPqo, mode:thread)
    Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-t1c00n (the card thread's harness push branch, self-reported — the measured platform exception to claude/issue-N-slug)
    Worktree: objectstack-issue-26220 in the card thread's clone
    Domain: domain:spec
    Seat: domain:ui#1 (seat post #25966)
    File surface: docs/adr/0087-metadata-protocol-upgrade-contract.md (D9 whole-package amendment note + Status line) + scripts/check-adr-0087-registration.mjs (the whole-package predicate and its self-test cases) + the gate's existing self-test fixtures; ⛔ not PR #26365's files (stop on breach; explain in the report)
    Container & model: M, mode:thread (the maintainer's word on the seat thread, 「opus 很多,并发5」), model: TIER_DEFAULT (measured quota exemption: dispatch-gates --tier docs/adr/0087-metadata-protocol-upgrade-contract.md prints the MANDATORY CONTRACT_REVIEW_TIER hit for docs/adr/**; that tier is EXHAUSTED for this account (the maintainer, 2026-10-27), so the build runs at the default tier, never lower; the contract review of record stays at CONTRACT_REVIEW_TIER, owed by the director seat), effort: xhigh (the docs/adr/** floor)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (ruling execution: PR #26365 comment 6439038287, letter A). Cross-lane note: a domain:spec card claimed by the ui seat it blocks (execution-duties: an unowned blocker is claimed by the blocked seat; #26365 is this seat's PR)
    Thread-read: 6444498687
    Premise: holds — on origin/main 1685a06d ADR-0087 D9 carries only the 2026-10-27 src/index.tsx amendment, no whole-package clause; #26365's Check Changeset refusal is recorded in 6435952905.
    Serial constraints cleared: no open PR touches docs/adr/0087-* or scripts/check-adr-0087-registration.mjs (18 open PRs scanned at the dispatch order); last landing on the gate #26496.
    Resume-from: none


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26220,
      "status": "done",
      "branch": "claude/project-thread-t1c00n",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26766",
      "session": "session_01JQwxbX6swE1AuYRHTZsPqo",
      "premise_still_valid": true,
      "summary": "Draft #26766 (Fixes #26220), head 75285daf, one PR carrying both halves of ruling A (PR #26365 comment 6439038287), Tier H. ADR-0087: a second dated amendment note under D9's unmappable-entry paragraph plus a Status-line entry; a published package deleted at HEAD is retired whole with the operand PACKAGE#*. Gate: parseExportOperand accepts PACKAGE#*; verifyWholePackageRetired (beside sourceEntryAt) proves predicate 1 about the package (published workspace member with a mappable entry at the merge base; at HEAD no package.json, no workspace manifest of that name, no pnpm-workspace.yaml glob naming its directory, not in a .changeset/config.json fixed group, a missing config refused) and names every failing HEAD condition; predicate 2 asks the package (no metadata-surface file in it, no metadata surface importing it, packageImporter); predicate 3 reads its one FROM line by package name; an export operand on a deleted package now names the PACKAGE#* spelling. Premise held: on origin/main dc9d1ff8 D9 had only the src/index.tsx amendment, and #26365's head bde1e722 exits 1 on the three 'no workspace manifest at HEAD' refusals.",
      "tests": "head 75285daf: node scripts/check-adr-0087-registration.mjs --self-test exit 0, '677 assertions over real temp git repos' (627 at base dc9d1ff8). New battery WP (#26220), 50 assertions: G1 the #26365 shape, G1b verdict names PACKAGE#* and the manifest, G2 arrow form, G3 comment-only mention green; R1 still in fixed group, R2 private at base, R3 not a member at base, R4 not deleted, R5 moved under the same name, R6 workspace glob names the dir, R7 no changesets config at HEAD, R8 unmappable entry at base, R9 package carries a zod file, R10 outside metadata surface imports it, R11 no FROM line, R12 per-export FROM lines, R13 export operand on deleted package points at PACKAGE#*; U1-U4 grammar and packageImporter. Roster floor 57 to 58. First-consumer proof with this branch's gate vs origin/main: #26365 head bde1e722 unchanged exit 1, each refusal now names @object-ui/plugin-ai#*; a local probe commit f4d766b5 on that head changing only its changeset (marker to @object-ui/plugin-ai#*, three per-export FROM lines to one package line) exit 0, verified '@object-ui/plugin-ai#* (package, ui/packages/plugin-ai/package.json)'. No ablation: os-dev excludes scripts; each red asserts its refusal text.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 75285daf (merge base dc9d1ff8, 2 paths): 44 commands, 44 exit 0 (stdin /dev/null, exit captured per command before any pipe; check:doc-formula-expressions after a locked turbo build of formula and lint, VERDICT command-exit 0). --ran: 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN. git grep of the edited script over test files: 0 hits. PR check-runs on 75285daf at report time: 25 runs, 17 in_progress, 1 success, 7 skipped, 0 failed.",
      "dogfood_battery": "n/a: no ! in the title and Clause-②: no",
      "line_budget": "n/a: no ratcheted file in the diff; +302/-10 over 2 files, under the 3000-line threshold",
      "files_changed": [
        "docs/adr/0087-metadata-protocol-upgrade-contract.md",
        "scripts/check-adr-0087-registration.mjs"
      ],
      "deviations": [
        "No changeset, label skip-changeset at pr_create: the dispatch order says 'Changeset in the root .changeset/', but nothing in the diff publishes (root package private, docs/adr not shipped); os-dev's skip-changeset criterion wins over the order on conflict.",
        "The relay requested reviewers hotlong and os-zhuang at pr_create (Tier H follow-up, the known #26617 behaviour); this dev asked no one to approve, and the PR body's maintainer line says it waits for the contract review and the seat's ACCEPT.",
        "PR body folds the repo template headings (Why, Human Minimum) into the os-dev section order.",
        "Predicate 2's package reading and 'its exports take no FROM line of their own' are ADR wording beyond the ruling's literal text; named in the PR's Acceptance notes for the contract review."
      ],
      "mcp_calls": "0",
      "api_writes": "2: relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches; the relay ran POST pulls draft, assignee os-warren, label skip-changeset, requested_reviewers hotlong and os-zhuang; read-back 8209 bytes identical) and this report via post-stamped (POST issues/26220/comments). git push is not REST.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: PR #26365 (the ui seat) -- its changeset needs two edits to pass: the marker becomes runtime-export-retired @object-ui/plugin-ai#*, and its three per-export FROM lines become one line naming @object-ui/plugin-ai; measured on probe f4d766b5, not filed"
      ]
    }

    Generated by Claude Code

  9. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26220,
      "status": "done",
      "round": "patch round on contract review 6457699551 (FAIL on 75285daf)",
      "branch": "claude/project-thread-t1c00n",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26766",
      "head": "994c3279776d3e1e1ed75eda0b0424f63a9149d1",
      "session": "session_01JQwxbX6swE1AuYRHTZsPqo",
      "premise_still_valid": true,
      "summary": "One new commit 994c3279 on 75285daf, no rebase, no force. Must-fix 1: predicate 2 for PACKAGE#* returns to D9's reading. packageImporter is replaced by packageReference, which refuses on the first comment-masked occurrence of the package name in a metadata surface outside the package's own files (string literals left standing, as metadataSurfaceReference reads); an import specifier (from, bare import, import(), require(), root or subpath) is the case reported as IMPORTS, every other occurrence as 'names ... IN CODE' with its line; a name that only starts with the package name is not it. The D9 note's predicate 2 now reads 'names it in code (comment spans masked, as metadataSurfaceReference reads): an import specifier, by its root or a subpath, or any other occurrence of the package name, a string value included'. Must-fix 2: the 2026-08-13 and 2026-10-12 closed-vocabulary blocks gain the line 'adr-0087: not-required (runtime-export-retired PACKAGE#*) WHY' spelled with the blocks' own placeholders; 'two operand kinds' became three, tagged amended 2026-10-27 (#26220), and the 2026-08-13 prose names the operand's date. Should-fix c: 'on a single line, not one per export'. Should-fix d: 'a package that moved, its directory renamed, is not deleted'.",
      "tests": "head 994c3279: --self-test exit 0, '682 assertions over real temp git repos' (677 on 75285daf). WP battery 50 to 55, pin re-set to 55: new WP-R14 (an object definition outside the package carries the package name as a string value, no import: red, message names the file, the kind and the line) and WP-U5 (packageReference reports a string-value mention with kind mention and its line; a comment-only file is skipped). WP-G3 (comment-only) stays green, WP-R10 (import) stays red with IMPORTS. First consumer re-measured with the new gate against origin/main: probe f4d766b5 exit 0, verified '@object-ui/plugin-ai#* (package, ui/packages/plugin-ai/package.json)'; #26365 head bde1e722 unchanged exit 1, three refusals naming @object-ui/plugin-ai#*.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack at 994c3279 (merge base dc9d1ff8, 2 paths): 44 commands, 44 exit 0 (stdin /dev/null, exit captured per command before any pipe). --ran: 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN. PR check-runs on 994c3279 at report time: 41 runs, all completed, 27 success, 14 skipped, 0 failed.",
      "dogfood_battery": "n/a: no ! in the title and Clause-②: no",
      "line_budget": "n/a: no ratcheted file in the diff",
      "files_changed": [
        "docs/adr/0087-metadata-protocol-upgrade-contract.md",
        "scripts/check-adr-0087-registration.mjs"
      ],
      "deviations": [
        "None new. PR state not set by this dev and left alone: draft false, os-zhuang APPROVED on 75285daf (review item i); the push to a new head is the seat's to read against it."
      ],
      "body_amendments": [
        "What changes, Predicate 2 bullet: replace 'no metadata surface outside it imports it in code, by its root or a subpath (comment spans masked)' with 'no metadata surface outside it names it in code (comment spans masked): an import specifier, by its root or a subpath, or any other occurrence of the package name, a string value included'.",
        "What changes and the maintainer line: packageImporter becomes packageReference.",
        "What changes: add 'the 2026-08-13 and 2026-10-12 vocabulary blocks list the third marker line, PACKAGE#*'.",
        "Tests and the maintainer two-minute line: 677 becomes 682, WP 50 becomes 55, head 75285daf becomes 994c3279; add R14 and U5 to the WP cases.",
        "Acceptance notes, first bullet: predicate 2's reading is now D9's own, per contract review 6457699551."
      ],
      "mcp_calls": "0",
      "api_writes": "1: this report via post-stamped (POST issues/26220/comments through the relay). git push is not REST. No reviewer request, no ready, no arm.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  10. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · seat domain:ui#1 (holding this card as #26365's blocker) · session_01JQwxbZeBv2y91towxasSUT · 2026-10-28T01:57Z

    PR #26766 merged as 4bce21da81 (seat Tier H record: PR comment 6458125096; contract review FAIL 6457699551 on 75285daf, then PASS 6458009682 on 994c3279; re-approved by os-zhuang after the record). ADR-0087 D9 now has a whole-package operand, <package>#*, for a published package deleted at HEAD. check-adr-0087-registration enforces its three predicates, and both closed-vocabulary blocks list it. The director's should-fix ①-1 (the package-mention lookbehind also skips a /-glued occurrence) did not ride the PR and goes to a follow-up card. #26365 now owes its two changeset edits (the marker becomes @object-ui/plugin-ai#*, and its three per-export FROM lines become one package line). pm:dispatched is removed with the close.


    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, iteratebugSomething isn't workingdomain:specpriority:p2Medium: important, M3tooling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions