From 9e534d81337a613edd5b081ae5019dc7d8617ea0 Mon Sep 17 00:00:00 2001 From: toki Date: Sun, 21 Jun 2026 15:28:53 +0900 Subject: [PATCH] fix(gitosync): omit RoadmapRevision on missing-create to allow authoring roundtrip When the missing-create path stores a RoadmapRevision, a later reconcile push (after the authoring roundtrip adds the Plane identity to the milestone file) conflicts with ReconcileCreationCycle's revision guard because the new push has a different revision than the original missing-create push. Since missing-create has no completed projection steps, a future reconcile on a different revision should be allowed to resume. Omit RoadmapRevision from the missing-create job args so the persisted row stores NULL and the revision guard does not block the subsequent reconcile push. Co-Authored-By: Claude Sonnet 4.6 --- services/core/internal/gitosync/bridge.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/core/internal/gitosync/bridge.go b/services/core/internal/gitosync/bridge.go index bd11153..4130c70 100644 --- a/services/core/internal/gitosync/bridge.go +++ b/services/core/internal/gitosync/bridge.go @@ -151,9 +151,12 @@ func (b *Bridge) enqueueDoc(ctx context.Context, scan roadmapsync.ScanResult, do }, TodoStateID: b.cfg.TodoStateID, MilestoneMarkdown: doc.Markdown, - RoadmapRevision: scan.Revision.Revision, - ExternalSource: b.cfg.ExternalSource, - ExternalID: "", + // RoadmapRevision is intentionally omitted on missing-create: the identity + // has no completed projection steps yet, so a later reconcile push (after + // the authoring roundtrip adds the Plane identity to the milestone file) + // must not conflict on revision. + ExternalSource: b.cfg.ExternalSource, + ExternalID: "", } if err := b.enqueuer.EnqueueRoadmapCreationSync(ctx, args); err != nil { return err