The user requested repairing the watcher after a bounded investigation found automated continuation recaps being confused with human task scope. This repair covers the registered Gitea/Azure pipeline terminal watcher, not reconstruction or resumption of the two product tasks.
ProfileBackups/ax_julian, source commit 10cb61e2890a2e3cae391aa980dbae0390ee2c3a, merged by PR 28. Documentation correction: PR 29./usr/local/sbin/codex-pipeline-monitor, root-owned mode 0700. SHA256 450060cbaf27615b5b60be283bedd313be331d2a3dc328aa2bc752b0a3d91fbb matches canonical source.turn/start with empty input and toolOutput, named pipeline_terminal_event in namespace codex_pipeline_monitor. Structured evidence identifies the owning thread, registered Goal hash when present, provider URL, run, commit, outcome and provider details. No human message is replayed and no continuation instruction is added.resume_tool_output_json before submission. Receipt recovery requires the exact functionCallOutput name, namespace and output. Unknown delivery is never automatically replayed. Legacy saved prompts/queued receipts retain their historical read-only reconciliation path.47 focused provider, registration and continuation tests passed. Cases cover duplicate prevention, uncertain sends, exact/mismatched/missing receipts, immutable payloads, legacy receipt recovery, native Goal pauses and CLI deferral. Independent review found and corrected missing provider URL and outdated route/documentation descriptions.
The installed Codex 0.162.1 daemon accepted a validation result in the existing repair chat and persisted it as functionCallOutput, receipt fco_01a124dd-ee39-7a62-af73-8bf0accd265d, turn 01a124d6-ef1c-7b92-a26d-0acb7b0baef2. This confirms the actual message role and transport; no product task was used for acceptance.
Installation briefly stopped only the pipeline monitor timer. There were no active resume units or pending events. All 239 historical records remain present (224 delivered, 15 prior resume failures), and idempotent schema verification preserved their contents. Timer restored active/waiting; an explicit systemd service invocation returned success with exit 0. No historical event was replayed or product chat resumed by this repair.
The previous executable hash was 7c0ae241d5e938e68d5f52bca6ee3bf2404dec244e038ee30e52022c76cce1cf, retained in canonical Git history at baseline 81aa3d2. Before rollback, stop the timer, allow active dispatch to finish, inspect pending/uncertain receipts, and preserve the additive database column and all historical records. Restoring the previous executable restores user-role delivery, so rollback should not dispatch uncertain events.
This fixes evidence provenance at the watcher boundary. It does not recover task scope already lost, guarantee compaction retention, authenticate every other automation source as human/non-human, or change separate task-specific observer scripts.