Skip to content

fix(sync): drop formatVersion from the sync manifest API - #1026

Merged
ctawiah merged 1 commit into
mainfrom
ctawiah/sync-manifest-no-format-version
Nov 10, 2026
Merged

ctawiah merged 1 commit into
mainfrom
ctawiah/sync-manifest-no-format-version

Conversation

@ctawiah

@ctawiah ctawiah commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Context

The LaunchDarkly sync manifest API has no formatVersion. A read of a project and a repository source that no sync wrote yet returns {"items":[],"source":"..."}, and the client rejected it with unsupported formatVersion 0. A patch that carried the field failed with /additionalProperties additional properties 'formatVersion' not allowed. Both failures stop every first sync of a project.

What changes

  • SyncManifest has no FormatVersion field, and the patch body does not send one.
  • GetSyncManifest, PatchSyncManifest, and the manifest store no longer check a remote format version.
  • The sync.lock file keeps its own formatVersion, which is a local format.

Design notes

  • The path version of the API governs the shape of the manifest, so the client has nothing of its own to check.

Review focus

  • Is there any other place that expects a remote format version?

Verification

  • go test ./...
  • golangci-lint run ./...
  • TestClientReadsAManifestWithoutAFormatVersion reads an empty manifest and one with entries. TestClientPatchesSyncManifest asserts the body without the field. TestStoreLoadsAnEmptyManifest loads a project without entries beside one with entries.
  • Against staging: the read of an unwritten manifest returns the body above, a patch with formatVersion returns the schema error, and a patch without it passes the schema.

Follow-up

The upserts still carried the descriptor metadata of a linked resource, which the API rejects too. A later pull request removes it.

🤖 Generated with Claude Code

The LaunchDarkly manifest API has no formatVersion. A read of an unwritten manifest returns no version, and a patch with the field fails with "additional properties 'formatVersion' not allowed". The client no longer sends the field or requires it in a response, and the store no longer checks it. The sync.lock file keeps its own formatVersion.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@ctawiah
ctawiah requested a review from a team as a code owner November 10, 2026 18:10
@ctawiah
ctawiah requested review from ld-ahartmann and removed request for a team November 10, 2026 18:10
@ctawiah
ctawiah marked this pull request as draft November 10, 2026 18:10
@ctawiah
ctawiah marked this pull request as ready for review November 10, 2026 18:13
@ctawiah
ctawiah requested a review from nkester-ld November 10, 2026 18:13
@ctawiah
ctawiah merged commit f4dd373 into main Nov 10, 2026
12 checks passed
@ctawiah
ctawiah deleted the ctawiah/sync-manifest-no-format-version branch November 10, 2026 18:15
@ctawiah ctawiah changed the title fix(sync): drop formatVersion from the sync manifest API fix(sync): match the sync manifest API shape Nov 10, 2026
@ctawiah ctawiah changed the title fix(sync): match the sync manifest API shape fix(sync): drop formatVersion from the sync manifest API Nov 10, 2026
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.

2 participants