Verified: Online edits
Each claim the Online edits page makes, with the tests that
prove it in the last green CI run: 12 of 12 verified.
The claims live in docs/claims/online-edits.yaml.
Last green CI run 16 Oct 2026, 14:48 UTC on c7618d3 · all runtime claims
OE-001 verified
A warm swap carries retained state (integrators, timers, counters) across by name and type, and reports what could not carry over (new variables, changed types) as resets.
OE-002 verified
A program that fails to compile leaves the running program untouched, so a typo cannot fault the controller.
OE-003 verified
Online edits are off by default: a controller refuses a pushed program unless online edits are enabled for it (server.Options{OnlineEdits: true}).
OE-004 verified
With a token configured, tag writes and online edits require it while reads (and naut pull) stay open.
OE-005 verified
Without a retain store a restart reverts to the program the binary embeds. With retain: configured, online edits survive a restart of the same build; a deploy of a different build replaces them (the edit is discarded, logged and named in retainDiscardedEdits, its source kept in the store under discardedPrograms), so committing the program to git is the only way an edit becomes permanent.
- pass
TestOnlineEditDoesNotSurviveARestartininternal/project - pass
TestOnlineEditSurvivesARestartThroughTheStoreinruntime - pass
TestOnlineEditSurvivesARestartOfTheSameBuildinruntime - pass
TestNewDeployReplacesARetainedOnlineEditinruntime - pass
TestBuildContainingTheEditClearsTheRetainedEntryinruntime - pass
TestRetainedEditWithoutABaseIsDiscardedinruntime
OE-007 verified
An online edit can be rolled back, restoring the program that ran before it.
OE-008 verified
naut pull --host writes each running program back into the workspace file that declares its POU (a new program lands in <POU>.st or <POU>.fbd); only program files are rewritten, generated type files are never touched.
OE-009 verified
naut pull --check reports drift in any of the controller's programs and exits non-zero, so CI can fail on un-pulled edits.
- pass
TestPullMultiTaskincmd/naut
OE-010 verified
A download sends the program's composition: the project's library prelude (PROGRAM-less .st files verbatim, then .ld/.fbd libraries transpiled to ST) followed by the program file as written, and naut compose prints it, with --json splitting prelude, program, POU and library paths.
OE-011 verified
Composition is a single definition shared by the runtime, the language server, download and pull, so a program round-trips losslessly.
OE-012 verified
Programs are addressed by POU name: GET /api/program lists every program, a PUT routes by the POU in the submitted source, ?pou= and ?task= select one for GET and rollback.
OE-013 verified
Retained state carries across a swap of a non-main task's program the same way as the main task's.
- pass
TestTaskProgramOnlineEditCarriesRetainedStateinserver