9f2e7e88b0
Add PlanApplyService with diff(), artifacts(), persist_apply_summary(), handle_merge_failure(), and guard_empty_changeset() methods. - plan diff: renders changeset in rich/plain/json/yaml formats - plan artifacts: shows plan metadata, changeset summary, sandbox refs - persist_apply_summary: stores files_changed/validations_run in plan metadata - handle_merge_failure: transitions plan to error state with conflict details - guard_empty_changeset: blocks apply on empty changeset (--allow-empty override) CLI: plan diff and plan artifacts commands with --format flag. Tests: 20 Behave scenarios, 8 Robot integration tests, 4 ASV benchmarks. Docs: docs/reference/plan_apply.md with CLI reference. Implements D0b.apply from the implementation plan.