Repository navigation
[docs] add RFCs for per-client admission independent of the substrate - #1072
Open
the-gigi-pplx wants to merge 7 commits into
Open
the-gigi-pplx wants to merge 7 commits into
the-gigi-pplx wants to merge 7 commits into
Conversation
the-gigi-pplx
force-pushed
the
gigi/pla-6997-rfc-substrate-independent-per-client-admission
branch
19 times, most recently
from
October 29, 2026 18:18
f31ee03 to
397f531
Compare
the-gigi-pplx
force-pushed
the
gigi/pla-6997-rfc-substrate-independent-per-client-admission
branch
3 times, most recently
from
October 29, 2026 21:25
a091816 to
eaf4e8a
Compare
the-gigi-pplx
force-pushed
the
gigi/pla-6997-rfc-substrate-independent-per-client-admission
branch
3 times, most recently
from
October 30, 2026 04:02
afe2e79 to
bdd5071
Compare
the-gigi-pplx
force-pushed
the
gigi/pla-6997-rfc-substrate-independent-per-client-admission
branch
from
October 30, 2026 06:49
bdd5071 to
c5f1d8f
Compare
the-gigi-pplx
marked this pull request as ready for review
October 30, 2026 06:49
This was referenced Oct 30, 2026
Collaborator
Author
|
Updated since the review request, in 8eb115d (docs only, no decision changed beyond these):
|
Collaborator
Author
Collaborator
Author
|
Follow-up in 0962e15: Decision 4 now invalidates the slot on any failed adoption label patch instead of returning it, because a returned slot goes to the front of the claim queue and a repeating refusal would hit every later pool claim. |
This was referenced Oct 30, 2026
Merged
NancyKwongPerplexity
approved these changes
Oct 30, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds two RFCs that define per-client activation admission so it doesn't depend on Kubernetes pods. Together they review the open per-client work (PR #1058, PR #1061, PR #1066 and PR #1068) and say what to keep, rework or drop.
docs/space/rfcs/2026-10-28-substrate-independent-client-admission.mdcovers what ships. It opens with the terms it relies on (activation, admission, charge, key, record, pending set and others), and states each mechanism's rules and invariants, leaving call-site detail to the implementation pull requests:ActivationClient: an ECW client id, inherit (act for the sandbox's recorded client, as an implicit data-plane wake does) or native.sandboxes.activating_client_idholding the client id whose activation last created the sandbox's runtime, written with the same value as the pod label. On Kubernetes it follows the active execution row's tracked pod, and on Direct it's written in the start and restore receipts.space.pplx.net/client-idis set at pod creation, and a pod counts against the client whose activation created it.Substrate::live_sandboxes_for_clientcounts a client's other live sandboxes from the sandbox-pod reflector, through a per-id index updated from watch events. A shared pending set in Redis covers admissions the reflectors haven't seen yet. The RFC explains why that pair is the right arbiter and compares the alternatives. The cap runs before a create branches, and inensure_pod_existsbefore every pod it creates, so a running sandbox is never refused. Direct answersUnknown(Unsupported)and admission admits.docs/space/rfcs/2026-10-29-per-client-activation-rate.mdspecifies the deferred per-client activation rate: a per-client token bucket consumed atomically with the cluster bucket, charged on warm-pool hits too, with token holds that a refused attempt cancels without over-crediting the bucket, its composition with the first RFC, and its open issues. It's built only if, with the first RFC enforced, a client is seen draining the cluster bucket or the warm pool through paths the concurrency limiter doesn't gate.Verdicts:
control_runtime_clientmust pass its503through.sandboxes.Validation
Documentation only. I checked the RFCs' statements about current behavior against
mainand against the open PRs it reviews. No workspace code checks apply.Severity and risk
Severity: does not apply; this is a design proposal.
Risk: none at runtime. Merging them records the design that the open per-client pull requests are reworked to follow. Adopting it changes one existing behavior, which the RFC calls out: an allowlisted client id that isn't a valid Kubernetes label value stops getting its own concurrency bucket.
AI assistance: Claude Code drafted both RFCs and this description.