Commit Graph

898 Commits

Author SHA1 Message Date
Steve Yegge
1ae8e64bda Close bd-160 2025-10-29 22:56:09 -07:00
Steve Yegge
c6476fe2da bd sync: 2025-10-29 21:30:19 2025-10-29 21:30:19 -07:00
Steve Yegge
a7f86341a7 bd sync: 2025-10-29 21:21:13 2025-10-29 21:21:15 -07:00
Steve Yegge
bafa8374f9 CRITICAL: Disable export deduplication (bd-160)
The timestamp-only deduplication feature causes data loss when
export_hashes table gets out of sync with JSONL file (after git
operations, imports, etc). This leads to exports skipping issues
that aren't actually in the file.

Symptoms we saw:
- Export reports 'Skipped 128 issues with timestamp-only changes'
- JSONL only has 38 lines but DB has 149 issues
- Two repos on same commit show different issue counts
- Auto-import doesn't trigger (hash matches despite missing data)

Fix: Disable the feature entirely until we can implement proper
JSONL integrity validation (see bd-160 for proposed solutions).
2025-10-29 21:21:04 -07:00
Steve Yegge
c9704f8bd4 Fix export: clear stale export_hashes 2025-10-29 21:19:29 -07:00
Steve Yegge
98b153f2a7 bd sync: apply rename detection from import 2025-10-29 21:16:13 -07:00
Steve Yegge
a001e4ee7b bd sync: 2025-10-29 21:14:31 2025-10-29 21:14:31 -07:00
Steve Yegge
c9e6757f9e bd sync: 2025-10-29 20:48:48 2025-10-29 20:48:48 -07:00
Steve Yegge
4a9ee2f1e7 bd sync: 2025-10-29 20:48:00 2025-10-29 20:48:00 -07:00
Steve Yegge
4d62cb944c bd sync: 2025-10-29 20:45:07 2025-10-29 20:45:07 -07:00
Steve Yegge
1523bd5875 Merge remote changes 2025-10-29 20:44:28 -07:00
Steve Yegge
7001c422de bd sync: 2025-10-29 20:44:15 2025-10-29 20:44:15 -07:00
Steve Yegge
73ee51bb3f Sync bd changes: close bd-59, link bd-65 to bd-102 2025-10-29 20:44:07 -07:00
Steve Yegge
5766bcb496 Import remapped issues after collision 2025-10-29 20:02:51 -07:00
Steve Yegge
5b752903ae bd sync: 2025-10-29 20:02:48 2025-10-29 20:02:48 -07:00
Steve Yegge
08bdac1e14 bd daemon sync: 2025-10-29 19:52:19 2025-10-29 19:52:19 -07:00
Steve Yegge
6e6e7eb1f5 bd daemon sync: 2025-10-29 19:52:15 2025-10-29 19:52:15 -07:00
Steve Yegge
ba18638da2 bd sync: 2025-10-29 19:51:50 2025-10-29 19:51:50 -07:00
Steve Yegge
71cc695a7d Add issue bd-102: --json flag consistency 2025-10-29 19:49:26 -07:00
Steve Yegge
e972295c1e Sync beads database 2025-10-29 19:45:50 -07:00
Steve Yegge
17a20748cb Mark in-progress issues as open 2025-10-29 19:44:54 -07:00
Steve Yegge
6d3888617c Merge remote-tracking branch 'origin/main'
Resolved version conflicts by accepting version 0.18.0 across all files.
2025-10-29 19:41:12 -07:00
Steve Yegge
b2d874cbbf chore: Bump version to 0.18.0
Amp-Thread-ID: https://ampcode.com/threads/T-34d05149-eda4-40e0-b758-28a736a7eba6
Co-authored-by: Amp <amp@ampcode.com>
2025-10-29 19:34:01 -07:00
Steve Yegge
0f3b826010 Resolve merge conflict: use local JSONL 2025-10-29 19:32:03 -07:00
Steve Yegge
98c39c2e6f bd sync: 2025-10-29 19:31:28 2025-10-29 19:31:28 -07:00
Steve Yegge
5513af3b63 Fix CI: Configure git identity for tests 2025-10-29 19:16:43 -07:00
Steve Yegge
3fd3760a28 bd daemon export: 2025-10-29 19:12:54 2025-10-29 19:12:54 -07:00
Steve Yegge
1873764370 bd daemon export: 2025-10-29 19:11:58 2025-10-29 19:11:58 -07:00
Steve Yegge
a9a26275d5 bd daemon export: 2025-10-29 19:11:28 2025-10-29 19:11:28 -07:00
Steve Yegge
6045e87d55 bd daemon export: 2025-10-29 19:08:03 2025-10-29 19:08:03 -07:00
Steve Yegge
cb68ca3781 bd daemon sync: 2025-10-29 19:06:11 2025-10-29 19:06:11 -07:00
Steve Yegge
84fd068e3f Add TestSymmetricCollision unit test for deterministic collision resolution 2025-10-29 17:49:46 -07:00
Steve Yegge
8e85ececd2 bd sync: 2025-10-29 17:49:41 2025-10-29 17:49:41 -07:00
Steve Yegge
5743b48ca2 bd sync: 2025-10-29 16:43:32 2025-10-29 16:43:32 -07:00
Steve Yegge
29326d84c3 bd sync: 2025-10-29 16:15:13 2025-10-29 16:15:13 -07:00
Steve Yegge
86945f2ac4 Add event-driven daemon documentation and platform tests
- Document BEADS_DAEMON_MODE environment variable in AGENTS.md
- Add comprehensive platform tests for FileWatcher (Linux/macOS/Windows)
- Close bd-75, bd-79, bd-83, bd-85 (event-driven daemon epic complete)
2025-10-29 15:53:41 -07:00
Steve Yegge
1238a0a689 bd sync: 2025-10-29 15:53:34 2025-10-29 15:53:34 -07:00
Steve Yegge
8a7c36fe70 Validation and testing improvements (bd-74, bd-77)
- Remove unreachable function DroppedEventsCount from RPC server
- Add TestMutationToExportLatency for event-driven daemon validation
- Test currently skipped pending full bd-85 implementation
- Create test coverage improvement issues (bd-114 through bd-118)
- All validation checks pass: tests, build, linting baseline

Completed: bd-74, bd-77
Amp-Thread-ID: https://ampcode.com/threads/T-24404401-6c5b-466d-9045-0da3a70cff9a
Co-authored-by: Amp <amp@ampcode.com>
2025-10-29 15:30:47 -07:00
Steve Yegge
da9773c31b Add bd repair-deps command (bd-58)
- Scans all issues for dependencies pointing to non-existent issues
- Reports orphaned dependencies with issue ID, depends_on ID, and type
- --fix flag automatically removes all orphaned dependencies
- --interactive mode prompts for each orphan before removal
- Uses direct SQL deletion to avoid foreign key errors on missing issues
- JSON output support with --json flag
- 4 comprehensive tests covering scan, fix, and multiple dependency types

Amp-Thread-ID: https://ampcode.com/threads/T-942a3e75-f90b-45b4-9f88-c7f1b8298cef
Co-authored-by: Amp <amp@ampcode.com>
2025-10-29 12:56:51 -07:00
Steve Yegge
0c06900956 Add comprehensive unit tests for Debouncer (bd-82)
- Test batching of multiple triggers into single action
- Test timer reset on subsequent triggers
- Test cancellation during wait and immediately after trigger
- Test thread safety with deterministic concurrent trigger batching
- All tests use t.Cleanup to prevent goroutine leaks
- Tests pass with -race detector
2025-10-29 12:32:27 -07:00
Steve Yegge
2f11eaa54b bd sync: 2025-10-29 11:50:20 2025-10-29 11:50:20 -07:00
Steve Yegge
7d0cccdccb Add comprehensive unit tests for FileWatcher (bd-78)
- Test JSONL change detection with fsnotify
- Test multiple changes debounced into single action
- Test git ref change detection (platform-aware, skips if unsupported)
- Test file removal/recreation handling (platform-aware)
- Test polling fallback mode
- Test polling detects file disappearance
- Test proper cleanup with Close()

All 7 tests pass. Two tests skip gracefully on platforms where
fsnotify doesn't support git ref watching or file removal/recreation
events. No linter warnings for new test file.

Closes bd-78

Amp-Thread-ID: https://ampcode.com/threads/T-76e7b2ba-150c-461f-83e2-4a6d509d6b53
Co-authored-by: Amp <amp@ampcode.com>
2025-10-29 11:47:40 -07:00
Steve Yegge
df71bca0a1 bd sync: 2025-10-29 11:26:50 2025-10-29 11:26:50 -07:00
Steve Yegge
fea86f9b31 Implement event-driven daemon improvements for bd-85
- Add mutation events for label/dep/comment operations
- Create separate export-only and import-only functions
- Add dropped events counter with safety net export
- Complete bd-80 mutation channel implementation

Event-driven mode now:
- Emits mutation events for ALL write operations (not just create/update/close)
- Uses createExportFunc() for mutations (export+commit/push only, no pull)
- Uses createAutoImportFunc() for file changes (pull+import only, no export)
- Tracks dropped events and triggers safety export every 60s if any dropped
- Achieves <500ms latency target by avoiding full sync on each trigger

Behind BEADS_DAEMON_MODE=events flag (poll is still default)
2025-10-29 11:22:29 -07:00
Steve Yegge
55f803a7c9 Fix multi-round convergence for N-way collisions (bd-108)
- Add AllocateNextID() public method to SQLiteStorage for cross-package ID allocation
- Enhance handleRename() to handle collision during rename with retry logic
- Fix stale ID map issue by removing deleted IDs from dbByID after rename
- Update edge case tests to use convergence rounds consistently
- All N-way collision tests now pass (TestFiveCloneCollision, TestEdgeCases)
2025-10-29 11:08:28 -07:00
Steve Yegge
757bdf6f7e bd sync: 2025-10-29 11:08:21 2025-10-29 11:08:21 -07:00
Steve Yegge
ebb425388c bd-109: Add retry logic and race condition handling for N-way collisions
- Added ExecInTransaction helper for atomic database operations
- Added IsUniqueConstraintError to detect UNIQUE constraint violations
- Wrapped RemapCollisions with retry logic (3 attempts with counter sync)
- Enhanced handleRename to detect race conditions where target ID exists
- Added defensive checks for when old ID has been deleted by another clone

Progress: Improves N-way collision handling, though full solution requires
more work (tracked in bd-108). Tests now reach later convergence rounds
before hitting complex collision scenarios.

Amp-Thread-ID: https://ampcode.com/threads/T-2b850a80-f8bd-4e38-b661-e33d1cfa7281
Co-authored-by: Amp <amp@ampcode.com>
2025-10-29 10:45:25 -07:00
Steve Yegge
7ed8d49652 bd sync: 2025-10-29 10:43:46 2025-10-29 10:43:46 -07:00
Steve Yegge
5498ec5a6d Add issues for N-way collision resolution improvements
Created four issues to address N-way collision limitations:

- bd-109: Add transaction + retry logic (P1, immediate fix)
- bd-110: Implement clone-scoped ID allocation (P2, medium-term)
- bd-111: Investigate jujutsu VCS for better merging (P2, research)
- bd-112: CRDT-based architecture for v2.0 (P3, long-term)

These address the KNOWN LIMITATION documented in beads_nway_test.go
where 5+ clone collisions fail during convergence with UNIQUE constraint
violations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 10:29:38 -07:00
Steve Yegge
2469559558 Add comprehensive N-way collision tests (bd-107)
- Created beads_nway_test.go with generalized N-clone collision testing
- Implemented TestFiveCloneCollision with 3 sync order variations
- Added TestTenCloneCollision for scaling verification
- Added TestEdgeCases (identical content, one different, mixed collisions)
- Added TestConvergenceTime for bounded convergence verification
- Tests document known limitation: UNIQUE constraint failures during
  convergence when multiple clones remap to same target ID
- Pattern matches TestThreeCloneCollision approach of documenting
  current behavior for future improvement

Amp-Thread-ID: https://ampcode.com/threads/T-012146d5-1841-4187-8619-230063e7711d
Co-authored-by: Amp <amp@ampcode.com>
2025-10-28 22:15:45 -07:00