Repository navigation
ci: Type Check red on every PR that touches no workspace package since objectui#12222 (PR #12251): the scoped turbo run builds no dist, then type-check:vitest-setup cannot resolve the five packages the root setup files import #12272
Description
Filing gate ①: a measured defect with a named landing point, .github/workflows/ci.yml job type-check (the steps Run type-check and Type-check repo-root vitest setup files) and scripts/select-type-check-scope.mjs. Filed by the director seat (summon #37, session_01LqNgdPZB2Jnr5HpGbaqLeB) on a regression from its own lane's landing, objectui#12222 → PR #12251 (merge 1ce8db8d, 14:41Z), found on PR #12262 at the maintainer's word 「12262 红了」. ⛔ Not a claim; the claim follows in this act, under the standing order 「三仓的 ci 优化卡你负责派发」. Blocks: PR #12262 (approved, readied and auto-merge armed by the maintainer at 21:35Z) and every pull request whose diff touches no workspace package (workflow-only, docs-only, scripts/__tests__-only diffs; the lane's own weekly refresh PRs are candidates).
What is measured
PR #12262, head c819b74b (the maintainer's merge of main 7af0ab37 into the branch; the diff is .github/workflows/spec-main-shape-gate.yml, scripts/__tests__/spec-main-shape-gate.test.ts, content/docs/guide/ci-cd-pipeline.md). The Type Check job 115018179844 of run 38311534599, from its log:
Decide which packages to type-check: "3 file(s) changed against 7af0ab3… No changed file sits in a workspace package or reaches one through a turbo input: nothing to type-check." thenscope=affected.Run type-check:turbo run type-check --filter=...[7af0ab37]→ "Packages in scope: //", "No tasks were executed as part of this run", 0 total. Nothing built, so no package'sdist/exists on the runner.Type-check repo-root vitest setup files:tsc -p tsconfig.vitest-setup.json→vitest.setup.dom.tsxlines 47–50, TS2882 "Cannot find module or type declarations for side-effect import of '@object-ui/components'", and the same for@object-ui/fields,@object-ui/plugin-dashboard,@object-ui/plugin-grid;vitest.setup.i18n-catalogues.tsline 54, TS2307 '@object-ui/i18n/locales'. Exit 2; the job red.- Before PR ci(type-check): the turbo cache replays unchanged packages, and pull-request and queue runs type-check only what the change affects (objectui#12222) #12251 that step followed
pnpm type-checkover the whole workspace, whosetype-checktaskdependsOn^buildandbuild, so everydist/existed when the roottscran. PR ci(spec-main-shape-gate): drop the merge_group trigger now the context is out of the required set (objectui#12252) #12262's earlier head17033fd1, based before ci(type-check): the turbo cache replays unchanged packages, and pull-request and queue runs type-check only what the change affects (objectui#12222) #12251 landed, hadType Checkgreen (ACCEPT 6126674519). mainis not red:pushandscheduleruns takescope=full(TURBO_FORCE, every package). The red is onpull_requestruns (and, to be measured,merge_groupbuilds) whose affected set is empty; to be measured as well: a non-empty affected closure that does not contain the five packages the root setup files import (@object-ui/components,@object-ui/fields,@object-ui/plugin-dashboard,@object-ui/plugin-grid,@object-ui/i18n) fails the same way, since nothing builds them either.
Governing text
- objectui#12222's ACCEPT (6126154639) and landing (6126541762): two speeds, the affected set on pull requests and the queue, the full workspace on
pushandschedule; nothing deleted or weakened. ci.yml, thetype-checkjob: "⛔ Raisingtimeout-minutes: 20is not the fix".
What to build (measure first, then pick; say which and why)
The root tsc steps need the built typings of the packages they import. Routes: (A) in the affected scope, add those packages to the turbo filter (--filter=...[BASE] plus --filter=<pkg> for the five) so their build runs, replayed from the cache when unchanged, before the root step; (B) make type-check:vitest-setup (and any sibling root step that imports packages: read type-check:scripts, type-check:vitest-config, type-check:e2e) a turbo root task with dependsOn on those packages' build and its own inputs (the shape objectui#12222 gave //#type-check:e2e), run through turbo in both scopes; (C) skipping the root step on an empty affected set is ⛔ not enough alone (the non-empty case without the five fails the same way) and would weaken a check. Keep the push/schedule path byte-identical. scripts/select-type-check-scope.mjs's self-test gains the empty case and the "affected set without the five" case, whichever route is taken.
Acceptance
- A pull request whose diff touches no workspace package gets
Type Checkgreen with the roottscsteps run, not skipped: PR ci(spec-main-shape-gate): drop the merge_group trigger now the context is out of the required set (objectui#12252) #12262 is the live case (after this lands the seat mergesorigin/maininto it and reads its run). A package-only diff whose affected closure lacks the five is green too (the dev's own probe or a fixture, quoted in the PR body).main's nextpushrun unchanged. - The CI doc and the pins that read the job (
scripts/__tests__/ci-cd-pipeline-doc.test.ts,turbo-test-inputs, whatever names the steps) follow.
Related: objectui#12222 · PR #12251 · PR #12262 (blocked by this) · PR #12263 (its run takes scope=workspace: root files changed).
Activity
objectstack-fleet commentedon Oct 12, 2026
Claim: PM loop round 1 · the director seat dispatching on the maintainer's word 「12262 红了」 and the standing order 「三仓的 ci 优化卡你负责派发」, on a regression from this seat's own lane (objectui#12222 → PR #12251) (this seat's session, 2026-10-12T21:46Z)
Session:
session_01LqNgdPZB2Jnr5HpGbaqLeBAccount:
os-zhuangBranch:
claude/issue-12272-typecheck-root-distWorktree:
objectui-issue-12272Domain:
domain:devxSeat:
domain:devx#9File surface:
.github/workflows/ci.yml(thetype-checkjob only: the scope decision,Run type-check,Type-check repo-root vitest setup filesand the comments that explain them),scripts/select-type-check-scope.mjsand its self-test,turbo.jsononly if route B adds a root task block fortype-check:vitest-setup(and itsinputs),content/docs/guide/ci-cd-pipeline.mdonly where a pin requires the job's steps named, the pins that read the job (scripts/__tests__/ci-cd-pipeline-doc.test.ts,turbo-test-inputs). ⛔ Not thetest/test-coveragejobs, the aggregators,vitest.config.mts, any package.Container & model:
M,mode:subagent,model: opus(a main-red-class CI regression on this seat's own landing: the judgment tier). Tier H (the round's posture for.github/workflows/**): draft until aGOVERNED_APPROVERSmember approves; the seat then lands it.Clause-②: no
Responsibility:
the type-check job's affected scope from PR #12251 (objectui#12222, this seat's lane) | none: in the affected scope no step builds the packages the root tsc steps import | every pull request whose affected set is empty or lacks the five packages the root setup files import; PR #12262 today, blockedThread-read: none
Ruling-ref: objectui#12222's ACCEPT 6126154639 and landing record 6126541762 (two speeds; nothing deleted or weakened); the maintainer's word 「12262 红了」 (2026-10-12)
Serial constraints cleared: PR #12263 (objectui#12208 + #12256) is in the merge queue with auto-merge armed and touches
ci.yml'stest,test-coverageand aggregator jobs andturbo.json'stestinputs; this card's hunks are thetype-checkjob and, for route B,turbo.json's root task block: disjoint. Mergeorigin/mainonce PR #12263 is merged (minutes away) before opening the PR, and again before the seat lands; ⛔ no rebase. PR #12262 (objectui#12252) is the blocked live case: ⛔ do not push to it; the seat mergesorigin/maininto it after this lands.Resume-from: none
objectstack-fleet commentedon Oct 12, 2026
os-dev-report
{
"issue": 12272,
"status": "done",
"branch": "claude/issue-12272-typecheck-root-dist",
"pr": "#12277",
"session": "session_01LqNgdPZB2Jnr5HpGbaqLeB — the dispatching seat's session (this run is its subagent)",
"premise_still_valid": true,
"summary": "Defect reproduced locally on 7af0ab3 (empty diff: selector scope=affected, turbo 0 tasks, pnpm type-check:vitest-setup exit 2 with the same four TS2882 and one TS2307 as PR #12262). Fix: ci.yml's type-check job gains one step,
Build the packages the repo-root programs import, betweenRun type-checkandType-check repo-root vitest setup files, gated on scope == 'affected' (so push/schedule skip it and the full battery runs exactly as before). It runspnpm exec turbo run buildwith one --filter per package; the package list is read on every run out of tsconfig.vitest-setup.json'spathsby the newnode scripts/select-type-check-scope.mjs --root-builds(TypeScript's own config parser, each target walked up to its package), never copied. Draft PR #12277, Type Check of its own run in_progress at report time (check-run 115033524773).","route": "Neither A as worded nor B: a corrected A, measured first. A as worded (the five added to the
turbo run type-checkfilter) builds only 3 of 5:type-checkwaits on^build(dependencies' builds) and never builds a named package's own, so plugin-dashboard and plugin-grid stay unbuilt (dry run).PKG#buildon the type-check command line builds all 5 but also adds the five packages' type-check and the uncached e2e root task (23 tasks on an empty diff). Route B works only when the root task is named with the//#prefix (18 tasks empty diff, 20 on a plugin-ai diff; named bare the filter drops it, 0 tasks), but it changes the full battery's step, reverses the documented direct/uncached design of the root step, and touching turbo.json would make this PR scope=workspace. The chosen step leaves push/schedule unchanged, keeps the root step direct, keeps this PR package-less (its own run is the live defect path), and derives the list instead of copying it into dependsOn. Route C refused: a plugin-ai-only diff (non-empty set) fails the same way.","hypotheses": {
"H1": "Confirmed locally: warm, the build step replays 16 of 16 tasks (turbo 138 ms, step 1.1 s); cold, 16 tasks, 1 cached, turbo 2m3s on the shared 4-core box. On CI, main's pruned cache already replays builds: PR #12263's queue run notice reads 'build 35/35 replayed' from restored turbo-Linux-type-check-7af0ab37... The PR's own build-step notice (
Repo-root program builds ... -- Cached: N cached, M total) is NOT MEASURED yet. The Report notice does not count these builds by design (the step writes no run summary so the Report keeps reading Run type-check's); the step's own notice carries turbo's Cached line instead, since job logs answer 403 from the container (measured on job 115018179844).","H2": "Measured with --dry=json on a never-pushed probe commit:
turbo run type-check //#type-check:vitest-setup --filter=...[HEAD](empty diff) includes the root task and all five builds, 18 tasks; with --filter=...@object-ui/plugin-ai 20 tasks, root task included. Named bare (type-check:vitest-setup) the filter excludes it: 0 tasks on the empty diff, root task absent on the plugin-ai filter. Route B not taken (see route).","H3": "Confirmed from the workflow and runs: merge_group uses QUEUE_BASE through the same selector, so a package-less queue build takes the same zero-package path; the new step is gated on scope, not on event, so it covers merge_group. PR #12263's queue build (run 38312800712, Type Check job 115022286788) passed: turbo.json was in its diff, so scope=workspace (notice: build 35/35 replayed, type-check 0/45). No package-less queue build has run since PR #12251 (the merge_group CI runs listed: 38312800712 and 38288254719), so the queue-side red was not observed live.",
"H4": "PR #12263 merged 2026-10-12T22:00:03Z as 1fb1ced; origin/main merged into the branch (merge 24c8c17), no rebase, no force-push. ci.yml and turbo.json auto-merged (disjoint hunks); one conflict in content/docs/guide/ci-cd-pipeline.md on two adjacent rows of the job table, resolved as this branch's type-check row and main's test row. Nothing pushed to PR #12262's branch."
},
"local_proof": "A one-off harness (not committed) parses ci.yml and runs the run: text of every type-check step from
Decide which packages to type-checkthroughType-check repo-root vitest setup filesas a pull_request event (GITHUB_OUTPUT, RUNNER_TEMP, if: and env: expressions evaluated), no dist/ before each run. Final head 24c8c17 against base 1fb1ced: 4 files changed, scope=affected, zero packages, build step 16/16 cached, vitest-setup exit 0. Cold at b1b76e0: 16 tasks built, vitest-setup exit 0. Affected set without the five: a never-pushed probe commit on 24c8c17 touching packages/plugin-ai/src/AIFormAssist.tsx: selector lists @object-ui/plugin-ai alone, Run type-check 10 tasks, build step 16/16 cached, vitest-setup exit 0.","ablation": "Committed fix first. (1) bf00a18 with ci.yml replaced by the base's (step gone; grep count of the step name 1 to 0), dist removed: harness vitest-setup exit 2 with the five errors. (2) The plugin-ai probe with the same swap: exit 2 with exactly fields, plugin-dashboard, plugin-grid (the three a plugin-ai closure lacks). (3) Test level at bf00a18, same swap: select-type-check-scope.test.ts 1 failed / 19 passed, the new wiring test red. Each leg restored with
git checkout HEAD -- .github/workflows/ci.ymlunder an EXIT/INT/TERM trap with absolute paths; restore proven by blob hash equal to the HEAD blob (4333c9ad...) andgit diff HEADempty; after (3) the file passes 20/20.","tests": "At 24c8c17:
pnpm exec vitest run --maxWorkers=2over every test file that reads ci.yml, turbo.json, the CI doc, the selector or tsconfig.vitest-setup.json (git grep, 76 files) under os-verify-lock: Test Files 76 passed (76), Tests 2541 passed (2541), VERDICT command-exit 0. An earlier union at bf00a18 had 1 red (markdown-test-inputs: the new test walked a directory and named a .md path); fixed in 501d611 by reading the setup program's files from its tsconfig, both files then green (45 tests). select-type-check-scope.test.ts: 13 to 20 tests. Ablation and proofs as above.","gates": "Hand-derived from objectui's workflows (dispatch-gates.mjs refuses objectui: 'REFUSING — asked for objectstack-ai/objectui, but this checkout is objectstack-ai/objectstack'). At 24c8c17, each exit captured before any pipe, all exit 0: check-control-bytes, check-action-ref-convention, check-shell-escape-residue, check-bash32-floor, check-doc-links, check-doc-example-ids, check-doc-component-types, check-doc-json-fences (first run exit 2 = prerequisite: types dist not built; re-run after a cached types build, exit 0), check-doc-fence-languages, check-new-cross-file-line-citations ('0 new citation(s)'), check-type-check-coverage, check-required-check-set --self-test, check-pre-install-import-graph, check-test-path-roots, check-lint-coverage, check-changeset-presence ('no changeset is owed'), check-entry-guard, check:docs-route-closure, pnpm type-check:scripts, eslint --no-inline-config over the changed script and test, strict YAML parse of ci.yml, control-byte grep of the four files. check-governed-queue-guard --test: NOT GOVERNED (draft held per the card's Tier H).",
"files_changed": [
".github/workflows/ci.yml (type-check job only: the new step and the vitest-setup step's comment)",
"scripts/select-type-check-scope.mjs (--root-builds, rootProgramPackages, ROOT_PROGRAMS_AFTER_BUILD, the affected verdict lists the root builds)",
"scripts/tests/select-type-check-scope.test.ts (7 new cases)",
"content/docs/guide/ci-cd-pipeline.md (the type-check row)"
],
"deviations": [
"Route is a corrected A (a separate turbo run build step), not A as worded, which measured insufficient; the step runs on the affected speed only (push/schedule skip it), so 'in both scopes' is met by the full battery's own ^build there, unchanged.",
"The dispatch's 'your PR takes scope=workspace' is refuted: none of the four files is a root-rule file, so PR #12277's own Type Check run is the live package-less case.",
"The selector has no --self-test flag; its self-test is scripts/tests/select-type-check-scope.test.ts, which gained the empty-affected and affected-without-the-five cases.",
"Added a ::notice from the build step (turbo's Cached line), because job logs answer 403 from the container and the Report notice reads only Run type-check's run summary.",
"tsconfig.vitest-setup.json is read (not edited) by the derivation.",
"The merge commit's message was amended before its first push to carry the trailer pair; no force-push. Commit trailers are the model-free pair per objectui AGENTS.md, over the harness reminder's model-named line.",
"Two never-pushed local probe commits (the H2 turbo.json probe, the plugin-ai probe) were created and reset locally to the pinned commit; the remote branch never held them.",
"Labels: zero label writes; objectui's labeler applied documentation, configuration, ci/cd, tests."
],
"not_measured": [
"PR #12277's own Type Check run (check-run 115033524773, in_progress at report time): the live package-less case, including the build step's notice (H1 on CI).",
"PR #12262 after this lands (the seat merges origin/main into it).",
"A package-less merge_group build (none has run since PR #12251).",
"actionlint (not installed); repo-wide pnpm lint (CI's Lint job)."
],
"mcp_calls": "0",
"api_writes": "2 relay strokes through scripts/pm/fleet-write/dispatch.mjs (objectstack-fleet[bot]): (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos//issues/12277/assignees (os-zhuang), read back 10218 bytes sent = stored; (2) this report = POST /repos//issues/12272/comments. git push is not REST. No label write.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: none (承接者:无) · noted, not filed · tsconfig.vitest-setup.json's comment says the ci.yml step sits after
pnpm type-checkso the declarations exist; since objectui#12222 that holds on the full and workspace speeds only. Not edited: outside the claim's file surface, and a root tsconfig is a root-rule file (editing it would make this PR scope=workspace). In PR #12277's Acceptance notes."]
}
Generated by Claude Code
objectstack-fleet commentedon Oct 12, 2026
Review: ACCEPT · PR #12277 (draft, head
24c8c17c) · director seat, the last objectui dispatch it finishes under the maintainer's new division of labour (「cloud 相关的任务你继续处理,其他任务归车道」), 2026-10-12T22:28ZChecked on GitHub and on the head's tree, not on the report's say-so:
main(merge-base1fb1ced3:origin/mainmerged after PR ci(test): the coverage lane runs eight shards, then both test matrices shard by measured duration (objectui#12208, objectui#12256) #12263 landed, the CI doc's adjacent-row conflict resolved each side's own row), body line 1Fixes #12272, assigneeos-zhuang; 4 files, +234/−6 (ci.yml+46 in thetype-checkjob only, the selector +78, its test +114, the CI doc's one row).Build the packages the repo-root programs importbetweenRun type-checkandType-check repo-root vitest setup files, gatedif: steps.relevant.outputs.should_run == 'true' && steps.tc-scope.outputs.scope == 'affected'(sopush/schedule,scope=full, run exactly as before); it runspnpm exec turbo run build --filter=<pkg>…over the listnode scripts/select-type-check-scope.mjs --root-buildsprints, which the selector derives on every run fromtsconfig.vitest-setup.json'spathswith TypeScript's own config parser (ROOT_PROGRAMS_AFTER_BUILD,rootProgramPackages), never a copied list; a::noticecarries turbo'sCached:line. The 16 non-comment lines theci.ymldiff adds are that step and nothing else.Type Checkrun takes the very path PR ci(spec-main-shape-gate): drop the merge_group trigger now the context is out of the required set (objectui#12252) #12262 failed on:Type Checksuccess on24c8c17c(job 115033524773, 22:22–22:24Z), where PR ci(spec-main-shape-gate): drop the merge_group trigger now the context is out of the required set (objectui#12252) #12262's headc819b74bfailed at the same step. The dev's local harness replays the job's steps fromDecide which packages to type-checkthrough the roottscstep: at the head, scope=affected with zero packages, the build step 16/16 cached,type-check:vitest-setupexit 0; cold, 16 tasks built, exit 0; a probe diff touchingpackages/plugin-aialone (an affected set without the five) exit 0. Ablations with the step removed: exit 2 with the five errors on the empty diff, and with exactlyfields,plugin-dashboard,plugin-gridon the plugin-ai diff (the three its closure lacks); the new wiring test red (1 of 20); restores proven.type-checkdepends on^build, never a named package's own build);PKG#buildon the type-check line adds the five type-checks and the uncached e2e root task (23 tasks on an empty diff); route B works only with the//#prefix and would change the full battery's step andturbo.json(making the PRscope=workspace); route C refused (the plugin-ai probe fails the same way). The chosen step is the smallest change that covers both the empty and the without-the-five cases on the affected speed and leaves the full speed byte-identical. Accepted.Type Check,Build & E2E,Build Docs,Test (dist pins),Changeset Declaration/Claim Re-read/Fixed Group,Governed Surface Queue Guard,Line Citation Gate,Live E2E; running: the 12Testshards,Lint,Repo Gates,Spec Main Shape Gate(advisory). Nothing red; landing waits for all green. The dev's union: 76 test files (2,541 tests) green under the lock; 19check-*gates andtype-check:scriptsexit 0; eslint on the changed script and test; a strict YAML parse.dispatch-gates.mjsrefuses objectui, so the gates were hand-derived from the workflows (a deviation accepted).merge_groupbuild takes the same zero-package path (QUEUE_BASEthrough the same selector) and none has run since PR ci(type-check): the turbo cache replays unchanged packages, and pull-request and queue runs type-check only what the change affects (objectui#12222) #12251, so the queue-side red was never observed live; the step is gated on scope, not event, so it covers the queue..github/workflows/**→ the maintainer approves, the seat readies and arms the queue. Contract review: none of the three faces.::noticefrom the build step (job logs answer 403 from the container);tsconfig.vitest-setup.jsonread, not edited; the selector's self-test is its vitest file (no--self-testflag), 13 → 20 cases; the merge commit's message amended before its first push (no force-push); zero label writes. Writes: 2 relay strokes;mcp_calls0.tsconfig.vitest-setup.json's comment says theci.ymlstep runs afterpnpm type-checkso the declarations exist; true on the full and workspace speeds only. Carrier: the next edit of that root tsconfig (a root-rule file; editing it here would have made this PRscope=workspace).Landing: on all checks green and the maintainer's Approve, the seat readies the PR and arms the queue (the last objectui landing this seat does); then the seat merges
origin/maininto PR #12262's branch and reads its run (the live acceptance:Type Checkgreen on a package-less PR), after which the maintainer's auto-merge on #12262 takes it. This card stayspm:dispatcheduntil the landing record.objectstack-fleet commentedon Oct 12, 2026
LANDED — PR #12277 is MERGED (2026-10-12T23:11Z, approved by the maintainer, review 5496847263 on head
24c8c17c; readied and auto-merge armed by the seat on that approval; merge commit48fb558d) and read in place onorigin/main48fb558d. Director seat, summon #37,session_01LqNgdPZB2Jnr5HpGbaqLeB, 2026-10-12T23:11Z: the last objectui landing this seat does under the maintainer's division of labour (「cloud 相关的任务你继续处理,其他任务归车道」).origin/mainci.yml: the stepBuild the packages the repo-root programs import, gated onscope == 'affected'scripts/select-type-check-scope.mjs:rootProgramPackagesand--root-buildsRun type-checkstep byte-identical to1fb1ced3(the full speed untouched)Fixesline;pm:dispatchedstripped and the assignee released in this act.mainthrough the relay (pr_update_branch), so its next run takes the affected speed with the new step;Type Checkgreen there is the card's acceptance on the very PR that found the defect. Read and recorded here when that run completes; the maintainer's auto-merge on ci(spec-main-shape-gate): drop the merge_group trigger now the context is out of the required set (objectui#12252) #12262 then takes it.objectstack-fleet commentedon Oct 12, 2026
Live acceptance read: PR #12262's
Type Checkis green on the affected speed with the new step. Director seat, summon #37,session_01LqNgdPZB2Jnr5HpGbaqLeB,2026-10-12T23:20Z.PR #12262's branch was updated from
main(48fb558d, the merge of PR #12277) through the relay at2026-10-12T23:13Z; its new head654f8bbbis the same package-less diff that failedType Checkatc819b74b(run 38311534599, job 115018179844, 21:35–21:36Z: the defect this card was filed on).654f8bbb, run 38320983456, job 115048751482 (23:13–23:15Z)Type CheckconclusionBuild the packages the repo-root programs importran (scopeaffected)@object-ui/components @object-ui/fields @object-ui/i18n @object-ui/plugin-dashboard @object-ui/plugin-grid -- Cached: 16 cached, 16 total,FULL TURBOin 118 mspnpm type-check:vitest-setup(tsc -p tsconfig.vitest-setup.json)48fb558dand green after it, with the five packages' builds restored from the turbo cache. Job 115048751482 is the citation.Testshards,Lint,Repo Gatesand the advisorySpec Main Shape Gatestill running;Build & E2E,Build Docs,Test (dist pins), the three Changeset checks,Governed Surface Queue Guard,Line Citation Gate,Live E2Egreen. The maintainer's auto-merge takes it when the required set is green; the three-merge-group reading for objectui#12252 follows the merge (the seat's promised reading, left on ci(spec-main-shape-gate): drop themerge_grouptrigger once the ruleset reads INTACT on seven — an advisory verdict on a queue build is read by nobody (objectui#12240 follow-up, letter B) #12252 when done).Corrected in place by the seat at
2026-10-12T23:24Z: the failing job cited forc819b74bis 115018179844; the id first written was wrong.objectstack-fleet commentedon Oct 12, 2026
H3 read: the merge group's package-less path is covered. Director seat, 2026-10-12T23:43Z. The first package-less queue build since PR #12251 was PR #12262's merge group (run 38322151265, head
a1a917a0, 23:26–23:38Z):Type Checksuccess (job 115052481389, 23:26–23:28Z); its stepBuild the packages the repo-root programs importran (success, 23:28:19–23:28:20Z, a cache replay) andType-check repo-root vitest setup filesexited 0 right after. With the live acceptance above (thepull_requestspeed, 6134498869) the card's acceptance is complete on both speeds the fix covers. Nothing further is owed here.