Skip to content

Queue-flake anchor: src/controlled-by-parent-owner-may-edit.test.ts #26247

Closed

Description

@github-actions

src/controlled-by-parent-owner-may-edit.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.

PR stack queue build
#26064 independent 40355861805
#26198 independent 40358686385

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.

Last refreshed by queue build 40358686385 (PR #26198).


Filed by the merge-queue-triage workflow (#4859, aggregation #10128).

Activity

  1. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    devx seat 2 · seen on #26198 (queue build 40358686385, Test Core 5/8). Reading, not a fix:

    The seat re-queues #26198 once, per the one-re-run rule. A second ejection from this file means it is no longer read as a flake.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Triage: first grade — bug · tests · priority:p1 · domain:server · area:access · pm:queue (finding removed) · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-26T17:01Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  3. added
    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guards
    bugSomething isn't working
    domain:serverDomain lane — seat card indexed by label:pm:seat
    priority:p1High: required for production / M2
    and removed on Oct 26, 2026
  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 3 · card thread
    Session: session_0186vfjHHMsRXC9EUT9hTFMo (the seat); the card thread is session_01PU9kx98UUN4ccXZfMtALZx
    Account: os-project-manager (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-l0kgl1 (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#2
    Ruling-ref: triage 6422215376 — p1, an assertion conflict, not a timeout; root-cause it, ⛔ no skip, quarantine, retry wrapper or "either denial" assertion. If the cause is the fixture leaning on the name fold, the fix is PR #26064's rebinding, not a second one (premise_still_valid: false with the evidence); if it is runtime order-dependence, the refusal order is the one #26005 declared, read not picked, and Clause-② follows the real diff
    File surface: packages/plugins/plugin-security/src/controlled-by-parent-owner-may-edit.test.ts and the delegated-update refusal path it pins in packages/plugins/plugin-security/src/**, their tests, a changeset only if runtime code changes (skip-changeset if test-only). ⛔ No packages/spec/** (stop on breach; explain in the report)
    Container & model: M, bug, mode:thread, default model and effort (set at thread open)
    Clause-②: no (expected; the dev measures on the real diff)
    Metadata-protocol: none
    Responsibility: graded by triage 6422215376; filed by the merge-queue-triage workflow from the ejections of #26064 and #26198; devx seat reading 6421985397
    Thread-read: 6422215376
    Premise: holds (read 2026-10-26T17:19Z at origin/main 81bba6c3f5: card open, unassigned, pm:queue, no claim on the thread)
    Resume-from: none — fresh start from origin/main
    Serial constraints cleared: ⛔ not yet — PR #26064 changes the same test file and waits on CI for its patched head 0239ff16: read and measure only until origin/main carries it, unless the measurement shows the cause is outside that file and outside #26064's diff (then hand back to the seat before editing). The dev re-measures every open PR on packages/plugins/plugin-security/** before the first edit and before pr_create


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 26247,
      "status": "done",
      "branch": "claude/project-thread-l0kgl1",
      "pr": null,
      "session": "session_01PU9kx98UUN4ccXZfMtALZx",
      "premise_still_valid": false,
      "summary": "Not a flake and not a runtime refusal-order race: both hits are ONE deterministic break, #26064's queued commit 17f21e8d (fold retired, this fixture's delegator still granted through a sys_user_position row named omd_requester). Without the fold the delegator resolves no set granting update on omd_obligation, so step 2's ADR-0090 D10 intersection refuses first: 'on-behalf-of principal may not 'update' 'omd_obligation' — the delegator lacks that grant'. #26198's queue build (40358686385) was NOT independent: its head b0873de2 has 17f21e8d as an ancestor (git merge-base --is-ancestor 17f21e8d b0873de2 = exit 0; base 7122b0db = #26210's group, on #26158's 745c276b, on #26064's 17f21e8d), and since #26198 touches 73 package.json files its affected-only merge_group Test Core ran plugin-security on that tree. The #26158/#26210/#26226/#26212 groups also contained 17f21e8d but went green because merge_group Test Core runs the affected set against the group's own base (scripts/ci/select-shard-packages.sh) and their diffs never select plugin-security; that is why the devx control read green. The fix is #26064's own rebinding (head 0239ff16, delegator via sys_user_permission_set), already on that PR: no second PR, no runtime change. The seat lands #26064 and closes this card with it.",
      "tests": "Single file, `pnpm exec vitest run --maxWorkers=2 src/controlled-by-parent-owner-may-edit.test.ts` from packages/plugins/plugin-security, each tree after `pnpm --filter '@objectstack/plugin-security^...' build` under os-verify-lock (core is read from dist, and #26064 changes core). main 81bba6c3: 20/20 green quiet + 20/20 green under 12 busy node loops on 4 cores (VERDICT command-exit 0 both). #26064 queued commit 17f21e8d: 0/10, every run the same one case red: Expected \"[Security] Access denied: update on 'omd_obligation' requires edit access to its master record\" / Received \"[Security] Access denied: on-behalf-of principal may not 'update' 'omd_obligation' — the delegator lacks that grant (ADR-0090 D10 intersection)\" (Tests 1 failed | 16 passed). #26064 patched head 0239ff16: 10/10 green. Between the two PM readings, the #26064 reviewer's holds (refusal at the on-behalf-of check without the fold) and the devx race reading does not (zero variance on any tree: 0/10 and 30/30 both deterministic). CI on main: Test Core green on all 8 push runs since #26005 landed (5e113b39) and on the full-list schedule run 40356103024 at f143cd88; main was never red on this file.",
      "gates": "No diff, so no derived gate list and no lint run (dispatch-gates --commands has nothing to derive from; harness branch unchanged at origin/main 81bba6c3). No PR, so no check-runs to cite.",
      "dogfood_battery": "n/a — no PR",
      "mcp_calls": "4 — mcp__github__get_job_logs x4 (reads: jobs 121688340494, 121698278089, tail 3000 then 5000; the MCP tail caps at 5000 lines and the failure sits ~25k lines from the end, so the FAIL text came from the triage comments and the local repro)",
      "api_writes": "1 — POST issues/26247/comments (this report, via scripts/pm/post-stamped.mjs)",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: a · reach: named producer — the merge-queue-triage workflow filed #26247 as '2 independent hits' when it was one · evidence: .github/workflows/merge-queue-triage.yml stacksFor() unions a victim only when its base equals ANOTHER VICTIM's head; #26198's base 7122b0db is the head of #26210's group (green: affected-only), whose base 745c276b is #26158's group, whose base 17f21e8d is #26064's victim head. stackEdges already indexes every merge_group run in the window, so walking base to head through non-victim queue runs would resolve it at zero extra API calls · dedupe words: merge-queue-triage, speculative stack, independent, transitive base chain, stacksFor",
        "carrier: noted, not filed — the merge_group affected-only selection means 'a later queue build went green on the same main' is not a control for a queued PR's breakage unless that build's diff selects the failing package; worth one line in the queue-flake triage reading (承接者:无)"
      ]
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Landed

    2026-10-26T18:20Z · domain:server seat 2 · os-project-manager · session_0186vfjHHMsRXC9EUT9hTFMo. Closed by PR #26064, merged at 2026-10-26T18:18Z as 733b3c849a on main.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:dispatchedpriority:p1High: required for production / M2queue-flake-anchortests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions