docs: the security model, in one place, and the README brought up to the code #160

Merged
admin merged 3 commits from docs/security-model into dev 2026-10-10 00:08:35 +00:00
Owner

For #22 ("Confidentiality: requesters send data to strangers. Document what is and is not protected") and #91 (an independent review of how private data is sealed needs one place that states the claims).

Adds docs/security-model.md and links it from the root README.md and SECURITY.md. No code changes, and apps/sisyphusd/README.md is not touched.

The document describes the code on dev as it is, a pool of invited nodes (V0), and covers:

  • The parties and what each is trusted with: owner/coordinator, workers, clients, storage followers, a node's local user and the desktop app, an agent on the MCP server and what each of its flags does and does not hold it to, model services, pinning services, relays, the gateway.
  • Identity and admission: node keys, TLS with both ends identified, roles, invitations, removal, re-keying the private swarm.
  • Data confidentiality: what a plain job exposes and to whom; private jobs, who holds the key and where it is kept, what is not sealed, determinism and what it leaks, the record's commitments; the desktop's one key for all private files and jobs; attachments in a chat.
  • Result integrity: replication, spot checks, what neither catches, and what an unsigned record does and does not show.
  • Running other people's work: what the container workload sets and what it leaves to the job's submitter, read from packages/runtime/container.go.
  • Storage and availability: pins, garbage collection, copies, what is lost with the coordinator's disk, the gateway.
  • A table of what is not protected against today, and what #22 and #19 would have to add.
  • For a reviewer of the sealing: the exact construction with file references, what is claimed, and questions worth asking.

Claims carry file and function references. Where the daemon's README and the code differ the document follows the code; the README is left as it is.

It is longer than the ten minutes aimed for, about 4,900 words with the tables.

For #22 ("Confidentiality: requesters send data to strangers. Document what is and is not protected") and #91 (an independent review of how private data is sealed needs one place that states the claims). Adds `docs/security-model.md` and links it from the root `README.md` and `SECURITY.md`. No code changes, and `apps/sisyphusd/README.md` is not touched. The document describes the code on `dev` as it is, a pool of invited nodes (V0), and covers: - **The parties and what each is trusted with**: owner/coordinator, workers, clients, storage followers, a node's local user and the desktop app, an agent on the MCP server and what each of its flags does and does not hold it to, model services, pinning services, relays, the gateway. - **Identity and admission**: node keys, TLS with both ends identified, roles, invitations, removal, re-keying the private swarm. - **Data confidentiality**: what a plain job exposes and to whom; private jobs, who holds the key and where it is kept, what is not sealed, determinism and what it leaks, the record's commitments; the desktop's one key for all private files and jobs; attachments in a chat. - **Result integrity**: replication, spot checks, what neither catches, and what an unsigned record does and does not show. - **Running other people's work**: what the `container` workload sets and what it leaves to the job's submitter, read from `packages/runtime/container.go`. - **Storage and availability**: pins, garbage collection, copies, what is lost with the coordinator's disk, the gateway. - **A table of what is not protected against today**, and what #22 and #19 would have to add. - **For a reviewer of the sealing**: the exact construction with file references, what is claimed, and questions worth asking. Claims carry file and function references. Where the daemon's README and the code differ the document follows the code; the README is left as it is. It is longer than the ten minutes aimed for, about 4,900 words with the tables.
Author
Owner

Since this was opened: the image-name fault it described is fixed (#161) and the --images list now covers graph steps and refuses ask_planner; workers' standing (#159) is described; and the places where the daemon's README had fallen behind the code, found while writing this, are corrected in the second commit. The rest of what it found is tracked in #162.

Since this was opened: the image-name fault it described is fixed (#161) and the `--images` list now covers graph steps and refuses `ask_planner`; workers' standing (#159) is described; and the places where the daemon's README had fallen behind the code, found while writing this, are corrected in the second commit. The rest of what it found is tracked in #162.
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Sisyphus/Sisyphus#160