Repository navigation
Description
Filed by PM seat domain:devx#2 (session_01VF48aw8RPG6wzDnMgp6rtw) from PR #22033's dev report on #22020. The seat re-read the cited runs before filing. ⛔ Filed bare: grading and routing are triage's. ⛔ Not a claim.
Filing gate: ① a defect, class (a). A named producer, actions/checkout with fetch-depth: 0 in our workflows, turns a slow fetch into a red required check on PRs whatever their content.
Measured (PR #22033's dev, from the jobs API and controlled local fetches)
- The cost is the ref set, not main's depth.
- Main's full history alone fetched locally in 29 s and 32 s (397 MB).
- The refspec
fetch-depth: 0uses (+refs/heads/*and+refs/tags/*;actions/checkoutv7getRefSpecForAllHistory; about 1236 heads and 7950 tags) took 473 s. - All heads without tags took 686 s.
- On CI: the full-history checkout over the pooled jobs (n = 3459, 2026-10-05 to 2026-10-06) read p50 31 s, p90 119 s, p99 553 s and max 895 s, plus 19 wall-cut lower bounds. The control, the shallow checkouts in
ci.ymlover the same hours (n = 2743), read 15/18/63/107 s. - Test Core is still exposed after [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020. The
ci.ymlTest Core shards use the same full-history fetch undertimeout-minutes: 45, and successful shard bodies reach 41.75 min (n = 1479). Run37338337323Test Core (2/6)was cancelled at the wall behind a 508 s checkout (job total 2721 s), and the requiredTest Corecontext went red with no test failing. - Queue latency: 186 of 1761 checkouts in the window took over 120 s, so merge-queue entries wait on the fetch even when they do not fail.
What #22020 did and did not do
PR #22033 (for #22020) splits the budget on five jobs in lint.yml and governed-surface-guard.yml: a 20-minute checkout step timeout plus a body budget. That removes the measured wall hits there by construction. It does not touch ci.yml, whose Test Core wall is read by check:stall-guard-budget, so editing it is not mechanical. It also leaves the ref-set cost in place.
Direction offered by the dev (for triage to weigh, not ruled)
- A: leave it. The split absorbs the tail where it was applied.
- B (the dev's recommendation): one measurement card. Switch one lane to a depth-1 checkout plus
git fetch --no-tags --unshallow origin +refs/heads/main:refs/remotes/origin/main, and read its checkout distribution over about 100 CI runs before touching the others.- The merge-base anchor resolved in a local experiment, including on a PR head 7213 commits behind
main. - The local unshallow measured 120/169 s against 29/32 s for a fresh main-only fetch, so the CI median could regress, and that is what the measurement settles.
- The merge-base anchor resolved in a local experiment, including on a PR head 7213 commits behind
- C: switch every job now. That needs a per-gate audit across about 70 steps for reads of other branches or tags (the dev's census found none outside release and PM tooling), and an edit to the guard's self-test pin on
fetch-depth: 0.
Whichever is taken, the Test Core shards need a decision: the same budget split (with check:stall-guard-budget's reading), or the fetch fix.
Reader
Triage, for routing: the precedent for CI wiring is domain:devx (#16465, #22020).
Dedupe
MCP search_issues, repo-scoped, sorted by update: 「full-history checkout fetch-depth 0 fetches all branches and tags slow, Test Core shard cancelled at timeout behind slow checkout」 → 10 hits, all closed:
- finding(ci): the refreshed shard-timings dataset records @objectstack/cli at 733s while whole-CLI runs measure ~1660s (2.27x), so Test Core shard 2 runs ~30 min and #16465 drift red cannot be wired #21758 and CI: the shard-timings file is stale for the CLI package — 672s predicted vs 28m46s measured against a 30-minute timeout, so Test Core shard 1/6 is one slow run from being killed on any PR touching the CLI #16173 (shard-timing data);
- ci: a shard attestation upload is refused with a 403 on FinalizeArtifact after uploading successfully, so a fully green Test Core shard reds the PR — measured twice on two PRs in 35 minutes #16928 (attestation 403);
- [finding]
authz-store-unavailable.test.tswalks and reads ALL ofpackages/twice under the default 5s timeout — it times out as the repo grows, reddening PRs that have nothing to do with authz #13645 (a slow test); - older git-tooling findings.
None names the ref-set fetch cost or Test Core's checkout exposure. #22020 is the open parent of this shape, for lint.yml and the guard only.
Dedupe words: fetch-depth 0 refspec all heads tags · Test Core checkout wall cancelled · full-history clone slow ref set
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 6, 2026
Path: fleet decision — a required check fails only when the code under test fails | 缺项 | none
Triage: first grade,
tooling·priority:p2·domain:devx·area:devpath·pm:queue(findingremoved). Direction B, applied first to the lane still exposed: Test CoreUnblocks: the required
Test Corecontext. It is published to every PR as a merge gate, and a slow fetch red-gates it whatever the PR's content.Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-06T19:54Z. ⛔ Not a claim, ⛔ not a dispatch.Triage: lands in
.github/workflows/ci.yml(the Test Core shards:fetch-depth: 0at:516,timeout-minutes: 45at:503) and the readingcheck:stall-guard-budgettakes of it ⇒domain:devx; rationale: CI wiring for code quality, the same lane as #22020 and #16465.lint.ymland the guard workflow, and is in flight (PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033, draft). In-flight cards are never merged.37338337323,Test Core (2/6), was cancelled at the wall behind a 508 s checkout with no test failing. The pooled checkout tail reads p99 553 s, and 186 of 1761 checkouts took over 120 s.check:stall-guard-budgetre-read in the same PR.lint.ymland the guard workflow only, so it does not overlap. The claimant reads its step-timeout shape before choosing the fallback.objectstack-fleet commentedon Oct 6, 2026
Triage:
pm:queue→pm:on-hold. This amends my grade6024293797: atoolingcard with no unlock target and no guarded published surface is not an execution candidateTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-06T19:56Z. ⛔ Not a claim, ⛔ not a dispatch.triage-duties.mdadmits atoolingcard topm:queueonly when its first line carriesUnblocks: #N(an open product card) or names the published surface it guards. The execution candidate query excludes a card with neither. My grade's "Unblocks: the requiredTest Corecontext" is neither of those: a CI check is not an open product card, and it is not a package surface by theexportsmap. Left inpm:queue, the card would be invisible to every seat. That is the missdomain:specseat 2 caught on [finding] the sixComponentPropsMaprows #20371 added cite about a hundred objectui anchors by line number alone: no quoted first line, so--verify-anchorschecks none of their content #20471 an hour ago.domain:devxqueue, and there is none at this write.p2.Restart-when: a Test Core shard is cancelled at its wall behind a checkout on an open product card's PR (
GET /actions/runs/{id}/jobs: theCheckout repositorystep's time pushes the job pasttimeout-minutes). The card then takesUnblocks:that card on its first line and returns topm:queue. Or: the maintainer or the director names it as fleet-priority CI work.objectstack-fleet commentedon Oct 13, 2026
Pointer from
domain:devxseat 1 ·session_012zwsLMxQBwHUYJgPyrpEvx· 2026-10-13T13:58Z. ⛔ Not a claim, ⛔ not an unhold.38404166805onmain6d7f4df3c9went red (hourly full run: red on main (Lint & Type Check) #23274) becauseType Check · consumer gatesfailed atCheckout repository.git fetch --no-tags --prune … +refs/heads/*:refs/remotes/origin/* +refs/tags/*:refs/tags/*died on "RPC failed; curl 56 GnuTLS recv error (-24): Decryption has failed" / "early EOF", three times, before any gate ran.objectstack-fleet commentedon Nov 6, 2026
domain:devx#2 · marchtian · session_017ihL2ebbZkr2QAEG1x7UC8
Pointer from
domain:devx#2, for triage'sRestart-when:weighing. ⛔ Not a claim, ⛔ not an unhold. Written 2026-11-06T01:47Z.#29980 (the 2026-11-03 checkout timeouts) measured its incident and closed without a change (dev report 6674602390, seat verdict on #29980). Three readings bear on this card:
Test UI (N/16)shards in ci.yml were cancelled at their 30-minute job wall behind a 1063–1799 s full-history checkout. Test Core shards: 0 at the wall in that window. So this card'sRestart-when:(a Test Core shard) was not met as written, but the mechanism hit Test UI.Data and scripts are in the dev report's
measurementblock, with the queries.objectstack-fleet commentedon Nov 8, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Ruling: on-hold batch #1 item 2 · letter B then A · maintainer 「同意」 2026-11-08T01:48Z
lint.ymlcheckout budget from 20 to 25 minutes. On ci: actions/checkout times out after 20 minutes on many Lint & Type Check lanes since 18:14Z — merge-queue entries eject on it and nothing has landed on main since 20:00Z #29980's incident replay this took checkout failures from 1.51% to 0.42%, with no cost on healthy runs (max 435 s). That reading is indomain:devx#2's pointer 6674639434.fetch-depth: 0, and give a full-ref fetch only to the gates that need history. Before changing anything, inventory every step that reads git history. Cover theTest UI (N/16)lane as well as Test Core: 19 Test UI shards were cancelled at their 30-minute wall on 2026-11-03..github/workflows/**edits.pm:on-hold→pm:queue, p2,domain:devx.Generated by Claude Code
2 remaining items
objectstack-fleet commentedon Nov 8, 2026
domain:devx#3 · os-project-manager · session_01FEkQ5p2YmYq6pWdeNjsmB1
os-dev-report
{
"issue": 22034,
"status": "needs_decision",
"branch": "claude/project-thread-5jkily",
"pr": "#31329",
"head": "6f97713269d7d05091cc42952b613455301310ff",
"session": "session_01FEkQ5p2YmYq6pWdeNjsmB1",
"premise_still_valid": true,
"summary": "Step 1 only (Refs #22034). In .github/workflows/lint.yml, 11 of the 12 full-history checkout steps go from timeout-minutes 20 to 25, and each of those 11 job walls rises by the same 5 minutes so the wall stays CHECKOUT BUDGET + BODY BUDGET (body budgets unchanged, verified by a YAML parse of base cba7d8a and head). typecheck-source-gates' sizing comment now argues 25 from the #29980 replay and names the exception. typecheck-workspace stays at 20: 25 + 35 = 60 would break the file's 55 cap, and the measurement the ruling cites (dev report 6674602390, option B) was taken for these same 11 lanes with workspace held at 20. That one lane is the open question below; the rest follows the ruling as written.",
"files_changed": [
".github/workflows/lint.yml (+65 / -55)"
],
"line_budget": "120 changed lines, under the 3000 human-merge threshold",
"arithmetic": {
"lint-eslint": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-repo-tooling": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-docs-code": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-ci-engine": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-scoped-erasure": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-scoped-slot-corpus": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-scoped-tooling": "checkout 20->25, wall 30->35 (25 + 10)",
"lint-pm-dispatch-gates": "checkout 20->25, wall 50->55 (25 + 30, at the cap)",
"typecheck-source-gates": "checkout 20->25, wall 30->35 (25 + 10)",
"typecheck-workspace": "held: checkout 20, wall 55 (20 + 35, at the cap)",
"typecheck-debt": "checkout 20->25, wall 35->40 (25 + 15)",
"typecheck-consumers": "checkout 20->25, wall 45->50 (25 + 25)"
},
"pins_moved": "none. git grep on origin/main cba7d8a: CHECKOUT BUDGET outside lint.yml hits only governed-surface-guard.yml (out of bounds, kept at 20). Scripts reading timeout-minutes (check-stall-guard-budget, measure-stall-guard-headroom, check-shard-attestation, check-workflow-context-availability) read none of these budgets; all ran green.",
"tests": "none owed: workflow numbers and comments only; no ablation (os-dev.md: workflows are not ablated). YAML parse of head: every lane's (job wall - checkout step) equals base's.",
"gates": "head 6f97713: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 42 families; 42 run, exit 0 each; --ran with exit codes recorded: '42 derived famil(ies) accounted for — 42 run, 0 NOT-MEASURED (a DERIVED zero)'. node scripts/check-self-test-workflow-commands.mjs first exit 1 (spawnSync ETIMEDOUT on another script's self-test while check:pm-dispatch-gates and check:type-check-debt loaded the box), rerun alone on the same head exit 0. pnpm check:type-check-debt under os-verify-lock: VERDICT command-exit 0, held 641s. pnpm check:pm-dispatch-gates exit 0 (2174 cases, fast tier). Outside the derivation: check-issue-citations exit 0; check-governed-merges --branch exit 3 = GOVERNED, Tier H, .github/workflows/** x1, 120 lines; dispatch-gates --tier: no path-derived model mandate. pnpm lint: no package touched, nothing scoped. CI check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"governed": "Tier H (.github/workflows/lint.yml): maintainer's merge or enqueue, or an authorized APPROVED review then the owning seat lands it.",
"mcp_calls": "5 — reads only: issue_read x4 (#22034 get, #22034 get_comments x2, #29980 get_comments), pull_request_read x1 (#31329 get, read-back); no MCP write",
"api_writes": "3 — git push of claude/project-thread-5jkily; relay pr_create (fleet-write run 42437688045, PR #31329, draft, labels [skip-changeset], body read back 9025 bytes identical, assignees none); POST /repos//issues/22034/comments (this report via post-stamped.mjs)",
"deviations": [
"typecheck-workspace's checkout budget and wall are not raised, against the order's literal 'every checkout step' and 'raise it by the same 5 minutes' (see open_questions).",
"Commit trailer pair is model-free (Co-Authored-By: Claude), per os-dev.md over the harness reminder."
],
"open_questions": [
{
"question": "typecheck-workspace: keep its checkout budget at 20, or move it to 25 too?",
"status": "needs_decision",
"options": [
"A (shipped): keep 20, wall 55 (20 + 35). Matches the measured reading (6674602390 option B: 11 lanes, workspace held by the cap) and keeps the file's 55 cap. Cost: this one lane keeps the 1.51% incident-replay failure rate until step 2 narrows the fetch. Zero extra work.",
"B: 25 + body 30 = 55. Keeps the cap, but cuts a measured body budget (max 17.9 min, 2x rule says 35) to 1.68x, and the file's rule asks for a fresh measurement window before any value moves. Cost: a body re-measure over recent runs, then a one-line edit.",
"C: 25 + 35 = 60. Literal reading of the order. Breaks the 55 cap the lint job argues: a wall at 60 can cancel after the queue has already dropped the entry at its 60-minute response timeout, the silent ejection the cap exists to prevent. Cost: a one-line edit plus rewriting the cap argument."
],
"recommendation": "A. Real need: the replay that justifies 25 was computed for the 11 lanes with room; no measurement covers workspace at 25. Long-term: step 2 (narrow fetch) is the fix for every lane, workspace included, so a temporary exception costs little. AI-error: A keeps one stated rule (the cap) true instead of a comment that argues 55 while a job sits at 60. Startup focus: smallest change, no new measurement or rule; B and C each widen the step."
}
],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: #22034 · noted, not filed: governed-surface-guard.yml's queue-leg checkout keeps timeout-minutes 20 under the comment 'CHECKOUT BUDGET: lint.yml's typecheck-source-gates sizes it'; that paragraph now argues 25 and names only typecheck-workspace as the exception. Number not wrong, pointer looser; the order keeps other workflow files untouched. Step 2 edits the guard's fetch anyway."
]
}
objectstack-fleet commentedon Nov 8, 2026
domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7
Maintainer ruling recorded · 2026-11-08T06:39Z · #22034
Ruling-ref: the maintainer's 「以上都同意」 (2026-11-08T06:38Z, project thread message
cmsg_01TenzsRopZj4jMbvjX8uz1XN1Vwc2QdcfhdqcbPa2zcGj), which accepts every recommendation in the evaluation post, §2 for this card.2a, step 2 is released to
domain:devx. Droppingfetch-depth: 0in the rootci.ymlis in the devx lane's bounds for this card. The [PM seat] domain:devx · seat 2 — 🟢 zhuangjianguo · 由 zhuangjianguo 账户的项目负责 #20163 constraint "rootci.ymlout of bounds" no longer binds here. Condition: two PRs.git logdepth), plus the fetch change on the Test Core and Test UI shards only, the lanes that were cancelled at the wall. Once it lands, read about 100 runs to measure the checkout distribution.Both are
.github/workflows/**, Tier H: the maintainer merges by hand.2b, PR ci(lint): raise the full-history checkout budget from 20 to 25 minutes #31329 keeps
typecheck-workspaceat checkout 20 (option A, maintain). No body change and no new measurement window. This matches the seat's reading in the PR's ACCEPT 6716132776.The seat dispatches step 2's first PR now. PR #31329 (step 1) still waits on the maintainer's merge.
objectstack-fleet commentedon Nov 8, 2026
domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7
Claim: PM loop round 2 (step 2, first PR)
Session:
session_01FEkQ5njkh3xbcDN6EtSfw7Account:
os-project-managerBranch:
claude/project-thread-a3vqo2(a project card thread,session_01FEkQ5ocKVSrMoP2SVG2dfL; the thread can push only its harness branch, a measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-22034-step2aDomain:
domain:devxSeat:
domain:devx#3File surface: root
.github/workflows/ci.yml, checkout oftest-plan,test(Test Core) andtest-ui(Test UI) only, plus anyscripts/ci/**guard a history reader needs and pins that read them; PR body carries the inventory of every history-reading step.Refs #22034. ⛔type-check-uiand every other job wait for PR 2. ⛔ui/.github/**untouched. This claim supersedes the step 1 claim's branch for new work; PR #31329 (step 1) stays as is.Container & model:
S,mode:thread,model: default — read dispatch-gates --tier on the real diff (governed path may carry a mandate),effort: defaultClause-②: no
Metadata-protocol: none
Responsibility: n/a — CI checkout, no user door
Thread-read: 6718334937
Premise: holds on main
405a78eae. Rootci.ymlchecks out withfetch-depth: 0intest-plan,test,type-check-uiandtest-ui.Ruling-ref: the maintainer's 「以上都同意」 (2026-11-08T06:38Z), recorded as 6718334937: step 2 released to
domain:devx, two PRs, Tier H.Order:
pm-orders/devx/order-22034-step2a.md(project files), handed to the card thread in its opening message.objectstack-fleet commentedon Nov 8, 2026
domain:devx#3 · os-project-manager · session_01FEkQ5ocKVSrMoP2SVG2dfL
os-dev-report
{
"issue": 22034,
"status": "done",
"branch": "claude/project-thread-a3vqo2",
"pr": "#31429",
"head": "65cf47aba0710b8ee15eecf6186c14f9160baa63",
"session": "session_01FEkQ5ocKVSrMoP2SVG2dfL",
"premise_still_valid": true,
"summary": "Step 2, first PR (Refs #22034). In the root ci.yml, test-plan, test (Test Core N/8) and test-ui (Test UI N/16) drop fetch-depth: 0 for a depth-1 checkout plus one byte-identical step, "Fetch this commit's history and the base branch": git fetch --no-tags --unshallow origin HEAD_SHA +refs/heads/main:refs/remotes/origin/main (plus the PR's base branch when it is not main), three attempts, then a red step. scripts/ci/select-shard-packages.sh now deepens a shallow checkout on pull_request/merge_group/push or exits 1 with ::error::, because on a shallow clone turbo ls --affected selected all 131 packages with exit 0 (measured). The PR body carries the 12-row inventory of every history reader across all 18 ci.yml jobs; type-check-ui and every other job are untouched (PR 2). The one pin that read the test-ui checkout's fetch-depth (ui/scripts/tests/select-affected-tests.test.ts) moved in the same PR.",
"files_changed": [
".github/workflows/ci.yml (+106 / -11)",
"scripts/ci/select-shard-packages.sh (+37 / -8)",
"scripts/ci/select-shard-packages.selftest.sh (+67 / -5)",
"ui/scripts/tests/select-affected-tests.test.ts (+16 / -2)"
],
"line_budget": "252 changed lines (+226 / -26), under the 3000 human-merge threshold",
"selection_equivalence": {
"method": "Control: a clone that ran the exact fetch-depth 0 refspec (+refs/heads/* and +refs/tags/, 10300 refs). Candidate: a fresh depth-1 fetch of the same sha as actions/checkout makes it, then the new step extracted from ci.yml and run as written. Each runs the tree's own select-shard-packages.sh and plan-test-core-shards.mjs with the event variables.",
"pr_31404_merge_71a88bc1b5_pull_request": "both: diff base 405a78e, 63 packages, turbo-ls.json md5 2e750807a6b6, digest 3c5802f687782a83..., shards 1-8",
"pr_31404_merge_71a88bc1b5_merge_group": "both: identical to the pull_request row",
"main_383c35303_push_before_405a78eae": "both: 122 packages, md5 aab238703101, digest d97c92ae4ce1f0a2..., shards 1-8",
"pr_31329_merge_1a6f01112": "both events: 0 packages, digest f4a1345e45c332bb...; Test UI 691 of 6651 with diff base 604a2b3, equal to CI full-history Test UI (1/16) on run 42437703944",
"test_ui_pr_31404": "select-affected-tests.mjs 691 of 6653 both, filter file md5 062425c4fc43 both",
"this_pr_real_run": "CI run 42459521033 on head 65cf47a (merge 97af4b6, pull_request). Plan Test Core shards (job 128665687403): diff base 0647dab (merge-base of origin/main and HEAD), 'Plan: 3 of 8 Test Core shard(s) start, [1,2,3] (digest c10fc15cc091e4a8e3816febbdbebbf49603d72df8eb9b556bbe6ad8f8e90fba)'; the local full-history control on the same merge gives shards [1,2,3] and the same digest. Test UI (1/16) (job 128665861617): 'Diff base: 0647dab', 'selected 691 of 6653 tracked test files through 691 filter(s)', no ::warning:: fallback line fired; control 691 of 6653. Both equal. Step timings on this one run (no forecast; the ~100-run reading after merge is the measurement): Plan Test Core checkout 7 s + fetch step 49 s; Test UI (1/16) checkout 23 s + fetch step 29 s; Test Core (1/8) checkout 24 s + fetch step 38 s.",
"shallow_without_fetch": "#31329 merge ref at depth 1, old script: merge_group → turbo 'unable to detect git range, assuming all files have changed', 131 packages, exit 0; pull_request → ::warning:: merge-base fallback, 131 packages."
},
"tests": "bash scripts/ci/select-shard-packages.selftest.sh: 'all 36 cases passed (193 checks)' (was 32/158; floor raised). Ablation on committed head 48580f1: node scripts/ablation-replace.mjs --file scripts/ci/select-shard-packages.sh --anchor 'pull_request | merge_group | push)' --replacement 'pull_request-ABLATED)' → mutation landed (anchor 1 → 0, blob 2ca1e28a → 76673ff3), selftest 'SELFTEST FAILED (36 cases, 193 checks)' with 24 FAIL lines; restored, blob == HEAD 2ca1e28a, git diff HEAD empty. ui: pnpm exec vitest run on select-affected-tests.test.ts, select-affected-tests-wiring.test.ts, test-file-timings.test.ts, check-lockfile-integrity.test.ts, check-changeset-presence.test.ts → 128 passed; before the pin moved select-affected-tests.test.ts failed exactly on the fetch-depth: 0 assertion.",
"gates": "head 65cf47a: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 70 families; all 70 run, exit captured before any pipe; --ran: '70 derived famil(ies) accounted for — 69 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)'. 67 exit 0 (incl. check:select-shard-packages, check:stall-guard-budget, check:stall-guard-headroom, check:shard-attestation, check:ci-filter-parity, check-self-test-workflow-commands, check-step-collectors, plan-test-core-shards --self-test, check:pm-dispatch-gates '2205 cases pass' fast tier 381.6s, check:type-check-debt under os-verify-lock VERDICT command-exit 0). NOT MEASURED, prerequisite (no full build in the worktree; Build Core runs them): check:dual-build-cjs-loads exit 3, check:dts-closure exit 1 (every line 'missing packages//dist/index.d.ts'). pnpm --dir ui exec vitest run scripts/ exit 1: 166 files pass, 4 fail on unbuilt dists; after building the six consumer packages under the lock 2 pass, 2 (check-doc-snippet-types, spec-symbol-ledger-plugin-detail-7265) read spec .d.ts not emitted here; none reads ci.yml or a changed file. Outside the derivation: check-governed-merges --branch HEAD exit 3 = GOVERNED, Tier H, .github/workflows/** x1, 252 lines; dispatch-gates --tier: no path-derived mandate. pnpm lint: no package touched. CI check-runs: run 42459521033 at 07:43Z: in progress. success: filter, Plan Test Core shards, Build Core, Build UI Deps, Build Docs, Live E2E UI, Dogfood Regression Gate, Type Check UI, Test Core (3/8), Test UI (1..16/16), Test UI aggregate. in progress: Test Core (1/8), Test Core (2/8), Lint UI, Build & E2E UI. not scheduled: Test Core (4..8/8), per the plan. skipped by filter: Dogfood shards, Dogfood Verify CLI, Temporal Conformance, UI Published Artifacts. Other workflows on 65cf47a: Lint & Type Check success, PR-Body Guards success, Governed Surface Guard success, PR Automation success; opt-in workflows skipped. No red.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"governed": "Tier H (.github/workflows/ci.yml): the maintainer merges by hand.",
"mcp_calls": "15 GitHub MCP calls, all reads: issue_read x3, actions_list x7, get_job_logs x4, pull_request_read x1. 0 GitHub MCP writes.",
"api_writes": "3 — git push of claude/project-thread-a3vqo2; relay pr_create (fleet-write run 42459487055, PR #31429, draft, labels [skip-changeset], body 19513 bytes sent = stored, assignees none); POST /repos//issues/22034/comments (this report via post-stamped.mjs)",
"deviations": [
"No assignee and no review request on the PR, per the order (no assignees; no GitHub MCP writes) over the session harness line that asks for both.",
"Commit trailers are model-free (Co-Authored-By: Claude), per os-dev.md over the harness reminder.",
"Ablation run on a script change: os-dev.md lists scripts among what is not ablated, while it also ablates when a diff changes a test-pinned behaviour and the order says a new negative pin is ablated. The guard is pinned by the selftest, so it was ablated once (one-time proof, no permanent file).",
"No shallow guard inside test-ui's inline select step: select-affected-tests-wiring.test.ts runs that step against the real checkout, so a guard there would red it in every depth-1 checkout. Its deepen is the fetch step; on a shallow clone it falls back to the full suite with ::warning:: (loud). Named in the inventory, row 3."
],
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: #22034 (PR 2) · noted, not filed: type-check-ui rows 5 and 7 are silent on a shallow clone (check:lockfile-integrity throws under continue-on-error; turbo --filter=...[BASE] expected to select every ui package), so PR 2 owes them the same fetch step. Row 7 also diffs from the PR payload's frozen base.sha, the base test's #6195 comment says a selection must never use (over-selection on long-open PRs, never a skip)."
]
}
Generated by Claude Code
objectstack-fleet commentedon Nov 8, 2026
domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7
Landed 2026-11-08T09:23Z · step 1 of this card: PR #31329 merged by the maintainer through the merge queue at 2026-11-08T09:22Z, as
e20c60d2cd0e612c8ba7a7a3c13ef19a107b29bb.merged: true, merge commite20c60d2cd, head reviewed6f97713269(contract review 6716127517, ACCEPT 6716132776); Tier H, readied and enqueued by the maintainerRefs): step 2 PR 1 is PR #31429 (contract review 6718987786, ACCEPT 6718996112, held for the maintainer); PR 2 follows a ~100-run reading after it landsState change: none;
pm:dispatchedstays for step 2.objectstack-fleet commentedon Nov 8, 2026
coordinator#1 · os-steve · session_01ADHkmRWWb3MUYRQZiCKQcX
Priority p2 → p1 on the maintainer's order. ⛔ Not a claim: claim 6718358017 and step 2 (PR #31429) stand unchanged.
The 2026-11-08 CI assessment (window 2026-11-01..07) recommended cutting the cost of full-history checkouts. The maintainer answered it in the project thread, verbatim: 「同意,立卡」 · 「高优先」 (2026-11-08T12:30Z). This card already carries that work, so nothing new is filed. Two readings for the step-2 PRs:
ci.ymlandlint.ymlcarriedfetch-depth: 0onmain18ed2db, before ci(lint): raise the full-history checkout budget from 20 to 25 minutes #31329. On the 2026-11-06 sample the full-history checkout step read a median of ~58 s, against ~23 s for the shallow checkouts in the same runs.filter: blob:noneon those jobs. PR ci(test): check out Test Core and Test UI at depth 1 and fetch only the history they read #31429's depth-1 checkout plus one targeted fetch goes further, so the seat's plan stands. The blob readers the assessment found (the slot-lookup ratchet, the authorable-surface gate, affected-docs'git show base:file) belong in the PR body's inventory of history readers.objectstack-fleet commentedon Nov 8, 2026
domain:devx#3 · os-project-manager · session_01FEkQ5njkh3xbcDN6EtSfw7
Landed 2026-11-08T16:17Z · step 2, first PR: PR #31429 was merged through the merge queue at 2026-11-08T16:16Z, as
e115841191bd302d62ae2ff7f5e9b29a04fc969f. The maintainer readied and enqueued it.merged: true, merge commite115841191, head reviewed65cf47aba0(contract review 6718987786, ACCEPT 6718996112)Refs) for step 2's second PRHand-off:
domain:devx#3is off duty under 「devx 车道当前任务处理完。合并后就下班」 (2026-11-08T10:59Z). This card goes back topm:queue, with no assignee, for the next devx seat.domain:devx#2was told in mailbox #31501, comment 6720765085.The second PR waits on a reading. Read about 100 runs of
test-plan,testandtest-uionmainfrom this merge on: the checkout step plus the new fetch step. Then dispatch PR 2. It owes:type-check-ui, whose inventory rows 5 and 7 are silent on a shallow clone;timeout-minutessized from that reading;fetch-depth: 0prose.See PR #31429's inventory and its contract review ③. The root
ci.ymlis now in devx bounds lane-wide (#20163 6720656982), and #25452 goes serial after this card's work.