Bind the metered owner route to worker leases and sandbox lifecycle
Some checks failed
Governed runtime contract / contract (push) Failing after 23s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
tegwick 2026-09-09 22:24:37 +02:00
parent c30806b968
commit 3e4c976090
13 changed files with 502 additions and 9 deletions

View file

@ -296,6 +296,10 @@ def process_one(
try:
spend = worker_spend(cfg)
if cfg.require_request_admission and cfg.messages_owner is None:
raise SpendAdmissionError("required request owner is not configured")
if cfg.messages_owner is not None and spend is None:
raise SpendAdmissionError("request owner requires parent spend admission")
if spend is not None:
spend.preflight()
except SpendAdmissionError as exc:
@ -320,7 +324,15 @@ def process_one(
try:
# Make active lease ownership observable even for normal short jobs,
# and fail closed before dispatch if Activity Core no longer accepts it.
client.heartbeat(run.id, lease_seconds=cfg.lease_seconds)
accepted = client.heartbeat(run.id, lease_seconds=cfg.lease_seconds)
if cfg.messages_owner is not None:
from rein_aharness.messages_owner import accepted_lease
try:
run.lease_until = accepted_lease(run, accepted, cfg.worker_id)
except SpendAdmissionError:
return ProcessResult(claimed=True, run_id=run.id, ok=False,
retry_full_interval=True,
reason="accepted queue lease required for metered route")
logger.info("accepted initial heartbeat run_id=%s", run.id)
except OpsRunError as exc:
rejected = exc.status_code == 409