From 90898907573fa09d143505d4dbe000e765b351ac Mon Sep 17 00:00:00 2001 From: Preetam Dwivedi Date: Mon, 7 Sep 2026 18:03:32 -0700 Subject: [PATCH 1/2] feat(demo): set example predictor factors in profiles Write the outcome-predictor RFC example factors into every demo profiles.yaml so local runs show evidence revising ranking instead of silently staying at neutral 1. --- doc/howto/QUICKSTART.md | 8 +++++++- service/submitqueue/demo/provider/fake/profiles.yaml | 9 +++++++++ service/submitqueue/demo/provider/git/profiles.yaml | 8 ++++++++ service/submitqueue/demo/provider/github/profiles.yaml | 8 ++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/doc/howto/QUICKSTART.md b/doc/howto/QUICKSTART.md index da49f4896..ec644bdd3 100644 --- a/doc/howto/QUICKSTART.md +++ b/doc/howto/QUICKSTART.md @@ -74,11 +74,17 @@ Every change writes all of its files into one folder under `demo/`, and `FOLDERS Set it deliberately when you want a run to show one thing. `FOLDERS=1` puts every change in the same place, so the queue serializes the lot and each change speculates on the one before it. A number well above `COUNT` keeps them all apart, so they go out together. -How much speculation that turns into is capped by the queue's **build budget** — how many builds it may have occupying CI at once, counted across every in-flight batch rather than per batch. It defaults to 4 and is set per queue in the provider's `profiles.yaml`: +How much speculation that turns into is capped by the queue's **build budget** — how many builds it may have occupying CI at once, counted across every in-flight batch rather than per batch. It defaults to 4 and is set per queue in the provider's `profiles.yaml`. The demo also sets **predictor factors** there so speculation ranking revises the scorer's price when a path passes or fails or a batch is merging or cancelling; omitting that block leaves every factor at `1`, which is a no-op and ranks on the scorer alone. ```yaml defaults: speculator: {buildBudget: 4} + predictor: + factors: + pathPassed: 10 + pathFailed: 0.3 + merging: 12 + cancelling: 0.1 queues: - name: demo-queue diff --git a/service/submitqueue/demo/provider/fake/profiles.yaml b/service/submitqueue/demo/provider/fake/profiles.yaml index 5b1fb27b2..b0a620118 100644 --- a/service/submitqueue/demo/provider/fake/profiles.yaml +++ b/service/submitqueue/demo/provider/fake/profiles.yaml @@ -22,6 +22,15 @@ defaults: # 1 the queue explores one path at a time, and raising it lets it hedge more # of the outcomes it is waiting on. Four is the built-in default. speculator: {buildBudget: 4} + # Example evidence factors from the outcome-predictor RFC. Omitted keys would + # stay at 1 and ranking would stay on the scorer alone; writing them out makes + # the demo show how path results and batch state revise that price. + predictor: + factors: + pathPassed: 10 + pathFailed: 0.3 + merging: 12 + cancelling: 0.1 queues: # The queue `make demo-requests` and `make land` use by default. diff --git a/service/submitqueue/demo/provider/git/profiles.yaml b/service/submitqueue/demo/provider/git/profiles.yaml index e47054cc8..8ba87959a 100644 --- a/service/submitqueue/demo/provider/git/profiles.yaml +++ b/service/submitqueue/demo/provider/git/profiles.yaml @@ -12,6 +12,14 @@ defaults: buildRunner: {type: fake} # Serialize conservatively unless a queue says otherwise. analyzer: {type: all} + # Same example factors as ../fake/profiles.yaml — see that file for why they + # are written out rather than left at the neutral default of 1. + predictor: + factors: + pathPassed: 10 + pathFailed: 0.3 + merging: 12 + cancelling: 0.1 queues: # The queue `make demo-requests` and `make land` use by default. Serializes diff --git a/service/submitqueue/demo/provider/github/profiles.yaml b/service/submitqueue/demo/provider/github/profiles.yaml index 5ef8c34cd..234a15849 100644 --- a/service/submitqueue/demo/provider/github/profiles.yaml +++ b/service/submitqueue/demo/provider/github/profiles.yaml @@ -10,6 +10,14 @@ defaults: changeProvider: {type: fake} buildRunner: {type: fake} analyzer: {type: all} + # Same example factors as ../fake/profiles.yaml — see that file for why they + # are written out rather than left at the neutral default of 1. + predictor: + factors: + pathPassed: 10 + pathFailed: 0.3 + merging: 12 + cancelling: 0.1 queues: - name: demo-queue From 9cd7195c4d9b1e1130a917ab5e80ebf21b4c974a Mon Sep 17 00:00:00 2001 From: Preetam Dwivedi Date: Fri, 11 Sep 2026 09:47:31 -0700 Subject: [PATCH 2/2] docs(demo): nest evidence scorer in demo profiles Show type evidence wrapping a heuristic base with the RFC example factors, matching the ranking YAML the stack now wires. --- doc/howto/QUICKSTART.md | 7 +++++-- service/submitqueue/demo/provider/fake/profiles.yaml | 7 +++++-- service/submitqueue/demo/provider/git/profiles.yaml | 5 ++++- service/submitqueue/demo/provider/github/profiles.yaml | 5 ++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/howto/QUICKSTART.md b/doc/howto/QUICKSTART.md index ec644bdd3..7e4651f05 100644 --- a/doc/howto/QUICKSTART.md +++ b/doc/howto/QUICKSTART.md @@ -74,17 +74,20 @@ Every change writes all of its files into one folder under `demo/`, and `FOLDERS Set it deliberately when you want a run to show one thing. `FOLDERS=1` puts every change in the same place, so the queue serializes the lot and each change speculates on the one before it. A number well above `COUNT` keeps them all apart, so they go out together. -How much speculation that turns into is capped by the queue's **build budget** — how many builds it may have occupying CI at once, counted across every in-flight batch rather than per batch. It defaults to 4 and is set per queue in the provider's `profiles.yaml`. The demo also sets **predictor factors** there so speculation ranking revises the scorer's price when a path passes or fails or a batch is merging or cancelling; omitting that block leaves every factor at `1`, which is a no-op and ranks on the scorer alone. +How much speculation that turns into is capped by the queue's **build budget** — how many builds it may have occupying CI at once, counted across every in-flight batch rather than per batch. It defaults to 4 and is set per queue in the provider's `profiles.yaml`. The demo also sets **evidence scorer factors** there so speculation ranking revises the base price when a path passes or fails or a batch is merging or cancelling; omitting `factors` leaves every factor at `1`, which is a no-op and ranks on the nested base alone. ```yaml defaults: speculator: {buildBudget: 4} - predictor: + scorer: + type: evidence factors: pathPassed: 10 pathFailed: 0.3 merging: 12 cancelling: 0.1 + base: + type: heuristic queues: - name: demo-queue diff --git a/service/submitqueue/demo/provider/fake/profiles.yaml b/service/submitqueue/demo/provider/fake/profiles.yaml index b0a620118..b217e310c 100644 --- a/service/submitqueue/demo/provider/fake/profiles.yaml +++ b/service/submitqueue/demo/provider/fake/profiles.yaml @@ -23,14 +23,17 @@ defaults: # of the outcomes it is waiting on. Four is the built-in default. speculator: {buildBudget: 4} # Example evidence factors from the outcome-predictor RFC. Omitted keys would - # stay at 1 and ranking would stay on the scorer alone; writing them out makes + # stay at 1 and ranking would stay on the base price; writing them out makes # the demo show how path results and batch state revise that price. - predictor: + scorer: + type: evidence factors: pathPassed: 10 pathFailed: 0.3 merging: 12 cancelling: 0.1 + base: + type: heuristic queues: # The queue `make demo-requests` and `make land` use by default. diff --git a/service/submitqueue/demo/provider/git/profiles.yaml b/service/submitqueue/demo/provider/git/profiles.yaml index 8ba87959a..449c5cd70 100644 --- a/service/submitqueue/demo/provider/git/profiles.yaml +++ b/service/submitqueue/demo/provider/git/profiles.yaml @@ -14,12 +14,15 @@ defaults: analyzer: {type: all} # Same example factors as ../fake/profiles.yaml — see that file for why they # are written out rather than left at the neutral default of 1. - predictor: + scorer: + type: evidence factors: pathPassed: 10 pathFailed: 0.3 merging: 12 cancelling: 0.1 + base: + type: heuristic queues: # The queue `make demo-requests` and `make land` use by default. Serializes diff --git a/service/submitqueue/demo/provider/github/profiles.yaml b/service/submitqueue/demo/provider/github/profiles.yaml index 234a15849..441b4a6a0 100644 --- a/service/submitqueue/demo/provider/github/profiles.yaml +++ b/service/submitqueue/demo/provider/github/profiles.yaml @@ -12,12 +12,15 @@ defaults: analyzer: {type: all} # Same example factors as ../fake/profiles.yaml — see that file for why they # are written out rather than left at the neutral default of 1. - predictor: + scorer: + type: evidence factors: pathPassed: 10 pathFailed: 0.3 merging: 12 cancelling: 0.1 + base: + type: heuristic queues: - name: demo-queue