feat(resource): implement DevcontainerHandler missing protocol methods #1286

Merged
freemo merged 1 commits from feature/devcontainer-handler-completion into master 2026-04-02 17:08:53 +00:00

1 Commits

Author SHA1 Message Date
freemo a19ca8c46b feat(resource): implement DevcontainerHandler missing protocol methods
CI / typecheck (pull_request) Successful in 59s
CI / quality (pull_request) Failing after 26s
CI / integration_tests (pull_request) Failing after 1s
CI / e2e_tests (pull_request) Failing after 1s
CI / build (pull_request) Failing after 1s
CI / helm (pull_request) Failing after 1s
CI / security (pull_request) Successful in 1m8s
CI / lint (pull_request) Successful in 3m20s
CI / unit_tests (pull_request) Failing after 6m7s
CI / docker (pull_request) Has been skipped
CI / coverage (pull_request) Successful in 12m35s
CI / status-check (pull_request) Failing after 1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 54m56s
Implements the four missing protocol methods on DevcontainerHandler
required by Epic #825 (ResourceHandler Protocol Completion):

- delete(): uses 'devcontainer exec rm -rf' to delete files/dirs
  inside the container; returns DeleteResult(success=False) for
  missing/stopped containers rather than raising.

- list_children(): uses 'devcontainer exec ls -1' to enumerate
  workspace entries; returns an empty list on container failure.

- diff(): compares content hashes between the devcontainer workspace
  and another filesystem location; uses EMPTY_CONTENT_HASH sentinel
  to treat both-absent as no-change.

- create_sandbox(): delegates to BaseResourceHandler.create_sandbox
  with lazy activation (same DETECTED/STOPPED/FAILED guard as
  resolve()) so the container is running before sandbox creation.

All methods raise ValueError for resources with no location.

Adds 18 Behave BDD scenarios in
features/devcontainer_handler_protocol_methods.feature covering
success paths, failure/stopped-container paths, empty-path edge
cases, and ValueError guards for each method.

ISSUES CLOSED: #1242
2026-04-02 08:48:46 +00:00