Skip to content

v3.4.38 — Naming System v2: the filename is the index

Choose a tag to compare

@github-actions github-actions released this 20 Jul 18:38

Naming System v2 — the filename is the index

Designed by a 5-seat round table (standards research · cold-start testing · retrieval engineering · robustness · taste), spec + arbitration record in docs/proposals/2026-07-20-naming-v2-spec.md.

A 10-question cold-start test scored the old naming at 55%, and proved filenames alone top out at ~75–80%. v2's answer is a two-audience split: the filename is the human/triage index (immutable-at-birth fields only — printed none--none nulls are gone), and a materialized _index.md per store is the machine fast-path (severity-sorted for corrections, regenerated atomically on every write). Names + ≤3 pinned index files ⇒ 90%+ cold-start orientation, honestly.

Highlights

  • Per-store grammar: journal {date}--{saveType}--[{sig}]--[{theme}]--{slug}.md (nulls omitted); corrections {date}--{rule-slug}.json — slug from the rule, not the trigger utterance (EN + CJK interjection stripping, full-width punctuation aware).
  • One sanitizer: lowercase + NFC + byte-capped; agentrecall/AgentRecall can no longer split your corpus on case-sensitive filesystems (existing-dir reuse, deterministic fork resolution). A source-level guard test makes raw project-path construction outside paths.ts unrecreatable.
  • Materialized indexes: corrections/_index.md · journal/_index.md · rooms/_index.md — atomic, never fail the underlying write.
  • Race & fork fixes: same-day journal TOCTOU under per-project locks; rewrite paths reuse on-disk filenames (no orphan duplicates); _index.md can't knock a project off the status board; FSRS reinforce no longer starves uppercase-slug legacy skills.

Migration

Zero-rename, new-writes-only. Existing files keep their names forever; all legacy naming generations keep parsing. Deferred to v2.1 (spec §7): room/topic-level case-fold, sig/theme vocabulary pruning.

Verified: 994/994 tests across 4 packages · tool-surface guard untouched (15/15) · 2 independent code reviews, all CRITICAL/HIGH closed.

Full Changelog: v3.4.37...v3.4.38