feat(effort-graph): journaled semantic writer for the Effort Graph#207
Merged
Conversation
New package @flatbread/effort-graph implementing ADRs 0002-0006: the standalone write surface for the Effort Graph, independent of core's read-only GraphQL layer. - thirteen v1 semantic mutations (ADR-0005) as a Zod discriminated union, validated against a committed index (targets exist, lifecycle transitions legal, same-Effort edges) - hybrid IDs (ADR-0006): kind prefix + kebab slug (<=48 chars) + 16-char lowercase Crockford-base32 80-bit suffix - forward-canonical edges with materialized back-edge projections written in the same save group (ADR-0004); canonical frontmatter key order and sorted edge arrays for merge-friendly YAML - write-ahead journal (ADR-0004): fsync-ordered intent record with before/after images, same-directory temp-file+rename applies with writer lock verification before each rename, committed/published markers, atomically published generation counter, idempotent crash recovery (uncommitted -> rollback, committed -> complete + reindex + publish) - per-graph writer lock with lease expiry and stale-lock reclamation - injectable EffortGraphIndexer seam for the future live-reindex bridge; no-op default keeps the writer standalone - effortGraphContent() preset exposing the six collections under .flatbread-efforts/ (polymorphic edge fields intentionally left out of refs until union refs land in core) - 33 AVA tests: ids, schemas + transformer-markdown round-trip, per-mutation file expansion, journal crash recovery, lock contention, preset shape Co-authored-by: Cursor <[email protected]> Change-Id: I4bd555ef4e13a2d7d5933f1abb9e538fa04e5237
Collaborator
Author
|
This pull request is part of a Mergify stack:
|
This was referenced Jul 17, 2026
Merged
Merged
Collaborator
Author
|
@Mergifyio queue |
Contributor
Merge Queue Status
This pull request spent 10 minutes 45 seconds in the queue, including 5 minutes 35 seconds running CI. Required conditions to merge
|
Base automatically changed from
stack/tonyketcham/feat/unified-watch-effort-graph/unified-watch-incremental-reindex-live-schema-swap--e2519e41
to
main
July 18, 2026 08:40
…graph/journaled-semantic-writer-effort-graph--4bd555ef
tonyketcham
deleted the
stack/tonyketcham/feat/unified-watch-effort-graph/journaled-semantic-writer-effort-graph--4bd555ef
branch
July 18, 2026 08:46
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.
New package @flatbread/effort-graph implementing ADRs 0002-0006: the
standalone write surface for the Effort Graph, independent of core's
read-only GraphQL layer.
validated against a committed index (targets exist, lifecycle transitions
legal, same-Effort edges)
lowercase Crockford-base32 80-bit suffix
the same save group (ADR-0004); canonical frontmatter key order and sorted
edge arrays for merge-friendly YAML
before/after images, same-directory temp-file+rename applies with writer
lock verification before each rename, committed/published markers,
atomically published generation counter, idempotent crash recovery
(uncommitted -> rollback, committed -> complete + reindex + publish)
no-op default keeps the writer standalone
.flatbread-efforts/ (polymorphic edge fields intentionally left out of
refs until union refs land in core)
file expansion, journal crash recovery, lock contention, preset shape
Co-authored-by: Cursor [email protected]
Depends-On: #206