Repository navigation
v4.39.0 — merge-scale memory: one Open Thread per file - #28
Merged
Merged
Conversation
Threads move out of continuity.md into memory/open-threads/thread-<id>.md (filename = fact id; the directory is the index), last_session is dropped (derived from the newest session log), archive files union-merge, reviews run serialized. All three built-in script pairs treat thread files as fact surfaces; new lint checks [thread-file], [duplicate-id], and [duplicate-state-key] (absorbed from PR #27). Contract test pins the merge behavior with real git merges, incl. the preserved same-thread conflict (the Tier 2 human gate) and a mutation check. Dogfooded: this repo's own 35 threads migrated. Design record: docs/DESIGN-merge-scale.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Co-Authored-By: Roland Heusser <skofgar@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
v4.39.0 (MINOR) — merge-scale memory: threads as files. Each Open Thread now lives in its own
memory/open-threads/thread-<id>.md(filename = the thread's fact id; content = exactly the bullet block that previously sat in continuity; the directory is the index, likesessions/).last_sessionis dropped from Project State (derived from the newest session log + its**Agent:**header).memory/archive/*.mdunion-merge via.gitattributes. Reviews run serialized (REVIEW.md). All three built-in script pairs treat thread files as fact surfaces, with new lint checks[thread-file],[duplicate-id], and[duplicate-state-key](absorbed from #27 — credit: Roland Heusser).tests/test_thread_layout_merge.shpins the merge contract with real git merges. Full lockstep: DECAY/REVIEW/MERGE/schema/ENABLE/MIGRATE, both PROTOCOL copies + bootstrap notes, templates, MANIFEST (new row + 2 semantic steps incl. the mandated protocol-propagation row), UPGRADE rung, CHANGELOG/README, examples annotated, and this repo's own 35 threads migrated (dogfood). Design record:docs/DESIGN-merge-scale.md.Why
At team scale,
continuity.mdmerge conflicts became a per-merge tax — concentrated in## Open Threads(multi-line blocks appended and edited at one anchor) and thelast_sessionscalar (bumped by nearly every session). This removes those conflict surfaces structurally, with no merge-time machinery: parallel work on different threads cannot conflict (different files), while both sides editing the same thread still conflicts per-file — the MERGE.md Tier 2 human gate, preserved by design and pinned by a mutation-checked test. The alternative (#27's merge driver) was verified to silently union Tier 2 clashes and winner-pick dateless scalars; its lint backstop and rehearsal-test pattern are absorbed here with credit, and a scalars-only driver stays the pre-scoped follow-up if scalar-bump conflicts persist in the field.Verification
memory-lint: 0 errors, 0 warnings on the migrated live tree, output byte-identical across python/node--check-manifestOK (19 semantic rows ≤ 4.39.0)bash tests/test_thread_layout_merge.sh— 4 real-git-merge cases: different-threads clean · same-thread conflicts (the load-bearing one) · archive union keeps both · mutation check (stripping the attribute restores the conflict)bash tests/test_githook_dispatchers.sh— unchanged, passesrefresh-metadatarun exercised the new in-place thread-file refresh on real dataCo-Authored-By: Claude Fable 5 noreply@anthropic.com
Co-Authored-By: Roland Heusser skofgar@gmail.com
🤖 Generated with Claude Code