Verified: Program history
Each claim the Program history page makes, with the tests that
prove it in the last green CI run: 3 of 16 verified, 1 with no test yet.
The claims live in docs/claims/program-history.yaml.
Last green CI run 16 Oct 2026, 14:48 UTC on c7618d3 · all runtime claims
PH-001 partly verified
GET /api/program/history serves every commit that touched the project (author, date, subject and the full diff) from the controller itself, with the built sha the deployed baseline corresponds to.
- pass
TestProgramHistoryEndpointinserver - pass
TestCaptureininternal/vcs
PH-002 partly verified
The response's programs list is the live layer per task (task, pou, hash, dirty), so one read shows whether online edits have drifted from what CI shipped.
- pass
TestProgramHistoryEndpointinserver
PH-003 partly verified
A build from an uncommitted tree is flagged builtDirty: true rather than passed off as clean lineage.
- pass
TestCaptureininternal/vcs
PH-004 partly verified
naut build snapshots the project's git history into the emitted binary, and the deployed controller serves it with no git binary, no .git directory and no network.
- pass
TestBuildEmbedsHistoryincmd/naut
PH-005 no test yet
naut run in a checkout captures history live from the repo on first request.
PH-006 verified
The endpoint never fails for lack of provenance: outside a repo it serves an empty history.
- pass
TestProgramHistoryEndpointinserver - pass
TestCaptureNoRepoininternal/vcs
PH-007 verified
Snapshots are stored git-style, so files dedupe on git's blob ids (an unchanged file costs one blob across commits).
- pass
TestCaptureininternal/vcs
PH-008 verified
POST /api/program/activate {sha} rebuilds every task's program source as it was at that commit, with libraries composed ahead as boot composes them, and warm-swaps each one.
- pass
TestActivateinserver - pass
TestSnapshotComposesSourcesininternal/vcs - pass
TestActivateImplicitTagsinserver - pass
TestActivateEveryTaskinserver - pass
TestBuiltControllerActivatesWarmincmd/naut
PH-009 partly verified
Activation is gated like any online edit: it needs online-edits: true and the write token if one is set.
- pass
TestActivateRejectionsinserver
PH-010 partly verified
Retained state survives an activation (migrated by name and type) and what cannot carry over is reported per task in resets.
- pass
TestSwapWarmCarriesRetainedStateinruntime
PH-011 partly verified
Activation is all or nothing: every source compiles before any swap, so a controller is never left running half of two revisions, and a commit that no longer compiles is rejected whole.
- pass
TestActivateRejectionsinserver
PH-012 partly verified
Each program keeps its one-step rollback after an activation, and activating built returns to exactly what CI shipped.
- pass
TestActivateinserver
PH-013 partly verified
An activation follows the online-edit restart rule: without a retain store a restart boots the binary's embedded programs; with one, a restart of the same build keeps the activated programs and a deploy of a different build replaces them.
- pass
TestOnlineEditDoesNotSurviveARestartininternal/project - pass
TestOnlineEditSurvivesARestartOfTheSameBuildinruntime - pass
TestNewDeployReplacesARetainedOnlineEditinruntime
PH-014 partly verified
After an activation the history reports active: <sha>, and a hand edit or rollback clears that claim.
- pass
TestActivateinserver
PH-015 partly verified
A commit that changed topology (added a task, renamed one) is refused with a 409 naming the difference.
- pass
TestActivateRejectionsinserver
PH-016 partly verified
Activation covers logic only: the cold plane (tasks, tags, drivers, retain and redundancy wiring) stays as the running manifest booted it.
- pass
TestActivateRejectionsinserver