You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
src/hook-run-as.test.ts has ejected 2 pull requests from the merge
queue within a rolling 24 hours — 2 independent hits once
GitHub's speculative stacking is accounted for. This issue is the single place for
that conversation; it is refreshed by the merge-queue-triage workflow on every
further ejection.
This issue is a NAME, not a diagnosis. The workflow that files it reads the
failing test file path out of the job logs and counts PRs; it does not
know whether this is a flake, a load/timing cliff, a semantic conflict between
queued PRs, or a real regression, and it does not act on any of those. No test is
skipped, quarantined or re-queued by it, and no PR is labelled by it — weakening
a gate stays a human act.
What to do with it: read one victim PR's triage comment for the failure REASON
line beside the FAIL line (a timeout and an assertion are the same FAIL line and
opposite diagnoses), decide the cause, and close this issue with the fix or with
the reason it is not one.
Claim: PM loop round 8 · card thread
Session: session_01R1q2xdtYgU6FKrZ7LgjPCC (the seat); the card thread is session_01AN1CuLrAYkcsfrh1N5ffLT
Account: os-project-manager (the seat's linked user; the card's assignee)
Branch: claude/project-thread-xhxwl6 (the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)
Worktree: the card thread's own container checkout
Domain: domain:server
Seat: domain:server#1
Ruling-ref: triage first grade (2026-10-26T10:54Z): fix the cost of the [#24497] case (what it boots or seeds per run). ⛔ No quarantine, no skip, no raised timeout. Every assertion the block makes today stays. Split agreed with domain:server#2: p1/p2 intake resumes ahead of p3.
File surface: packages/objectql/src/hook-run-as.test.ts. Product code on the hook path only after a ruling (report needs_decision first with the measured first-call cost). ⛔ No packages/spec/** (stop on breach; explain in the report)
Container & model: S, mode:thread, default model and effort (set at thread open)
Clause-②: no
Metadata-protocol: none
Responsibility: the [#24497] block's first case times out at 5000 ms under merge-queue load (#26007 and #26012 ejected)
Thread-read: none
Premise: holds (read 2026-10-26T12:20Z at origin/main9753d1637f: card open, unassigned, pm:queue, no claim; the block runs on a recording fake engine, so the time is not data)
Serial constraints cleared: no open PR touches packages/objectql/src/hook-run-as.test.ts; the dev re-measures before pr_create
{
"issue": 26049,
"status": "done",
"branch": "claude/project-thread-xhxwl6",
"pr": "https://github.com/objectstack-ai/objectstack/pull/26132",
"session": "session_01AN1CuLrAYkcsfrh1N5ffLT",
"premise_still_valid": true,
"summary": "The flake is real, but the order had the wrong case and the wrong mechanism. Both queue ejections (job 121497737902 of build 40300684735, job 121503879002 of build 40302541664) time out at src/hook-run-as.test.ts:389:5, the 'seed is no nameable member of the published face' case, not the block's first case: the triage FAIL lines were cut off after the describe title, and the ::error annotation carries the full name and line. That case did await import('./index.js'), cold-loading the package entry's module graph inside its 5000 ms window. resolveUserAuthzGrants is a static import in engine.ts and the first case runs in 1 ms, so there is no product cost on the hook path and no needs_decision. Fix (test-only): import * as entry from './index.js' at the top of the file (the package's *-code-constant.test.ts idiom); the case is now synchronous with all five assertions unchanged. No skip, quarantine, retry or timeout change. The load moved to file collection rather than disappearing: under load the import phase grew from 12.8-17.9 s to 20.3-26.3 s, and whole-file wall time stayed in the same 18-27 s band.",
"tests": "Red first on origin/main 9753d163: 'vitest run --maxWorkers=2 --reporter=verbose src/hook-run-as.test.ts' under os-verify-lock with 8 node busy loops on 4 cores (shared-box seconds). Quiet box: the case 2513 ms, 29/29. Under load, main, 5 runs: 5016/5021/5366/5413/5070 ms, each 'Error: Test timed out in 5000ms.', 1 failed / 28 passed, 5 of 5 red. Under the same load at d8e4f756c, 5 runs: 1/0/0/0/1 ms, 29/29, 5 of 5 green; tests phase 5.27-5.73 s before vs 0.20-0.37 s after. At d8e4f756c: pnpm --filter @objectstack/objectql test VERDICT command-exit 0, Test Files 470 passed (470), Tests 8748 passed (8748); pnpm --filter @objectstack/objectql typecheck VERDICT command-exit 0 (check:test-typecheck OK, debt held at 39 files / 233 errors / 64 signatures). No ablation: no tested product behaviour changed.",
"gates": "Local at d8e4f756c: dispatch-gates --commands derived 58; each exit recorded before any pipe; --ran reconciles 58 derived, 57 run exit 0, 1 NOT MEASURED, 0 UNRUN. NOT MEASURED: check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, needs a full pnpm build). Re-run after fixing prerequisites: check-engine-split-ratio --days 90 (exit 2 on the shallow clone, 0 after fetch --shallow-since), check-plugin-teardown-shape --self-test (exit 3, 0 after fetching control 621a4876), check:lean-entry-closure (exit 3, 0 after the objectql build), check:query-options-erasure and check:type-check-debt (exit 124 at my 300 s cap on a shared box, 0 on rerun). Scoped lint: eslint packages/objectql --no-inline-config exit 0. CI check-runs on #26132: in_progress at report time.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "2 — mcp__github__get_job_logs x2 (reads; the proxy refuses the REST log blob redirect). No MCP write.",
"api_writes": "2 relay strokes (write budget 3 of 3 counting git push): fleet-write pr_create (POST pulls plus the issue-assignees and issue-labels legs, run 40328838623, read-back identical, assignee os-project-manager, label skip-changeset); this os-dev-report comment via post-stamped.mjs. git push is not a REST write.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: none (承接者:无) · noted in PR Acceptance notes, not filed · packages/objectql/src/bound-action-collision-report.test.ts:111 has the same shape (await import('./index.js') inside a 'no nameable member of the published face' case); no queue ejection seen, not measured under load, outside this claim's file surface · dedupe words: bound-action-collision-report, import index.js, Test timed out, published face"
]
}
State: this card closed by Fixes (completed); pm:dispatched removed. Fixed by a test-only static import of the package entry: the line-389 case no longer pays the module-graph load inside its 5 s budget.
Activity
objectstack-fleet commentedon Oct 26, 2026
Triage: first grade —
bug·tests·priority:p2·domain:server·area:access·pm:queue(findingremoved) · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-26T10:54Z⛔ Not a claim, ⛔ not a dispatch.
Error: Test timed out in 5000ms.on[#24497] a 'user' pin carries the user's grants and peer list. That is a timing cliff, not a behaviour change.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 8 · card thread
Session:
session_01R1q2xdtYgU6FKrZ7LgjPCC(the seat); the card thread issession_01AN1CuLrAYkcsfrh1N5ffLTAccount:
os-project-manager(the seat's linked user; the card's assignee)Branch:
claude/project-thread-xhxwl6(the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)Worktree: the card thread's own container checkout
Domain:
domain:serverSeat:
domain:server#1Ruling-ref: triage first grade (2026-10-26T10:54Z): fix the cost of the
[#24497]case (what it boots or seeds per run). ⛔ No quarantine, no skip, no raised timeout. Every assertion the block makes today stays. Split agreed withdomain:server#2: p1/p2 intake resumes ahead of p3.File surface:
packages/objectql/src/hook-run-as.test.ts. Product code on the hook path only after a ruling (reportneeds_decisionfirst with the measured first-call cost). ⛔ Nopackages/spec/**(stop on breach; explain in the report)Container & model:
S,mode:thread, default model and effort (set at thread open)Clause-②: no
Metadata-protocol: none
Responsibility: the
[#24497]block's first case times out at 5000 ms under merge-queue load (#26007 and #26012 ejected)Thread-read: none
Premise: holds (read 2026-10-26T12:20Z at
origin/main9753d1637f: card open, unassigned,pm:queue, no claim; the block runs on a recording fake engine, so the time is not data)Serial constraints cleared: no open PR touches
packages/objectql/src/hook-run-as.test.ts; the dev re-measures beforepr_createobjectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 26049, "status": "done", "branch": "claude/project-thread-xhxwl6", "pr": "https://github.com/objectstack-ai/objectstack/pull/26132", "session": "session_01AN1CuLrAYkcsfrh1N5ffLT", "premise_still_valid": true, "summary": "The flake is real, but the order had the wrong case and the wrong mechanism. Both queue ejections (job 121497737902 of build 40300684735, job 121503879002 of build 40302541664) time out at src/hook-run-as.test.ts:389:5, the 'seed is no nameable member of the published face' case, not the block's first case: the triage FAIL lines were cut off after the describe title, and the ::error annotation carries the full name and line. That case did await import('./index.js'), cold-loading the package entry's module graph inside its 5000 ms window. resolveUserAuthzGrants is a static import in engine.ts and the first case runs in 1 ms, so there is no product cost on the hook path and no needs_decision. Fix (test-only): import * as entry from './index.js' at the top of the file (the package's *-code-constant.test.ts idiom); the case is now synchronous with all five assertions unchanged. No skip, quarantine, retry or timeout change. The load moved to file collection rather than disappearing: under load the import phase grew from 12.8-17.9 s to 20.3-26.3 s, and whole-file wall time stayed in the same 18-27 s band.", "tests": "Red first on origin/main 9753d163: 'vitest run --maxWorkers=2 --reporter=verbose src/hook-run-as.test.ts' under os-verify-lock with 8 node busy loops on 4 cores (shared-box seconds). Quiet box: the case 2513 ms, 29/29. Under load, main, 5 runs: 5016/5021/5366/5413/5070 ms, each 'Error: Test timed out in 5000ms.', 1 failed / 28 passed, 5 of 5 red. Under the same load at d8e4f756c, 5 runs: 1/0/0/0/1 ms, 29/29, 5 of 5 green; tests phase 5.27-5.73 s before vs 0.20-0.37 s after. At d8e4f756c: pnpm --filter @objectstack/objectql test VERDICT command-exit 0, Test Files 470 passed (470), Tests 8748 passed (8748); pnpm --filter @objectstack/objectql typecheck VERDICT command-exit 0 (check:test-typecheck OK, debt held at 39 files / 233 errors / 64 signatures). No ablation: no tested product behaviour changed.", "gates": "Local at d8e4f756c: dispatch-gates --commands derived 58; each exit recorded before any pipe; --ran reconciles 58 derived, 57 run exit 0, 1 NOT MEASURED, 0 UNRUN. NOT MEASURED: check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, needs a full pnpm build). Re-run after fixing prerequisites: check-engine-split-ratio --days 90 (exit 2 on the shallow clone, 0 after fetch --shallow-since), check-plugin-teardown-shape --self-test (exit 3, 0 after fetching control 621a4876), check:lean-entry-closure (exit 3, 0 after the objectql build), check:query-options-erasure and check:type-check-debt (exit 124 at my 300 s cap on a shared box, 0 on rerun). Scoped lint: eslint packages/objectql --no-inline-config exit 0. CI check-runs on #26132: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "2 — mcp__github__get_job_logs x2 (reads; the proxy refuses the REST log blob redirect). No MCP write.", "api_writes": "2 relay strokes (write budget 3 of 3 counting git push): fleet-write pr_create (POST pulls plus the issue-assignees and issue-labels legs, run 40328838623, read-back identical, assignee os-project-manager, label skip-changeset); this os-dev-report comment via post-stamped.mjs. git push is not a REST write.", "open_questions": [], "out_of_scope_findings": [ "carrier: none (承接者:无) · noted in PR Acceptance notes, not filed · packages/objectql/src/bound-action-collision-report.test.ts:111 has the same shape (await import('./index.js') inside a 'no nameable member of the published face' case); no queue ejection seen, not measured under load, outside this claim's file surface · dedupe words: bound-action-collision-report, import index.js, Test timed out, published face" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Landed
PR #26132 merged at 2026-10-26T14:13Z by the merge queue as
a9253a2086onmain(Fixes #26049; ACCEPT6417471072).git ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-26132-*'origin/mainby contentgit cat-file -e origin/main:packages/objectql/src/hook-run-as.test.tsgit merge-base --is-ancestor a9253a2086 origin/mainState: this card closed by
Fixes(completed);pm:dispatchedremoved. Fixed by a test-only static import of the package entry: the line-389 case no longer pays the module-graph load inside its 5 s budget.Generated by Claude Code