Verified: Function blocks, libraries, and tasks
Each claim the Function blocks, libraries, and tasks page makes, with the tests that
prove it in the last green CI run: 6 of 18 verified, 2 with no test yet.
The claims live in docs/claims/blocks-and-tasks.yaml.
Last green CI run 16 Oct 2026, 14:48 UTC on c7618d3 · all runtime claims
TASK-001 partly verified
Library files (TYPE, FUNCTION, FUNCTION_BLOCK declarations) passed as Options.Libraries compose ahead of the program, and a FUNCTION_BLOCK instance keeps its own state per instance across scans.
- pass
TestLibrariesUserFBFromFBDinruntime - pass
TestLadderLibraryProjectRunsininternal/project
TASK-002 partly verified
A user FUNCTION_BLOCK instantiates from an FBD diagram exactly like a built-in block, and a .ld or .fbd file holding FUNCTION_BLOCKs is a library the same as a .st one.
- pass
TestLibrariesUserFBFromFBDinruntime - pass
TestLadderLibraryComposesininternal/project - pass
TestComposeGraphicalProgramUsesLadderLibraryincmd/naut
TASK-003 partly verified
The tooling composes libraries byte-identically to the runtime: naut compose, check, test and pull see the same prelude the runtime boots with.
- pass
TestComposeMatchesTheRuntimeincmd/naut - pass
TestCheckLibDirCleanincmd/naut - pass
TestTestLibDirincmd/naut - pass
TestLibDirComposesininternal/project
TASK-004 verified
A block's VAR section persists across scans, and a warm online edit carries instance state across the swap by name and type (a PI keeps its integral).
TASK-005 partly verified
In a manifest project, any .st, .ld or .fbd file with no PROGRAM in the project root or anywhere under lib/ (at any depth) is a library, and all of them compose into one prelude ahead of every task.
- pass
TestLibDirComposesininternal/project - pass
TestLadderLibraryComposesininternal/project - pass
TestCheckLibDirCleanincmd/naut - pass
TestBuiltControllerActivatesWarmincmd/naut
TASK-006 partly verified
The prelude order is fixed: .st libraries first, then transpiled .ld/.fbd ones, each group sorted by project-relative path.
- pass
TestLibDirComposesininternal/project - pass
TestLadderLibraryComposesininternal/project - pass
TestComposeJSONincmd/naut
TASK-007 verified
A block declared in both the root and lib/ is the same duplicate-name error as declaring it in two root files.
- pass
TestLibDirDuplicateAcrossRootAndLibininternal/project
TASK-008 verified
lib/ holds libraries only: a file under lib/ that declares a PROGRAM is an error naming the file.
- pass
TestLibDirRefusesAProgramininternal/project - pass
TestCheckLibDirRefusesAProgramincmd/naut - pass
TestComposeRefusesAProgramInLibincmd/naut
TASK-009 partly verified
No other folder composes: hmi/, tags/, deploy/, node_modules/ and any other subdirectory are ignored however many .st files they hold.
- pass
TestOtherSubdirsStayIgnoredininternal/project - pass
TestLibDirComposesininternal/project - pass
TestComposeMatchesTheRuntimeincmd/naut
TASK-010 verified
naut build ships lib/ inside the binary, and errors in library files are named by their project path (lib/motor.ld).
- pass
TestBuildShipsLibDirincmd/naut - pass
TestLibDirErrorsUseProjectPathsininternal/project
TASK-011 partly verified
Several programs run as tasks at their own rates against one shared tag store, each with its own measured-dt tag, with no calling between them; the main task owns field I/O.
TASK-012 verified
Each scan copies its program's external tags in, executes privately and commits what changed as one unit, so a reader never sees a scan half-done and a fast task never waits behind a slow one.
TASK-013 no test yet
Two tasks writing the same tag resolve by commit order (last wins).
TASK-018 verified
Tags are all that tasks share: a program's own variables, its function-block instances among them, are private to it. Naming another task's instance is a compile error that says to publish the value to a tag in the owner, and a reader sees that tag as of the owner's last committed scan.
- pass
TestCrossTaskInstanceIsDiagnosedinlang/conformance(6 of 6 passed) - pass
TestCrossTaskPublishedInstanceOutputinlang/conformance - pass
TestCheckGoldenCrossTaskInstanceincmd/naut - pass
TestCrossTaskInstanceDiagnosticininternal/lsp
TASK-014 partly verified
Each additional task's health is reported in Stats().Tasks and rendered in the built-in dashboard and the HMI kit's ScanDiagnostics.
- pass
TestTasksinruntime
TASK-015 partly verified
A task's cpu: pins its thread to a core and priority: runs it under SCHED_FIFO (Linux); the placement is reported in the stats.
TASK-016 partly verified
A placement request the OS refuses is logged and shown as REFUSED on the task's row, and the task runs normally rather than silently falling back.
TASK-017 no test yet
Pinning alone on a stock kernel makes a fast task worse; it should be used together with an isolated core or a real-time priority.