Category: spec-conformance Severity: blocker
Location: src/Internal/Runtime/LifecycleHandler.php:139-154
Spec: ARCP v1.1 §9.5
What
§9.5: 'Renewal is NOT supported. To extend authority, the submitting client MUST cancel and resubmit.' LifecycleHandler::handleLeaseRefresh extends an existing lease's expires_at via LeaseManager::extend(), directly contradicting the prohibition.
Evidence
public function handleLeaseRefresh(Session $session, Envelope $env, LeaseRefresh $msg): void
{
try {
$extra = $msg->extendSeconds ?? 300;
$current = $this->runtime->leases->get($msg->leaseId);
$newExp = $current->expiresAt->modify('+' . $extra . ' seconds');
$extended = $this->runtime->leases->extend($msg->leaseId, $newExp);
$this->runtime->emit($session, new LeaseExtended($extended->leaseId, $extended->expiresAt), ['correlation_id' => $env->id]);
} catch (ARCPException $e) { $this->nack($session, $env, $e->code()->value, $e->getMessage()); }
}
Proposed fix
Reject lease.refresh with UNIMPLEMENTED (or INVALID_REQUEST) and remove LeaseManager::extend() plus LeaseExtended from the public surface.
Acceptance criteria
Category: spec-conformance Severity: blocker
Location:
src/Internal/Runtime/LifecycleHandler.php:139-154Spec: ARCP v1.1 §9.5
What
§9.5: 'Renewal is NOT supported. To extend authority, the submitting client MUST cancel and resubmit.' LifecycleHandler::handleLeaseRefresh extends an existing lease's expires_at via LeaseManager::extend(), directly contradicting the prohibition.
Evidence
Proposed fix
Reject lease.refresh with UNIMPLEMENTED (or INVALID_REQUEST) and remove LeaseManager::extend() plus LeaseExtended from the public surface.
Acceptance criteria