Expose lease loss to execution boundaries

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b6f-7db1-7222-918b-e813a6bda38d
This commit is contained in:
tegwick 2026-08-23 14:16:11 +02:00
parent 17f081154c
commit 9097d69e1d
5 changed files with 167 additions and 4 deletions

View file

@ -145,7 +145,7 @@ and T02T06 can cite stable decisions rather than infer ownership from code.
```task
id: HARNESS-WP-0003-T02
status: wait
status: progress
priority: high
state_hub_task_id: "47816469-b5c0-5252-8b71-041e65d203fd"
```
@ -189,7 +189,19 @@ The primitive is intentionally not wired into `runner.py`, legacy approaches,
or the claim loop while ADR-002 still awaits Activity Core, sand-boxer, and
llm-connect acknowledgements. Controlled moved-`HEAD` acceptance is prepared
under T03 below; lease-loss cancellation, timeout/signal integration, and
result-close reconciliation remain outstanding. T02 therefore remains `wait`.
result-close reconciliation remain outstanding; T02 is now `progress`.
### Lease observability slice — 2026-08-23
Added `rein_aharness/lease_monitor.py`, a thread-safe, adapter-neutral lease
state primitive. It records one bounded loss envelope, provides a waitable loss
event, and invokes an optional cancellation callback exactly once. The claim
loop heartbeat now feeds this monitor and emits only bounded error type/time
evidence instead of raw provider exception text. This establishes the signal
needed by execution and acceptance boundaries without pretending that adapters
can already cancel in-flight work. Remaining work is to classify Activity Core
responses, connect cancellation at each adapter boundary, and refuse result
acceptance/close after loss.
## Verify accepted commits and reconcile metrics/reporting