Skip to content

Commit b31d07d

Browse files
committed
docs: clarify the supervisory runtime model
1 parent b2747d6 commit b31d07d

2 files changed

Lines changed: 78 additions & 26 deletions

File tree

README.md

Lines changed: 75 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,29 @@
55
<h1 align="center">Boatstack</h1>
66

77
<p align="center">
8-
Programmable supervisory control for software delivery.
8+
Programmable supervisory control for state-changing operators.
99
</p>
1010

1111
<p align="center">
1212
<strong>Alpha · active development · expect breaking changes</strong>
1313
</p>
1414

1515
Boatstack is a programmable supervisory runtime over state-changing operators.
16-
Software delivery is its first production domain: an agent can propose what
17-
happens next, while a deterministic kernel decides what is admissible, executes
18-
registered effects, verifies fresh evidence, and records a durable receipt.
16+
An agent, human, workflow, or service can propose what should happen next.
17+
Boatstack owns the control law: it decides what is admissible, checks authority,
18+
executes registered effects, verifies the resulting state, and commits
19+
supervisory state with a durable receipt.
1920

2021
```text
21-
agent intent
22-
23-
read-only observation → canonical snapshot → deterministic resolution
24-
25-
durable receipt ← postcondition verification ← admitted effect
22+
Operator proposes.
23+
Boatstack admits.
24+
The effect executes.
25+
Boatstack verifies and commits.
2626
```
2727

28+
Coding agents are one operator type. The kernel is not built around prompts,
29+
language models, or coding-agent semantics.
30+
2831
> [!WARNING]
2932
> Boatstack is alpha software for experimentation. The CLI, Control Program
3033
> ABI, configuration schema, generated skills, and state format may change
@@ -71,28 +74,55 @@ can discover the generated skills. See [Getting started](docs/getting-started.md
7174
for the lower-level CLI path and [Configuration](docs/configuration.md) for the
7275
repository policy schema.
7376

77+
## What Boatstack controls
78+
79+
| Concept | Meaning |
80+
| --- | --- |
81+
| **Control Program** | The complete executable control law: transitions, gates, authority requirements, recovery paths, objective rules, and marked states. The product-facing name for one complete program is a **Flow**. |
82+
| **Supervisory state** | The small durable state owned by the kernel: program identity, control mode, exact objective binding, revision, and recovery state. Domain state stays outside the kernel. |
83+
| **Objective** | External intent identified by an exact immutable revision and fingerprint. Changing intent requires an explicit control transition. |
84+
| **Operator** | The component that performs one admitted operation. It may be an agent, human-mediated command, workflow, service, or deterministic program. |
85+
| **Effect** | A registered state-changing operation with explicit capabilities and owned facets. |
86+
| **Evidence** | Fresh observation and verification facts used to decide whether a transition may commit. |
87+
88+
## Software delivery is the first domain
89+
90+
Boatstack is not a generic platform for every agent system. Its first concrete
91+
domain is software delivery, where StandardFlow governs repositories, plans,
92+
worktrees, tests, reviews, publication, updates, and recovery. Git and
93+
coding-agent concepts live in this domain layer, not in the general kernel.
94+
7495
## What ships today
7596

7697
Boatstack currently compiles 63 registered transitions into one executable
7798
control graph. The complete list is generated from the registry in the
7899
[transition catalog](docs/architecture/boatstack-v2-transition-catalog.md).
79100

101+
### Kernel
102+
103+
| Surface | Shipped functionality |
104+
| --- | --- |
105+
| **Programs and relation** | Domain-neutral programs, control instances, objective bindings, observations, operators, marked states, targeted and untargeted resolution, priorities, and prerequisite selection. One immutable fingerprint binds each program's executable semantics. |
106+
| **Admission and authority** | Typed capabilities and separate human, autonomy, repository-policy, and external-provider receipts. Programs declare their maximum capability surface but cannot grant themselves authority. |
107+
| **Transactions** | Prescriptions bind the exact control instance, state revision, program, objective binding, observation, transition, and authority. Apply rechecks that boundary before execution. |
108+
| **Verification and receipts** | Fresh postcondition verification, atomic state-and-receipt commits, immutable transition facts, and idempotent replay. |
109+
| **Recovery** | A durable effect attempt precedes execution. Interrupted or uncertain outcomes enter explicit recovery instead of blindly repeating an effect. |
110+
111+
### Software delivery
112+
80113
| Surface | Shipped functionality |
81114
| --- | --- |
82-
| **General kernel** | Domain-neutral programs, control instances, objective bindings, observations, capabilities, operators, verification, recovery, marked states, and receipts. The kernel does not require Git or a coding agent. |
83-
| **Control Programs** | One immutable program fingerprint binds executable semantics, objective contracts, resource ownership, capabilities, and transition IDs. |
84115
| **StandardFlow** | A first-party product-delivery Flow covering installation, repository attachment, configuration, objectives, planning, worktrees, build/test/review evidence, publication, cleanup, and recovery. |
85-
| **Deterministic supervisor** | Targeted and untargeted resolution, explicit accepted objectives, transition priorities, prerequisite selection, and typed `PRESCRIBED`, `CANDIDATE`, `FRONTIER`, `BLOCKED`, `REFUSED`, `UNRESOLVED`, and `TERMINAL` decisions. |
86-
| **Authority and capabilities** | Separate human, autonomy, repository-policy, and external-provider receipts. Programs declare a maximum capability surface but cannot grant themselves authority. |
87-
| **Transactional effects** | Prescriptions bind the exact state revision, program fingerprint, snapshot fingerprint, transition, and correlation. Apply rechecks that compare-and-swap boundary under a repository lock before any managed effect. |
88-
| **Durable state ownership** | Installation, program, control, and product state are separate facets. A transition fails closed if it attempts to mutate a facet outside its Kernel-owned policy. |
89-
| **Verification and receipts** | Fresh postcondition checks, revision-bound build/test/review evidence, immutable transition facts, idempotent replay, and privacy-safe JSONL event projections. |
90-
| **Recovery** | Restart-safe journals, reversible local mutations, explicit resume/rollback/escalation paths, and preserved unknown settlement for external effects. |
91116
| **Repository topology** | Embedded, detached, and linked-worktree identity; verified state transfer when a workspace is cut; cleanup only after proved landing or explicit abandonment. |
92117
| **Publication** | Preview, provider-authorized execution, observation, correction, and reconciliation. Boatstack does not infer provider authority from `gh` authentication and never grants merge authority. |
93118
| **Runtime updates** | Per-repository immutable runtime pins, checksum verification, atomic program-drift reconciliation, rollback, and multiple repository versions in one host store. |
94-
| **Safety guard** | One command-intent classifier for supported hosts. High-confidence destructive commands are denied and managed effects are routed through Kernel admission. |
95-
| **Integrations** | One versioned protocol shared by the CLI, RPC, MCP, Go SDK, Cursor, Codex, Claude Code, and Gemini CLI. Hosts do not maintain independent delivery state machines. |
119+
| **Safety guard** | One command-intent classifier for supported hosts. High-confidence destructive commands are denied and managed effects are routed through kernel admission. |
120+
121+
### Developer surfaces
122+
123+
| Surface | Shipped functionality |
124+
| --- | --- |
125+
| **Protocol and SDK** | One versioned protocol shared by the CLI, RPC, MCP, Go SDK, Cursor, Codex, Claude Code, and Gemini CLI. Hosts do not maintain independent delivery state machines. |
96126
| **Extensions** | Additive, checksum-bound subprocess extensions with declarative manifests, JSON-schema settings, bounded I/O, deadlines, capability checks, and exact-byte execution. |
97127
| **Analysis** | Passive retrospective analysis, generated Markdown and Mermaid catalogs, privacy-safe events, and checked Locus safety/liveness models. Formal whole-system claims remain advisory. |
98128

@@ -123,11 +153,24 @@ commands such as `plan-create`, `workspace-cut`, `record-test`, and `publish-pr`
123153
resolve and consume one exact prescription in the same invocation.
124154

125155
Untargeted resolution selects
126-
only a transition that advances the configured objective. Maintenance, correction,
127-
abandonment, provider actions, and merge authority are never invented as a way
128-
around a frontier. After an operation is selected, generated host drivers keep
129-
one command-scoped objective, repository, worktree, flow, actor, and authority
130-
context through every resolution, effect, recovery, and re-resolution.
156+
only a transition that advances the configured objective. Maintenance,
157+
correction, abandonment, provider actions, and merge authority are never
158+
invented as a way around a frontier. After an operation is
159+
selected, generated host drivers keep one command-scoped objective, repository,
160+
worktree, flow, actor, and authority context through every resolution, effect,
161+
recovery, and re-resolution.
162+
163+
## Objectives and control state
164+
165+
Objectives are external intent. Boatstack stores only an exact objective
166+
binding—identity, revision, and fingerprint—in supervisory state. A new prompt
167+
or command cannot silently reinterpret that state: binding, replacing, or
168+
clearing an objective is an explicit transition governed by the active Control
169+
Program.
170+
171+
Domain state remains outside the kernel. The kernel retains only the minimum
172+
state needed to control progress: program identity, control mode, objective
173+
binding, revision, and recovery obligation.
131174

132175
## Internals
133176

@@ -141,7 +184,8 @@ Boatstack separates inference, control, execution, and verification:
141184
│ versioned request
142185
┌──────────────────────────────▼───────────────────────────────┐
143186
│ General kernel │
144-
│ observe → relate → prescribe → admit → execute → verify │
187+
│ observe → relate → prescribe → admit │
188+
│ persist attempt → execute → verify → commit state + receipt │
145189
└───────────────┬──────────────────────────────┬───────────────┘
146190
│ │
147191
┌───────────────▼──────────────┐ ┌────────────▼───────────────┐
@@ -155,6 +199,11 @@ The kernel owns mechanism. A Control Program owns policy. The product calls a
155199
complete Control Program a **Flow**; the rules encoded by it are its **control
156200
law**. See the [general kernel boundary](docs/architecture/general-supervisory-kernel.md).
157201

202+
Boatstack deliberately uses ordinary systems primitives for runtime pinning,
203+
transactions, capabilities, versioning, and recovery. The distinguishing
204+
boundary is supervisory: operators may perform work, while a deterministic
205+
Control Program governs which observed state transitions may commit.
206+
158207
The current authoring boundary already includes:
159208

160209
- a strict JSON [Control Program ABI](docs/architecture/control-program-abi.md);
@@ -235,7 +284,7 @@ Every pull request that changes Boatstack adds an append-only release note. See
235284

236285
Boatstack is being built in public and is not ready to promise compatibility.
237286
The project is currently focused on making repository-authored Control Programs
238-
safe to load and execute without moving authority out of the Kernel.
287+
safe to load and execute without moving authority out of the kernel.
239288

240289
Issues and design feedback are welcome. Production stability, polished Flow
241290
authoring, and compatibility guarantees are not here yet.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### Explain Boatstack's supervisory runtime
2+
3+
The README now separates the general supervisory kernel from the software-delivery domain and explains Control Programs, Flows, objectives, operators, effects, evidence, and the state-and-receipt control loop.

0 commit comments

Comments
 (0)