Specs
On Fri, 25 Sep 2026, by @lucasdicioccio, 432 words, 0 code snippets, 19 links, 0images.
Specs
The specs/ directory holds design sketches: opinionated documents to react
to, some of which then got built. Each starts with a Status line saying
what of it has shipped, which is reproduced here. These pages are generated
from the salmon repository — the repository
is the canonical source, and may be ahead of what is published here.
- Advanced querying: targeting
runat a subset of nodes — Status: implemented.query show/query plan/query extract-directive, - Future work: what a running world knows, and who gets to see it — Status: ideas, not a plan. Four notes taken after trying
run servewith the - GCP Support Plan for Salmon — Status: phase 1 (gcloud-first) is implemented through all ten steps of §15:
- A generic salmon server:
servebehind an API, with clients that show the DAG — Status: milestones 1 to 8 below are implemented (--jsonvia - Multi-user / privilege separation: running parts of a graph as a lesser identity — Status: draft / not implemented. This is a design sketch to react to, not a
- Pinning an application’s traffic to a chosen interface via dedicated network namespaces — Status: draft / not implemented. This is a design sketch to react to, not a
- Per-node state machines: a supervised tree over a folded graph — Status: milestones 1 to 9 below are implemented, each marked landed with
- What is left of
specs/per-node-state-machines.md— Status: living plan, update as work continues. As of this writing every - HA Postgres + bouncer + app-instance + LB control plane — Status: draft / not implemented as a whole. Of the phased plan, only the
- Postgres with automatic failover: salmon provisions, Patroni decides — Status: draft / not implemented. A design sketch to react to, not a committed
- Two-node Postgres with salmon-driven switchover and failover — Status: implemented — phases 1 to 6 of the phased plan and the disaster
- Pull mode: a
servethat fetches its own declarations — Status: milestones 1 to 7 below are implemented (Salmon.Actions.Follow, - Local qemu VMs + tap/bridge networking for recipe testing — Status: phases 1 to 5 of the phased plan are implemented:
- Implementation progress:
specs/qemu-test-vms.md— Status: living doc, update as work continues. Companion to - Salmon as PID 1: an init system whose unit graph is a real DAG — Status: the init system itself is not implemented — milestones 1 to 6
- Property-based testing for
run serve— Status: v1 implemented, insalmon-ops-recipes/test/Test/ServeModelSpec.hs. - Lighter-weight process isolation for services: systemd hardening, bubblewrap, firejail — Status: draft / not implemented. This is a design sketch to react to, not a
- Terraform integration: consuming (and optionally driving) existing Terraform-managed infra — Status: draft / not implemented. This is a design sketch to react to, not a