Skip to content

docs: architecture v2, internal maintainer docs, and error-handling guide - #858

Merged
norrietaylor merged 4 commits into
mainfrom
pr/04-architecture-docs
Jul 23, 2026
Merged

docs: architecture v2, internal maintainer docs, and error-handling guide#858
norrietaylor merged 4 commits into
mainfrom
pr/04-architecture-docs

Conversation

@norrietaylor

@norrietaylor norrietaylor commented Jul 20, 2026

Copy link
Copy Markdown
Member

Fourth PR in the oss/integration decomposition (WS6) — architecture docs, maintainer-facing internal docs, and doc reorganization. Pure docs, no code. 25 files, +368/−101.

What

  • docs/architecture.md v2 — 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) and session-domain-diag.md (session domain model). The README.md fences 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 the docs/decisions/ ADR format to sit alongside commit-conventions.md and rust-coding-standards.md.
  • Spec set — cross-link and stale-command-name refresh across docs/specs/* and docs/spikes/* (mostly 1-line touch-ups).

Moves (not duplication)

  • docs/session-domain-diag.mddocs/internal/session-domain-diag.md (git rename R100; spec cross-refs already point at the new path).
  • docs/decisions/0001-rust-error-handling-strategy.mddocs/error-handling.md (git rename R070), dropping the ADR ceremony (number, Status/Date/Deciders/Refs, sign-off). The reference in docs/rust-coding-standards.md is retargeted. docs/decisions/ is now empty and removed.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Added new documentation pages covering session composition and the minvmd host daemon.
    • Reworked the architecture reference with expanded session/task flow, cache/planning details (including cache inspection), and a platform matrix; improved cross-references.
    • Updated Rust error-handling and Rust coding standards guidance; adjusted CI documentation links and Markdown rendering.
  • Specs & Status Updates

    • Marked multiple related specs as shipped and corrected associated status/metadata and reference paths.

Note

Rewrite architecture overview, add internal maintainer docs, and convert error-handling ADR to a guide

  • Rewrites docs/architecture.md with a new structure: core vs. product-surface crates, Mermaid diagrams for session/task and package-build flows, and sections covering networking, persistence, and remote cache.
  • Converts the error-handling ADR at docs/decisions/0001-rust-error-handling-strategy.md into a concise guide at docs/error-handling.md, organized by thiserror (libraries), anyhow (binaries), and color_eyre (CLIs).
  • Adds docs/internal/ with a licensing stance doc (Apache-2.0, LGPL exceptions, prebuilt binary attribution) and moves session-domain-diag.md into that directory.
  • Adds architecture stub pages for minvmd and session composition that embed their respective crate README/docs via include directives.
  • Marks all spec and spike docs (specs 01–09, networking, installer, wireguard, gvproxy) as shipped and applies consistent punctuation cleanup (em-dashes replaced with commas/colons throughout).

Changes since #858 opened

  • Moved internal architecture documentation files from docs/arch/ to docs/internal/ directory and updated cross-references in architecture documentation [ef2117d]
  • Removed documentation section describing nickel-lang git dependencies and crates.io publishing constraints from internal licensing documentation [ef2117d]
  • Added coding guideline discouraging use of tokio::task::block_in_place in favor of tokio::task::spawn_blocking or dedicated threads for blocking work [ef2117d]

Macroscope summarized 5755b74.

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The 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.

Changes

Documentation overhaul

Layer / File(s) Summary
Architecture and embedded documentation
docs/architecture.md, docs/arch/*
The architecture reference now covers runtime and build flows, crate roles, caching, sandboxing, cache inspection, and platform support; new pages embed maintained crate documentation.
Internal documentation and session model
docs/internal/*
Indexes, licensing guidance, and session-domain diagrams document providers, sockets, VM proxying, deployment flows, lifecycle, bootstrap behavior, and redistribution requirements.
Documentation conventions and links
docs/error-handling.md, docs/rust-coding-standards.md, docs/ci-strategy.md
Error-handling structure, coding guidance, cross-references, CI links, and literal GitHub expression rendering are updated.
Specification status and references
docs/specs/*
Completed specifications are marked shipped, session-domain references move to the internal documentation path, and selected wording is revised.
Spike metadata cleanup
docs/spikes/*
Author metadata is removed from two spike documents.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related issues

  • gominimal/inbox#271 — Covers the architecture overhaul, internal documentation, licensing page, embedded crate documentation, and shipped specification metadata updates.

Suggested reviewers: twitchyliquid64

Poem

I nibbled the docs till the pathways grew clear,
With diagrams blooming from socket to gear.
The shipped specs now sparkle, the caches align,
And tiny links hop in a neat little line.
“Well documented!” I thump—then I munch some more.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers the main changes, but it omits the required Testing and Checklist sections from the template. Add the Summary, Testing, and Checklist headings; include testing evidence or note none run, and complete the checklist items.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise and accurately reflects the docs-only architecture, maintainer-docs, and error-handling changes.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands.

Comment thread docs/internal/README.md
Comment thread docs/internal/release-pipeline.md Outdated

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets omit this for now.

Comment thread docs/internal/session-domain-diag.md
Comment thread docs/specs/README.md Outdated
Comment thread docs/spikes/README.md Outdated
Comment thread docs/architecture.md Outdated
@norrietaylor

Copy link
Copy Markdown
Member Author

Addressed the review — force-pushed:

  • release-pipeline.md — omitted (removed from the PR).
  • docs/specs/README.md, docs/spikes/README.md — omitted; also dropped the now-dead [index](…) links to them from docs/internal/README.md.
  • session-domain-diag.md duplication — it was duplicating the existing docs/session-domain-diag.md. Made it a proper move (docs/docs/internal/); content is byte-identical and the spec cross-references already point at the new path. Git now shows it as a pure rename.
  • docs/internal/README.md:13 — no longer duplicated (see above); trimmed the index to the two remaining docs.
  • architecture.md:61 — reformatted the build-plane crate list as a | Crate | Role | table matching the crate map below. Dropped the redundant Plane column since the section is already build-plane-scoped, and kept pipeline order rather than alphabetizing. Happy to add the Plane column or alphabetize if you'd prefer an exact match.

Left docs/decisions/README.md in (it wasn't flagged) — say the word if you'd like that omitted too.

@norrietaylor
norrietaylor force-pushed the pr/04-architecture-docs branch from 10bae89 to 4f8d861 Compare July 21, 2026 00:26
@norrietaylor

Copy link
Copy Markdown
Member Author

Follow-up per the latest notes:

  • Removed docs/decisions/README.md.
  • Lifted the error-handling ADR out of the decisions/ADR format to docs/error-handling.md, sitting alongside commit-conventions.md and rust-coding-standards.md. Dropped the ADR ceremony (the 0001 — number, Status/Date/Deciders/Refs block, and the Sign-off summary); kept the technical substance. Retargeted the link in rust-coding-standards.md.
  • docs/decisions/ is now empty and gone.

Git tracks it as a rename, so history is preserved.

@norrietaylor
norrietaylor force-pushed the pr/04-architecture-docs branch from 4f8d861 to e27a235 Compare July 21, 2026 00:34
@norrietaylor norrietaylor changed the title docs: architecture v2, internal maintainer docs, and spec/decision indexes docs: architecture v2, internal maintainer docs, and error-handling guide Jul 21, 2026
@norrietaylor
norrietaylor marked this pull request as ready for review July 21, 2026 00:42

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
docs/ci-strategy.md (1)

32-32: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Prefer a repository-relative link for CONTRIBUTING.md.

Linking directly to main makes 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

📥 Commits

Reviewing files that changed from the base of the PR and between 4bfdcb0 and e27a235.

📒 Files selected for processing (25)
  • docs/arch/minvmd.md
  • docs/arch/sessions-composition.md
  • docs/architecture.md
  • docs/ci-strategy.md
  • docs/error-handling.md
  • docs/internal/README.md
  • docs/internal/licensing.md
  • docs/internal/session-domain-diag.md
  • docs/rust-coding-standards.md
  • docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
  • docs/specs/01-spec-minvmd-host-daemon/architecture.md
  • docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
  • docs/specs/02-spec-minvmd-linux-kvm/architecture.md
  • docs/specs/03-spec-networking/03-spec-networking.md
  • docs/specs/03-spec-networking/architecture.md
  • docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
  • docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
  • docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.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/08-spec-vm-ext4-volume/architecture.md
  • docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
  • docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
  • docs/spikes/2026-06-20-wireguard-implementation.md
  • docs/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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 win

Prefer a repository-relative link for CONTRIBUTING.md.

Linking directly to main makes 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

📥 Commits

Reviewing files that changed from the base of the PR and between 4bfdcb0 and e27a235.

📒 Files selected for processing (25)
  • docs/arch/minvmd.md
  • docs/arch/sessions-composition.md
  • docs/architecture.md
  • docs/ci-strategy.md
  • docs/error-handling.md
  • docs/internal/README.md
  • docs/internal/licensing.md
  • docs/internal/session-domain-diag.md
  • docs/rust-coding-standards.md
  • docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
  • docs/specs/01-spec-minvmd-host-daemon/architecture.md
  • docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
  • docs/specs/02-spec-minvmd-linux-kvm/architecture.md
  • docs/specs/03-spec-networking/03-spec-networking.md
  • docs/specs/03-spec-networking/architecture.md
  • docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
  • docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
  • docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.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/08-spec-vm-ext4-volume/architecture.md
  • docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
  • docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
  • docs/spikes/2026-06-20-wireguard-implementation.md
  • docs/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 minimald creates a Unix socket that minvmd proxies, but docs/architecture.md says minimald serves SSH directly on a vsock port and minvmd bridges 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.

Comment thread docs/internal/licensing.md Outdated
Comment thread docs/internal/minvmd.md
Comment thread docs/architecture.md Outdated
Comment thread docs/architecture.md Outdated
Comment thread docs/architecture.md Outdated
@norrietaylor

Copy link
Copy Markdown
Member Author

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 docs/internal/licensing.md. It read like a telegraphed relicense/rug-pull and isn't needed — the paragraph now ends at the current-distribution-model statement. Force-pushed.

@norrietaylor
norrietaylor force-pushed the pr/04-architecture-docs branch 4 times, most recently from a140c78 to 2c7ac76 Compare July 21, 2026 15:50

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 28062bd and 2c7ac76.

📒 Files selected for processing (25)
  • docs/arch/minvmd.md
  • docs/arch/sessions-composition.md
  • docs/architecture.md
  • docs/ci-strategy.md
  • docs/error-handling.md
  • docs/internal/README.md
  • docs/internal/licensing.md
  • docs/internal/session-domain-diag.md
  • docs/rust-coding-standards.md
  • docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
  • docs/specs/01-spec-minvmd-host-daemon/architecture.md
  • docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
  • docs/specs/02-spec-minvmd-linux-kvm/architecture.md
  • docs/specs/03-spec-networking/03-spec-networking.md
  • docs/specs/03-spec-networking/architecture.md
  • docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
  • docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
  • docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.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/08-spec-vm-ext4-volume/architecture.md
  • docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
  • docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
  • docs/spikes/2026-06-20-wireguard-implementation.md
  • docs/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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 28062bd and 2c7ac76.

📒 Files selected for processing (25)
  • docs/arch/minvmd.md
  • docs/arch/sessions-composition.md
  • docs/architecture.md
  • docs/ci-strategy.md
  • docs/error-handling.md
  • docs/internal/README.md
  • docs/internal/licensing.md
  • docs/internal/session-domain-diag.md
  • docs/rust-coding-standards.md
  • docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
  • docs/specs/01-spec-minvmd-host-daemon/architecture.md
  • docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
  • docs/specs/02-spec-minvmd-linux-kvm/architecture.md
  • docs/specs/03-spec-networking/03-spec-networking.md
  • docs/specs/03-spec-networking/architecture.md
  • docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
  • docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
  • docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.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/08-spec-vm-ext4-volume/architecture.md
  • docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
  • docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
  • docs/spikes/2026-06-20-wireguard-implementation.md
  • docs/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 -S

Repository: 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:


Clarify the color_eyre boundary. color_eyre still needs color_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: ... anyhow where 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.lock pins 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.md states that minimald serves SSH directly on a guest vsock port and minvmd bridges 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.

@norrietaylor
norrietaylor force-pushed the pr/04-architecture-docs branch from 2c7ac76 to 0db174c Compare July 21, 2026 18:55
Comment thread docs/architecture.md
…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>
@norrietaylor
norrietaylor force-pushed the pr/04-architecture-docs branch from 0db174c to ce868bf Compare July 21, 2026 20:53

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 2c7ac76 and ce868bf.

📒 Files selected for processing (25)
  • docs/arch/minvmd.md
  • docs/arch/sessions-composition.md
  • docs/architecture.md
  • docs/ci-strategy.md
  • docs/error-handling.md
  • docs/internal/README.md
  • docs/internal/licensing.md
  • docs/internal/session-domain-diag.md
  • docs/rust-coding-standards.md
  • docs/specs/01-spec-minvmd-host-daemon/01-spec-minvmd-host-daemon.md
  • docs/specs/01-spec-minvmd-host-daemon/architecture.md
  • docs/specs/02-spec-minvmd-linux-kvm/02-spec-minvmd-linux-kvm.md
  • docs/specs/02-spec-minvmd-linux-kvm/architecture.md
  • docs/specs/03-spec-networking/03-spec-networking.md
  • docs/specs/03-spec-networking/architecture.md
  • docs/specs/04-spec-ot-render-decoupling/04-spec-ot-render-decoupling.md
  • docs/specs/05-spec-minvmd-gvproxy-pidfd/05-spec-minvmd-gvproxy-pidfd.md
  • docs/specs/06-spec-ssh-host-key-in-beacon/06-spec-ssh-host-key-in-beacon.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/08-spec-vm-ext4-volume/architecture.md
  • docs/specs/09-spec-minvmd-resource-monitoring/09-spec-minvmd-resource-monitoring.md
  • docs/specs/09-spec-minvmd-resource-monitoring/architecture.md
  • docs/spikes/2026-06-20-wireguard-implementation.md
  • docs/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

Comment thread docs/architecture.md
Comment on lines 248 to 251
### 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Suggested change
### 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 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.

Comment thread docs/internal/licensing.md Outdated
macroscopeapp Bot and others added 2 commits July 23, 2026 14:35
…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>
@norrietaylor
norrietaylor force-pushed the pr/04-architecture-docs branch from ccd598e to 5755b74 Compare July 23, 2026 21:35
Comment thread docs/internal/licensing.md Outdated
`minimald`, and no longer reaches macOS builds since `mctx` was
decoupled from it in #721.

## nickel-lang git dependencies and crates.io

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This callout seems weird, its not nothing to do with licensing (Nickel is MIT)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets also add that tokio::task::block_in_place is banned due to poor interactions with hakoniwa.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@norrietaylor
norrietaylor enabled auto-merge (squash) July 23, 2026 22:27
@norrietaylor
norrietaylor merged commit 6a06f58 into main Jul 23, 2026
29 checks passed
@norrietaylor
norrietaylor deleted the pr/04-architecture-docs branch July 23, 2026 22:29
@norrietaylor
norrietaylor restored the pr/04-architecture-docs branch July 23, 2026 22:44
@norrietaylor
norrietaylor deleted the pr/04-architecture-docs branch July 23, 2026 22:57
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.

2 participants