Skip to content

th-e827ba: purge microVM-era leftovers from docs, manifests, and boot strings#240

Merged
brentrager merged 3 commits into
mainfrom
th-microvm-cleanup
Jul 20, 2026
Merged

th-e827ba: purge microVM-era leftovers from docs, manifests, and boot strings#240
brentrager merged 3 commits into
mainfrom
th-microvm-cleanup

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Pearl: th-e827ba

The microVM stack was deleted in 2026-07 (th-f4a801), but its footprint stayed behind and is actively misleading agents. Pearl th-a165b4 was written against kvm_bindings/microsandbox Windows blockers that hadn't existed for weeks — describing days of feature-gating for what turned out to be 5 trivial fixes.

CLAUDE.md — rewritten against the real tree

§1 "Workspace Structure" and "Key Crates" documented six crates that no longer exist: smooth-bigsmooth, smooth-narc, smooth-scribe, smooth-archivist, smooth-operative, and smooth-operator (which moved to its own repo, SmooAI/smooth-operator — but was listed as crates/smooth-operator/). It omitted seven that do: smooth-daemon, smooth-tools, smooth-goalie, smooth-cast, smooth-diver, smooth-tmux, smooth-api-client.

§4 "Key Modules (smooth-bigsmooth)" was an entire table for a deleted crate. It is now "Key Modules (smooth-daemon)", with the dispatch section describing what actually happens (in-process engine turns, no per-task worker process) and the security architecture describing the real three layers in order: permission hook (operator::permission_hook + DenyPolicy) → Narc (hooks/narc.rs) → kernel OS sandbox (smooth-tools/src/sandbox.rs).

smooth-goalie is documented as it is now — the daemon's egress boundary via AuditLogger + run_proxy_local (start_egress_proxy in smooth-daemon/src/lib.rs) — with the vestigial Wonk-delegation path flagged as such. The historical "removed 2026-07, see git history" callouts are kept; the parts describing deleted code as live are gone.

Every crate named and every path referenced was verified to resolve.

rusqlite 0.32 → 0.40

cargo tree -i libsqlite3-sys shows one consumer: rusqlite → smooai-smooth-daemon. The pin existed to unify with microsandbox's sea-orm→sqlx→libsqlite3-sys 0.30; microsandbox is gone. Upgraded to 0.40.1 — compiles with zero API changes, tests green.

Other stale claims corrected

  • pnpm install:th was broken. It ran cargo install --path crates/smooth-operative — a directory deleted with the microVM stack. Now installs smooth-daemon, which th daemon / th up need resolvable on PATH.
  • crates/smooth-cli/src/api/<resource>.rs — the documented location for new th api subcommands, in three places. The directory is src/smooai/.
  • th operatorsth operatives; th cache and ~/.smooth/project-cache documented a command and directory that no longer exist.
  • User-facing strings: th code cold-start printed starting Safehouse microVM and cast online (wonk · goalie · narc · scribe · archivist · diver · groove); three boot-failure messages blamed a "Safehouse microVM".
  • reqwest's hickory-dns feature kept, but its justification rewritten (was alpine musl getaddrinfo vs. microsandbox's intercepted DNS; now: keeps resolution independent of host libc/NSS).
  • Workspace exclude = ["crates/smooth-bigsmooth/tests/fixtures"] — dead path, removed.
  • Stale //! headers and manifest descriptions across smooth-goalie, smooth-tools, smooth-policy, smooth-diver, smooth-daemon, smooth-cli (mcp_config, daemon_launcher, boot_ui) — several instructed maintainers to keep files in lockstep with deleted crates.
  • README workspace tree (listed 6 dead crates + smooth-plugin/smooth-tunnel/smooth-bench), plus the dead microsandbox image-resolution and project-cache sections.

smooth-goalie was not deleted and no daemon behaviour changed.

Gates

  • cargo fmt -- --check — clean
  • cargo clippy --workspace --all-targets — 0 errors, 1760 warnings, all pre-existing (the one lint in a file I touched, smooth-tools/src/lib.rs:77, is on an untouched doc comment)
  • cargo test --workspace1297 passed, 0 failed. One smooth-web test initially failed because this worktree had a placeholder web/dist; after pnpm build:web it passes (9/9).

🤖 Generated with Claude Code

https://claude.ai/code/session_015ZctFb4oiWoJraHN2db1nX

… strings

The microVM stack was deleted in 2026-07 (th-f4a801) but its footprint
stayed behind and is actively misleading agents — pearl th-a165b4 was
written against blockers that hadn't existed for weeks.

CLAUDE.md §1/§4 rewritten against the real tree: the crate list named six
crates that no longer exist (smooth-bigsmooth, smooth-narc, smooth-scribe,
smooth-archivist, smooth-operative, and smooth-operator — which now lives
in its own repo) and omitted seven that do. §4's module table, dispatch
section, and security architecture all described smooth-bigsmooth; they
now describe smooth-daemon and the real three-layer model (permission
hook → Narc → kernel OS sandbox). smooth-goalie is documented as what it
is now: the daemon's egress boundary via AuditLogger + run_proxy_local,
not the in-VM Wonk-delegating proxy.

Also corrected: crates/smooth-cli/src/api/ → src/smooai/ (the documented
path doesn't exist), `th operators` → `th operatives`, and the `th cache`
/ ~/.smooth/project-cache docs for a command that was removed.

pnpm install:th was broken — it ran `cargo install --path
crates/smooth-operative`, deleted with the microVM stack. It now installs
smooth-daemon, which `th daemon` and `th up` need on PATH.

rusqlite 0.32 → 0.40: the pin existed solely to unify libsqlite3-sys with
microsandbox's sea-orm→sqlx tree. microsandbox is gone and rusqlite is now
the only crate in the tree linking sqlite3 (cargo tree -i libsqlite3-sys).
No API changes needed.

User-facing strings: `th code` cold-start printed "starting Safehouse
microVM" and "cast online (wonk · goalie · narc · scribe · archivist ·
diver · groove)"; boot failures blamed a Safehouse microVM that hasn't
existed for weeks.

Gates: cargo fmt --check clean, cargo clippy 0 errors and no new warnings
(1760 pre-existing), cargo test 1297 passed / 0 failed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ZctFb4oiWoJraHN2db1nX
@changeset-bot

changeset-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: fb3b650

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@smooai/smooth Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

pnpm install:th was already fixed in the previous commit; this sweeps the
rest of the build tooling per the same rule (nothing should reference a
crate the microVM removal deleted):

- scripts/bench.sh: a wrapper for `cargo run -p smooai-smooth-bench`, a
  crate deleted with the microVM stack. Dead — removed.
- .github/workflows/release.yml: the protoc install was justified by
  smooth-narc's prost build.rs. No build.rs in the tree shells out to
  protoc anymore. Comment corrected; the install is kept, because a
  release build is the worst place to discover a transitive dep needed it.

All other package.json scripts point at files that exist;
scripts/sync-versions.mjs matches crate names by pattern, not a hardcoded
list, so it needed no change.

Still broken and NOT fixed here (needs a decision, not a docs edit):
.github/workflows/the-line.yml builds `smooai-smooth-bench` on every
release tag. Either the bench harness comes back or the-line retires.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ZctFb4oiWoJraHN2db1nX
@brentrager

Copy link
Copy Markdown
Contributor Author

Follow-up: dev-loop breakage confirmed and verified fixed

pnpm install:th was exiting 101. Fixed in the original commit; this follow-up sweeps the rest of the build tooling and verifies by actually running it:

INSTALL_TH_EXIT=0
Replacing /Users/brentrager/.cargo/bin/th
Replacing /Users/brentrager/.cargo/bin/smooth-daemon

Both install:th and install:th:full now install smooth-daemon instead of the deleted crates/smooth-operative. smooth-daemon is the right target — th deliberately does not link the daemon in (crates/smooth-cli/src/daemon_launcher.rs), so th daemon / th up need it resolvable on PATH.

Sweep results

Location Finding Action
package.json install:th, install:th:fullcrates/smooth-operative Fixed
scripts/bench.sh wrapper for cargo run -p smooai-smooth-bench (deleted crate) Deleted
.github/workflows/release.yml:227 protoc install justified by smooth-narc's prost build.rs Comment fixed, install kept
all other package.json scripts point at files that exist No change
scripts/sync-versions.mjs matches crate names by regex, no hardcoded list No change

On the protoc install: no build.rs in the tree shells out to protoc anymore, so it is dead work. I kept the install and corrected the comment rather than removing it — a release build is the worst place to discover a transitive dep needed it, and I can't test that without cutting a release.

Still broken — NOT fixed here, needs a decision

.github/workflows/the-line.yml runs on every release tag (v*) and does:

- name: Build smooth-bench
  run: cargo build --release -p smooai-smooth-bench

smooai-smooth-bench was deleted with the microVM stack, so the non-dry-run path fails. gh run list --workflow=the-line.yml returns no runs, so this may have been quietly dead for a while. The whole scripts/the-line/ subsystem (6 scripts + history/fixtures) depends on that harness. Either the bench harness comes back or the-line retires — that's a call above a docs PR, so I left it.

proto/ (narc.proto, scribe.proto, README.md) has zero consumers in the tree — both crates are gone and no build.rs reads them. Left in place rather than deleted since the README reads like an intentional protocol spec, but it's dead weight if nobody's planning to resurrect those services.

@brentrager
brentrager merged commit 231beb2 into main Jul 20, 2026
3 checks passed
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