# Task26 continuous lifecycle observer v5

## Current status

`READY_OWNER_REVIEW`

V5 is an append-only successor to sealed v4 and remains bound to final candidate `4e9962be49b72951c3b9ed7e1a4fe36d0ca03e757872ae03364c1ab7a790f32b`, core `88caabf3dee923e720463d917d35b6dd32ecc31102ed3ab4df4c6a203df4a760`, and installed wheel `33688875a0d1ce20955bd8272257ee34d84cb138f6a23a43e5d16682368ae5e5`.

No product, source, candidate, profile, Git, prior observer, service, network, Telegram, or UI mutation was performed.

## Transition repair

During a valid workflow-state transition, a missing, stale, wrong-role, wrong-state, wrong-body, or not-yet-committed role publication now emits `WAIT_MATCHING_ROLE_PUBLICATION`. The observe loop keeps its inotify subscription and continues waiting; it does not raise `onboarding publication unavailable` or exit.

The exact customer-attestation to owner-review gap is covered:

1. Workflow commits `owner_review` while generation 28/message 213 remains the latest customer publication.
2. Observer emits `WAIT_MATCHING_ROLE_PUBLICATION` without exposing either stale customer callback.
3. Owner publication commits at generation 29/message 215.
4. Observer validates baseline digest, baseline payload, reconciliation binding, shipped baseline construction, candidate/runtime binding, owner registry membership, owner route, committed body, monotonic generation/message, and action.
5. Observer emits `READY_OWNER_REVIEW` using only generation 29/message 215.

The downstream finalization and ready publication gaps use the same wait behavior. Existing activation, check-in, owner draft review, explicit send, delivery audit, disable, and cleanup handoffs remain active and are covered end-to-end.

## Current owner handoff

- Owner actor: `8693203710`
- Route: `8693203710 / 0`
- Message: `215`
- Action: `non2:owner_ok:29:U7T5W1tNuaYREol2p7lRu-ItlhngWy_wf631sC-aU4A`
- Baseline digest: `4d3d925fe27f953252ed0f108ed7c65900d05546cbbe46ee42cb7004a069be45`
- Baseline validation: `PASS_OWNER_BASELINE`

No owner action was performed.

## Startup command

The ready and event paths are fresh and absent:

```bash
/home/cube/projects/richard/hermes-agent/.venv/bin/python \
  '/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-v5-4e9962be/observer_v5.py' observe \
  --profile /home/cube/.hermes/profiles/dualcoachtest \
  --ready '/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-v5-4e9962be/live-v5-ready.json' \
  --events '/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-v5-4e9962be/live-v5-events.jsonl'
```
