compose/pkg
Nicolas De Loof 2948f31a83
plan: Optional operations fail soft, so plans can carry required:false waits
The executor aborted the whole plan on any node failure, which rules
out modeling optional semantics — a dependency declared with
required: false must be reported as skipped, not fail the operation,
and its dependents must still run. This is a prerequisite for planning
the start phase (dependency-condition waits) inside the reconciler.

Operation gains Optional: at the walker level, a failing Optional node
emits a Skipped event plus a warning and completes successfully, so
dependent nodes proceed. It is documented against the pre-existing
BestEffort flag, which is narrower (one specific expected error,
tolerated inside the operation itself) — the two docs now
cross-reference each other so they cannot be confused.

Covered by an executor unit test asserting a failing Optional node
does not fail the plan and its dependent still executes.

Groundwork for the start-in-plan convergence.

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2026-08-18 11:18:00 +02:00
..
api feat(ps): add ENGINE column gated on label presence 2026-08-17 10:34:46 +02:00
bridge lint: replace gocyclo with gocognit 2026-08-18 10:42:37 +02:00
compose plan: Optional operations fail soft, so plans can carry required:false waits 2026-08-18 11:18:00 +02:00
dryrun fix(cp): return non-nil Content from dry-run CopyFromContainer 2026-07-30 11:37:49 +02:00
e2e fix(events): validate service names before subscribing to events 2026-08-18 10:48:59 +02:00
mocks chore(deps): github.com/docker/cli v29.6.0 2026-06-22 09:00:18 +02:00
remote lint: replace gocyclo with gocognit 2026-08-18 10:42:37 +02:00
utils fix: make e2e tests pass reliably locally with Docker Desktop 2026-05-18 10:55:41 +02:00
watch test(watch): cover the permission branches as root 2026-08-11 14:10:40 +02:00