<!-- task=m-node-provider-execution-liveness-recovery/05+04_failure_wire_contract plan=2 tag=API milestone-task=failure-handoff -->

# Complete - m-node-provider-execution-liveness-recovery/05+04_failure_wire_contract

## Completed At

2026-08-05

## Summary

Plan 2 completed the typed execution-failure wire foundation and passed review on the first implemented loop.

## Loop History

| Plan | Review | Verdict | Notes |
|------|--------|---------|-------|
| `plan_local_G07_2.log` | `code_review_cloud_G07_2.log` | PASS | Additive protobuf and in-memory model changes regenerated cleanly and all scoped consumers passed. |

## Implementation and Cleanup

- Added the non-recursive `ExecutionFailure` protobuf message and optional fields on `RunEvent` and `ProviderTunnelFrame` without changing existing tags.
- Added the optional in-memory tunnel failure pointer with an explicit transport-mapper ownership comment.
- Regenerated the checked-in Go and Dart protobuf bindings; enum and server companion outputs remained unchanged as expected.

## Final Verification

- `make proto && make proto-dart` - PASS; Go and Dart outputs regenerated without additional drift.
- `make client-test` - PASS; all 44 Flutter tests passed.
- `go test -count=1 ./packages/go/execution ./apps/node/... ./apps/edge/internal/transport ./apps/control-plane/...` - PASS.
- `go vet ./packages/go/execution ./apps/node/... ./apps/edge/internal/transport ./apps/control-plane/...` - PASS with no diagnostics.
- `go test -count=1 ./...` - PASS for all repository Go consumers.
- `git diff --check` - PASS with no whitespace errors.
- `go test -count=1 ./packages/go/execution` - PASS after the review-only ownership-comment cleanup.

## Remaining Nits

- None.

## Follow-up Work

- The dependent `06+05_failure_wire_mapping` child owns failure population plus present/absent semantic round-trip evidence.
