Fill the RFC-007 Phase 3 ledger row from git provenance (fixes #618)#622
Conversation
PR #617 shipped without an Implementation ledger row, deliberately: the row's SHA must be the merge commit, which did not exist until it landed. Provenance derived from git against the files the row claims, not from an adjacent row and not from a branch tip: git log --follow --oneline scripts/em-graph.mjs -> dafc3c8 git log --follow --oneline tests/test-em-graph-links.mjs -> dafc3c8 That is the #582 / #605 class this defers to avoid. CI anchor cited as tests.yml:407-408, verified against the merged file. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
lantiscooperdev
left a comment
There was a problem hiding this comment.
Ledger provenance — one-line docs change, ACCEPT
Closes the deferred obligation from #617. Single table row, no code.
Why this was deferred rather than shipped in #617
The row's SHA must be the merge commit, which does not exist until the PR lands. Writing the feature-branch tip there is the defect #582 was filed for and #605 had to repair. #617's body stated the deferral explicitly and #618 tracked it with all 5 DEFER fields, so this is a closed loop, not a rediscovery.
Provenance, derived not copied
$ git log --follow --oneline -1 scripts/em-graph.mjs
dafc3c8 RFC-007 Phase 3: wiki-link + composes-with edges ... (#617)
$ git log --follow --oneline -1 tests/test-em-graph-links.mjs
dafc3c8 RFC-007 Phase 3: wiki-link + composes-with edges ... (#617)
Both files the row claims resolve to dafc3c8, confirmed against gh pr view 617 --json mergeCommit → dafc3c89da4fb740ffd957074b434df1162219cd. Not taken from the adjacent Phase 2 row, not from a workplan note.
Verified before writing the row
- CI anchor
tests.yml:407-408read from the merged file, not assumed from the pre-merge branch. node tests/test-em-graph-links.mjson mergedmain→31 passed, 0 failed.
Post-merge deploy of #617 — all three legs, done and verified at dafc3c8
| Leg | Verification | Observed |
|---|---|---|
| 1. Global | deploy-audit.mjs unfiltered + deployed-copy grep |
MISSING=0 DIFFER=0 EXTRA=0 UNDEPLOYED=0 (one cosmetic timestamp); install stamped dafc3c89da4f; deployed em-graph.mjs greps 13 for Phase 3 symbols |
| 2. Consumers | disk-scan shasum sweep, not the installer report |
25 of 26 at source 017b1bdd; the 26th is episodic-memory-pi's own source file, the standing deliberate collision |
| 3. Marketplace | git log -1 + grep |
clone 4a6fd3a → dafc3c8, Phase 3 symbols present |
Leg 1 needed a second pass: the first --install-hooks-force left second-opinion-providers.json stale (DIFFER=1) and only --install-second-opinion cleared it. The audit named the fix itself.
Leg 2 is the one worth flagging: --update-consumers reported files: [] for every consumer, which is exactly the report that concealed three stale v0.2.0 copies on 2026-07-25 (#601). The hash sweep is what proves the fleet current, not the installer's self-report.
Live smoke test of the deployed global copy
$ node ~/.episodic-memory/scripts/em-graph.mjs --nodes rule --edges wiki-link --hubs --top 3
verify-by-artifact-not-narrative-and-run-negative-scenarios degree 18
surface-tool-errors-offer-to-look-together-before-routing-around degree 9
use-claude-subagent-not-codex-for-second-opinion-reviews degree 9
Phase 3 is live against the real rule corpus, not just green in a fixture.
Follow-ups still open from the #617 arc
- #619 —
em-console.mjs:114whitelist omits--nodes/--edges. - #620 — unclosed code fence does not suppress extraction (affects shipped
citestoo). - #621 — recency ordering is minute-granular, so a fork-closure stub and its terminal are unorderable. Found while consolidating a two-session fork; already bit the documented handoff-recall command once.
What user approval is checking
Per Rule 17, your approval in the UI is the review-required gate. This is a one-line docs change with derived provenance and CI 8/8 green. Nothing architectural.
🤖 Posted by lantiscooperdev (bot account) — Claude Opus 5 (1M context).
Closes #618.
PR #617 shipped RFC-007 Phase 3 without an Implementation ledger row. That was deliberate and stated in the PR body: the row's SHA must be the merge commit, which does not exist until the PR lands. Writing a branch-tip SHA there is the defect #582 was filed for and #605 had to repair.
Provenance
Derived from git against the files the row claims to have changed, not from an adjacent row and not from a workplan note:
Both files resolve to
dafc3c8, which is #617's merge commit (gh pr view 617→mergeCommit.oid = dafc3c89da4fb740ffd957074b434df1162219cd).Also verified
tests.yml:407-408checked against the merged file, not assumed from the pre-merge branch.node tests/test-em-graph-links.mjson mergedmain→31 passed, 0 failed.One line, docs only.
🤖 Generated with Claude Code