Implements the spec-required JSON envelope for `agents plan execute --format json`.
Previously, the command returned the raw plan domain model dict via
`_plan_spec_dict()`, which was missing the sandbox, worker, started,
attempt, strategy_summary, and progress fields required by the spec.
Changes:
- Add `_execute_output_dict(plan, started_at, duration_ms)` function that
builds the spec-required execute output envelope with:
- Top-level envelope: command, status, exit_code, data, timing, messages
- data.sandbox: strategy, path, branch, status (derived from sandbox_refs)
- data.worker: execution_actor or 'local/executor' fallback
- data.started: HH:MM:SS from execute_started_at timestamp
- data.attempt: from plan.identity.attempt
- data.strategy_summary: decisions, invariants, planned_child_plans,
estimated_files, risk (from estimation_result when available)
- data.progress: 4-step list with label/status derived from plan state
- Update `execute_plan()` to track wall-clock start time and use
`_execute_output_dict()` instead of `_plan_spec_dict()` for non-rich output
- Add BDD tests verifying the spec-required envelope structure, sandbox
strategy field, and progress list label/status fields
ISSUES CLOSED: #3435