chore: ignore .codex/, and stop shipping a plaintext credential in docs #712

Merged
timothy merged 1 commits from chore/codex-ignore-and-credential-redaction into main 2026-07-30 22:27:34 +02:00
Owner

refs #698, refs #711

Two small hygiene changes found while closing out #698.

1. .gitignore gains .codex/. It is generated by codex exec as a machine-local mirror of the .claude hooks (byte-identical copies, including pretooluse-merge-consent.sh). It is deliberately not tracked even though .claude/ is — 17 files — because config.toml embeds a plaintext Gitea credential and absolute /Users/timothy/... paths. Committing it would leak the credential and would not be portable. Ignoring it also unblocks scripts/refresh-shared-checkout.sh, which refuses on a dirty tree and had left the shared checkout 9 commits behind.

2. docs/handoffs/rest-api.md no longer inlines the credential. Line 79 carried curl -u timothy:<password>; it now uses "$ETV_GITEA_BASICAUTH" like every other doc.

Stated plainly: this does not purge git history. The literal still appears in 12 earlier commits and remains recoverable from them. Low severity — private LAN repo, and it is the documented default password — but if you want it gone from history that is a separate, deliberate operation (filter-repo + force-push + credential rotation), and rotating the password is the cheaper and more effective half.

.codex/ mirroring the gate-enforcing hooks while being absent from the merge gate's PROTECTED list is a distinct (currently latent) gap, filed as #711 rather than fixed here.

Not docs-only, so this needs a real verdict rather than the automatic exemption.

refs #698, refs #711 Two small hygiene changes found while closing out #698. **1. `.gitignore` gains `.codex/`.** It is generated by `codex exec` as a machine-local mirror of the `.claude` hooks (byte-identical copies, including `pretooluse-merge-consent.sh`). It is deliberately **not** tracked even though `.claude/` is — 17 files — because `config.toml` embeds a plaintext Gitea credential and absolute `/Users/timothy/...` paths. Committing it would leak the credential and would not be portable. Ignoring it also unblocks `scripts/refresh-shared-checkout.sh`, which refuses on a dirty tree and had left the shared checkout 9 commits behind. **2. `docs/handoffs/rest-api.md` no longer inlines the credential.** Line 79 carried `curl -u timothy:<password>`; it now uses `"$ETV_GITEA_BASICAUTH"` like every other doc. **Stated plainly: this does not purge git history.** The literal still appears in 12 earlier commits and remains recoverable from them. Low severity — private LAN repo, and it is the documented default password — but if you want it gone from history that is a separate, deliberate operation (filter-repo + force-push + credential rotation), and rotating the password is the cheaper and more effective half. `.codex/` mirroring the gate-enforcing hooks while being absent from the merge gate's `PROTECTED` list is a distinct (currently latent) gap, filed as #711 rather than fixed here. Not docs-only, so this needs a real verdict rather than the automatic exemption.
timothy added 1 commit 2026-07-30 22:00:12 +02:00
chore: ignore .codex/, and stop shipping a plaintext credential in docs
PR Gates / CI image pin matches docker/ci (pull_request) Successful in 10s
PR Gates / Docs update reminder (pull_request) Successful in 16s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 15s
PR Gates / decisions lifecycle (pull_request) Successful in 22s
Review verdict / Set review-verdict status (pull_request_target) Successful in 21s
PR Gates / Script tests (pytest) (pull_request) Successful in 1m15s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 1m29s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (pull_request) Successful in 17m25s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 20m3s
review-verdict/h10 Review-verdict: MERGEABLE @ 980da6d (base: main)
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 22m44s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
980da6db00
.codex/ is generated by `codex exec` as a machine-local mirror of the .claude hooks.
It is deliberately NOT tracked even though .claude/ is (17 files): its config.toml
embeds a plaintext Gitea credential and absolute /Users paths, so committing it would
leak the credential and would not be portable anyway. Ignoring it also unblocks
scripts/refresh-shared-checkout.sh, which refuses on a dirty tree.

Separately, docs/handoffs/rest-api.md carried the same credential inline; it now
references $ETV_GITEA_BASICAUTH like every other doc. NOTE this does not purge git
history — the literal appears in 12 earlier commits and is still recoverable there.

Refs: #698
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
Owner

Review-verdict: MERGEABLE @ 980da6d

Two-file hygiene change, self-reviewed; a cross-family round is not proportionate here and that is stated rather than skipped silently. .gitignore gains .codex/ (generated machine-local mirror of the .claude hooks; its config.toml holds a plaintext Gitea credential and absolute /Users paths, so tracking it would leak the credential and is not portable). docs/handoffs/rest-api.md stops inlining that credential and uses $ETV_GITEA_BASICAUTH like every other doc. Verified: the literal is now absent from all tracked files; it REMAINS in 12 historical commits, which this does not and cannot address — rotating the password is the effective fix and is left to the operator. No executable/CI/gate path is touched. The related PROTECTED-list gap is filed as #711, not fixed here.

Review-verdict: MERGEABLE @ 980da6d Two-file hygiene change, self-reviewed; a cross-family round is not proportionate here and that is stated rather than skipped silently. .gitignore gains .codex/ (generated machine-local mirror of the .claude hooks; its config.toml holds a plaintext Gitea credential and absolute /Users paths, so tracking it would leak the credential and is not portable). docs/handoffs/rest-api.md stops inlining that credential and uses $ETV_GITEA_BASICAUTH like every other doc. Verified: the literal is now absent from all tracked files; it REMAINS in 12 historical commits, which this does not and cannot address — rotating the password is the effective fix and is left to the operator. No executable/CI/gate path is touched. The related PROTECTED-list gap is filed as #711, not fixed here.
timothy merged commit f9cbd152bc into main 2026-07-30 22:27:34 +02:00
Sign in to join this conversation.