orchestrator bind-mount per project is a config liability — make /opt/damascus/bmad/* auto-pickup #29
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Every new BMAD project requires:
damascus-orchestrator/docker-compose.ymldocker compose up -d --force-recreate --no-deps orchestratorto pick it upThis is a per-project friction point that scales linearly. After ~5 projects the
volumes:block is unmaintainable, and theorchestratorcontainer becomes a chicken-and-egg dependency for any new project.Repro
docker compose up -d --build orchestrator— new projects under/opt/damascus/bmad/<new-project>/_bmad-outputare invisible inside the container until a--force-recreatehappens. Evendocker compose restart orchestratordoes NOT pick up the new mount (verified 2026-06-26).The pre-flight validator
test-ingest.shalready catches this case and prints the canonical fix recipe; we just need the orchestrator to not need the fix.Proposed solutions (descending preference)
A. Auto-mount via a sidecar discoverer
Replace the explicit per-project bind-mount list with a sidecar container (or entrypoint script) that watches
/root/*-prds/_bmad-output/(or a configured glob) and bind-mounts each into/opt/damascus/bmad/<project-name>/_bmad-output:roat orchestrator startup. New projects auto-show up; no compose edits.B. NFS/shared-volume mount
Replace the per-project bind-mount list with a single shared volume mount like
./bmad:/opt/damascus/bmadpopulated by the host via a sync script (or systemd path unit that watches a known directory tree). Compose stays stable; new projects just need their_bmad-output/dropped into./bmad/<project>/.C. Discovery at ingest time
damascus ingest --project X --path /root/X/_bmad-outputreads from the host path directly viadocker exec -e BMAD_DIR=...— no bind-mount needed at all. The orchestratormount_sourcefor BMAD resolution becomes the env var instead of the filesystem.D. Single mega-mount
/root:/root:ro— mount the entire/roottree. New projects auto-pickup. Downside: orchestrator can now see everything under/root(security/leakage surface), and host-specific tooling assumptions leak in.Recommendation
Option C (discovery at ingest time) is the cleanest — it removes the bind-mount from the data path entirely, making the orchestrator stateless w.r.t. project location. The
ingestcommand becomes the contract; the orchestrator only needs read access during ingest, not permanent mount.Workaround (until fixed)
For now, add to
damascus-orchestrator/docker-compose.ymlvolumes::Then
docker compose up -d --force-recreate --no-deps orchestrator.Filed
2026-06-26, while onboarding
kaykayyali/lore-engine-merge(7-phase epic, seelore.wiki→[[2026-06-26 Lore Engine GraphMCP Merge]]). The first 4 BMAD projects (restitution, mindmaps, damascus-roadmap, hello-bmad) follow this pattern; the 5th (lore-engine-merge) is what made the friction visible enough to file.