Skip to main content
← Back to list
01Issue
BugOpenSwamp CLIPublic
AssigneesNone

Relationships

#3119 extension quality and push crash with IsADirectory when additionalFiles lists a directory

Opened by skunk-ape · 10/6/2026

Problem

Listing a directory in a manifest's additionalFiles crashes swamp extension quality and push with a fatal stack trace instead of a validation error.

additionalFiles:
  - docs
[FTL] error: IsADirectory: Is a directory (os error 21): readfile '<repo>/docs'
    at computeFileContentHash (src/domain/extensions/extension_package_cache.ts:197:28)
    at computeFileContentHashIfExists (src/domain/extensions/extension_package_cache.ts:210:18)
    at readFileIfExists (src/domain/extensions/extension_package_cache.ts:220:16)
    at appendFileGroup (src/domain/extensions/extension_package_cache.ts:188:20)
    at computePackageCacheHash (src/domain/extensions/extension_package_cache.ts:111:9)

The package-cache hash reads every additionalFiles entry as a file before the additionalFiles allowlist (push prepare step 6a) runs, so the allowlist never gets to report it.

Reproduce

Swamp 20261006.205552.0. In a swamp repo (CI layout: repo initialised in the extension directory), with a valid model extension:

  1. Add additionalFiles: [docs] to manifest.yaml and mkdir docs && echo "# notes" > docs/notes.md.
  2. swamp extension quality manifest.yaml → exit 1, [FTL] IsADirectory with a stack trace.

Expected

A user-facing error naming the entry, saying additionalFiles takes files and not directories (or packaging the directory's files, if that is meant to be supported), with no stack trace. swamp extension push manifest.yaml --dry-run --yes crashes the same way (exit 1, [FTL] IsADirectory) and should give the same answer.

Found while writing UAT for swamp-club#3022 (swamp-uat#557).

02Bog Flow
◉OPEN○TRIAGED○IN PROGRESS○SHIPPED

Open

10/6/2026, 10:30:27 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.