feat(sync): port logmind sync from Python (B5b / G4.a) - #135
Conversation
…ocs/reviews/PR-*.md
Worktree CWD basename leaked into the previous logmind log auto-regen. Regenerated from /Users/ludlow/logmind so the tree root is 'logmind' and the .benchmarks entry (since-removed) is dropped.
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Claude finished @thrillmot's task in 6m 19s —— View job 🐛 Clud Bug reviewThis round: 1 critical · 1 minor · 0 resolved from prior · 0 still open Found: 1 🔴 / 1 🟡 / 0 🟣 Per-skill scan
🔴 [critical-issues-only]: Reasoning
🟡 [critical-issues-only]: Reasoning
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
🐛 Clud Bug reviewThis round: 1 critical · 1 minor · 0 resolved from prior · 0 still open Found: 1 🔴 / 1 🟡 / 0 🟣 Per-skill scan
Critical findings🔴 [critical-issues-only]: Reasoning
Minor findings🟡 [critical-issues-only]: Reasoning
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
# Conflicts: # docs/timeline.md
|
Claude finished @thrillmot's task in 4m 16s —— View job PR Review — feat(sync): port logmind sync from Python (B5b / G4.a)
This synchronize event was a merge-from-main commit only — This round: 0 critical · 0 minor · 0 resolved from prior · 2 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Still open from prior review🔴 🟡 Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
🐛 Clud Bug reviewThis round: 0 critical · 0 minor · 0 resolved from prior · 2 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
…on ok line (review #135)
|
Claude finished @thrillmot's task in 2m 21s —— View job PR Review — feat(sync): port logmind sync from Python (B5b / G4.a)
Both prior findings were addressed in Bug 1 (🔴): Bug 2 (🟡): No new issues found in the delta. |
🐛 Clud Bug reviewThis round: 0 critical · 0 minor · 2 resolved from prior · 0 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
# Conflicts: # docs/file-structure.md # docs/timeline.md
|
Claude finished @thrillmot's task in 4m 21s —— View job PR Review — feat(sync): port logmind sync from Python (B5b / G4.a)
The synchronize event is a merge-from-main (f3eab2e). Both prior findings were addressed in fa70735 and the review threads are confirmed resolved. No new issues found in the complete sync implementation. This round: 0 critical · 0 minor · 2 resolved from prior · 0 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
🐛 Clud Bug reviewThis round: 0 critical · 0 minor · 2 resolved from prior · 0 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
# Conflicts: # docs/file-structure.md # docs/timeline.md
|
Claude finished @thrillmot's task in 4m 18s —— View job PR Review — feat(sync): port logmind sync from Python (B5b / G4.a)
Delta since last review (f3eab2e → e5a01e9) is a merge-from-main carrying the Both prior findings were addressed in fa70735 and are confirmed resolved via GraphQL ( This round: 0 critical · 0 minor · 2 resolved from prior · 0 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
🐛 Clud Bug reviewThis round: 0 critical · 0 minor · 2 resolved from prior · 0 still open Found: 0 🔴 / 0 🟡 / 0 🟣 Per-skill scan
Skills referenced: [critical-issues-only, evidence-based-review, respect-existing-conventions, clud-bug-collaboration] |
Summary
Implements the canonical Go port of
logmind sync— the loop-closer in theskill suggestion cycle. Reads
docs/reviews/PR-<n>.mdfiles (written byclud-bug-reviewper SPEC §1.8.1) and updates each cited skill's.claude/skills/<name>/PROVENANCE.mdwithcited-by-clud-bugcounts andlast-refineddates.Why this is a greenfield Go port (not a faithful port from Python)
There is no
src/logmind/sync.pyin the pre-v1.0 Python codebase. Thev0.6.x line closed the loop differently — via
.clud-bug.jsonusagecounters maintained by the
clud-bugrunner itself. The Go port routesthe same signal through the more durable in-repo
docs/reviews/PR-*.mdfiles, per SPEC §6.5 (local-read; no GitHub API). This is structurally
cleaner — it survives
.clud-bug.jsonschema migrations, works for theGitHub-App variant of clud-bug (which doesn't edit the on-disk JSON),
and stays grep-friendly.
The implementation honours the existing
PROVENANCE.mdskeleton ininternal/skill/provenance.go: incrementscited-by-clud-bug: <n>,sets
last-refined: "<iso-date>", and appends a newapplied-review-shas: [...]bookkeeping line inside the YAML block sore-runs deduplicate against previously-applied PR review SHAs.
Files added
internal/skill/sync.go(~570 LOC) — parser + writer. Importable byfuture tooling (B5b draft-writer etc.); doesn't drag the cobra tree.
internal/skill/sync_test.go(~430 LOC) — 14 unit tests.internal/cli/sync.go(~80 LOC) — cobra wiring forlogmind sync [--dry-run].internal/cli/sync_test.go(~170 LOC) — 7 CLI-level tests.Files modified
internal/cli/root.go— registersnewSyncCmd()next to skill/init.Spec coverage
logmind syncsurface: this PR ships--dry-run.--sinceand
--write-draftsare tracked for a follow-on;--update-provenanceis the default (and currently only) behaviour, so the explicit flag
would be vacuous.
template —
<!-- review-sha: <40 hex> -->is the load-bearingidempotency key;
**Skills cited:**block parsed as- skill-name (N findings)lines.Deviations from spec / reference
(
**Cited by clud-bug:** N times); the existing on-repo template atinternal/skill/provenance.gouses an embedded YAML block(
cited-by-clud-bug: <n>). This PR follows the in-repo templatebecause (a) it's already committed to main, (b) the YAML form is
easier to machine-write deterministically, (c) the prompt explicitly
cited the YAML field names. A reconciliation pass between spec text
and implementation is tracked separately.
applied-review-shasis a Go-side bookkeeping addition not yet inthe SPEC. It lives inside the YAML block (so it's grep-friendly) and
is the load-bearing idempotency mechanism — a future SPEC revision
should formalize it.
Test coverage
internal/skill/sync_test.go(parser + writer):docs/reviews/)review-sha→ skip with warn)docs/reviews/ignoredErrMalformedReviewinternal/cli/sync_test.go(CLI integration):syncregistered on root command treeTotal: 22 tests, all passing under
go test ./... -race -count=1.Verification transcript
Smoke test against a synthetic repo:
PROVENANCE.md after first run:
Plan tracking
logmind syncis now wired.--write-draftsflag (separate PR).markdown) with
internal/skill/provenance.gotemplate (YAML block).Test plan
go test ./... -race -count=1passesmake buildproduces a binary withsyncregisteredlogmind sync --helpprints the new help text--dry-rundoesn't touch diskdocs/file-structure.md,docs/timeline.md) are current🤖 Generated with Claude Code