forked from cardosofelipe/fast-next-template
[SPIKE-009] Issue Sync with External Trackers #9
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objective
Design bidirectional sync architecture for external issue trackers (Gitea, GitHub, GitLab).
Key Questions
Sync Strategy
Research Areas
Expected Deliverables
Acceptance Criteria
Labels
spike,architecture,integrationsSPIKE-009 Research Complete
The comprehensive spike document has been created at
docs/spikes/SPIKE-009-issue-synchronization.md.Executive Summary
After researching bi-directional sync patterns, conflict resolution strategies, and analyzing Gitea/GitHub/GitLab API capabilities, the recommended architecture is:
Webhook-first, polling-fallback with Last-Writer-Wins (LWW) conflict resolution using version vectors. External trackers serve as the source of truth with Syndarix maintaining local mirrors for unified agent access.
Key Architectural Decisions
IssueProviderinterface with adapters for Gitea, GitHub, GitLabDatabase Schema
New tables designed:
external_connections- Provider configuration and credentialsissue_sync_log- Audit trail of all sync operationssync_outbox- Pending outbound syncs with retry trackingField Mapping
Canonical model abstracts provider differences:
number→ GitHub:number→ GitLab:iid→ Syndarix:external_numberbody→ GitHub:body→ GitLab:description→ Syndarix:descriptionopened/open→IssueStatus.OPENImplementation Roadmap
Research Sources
Next Steps
Spike research completed by Claude Code Agent