Skip to content

Phase 2: two-way multi-device sync (#100) + error-signature nudges & panel (#97)#111

Merged
0bserver07 merged 2 commits into
mainfrom
feat/phase2-sync-nudges
Jul 3, 2026
Merged

Phase 2: two-way multi-device sync (#100) + error-signature nudges & panel (#97)#111
0bserver07 merged 2 commits into
mainfrom
feat/phase2-sync-nudges

Conversation

@0bserver07

Copy link
Copy Markdown
Owner

Phase 2 of #100 (two-way multi-device sync) and #97 (active-surfacing). Two file-disjoint commits, integrated clean, full suite green.

#100 Phase 2 — two-way multi-device sync

sync pull fetches peers' encrypted mart shards (decrypt, monotonic-generation replay-guard, per-shard content-hash vs cursor → download-changed-only) into <mart>_remote landing tables; sync/merge.py unions local + remote at the stable (provider, slug) grain (SUM), dedups session_mart by session_id with a merge_warnings counter. Exposed via a dedicated routes/sync.py (GET /api/sync/status, GET /api/sync/overview?scope=all-devices) so the default dashboard path is untouched and off the <100ms fast-path. Additive v029 migration (sync_cursors, sync_remote_devices, 5 _remote tables); schema → v29. Default scope=this-device runs no union. 38 tests. (all-devices FE toggle is a documented follow-up; backend + API/CLI are live.)

#97 Phase 2 — error-signature nudge + dashboard panel

New stackunderflow-posttool-nudge (PostToolUse/Bash): after an errored tool result whose signature matches a recurring mined ErrorSignature with resolution_hints, injects a one-line hint under the same governance as Phase 1 (dedupe/cap/cooldown/adaptive-quieting) — emits only additionalContext, never blocks. POST /api/patterns/dismiss writes the exact Tier-1 governance fingerprint (round-trip tested). A "What almost bit me" section in the Health tab lists recent would-have-fired nudges with dismiss controls. Default-off. 43 tests.

Verification

  • Full suite: 4083 passed, 2 skipped · ruff --select E,F clean · tsc typecheck clean · vite build (panel bundled) · version guard green · test_pricing_invariants green
  • Fully file-disjoint (sync = backend; nudges = hooks + FE); crypto/pull tests gate on pyrage
  • CHANGELOG [Unreleased] documents both

🤖 Generated with Claude Code

0bserver07 and others added 2 commits July 3, 2026 11:39
…100 Phase 2)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Phase 2)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@0bserver07 0bserver07 merged commit 3a5d4dc into main Jul 3, 2026
15 checks passed
@0bserver07 0bserver07 deleted the feat/phase2-sync-nudges branch July 3, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant