Copy file bind sources correctly during brokered dispatch #1566

Closed
opened 2026-07-25 23:54:32 +00:00 by coilyco-ops · 0 comments
Member

Problem

Live brokered dispatch on Ward v0.811.0 now passes the launch-staging boundary fixed by #1563 and creates engineer-codex-ward-1561, but it fails before startup:

not a directory
ward: ward container: docker cp .../entrypoint.sh -> /opt/ward-shell-entrypoint.sh: exit status 1

copyDetachedSiblingBinds appends /. to every host-bind source. That is correct for directory mounts whose contents must be copied into a prepared sibling, but it turns the entrypoint file into entrypoint.sh/., which Docker rejects.

Change

  • Preserve the content-copy suffix for directory sources.
  • Copy file sources by their literal path.
  • Keep missing optional binds skipped and return contextual errors for unreadable sources.

Acceptance

  • Tests lock the exact Docker copy source for both directory and file bind mounts.
  • The brokered dispatch path creates and starts an engineer container.
  • Ward validation and pre-commit pass.
  • #1563 fixed the earlier missing /root/.ward/launch-staging parent failure.
  • #1561 is the live engineer dispatch used to expose this later boundary.
## Problem Live brokered dispatch on Ward v0.811.0 now passes the launch-staging boundary fixed by #1563 and creates `engineer-codex-ward-1561`, but it fails before startup: ``` not a directory ward: ward container: docker cp .../entrypoint.sh -> /opt/ward-shell-entrypoint.sh: exit status 1 ``` `copyDetachedSiblingBinds` appends `/.` to every host-bind source. That is correct for directory mounts whose contents must be copied into a prepared sibling, but it turns the entrypoint file into `entrypoint.sh/.`, which Docker rejects. ## Change * Preserve the content-copy suffix for directory sources. * Copy file sources by their literal path. * Keep missing optional binds skipped and return contextual errors for unreadable sources. ## Acceptance * Tests lock the exact Docker copy source for both directory and file bind mounts. * The brokered dispatch path creates and starts an engineer container. * Ward validation and pre-commit pass. ## Related * #1563 fixed the earlier missing `/root/.ward/launch-staging` parent failure. * #1561 is the live engineer dispatch used to expose this later boundary.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/ward#1566
No description provided.