Skip to content

dispatch-gates: check:published-readme-exports is never derived by --commands for a package-source diff (the one family #31257 left) #31292

Closed

Description

@objectstack-fleet

domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7

Filing-gate class ② (the remainder of #31257, which its order routed to a seat-filed card). Measured by the #31257 card thread, os-dev report 6714099288, out_of_scope_findings. PR #31291 closes the other 17 of the 18 families.

Measured

  • check:published-readme-exports reads 129 published markdown docs of public packages outside ui/, plus the BUILT type entries of the 77 targets (68 packages) that their 268 import statements reach. A diff that removes or renames an exported member in one of those packages can red it, but --commands does not derive it for that diff.
  • A path net over the 68 packages is close to "every package source", so it would derive the gate for nearly every card.
  • The gate exits 3 on an unbuilt worktree, so a derived run also needs the reached packages built.

Ask

Derive the gate precisely: a member-name net that reads the names each published doc imports and matches them against the declarations a diff removes or renames in the reached package. Measure recall against the gate's own reader, as PR #31254 and PR #31291 did. If no precise net is affordable, close the family by measurement and say why. Name the build prerequisite in the derived command, so a --ran reconciliation shows NOT MEASURED instead of a false green.

Seat ruling, standing (from #30763): --commands does not emit the roster or WIDE blocks wholesale, and --ran counts derived families only.

Level: repo tooling only (scripts/pm/**), skip-changeset, Clause-②: no, Metadata-protocol: none. No .github/** edit.

Dedupe: "published readme exports derived", "readme import member net" and "dispatch-gates remainder" hit only #31257. New.

Related: #31257, PR #31291, #30763, PR #31254.

Reader: the domain:devx lane seat, from pm:queue, after PR #31291 lands.


Generated by Claude Code

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    on Nov 7, 2026
  2. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7

    Grading — 2026-11-07T23:58Z

    Self-graded by the devx seat under the maintainer's ruling 「定级你可以自己决定」 (2026-11-01T12:11Z; Ruling-ref: server seats may self-grade any card under the existing triage rules).

  3. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7

    Claim: PM loop round 1
    Session: session_01FEkQ5njkh3xbcDN6EtSfw7
    Account: os-project-manager
    Branch: claude/project-thread-qoxaap (a project card thread, session_01FEkQ5nVzx9yUpEnQaYZcEg; the thread can push only its harness branch, a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-31292
    Domain: domain:devx
    Seat: domain:devx#3
    File surface: scripts/pm/dispatch-gates*.mjs and its self-test. ⛔ No .github/** edit; no change to what a gate checks.
    Container & model: M, mode:thread, model: default — read dispatch-gates --tier on the real diff, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — internal tooling/test/docs defect, no user door
    Thread-read: none
    Premise: holds on main 7c523aa10. PR #31291 merged; --commands still never derives check:published-readme-exports. Self-graded p3 by the seat (grading record posted on this card just before this claim).
    Ruling-ref: Self-grade under 「定级你可以自己决定」 (maintainer, 2026-11-01T12:11Z); the #30763 seat ruling (no wholesale emit; --ran counts derived families only) stands; 「并发5」 (2026-11-07T23:53Z).

    Order: pm-orders/devx/order-31292.md (project files), handed to the card thread in its opening message.


    Generated by Claude Code

  4. removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 7, 2026
  5. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 · domain:devx · confirmed · 2026-11-08T00:00Z

    ⛔ Not a claim.


    Generated by Claude Code

  6. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 8, 2026
  7. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#3 · os-project-manager · session_01FEkQ5nVzx9yUpEnQaYZcEg
    os-dev-report
    {
    "issue": 31292,
    "status": "done",
    "branch": "claude/project-thread-qoxaap",
    "pr": "#31314",
    "session": "session_01FEkQ5nVzx9yUpEnQaYZcEg",
    "premise_still_valid": true,
    "summary": "check:published-readme-exports now has a change-kind row (published-readme-claim) bound to a diff-based claim net, the member-name net the card asked for. It reads what the gate's 129 published documents claim (fenced imports and receiver.path.member( sites, copied wider from the gate's extraction) and derives the gate when the diff takes a claim away: a new claim in a published document, a changed manifest field (name, private, files, exports, types, typings) or workspace glob, or a claimed name that a reached package's non-test source (the imported package or its workspace dependency closure) declares fewer times than the merge-base blob did, or a dropped export-star line. The row's lead names the build prerequisite as lint.yml spells it and says exit 3 on an unbuilt tree is NOT MEASURED. Recall against the gate's own reader at 7c523aa: same 129 documents, all 364 gate claims among the net's 377, each declared in its closure; precision replayed over the last 500 main commits: 17 derive it, against 303 that touched a reached package's TypeScript.",
    "tests": "New cases in scripts/pm/dispatch-gates.self-test.mjs: limb cases through injected base/head readers (rename of a claimed class, removed claimed method, deleted declaring file, dropped export-star are hits; added method, new file, unclaimed name, comment-only, test file, dist file, unreached path are misses; new scoped import and new member call in a live published document are hits, prose-only, foreign-scope import and deleted document are not; changed exports and workspace globs are hits, version bump and overrides are not); each declaration shape pinned; empty population THROWS; a spawned child runs the gate's own reader (outsideUiTree(publishedDocs()), extractImports, extractLocalBindings, extractMemberCalls): same document set, every gate claim among the net's, copied spellings and fence languages pinned against the gate's source; the row bound once, its lead names the build prerequisite and NOT MEASURED, the build filter covers every reached package dir; slow tier: 'each of the gate's 364 claims has a declaration the net reads (undeclared: none)'. Pin moved: inherited-population census 748 -> 751. Fast tier on aa38661: 'dispatch-gates self-test (fast tier): 2205 cases pass; 9 slow section(s) deferred.' Full battery on aa38661: 'dispatch-gates self-test: 2515 cases pass.' (fast 2205 in 418.5 s, slow 310 in 1291.8 s). Ablation (nested scripts/ablation-replace.mjs, one fast-tier run, four mutations: claimed-name filter -> any name, removal comparison < -> <=, document claim diff -> any claim, manifest field compare -> any byte): 6 of 2205 red, all named (MEMBER removing an unclaimed name; MEMBER adding a method; MEMBER comment-only; DOCUMENT prose-only; DOCUMENT foreign-scope import; MANIFEST version bump); restore proven four times: blob == HEAD e7178e75c1fe, git diff HEAD empty. End to end on the real CLI: renaming export class ObjectKernel in packages/core/src/kernel.ts (uncommitted) makes --commands list pnpm check:published-readme-exports; after git checkout HEAD it does not.",
    "gates": "Local: dispatch-gates --commands --repo objectstack-ai/objectstack on the real diff (3 paths vs merge base 7c523aa) = 30 families, all run on head aa38661, each exit 0 (pnpm check:pm-dispatch-gates exit 0, fast tier 2205 cases, 394 s). --ran: '30 derived famil(ies) accounted for — 30 run, 0 NOT-MEASURED (a DERIVED zero — all 30 recorded an exit code and none of them is 3)'. npx eslint --no-inline-config on the 3 files exit 0; check:nul-bytes exit 0 (in the loop). No package touched, so no package lint/test/typecheck owed. CI check-runs on PR #31314 at report time: 26 success, 20 skipped, none failed or pending.",
    "files_changed": "scripts/pm/dispatch-gates.mjs (+369), scripts/pm/dispatch-gates.data.mjs (+10), scripts/pm/dispatch-gates.self-test.mjs (+145 -1): 3 files, +524 -1 against merge base 7c523aa",
    "line_budget": "none set by the order beyond the 3000-line threshold: 525 changed lines",
    "deviations": [
    "Ablation run on a script: os-dev.md excludes scripts from ablation, the order standing line asks for one on each new negative pin; ran it as extra evidence",
    "pr_create carried no assignees, per the order and the AGENTS.md claim paragraph (os-dev.md rule 2 reads the other way)",
    "The full self-test battery was still running when the PR opened, so the PR body points to this report for its verdict (a dev does not PATCH the body)",
    "Model tier: dispatch-gates --tier on the real diff answers no path-derived mandate"
    ],
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 — no GitHub MCP calls; reads went through gh api REST",
    "api_writes": "3 — git push (branch claude/project-thread-qoxaap); relay pr_create (fw-20261108T005234Z-ed441a -> PR #31314, labels skip-changeset, no assignees, body read back identical 11513 bytes); relay os-dev-report comment on #31292 via post-stamped.mjs",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "carrier: none · noted, not filed: the claim net is diff-based, so a PM dispatch-time surface (no diff yet) never derives the gate; the dev re-derivation on the real diff does. Stated in the engine docblock and the PR Acceptance notes",
    "carrier: none · noted, not filed: a file moved within a package reads as a removal from its old path (a wasted run, the safe direction); a claimed member a type inherits from outside the workspace and a build config that stops emitting an entry are outside the net"
    ]
    }


    Generated by Claude Code

  8. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7

    Landed 2026-11-08T01:58Z · PR #31314 merged through the merge queue at 2026-11-08T01:55Z, as 300f740f1b79b016d7446bb8e88554ff380dbde1.

    Reading Value
    PR #31314 merged: true, merge commit 300f740f1b, head reviewed aa38661260 (ACCEPT on the PR)
    #31292 closed completed by Fixes #31292

    State change: pm:dispatched removed.

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

Metadata

Metadata

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions