The lease protocol (plugins/work-items/tools/work-item-tracker: CONTRACT.md config.lease_ttl_hours, lib/lease.sh expiry = renewed_epoch + ttl*3600, adapters' claim.sh --ttl-hours validated ^[0-9]+$) cannot represent TTLs under one hour, and 0 disables leasing.
Consumer driving this: the autonomy-demo drain (kyle-sexton/autonomy-demo-scratch) moved to a 15-minute fire cadence; its runs finish in ~3.5min, and a stuck claim should block ~2 cycles (~30min), not 4 (1h). It is running --ttl-hours 1 as an explicitly marked stopgap; the vendored seam copy is upstream-synced, so the protocol change belongs here, not downstream.
Proposed shape (maintainer's call): additive ttl_minutes (or fractional-hours) across CONTRACT.md, lib/lease.sh, both adapters' claim.sh, and conformance bindings — backward compatible with existing ttl_hours records. Downstream stopgap comment cites this issue for the TODO back-reference.
The lease protocol (
plugins/work-items/tools/work-item-tracker: CONTRACT.mdconfig.lease_ttl_hours,lib/lease.shexpiry = renewed_epoch + ttl*3600, adapters'claim.sh --ttl-hoursvalidated^[0-9]+$) cannot represent TTLs under one hour, and0disables leasing.Consumer driving this: the autonomy-demo drain (kyle-sexton/autonomy-demo-scratch) moved to a 15-minute fire cadence; its runs finish in ~3.5min, and a stuck claim should block ~2 cycles (~30min), not 4 (1h). It is running
--ttl-hours 1as an explicitly marked stopgap; the vendored seam copy is upstream-synced, so the protocol change belongs here, not downstream.Proposed shape (maintainer's call): additive
ttl_minutes(or fractional-hours) across CONTRACT.md,lib/lease.sh, both adapters'claim.sh, and conformance bindings — backward compatible with existingttl_hoursrecords. Downstream stopgap comment cites this issue for the TODO back-reference.