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

Extension pull should namespace files by extension to prevent filename collisions

Opened by jbirdkerr · 4/16/2026· Shipped 4/17/2026

Problem

When two extensions from the same collective ship a file with the same name (e.g. @swamp/aws/ecs and @swamp/aws/eks both shipping cluster.ts), the second swamp extension pull throws a ConflictError — or silently overwrites with --force. This makes it impossible to have both extensions installed simultaneously if their filenames collide.

The model type strings are correctly namespaced (e.g. @swamp/aws/ecs/cluster vs @swamp/aws/eks/cluster), but the filesystem layout has no enforced namespacing. Extension authors must manually choose unique filenames, which is not enforced or documented.

Proposed Solution

Namespace pulled extension files by extension name at the filesystem level, e.g.:

.swamp/pulled-extensions/models/@swamp/aws/ecs/cluster.ts
.swamp/pulled-extensions/models/@swamp/aws/eks/cluster.ts

This would eliminate file-level collisions entirely and make it safe to pull multiple extensions from the same collective that happen to define models in the same domain (e.g. both ECS and EKS defining a cluster concept).

Alternatives

  • Document that extension authors within the same collective must use unique filenames across all extensions in that collective (fragile, doesn't scale)
  • Use subdirectories within the archive (e.g. models/ecs/cluster.ts) — shifts the burden to authors with no enforcement
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPEDTRIAGE+ 12 MOREREVIEW+ 3 MOREPR_MERGEDSHIPPED

Shipped

4/17/2026, 7:02:36 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack724/16/2026, 7:30:34 PM

Sign in to post a ripple.