←
TRCKR-382
Created: 2025-12-16
•
Updated: 2025-12-16
Relationships
Loading...
Attachments
Loading...
Comments (4)
plow-manager
·
2025-12-16
## Resolution Summary
### Investigation Findings
The original report described a comment with ID `fdc559c624142773e4c38e99702074c2` (32 hex chars) that wasn't in sync_log. This ID format differs from our standard UUID format (36 chars with dashes like `722b507e-fe99-4ef9-8e81-b6d1b599b7e7`).
**Conclusion:** The reported comment was likely received via sync FROM the server, not created locally. Server-originated entities are inserted via `_insert_from_server()` which intentionally skips sync_log (they don't need to sync back).
### Real Bug Found & Fixed
During investigation, we discovered **relationship operations were NOT being logged to sync_log**:
- `create_relationship()` - missing `_log_sync_change()` call
- `delete_relationship()` - missing `_log_sync_change()` call
This meant any `trckr issue link` or `trckr issue unlink` commands would appear to work locally but never sync to the server.
### Changes Made (commit c642307)
1. **client/store.py:2187-2193** - Added sync_log call to `create_relationship()`
2. **client/store.py:2290-2310** - Added sync_log call to `delete_relationship()`
3. **tests/test_sync_log.py** - Added 19 comprehensive tests covering sync_log for comments, issues, projects, milestones, and relationships
### Verification
- All 776 unit tests pass including 19 new sync_log tests
- Functional testing confirmed relationship operations now create sync_log entries
- Branch merged to master and deployed
### Why We're Satisfied
1. The original symptom (comment not in sync_log) was explained by server-origin ID format
2. A real bug (relationships not logged) was found and fixed
3. Comprehensive test coverage prevents regression
4. Fix verified both via unit tests and manual functional testing
qa-agent
·
2025-12-16
## QA PASSED
See QA report document: 059fa81f-1390-4154-a22d-4016750250d2
**Verification Summary:**
- All 19 new sync_log tests pass
- CLI create_relationship now logs to sync_log (verified via sqlite3)
- CLI delete_relationship now logs to sync_log (verified via sqlite3)
- No regressions found (175 related tests pass)
- Fix required reinstall to take effect
Fix verified working.
agent
·
2025-12-16
## Investigation Findings
### Root Cause Analysis
The reported comment ID `fdc559c624142773e4c38e99702074c2` is 32 hex characters without dashes, which does NOT match the format generated by `generate_id()` which uses `str(uuid4())` (36 chars with dashes like `722b507e-fe99-4ef9-8e81-b6d1b599b7e7`).
This strongly suggests the comment was received via sync from the server rather than created locally via CLI. When entities are synced FROM the server, they are inserted directly via `_insert_from_server()` which intentionally does NOT log to sync_log (as server-originating entities don't need to sync back).
### Bug Found and Fixed
During investigation, I discovered a real sync_log bug: **relationship operations were NOT being logged to sync_log**.
Both `create_relationship()` and `delete_relationship()` in `client/store.py` were missing the `_log_sync_change()` call. This meant relationships created locally would never sync to the server.
### Changes Made
1. **client/store.py:2187-2193** - Added sync_log call to `create_relationship()`
2. **client/store.py:2290-2306** - Added sync_log call to `delete_relationship()`
3. **tests/test_sync_log.py** - Added comprehensive test coverage (19 tests)
### Test Results
All 776 unit tests pass including the 19 new sync_log tests.
### Recommendation
The original reported issue appears to be a misunderstanding about which entities were locally-created vs server-synced. The 32-char hex ID format is a strong indicator the comment originated from an external system.
triage-agent
·
2025-12-16
## Bug Triage Complete
**Reproduction:** CANNOT REPRODUCE
**Summary:** Extensive testing of the sync_log recording mechanism shows it is working correctly. The bug could not be reproduced in any scenario tested (single connection, multiple connections, failed sync, CLI path, TUI path).
**Key Finding:** The reported comment ID (32-char hex) differs from the standard UUID format (36-char with dashes) generated by `generate_id()`. This suggests the comment may have been received via sync from the server rather than created locally, which would explain why there's no local sync_log entry (by design).
**TDD Approach:**
1. Add test coverage for comment sync_log recording
2. Add debug logging to track sync_log creation
3. Add sync verification command to detect missing entries
**Recommendation:** Keep as urgent priority. Request more details from reporter. Consider the possibility that the comment was server-originated rather than locally created.
See attached triage report (doc b5845639-1a20-4cc1-a3b9-e85278d9147f) for full details.