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/domains/mcp-object-schema-mask.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.
A later queue build that went green on the same main is a control only if its
affected-only selection ran the failing package; a green group that never selected
it carried the same tree without testing it.
Cause read from build 42385456389 (PR #31149's ejection): the failing assertion at mcp-object-schema-mask.test.ts:785 compares wireText(member) with wireText(staff), and the wire text includes the Last-Modified header. The two strings in the log differ only there: Sat, 07 Nov 2026 15:19:24 GMT vs 15:19:23 GMT. Two requests made in sequence straddled a second boundary.
So this is a timing flake in the test, not a projection difference: the body and ETag are equal. A fix is to drop Last-Modified (or every date header) from wireText before comparing, or to freeze the clock for the pair. The test came in with #31104 (ADR-0106 D1).
Graded p1, domain:server, pm:queue on the anchor itself: two queue ejections in one afternoon is a repeated red (「平台测试清单反复变红,肯定要修啊」). The fix makes the comparison order-insensitive, or makes the projection deterministic if that is the defect, and keeps what the test proves. finding removed.
Claim: PM loop round 2
Session: session_017ihL2dLQEXWGsE2SZ3Qn5F
Account: marchtian
Branch: claude/project-thread-6m6ski
Worktree: card thread container (project thread form)
Domain: domain:server
Seat: domain:server#4
File surface: packages/runtime/src/domains/mcp-object-schema-mask.test.ts (the wireText comparison helper and its callers in the ADR-0106 D1 action-entry describe); the projection under packages/runtime/src/domains/** / packages/rest/src/** only if a real nondeterminism is found there — then stop and report before widening (stop on breach; explain in the report)
Container & model: M, mode:thread (a project card thread started by the coordinator), model: default, effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: objectstack (packages/runtime test) | the test compares whole wire texts including the second-precision Last-Modified header; two sequential requests straddling a second differ there only (build 42385456389, diagnosis 6709142041) | reached by every merge-queue build that selects @objectstack/runtime — two ejections today (#31142, #31149)
Thread-read: 6709426629
Premise: holds
Serial constraints cleared: no open PR touches this test file (open-PR file scan, 24 PRs); #31104 (the test's origin) is merged
{
"issue": 31171,
"status": "done",
"branch": "claude/project-thread-6m6ski",
"pr": "https://github.com/objectstack-ai/objectstack/pull/31195",
"head": "fc6ee741",
"session": "session_017ihL2gH1g3Qk8UMKLnGKoq",
"premise_still_valid": true,
"summary": "wireText in the ADR-0106 D1 action-entry describe now reads a date-valued Last-Modified or Date header as the fixed token CLOCK; status, body, ETag, every other header, header order and the clock header's presence are still compared. Both ejections were this header: #31142 (build 42383103865, job 128435166865, line 801, usr_system item st_ping, 14:49:31 vs 14:49:30 GMT) and #31149 (line 785, diagnosis 6709142041). The protocol stamps lastModified with the time of the read (metadata-protocol protocol-search-and-cache.ts), so it is clock, not projection; no projection nondeterminism found (body, ETag and header key order equal in both logs).",
"tests": "Ablation via scripts/ablation-replace.mjs on the member-vs-staff CONTROL (staff read under vi.useFakeTimers toFake Date + setSystemTime(now+1000), precondition on the REST cached arm that the two Last-Modified differ), -t 'CONTROL — a field-bound action', 3 tests: leg A new wireText + skew 3 passed; leg B old JSON.stringify + skew REST cached arm FAILS on st_rename, diff Last-Modified 16:14:07 vs 16:14:06 GMT; leg C new wireText, no skew, Last-Modified deleted on the staff side, REST cached arm FAILS (presence still compared). Each leg: mutation landed (anchor 1 to 0, blob moved) and restored (blob == HEAD 784ab7096c9c, git diff HEAD empty). Repeat: 15 sequential runs of the file on dbd57b69, 15 x Tests 45 passed (45), all exit 0. Package on fc6ee741: pnpm --filter @objectstack/runtime test exit 0, Test Files 554 passed (554), Tests 8918 passed / 19 skipped; typecheck exit 0.",
"gates": "dispatch-gates --commands at fc6ee741: 50 commands, all exit 0 (full list with exit codes in the PR body Verification section). Two first exited 3 and were rerun after their prerequisite: check-plugin-teardown-shape --self-test (fetched positive-control commit 621a4876 into the shallow clone), check:dual-build-cjs-loads (full turbo build, 119/119). --ran reconciliation: 50 derived, 50 run, 0 NOT-MEASURED, 0 UNRUN. eslint packages/runtime --no-inline-config exit 0. CI check-runs: in_progress at report time.",
"line_budget": "+21 / -1, 1 file (packages/runtime/src/domains/mcp-object-schema-mask.test.ts), test-only",
"files_changed": [
"packages/runtime/src/domains/mcp-object-schema-mask.test.ts"
],
"deviations": [
"Card-thread form: the pinned branch was checked out in the shared checkout, so I detached that checkout and added a linked worktree on the same branch (../objectstack-issue-31171) to satisfy worktree-first.",
"Repeat runs as a 15-iteration shell loop: this vitest rejects --repeats (CACError: Unknown option).",
"No changeset: @objectstack/runtime ships dist only and the diff is a test file; skip-changeset sent with pr_create and read back on the PR.",
"dogfood_battery: n/a (no ! in the title, Clause-② no without a (narrowing) arm)."
],
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted in the PR Acceptance notes, not filed: the /meta item door's cached arm sends Last-Modified equal to the time of the read (protocol-search-and-cache.ts stamps new Date()), not the item's modification time, so the header carries no information; freshness is gated by ETag. Not one of the three filing classes as far as I can tell (no declared contract cites it); seat's call. Dedupe words: Last-Modified, lastModified, meta item door cache headers."
],
"mcp_calls": "1 — mcp__github__get_job_logs (read, job 128435166865); no MCP write tool",
"api_writes": "2 — relay pr_create (POST pulls #31195 + POST issues/31195/assignees + POST issues/31195/labels skip-changeset, one dispatched action, run 42394262925), and this os-dev-report comment via post-stamped",
"security_findings": "none"
}
Landed · PR #31195 merged by the merge queue as fe97d85b060b8314880e8ee5f6f897ffbb300bcd (second queue entry, after one ejection on the plugin-auth time-boundary signature #31175 / #31212; audit on the PR).
Reading
Value
PR state
merged, merged_at from the pulls API
Card state
closed completed by Fixes #31171
origin/main content
CLOCK_HEADERS in packages/runtime/src/domains/mcp-object-schema-mask.test.ts
pm:dispatched removed with this record. Product half (Last-Modified = read time on the cached /meta item read) is #31196.
Activity
objectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2dLQEXWGsE2SZ3Qn5F
Cause read from build 42385456389 (PR #31149's ejection): the failing assertion at
mcp-object-schema-mask.test.ts:785compareswireText(member)withwireText(staff), and the wire text includes theLast-Modifiedheader. The two strings in the log differ only there:Sat, 07 Nov 2026 15:19:24 GMTvs15:19:23 GMT. Two requests made in sequence straddled a second boundary.So this is a timing flake in the test, not a projection difference: the body and ETag are equal. A fix is to drop
Last-Modified(or every date header) fromwireTextbefore comparing, or to freeze the clock for the pair. The test came in with #31104 (ADR-0106 D1).objectstack-fleet commentedon Nov 7, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · anchor · 2 independent hits · p1 ·
domain:server· 2026-11-07T15:57Z⛔ Not a claim.
runtimesrc/domains/mcp-object-schema-mask.test.tsfailed on two unrelated PRs, fix(plugin-security): canReadObject, getReadFilter and security/explain answer the delegated business-unit read as the read door does #31142 (15:06Z) and feat(cli): os mcp connect registers your environment's MCP server with Claude Code #31149, as two independent hits with no stacking between them. Both fail a JSON-stringObject.iscomparison of a served action entry (st_ping, thenst_rename), and fix(plugin-security): canReadObject, getReadFilter and security/explain answer the delegated business-unit read as the read door does #31142 passed on its re-run and merged./metaaction doors and MCPlist_actions).domain:server,pm:queueon the anchor itself: two queue ejections in one afternoon is a repeated red (「平台测试清单反复变红,肯定要修啊」). The fix makes the comparison order-insensitive, or makes the projection deterministic if that is the defect, and keeps what the test proves.findingremoved.Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2dLQEXWGsE2SZ3Qn5F
Claim: PM loop round 2
Session:
session_017ihL2dLQEXWGsE2SZ3Qn5FAccount:
marchtianBranch:
claude/project-thread-6m6skiWorktree: card thread container (project thread form)
Domain:
domain:serverSeat:
domain:server#4File surface:
packages/runtime/src/domains/mcp-object-schema-mask.test.ts(thewireTextcomparison helper and its callers in the ADR-0106 D1 action-entry describe); the projection underpackages/runtime/src/domains/**/packages/rest/src/**only if a real nondeterminism is found there — then stop and report before widening (stop on breach; explain in the report)Container & model:
M,mode:thread(a project card thread started by the coordinator),model: default,effort: highClause-②: no
Metadata-protocol: none
Responsibility: objectstack (
packages/runtimetest) | the test compares whole wire texts including the second-precisionLast-Modifiedheader; two sequential requests straddling a second differ there only (build 42385456389, diagnosis 6709142041) | reached by every merge-queue build that selects@objectstack/runtime— two ejections today (#31142, #31149)Thread-read: 6709426629
Premise: holds
Serial constraints cleared: no open PR touches this test file (open-PR file scan, 24 PRs); #31104 (the test's origin) is merged
objectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2gH1g3Qk8UMKLnGKoq
os-dev-report
{ "issue": 31171, "status": "done", "branch": "claude/project-thread-6m6ski", "pr": "https://github.com/objectstack-ai/objectstack/pull/31195", "head": "fc6ee741", "session": "session_017ihL2gH1g3Qk8UMKLnGKoq", "premise_still_valid": true, "summary": "wireText in the ADR-0106 D1 action-entry describe now reads a date-valued Last-Modified or Date header as the fixed token CLOCK; status, body, ETag, every other header, header order and the clock header's presence are still compared. Both ejections were this header: #31142 (build 42383103865, job 128435166865, line 801, usr_system item st_ping, 14:49:31 vs 14:49:30 GMT) and #31149 (line 785, diagnosis 6709142041). The protocol stamps lastModified with the time of the read (metadata-protocol protocol-search-and-cache.ts), so it is clock, not projection; no projection nondeterminism found (body, ETag and header key order equal in both logs).", "tests": "Ablation via scripts/ablation-replace.mjs on the member-vs-staff CONTROL (staff read under vi.useFakeTimers toFake Date + setSystemTime(now+1000), precondition on the REST cached arm that the two Last-Modified differ), -t 'CONTROL — a field-bound action', 3 tests: leg A new wireText + skew 3 passed; leg B old JSON.stringify + skew REST cached arm FAILS on st_rename, diff Last-Modified 16:14:07 vs 16:14:06 GMT; leg C new wireText, no skew, Last-Modified deleted on the staff side, REST cached arm FAILS (presence still compared). Each leg: mutation landed (anchor 1 to 0, blob moved) and restored (blob == HEAD 784ab7096c9c, git diff HEAD empty). Repeat: 15 sequential runs of the file on dbd57b69, 15 x Tests 45 passed (45), all exit 0. Package on fc6ee741: pnpm --filter @objectstack/runtime test exit 0, Test Files 554 passed (554), Tests 8918 passed / 19 skipped; typecheck exit 0.", "gates": "dispatch-gates --commands at fc6ee741: 50 commands, all exit 0 (full list with exit codes in the PR body Verification section). Two first exited 3 and were rerun after their prerequisite: check-plugin-teardown-shape --self-test (fetched positive-control commit 621a4876 into the shallow clone), check:dual-build-cjs-loads (full turbo build, 119/119). --ran reconciliation: 50 derived, 50 run, 0 NOT-MEASURED, 0 UNRUN. eslint packages/runtime --no-inline-config exit 0. CI check-runs: in_progress at report time.", "line_budget": "+21 / -1, 1 file (packages/runtime/src/domains/mcp-object-schema-mask.test.ts), test-only", "files_changed": [ "packages/runtime/src/domains/mcp-object-schema-mask.test.ts" ], "deviations": [ "Card-thread form: the pinned branch was checked out in the shared checkout, so I detached that checkout and added a linked worktree on the same branch (../objectstack-issue-31171) to satisfy worktree-first.", "Repeat runs as a 15-iteration shell loop: this vitest rejects --repeats (CACError: Unknown option).", "No changeset: @objectstack/runtime ships dist only and the diff is a test file; skip-changeset sent with pr_create and read back on the PR.", "dogfood_battery: n/a (no ! in the title, Clause-② no without a (narrowing) arm)." ], "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted in the PR Acceptance notes, not filed: the /meta item door's cached arm sends Last-Modified equal to the time of the read (protocol-search-and-cache.ts stamps new Date()), not the item's modification time, so the header carries no information; freshness is gated by ETag. Not one of the three filing classes as far as I can tell (no declared contract cites it); seat's call. Dedupe words: Last-Modified, lastModified, meta item door cache headers." ], "mcp_calls": "1 — mcp__github__get_job_logs (read, job 128435166865); no MCP write tool", "api_writes": "2 — relay pr_create (POST pulls #31195 + POST issues/31195/assignees + POST issues/31195/labels skip-changeset, one dispatched action, run 42394262925), and this os-dev-report comment via post-stamped", "security_findings": "none" }Generated by Claude Code
objectstack-fleet commentedon Nov 7, 2026
domain:server#4 · marchtian · session_017ihL2dLQEXWGsE2SZ3Qn5F
Landed · PR #31195 merged by the merge queue as
fe97d85b060b8314880e8ee5f6f897ffbb300bcd(second queue entry, after one ejection on the plugin-auth time-boundary signature #31175 / #31212; audit on the PR).merged_atfrom the pulls APIcompletedbyFixes #31171origin/maincontentCLOCK_HEADERSinpackages/runtime/src/domains/mcp-object-schema-mask.test.tspm:dispatchedremoved with this record. Product half (Last-Modified = read time on the cached/metaitem read) is #31196.