# Task26 final continuous lifecycle observer v3

## Readiness

`READY_FOR_DEPLOY`

The observer is bound to final candidate `4e9962be49b72951c3b9ed7e1a4fe36d0ca03e757872ae03364c1ab7a790f32b`, core `88caabf3dee923e720463d917d35b6dd32ecc31102ed3ab4df4c6a203df4a760`, and wheel `33688875a0d1ce20955bd8272257ee34d84cb138f6a23a43e5d16682368ae5e5`.

Independent no-network arm-only reconciliation against the current inactive profile emitted `WAIT_DEPLOY`. No deployment, service start, network, Telegram, UI, profile, source, candidate, Git, or prior-root mutation was performed.

## Startup

Launch the observer before deploying or starting the final candidate. Both output 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-v3-final-4e9962be/observer_v3.py' observe \
  --profile /home/cube/.hermes/profiles/dualcoachtest \
  --ready '/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-v3-final-4e9962be/live-final-v3-ready.json' \
  --events '/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-continuous-lifecycle-observer-v3-final-4e9962be/live-final-v3-events.jsonl'
```

The observer recursively subscribes before capture and derives every callback generation and message exclusively from the latest matching committed publication.

## Exact post-deploy handoffs

1. Current authority: `WAIT_DEPLOY`; generation 24/message 207 is pre-candidate and has no authorized callback.
2. Final-candidate startup must publish its changed summary body as committed generation 25. Only then the observer emits `READY_CUSTOMER_REVISION` using the learned generation-25 message and callback. Generation 24/message 207 remains stale and is rejected.
3. Customer presses the latest `수정` once.
4. The authorized final-field rewind must commit generation 26 collection authority with:
   - `activity_category = moderate`
   - `activity_rationale = 주 3회, 회당 60분 정도의 중간 강도 근력운동을 희망합니다\n . 평소 걷기·이동은 하루 약 6,000~8,000보 수준입니다.`
   - `schedule_constraints` absent pending resubmission
   - reconciliation removed
5. Observer emits `READY_CUSTOMER_RESUBMIT`; customer replies to the committed prompt with exact value `없음` for `schedule_constraints`.
6. A new resolved reconciliation and candidate-bound summary must commit at generation 27 or later. The observer emits `READY_CUSTOMER_ATTEST` only when all canonical, baseline, body-digest, copy-quality, route, message, and monotonic-generation gates pass.
7. Customer presses only that latest attestation button. Existing owner-review, activation, check-in, delivery audit, disable, and cleanup handoffs continue under the same continuous observer.

## Corrected summary gate

The committed body must contain Korean `유지`, `보통`, the complete detailed activity rationale above, and `별도 검토 입력이 없습니다.` It rejects dict syntax, `items`, `status`, English internal enums, `미입력`, false health-warning wording, stale advisory wording, mismatched digests, stale messages, and non-candidate rendering.
