fix: make cross-role allocations consumable by independent workers (Closes #843)
Controller-created role=author allocations were owned by the allocating controller session with no authorized consume path for independent author workers. When the controller exited, the lease became stale_dead_process and required abandon/reassign instead of a usable handoff. - Mark cross-role apply with durable handoff provenance (pending) - Allow gitea_adopt_workflow_lease to consume pending handoffs by the required role without sharing controller session identity or requiring the controller process to remain alive - Atomically transfer assignment+lease ownership and set adopted_by_session_id with read-after-write evidence - Reject wrong-role, second, and terminal adoptions - Surface consume_allocation identifiers in process_work_queue results - Preserve same-role allocation and genuine abandon recovery behavior Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
+6
-3
@@ -21148,10 +21148,13 @@ def gitea_adopt_workflow_lease(
|
||||
remote: str = "dadeschools",
|
||||
host: str | None = None,
|
||||
) -> dict:
|
||||
"""Adopt a control-plane lease through the sanctioned path (#601).
|
||||
"""Adopt a control-plane lease through the sanctioned path (#601 / #843).
|
||||
|
||||
Same-owner resume refreshes provenance. Foreign active leases are refused.
|
||||
Expired leases may be reclaimed; provenance records adopted_from/by.
|
||||
Same-owner resume refreshes provenance. Foreign active leases are refused
|
||||
unless the lease is a pending controller cross-role handoff and the caller
|
||||
holds the required role (independent consume without sharing the
|
||||
controller session). Expired leases may be reclaimed; provenance records
|
||||
adopted_from/by. Terminal (abandoned/released) leases cannot be adopted.
|
||||
"""
|
||||
read_block = _profile_operation_gate("gitea.read")
|
||||
if read_block:
|
||||
|
||||
Reference in New Issue
Block a user