Skip to content

[finding] the generated shard-timings dataset has no scheduled refresh, and its documented refresh path is unreachable from an agent container #16222

Closed as not planned

Description

@claude

scripts/test-shard-timings.json is GENERATED and nothing refreshes it on a
schedule
. Its own provenance.refresh names two manual paths, and both are
weaker than they read:

  1. "Download all six test-core-run-summary-N-of-6 artifacts from any green
    queue build."
    — measured from an agent container while working 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:
    GET /repos/.../actions/artifacts/{id}/zip redirects to
    productionresultssa11.blob.core.windows.net, and the session egress policy
    answers 403 to CONNECT. The artifacts existed and were unexpired; the
    channel is what is missing. Job logs are reachable through the MCP
    GitHub tooling, which is how the numbers on 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 were obtained, but the
    summary JSON the generator consumes is not printed to a log — only its path
    on the runner is.
  2. "Or a local pnpm exec turbo run test --concurrency=4 --summarize." — a
    whole-workspace test run. The agent containers cap a foreground command at
    about ten minutes and the shared heavy-verify lock budget is 540s, and
    @objectstack/cli alone now measures 1231.52s. Not reachable either.

So the refresh is, in practice, maintainer-only and manual, for a file whose
entire design premise is that regenerating it is cheap. It was last measured
2026-08-24; thirteen days later one entry was wrong by 2.69x and a shard was
killed by the 30-minute wall.

Why this is separable from #16173

#16173 gets detection — a per-shard predicted-vs-measured drift check that
reds. Detection tells you the file has rotted; it does not un-rot it, and the
next person to see that red still has to reach a channel that is closed to
agent seats. This card is the prevention half of the question #16173 itself
poses: "Ask what makes it go stale and whether anything refreshes it on a
schedule."
#16173 does not answer it and is not expected to.

The shape that looks cheapest, offered as a lead and not a ruling

The download only exists because the regeneration happens somewhere the
summaries are not. Inside a merge_group job the summaries are already on
disk
— .turbo/runs/ in the workspace, which is exactly what the existing
upload step publishes. A rollup leg (or a scheduled workflow) that collects the
six shards' summaries in-runner and runs the existing generator needs no
artifact download at all, and could open a PR with the regenerated dataset.

⚠️ Whoever takes this should expect the regenerated file to red
partition-test-shards.mjs --self-test's balance pins today — measured on
#16173, substituting the true CLI weight puts the heaviest single package at
1.54x the mean against a 1.3x bound. That is those pins working as designed, and
it is a decision sitting on #16173, not a defect in the refresh path. Sequencing
matters more than usual here.

Refs: #16173 (the stale-dataset bill, and where these numbers were measured).


Generated by Claude Code

Activity

  1. claude commented on Sep 7, 2026

    @claude
    ContributorAuthor

    Graded by the skills lane seat on the maintainer's direction (2026-09-07, 「同意你的建议,你负责执行派发所有可行的优化」): domain:devx, tooling, priority:p2, pm:blocked.

    Blocked-by: #16464

    Both halves of this finding are the remedy card #16464 (a scheduled in-runner refresh, dispatched 03:3xZ as flight C2a): the schedule removes the "nothing refreshes it" half, and running where .turbo/runs/*.json already sits removes the unreachable-path half. Flight C1 on #16173 reproduced the egress denial a second time today (03:2xZ), on a different container. This card closes when #16464's workflow has run its first refresh.


    Generated by Claude Code

  2. claude commented on Sep 7, 2026

    @claude
    ContributorAuthor

    Blocker cleared, and this card moves to pm:on-hold rather than back to the queue: #16464's lane MERGED at 09:43:41Z (PR #16498), and this card's deliverable is the PR that lane's first run opens — there is no dev work to dispatch until it exists.

    Restart-when: the shard-timings refresh lane (.github/workflows/shard-timings-refresh.yml) opens its first refresh PR — weekly Monday 05:30Z, or sooner on a maintainer's workflow_dispatch.
    Restart-touch: scripts/test-shard-timings.json

    Whoever lands that first refresh PR retires this card by hand: the lane's PRs carry Refs only, never a closing keyword, because a weekly lane cannot know which cards a given run ought to close.

    pm:blocked → pm:on-hold, Blocked-by: #16464 discharged. Posted by the skills seat (session session_019RfFHiRCSs3JXLK4cwcfox) as its own bookkeeping: it was this seat that parked the card there.


    Generated by Claude Code

  3. os-steve commented on Sep 21, 2026

    @os-steve
    Collaborator

    关闭(维护者指令,skills 席 2 代执行;裁决 #202 B)— 2026-09-21T03:43Z

    出处三件(SKILL.md :149 代执行他人指令,评论带出处三件)— 谁的指令:维护者,在本席(domain:skills seat 2,session_017ETYWqMQD4qMtZzAGovWNi,席位帖 #19287)会话内的真实用户轮次。在哪说:本席会话聊天,2026-09-21,在本席呈交「停放排查」四组清单(全板 165 张停放卡:pm:blocked 64 + pm:on-hold 101;其中 38 张的停放条件已消失——正文与评论里 Blocked-by: / Restart-when: 指向的卡或 PR 全部已关或已合)之后。原话(逐字,⛔ 未翻译、未润色):「还有哪些应该解除停放的你一起排查一下」;对四组清单:「同意」。

    本卡属第二组「条件已消失、但是工具卡 ⇒ 按 #202 B 关闭」:本席于 2026-09-21T03:00Z 机器复核,本卡停放所指向的目标已全部关闭/合并,或其前提已不复存在;而修复落在门禁 / 脚本 / workflow / CI / 席位协议 / PM 工具面,不在产品包——按维护者裁决批次 #202 项 1 字母 B 及其修正「close, never hold」(记录于 #19457):工具卡不带 Unblocks: #N(open 产品卡)或所护已发布面的点名,即关 not_planned,⛔ 不转 hold、不定 p3。

    两条重开条件(任一即可重开进 pm:queue · tooling):① 首行 Unblocks: #N,N 为一张 open 的产品卡;② 卡面点名本修复所护的已发布面。卡上已有的测量与分析原样保留,供重开时续用。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions