Repository navigation
smoke-test: persist each checkpoint's result to the manifest as it lands - #229
Merged
Merged
Conversation
Results used to accumulate in memory and reach manifest.json only after
the last checkpoint and custom-weights leg. Two 12 h Delta nightly runs
on 2026-08-13 (SLURM 21119813, 21119858) hit their wall-time limit
mid-run and left nothing: no stamps on disk, no push.
Each outcome (verification record plus its weight capture) is now
written to {root}/manifest.json the moment it is known, via one short
locked read-modify-write per checkpoint, so a killed run keeps every
verified/failed stamp it reached. The custom-weights legs persist the
same way; they still take passed_keys/baselines/base_captures from the
in-memory main loop. The backend push stays a single end-of-run push
(the backend replaces the whole manifest), with a new optional
--push-every N that also pushes after every N results. --no-push still
suppresses every push. JSON/text output, checkpoint-first selection,
and the shared-install clusters projection are unchanged.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
OwenPriceSkelly
force-pushed
the
smoke-test-incremental-manifest
branch
from
September 11, 2026 16:53
55bd6e9 to
7cd38fe
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
rootstock smoke-testaccumulated results in memory and wrote them tomanifest.jsononly once, after the last checkpoint and the custom-weights legs. Two 12 h Delta nightly runs on 2026-08-13 (SLURM 21119813, 21119858) hit their wall-time limit mid-run and left nothing: no stamps on disk, no push seen by the dashboard.Change
VerificationRecordplus its weight-file capture) is written to{root}/manifest.jsonas soon as it is known, in a short locked read-modify-write (_persist_outcome). A run killed by the scheduler keeps every verified/failed stamp it reached, and they ride along with the next successful push from that install.passed_keys,baselinesandbase_capturesfrom the in-memory main loop; that logic is untouched.update_and_push_manifestremains the single push.--push-every N: also push after every N recorded results, to bound how much a killed run leaves unpushed. Default 0 keeps today's one push.--no-pushsuppresses every push, periodic ones included. The nightly recipes are unchanged.--no-push, checkpoint-first selection and the shared-installclustersprojection (schema v6) are unchanged.Tests
New tests in
tests/cli/test_smoke_test.pysimulate a wall-time kill by raising aBaseExceptionfrom the verify stub mid-run and assert the manifest on disk already holds the earlier stamps (canonical loop, weight files, and custom legs), that a concurrent manifest write made during a verification survives, that the default run pushes exactly once, and the--push-every/--no-pushinteraction.Docs
docs/nightly-smoke-testing.mdnow describes when the manifest is written versus pushed, what a wall-time kill leaves behind, and--push-every.CLAUDE.mdusage line updated.🤖 Generated with Claude Code