diff --git a/CLAUDE.md b/CLAUDE.md index 473f6a0af..c38aba845 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -88,6 +88,7 @@ Operational knowledge lives in `.okf/` (`build/`, `content/`, `design/`, `workfl - **Never leave the shell in a subdirectory (2026-08-19)**: Bash cwd persists between calls; a bare `cd` breaks every later repo-relative path and reads as "file missing". Use absolute paths, `cd && cmd`, or `git -C`. If a known file reports missing, run `pwd` before believing it. - **New-doc locations — `docs/workflows/` is NOT a catch-all** (Paul 2026-08-01). Order: (1) engineering reference → its Johnny Decimal area (`docs/10-19-…` through `90-99-…`, naming `NN.NN-name-{reference|tutorial|how-to}.md`; check the area's README/existing numbers first); (2) company/OS → vault-owned, `docs/business/` stubs only; (3) opportunity validation → `docs/projects//`; (4) ADRs → `docs/adr/`, incidents → `docs/incidents/`, design system → `docs/design-system/`; (5) `docs/workflows/` ONLY for cross-cutting pipeline how-tos. Everything else edits an existing file. - **Stale-view check (2026-08-17)**: feedback quotes page text → grep current source FIRST; absent means stale tab/server — reply "already fixed, hard-refresh" with the link. Never fix a defect that no longer exists. +- **Read CI at the JOB level (2026-08-22)**: `gh run view --json conclusion` can report `success` for a run whose job concluded `failure` — trusting it produced a false "the re-run passed" handback on #566. Confirm with `--json jobs --jq '.jobs[].conclusion'` or `gh pr checks`. Likewise **"no checks reported" means not-yet-registered, not green**: a monitor waiting for `pending` to disappear fires instantly against an empty check list. Corollary that held when intuition didn't: identical difference_level across two runs = stale baseline, never flake. - **Handbacks end with local review links (Paul 2026-08-17/19)**: any change to something that renders locally ends with its `http://localhost://` link(s) — "renders locally" is the test (includes `linkedin-posts/` drafts), not "lives in content/". - **Session-random dev-server port (Paul 2026-08-17)**: `PORT=$((20000 + RANDOM % 20000)) bin/dev`, once per session; never assume 1313; never kill a server you didn't start. - **Reflection trigger**: Paul reports "code is bad" / "over-engineered" → HALT, 5-Why, fix config, then proceed.