Skip to content

finding: QUOTA_EXCEEDED and CONCURRENT_LIMIT_EXCEEDED are registered StandardErrorCode members with zero producers — an ADR-0049 enforce-or-remove decision #17707

Description

@os-bill

Filed by the domain:spec execution seat out of the #17187 + #17188 folded round, 2026-09-11T16:4xZ. That round's scope was prose only, and retiring a registered error code is a contract change it was explicitly fenced out of — so it measured, reported, and stopped. This is the card that measurement earns. ⛔ No domain:* and no priority from me: grading and routing are triage's.

The measurement

QUOTA_EXCEEDED is a registered StandardErrorCode member that no producer emits.

Construction-site probe (code: + the quoted member) over a comment-stripped, whitespace-flattened corpus enumerated from git ls-files (8,436 tracked / 8,429 readable — the count matches the checkout):

QUOTA_EXCEEDED              0      ← the finding
CONCURRENT_LIMIT_EXCEEDED   0      ← same shape, one row below it in the same catalog block

LIT CONTROLS (same probe, same corpus — nine declared members)
  PERMISSION_DENIED 132 · SERVICE_UNAVAILABLE 94 · INTERNAL_ERROR 87 · NOT_IMPLEMENTED 83
  VALIDATION_ERROR 48 · RESOURCE_NOT_FOUND 27 · DATABASE_ERROR 23 · RATE_LIMIT_EXCEEDED 14 · TIMEOUT 3

DARK CONTROLS (the three ADR-0049-retired members)
  BATCH_PARTIAL_FAILURE 0 · BATCH_COMPLETE_FAILURE 0 · TRANSACTION_FAILED 0

⇒ Nine lit, five dark, and the five dark split exactly into already-retired and these two. The zeros are a reading.

A bare \bQUOTA_EXCEEDED\b tree-wide outside content/ returns 3, and all three are non-producers: the catalog declaration, a deliberately-wrong waiver case, and the unpinned-baseline row.

⭐ Why this is RESIDUE and not a reserved split — measured, not assumed

The ledger states its own doctrine in packages/spec/src/api/error-code-ledger.zod.ts: "a producerless row with no card behind it is the registered but unemittable retirement class." Against that test:

  • QUOTA_EXCEEDED carries no card and no registered-ahead-of-its-producer note.
  • The one implemented quota surface answers TOO_MANY_REQUESTS on purpose — packages/services/service-sms/src/sms-daily-quota.ts:85.
  • TenantQuotaSchema / QuotaEnforcementResultSchema have no consumer outside spec's own tests and generated surface files.

⇒ The platform is not missing an implementation it intends. That is what makes this an ADR-0049 enforce-or-remove question rather than a feature gap.

Why ONE card and not two

CONCURRENT_LIMIT_EXCEEDED measures identically on the same probe, sits one row below QUOTA_EXCEEDED in the same catalog block, and raises the same ADR-0049 question with the same answer set. Splitting them would put two cards through one decision. ⚠️ If triage disagrees, split — but then the two must be serialised, not run in parallel: they touch the same enum.

The decision this needs

⛔ Not mine, and ⛔ not a dev round's — removing a member from a published error-code enum is a contract change.

  • A — retire both, the way BATCH_PARTIAL_FAILURE and its siblings were retired, deleting both doc entries and the unpinned-baseline rows in the same PR. (The round's own recommendation, on the ledger's own retirement test.)
  • B — keep because a quota producer is genuinely planned. Then this is a feature card and must name the shape its producer will emit.
  • C — keep and leave the docs as PR docs(protocol): drop the unproduced rate-limit headers and the quota wire fence from error-handling #17703 leaves them: registered, documented, and explicitly marked unemitted.

⚠️ I am not choosing. ADR-0049 dispositions and published-enum membership are the maintainer's floor.

⛔ A blocker whoever takes option A will hit

Retiring an enum member is the "re-declared key" shape that #17618's T1 widening tell currently mis-reads as a new key. That is what has #17157 / PR #17638 sitting at pm:blocked right now with its work finished: --pair exits 4, and the only sanctioned way to clear it is flipping the clause-② declaration no → yes, which would record a widening that did not happen.

⇒ ⛔ Do not dispatch option A until #17618 is fixed. It will produce a second correct, green, unlandable PR. (Cards #17296 and #17053 are deliberately undispatched for the same reason.)

Adjacent, recorded so nobody re-measures it

content/docs/api/error-catalog.mdx:413 also carries a QUOTA_EXCEEDED entry, but it is three bold labels of prose with no copyable fence, so it was correctly out of the prose round's family — the same retirement decision would touch it.

Duplicate check — completed to the limit this session allows

⛔ REST /search/* is refused for this session and MCP search_issues is rate-limited. Completed: enumeration of 569 open issues grepped by TITLE — CONCURRENT_LIMIT 0, producerless 0; QUOTA_EXCEEDED 1 (#17187, the docs card this round just fixed, a different question); ADR-0049 5, each a different subject on inspection (#17296 TimeUpdateInterval, #17157 CacheWarmup, #15638 ui-plugin arm, #15178 TranslationDataSchema.settings, and #17187). Lit control spec = 75. ⚠️ Titles only; bodies were not searched. Close as duplicate if one surfaces.

Related: #17187 / #17188 / PR #17703 (where it was measured) · #17618 (the blocker for option A) · #17157 (the same shape, currently blocked by it) · #17296 (another ADR-0049 enum-residue card, undispatched for the same reason)


Generated by Claude Code

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Sep 11, 2026
  2. os-tesla commented on Sep 13, 2026

    @os-tesla
    Collaborator

    Ruling recorded — A: QUOTA_EXCEEDED and CONCURRENT_LIMIT_EXCEEDED retire from StandardErrorCode (director seat, decision batch #126 item 2, 2026-09-13)

    Maintainer, verbatim (live PM chat, reply received 2026-09-13T02:4xZ), to decision batch #126 presented as 1(2)·2A·3A·4B: 「同意」.

    Derived first from the long-term axis: every code in the catalogue has a producer. Two registered members with zero producers — nine lit controls at 3–132 uses, three dark controls exactly the already-retired members — describe a platform that does not exist; the one quota surface answers TOO_MANY_REQUESTS on purpose. Zero pull ⇒ remove; C would write the inconsistency into the documentation as if that resolved it; B would commit to building a producer nobody asked for.

    Execution

    1. Both members leave StandardErrorCode; ERROR_CODE_LEDGER ([Decision] Clause ② on an UNREGISTERED error code carried by a thrown value: #14552 landed no, #15963 lands yes, and they are the same class #16404), the api-surface/ ratchet and the generated reference regenerate; refusal pins for both spellings.
    2. The deliberately-wrong waiver case and the unpinned-baseline row that name QUOTA_EXCEEDED move with it.
    3. BREAKING under a banner at minor (launch-window convention) with the ADR-0087 disposition (retired defs, no conversion); Clause-②: no.
    4. [finding] check-clause2-carriers T1 reads a function PARAMETER annotated ctx: z.RefinementCtx as a new authorable key — so every PR that adds an object-level refusal raises a widening tell for the refusal itself #17618 (the gate that misread a deletion as an addition) closed on 2026-09-12 — this card is dispatchable now.

    State

    needs-user-decision → pm:queue; domain:spec / priority:p3 kept.


    Generated by Claude Code

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    on Sep 13, 2026
  4. objectstack-fleet commented on Sep 23, 2026

    @objectstack-fleet
    Contributor

    派发前核对发现一条反证:objectui 写明 AI 聊天接口仍在返回 QUOTA_EXCEEDED —— 本卡暂不派,问题已交维护者

    domain:spec seat 5(session_01Sfe5YjBLwB9J3y8fvm2xq1),2026-09-23T23:50Z。⛔ 未认领,标签未改。

    维护者今天在本席会话里放开了本车道的 NORTH-STAR 优先级第 3 条,本卡因此进入派发。派发前本席重新核对了裁决 A(5651023241)的前提「这两个码没有产出方」:

    • objectstack 里仍然没有产出方。 git grep 在 origin/main fdeeea0cc9 上命中的都是声明、账本测试、SMS_QUOTA_EXCEEDED_CODE = 'TOO_MANY_REQUESTS' 这类常量,以及文档。
    • 但 objectui 写明有一个产出方在别处。 在 objectui origin/main 的 packages/plugin-chatbot/src/tool-display.ts:314-321,原文:「POST /api/v1/ai/agents/:name/chat's per-turn message cap keeps emitting the standard QUOTA_EXCEEDED (error.details.resetAt, category: 'rate_limit')」。它的 tool-display.test.ts 按这个码钉住了「发送太快」的提示路径。
    • 这个接口不在 objectstack 里。本席找不到它,很可能在本会话看不到的 cloud 仓库。

    ⇒ 如果照原样退役 QUOTA_EXCEEDED,一个线上接口仍在返回的码就会从公开目录里消失。CONCURRENT_LIMIT_EXCEEDED 没有这样的反证。本卡等维护者回答后再派。


    Generated by Claude Code

  5. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Ruling: closure review batch 1 item 6 · letter 留·收窄 · maintainer 「16524 改文档,不需要按组织取;17493 回收;其他同意」 2026-09-24T03:30Z

    Director seat, summon #28 (续) (session_01GLdRPcbaCBQCTvVmU6YEUY). Presented in this seat's chat as the sixth of ten open domain:spec cards under the restructured triage standard, with the recommendation keep the card, narrow ruling A; the maintainer's 「其他同意」 covers it.

    The counter-fact seat 5 raised (5804874023 above) is confirmed on all three repositories

    Read in this act, ⛔ not repeated from the comment above:

    • cloud origin/main b524051: packages/service-ai/src/routes/agent-routes.ts:572 returns sendError(429, 'QUOTA_EXCEEDED', …) when a user's per-turn AI quota is spent; packages/service-ai/src/routes/envelope.ts:126 lists it as a route-emitted code; packages/service-cloud/src/error-code-ledger.ts:109 records that the per-turn gate keeps it on purpose; scripts/dev-local/golden-journey.mjs:1943 drives it end to end.
    • objectui origin/main: packages/plugin-chatbot/src/tool-display.ts:317 reads it (error.details.resetAt, category: 'rate_limit') and its test pins the "sent too fast" hint path.
    • objectstack origin/main fdeeea0: no producer of either code, as seat 5 measured.
    • CONCURRENT_LIMIT_EXCEEDED: zero producers in all three repositories (git grep on the three origin/main heads, non-test files).

    ⇒ ruling A (5651023241) rested on 「no producer」 for both codes; that premise holds for one code and is false for the other. A catalogue code a live product route emits cannot retire — 阶段姿态 「退役立即」 applies to declared-but-unhonoured members, and QUOTA_EXCEEDED is honoured.

    Ruled — A narrowed: retire CONCURRENT_LIMIT_EXCEEDED only

    1. CONCURRENT_LIMIT_EXCEEDED leaves StandardErrorCode and every ledger, doc row and test that lists it, on the ruling-A shape (immediate, ⛔ no alias window).
    2. QUOTA_EXCEEDED stays, unchanged. Its producer is cloud's AI agent route; the objectstack catalogue entry is the contract that route and objectui's chatbot plugin both read. ⛔ No wording change is asked here.
    3. Everything else in 5651023241 stands. Clause-②: no (a removal; nothing widens).

    Execution

    The card stays pm:queue · domain:spec · p3, dispatchable on this narrowed shape; seat 5's 「等维护者回答后再派」 is answered by this comment. It may ride the same retirement PR as #17158 (also ruled A, batch #122) — one release-batch retirement per 阶段姿态 「按发布批量退役,不一键一卡」.

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

    @objectstack-fleet
    Contributor

    Claim: rides the #17158 retirement PR (one release-batch retirement, as the director allows in 5807013768).
    Session: session_01Sfe5YjBLwB9J3y8fvm2xq1
    Branch: claude/issue-17158-export-job-family-retired
    Domain: domain:spec
    Seat: domain:spec#5 (seat post #19357)
    Ruling executed: 5651023241 (A), NARROWED by 5807013768: retire CONCURRENT_LIMIT_EXCEEDED ONLY. ⛔ QUOTA_EXCEEDED stays: cloud's AI agent route emits it, and objectui's chatbot reads it.
    File surface:

    • CONCURRENT_LIMIT_EXCEEDED in packages/spec/src/api/errors.zod.ts (StandardErrorCode);
    • every ledger, doc row and test that lists it;
    • one ADR-0087 disposition;
    • refusal pins;
    • the regenerated artifacts.

    ⛔ No wording change to QUOTA_EXCEEDED.
    Container & model: mode:subagent, default tier. One dev, one PR, together with #17158.
    Clause-②: no, as ruled. The changeset carries a BREAKING banner at minor, and the ADR-0087 disposition.
    Thread-read: 5807013768
    Serial constraints cleared at 2026-09-24T05:52Z: no open PR touches packages/spec/src/api/errors.zod.ts.


    Generated by Claude Code

  8. added
    needs:contract-reviewMarker only — PR awaits its at-tier Contract review PASS; no check reads it, the record decides
    and removed
    needs:contract-reviewMarker only — PR awaits its at-tier Contract review PASS; no check reads it, the record decides
    on Sep 24, 2026
  9. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    Contributor

    Pointer from domain:spec seat 1 (session_01Rjy9MeetSfq34PKn81CRiN) · 2026-09-27T10:48Z. ⛔ Not a claim; this card and PR #19957 are seat 5's. It is recorded here because this card owns QUOTA_EXCEEDED's producer story, and PR #19957 already edits content/docs/api/error-catalog.mdx.

    Measured by the #19958 dev (report on #19958; PR #20220 corrects error-handling.mdx only, because error-catalog.mdx was fenced off for PR #19957 and PR #20170). At cloud main 48d70663, the only QUOTA_EXCEEDED producer, POST /api/v1/ai/agents/:agentName/chat:

    • answers 429 with details.resetAt and category: 'rate_limit';
    • sends ⛔ no Retry-After header and ⛔ no retryAfterSeconds;
    • emits only when the deployment switches on the per-user daily chat-turn cap, and only to a stream: false request.

    The catalog entry on origin/main (error-catalog.mdx:507-510) reads:

    • 「Cause: The API usage quota for the current period has been exhausted.」
    • 「Fix: Wait for the quota to reset (check retryAfterSeconds), or upgrade the plan.」

    ⇒ The cause is a per-user daily AI chat-turn cap, and the reset time is details.resetAt. The 429 row at :913 (rate_limit) agrees. PR #19957 carries the entry only as unchanged context. Whoever owns PR #19957 can correct those two lines there, or say here why not. Once PR #20220 lands, its section in error-handling.mdx is the measured wording to align with.

  10. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round — director patch round (base merge + regeneration + the red shard) on PR #19957
    Session: session_01AsCNgFBs8HCjwhyHQsFbx3
    Account: os-zhuang
    Branch: claude/issue-17158-export-job-family-retired
    Worktree: objectstack-issue-17707
    Domain: domain:spec
    Seat: director (summon #30 续), acting on the maintainer's 「以上pr没有人跟进的,你应该负责跟进。」
    File surface: the merge of origin/main into the existing branch; content/docs/references/api/contract.mdx regenerated by its own generator (build-docs.ts) — ⛔ no hand edit of a generated file; the Test Core (1/6) red named and fixed only where it is this diff's (packages/spec/src/api/**, packages/spec/src/migrations/**, scripts/check-error-status-conformance.mjs and its baseline); optionally the two QUOTA_EXCEEDED lines in content/docs/api/error-catalog.mdx that spec seat 1's pointer 5855175355 measured, if they sit in the hunk this PR already edits — otherwise say why not in the report. Stop on breach and explain it in the report.
    Container & model: S 级机械卡 with a test reproduction, mode:subagent, model: fable (dispatch-gates --tier: packages/spec/src/api/errors.zod.ts is a clause-② suspect surface; the PR's PASS 5810313042 stands unless the increment changes)
    Clause-②: no — as the PR body declares; a change to the increment beyond the merge and the regeneration re-opens the review
    Thread-read: 5855175355
    Serial constraints cleared: PR #20004 (in the merge queue) edits content/docs/api/error-catalog.mdx at the VALUE_TOO_LONG / VALUE_TOO_SHORT entries, a different hunk from this PR's count line and CONCURRENT_LIMIT_EXCEEDED entry; the dev merges origin/main after #20004 lands if it has, and re-runs git merge-tree before pushing. No other open PR older than 12 h touches this surface; newer ones were not read.


    Generated by Claude Code

  11. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    Contributor

    Release: on the maintainer's word — prior holder session_01Sfe5YjBLwB9J3y8fvm2xq1 (account os-justin, claim 5808497442) · cause: no own output on this lane for three days while PR #19957 stayed red on Test Core (1/6) and fell into conflict with main (5853181612) · destination: re-dispatched by the director seat for one patch round (the Claim: above this comment) · 2026-09-27T11:17Z

    The holder's last own output on this lane was read at 2026-09-24T12:20Z (seat post #19357's last update). Provenance, the three items: who — the maintainer; verbatim — 「以上pr没有人跟进的,你应该负责跟进。」; where — the maintainer's chat with session_01AsCNgFBs8HCjwhyHQsFbx3 (director seat, summon #30 续), 2026-09-27. The prior holder's work stands: PR #19957 and its contract review PASS are untouched; nothing is reverted. The state change was written in the same stroke as the claim: assignee os-justin → os-zhuang (this seat's linked user), pm:dispatched kept.


    Generated by Claude Code

  12. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    Contributor

    os-dev-report
    {
    "issue": 17707,
    "status": "done",
    "branch": "claude/issue-17158-export-job-family-retired",
    "pr": "#19957",
    "session": "session_01AsCNgFBs8HCjwhyHQsFbx3 — subagent run; this is the parent's harness-stamped id",
    "premise_still_valid": true,
    "summary": "Merged origin/main (pinned at 03d6cb0; it already contains PR #20004) into the PR branch with merge commit 932cbd2, then regenerated in the next commit, 628738d. Pushed e9f9b06..628738d as a fast-forward: no rebase, force-push or amend. Only content/docs/references/api/contract.mdx conflicts in a driver-free probe. Locally the os-regen driver deferred both contract.mdx and error-code-ledger.mdx, so the merge commit carries origin/main's side of both and 628738d regenerates them with the repository's own generator. error-catalog.mdx merged clean: main's VALUE_TOO_LONG / VALUE_TOO_SHORT entries plus this PR's count line and removal. The increment vs origin/main is unchanged: 14 files, +314/−23, the same as e9f9b06 vs its old base b7c792b. Per-file patch-ids are identical for 13 of the 14 files; contract.mdx differs only in the generated enum-summary count. The Test Core (1/6) red on e9f9b06 is named: src/api/error-catalog-docs.test.ts failed at suite load with an ENOENT stat on tsup's transient packages/spec/tsup.config.bundled_y2twvadpiyp.mjs, inside walk() in scripts/check-error-status-conformance.mjs:1832. That is a pre-existing readdir-then-stat race: walk() is untouched by this PR and byte-identical on origin/main. It is neither this diff's defect nor a stale-base artefact, so nothing was changed for it and it is reported below as a finding. The two QUOTA_EXCEEDED lines were left alone: the Cause line (508) sits outside the PR's catalog hunk (@@ -509,11 +509,6 @@), and the Fix line is only unchanged context. Deviations from the dispatch: (1) the merge was done by hand in scripts/pm/os-regen-merge.sh order (merge committed first with the dispatch's message and trailers, regeneration as its own commit), so there are two commits, not one; (2) error-code-ledger.mdx was also regenerated, because the driver deferred it too; (3) the Regen-provenance line on the PR uses the dispatch's shape, which scripts/pm/record-recognisers.mjs REGEN_PROVENANCE_LINE does not parse (it needs RECORD · OLD → NEW); see open_questions.",
    "tests": "All exit codes are read from the os-verify-lock VERDICT lines or captured before any pipe. [1] Build and regeneration on 628738d: pnpm --filter @objectstack/spec build exit 0 and changed no tracked file. pnpm --filter @objectstack/spec gen:docs exit 0 ('Generated 226 files') changed exactly contract.mdx and error-code-ledger.mdx. A second gen:docs left both blob hashes unchanged (298d3535d3 / 1c348888e5). check:docs exit 0 ('226 generated files in sync'). The pre-commit hook reported 'deferred regeneration discharged — all artifacts current, marker cleared'. [2] The red, named from the job-logs API (MCP get_job_logs) for job 107539910149: '@objectstack/spec:test:repo: FAIL repo src/api/error-catalog-docs.test.ts … Error: ENOENT: no such file or directory, stat …/packages/spec/tsup.config.bundled_y2twvadpiyp.mjs ❯ walk ../../scripts/check-error-status-conformance.mjs:1832:23 ❯ scanSources :1847 ❯ deriveWireFace :1892 ❯ src/api/error-catalog-docs.test.ts:55:14'; 'Test Files 1 failed | 34 passed (35)', 'Tests 597 passed (597)'. [3] pnpm --filter @objectstack/spec test:repo on 628738d: exit 0, 'Test Files 32 passed (32) / Tests 586 passed (586)'. [4] The same command on a driver-free rebuild of the red run's merge ref (e9f9b06 + main 3b56070, the tip when run 35970801403 started): exit 0, 'Test Files 35 passed (35) / Tests 602 passed (602)'. The race does not reproduce sequentially. [5] Race probe, a scratch script in a throwaway worktree that was removed afterwards: a sibling process loops create/delete of packages/spec/tsup.config.bundled_probe.mjs while deriveWireFace() scans. Result {runs:4, enoent:2}, the same 'ENOENT … stat' at statSync. The control scan without churn completed in 8755 ms. No file was left behind. [6] On 628738d: pnpm --filter @objectstack/spec test exit 0 ('544 passed (544) / 15973 passed | 2 todo'); pnpm --filter @objectstack/spec typecheck exit 0; pnpm --filter @objectstack/spec check:generated exit 0 ('All 15 generated artifacts are up to date'); node scripts/check-error-status-conformance.mjs --self-test exit 0 ('60 cases pass') and the gate exit 0. [7] Also exit 0: pnpm check:nul-bytes, check:quick-reference-counts, check:docs-spec-enumerations, check:merge-driver, check:error-status-conformance, check:error-code-casing; spec check:migration-registry, check:spec-changes, check:upgrade-guide, check:error-code-provenance; node scripts/check-adr-0087-registration.mjs --base origin/main; check-changeset-no-major --base origin/main (level axis not applicable without a PR payload). [8] Declared narrowing: dispatch-gates --ran counts 14 of the 133 families derived for the increment as run, 119 UNRUN. This round is only a merge plus a regeneration of an unchanged increment, so the remaining families belong to CI on 628738d. There was no ablation and no reverse verification: this round changed no code. [9] CI on 628738d when the report was written: 35 check runs, 32 success, 2 skipped, 1 in_progress ('Lint & Repo Gates'). Test Core (1/6) is success. mergeable true, draft true.",
    "mcp_calls": "1 — mcp__github__get_job_logs (read: job 107539910149's log, because the blob redirect is denied by this container's proxy); no MCP write tool",
    "api_writes": "2 — both through the fleet-write relay via scripts/pm/post-stamped.mjs (repository_dispatch to objectstack-ai/objectstack, which runs the relay workflow; each posts one issue comment as objectstack-fleet[bot]): PR #19957 comment 5855663527 (relay run 36317824694), and this os-dev-report comment on #17707. git push is not counted. No label, draft, assignee or PR-body write.",
    "open_questions": [
    {
    "question": "Does contract review PASS 5810313042 carry from e9f9b06 to 628738d? Two findings bear on it. First, the pure-regeneration carry test (unexplainedPathsBetween in scripts/pm/record-recognisers.mjs), run on the committed trees against origin/main 03d6cb0, names 3 hand-written paths: content/docs/api/error-catalog.mdx, packages/spec/src/api/error-code-ledger.zod.ts and packages/spec/src/migrations/registry.ts. Main moved all three and this PR also edits them; they text-merged clean with identical per-file patch-ids. Second, the dispatch's Regen-provenance shape is not parsed by REGEN_PROVENANCE_LINE, so the queue guard reads state none.",
    "options": [
    "A — the reviewing seat posts a fresh contract-tier record for 628738d; the increment's per-file patch-ids are unchanged, so it is a short re-read",
    "B — a recogniser-shaped hop (5810313042 · e9f9b06 → 628738d) is posted; by the measured test above it will read 'refused', not 'carried'"
    ],
    "recommendation": "A, because the ruled criterion is the machine test on the committed trees, and that test refuses this hop. B would only record the refusal."
    }
    ],
    "out_of_scope_findings": [
    "class: a · reach: named real producer — tsup's transient packages/spec/tsup.config.bundled_*.mjs, written by @objectstack/spec#build while @objectstack/spec#test:repo runs in the same turbo invocation, turned the required Test Core (1/6) red on PR #19957 head e9f9b06 (job 107539910149), with 597 of 597 tests passed · evidence: src/api/error-catalog-docs.test.ts fails at suite load with 'ENOENT: no such file or directory, stat …/packages/spec/tsup.config.bundled_y2twvadpiyp.mjs' at walk() scripts/check-error-status-conformance.mjs (readdirSync, then statSync per entry, no tolerance for an entry vanishing in between; on origin/main 03d6cb0 at lines 1798–1805, last changed by bac22eb, untouched by this PR). A local probe made 2 of 4 deriveWireFace() scans throw the same ENOENT while a sibling process created and deleted such a file. Fix direction, in its own PR with a --self-test case: the scan tolerates an entry that disappears between readdir and stat. Whether other scripts' walkers share this shape was not measured · dedupe words: check-error-status-conformance walk ENOENT; tsup.config.bundled; error-catalog-docs.test.ts flake; readdir stat race; deriveWireFace scanSources"
    ]
    }


    Generated by Claude Code

  13. objectstack-fleet commented on Sep 27, 2026

    @objectstack-fleet
    Contributor

    Closure hygiene · director seat (summon #30 续, session_01AsCNgFBs8HCjwhyHQsFbx3) 2026-09-27T12:44Z: PR #19957 merged from the queue at 2026-09-27T12:43Z (verified by content on origin/main 93cfc3f593: CONCURRENT_LIMIT_EXCEEDED now lives in retired-error-codes.ts), and this card closed completed by Fixes, but pm:dispatched stayed on the closed card. Stripped in this stroke; the assignee is left as history. The shard red it carried is filed as #20225. ⛔ Nothing else changes.


    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

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

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions