docs: name .env.example, not .env.dev, as the source of .env (PMS-708) #490

Merged
longjacksonle merged 3 commits from docs/PMS-708-env-example-not-env-dev into main 2026-08-03 17:27:35 +02:00

What

Corrects every in-repo statement about how .env comes into existence. There is no .env.dev file; ensure-env (a dependency of just dev) generates .env from the committed .env.example and mints fresh random values for every self-owned secret (PMS-490), rather than copying a file.

Changes

  • CLAUDE.md dev-stack section: replaces "First run copies .env.dev to .env" with the real generation-from-.env.example behavior (fresh secrets, third-party creds left as placeholders, idempotent per clone).
  • compose.dev.yml: every ${VAR:?... (which copies .env.dev to .env)} guard message now names .env.example, so a developer who trips a guard is pointed at the file that actually exists (not just the two AC-named JWT_SECRET/ENCRYPTION_KEY guards, but all of them, plus the header comment).
  • docs/quickstart.md: the obsolete "Seed .env.dev" section (a hand-authored template carrying now-stale hardcoded postgres/postgres passwords and port 4301) is replaced by the actual flow: just dev generates a working .env; you only edit it afterward for third-party creds. Fixes the remaining .env.dev references in the boot steps, routine commands, and troubleshooting.
  • README.md, docs/dev-docs/README.md, src/infisical/dev.rs comment, .gitignore (dropped the dead .env.dev ignore): swept to .env / .env.example. The README admin-bootstrap note also corrected, since .env.example ships ADMIN_EMAIL/ADMIN_PASSWORD empty (no defaults are shipped anymore).

Acceptance criteria

  • grep -rn "env\.dev" . returns no hits for the .env.dev file (the sole remaining substring match is .env.development.local, an unrelated standard ignore for a different tool).
  • CLAUDE.md describes .env as generated from .env.example with freshly generated self-owned secrets.
  • The compose.dev.yml JWT_SECRET and ENCRYPTION_KEY guard messages name .env.example.

Verification

just check clean (fmt, clippy, compile, migration/mail/runner gates). No em-dashes introduced. .env confirmed still gitignored (git check-ignore .env).

🤖 Generated with Claude Code

https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss

## What Corrects every in-repo statement about how `.env` comes into existence. There is no `.env.dev` file; `ensure-env` (a dependency of `just dev`) generates `.env` from the committed `.env.example` and mints fresh random values for every self-owned secret (PMS-490), rather than copying a file. ## Changes - **CLAUDE.md** dev-stack section: replaces "First run copies `.env.dev` to `.env`" with the real generation-from-`.env.example` behavior (fresh secrets, third-party creds left as placeholders, idempotent per clone). - **compose.dev.yml**: every `${VAR:?... (which copies .env.dev to .env)}` guard message now names `.env.example`, so a developer who trips a guard is pointed at the file that actually exists (not just the two AC-named `JWT_SECRET`/`ENCRYPTION_KEY` guards, but all of them, plus the header comment). - **docs/quickstart.md**: the obsolete "Seed `.env.dev`" section (a hand-authored template carrying now-stale hardcoded `postgres/postgres` passwords and port 4301) is replaced by the actual flow: `just dev` generates a working `.env`; you only edit it afterward for third-party creds. Fixes the remaining `.env.dev` references in the boot steps, routine commands, and troubleshooting. - **README.md**, **docs/dev-docs/README.md**, **src/infisical/dev.rs** comment, **.gitignore** (dropped the dead `.env.dev` ignore): swept to `.env` / `.env.example`. The README admin-bootstrap note also corrected, since `.env.example` ships `ADMIN_EMAIL`/`ADMIN_PASSWORD` empty (no defaults are shipped anymore). ## Acceptance criteria - [x] `grep -rn "env\.dev" .` returns no hits for the `.env.dev` file (the sole remaining substring match is `.env.development.local`, an unrelated standard ignore for a different tool). - [x] CLAUDE.md describes `.env` as generated from `.env.example` with freshly generated self-owned secrets. - [x] The compose.dev.yml `JWT_SECRET` and `ENCRYPTION_KEY` guard messages name `.env.example`. ## Verification `just check` clean (fmt, clippy, compile, migration/mail/runner gates). No em-dashes introduced. `.env` confirmed still gitignored (`git check-ignore .env`). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
No `.env.dev` exists; `ensure-env` generates `.env` from the committed `.env.example` and mints fresh random self-owned secrets rather than copying a file (PMS-490). Fixes the CLAUDE.md "First run copies .env.dev to .env" claim and rewrites every `${VAR:?... copies .env.dev to .env}` compose guard message to name `.env.example`, so a developer hitting the guard is pointed at the file that actually exists.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
docs: sweep remaining .env.dev references to .env.example (PMS-708)
All checks were successful
E2E / Playwright against staging (pull_request) Successful in 1m46s
Check / fmt + clippy + build + tests (pull_request) Successful in 1m46s
Integration / integration tests (pull_request) Successful in 3m22s
02005324fb
Completes the grep-clean acceptance criterion. Rewrites the quickstart's obsolete "Seed .env.dev" section (a hand-authored template with stale hardcoded passwords/ports) into the real generation flow, and corrects the README, dev-docs index, the infisical/dev.rs comment, and the stale `.gitignore` entry. The only remaining `env.dev` substring is `.env.development.local`, an unrelated standard ignore for a different tool, not a reference to the removed file.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
docs: refresh quickstart staleness beyond the .env sweep (PMS-708)
All checks were successful
E2E / Playwright against staging (pull_request) Successful in 1m52s
Check / fmt + clippy + build + tests (pull_request) Successful in 2m29s
Integration / integration tests (pull_request) Successful in 3m52s
Create release / Gate (release-branch merges only) (pull_request) Successful in 0s
Create release / Create release from merged PR (pull_request) Has been skipped
53aa1b6e62
While in quickstart.md, correct adjacent drift the .env sweep sat next to: the single-test example named the removed `mokosh-auth-crypto` crate (now `cargo test -p mokosh-server utils::totp::tests::rfc6238_vector`); the "what is real vs stub" section still claimed only four modules have handlers and 14 return 501 (now ~30 route groups are implemented and only the PDF report-export format returns 501); and the auth section described the removed mokosh-auth OIDC IdP and `MOKOSH_AUTH_*` env (now the bunyip-as-OP Resource-Server path plus legacy HS256 cookie auth, per PMS-295).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QLd9c7niucrqx68v4AxVss
longjacksonle deleted branch docs/PMS-708-env-example-not-env-dev 2026-08-03 17:27:36 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-server!490
No description provided.