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 6ff6d6c to 5087796 Compare June 10, 2026 03:45
@behinddwalls behinddwalls force-pushed the preetam/ext/speculation-store branch from 927e240 to 6bc8426 Compare June 10, 2026 03:45
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