Skip to content

docs: bring the documentation back in line with the code - #609

Merged
vladimirrott merged 4 commits into
mainfrom
docs/drift-sweep
Oct 19, 2026
Merged

vladimirrott merged 4 commits into
mainfrom
docs/drift-sweep

Conversation

@vladimirrott

Copy link
Copy Markdown
Member

Summary

I had every maintained page reviewed against the source, verified each finding in the code myself, and fixed 30 documentation files. The ones that change what a reader would do:

  • docs/vm-daemon-setup.md told you to write the vsock token into your own home. The packaged daemon runs as sysknife with HOME /var/lib/sysknife, so it never read that file, and the page never switched the daemon to vsock at all. It now writes /var/lib/sysknife/.config/sysknife/token (owned by sysknife, mode 0600) and adds the SYSKNIFE_LISTEN_URI=vsock://:9734 drop-in. The same page said make install handles rpm-ostree on its own; it refuses until you pass the /etc overrides, and still stops at Fedora Atomic: make install has never completed, and it fails halfway #301.
  • docs/mcp.md: sysknife_execute halts on any status but succeeded, needs_reboot and rolled_back included, not only on failed or unknown.
  • SECURITY.md: the intent screen matches credential values, not bare words such as "password", and the minimum role comes from the action's risk tier, not a hand-written match.
  • docs/automatic-rollback.md called signed status transitions future work. They exist, and audit verify checks them on SQLite. It also gains the one case where the daemon skips a rollback on purpose.
  • docs/security/audit-advisories.md listed 20 accepted advisories. Two remain: RustSec withdrew the gtk-rs set on 2026-08-14 and the other eight crates left the lockfile.
  • docs/introduction.md, docs/quickstart.md: the daemon runs as the sysknife system user with scoped sudo and polkit grants, not as root. The sample plan now matches what print_plan prints.
  • Contributor docs: clippy everywhere now carries --all-features --all-targets --locked as CI runs it; npm run tauri (no such script), the semantic PR-title check (no such workflow) and the e2e PR label (the smoke job is dispatch-only) are gone; the story harnesses' default set is described as it is in the scripts.

Smaller fixes cover docs/architecture.md (vsock and the CLI/MCP path, the sysknife-daemon-test crate), docs/ubuntu-action-reference.md (SnapInstall hold path, UfwStatus numbered), docs/distro-support.md (helper and grant counts, the gate on hard-fenced reads, the Blocked tier), docs/typed-actions.md, docs/cli.md (Ctrl+C exits the REPL), the release docs, both user-story documents, ROADMAP (two shipped items removed), and dated notes on ADR 0002 and 0004.

Two non-doc changes ride along:

  • Cargo.lock: event-listener 5.4.1 → 5.4.2 for RUSTSEC-2026-0221. Unlike every other accepted warning it reached the daemon and the CLI, through sqlx-core. cargo audit reports it as unsound rather than a vulnerability, so CI stayed green. cargo audit now shows only glib and proc-macro-error, both reachable from the shell alone.
  • A doc comment in dispatcher.rs named credential_argv_position, renamed earlier to credential_argv_spec.

Related Issue

None filed; this is a maintenance sweep ahead of 0.26.0.

Validation

  • Tests added or updated: none needed; no behaviour changes.
  • Documentation updated: this PR.
  • Security impact considered: the event-listener bump removes the only accepted advisory on the trust boundary.
  • Trust boundary preserved (daemon remains the only privileged executor).
  • CI passes: pending on this head.

Locally, scripts/ci-local.sh --no-postgres passed fmt, clippy, doc, the frontend, cargo audit, markdownlint, both link checks, yamllint, shellcheck and the release tests. The claim screen caught a "26-story" figure I had written, which no evidence file backs, and I replaced it with the script's own default. The one nextest failure was #604, the load-dependent planning-timeout flake, which is unrelated.

Notes for Reviewers

I left dated documents as history: the red-team report, the 2026-04-25 gap analysis tables and ADR 0001. The Ubuntu story audit gained a note saying its remediation has since landed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UpyrhbDTW1gBwzGAC44GYU

vladimirrott and others added 3 commits October 13, 2026 14:00
A review of every maintained page against the source found drift in 30
documentation files. The fixes that change what a reader would do:

- vm-daemon-setup.md put the vsock token where the daemon never reads it
  and never switched the daemon to vsock; it also said make install
  handles rpm-ostree on its own, when it refuses without /etc overrides.
- mcp.md said execution halts on failed or unknown; it halts on any
  status but succeeded.
- SECURITY.md described the intent secret screen and the role mapping as
  they were before 0.25.0.
- automatic-rollback.md called signed status events future work.
- audit-advisories.md listed 20 accepted advisories; two remain.
- introduction.md and quickstart.md said the daemon runs as root.
- Contributor docs gave clippy without --all-targets, a missing
  `npm run tauri` script, a PR-title CI check and an e2e PR label that
  do not exist, and a 7-story default that is now a larger curated set.

Two non-doc changes ride along. Cargo.lock moves event-listener to 5.4.2
for RUSTSEC-2026-0221, which reached the daemon and the CLI through
sqlx-core; cargo audit reported it as an unsound warning, so CI stayed
green. A doc comment in dispatcher.rs named credential_argv_position,
renamed to credential_argv_spec.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UpyrhbDTW1gBwzGAC44GYU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UpyrhbDTW1gBwzGAC44GYU
@vladimirrott
vladimirrott merged commit 1548522 into main Oct 19, 2026
13 checks passed
@vladimirrott
vladimirrott deleted the docs/drift-sweep branch October 19, 2026 18:31
vladimirrott added a commit to bferanmi806-sketch/sysknife that referenced this pull request Oct 19, 2026
Resolves the one conflict in docs/testing/user-stories.md: lacs-project#609 rewrote the
Ubuntu story sentence to carry the live-VM figure, and this branch moved the
count to 99. The result keeps both: "a further 99 (79 of them in the recorded
live-VM runs)".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UpyrhbDTW1gBwzGAC44GYU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant