Environment runbooks
An agent with the right CLI (and nothing else) can one-shot a working Bench Ticket demo: a small makerspace helpdesk, not this marketing site and not a new product.
Logged-out: sign in with a first-party email code. Logged-in: file a ticket, see the queue, add a reply. That path exercises Identity, Sessions, Mail, Storage Core, Support Desk, and Health. No Stripe, Auth0, Entra, Cognito, passkeys-required login, or production email vendor.
| Environment | Record store | Blobs | Runbook | |
|---|---|---|---|---|
| Local Docker | createMemoryStore() |
none (no attachments) | Mailpit | Local Docker |
| Cloudflare | @pegma/storage-cloudflare-d1 |
R2 bucket (provisioned) | console / wrangler tail |
Cloudflare |
| Azure | @pegma/storage-azure-tables |
Blob container (provisioned) | console / container logs | Azure |
| AWS | @pegma/storage-dynamodb |
S3 (@pegma/storage-s3) |
console / CloudWatch | AWS |
The AWS record adapter is @pegma/storage-dynamodb (createDynamoDbStore) from storage-core#7. The AWS runbook uses the same one-shot shape as Azure and D1; it requires that adapter PR to be merged before pnpm add succeeds.
Fixture (CI-tested): recipes/bench-ticket — catalog recipe support-queue-slice. Pin versions from catalog.json. Do not invent Auth0, Entra, or Stripe steps.
Start with Local Docker. Use it as the template for the cloud runbooks.