Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ctos harness map

A reliable kernel session is:

Shared understanding + domain + outer harness.

That three-part split is common harness-engineering language (prior art: architecture.artof.link). On ctos it is not a product name. It is a map for this repo.

Shared understanding

The session’s reviewable model of intent and state:

  • Vision, architecture, ADRs, roadmap
  • Honesty ledger (what we claim vs what we probed)
  • Daily briefs and random-thoughts (handoff, not source of truth)

If a claim is only in chat, it is not shared understanding.

After M9, shared understanding also names the three pillars (antifragility, security, performance). A “secure” or “faster” sentence without a ledger row is not shared understanding.

Domain

The thing that is allowed to decide what is true about the machine:

  • Kernel source and the custom AArch64 target
  • QEMU virt (and later real hardware, if probed)
  • Kernel ELF loaded by -kernel
  • CPU, UART, interrupt, and memory behavior

Agents interpret. The domain (a build, a QEMU probe, a test) decides. Do not “confirm boot” from a README sentence.

Outer harness (six layers, kernel-scaled)

LayerOn ctosPrevents
GuidesAGENTS.md, .cursor/rules/, .cursor/skills/ctos-*Out-of-scope work (wrong crate era, shop content, GitLab SOPs)
Sensorsscripts/qemu-smoke.sh, cargo test semihosting exit, GHA smoke.yml, optional DockerRounding “source exists” up to “it boots”
LoopOne milestone → one branch → one GitHub PRSprawling PRs that mix UART, paging, and docs rewrites
Memoryresearch/ vaultsSession amnesia; stuffing raw chat into the next prompt
PermissionsAuthor ≠ merger (artofdream vs cursor[bot]); MRC writes COMMENT; no GitHub self-APPROVE (ADR-002)Same-login stamp counted as a second review
ObservabilityHonesty ledger + PR text that lists probed vs UnknownStatus theater

Fail closed: if QEMU was not run, boot status is Unknown. Do not write Verified.