## Project log (required, dual-write) When you fix or decide something non-trivial in this repo, write BOTH of these in the same turn as the commit: 1. `docs/troubleshooting.md` — terse problem-indexed reference (Symptom / Cause / Fix / Commit / Pattern). Append a new entry below the `---` divider. 2. `content/logs//-.mdx` — dated narrative with frontmatter: ```yaml --- title: "Concrete one-line title" date: "YYYY-MM-DD" project: "" kind: "troubleshoot | tech-retro | ux-retro | business | monetization | update" visibility: "public | unlisted | private" language: "en" summary: "One or two sentences." tags: ["topic", "stack"] --- ``` ### What counts as non-trivial LOG IT: build/deploy errors, hidden coupling, dependency migrations, architecture or infra decisions, design/copy choices made on judgment, strategy or pricing memos. DON'T LOG: routine renames, lint fixes, typo fixes, dependency bumps with no behavior change, formatting commits. ### Anti-hallucination rules (non-negotiable) 1. **Symptom is literal.** Paste the actual error/output in a fenced code block. No paraphrasing. 2. **Cause is verified.** Only state what you read in the actual code or ran in the actual command. If you guessed, write `Hypothesis: ...` and `Verified by: ...`. If unverifiable, omit Cause or mark `Suspected:` with an explicit caveat. 3. **Fix names actual files.** `git diff` is the source of truth. If `git diff` doesn't show the change, don't claim you made it. 4. **Commit hash AFTER committing.** Use `git rev-parse HEAD` after the commit lands. Never write a hash that doesn't exist yet. 5. **Date from git.** `git log -1 --format=%cI` for the commit time. For forward-looking entries (decisions being written in the moment), today's date from the session start. Never guess. 6. **Pattern is rare.** Only write a Pattern line if a recurring lesson is obvious from this one incident. Padding it with generic advice is worse than omitting. 7. **No fabricated metrics.** "Took about 60s" if you saw 60s. "Took 1m 23s exactly" only if you have the timestamp. ### Visibility defaults by kind - `business`, `monetization` → `private` by default (strategy memos shouldn't ship accidentally) - `knowledge`-style facts → `unlisted` if you have such a type - Everything else → `public` Override per entry in frontmatter. ### Skip rule for routine commits The Stop hook blocks the turn until the most recent commit is either logged OR explicitly marked routine. To skip without writing an entry: - Option A — put `[no-log]` (or `[skip-log]`) anywhere in the commit message. The hook auto-appends a `` line to `docs/troubleshooting.md` so it stops firing. - Option B — append the same `` line yourself, then commit. Same effect. Routine = typo fix, lint fix, formatting commit, dep bump without behavior change, file rename. Anything else: write the entry.