Skip to main content
← Back to list
01Issue
FeatureShippedSwamp CLI
Assigneesstack72

Relationships

#533 feat: S3/GCS extension namespace-scoped sync support

Opened by stack72 · 6/2/2026· Shipped 6/3/2026

Problem

The core giga-swamp infrastructure is complete (Phases 1-4, 6 shipped in swamp). The DatastoreSyncOptions.namespace field flows through the sync coordinator and acquireModelLocks, the namespacedSync capability flag exists, and the sync service interface has exportCatalog/pullForeignCatalogs/fetchForeignContent methods. But no extension implements them yet — push/pull still syncs everything regardless of namespace.

Until the S3 extension supports namespace-scoped sync, multi-repo shared datastores dont work end-to-end.

What needs to change

1. Per-namespace index partitioning

When options.namespace is set, scope the index walk to the {namespace}/ prefix. Use {namespace}/.datastore-index.json instead of the global one.

  • pullChanged: fetch {namespace}/.datastore-index.json, download only keys under {namespace}/
  • pushChanged: upload only files under {namespace}/, update {namespace}/.datastore-index.json
  • Solo mode (no namespace): use global index as today

2. exportCatalog(namespace)

After pushChanged, write .catalog-export.json to {namespace}/ in the bucket. Flat JSON array of CatalogExportRow.

3. pullForeignCatalogs(namespaces)

Fetch {namespace}/.catalog-export.json from each namespace. Return CatalogExportEntry[]. Skip missing exports silently.

4. fetchForeignContent(namespace, relPath)

Download single file from foreign namespace. Return bytes or null.

5. Advertise namespacedSync capability

capabilities() returns namespacedSync: true.

Critical constraints

  • Do not delete files outside the namespace prefix during push
  • markDirty contract unchanged
  • Backward compatible with solo mode global index
  • Solo mode regression: existing workflows must work identically

Verification

All UAT scenarios from swamp-club#525 must pass with the extension update.

Design Context

Core: swamp-club#525 (PR #1493). Design doc: resources/giga-swamp.md

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 3 MOREPR_MERGEDSHIPPED

Shipped

6/3/2026, 1:49:43 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack726/2/2026, 11:15:50 PM

Sign in to post a ripple.