docs: architecture v2, internal maintainer docs, and error-handling guide - #858
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe PR expands architecture and internal documentation, adds embedded crate pages, updates error and CI guidance, marks completed specifications as shipped, corrects references, documents licensing, and removes author metadata from two spike documents. ChangesDocumentation overhaul
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related issues
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
Comment |
There was a problem hiding this comment.
Lets omit this for now.
|
Addressed the review — force-pushed:
Left |
10bae89 to
4f8d861
Compare
|
Follow-up per the latest notes:
Git tracks it as a rename, so history is preserved. |
4f8d861 to
e27a235
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
docs/ci-strategy.md (1)
32-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPrefer a repository-relative link for
CONTRIBUTING.md.Linking directly to
mainmakes this document resolve against potentially different guidance than the version being reviewed, especially for release branches or forks. Use a relative link such as[CONTRIBUTING.md](../CONTRIBUTING.md)if the documentation site supports it.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ci-strategy.md` at line 32, Update the CONTRIBUTING.md link in the CI strategy documentation to use a repository-relative path such as ../CONTRIBUTING.md instead of the main-branch GitHub URL, preserving the existing link text.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/internal/session-domain-diag.md`:
- Around line 121-130: Reconcile the VM transport description in the Mermaid
flow and surrounding bullets with the authoritative contract in
docs/architecture.md: describe guest minimald as serving SSH on a vsock port,
and minvmd as bridging the host Unix socket to that vsock endpoint rather than
proxying a guest Unix socket. Keep the Minimal → minvmd → minimald → Session
flow while making the socket types and bridge responsibility explicit.
---
Nitpick comments:
In `@docs/ci-strategy.md`:
- Line 32: Update the CONTRIBUTING.md link in the CI strategy documentation to
use a repository-relative path such as ../CONTRIBUTING.md instead of the
main-branch GitHub URL, preserving the existing link text.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 20c22c87-7b24-47b3-b564-243f59aaa803
📒 Files selected for processing (25)
docs/arch/minvmd.mddocs/arch/sessions-composition.mddocs/architecture.mddocs/ci-strategy.mddocs/error-handling.mddocs/internal/README.mddocs/internal/licensing.mddocs/internal/session-domain-diag.mddocs/rust-coding-standards.mddocs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.mddocs/specs/01-spec-minvmd-host-daemon/architecture.mddocs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.mddocs/specs/02-spec-minvmd-linux-kvm/architecture.mddocs/specs/03-spec-networking/03-spec-networking.mddocs/specs/03-spec-networking/architecture.mddocs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.mddocs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.mddocs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.mddocs/specs/07-spec-installer/07-spec-installer.mddocs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.mddocs/specs/08-spec-vm-ext4-volume/architecture.mddocs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.mddocs/specs/09-spec-minvmd-resource-monitoring/architecture.mddocs/spikes/2026-06-20-wireguard-implementation.mddocs/spikes/2026-06-21-gvproxy-attachment.md
💤 Files with no reviewable changes (2)
- docs/spikes/2026-06-21-gvproxy-attachment.md
- docs/spikes/2026-06-20-wireguard-implementation.md
There was a problem hiding this comment.
Caution
Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 1
🧹 Nitpick comments (1)
docs/ci-strategy.md (1)
32-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPrefer a repository-relative link for
CONTRIBUTING.md.Linking directly to
mainmakes this document resolve against potentially different guidance than the version being reviewed, especially for release branches or forks. Use a relative link such as[CONTRIBUTING.md](../CONTRIBUTING.md)if the documentation site supports it.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/ci-strategy.md` at line 32, Update the CONTRIBUTING.md link in the CI strategy documentation to use a repository-relative path such as ../CONTRIBUTING.md instead of the main-branch GitHub URL, preserving the existing link text.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/internal/session-domain-diag.md`:
- Around line 121-130: Reconcile the VM transport description in the Mermaid
flow and surrounding bullets with the authoritative contract in
docs/architecture.md: describe guest minimald as serving SSH on a vsock port,
and minvmd as bridging the host Unix socket to that vsock endpoint rather than
proxying a guest Unix socket. Keep the Minimal → minvmd → minimald → Session
flow while making the socket types and bridge responsibility explicit.
---
Nitpick comments:
In `@docs/ci-strategy.md`:
- Line 32: Update the CONTRIBUTING.md link in the CI strategy documentation to
use a repository-relative path such as ../CONTRIBUTING.md instead of the
main-branch GitHub URL, preserving the existing link text.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 20c22c87-7b24-47b3-b564-243f59aaa803
📒 Files selected for processing (25)
docs/arch/minvmd.mddocs/arch/sessions-composition.mddocs/architecture.mddocs/ci-strategy.mddocs/error-handling.mddocs/internal/README.mddocs/internal/licensing.mddocs/internal/session-domain-diag.mddocs/rust-coding-standards.mddocs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.mddocs/specs/01-spec-minvmd-host-daemon/architecture.mddocs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.mddocs/specs/02-spec-minvmd-linux-kvm/architecture.mddocs/specs/03-spec-networking/03-spec-networking.mddocs/specs/03-spec-networking/architecture.mddocs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.mddocs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.mddocs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.mddocs/specs/07-spec-installer/07-spec-installer.mddocs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.mddocs/specs/08-spec-vm-ext4-volume/architecture.mddocs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.mddocs/specs/09-spec-minvmd-resource-monitoring/architecture.mddocs/spikes/2026-06-20-wireguard-implementation.mddocs/spikes/2026-06-21-gvproxy-attachment.md
💤 Files with no reviewable changes (2)
- docs/spikes/2026-06-21-gvproxy-attachment.md
- docs/spikes/2026-06-20-wireguard-implementation.md
🛑 Comments failed to post (1)
docs/internal/session-domain-diag.md (1)
121-130: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Reconcile the VM socket transport contract.
This section says guest
minimaldcreates a Unix socket thatminvmdproxies, butdocs/architecture.mdsaysminimaldserves SSH directly on a vsock port andminvmdbridges host UDS to that vsock port. These are different topologies; update one document so the provider contract is unambiguous.Proposed wording if the architecture page is authoritative
-- The in-VM `minimald` creates its own socket inside the guest. -- `minvmd` **proxies/forwards** that guest socket back to the host, so host `Minimal` talks to the in-VM `minimald` through `minvmd`. -- `Minimal` connects to `minvmd`'s host socket; `minvmd` relays traffic across the VM boundary to each VM's `minimald`. +- The in-VM `minimald` serves SSH directly on its vsock port. +- `minvmd` bridges its host-facing Unix socket to that guest vsock port. +- `Minimal` connects to `minvmd`'s host socket; `minvmd` relays traffic across the VM boundary to the in-VM `minimald`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.- The in-VM `minimald` serves SSH directly on its vsock port. - `minvmd` bridges its host-facing Unix socket to that guest vsock port. - `Minimal` connects to `minvmd`'s host socket; `minvmd` relays traffic across the VM boundary to the in-VM `minimald`.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/internal/session-domain-diag.md` around lines 121 - 130, Reconcile the VM transport description in the Mermaid flow and surrounding bullets with the authoritative contract in docs/architecture.md: describe guest minimald as serving SSH on a vsock port, and minvmd as bridging the host Unix socket to that vsock endpoint rather than proxying a guest Unix socket. Keep the Minimal → minvmd → minimald → Session flow while making the socket types and bridge responsibility explicit.
|
Per the licensing-doc discussion in Slack (Tom + Mike): dropped the "Revisit this stance if distribution terms change (restricted-source / object-only distribution)" line from |
a140c78 to
2c7ac76
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/error-handling.md`:
- Around line 79-89: Clarify the “User-facing CLIs — color_eyre instead of
anyhow” section to describe color_eyre as an application-boundary replacement
rather than a drop-in substitute, and explicitly state that CLI entrypoints must
call color_eyre::install() during startup to enable formatted reports.
In `@docs/internal/licensing.md`:
- Around line 29-34: Update the licensing discussion around “Stance: document
and accept” to separate Cargo.lock’s dependency-revision pinning from LGPL
source-delivery compliance. Replace the claim that the repository and lockfile
alone satisfy relinking requirements with the actual mechanism used to
distribute the complete corresponding source and, for static linking, required
object files or equivalent relinking materials; retain the existing
distribution-model context only if it accurately describes that mechanism.
In `@docs/internal/session-domain-diag.md`:
- Around line 142-157: The documented bootstrap flow must start every configured
provider even when discovery finds some live sockets. Update the “live sockets
found?” branch and configuration flow so discovered sockets are connected while
any configured providers not already live are also started; preserve the
no-config system-default behavior and clarify the bootstrap rules if needed.
- Around line 83-87: Update the VM transport topology in the diagrams around the
guest subgraph and the additional referenced sections to match
docs/architecture.md: show minimald serving SSH directly on the guest vsock
port, with minvmd bridging the host Unix domain socket to that guest vsock.
Remove the guest-socket proxying path and ensure all related labels and arrows
consistently represent this transport.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 006c58a9-c0f5-4627-a942-90e3ab206ed3
📒 Files selected for processing (25)
docs/arch/minvmd.mddocs/arch/sessions-composition.mddocs/architecture.mddocs/ci-strategy.mddocs/error-handling.mddocs/internal/README.mddocs/internal/licensing.mddocs/internal/session-domain-diag.mddocs/rust-coding-standards.mddocs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.mddocs/specs/01-spec-minvmd-host-daemon/architecture.mddocs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.mddocs/specs/02-spec-minvmd-linux-kvm/architecture.mddocs/specs/03-spec-networking/03-spec-networking.mddocs/specs/03-spec-networking/architecture.mddocs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.mddocs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.mddocs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.mddocs/specs/07-spec-installer/07-spec-installer.mddocs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.mddocs/specs/08-spec-vm-ext4-volume/architecture.mddocs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.mddocs/specs/09-spec-minvmd-resource-monitoring/architecture.mddocs/spikes/2026-06-20-wireguard-implementation.mddocs/spikes/2026-06-21-gvproxy-attachment.md
💤 Files with no reviewable changes (2)
- docs/spikes/2026-06-20-wireguard-implementation.md
- docs/spikes/2026-06-21-gvproxy-attachment.md
🚧 Files skipped from review as they are similar to previous changes (16)
- docs/arch/sessions-composition.md
- docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
- docs/arch/minvmd.md
- docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
- docs/internal/README.md
- docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
- docs/specs/07-spec-installer/07-spec-installer.md
- docs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.md
- docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.md
- docs/specs/08-spec-vm-ext4-volume/architecture.md
- docs/specs/02-spec-minvmd-linux-kvm/architecture.md
- docs/specs/03-spec-networking/03-spec-networking.md
- docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
- docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
- docs/rust-coding-standards.md
- docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
There was a problem hiding this comment.
Caution
Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/error-handling.md`:
- Around line 79-89: Clarify the “User-facing CLIs — color_eyre instead of
anyhow” section to describe color_eyre as an application-boundary replacement
rather than a drop-in substitute, and explicitly state that CLI entrypoints must
call color_eyre::install() during startup to enable formatted reports.
In `@docs/internal/licensing.md`:
- Around line 29-34: Update the licensing discussion around “Stance: document
and accept” to separate Cargo.lock’s dependency-revision pinning from LGPL
source-delivery compliance. Replace the claim that the repository and lockfile
alone satisfy relinking requirements with the actual mechanism used to
distribute the complete corresponding source and, for static linking, required
object files or equivalent relinking materials; retain the existing
distribution-model context only if it accurately describes that mechanism.
In `@docs/internal/session-domain-diag.md`:
- Around line 142-157: The documented bootstrap flow must start every configured
provider even when discovery finds some live sockets. Update the “live sockets
found?” branch and configuration flow so discovered sockets are connected while
any configured providers not already live are also started; preserve the
no-config system-default behavior and clarify the bootstrap rules if needed.
- Around line 83-87: Update the VM transport topology in the diagrams around the
guest subgraph and the additional referenced sections to match
docs/architecture.md: show minimald serving SSH directly on the guest vsock
port, with minvmd bridging the host Unix domain socket to that guest vsock.
Remove the guest-socket proxying path and ensure all related labels and arrows
consistently represent this transport.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 006c58a9-c0f5-4627-a942-90e3ab206ed3
📒 Files selected for processing (25)
docs/arch/minvmd.mddocs/arch/sessions-composition.mddocs/architecture.mddocs/ci-strategy.mddocs/error-handling.mddocs/internal/README.mddocs/internal/licensing.mddocs/internal/session-domain-diag.mddocs/rust-coding-standards.mddocs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.mddocs/specs/01-spec-minvmd-host-daemon/architecture.mddocs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.mddocs/specs/02-spec-minvmd-linux-kvm/architecture.mddocs/specs/03-spec-networking/03-spec-networking.mddocs/specs/03-spec-networking/architecture.mddocs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.mddocs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.mddocs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.mddocs/specs/07-spec-installer/07-spec-installer.mddocs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.mddocs/specs/08-spec-vm-ext4-volume/architecture.mddocs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.mddocs/specs/09-spec-minvmd-resource-monitoring/architecture.mddocs/spikes/2026-06-20-wireguard-implementation.mddocs/spikes/2026-06-21-gvproxy-attachment.md
💤 Files with no reviewable changes (2)
- docs/spikes/2026-06-20-wireguard-implementation.md
- docs/spikes/2026-06-21-gvproxy-attachment.md
🚧 Files skipped from review as they are similar to previous changes (16)
- docs/arch/sessions-composition.md
- docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
- docs/arch/minvmd.md
- docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
- docs/internal/README.md
- docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
- docs/specs/07-spec-installer/07-spec-installer.md
- docs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.md
- docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.md
- docs/specs/08-spec-vm-ext4-volume/architecture.md
- docs/specs/02-spec-minvmd-linux-kvm/architecture.md
- docs/specs/03-spec-networking/03-spec-networking.md
- docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
- docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
- docs/rust-coding-standards.md
- docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
🛑 Comments failed to post (4)
docs/error-handling.md (1)
79-89: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash set -euo pipefail # Inspect the relevant section and search for related conventions sed -n '60,110p' docs/error-handling.md printf '\n--- search for color_eyre / install / eyre ---\n' rg -n "color_eyre|color-eyre|color-eyre::install|color_eyre::install|anyhow|eyre" -S . printf '\n--- list docs files maybe relevant ---\n' git ls-files 'docs/*' 'README*'Repository: gominimal/minimal
Length of output: 35111
🏁 Script executed:
#!/bin/bash set -euo pipefail sed -n '1,80p' docs/rust-coding-standards.md printf '\n--- color_eyre in manifest/docs ---\n' rg -n "color_eyre|color-eyre|install\\(" Cargo.toml crates docs -SRepository: gominimal/minimal
Length of output: 6478
🌐 Web query:
color-eyre install report handler CLI entrypoint documentation color_eyre::install()💡 Result:
The color-eyre::install function is used to initialize the panic and error report handlers for the color-eyre crate, which provides colorful, well-formatted error reporting in Rust applications [1][2]. To use it in a CLI entrypoint, you should call it as one of the very first actions within your main function, before any errors are constructed or other report handlers are installed [1]. Usage pattern: 1. Add color-eyre to your Cargo.toml dependencies [3][4]. 2. Call color_eyre::install at the start of your main function [1][3]. Example implementation: use color_eyre::eyre::Result; fn main -> Result<> { // Install the default panic and error report hooks color_eyre::install?; // Proceed with your application logic Ok() } Key considerations: - The function returns a Result<, Report> [1]. - It can only be installed once; calling it again after another handler has been set will return an error [1]. - It must be called before any eyre::Report is constructed to ensure the default handler is properly configured [1]. - If you are also using tracing for diagnostics, ensure that color_eyre::install is integrated correctly with your tracing subscriber, typically after setting up your error layer [5].
Citations:
- 1: https://docs.rs/color-eyre/latest/color_eyre/fn.install.html
- 2: https://crates.io/crates/color-eyre
- 3: https://docs.rs/color-eyre/latest/color_eyre/
- 4: https://github.com/eyre-rs/color-eyre
- 5: https://github.com/yaahc/color-eyre/blob/master/examples/usage.rs
Clarify the
color_eyreboundary.color_eyrestill needscolor_eyre::install()at CLI startup to provide the formatted reports, so “drop-in substitute” is too strong. Soften this to describe it as an application-boundary replacement and mention the startup hook for CLI entrypoints.🧰 Tools
🪛 LanguageTool
[style] ~81-~81: To elevate your writing, try using an alternative expression here.
Context: ...anyhowwhere the specific error type does not matter and errors are only propagated upward. ...(MATTERS_RELEVANT)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/error-handling.md` around lines 79 - 89, Clarify the “User-facing CLIs — color_eyre instead of anyhow” section to describe color_eyre as an application-boundary replacement rather than a drop-in substitute, and explicitly state that CLI entrypoints must call color_eyre::install() during startup to enable formatted reports.Source: MCP tools
docs/internal/licensing.md (1)
29-34: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift
Separate Cargo.lock pinning from LGPL source-delivery compliance.
Cargo.lockpins the selected git revision; it does not contain the crate sources or demonstrate that distributed binaries include the materials needed for relinking. For statically linked LGPL components, document the actual source/object-file distribution mechanism rather than claiming that the lockfile and repository alone satisfy the requirement. (gnu.org)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/internal/licensing.md` around lines 29 - 34, Update the licensing discussion around “Stance: document and accept” to separate Cargo.lock’s dependency-revision pinning from LGPL source-delivery compliance. Replace the claim that the repository and lockfile alone satisfy relinking requirements with the actual mechanism used to distribute the complete corresponding source and, for static linking, required object files or equivalent relinking materials; retain the existing distribution-model context only if it accurately describes that mechanism.Source: MCP tools
docs/internal/session-domain-diag.md (2)
83-87: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Align the VM transport description with
docs/architecture.md.These sections describe proxying a guest socket, while
docs/architecture.mdstates thatminimaldserves SSH directly on a guest vsock port andminvmdbridges host UDS → guest vsock. Use one consistent topology and diagram to avoid implementing the wrong socket path.Also applies to: 103-111, 119-130
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/internal/session-domain-diag.md` around lines 83 - 87, Update the VM transport topology in the diagrams around the guest subgraph and the additional referenced sections to match docs/architecture.md: show minimald serving SSH directly on the guest vsock port, with minvmd bridging the host Unix domain socket to that guest vsock. Remove the guest-socket proxying path and ensure all related labels and arrows consistently represent this transport.
142-157: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Start missing configured providers when discovery is partial.
The
live sockets found?yes-branch connects to discovered sockets and skips configuration processing, but the stated rule says configuration starts all listed providers. Change the flow to reconcile configured providers after discovery, or narrow the rule so this behavior is unambiguous.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/internal/session-domain-diag.md` around lines 142 - 157, The documented bootstrap flow must start every configured provider even when discovery finds some live sockets. Update the “live sockets found?” branch and configuration flow so discovered sockets are connected while any configured providers not already live are also started; preserve the no-config system-default behavior and clarify the bootstrap rules if needed.
2c7ac76 to
0db174c
Compare
…ling guide Rewrite docs/architecture.md: frame the codebase as core (deep-internals) crates versus product-surface binaries, then walk through running sessions and tasks and building packages, with a full crate map. Link out to the per-subsystem specs. Add maintainer-facing docs under docs/internal/ — licensing layout, and the session domain model moved here from docs/ — with a README fencing them as publicly-visible-but-not-published-to-the-docs-site. Lift the error-handling ADR out of docs/decisions/ to docs/error-handling.md, alongside the commit and coding-standards guides, dropping the ADR ceremony, and retarget the reference in rust-coding-standards.md. Refresh cross-links and stale command names across the spec set. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0db174c to
ce868bf
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/architecture.md`:
- Around line 248-251: Update the Cache Inspection section in
docs/architecture.md so the lookup example searches for a Blake3 hash or hash
prefix rather than a package/spec-name pattern; alternatively, reference an
existing metadata-aware inspection command if one is already documented. Keep
the surrounding cache-entry descriptions unchanged.
In `@docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md`:
- Line 5: Change the spec’s status from shipped to an in-progress status while
its acceptance criteria, implementation, and proof artifacts remain incomplete.
Update the status metadata near the document header; do not mark it shipped
unless the document is also updated with completion evidence.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 74bdd619-717e-4f7d-90f7-f813f84f73d5
📒 Files selected for processing (25)
docs/arch/minvmd.mddocs/arch/sessions-composition.mddocs/architecture.mddocs/ci-strategy.mddocs/error-handling.mddocs/internal/README.mddocs/internal/licensing.mddocs/internal/session-domain-diag.mddocs/rust-coding-standards.mddocs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.mddocs/specs/01-spec-minvmd-host-daemon/architecture.mddocs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.mddocs/specs/02-spec-minvmd-linux-kvm/architecture.mddocs/specs/03-spec-networking/03-spec-networking.mddocs/specs/03-spec-networking/architecture.mddocs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.mddocs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.mddocs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.mddocs/specs/07-spec-installer/07-spec-installer.mddocs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.mddocs/specs/08-spec-vm-ext4-volume/architecture.mddocs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.mddocs/specs/09-spec-minvmd-resource-monitoring/architecture.mddocs/spikes/2026-06-20-wireguard-implementation.mddocs/spikes/2026-06-21-gvproxy-attachment.md
💤 Files with no reviewable changes (2)
- docs/spikes/2026-06-20-wireguard-implementation.md
- docs/spikes/2026-06-21-gvproxy-attachment.md
🚧 Files skipped from review as they are similar to previous changes (17)
- docs/arch/minvmd.md
- docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
- docs/arch/sessions-composition.md
- docs/internal/README.md
- docs/specs/03-spec-networking/03-spec-networking.md
- docs/specs/02-spec-minvmd-linux-kvm/architecture.md
- docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.md
- docs/specs/08-spec-vm-ext4-volume/08-spec-vm-ext4-volume.md
- docs/specs/08-spec-vm-ext4-volume/architecture.md
- docs/specs/07-spec-installer/07-spec-installer.md
- docs/internal/licensing.md
- docs/specs/03-spec-networking/architecture.md
- docs/specs/01-spec-minvmd-host-daemon/architecture.md
- docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
- docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
- docs/error-handling.md
- docs/ci-strategy.md
| ### Cache Inspection | ||
| - Cache entries are content-addressed by Blake3 hash of complete build spec | ||
| - Use `find ~/.cache/minimal/built -name "*pattern*"` to locate specific builds | ||
| - Each cache entry contains the complete build output directory tree |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Make the cache lookup example hash-aware.
The documented command searches filenames for pattern, but the preceding text says cache entries are keyed by Blake3 hashes. This will not locate a build by package/spec name and may mislead maintainers. Document lookup by hash prefix, or reference an existing metadata-aware inspection command instead.
Suggested wording
- Use `find ~/.cache/minimal/built -name "*pattern*"` to locate specific builds
+ Use the build's Blake3 hash or hash prefix to locate a cache entry under
+ `~/.cache/minimal/built/`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Cache Inspection | |
| - Cache entries are content-addressed by Blake3 hash of complete build spec | |
| - Use `find ~/.cache/minimal/built -name "*pattern*"` to locate specific builds | |
| - Each cache entry contains the complete build output directory tree | |
| ### Cache Inspection | |
| - Cache entries are content-addressed by Blake3 hash of complete build spec | |
| - Use the build's Blake3 hash or hash prefix to locate a cache entry under | |
| `~/.cache/minimal/built/`. | |
| - Each cache entry contains the complete build output directory tree |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/architecture.md` around lines 248 - 251, Update the Cache Inspection
section in docs/architecture.md so the lookup example searches for a Blake3 hash
or hash prefix rather than a package/spec-name pattern; alternatively, reference
an existing metadata-aware inspection command if one is already documented. Keep
the surrounding cache-entry descriptions unchanged.
| title: "minvmd Linux KVM backend" | ||
| kind: spec | ||
| status: planned | ||
| status: shipped |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Do not mark this spec as shipped while its acceptance criteria remain incomplete.
The document still says Linux minvmd is a runtime-bailing stub and describes the implementation and proof artifacts as future work. Either retain an in-progress status or update the content with completion evidence before marking it shipped.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md` at line 5,
Change the spec’s status from shipped to an in-progress status while its
acceptance criteria, implementation, and proof artifacts remain incomplete.
Update the status metadata near the document header; do not mark it shipped
unless the document is also updated with completion evidence.
1825882 to
ccd598e
Compare
…ource-conveyance mechanism Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>
Replace em-dashes in prose with context-appropriate punctuation across the docs this PR adds: commas/colons for asides and definitions, semicolons for clause breaks, parentheses for parenthetical lists, and plain hyphens in compound headings and table N/A cells. Em-dashes inside fenced code blocks (a process-tree diagram and two Rust code comments) are left untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ccd598e to
5755b74
Compare
| `minimald`, and no longer reaches macOS builds since `mctx` was | ||
| decoupled from it in #721. | ||
|
|
||
| ## nickel-lang git dependencies and crates.io |
There was a problem hiding this comment.
This callout seems weird, its not nothing to do with licensing (Nickel is MIT)
There was a problem hiding this comment.
Agreed — removed the "nickel-lang git dependencies and crates.io" section. It was about crates.io publishability, not license compliance (Nickel is MIT), so it didn't belong here. ef2117d.
| - No blocking in async context. No std::fs, std::thread::sleep, blocking network, or sync Mutex held across .await — use tokio::fs, tokio::time::sleep, tokio::sync::Mutex. | ||
| - Don't reach for Arc<Mutex<T>> reflexively. Plain Arc<T> suffices if T is immutable after construction. Spawned tasks must satisfy Send + 'static — design data flow accordingly. | ||
| - No blocking in async context. No std::fs, std::thread::sleep, blocking network, or sync Mutex held across .await, use tokio::fs, tokio::time::sleep, tokio::sync::Mutex. | ||
| - Don't reach for `Arc<Mutex<T>>` reflexively. Plain `Arc<T>` suffices if `T` is immutable after construction. Spawned tasks must satisfy `Send + 'static`, design data flow accordingly. |
There was a problem hiding this comment.
Lets also add that tokio::task::block_in_place is banned due to poor interactions with hakoniwa.
There was a problem hiding this comment.
Added under Async & Concurrency: "No tokio::task::block_in_place. It interacts poorly with hakoniwa; move blocking work to tokio::task::spawn_blocking or a dedicated thread." ef2117d.
Move the crate deep-dive pages (minvmd, sessions-composition) from docs/arch/ under docs/internal/, alongside the other maintainer docs. Drop the "nickel-lang git dependencies and crates.io" section from the licensing doc: it covers crates.io publishability, not license compliance (Nickel is MIT). Ban `tokio::task::block_in_place` in the async coding standards, since it interacts poorly with `hakoniwa`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fourth PR in the
oss/integrationdecomposition (WS6) — architecture docs, maintainer-facing internal docs, and doc reorganization. Pure docs, no code. 25 files, +368/−101.What
docs/architecture.mdv2 — rewritten around the two-plane (build / session) model, linking out to the per-subsystem specs. The build-plane crate list is now a| Crate | Role |table matching the crate map further down.docs/internal/— maintainer-facing docs:licensing.md(per-crate license layout) andsession-domain-diag.md(session domain model). TheREADME.mdfences them as publicly visible in the repo but not published to the docs site or written for end users.docs/error-handling.md— the Rust error-handling guidance, lifted out of thedocs/decisions/ADR format to sit alongsidecommit-conventions.mdandrust-coding-standards.md.docs/specs/*anddocs/spikes/*(mostly 1-line touch-ups).Moves (not duplication)
docs/session-domain-diag.md→docs/internal/session-domain-diag.md(git rename R100; spec cross-refs already point at the new path).docs/decisions/0001-rust-error-handling-strategy.md→docs/error-handling.md(git rename R070), dropping the ADR ceremony (number, Status/Date/Deciders/Refs, sign-off). The reference indocs/rust-coding-standards.mdis retargeted.docs/decisions/is now empty and removed.🤖 Generated with Claude Code
Summary by CodeRabbit
Documentation
Specs & Status Updates
Note
Rewrite architecture overview, add internal maintainer docs, and convert error-handling ADR to a guide
docs/decisions/0001-rust-error-handling-strategy.mdinto a concise guide at docs/error-handling.md, organized bythiserror(libraries),anyhow(binaries), andcolor_eyre(CLIs).session-domain-diag.mdinto that directory.minvmdand session composition that embed their respective crate README/docs via include directives.shippedand applies consistent punctuation cleanup (em-dashes replaced with commas/colons throughout).Changes since #858 opened
docs/arch/todocs/internal/directory and updated cross-references in architecture documentation [ef2117d]nickel-langgit dependencies andcrates.iopublishing constraints from internal licensing documentation [ef2117d]tokio::task::block_in_placein favor oftokio::task::spawn_blockingor dedicated threads for blocking work [ef2117d]Macroscope summarized 5755b74.