scope

Pre-launch verifications captured here as decisions are locked.

npm package name

Decision: snappy-os (unscoped).

Probed 2026-04-17 via npm view snappy-os:

npm error code E404
npm error 404 Not Found - GET https://registry.npmjs.org/snappy-os - Not found

Exit code 1, 404 โ€” the name is unregistered and available. No fallback needed.

If a future namespace conflict emerges (e.g. another publisher races the name), fall back to @snappy-ai/os under the existing @snappy-ai org.

Out of scope for v1

These surfaces are intentionally NOT addressed by snappy-os v1. Each is documented here so future work has an explicit boundary to push against.

ChatGPT MCP apps and RemoteClaude

ChatGPT-hosted MCP apps and RemoteClaude do not get symlink fan-out, slash-command generation, or hook wiring in v1. The integration surface differs enough from local CLI runtimes that retro-fitting them under the same symlink-runtimes.sh would dilute the per-runtime contracts. v2 revisits after v1 has steady-state telemetry.

MCP config read or write

snappy-os never reads or writes MCP configuration files. Joes who run MCP do so in parallel; the two systems do not interfere. Reasoning: MCP is a separate substrate with its own conventions, and treating it as a peer runtime would import its conflicts into snappy-os. The consequence is that an MCP-only workflow does not benefit from snappy-os sync, but it also is not broken by it.

Email and Slack alert delivery

v1 has no email or Slack channel for alerts. Robert reads _status on the Worker frontend when checking in. The alerts/ log captures detail locally, and /_status aggregates across tenants. Adding push-style delivery in v1 would require a credentials-management surface that is out of scope; v2 may add a webhook receiver after the secrets-rotation flow has been exercised.

Auto-upgrade on pull

pull never auto-upgrades the bootstrap. Schema-version mismatch surfaces as a refusal with an upgrade prompt. Auto-upgrade-on-pull would change runtime configuration (hooks, symlinks) without the user's knowledge, which violates the "no surprise behavior change" principle. Manual npx snappy-os@latest remains the only upgrade path in v1.

Per-tenant tier self-serve

Tier upgrades (subscriber, client) are manual in v1 โ€” Robert updates tenants/<id>.json after confirmed acceptance. There is no Stripe hook, no self-serve portal, no automated grant on payment. v2 may add this once the tier model has been validated against real client work.

Tail-only ndjson delta uploads

Phase 12 documents <file>.last-pushed-offset sidecars as a v2 feature. v1 gzips and re-uploads append-only ndjson in full. Acceptable until any single file exceeds ~1 MB compressed; v2 implements tail-only when that threshold is approached.

Cross-tenant raw eval visibility

The PID aggregate is anonymized by tenant hash. No tenant ever sees another tenant's raw evals.ndjson. Quorum-driven promotion is the only cross-tenant surface. v1 deliberately does not expose per-tenant score histories or tenant-to-tenant comparison views.