Skip to content

feat(speculation): add enumerator and selector extensions#232

Draft
behinddwalls wants to merge 1 commit into
preetam/ext/speculation-storefrom
preetam/ext/speculation-extensions
Draft

feat(speculation): add enumerator and selector extensions#232
behinddwalls wants to merge 1 commit into
preetam/ext/speculation-storefrom
preetam/ext/speculation-extensions

Conversation

@behinddwalls

@behinddwalls behinddwalls commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add the two pluggable seams from the speculation RFC, as vendor-agnostic extension interfaces under submitqueue/extension/speculation/.

enumerator: given a batch and its dependency batches (carrying per-batch Score), mechanically lists the candidate Base/Head paths and scores each — pure, deterministic, status-free.

selector: given a speculation tree with controller-stamped status, returns a per-path action (Build/Cancel) — the policy seam; reads status, emits actions, never writes status.

Each follows the repo extension contract (conflict.Analyzer reference shape): Factory.For(Config) (T, error) with Config carrying only QueueName; behavioral knobs are integrator-injected at construction. Includes READMEs, gomock packages, and Makefile mock-gen wiring. Interfaces only; concrete impls and controller wiring are deferred.

Test Plan

Issues

Stack

  1. docs(rfc): add speculation design #230
  2. feat(entity,storage): rework speculation tree model and store #231
  3. @ feat(speculation): add enumerator and selector extensions #232

Add the two pluggable seams from the speculation RFC, as vendor-agnostic extension interfaces under submitqueue/extension/speculation/.

enumerator: given a batch and its dependency batches (carrying per-batch Score), mechanically lists the candidate Base/Head paths and scores each — pure, deterministic, status-free.

selector: given a speculation tree with controller-stamped status, returns a per-path action (Build/Cancel) — the policy seam; reads status, emits actions, never writes status.

Each follows the repo extension contract (conflict.Analyzer reference shape): Factory.For(Config) (T, error) with Config carrying only QueueName; behavioral knobs are integrator-injected at construction. Includes READMEs, gomock packages, and Makefile mock-gen wiring. Interfaces only; concrete impls and controller wiring are deferred.
@behinddwalls behinddwalls force-pushed the preetam/ext/speculation-extensions branch from 5087796 to 5064a60 Compare June 11, 2026 03:27
@behinddwalls behinddwalls force-pushed the preetam/ext/speculation-store branch from 6bc8426 to 7b49586 Compare June 11, 2026 03:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant