Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
e7a7de4
Witness a call when its command ends, and sign the answer
1zeroone0 Sep 29, 2026
8ea6b3b
Block a process until its command ends, as the harness does
1zeroone0 Sep 29, 2026
7430236
Specify the record encoding in Lean: canonical, so a signature names …
1zeroone0 Sep 29, 2026
a125521
Prove the log's acceptance for every log size
1zeroone0 Sep 29, 2026
e2a11de
Name each call's process in its records, so the log holds the process…
1zeroone0 Sep 29, 2026
fbeb1b1
Drop the hash chain: a signature already fixes each record's author a…
1zeroone0 Sep 29, 2026
9aa3245
Make every window replayable from the log, and prove no tree outspend…
1zeroone0 Sep 29, 2026
a06b1f7
Skeleton: one type per noun, one signature per action, every body tod…
1zeroone0 Sep 29, 2026
07d6ca1
Give every noun its home in code, and write down the method as practi…
1zeroone0 Sep 29, 2026
f5b34de
Fill record: the Lean codec byte for byte, held to it by the differen…
1zeroone0 Sep 29, 2026
b3a35d6
Fill meter: the Lean definitions, held to them by the differential test
1zeroone0 Sep 29, 2026
c0252ab
Fill window: it only grows, and the log replays it as Lean does
1zeroone0 Sep 29, 2026
093e0f5
Fill bounded: a call returns its output whole or not at all
1zeroone0 Sep 29, 2026
f8a7d37
Fill log: keep and refuse as Lean's accept does, and verify signatures
1zeroone0 Sep 29, 2026
fe8a4ab
Spill output that is not text, so the window holds exactly what the l…
1zeroone0 Sep 29, 2026
aab9953
Fill the gateway and the wire: frames, spans, and Converse through curl
1zeroone0 Sep 29, 2026
0bb9318
Fill the signer, rights and roles: numbered records, attenuation, argv
1zeroone0 Sep 29, 2026
09aa4dc
Move test modules to the end of theirs, as clippy asks
1zeroone0 Sep 29, 2026
2def4b3
Say what the three artifacts are for: a conversation that shows what …
1zeroone0 Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.DS_Store
target/
.claude/
spec/.lake/
99 changes: 59 additions & 40 deletions CODE.md

Large diffs are not rendered by default.

281 changes: 281 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,8 @@ license = "Apache-2.0"

[lints]
workspace = true

[dependencies]
ed25519-dalek = "3.0.0"
serde_json = "1.0.151"
sha2 = "0.11.0"
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,10 @@ A **manifest** is one file that names a machine: kernel, task image, policy, VMM
What a job does, from manifest to first command:

1. The VMM boots the kernel with two read-only disks: the core (built by nix) and the task image.
2. The machine makes its key and sends its report; nothing runs until the log holds it.
2. init makes the boot's key, which never leaves it, and sends the report; nothing runs until the log holds it.
3. init, as root, loads the eBPF programs and compiles the policy into seccomp and Landlock.
4. init mounts the view: the task image as root, the core first on PATH, one descriptor per grant.
5. The harness spawns the root process: policy attached, an unprivileged uid, the shell.
5. init forks the harness, which spawns the root process: policy attached, an unprivileged uid, the shell.
Every child inherits the policy; no syscall loosens it, and no model process holds CAP_BPF.
6. The harness sends the engine the query and a system prompt rendered from what it mounted.
7. The model writes its first command.
Expand Down Expand Up @@ -158,5 +158,5 @@ The machine is the unit of scale. Work fans out three ways:
- eBPF records which programs start, which files are read, and each request to the engine.
- Keyed by cgroup: each action is traced to the command that caused it, however many processes it spawned.
- The log holds each boot's records, in order:
its report; per call an intent, a decision, and a witness if allowed; its exit.
its report; per call an intent, a decision, and a witness if allowed; its exit, carrying the answer.
- The console reads it live, during a job and after.
5 changes: 5 additions & 0 deletions spec/Cead.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import Cead.Codec
import Cead.Record
import Cead.Log
import Cead.Window
import Cead.Meter
Loading