Goal
Make healthy long-running dual reviews visibly distinguishable from stalled processes without changing certification semantics.
Scope
- Emit bounded lifecycle events: provider started, provider completed, reconciliation started, and receipt written.
- Emit a low-frequency heartbeat while a provider is still running.
- Keep output free of prompts, repository content, secrets, and model reasoning.
- Preserve the existing timeout, cleanup, and verdict rules.
Acceptance criteria
Boundary
This is post-1.0 observability/UX work. Release-blocking failure classification and partial non-certifying receipts remain in #157.
Goal
Make healthy long-running dual reviews visibly distinguishable from stalled processes without changing certification semantics.
Scope
Acceptance criteria
Boundary
This is post-1.0 observability/UX work. Release-blocking failure classification and partial non-certifying receipts remain in #157.