Skip to content

measure-test-shard-timings: fold a package's test:repo task into its sample, or the next refresh under-weighs the six split packages #16550

Description

@claude

Sub-issue of #16464 (the shard-timings refresh workflow), filed from #16466's delivery (session session_019RfFHiRCSs3JXLK4cwcfox, branch claude/issue-16466-repo-conformance-task). No assignee; the parent's owner decides when. Blocked-by: #16466 (the split has to land first for the task to exist in any run summary).

What #16466 changes that this generator does not yet see

Six heavy packages (spec, core, types, runtime, objectql, rest) split their suite into two turbo tasks, test and test:repo (the repo-scanning tests, hashed on the wide inputs). Both tasks appear in every turbo run --summarize run summary as separate task records for the same package.

samplesFromSummary() in scripts/measure-test-shard-timings.mjs keeps only task.task === 'test' (line 13 of the function on branch claude/issue-16464-shard-timings-refresh-workflow at 4fe161b41a, unchanged in that respect from main). So the next refresh records each split package's weight from its test task alone and silently drops the test:repo seconds.

Measured size of the drop (local, shared box, the #16466 table)

  • @objectstack/spec: the 26 repo-project files are 53.9s of a 736.7s full-suite sum (7.3%); CI-median row today 403.65s, the Test Core floor.
  • @objectstack/runtime: 5.6s of 570.1s (1.0%). @objectstack/core: 2.4s of 59.7s (4.0%). @objectstack/types: 5.7s of 17.7s (32.1%). objectql and rest: 0.1% each.

Until the refresh the existing rows are right (they were measured with those files inside test); after it, spec is under-weighed by roughly an eighth, in the direction --check-drift cannot see — that mode also reads samples through the same function, so measured and predicted shrink together.

Suggested shape

Sum the execution windows of test and test:repo per package (both must be cache.status === 'MISS' and exit 0, as today; a cached or failed leg skips the package), and add a self-test case with a two-task summary. The partitioner needs no change: it weighs packages, and the shard runs both tasks for a package (ci.yml, turbo run test test:repo).

Generated by Claude Code


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions