bench(lab): report where a campaign stands from its run tree - #275
Closed
luuuc wants to merge 1 commit into
Closed
Conversation
A campaign runs unattended for hours and is picked up later, often by a session with no memory of it. The retired instrument answered "where does this stand" with a page assembled from a results tree, two state files, a banked log and a ledger, plus a hand-maintained resume file that goes stale by construction. A stale resume line is worse than none, because it looks current. sense-lab status derives everything from the run tree. Position is the furthest phase of the latest cycle whose artifact is on disk and the first whose artifact is not, so nothing hand-maintained can disagree with what is there. The page carries the banner saying so. The uncomfortable rows lead rather than being summarised away: incomplete cells with their burned and unusable arms named, orphaned run directories that spawned and recorded no terminal state, parked repositories, and spend against the ceiling. A status that shows only progress is a status nobody trusts twice. Read returns a struct and Render takes one; the only consumer of that string is a printer, and nothing else in the tree imports the package. Parsing your own report is how a display format silently becomes a data contract. Deriving position found that indexing is per repository rather than per cycle: looking for the index under every cycle would report every re-entered repository as waiting on a scan that already happened.
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
A campaign runs unattended for hours and is picked up later, often by a session with no memory of it. "Where does this stand" has to be answerable in one command.
The retired instrument answered it with a page assembled from a results tree, two state files, a banked log and a ledger — plus a hand-maintained resume file. That file goes stale by construction, and a stale resume line is worse than none because it looks current.
Summary
sense-lab statusderives the whole page from the run tree. Nothing is hand-maintained, so nothing can disagree with what is on disk.Changes
Readreturns a struct,Rendertakes one, and the only consumer of the string is a printer. A test asserts that nothing else in the tree imports the package.Recorded during the build
Indexing is per repository, not per authoring cycle. Found while deriving position: looking for the index under every cycle would report every re-entered repository as waiting on a scan that already happened — a resuming session's worst possible input, and it would have looked plausible on the page. The index artifact sits beside the cycles.
Banked cells report the cycle, not the model or the spread. Nothing on disk carries either yet: a run records its command, its wall and its arm, not its model, and there is no structured harvest record. Those columns land when that record does.
Test Plan
make cigreen: build, tests, per-file coverage floor with no new exception, zero complexity suppressions, lint clean.