Architecture¶
This page is for contributors and maintainers working on syslet itself, not for end users writing specs. It maps the packages a spec's data flows through, from raw JSON to a running container.
Supporting packages:
internal/age— derives an age identity from the host's SSH key (for secret decryption).internal/sops— wraps the SOPS decrypt library.internal/util— shared low-level helpers (hashing, filename generation).- Test-only packages (fakes and test harnesses, not part of the runtime):
internal/podman/podmantest,internal/systemd/systemdtest,test/integration/systest,test/log,test/oplog.
Plan and apply¶
internal/syslet.BuildPlancomputes anApplyPlan, every operation an apply would run, without changing the host.--diffprints it. When the specs or the host state don't allow a plan, it returns aPlanErrorlisting why, instead of a plan.internal/syslet.Applyexecutes anApplyPlanand returns anApplyReport, the planned result of every unit with the failed ones marked as errors. The plan itself is left unchanged.
See How an apply works for the phase ordering and why planning and applying are split, and Safety mechanisms for the validation stages.