Journal: one file per entry in log/; drop merge=union #2

Merged
kristofferopsahl merged 2 commits from log-per-entry into main 2026-09-08 16:26:59 +02:00

Implements the proposal from #1, with three deltas argued in review:

  1. Log entries are history, not pages. Lint excludes log/ from the index/orphan/link/source checks (like raw/) instead of frontmatter-checking entries — pages get merged/split/deleted legitimately, so checking historical targets would generate perpetual noise. The one new deterministic check is filename format (LOG-FORMAT:).
  2. Entries stay one-liners, no frontmatter — cat wiki/log/*.md reads exactly like the old journal.
  3. The installer seeds log/<today>-init-wiki.md when the journal is empty, and the session-start hook derives last-update from the newest entry filename (legacy log.md fallback for pre-migration repos).

Also per the issue: template ships log/ instead of log.md; the .gitattributes fragment is gone entirely (union was its only line — existing repos keep a harmless leftover, or delete the line); existing log.md files stay as read-only history — no entry splitting.

One honest nuance on failure mode 1: GitHub definitely ignores merge drivers in PR mergeability, but Forgejo merges via real git and may honor in-tree merge=union; the claim is strongest for GitHub-hosted adopters and local rebases. Failure mode 2 (silent resurrection) held everywhere and justifies the change on its own.

Suite: 93 asserts green (was 85). Migration for adopters: pull the kit, re-run install.sh (machinery + docs refresh; a dated init entry is seeded only if log/ is empty), keep log.md as history, optionally delete the merge=union line from .gitattributes.

Implements the proposal from #1, with three deltas argued in review: 1. **Log entries are history, not pages.** Lint excludes `log/` from the index/orphan/link/source checks (like `raw/`) instead of frontmatter-checking entries — pages get merged/split/deleted legitimately, so checking historical targets would generate perpetual noise. The one new deterministic check is filename format (`LOG-FORMAT:`). 2. **Entries stay one-liners, no frontmatter** — `cat wiki/log/*.md` reads exactly like the old journal. 3. **The installer seeds `log/<today>-init-wiki.md`** when the journal is empty, and the session-start hook derives last-update from the newest entry filename (legacy `log.md` fallback for pre-migration repos). Also per the issue: template ships `log/` instead of `log.md`; the `.gitattributes` fragment is gone entirely (union was its only line — existing repos keep a harmless leftover, or delete the line); existing `log.md` files stay as read-only history — no entry splitting. One honest nuance on failure mode 1: GitHub definitely ignores merge drivers in PR mergeability, but Forgejo merges via real git and may honor in-tree `merge=union`; the claim is strongest for GitHub-hosted adopters and local rebases. Failure mode 2 (silent resurrection) held everywhere and justifies the change on its own. Suite: 93 asserts green (was 85). Migration for adopters: pull the kit, re-run `install.sh` (machinery + docs refresh; a dated init entry is seeded only if `log/` is empty), keep `log.md` as history, optionally delete the `merge=union` line from `.gitattributes`.
Two failure modes of log.md + merge=union, both field-observed: forge-side
PR mergeability ignores in-tree merge attributes (clean locally, conflicted
on the PR page), and union's keep-both-sides rule silently resurrects
deleted or edited lines (a rebase resurrected stale pre-rename journal
lines with no warning). One file per entry makes both structurally
impossible.

- template ships log/ (empty); installer seeds a dated init entry when the
  journal is empty; legacy log.md is read-only history with hook fallback
- .gitattributes fragment dropped entirely (union was its only line)
- session-start hook: page count excludes log/, last-update from newest
  entry filename
- lint: log/ excluded from page checks (entries are history), new
  LOG-FORMAT filename check
- WIKI.md/SKILL.md/README/spec updated; suite now 93 asserts green

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
decisions/log-per-entry.md + index entry; first log/ entry (evolve)
records the schema change. log.md stays as read-only history.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
kristofferopsahl deleted branch log-per-entry 2026-09-08 16:27:00 +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
kristofferopsahl/auto-llm-wiki!2
No description provided.