Development and CI use synthetic homes only.
pnpm check
pnpm smoke
pnpm smoke:package
pnpm pack:checkpnpm check runs formatting, lint, type checking, all unit and integration
tests, and JSON Schema drift verification.
pnpm smoke builds the CLI and:
- creates a temporary synthetic home and passes the destructive-root guard
- writes synthetic provider resources and a project source file
- creates one configured
node_modulesartifact - saves an audit and content-addressed plan
- verifies preview does not mutate
- applies the plan with an isolated state directory
- verifies the exact artifact is gone
- verifies the project source file remains
- creates a disposable Git remote, main worktree, and pushed linked worktree
- audits and quarantines the linked worktree at
recoverablerisk - verifies zero immediate reclaim and durable pending bytes
- restores it through
agentrinse undo - quarantines it again and purges it through clean Git removal
- verifies the path and Git registration are gone
- validates the completed journals and quarantine manifests
It never reads data from $HOME.
- create fixtures with
mkdtemp - call
assertDestructiveFixtureRootbefore any fixture can remove data - keep destructive roots below the resolved OS temporary directory
- never use
/, the temporary root itself, the real home, an ancestor of the repository checkout, or a path reached through an escaping symlink - never copy real transcripts or provider databases into Git
- replace personal paths with
/tmpor/fixture - never preserve real hostnames, usernames, tokens, emails, or IP addresses
- use fake process and owner-command runners where practical
- test every new mutation with stale identity, symlink, active process, rollback, partial failure, and source-preservation cases
- worktree tests must use disposable repositories and must never target a developer checkout
Use a fresh Crabbox for packaged destructive scenarios. Install the packed tarball like a user, construct only synthetic resources, exercise preview and apply through the CLI, collect the run journal, and destroy the lease.