Skip to content

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

Description

@objectstack-fleet

Filed by PM seat domain:devx#1 (session_01VDtqoecgES7ScQYGbFVDRv) from the #16465 dev report (5981857497). The seat re-read it on origin/main before filing. ⛔ Filed bare: grading and routing are triage's. ⛔ Not a claim.

Filing gate: ① a defect, class (a). A named producer's output contradicts measurement.

Measured

  • The refreshed dataset records @objectstack/cli at 733.33 s.

  • After ci(test-core): retire the CLI's file-level slicing by the partitioner's own slice-count derivation #21487 (9ff74285f1) retired the CLI file slice (FILE_SHARDED_PACKAGES = {}), the whole CLI suite runs on one shard. Two executed windows measured it (the CLI output was live for about 1300 s in each; neither was a replay):

    • 1659.03 s: run 37199214385, job 111427680338;
    • 1667.97 s: run 37212954836, job 111467712089, the hourly full run on ea7ff394b6.

    That is 2.26–2.27× the dataset value.

  • In the refreshed partition at 1c3a4d9730, shard 2/6 is cli plus 11 packages, 1208.1 s predicted. Its measured/predicted ratio is at least 1.77×.

  • That shard's test step took 29m58.88s in run 37212954836. Its timeout-minutes is a temporary 45, whose revert condition returns it to 30.

  • The partitioner's docblock argues, from the 733.33 s figure, that cli "fits whole up to ~1852s". That argument is how ci(test-core): retire the CLI's file-level slicing by the partitioner's own slice-count derivation #21487 retired the slice.

Why it matters

Direction (for triage, not a ruling)

The dev's options, recommending the first:

  • A: re-run the refresh (measure-test-shard-timings.mjs) over current green-run summaries now that cli runs whole.
  • B: restore cli in FILE_SHARDED_PACKAGES, which needs A's number first.

Two single readings near the bound need a second sample before the red is wired: plugin-auth at 1.57× and metadata-protocol at 1.49×.

Dedupe

Open issues were read for test-shard-timings, 733.33, FILE_SHARDED, Test Core timeout and shard 2/6. Hits:

No card asks this question.

Dedupe words: test-shard-timings cli 733.33 · cli whole 1667s · shard 2 29m58 · FILE_SHARDED_PACKAGES retired · Test Core timeout 45


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — bug · priority:p2 · domain:devx · area:devpath · pm:queue. Option A: re-measure first; B only if A's number says so

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-04T16:54Z. ⛔ Not a claim, ⛔ not a dispatch.

    Why p2.

    Routing: scripts/test-shard-timings.json and scripts/measure-test-shard-timings.mjs, so domain:devx, with #16465.

    Direction:

    1. A: re-run the refresh over current green-run summaries, now that cli runs whole (after ci(test-core): retire the CLI's file-level slicing by the partitioner's own slice-count derivation #21487). The dataset's cli figure then reflects the whole-suite windows (about 1,660 s measured twice).
    2. Correct the partitioner's docblock argument ("cli fits whole up to ~1852s") with the new figure, in the same PR. That argument is how ci(test-core): retire the CLI's file-level slicing by the partitioner's own slice-count derivation #21487 retired the slice.
    3. B (restore cli in FILE_SHARDED_PACKAGES) only if A's figure puts cli's shard over the partitioner's fit bound. The PR states the arithmetic either way.
    4. Take a second sample for plugin-auth (1.57×) and metadata-protocol (1.49×) before ci: Test Core compares each shard's measured duration with its predicted weight — warning at 1.3x, red at 70% of the timeout (maintainer-directed, drift alarm) #16465 wires its 1.5× red. One reading near the bound is not a baseline.

    Acceptance: after the refresh, every shard's measured/predicted ratio on the next hourly full run is under 1.5×. Or the PR names the shard that is not, and why.


    Generated by Claude Code

  2. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    bugSomething isn't working
    and removed on Oct 4, 2026
  3. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 56
    Session: session_01VDtqoecgES7ScQYGbFVDRv
    Branch: claude/issue-21758-cli-shard-timing-refresh (cut from origin/main b7a13c762f)
    Worktree: objectstack-issue-21758
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: the triage direction 5982304306.

    Stop on a breach and explain it in the report.
    Container & model: M (a dataset refresh through its own tool, one docblock, partition arithmetic), mode:subagent, model: opus
    Clause-②: no
    Thread-read: 5982304306
    Serial constraints cleared: board read at 2026-10-04T17:51Z. No open PR touches the shard-timings files, partition-test-shards.mjs or ci.yml. #16465 waits on this card (Blocked-by: #21758), and #16468 waits on #16465.

    Priority rule 3 reading: domain:devx has no open P0/P1. A balancing input every build reads is 2.27× wrong for one package, and one shard runs about 30 minutes against a temporary 45-minute timeout. No contract-review face is touched, and nothing publishes, so the PR carries skip-changeset.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 21758,
      "status": "blocked",
      "branch": "claude/issue-21758-cli-shard-timing-refresh",
      "pr": null,
      "session": "session_01VDtqoecgES7ScQYGbFVDRv",
      "premise_still_valid": true,
      "summary": "STOPPED at brief step 1, per the brief's own stop rule: the tool's input (the test-core-run-summary-N-of-6 artifacts) cannot be read from this container, so no dataset was regenerated, no docblock edited, no commit, no PR. Blocker reproduced today: the built-in gh refuses the 302 to productionresultssa3.blob.core.windows.net, and following the pre-signed URL directly gets CONNECT 403 (organization egress policy) on artifact 11310676129 of green hourly run 37219723637; full job logs redirect to the same host and are refused the same way. Cleanest route: .github/workflows/shard-timings-refresh.yml already exists for exactly this (workflow_dispatch + weekly cron '30 5 * * 1', next fire Mon 2026-10-05 05:30Z), selects up to 24 completed hourly schedule runs of ci.yml (all post-#21487, cli whole, artifacts retained 1 day) and opens the dataset PR as github-actions[bot] - the same lane that produced #20388. A seat with actions:write can dispatch it now on main; this dev may not (MCP actions_run_trigger is a write tool, outside the writes budget). The docblock correction (step 2) then follows as a small PR on top of the regenerated figure. Arithmetic on the three executed whole-cli readings says option B is NOT required: cli fits whole with ~11% headroom.",
      "tests": "No code changed, so no gate ran (NOT MEASURED: partitioner self-test / pins / dispatch-gates, reason: no diff exists). Evidence: (1) GET actions/runs/37219723637/artifacts lists test-core-run-summary-1..6-of-6, expired=false; gh api .../artifacts/11310676129/zip -> exit 1 'refusing a redirect to https://productionresultssa3.blob.core.windows.net'; curl on the redirect_url -> 'CONNECT tunnel failed, response 403', agent-proxy: connect_rejected. (2) Readable substitute used ONLY for arithmetic and second samples, never for the dataset: the aggregate Test Core job echoes report-test-timings' merged table (turbo execution windows, executed MISS only, replays excluded) into its log, read via MCP get_job_logs.",
      "mcp_calls": "5 - mcp__github__get_job_logs x5 (read-only); no MCP write tool",
      "api_writes": "2 - git push of the empty branch (write-route probe); this report comment via scripts/pm/post-stamped.mjs on #21758",
      "input_source": "intended: test-core-run-summary artifacts via measure-test-shard-timings.mjs - UNREADABLE here (blob host CONNECT 403). Read instead (report only): report-test-timings merged table in aggregate Test Core job logs 111493875708 (run 37219723637 @ b7a13c762f), 111473436951 (run 37212954836 @ ea7ff394b6), 111450555766 (run 37206451320 @ 316be321ef).",
      "cli_before_after": "before 733.33s (dataset, single run 36380128221, measuredAt 2026-09-28, cli then sliced n=2). after: NOT MEASURED through the tool. Whole-cli turbo windows, executed: 1670.88s (run 37212954836), 1667.55s (run 37219723637); vitest Duration readings from #16465: 1659.03s, 1667.97s. 2.26x-2.28x.",
      "fit_bound_arithmetic": "Docblock rule C at most (1.3/6)(6696.67 + C), 6696.67 = 7430.00 dataset total - 733.33 so C_max = 1852.3s. At C = 1670.88 (worst reading): mean = 1394.6, 1.3 x mean = 1813.0, C/mean = 1.198 at most 1.3, headroom 1852.3/1670.88 = 1.109. Holds the rest of the dataset fixed; an honest refresh also moves the rest (spec measured 1069.59 vs 1391.38 pinned lowers the mean; plugin-auth, driver-sql, plugin-approvals, service-automation read higher and raise it), so the bound must be recomputed on the regenerated dataset in the follow-up PR.",
      "option_b_taken": false,
      "bins": "NOT MEASURED: no regenerated dataset to bin. Last known (#16465 dev, refreshed dataset @ 1c3a4d9730): 1391.4/1208.1/1206.4/1208.1/1207.9/1208.1s, shard 2 = cli + 11.",
      "second_samples": "plugin-auth (dataset 189.18): 297.82s 1.57x (run 37212954836), 417.15s 2.21x (run 37219723637), 320.88s 1.70x (run 37206451320) - three executed readings all at or above 1.57x: not noise near the bound, the entry is low. metadata-protocol (dataset 341.53): 511.20s 1.50x (run 37212954836), 426.17s 1.25x (run 37206451320); run 37219723637 cache-replayed it (NOT MEASURED). Others over 1.5x in run 37219723637: driver-sql 1.54x, plugin-approvals 1.78x; in 37212954836: service-analytics 1.53x, client 1.83x. spec reads 0.77x.",
      "gates_run": [],
      "blocker": "Artifact bytes live only on productionresultssa*.blob.core.windows.net; container egress returns CONNECT 403 (same denial documented in shard-timings-refresh.yml header, #16222, #16173). Unblock: a seat with actions:write dispatches shard-timings-refresh.yml on main (POST actions/workflows/shard-timings-refresh.yml/dispatches ref=main), or waits for the cron Mon 2026-10-05 05:30Z; then re-dispatch this card for the docblock + arithmetic PR over the landed figure.",
      "breaches": ["none - no file edited; empty remote branch claude/issue-21758-cli-shard-timing-refresh left at b7a13c762f (probe), seat may delete or reuse it for the follow-up"],
      "open_questions": [
        {
          "question": "Dispatch the refresh lane now, or wait for Monday's cron?",
          "options": ["A dispatch now on main (seat with actions:write)", "B wait for cron 2026-10-05 05:30Z"],
          "recommendation": "A, because the hourly runs' run-summary artifacts live 1 day and the post-#21487 whole-cli windows are already in the 24-run candidate set; #16465 and #16468 are waiting on it."
        }
      ],
      "out_of_scope_findings": [
        "carrier: the refresh-lane PR reviewer / #16465 seat - noted, not filed: the dataset that #20388 merged on 2026-10-04 was measured from ONE run (36380128221, 2026-09-28); one run covers the pinned weights of many packages with a single sample, which is why several entries (plugin-auth 1.57-2.21x, plugin-approvals 1.78x, client 1.83x, spec 0.77x) disagree with today's executed windows, not only cli"
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Stand-down for round 56 (claim 5982760446), seat domain:devx#1, at 2026-10-04T17:56Z. No PR was opened and nothing was committed (dev report 5982793172).

    pm:dispatched → pm:blocked.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: state corrected — undeclared pm:blocked → pm:on-hold, from the holder's stand-down (5982803287)

    Restart-when: .github/workflows/shard-timings-refresh.yml opens its dataset PR, from its cron (next fire Mon 2026-10-05 05:30Z) or a maintainer workflow_dispatch.

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-04T18:00Z. ⛔ Not a claim, ⛔ not a dispatch; assignee untouched.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 5, 2026

    @objectstack-fleet
    ContributorAuthor

    Blocked-by: #21826

    Refresh lane reading, seat domain:devx#1, at 2026-10-05T06:33Z.


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 65
    Session: session_01VDtqoecgES7ScQYGbFVDRv
    Branch: claude/issue-21758-shard-fit-after-refresh (cut from origin/main f2aa0c9fad)
    Worktree: objectstack-issue-21758
    Domain: domain:devx
    Seat: domain:devx#1

    Restart: the pm:on-hold restart condition has fired. The refresh lane's dataset PR #21826 landed as f2aa0c9fad, and scripts/test-shard-timings.json on main is blob-identical to its head 18a0dad5bb (12c2460c00). cli now reads 1702.69 s.

    File surface: triage's direction (5982304306), steps 2–4. Step 1 (A) is the landed refresh.

    Acceptance (triage): every shard's measured/predicted ratio is under 1.5× on the next hourly full run after landing, or the PR names the shard that is not and why. The post-landing reading is the seat's to take.

    Stop on a breach and explain it in the report: a reading the container cannot take, or a change outside the surface. Report the exact blocker, not a partial PASS.
    Container & model: M, mode:subagent, model: opus
    Clause-②: no
    Thread-read: 5989372026
    Serial constraints cleared: board read at 2026-10-06T04:25Z. No open PR touches scripts/partition-test-shards.mjs or scripts/test-shard-timings.json.

    Priority rule 3 reading: domain:devx has no other open P0/P1 that is dispatchable now (#21932 is pm:blocked). This p2 unblocks #16465. A script is not a review face, and nothing publishes, so skip-changeset applies.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Release: 6009319905 (baozhoutao, session_01VDtqoecgES7ScQYGbFVDRv, seat domain:devx#1, round 65), taken over by domain:devx seat 2, session_01VF48aw8RPG6wzDnMgp6rtw. Cause: the holder's session is out of tokens, per the maintainer. Its in-session dev reported nothing, and the branch carries only the empty probe. Destination: the Claim: below.

    谁的指令: the maintainer (os-justin)
    原话:

    is:issue state:open label:pm:dispatched assignee:baozhoutao 他没有token了,他的任务你也要接手
    在哪说: the chat of session session_01VF48aw8RPG6wzDnMgp6rtw, 2026-10-06T06:31Z

    Claim: PM loop round 1 (takeover)
    Session: session_01VF48aw8RPG6wzDnMgp6rtw
    Account: os-justin (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-21758-shard-fit-after-refresh (continued, remote head f2aa0c9fad, which is the holder's empty probe at its main base)
    Worktree: objectstack-issue-21758
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: unchanged from the released claim, which applies triage's direction (5982304306) steps 2–4:

    • scripts/partition-test-shards.mjs: correct the docblock "cli fits whole up to ~1852s" and recompute the fit bound on the landed dataset, stating the arithmetic;
    • option B (cli back in FILE_SHARDED_PACKAGES) only if that arithmetic says so;
    • second samples for plugin-auth and metadata-protocol, reported, not written.
    • ⛔ No hand edit of test-shard-timings.json, ⛔ no drift-gate wiring (ci: Test Core compares each shard's measured duration with its predicted weight — warning at 1.3x, red at 70% of the timeout (maintainer-directed, drift alarm) #16465), ⛔ no timeout change. Stop on a breach and explain it in the report.
      Container & model: M, mode:subagent, model: opus (dispatch-gates --tier: no path-derived mandate; default tier)
      Clause-②: no
      Thread-read: 6009319905
      Serial constraints cleared: board read at 2026-10-06T06:31Z. No open PR touches scripts/partition-test-shards.mjs, scripts/test-shard-timings.json or .github/workflows/ci.yml (each open PR's file list read by filename). No PR exists on either claude/issue-21758-* branch.

    The four-part takeover, in one comment

    ① The Release: line above names the holder's claim 6009319905 and its session, with the three provenance fields.
    ② Assignee: baozhoutao → os-justin, written in this same act.
    ③ The Claim: above continues branch claude/issue-21758-shard-fit-after-refresh at remote f2aa0c9fad.
    ④ Handover record: the holder's last pushed sha is f2aa0c9fad. That is the empty-branch probe at main's base, with no commit on it. Status: claimed at round 65, with no os-dev-report and no PR.

    • The older branch claude/issue-21758-cli-shard-timing-refresh (b7a13c762f, round 56, stood down in 5982803287) is left untouched.
    • ⛔ This is a takeover on the maintainer's word, not a liveness verdict on seat 1. ⛔ This seat does not take seat 1, its queue, or any of its cards beyond what the maintainer named.

    Generated by Claude Code

  10. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 21758,
      "status": "done",
      "branch": "claude/issue-21758-shard-fit-after-refresh",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/21966",
      "session": "session_01VF48aw8RPG6wzDnMgp6rtw (a subagent, so this is the parent's id)",
      "premise_still_valid": true,
      "summary": "Triage steps 2-4 are done. Option B is not taken, by the arithmetic. The diff is comment-only: the FILE_SHARDED_PACKAGES docblock in scripts/partition-test-shards.mjs. The PR body reads 'Fixes #21758'; only the seat's post-landing reading is left. DATASET: scripts/test-shard-timings.json at origin/main 01e0f71a, blob 12c2460c00, identical to f2aa0c9fad (#21826). It was measured from run 37262126122: 72 packages, 9781.33s in total, cli 1702.69s (now the heaviest item). @objectstack/dogfood, the only ci.yml --exclude, is not in the dataset. RULE: the partitioner's own meetsBound (pins 2 and 3) requires both (a) the heaviest bin at most 1.3x the mean and (b) no single item over 1.3x the mean. With cli heaviest and alone in a bin, both reduce to C ≤ (1.3/6)(R + C). ARITHMETIC: R = 8078.64; mean = 9781.33/6 = 1630.22; bound = 2119.29; cli/mean = 1.044; C_max = 1.3 × 8078.64 / 4.7 ≈ 2234.5s, which is 1.31x the dataset entry and 1.27x the worst reading since the refresh (1753.66s, run 37415122516). Slicing cli at 2 gives max/mean 1.002 (heaviest item spec at 1135s). On this dataset pin 3c itself refuses a {cli: 2} entry ('Retire the entry'). FILE_SHARDED_PACKAGES is untouched, so the Test Core matrix and the required-check names 'Test Core (N/6)' and 'Test Core' do NOT change. BINS (6, full list): 1/6 1702.69s (cli alone, 1.044x mean) · 2/6 1614.77s (spec + 11) · 3/6 1615.33s (metadata-protocol + 14) · 4/6 1615.40s (objectql + 14) · 5/6 1616.73s (rest, plugin-auth + 13) · 6/6 1616.41s (runtime + 13). The self-test prints the same: 'bins 1703/1615/1615/1615/1617/1616s'. SECOND SAMPLES are executed turbo windows from the report-test-timings table in the aggregate Test Core job log, read with MCP get_job_logs; each ratio is against the landed dataset. plugin-auth (364.98): 393.33 (1.08x, schedule 37421524959), 387.53 (1.06x, push 37415122516), 231.44 (0.63x, push 37419396793); replayed and NOT MEASURED in schedule 37416453417. metadata-protocol (566.45): 372.89 (0.66x, 37421524959), 549.06 (0.97x, 37415122516); NOT MEASURED in 37419396793 (not in the top-10, cutoff 150.51s) and in 37416453417 (replayed). Seat 1's pre-refresh readings against the new values: plugin-auth 0.82/1.14/0.88x, metadata-protocol 0.90/0.75x. Every sample is under 1.5x. EARLY ACCEPTANCE READING, partial: shard 1/6 (cli alone) measured/predicted is 0.61x (schedule 37416453417) and 1.01x (schedule 37421524959). Shards 2-6 are NOT MEASURED here: the run-summary artifacts are unreachable (blob CONNECT 403) and the merged table lists only 10 packages. In 37421524959 all ten listed packages read 0.66-1.21x. The post-landing reading is the seat's.",
      "tests": "All runs on head cb3f093c. GATES: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; derived from merge base 01e0f71ad; 1 path, +29/-14) derived the same 30 commands as the dispatch. All 30 exited 0, with each exit code written to disk. --ran reconciliation: '✓ dispatch-gates --ran: 30 derived famil(ies) accounted for — 30 run, 0 NOT-MEASURED (a DERIVED zero — all 30 recorded an exit code and none of them is 3)'. Verdict lines: partition-test-shards --self-test 'self-test OK (72 measured packages -> 72 shard items, 6 shards, max/mean 1.04x [bound 1.3x], floor 1703s, bins 1703/1615/1615/1615/1617/1616s, file-level slices: none)'. check:pm-dispatch-gates (nohup + foreground tail --pid; exit 0) '✓ dispatch-gates self-test: 1976 cases pass.', 1121.2s. check:nul-bytes 'OK (scanned 10322 text file(s) … no raw ASCII control bytes)'. check-comment-mask-corpus '8297 files, 0 disagree, 0 unparseable'. check-scripts-symbol-anchors '3762 anchors across 282 scripts resolve'. check:entry-guard '282 scripts/ file(s) — every entry guard goes through invoked-as.mjs'. check:cross-package-test-inputs 'OK: 30 package(s) read outside themselves, all declared'. EXTRA runs, because the derivation flags rosters under scripts/: check-published-list-mirrors exit 0; measure-test-shard-timings --self-test exit 0 'self-test OK'. Rule 5 (the edited tool's own suite): git grep finds no *.test.* naming partition-test-shards (control grep for 'scripts/' over the same pathspec: 383 hits), so its own --self-test is that suite, and it is green. ESLINT, narrowed to this file, with three pieces of evidence: (1) the file is in the population of eslint.config.mjs's '**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}' object; --print-config shows 2 rules and parserOptions {ecmaVersion, sourceType}. (2) --format json reports 1 file, 0 errors, 0 warnings. (3) The config enables no type-aware linting (0 hits for projectService / parserOptions.project), so a comment edit in one file cannot change another file's result. The full pnpm lint run is CI's. No reverse verification or ablation: the diff changes no code. PR CI when this was written: 12 success, 11 skipped, 10 in_progress (in_progress is the honest value; the PM reads convergence).",
      "mcp_calls": "4 — mcp__github__get_job_logs ×4 (read-only), on jobs 112121376726, 112140755080, 112121189304 and 112134344189; no MCP write tool",
      "rest_writes": "3 — all through the fleet-write relay as POST /repos/objectstack-ai/objectstack/dispatches, each executed as objectstack-fleet[bot]: (1) pr_create, i.e. POST /repos/objectstack-ai/objectstack/pulls (draft; relay run 37427350135; body read back byte-identical, 9342 bytes); (2) label-write.mjs, i.e. POST /issues/21966/labels skip-changeset plus POST /issues/21966/assignees os-justin (relay run 37427419174; read-back MATCHES: labels size/s, skip-changeset; assignee os-justin); (3) this os-dev-report comment via post-stamped.mjs, i.e. POST /issues/21758/comments. Plus 2 git pushes (merge 34ba619c; docblock cb3f093c), which are not REST.",
      "api_writes": "3 — see rest_writes",
      "files_changed": ["scripts/partition-test-shards.mjs"],
      "line_budget": "n/a — no skills/** file and no line-ratcheted ledger in the diff. The diff is +29/-14 in one file (dispatch-gates: 43 changed lines, under the 5000 human-merge threshold).",
      "gates": [
        "node scripts/check-ci-filter-parity.mjs :: exit 0",
        "node scripts/check-closing-keyword-parity.mjs :: exit 0",
        "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0",
        "node scripts/check-comment-mask-corpus.mjs :: exit 0",
        "node scripts/check-declaration-mirrors.mjs :: exit 0",
        "node scripts/check-declaration-mirrors.mjs --self-test :: exit 0",
        "node scripts/check-scripts-symbol-anchors.mjs :: exit 0",
        "node scripts/check-scripts-symbol-anchors.mjs --self-test :: exit 0",
        "node scripts/check-self-test-wired.mjs :: exit 0",
        "node scripts/check-self-test-wired.mjs --self-test :: exit 0",
        "node scripts/check-self-test-workflow-commands.mjs :: exit 0",
        "node scripts/check-self-test-workflow-commands.mjs --self-test :: exit 0",
        "node scripts/check-whole-set-label-write.mjs :: exit 0",
        "node scripts/check-whole-set-label-write.mjs --self-test :: exit 0",
        "node scripts/partition-test-shards.mjs --self-test :: exit 0",
        "node scripts/pm/bare-root-worklist.mjs --self-test :: exit 0",
        "pnpm check:agent-test-spelling :: exit 0",
        "pnpm check:bash32-floor :: exit 0",
        "pnpm check:cli-command-ids :: exit 0",
        "pnpm check:cross-package-test-inputs :: exit 0",
        "pnpm check:driver-memory-census :: exit 0",
        "pnpm check:entry-guard :: exit 0",
        "pnpm check:gitlink-declared :: exit 0",
        "pnpm check:nul-bytes :: exit 0",
        "pnpm check:parse-guard :: exit 0",
        "pnpm check:pnpm-filter-targets :: exit 0",
        "pnpm check:ratchet-remedy-authority :: exit 0",
        "pnpm check:refd-timer-probe :: exit 0",
        "pnpm check:watch-hint-literal :: exit 0",
        "pnpm check:pm-dispatch-gates :: exit 0",
        "extra: node scripts/check-published-list-mirrors.mjs :: exit 0",
        "extra: node scripts/measure-test-shard-timings.mjs --self-test :: exit 0",
        "reconcile: node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran ran.list :: exit 0 (30 derived, 30 run, 0 NOT-MEASURED, 0 UNRUN)"
      ],
      "deviations": [
        "Merge: origin/main 01e0f71a was a fast-forward of the branch's base f2aa0c9fad. The brief asked for a merge commit, so it was merged with --no-ff (34ba619c). Before the first push, that merge commit was amended locally to carry the model-free trailer pair. Nothing was force-pushed or rebased.",
        "Attribution: the harness reminder asked for a model-named Co-Authored-By trailer and a different PR footer. AGENTS.md takes precedence, so the commits carry the model-free pair (Claude-Session + Co-authored-by: Claude) and the PR body ends with the session-URL footer.",
        "The pm-dispatch-gates battery was relaunched once. The first nohup launch captured no exit code, so this session killed its own recorded process group (3084) seconds after starting it and relaunched it with the exit code written to disk. No other process was touched.",
        "Second samples include two main push runs (affected sets) beside the two post-refresh schedule runs. Each reading is labelled with its event. The per-shard acceptance ratio is quoted only from schedule (full-list) runs.",
        "Worktree /home/user/objectstack-issue-21758 was removed after the PR was opened (node_modules first, then git worktree remove with no --force; exit 0, directory gone). This report was posted from the shared checkout's scripts/pm/post-stamped.mjs, which runs that script and edits nothing."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: #16465, and whoever owns the revert condition on Test Core's temporary timeout · noted, not filed: shard 1/6 is the whole CLI alone. Its job wall time was 31m37s (37421524959), 34m39s (37415122516), 32m09s (37419396793) and 20m42s (37416453417). The timeout is a temporary 45 minutes, and the condition written beside it returns it to 30, which shard 1 already exceeds in 3 of these 4 runs. The 1.3x ratio bound holds; this is wall clock only. No timeout was changed here (fenced).",
        "carrier: #16465 (the next editor of ci.yml's Test Core block) · noted, not filed: two ci.yml comments are stale. The drift-step block still cites cli as '458.15s recorded, 1231.52s measured'. 'WHY SIX' names @objectstack/spec as the heaviest indivisible suite, but on the landed dataset the CLI is (1702.69s against spec's 1134.86s).",
        "carrier: the shard-timings-refresh.yml lane's next weekly run and the #16465 seat · noted, not filed: the #21826 dataset again comes from a single run (provenance.runs = ['37262126122']). The CLI alone on shard 1 read 1033.74s and 1723.05s one hour apart (schedule runs 37416453417 and 37421524959).",
        "carrier: the seat's post-landing acceptance reading · noted, not filed (an inference): spec moved from a bin of its own into a 12-package bin, and the weights are contended wall clock. spec was replayed in all four post-refresh runs read, so its window under the new placement is NOT MEASURED. If shard 2/6 drifts, look there first."
      ]
    }

    Generated by Claude Code

  11. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Review: ACCEPT — PR #21966 at cb3f093c

    Seat domain:devx#2 · session_01VF48aw8RPG6wzDnMgp6rtw (takeover 6010756437) · reviewed against GitHub and the fetched branch at 2026-10-06T07:08Z, not against the report.

    PR shape.

    • Draft against main, body opening Fixes #21758 and Clause-②: no at line start, assignee os-justin.
    • Labels: size/s · skip-changeset.
    • One file, scripts/partition-test-shards.mjs, +29/−14.
    • check-governed-merges.mjs --pr 21966: 0 of 1 path governed.
    • Fixes is right: triage's steps 2–4 are done, and what remains is this seat's post-landing reading, owed below.

    Scope. Comment-only. The seat filtered the diff for added or removed lines that are not comments and found none. FILE_SHARDED_PACKAGES is unchanged, so the Test Core matrix and the required-check names (Test Core (N/6), Test Core) are unchanged. Root scripts/ only, so skip-changeset holds. The claim's three fences hold: no edit to test-shard-timings.json, no drift wiring, no timeout change.

    Arithmetic, re-derived by this seat from scripts/test-shard-timings.json on origin/main:

    • 72 packages, 9781.33 s in total, cli at 1702.69 s;
    • mean 1630.22 s, bound (1.3×) 2119.29 s, cli/mean 1.044;
    • whole-cli ceiling C ≤ 1.3 × 8078.64 / 4.7 ≈ 2234 s.

    That matches the docblock line for line. Option B stays untaken, by the partitioner's own rule. The self-test prints bins 1703/1615/1615/1615/1617/1616 s at max/mean 1.04×.

    Second samples (dev, from executed windows; each ratio is against the landed dataset):

    • plugin-auth: 1.08×, 1.06× and 0.63×.
    • metadata-protocol: 0.66× and 0.97×.

    All are under 1.5×. The replayed or unlisted windows are marked NOT MEASURED, not counted.

    Gates. The dev ran 30 of 30, all exit 0 at cb3f093c (--ran reconciled). It also ran measure-test-shard-timings --self-test and check-published-list-mirrors. CI at this verdict: 19 success, 11 skipped, 3 in progress, 0 failed.

    Out-of-scope notes, each with a carrier and none filed:

    • (a) Shard 1/6, the whole CLI alone, runs 31–35 minutes of wall time in 3 of the 4 runs read. The temporary 45-minute Test Core timeout's own revert condition returns it to 30.
    • (b) Two stale ci.yml comments: the drift-step cli figures, and "WHY SIX" naming spec as the heaviest suite.
    • (c) The dataset rests on one run (provenance.runs = ['37262126122']).
    • (d) spec now shares a 12-package bin, and its window there is not yet measured.

    Carriers: (a), (b) and (c) go to #16465, the drift alarm this card unblocks. This seat leaves #16465 a pointer when this lands. (d) is in this seat's post-landing reading.

    Owed by this seat after landing: the acceptance reading on the next hourly full run, every shard's measured/predicted ratio under 1.5×, or the shard that is not, named with its reason.


    Generated by Claude Code

  12. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: PR #21966 → 4c49150e0c, verified on origin/main by content at 2026-10-06T08:13Z. Seat domain:devx#2 (takeover 6010756437).

    • scripts/partition-test-shards.mjs on main is blob-identical to the reviewed landing head cb3f093c (f45077074f). The merge commit is an ancestor of origin/main.
    • The card was closed completed by the PR's Fixes #21758. pm:dispatched is removed in this act.

    Acceptance reading (triage 5982304306): every shard's measured/predicted ratio is under 1.5×. HOLDS.

    Run: scheduled full run 37427862594 on main 80f9f7e6ba, started 2026-10-06T07:08Z, success. It postdates the dataset refresh (#21826, f2aa0c9fad). PR #21966 is comment-only, so its landing changes no bin, and this run carries the same partition. The partitioner's self-test at origin/main prints bins 1703/1615/1615/1615/1617/1616 s.

    Measured is the "Run this shard's tests" step of each Test Core (N/6) job (jobs API step timestamps):

    shard measured predicted ratio
    1/6 (cli alone) 1860 s 1703 s 1.09×
    2/6 207 s 1615 s 0.13×
    3/6 306 s 1615 s 0.19×
    4/6 466 s 1615 s 0.29×
    5/6 339 s 1617 s 0.21×
    6/6 425 s 1616 s 0.26×

    Caveats, stated rather than scored:


    Generated by Claude Code

  13. added a commit that references this issue on Oct 7, 2026
    4c49150
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions