Code Rooms
# Security Boundaries
Before touching the external world, prove the boundary.
## Provider Class Before Provider
Classify first:
- `http`
- `llm`
- `email`
- `payment`
- `webhook`
- `job`
- `file_export`
Then bind to a provider only after a contract exists.
## Adapter Pack Requirements
An adapter pack declares:
- provider class;
- allowed effect;
- allowed hosts;
- required env names;
- secret fields for redaction;
- `dry_run` and `apply` modes;
- idempotency policy;
- evidence required for proof.
## Dry-Run First
Dry-run may build request payloads, validate schemas, calculate idempotency keys,
and record plans. It must not mutate the external world.
## Apply Gate
Apply requires:
- exact plan identity;
- idempotency key;
- redaction checks;
- positive and negative proofs;
- explicit human authorization;
- revalidation immediately before execution.
If context changes, authorization expires.
## Secrets
Proof artifacts may store secret names such as `PAYMENT_PROVIDER_TOKEN`.
They must never store values.