Files
ruvnet--RuView/harness/homecore/README.md
T
rUv 90b29595fb feat(homecore): add WASM-first developer metaharness (#1477)
Adds the accepted ADR-285 Homecore metaharness, WASM-first kernel, read-only MCP guidance, guarded local host adapters, reviewed memory, and provenance-only npm release gates.
2026-07-29 19:51:21 -04:00

120 lines
4.5 KiB
Markdown

# Homecore metaharness
`homecore` is the developer-facing metaharness for RuView's native Rust
Homecore stack. Its package contract is:
```bash
npx homecore
```
The harness maps current capabilities to source and validation commands,
exposes a bounded MCP server, and can delegate repository exploration to a
locally installed Claude Code or Codex CLI. It does not start a home server,
change configuration, migrate data, or publish code by itself.
## Commands
```bash
# Source-cited overview; this is the default command.
homecore guidance
homecore guidance --topic plugins --query "Wasmtime signatures"
homecore capabilities
# Diagnose the package, WASM kernel, local CLIs, and optional checkout.
homecore doctor --repo .
homecore wasm status --strict
# Run focused Homecore tests in a trusted RuView checkout.
homecore verify --repo . --profile core
homecore verify --repo . --profile wasm
homecore verify --repo . --profile hap
# Explore through a local host. Both are read-only by default.
homecore agent run --host codex --repo . --prompt "Map startup restore"
homecore agent run --host claude-code --repo . --prompt "Review plugin trust"
# Start the stdio MCP server.
homecore mcp start
# Search or verify reviewed shared knowledge.
homecore brain search --query "REST WebSocket compatibility"
homecore brain verify --repo .
```
Workspace-writing host runs require both `--allow-write` and `--confirm`.
The harness never emits permission-bypass flags. Every MCP tool is read-only;
Cargo verification remains an explicit local CLI operation and is not exposed
through MCP. MCP request size, queue depth, tool-call duration, and the total
tool-call budget of each server process are bounded.
Repository-aware MCP calls are bound to the exact RuView checkout found when
the server starts. Launch it from that checkout, or set
`HOMECORE_TRUSTED_REPO` to its root. An MCP request cannot nominate a different
checkout as its own trust anchor.
The packaged `.codex`, `.claude`, and generic MCP templates invoke an
already-installed `homecore` binary and never track an npm dist-tag. To print
configuration for an ephemeral installation, run `homecore install --host
codex` or `homecore install --host claude-code`; the generated `npx`
configuration pins the package's exact version.
## WASM-first runtime
The harness asks `@metaharness/kernel` for its packaged WebAssembly backend
before considering a native or JavaScript fallback. The kernel validates the
MCP server specification. `homecore wasm status` reports the backend that
actually loaded; `--strict` fails if it is not WASM.
This is separate from Homecore's application plugin boundary:
- compiled-in native plugins must be explicitly registered in the server;
- external plugin packages are bounded and signature-checked WebAssembly;
- execution through Wasmtime is feature-gated;
- arbitrary native dynamic libraries are not loaded.
Use `homecore verify --profile wasm` to exercise the Wasmtime-specific Rust
tests in a checkout.
## Capability honesty
The catalog distinguishes implemented, feature-gated, provider-required, and
integration-dependent behavior. Home Assistant compatibility means the
documented core REST/WebSocket contract, not every endpoint supplied by the
Home Assistant integration ecosystem. HAP protocol tests are not Apple
certification. STT/TTS provider contracts do not imply that a deployment has a
real speech provider.
Every guidance result cites repository paths, focused validation commands, and
known limitations. A packaged citation is navigation evidence; source, tests,
accepted ADRs, and repository policy remain authoritative.
## Shared brain
Reviewed records live in `brain/corpus/core.jsonl`. Search is deterministic and
local. `brain propose` prints an unreviewed JSONL candidate but never edits the
canonical corpus. Retrieved text cannot grant authority, change tool policy,
or override repository instructions. Private indexes and raw transcripts are
never packaged.
## Development
```bash
npm install --ignore-scripts
npm test
npm run test:security
npm run brain:verify -- --repo ../..
npm run manifest:update
npm run manifest:verify
npm audit --omit=optional
npm pack --dry-run
```
Release is CI-only with npm provenance. Do not publish from a workstation.
## Architecture
ADR-285 defines this harness. It builds on the Homecore master decision
(ADR-126), the plugin and API boundaries (ADR-128 and ADR-130), the server
security review (ADR-161), the migration contract (ADR-165), and the existing
RuView metaharness and npm distribution decisions (ADR-182, ADR-263, ADR-265).