Production-ready DX + release prep for the reactor CLI (packages/reactor-cli):
- `reactor init [dir]`: scaffold a minimal .prose project (gateway +
responsibility) + reactor.yml (sandbox.mode:none, a static-connector gateway)
+ .gitignore for .reactor/ + a project README. Keyless (no model surface);
refuses to clobber without --force. `reactor compile --check` RECOGNIZES the
scaffold (real contract-set fingerprint -> stale, not the no-contracts error),
and the contracts compile to a mountable IR under a fake provider.
- doctor polish: now reports the project sandbox mode (+ Docker availability when
mode:docker), state-dir writability, and compiled-IR freshness
(no-contracts/absent/stale/fresh). `--live` probes one smoke render by
dynamic-importing the live checks from the agent-render barrel (correction #8);
key PRESENCE is reported, never printed. Added `--json`. Stays keyless on the
report path (live deps reached only via dynamic import under --live).
- README: quickstart, full command reference + documented exit codes, the
compile -> run -> serve reference-client narrative, the cost-scales-with-
surprise story, across-reactor --concurrency semantics, and the Change-B
within-reactor-parallelism deferral note. examples/ (quickstart +
gateway-connector) run end-to-end offline from a fresh checkout, guarded by an
examples gate.
- npm pack is CLEAN: split the test compile into dist-test (tsconfig.test.json)
so the production `build` (tsconfig.build.json) excludes the test suite; the
published artifact ships dist/ + README.md + examples/ only — no test
scaffolding. bin wired to dist/cli.js.
Gate: CLI offline 76/76/0 (init + doctor + examples suites added);
SDK offline 421/414/0/7 (no regression, SDK untouched). --help for every
command; init/doctor recognized + honest keyless.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>