feat(speculation): add selector + selection-limit extensions#317
Draft
behinddwalls wants to merge 1 commit into
Draft
feat(speculation): add selector + selection-limit extensions#317behinddwalls wants to merge 1 commit into
behinddwalls wants to merge 1 commit into
Conversation
This was referenced Jul 8, 2026
e954c66 to
4e8b0ba
Compare
a091730 to
5e6a56f
Compare
Add the selector seam and its limit counterpart from the speculation RFC, as vendor-agnostic extension interfaces under submitqueue/extension/speculation/. selector: given a batch, loads its speculation tree (with controller-stamped status and score) from storage and returns a per-path action (Build/Cancel) for the paths it chooses to act on. It is the policy seam — it reads stored state and emits actions only, never writes status, and does not decide merging. The store is the source of truth: it takes only the batch identity and reads the tree through read access injected at its Factory, so the controller stays the single writer. selectionlimit: the "how much" policy bounding how many paths a batch may build in parallel. It is the selector's companion — the selector decides which paths, the limit decides how many. Injected into the selector at construction and called by it, keeping the selector interface limit-free; the value is dynamic, not a fixed constant. Each follows the repo extension contract: Factory.For(Config) (T, error) with Config carrying only QueueName. Includes READMEs, gomock packages, and programmable fakes. Interfaces only; concrete impls and controller wiring are deferred.
4e8b0ba to
86f877f
Compare
5e6a56f to
e89bb7c
Compare
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.
Add the selector seam and its limit counterpart from the speculation RFC, as vendor-agnostic extension interfaces under submitqueue/extension/speculation/.
selector: given a batch, loads its speculation tree (with controller-stamped status and score) from storage and returns a per-path action (Build/Cancel) for the paths it chooses to act on. It is the policy seam — it reads stored state and emits actions only, never writes status, and does not decide merging. The store is the source of truth: it takes only the batch identity and reads the tree through read access injected at its Factory, so the controller stays the single writer.
selectionlimit: the "how much" policy bounding how many paths a batch may build in parallel. It is the selector's companion — the selector decides which paths, the limit decides how many. Injected into the selector at construction and called by it, keeping the selector interface limit-free; the value is dynamic, not a fixed constant.
Each follows the repo extension contract: Factory.For(Config) (T, error) with Config carrying only QueueName. Includes READMEs, gomock packages, and programmable fakes. Interfaces only; concrete impls and controller wiring are deferred.
Stack