test: guard published CLI examples and retired email flag
Published email/song examples were not checked against the built CLI, and the retired --room-id flag had no dedicated rejection guard. Add tests that extract examples and the chat-link option from an immutable, hash-verified Marketing guide, run the compiled entrypoint with synthetic credentials and intercepted requests, and assert request bodies or rejection before dispatch.
No runtime, dependency, package version, or publishing workflow changes. Documentation owners can run the same check against a candidate guide using RECOUP_CLI_REFERENCE_PATH; default coverage is the pinned guide, not future live docs or installed npm behavior.
Validation: local build and all 82 tests across 13 files pass. Both deliberate mutations fail at the intended guard: changing the documented flag to --room-id, and adding that retired alias to the compiled parser. Binary restored and five focused tests pass again. Local typecheck is blocked by missing Node declarations in the reused dependency tree; clean PR CI must verify it. Independent source review found no actionable issues; reviewer did not rerun builder checks.
Hold before merge: merging main automatically bumps/publishes npm. This task authorizes preparing the candidate, not npm publication; coordinator must resolve that approval separately. Do not change publishing policy or retry registry publication as part of this PR.
Summary by cubic
Adds tests that run the published CLI examples from the hash-pinned Marketing guide against the compiled CLI with intercepted requests, with a dedicated guard for the retired --room-id flag.
- Extracts email and song examples plus the chat link flag from a SHA256-verified fixture of the maintained guide.
- Runs the built
dist/bin.cjswith a synthetic API key, asserts exact request bodies, and confirms--room-idis rejected before any request is sent. - Documentation owners can set
RECOUP_CLI_REFERENCE_PATHto run the same assertions against a candidate guide before publishing.
Hold before merge: merging main automatically bumps and publishes npm, which this PR does not authorize; the coordinator must resolve that approval separately.