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
{{ message }}
Repository navigation
frontier --watch: rerun a batch side by side, specs sharing a file stem on one worker (hot reload H11) #8852
Part of #8737 (hot reload); a follow-up to H5 (#8751) and #8825.
Problem
Cost: a save to a spec that others import changes the closure digest of every importer, and frontier --watch reruns up to WATCH_BATCH (16) of them one after another. The last verdict therefore arrives after the sum of their test times. specs/verified/reuse.t27 alone has 8 direct importers.
Measured (2026-10-11, load ~7): 8 warm t27c test-report runs took 17.8 s one at a time and 8.3 s side by side.
Constraint
test_report::run names its scratch directory t27c-test-report-<file stem>-<pid>. Two threads of one process on two specs with the same stem would delete each other's binaries; pattern.t27 lives in three directories.
Changing test_report.rs would move every seal's test_runner hash (the owner's H2 decision), so the fix stays outside it.
Change
The schedule: the batch is grouped by file stem. Groups run side by side through par_in_order (suite_jobs() workers, 8 MiB stacks); each group's specs run one after another on its worker.
Output: verdicts print in path order, as before.
watch.t27's comment describes the schedule.
Acceptance criteria
After a save to specs/verified/reuse.t27, the verdict lines are identical, in the same order, with T27_SUITE_JOBS=1 and with the default.
The last verdict arrives sooner with the default.
Hand-written foreign lines do not grow.
Boundary
specs/verified/watch.t27
User Scenarios
Given a spec specs/verified/reuse.t27 with 8 direct importers, When the file is saved while frontier --watch is running, Then the 8 importers are grouped by file stem and each group runs on a separate worker in parallel, with specs within a group running sequentially.
Given T27_SUITE_JOBS=1 and the default (8 workers), When the same save triggers a watch batch, Then the verdict lines printed are identical and in the same path order.
Given the parallel schedule, When the batch completes, Then the last verdict arrives sooner than the sequential baseline.
Requirements
FR-001: The watch batch scheduler MUST group specs by file stem so that specs sharing a stem run sequentially on the same worker.
FR-002: The scheduler MUST execute groups side by side using par_in_order with suite_jobs() workers and 8 MiB stacks.
FR-003: Verdicts MUST be printed in path order, identical to the sequential output.
FR-004: The change MUST NOT modify test_report.rs or any seal's test_runner hash.
FR-005: The schedule logic MUST be described in specs/verified/watch.t27's comment.
Activity
frontier --watch reruns a batch side by side, specs sharing a file st…