Reworked robot/helper_m3_e2e_verification.py to validate real CLI
command paths for all M3 acceptance criteria:
- agents plan use + agents plan execute through CLI runner with
real PlanLifecycleService wired to in-memory SQLite UnitOfWork
- agents plan tree with JSON tree structure validation
(root -> child -> grandchild hierarchy)
- agents plan explain with --show-context and --show-reasoning
flags, full context snapshot field validation, and confidence
score verification
- agents invariant add/list --project local/large-project
(project-scoped, matching acceptance criteria exactly) with
real InvariantService round-trip (add then list through same
service instance)
- agents plan correct --dry-run impact analysis and live
--mode=revert correction through CLI with --yes flag, including
root boundary validation (root must not be reverted)
Added persistence-backed decision tree verification using
UnitOfWork with in-memory SQLite (write -> read round-trip).
Added explicit Robot process timeouts (120s) on all Run Process
calls in actor_context_management.robot, changeset_persistence.robot,
and decision_di_wiring_smoke.robot for pabot cold-start resilience.
M3 suite uses 60s timeouts. Added suite-level Force Tags (m3,
acceptance_gate, v3.2.0) and per-test acceptance criteria tags for
filtering. Switched to deterministic hardcoded ULIDs for test
reproducibility.
Updated CHANGELOG.md entry for #494. Added Rui Hu to
CONTRIBUTORS.md.
ISSUES CLOSED: #494