OXYGENHUB
# 5d695d869fbf spectra / docs / plan.md
2.7 KiB · Markdown · last changed Identities instead of tokens: init, owned agents as delegates, verified replay of identities, request authentication, one writer (#4) 2 days ago renderedsource blame history raw

Sprint 1 plan: Spectra 0.1, Talk

Each loop iteration: pick the first unchecked item, implement it with tests, run the gated checks, commit with oxy, tick the box here with a one-line note, and commit again. Update docs/spec.md (and its changelog) whenever behaviour the spec describes changes. If an item cannot be finished in two iterations, note why under it and move on. The issues are on https://oxygenhub.io/projects/andymccall/7.

Rules

  • Never run git init in this directory or push this project anywhere but its oxygenhub remote. Commit with OXY_HOME=~/.oxy-agents/claude oxy commit -m "..." PATHS.., never with Andy's own key.
  • Tests are hermetic: a temporary data directory, a temporary socket, port 0; never ~/.local/share/spectra, ~/.config or the network.
  • Gate every commit on make check (changelog, fmt, clippy with warnings as errors, tests).
  • Every code change adds a CHANGELOG.md line under ## Unreleased, or sets NO_CHANGELOG=1.
  • Never weaken a security goal of spec §5 to make a test pass.
  • Never commit or push anything under docs/prompts/ (Andy's prompts; ignored in .oxyignore). Name the paths in every commit.
  • Never act as Andy: owner-only steps (delegating to an agent key, the acceptance run) wait for him.

Items

  • #1 Project skeleton in Oxygen's shape — done 2026-11-02: workspace, deps/oxygen pinned, make check, deps-check (212 crates, all vendored).
  • #2 CI on OxygenFlow — done 2026-11-02: run #1 passed fmt, clippy, test, build with no image rebuild.
  • #3 The ledger — done 2026-11-02: chain, frozen envelope, HLC, signed checkpoints every 256 events, verify/check/rebuild; append 0.15 ms (release), 10,000 random events with rebuild and verify 1.3 s.
  • #4 Identities instead of tokens — done 2026-11-02: init, agent add (waits for the delegation), list, disable, identity show/refresh; Principals replay in verify; Authenticator (window, nonce, uid); write lock. Checked against the real oxy identity delegate add. The socket and its SO_PEERCRED arrive with #7, which uses the Authenticator.
  • #5 Projects, presence and sessions
  • #6 Channels, threads, messages, inbox and search
  • #7 Tuner: MCP over Streamable HTTP
  • #8 The 0.1 tools
  • #9 The stdio shim
  • #10 Radar
  • #11 JSON API and spectra-api types
  • #12 Human CLI
  • #13 Acceptance (with Andy)

Log

  • 2026-11-02 plan created; sprint adjusted to spec Draft 0.3 (identities and the ledger).
  • 2026-11-02 #1 and #2 done (CI green on run #1); #3 done. Root disk was full: build trees go to /mnt/development/spectra-target (CARGO_TARGET_DIR).
  • 2026-11-02 #4 done. Found and fixed while testing: a signed event's actor was not checked against its signer.