From c7db314dd6a8145d563daf58033b8cfc3796aad9 Mon Sep 17 00:00:00 2001 From: Preetam Dwivedi Date: Mon, 7 Sep 2026 18:03:32 -0700 Subject: [PATCH 1/3] 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 fbe66d203..80a0bf4b8 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 4c1911a9decb44ab34195a25cab4bf0c1448c986 Mon Sep 17 00:00:00 2001 From: Preetam Dwivedi Date: Fri, 11 Sep 2026 09:47:31 -0700 Subject: [PATCH 2/3] 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 80a0bf4b8..0c4893b4a 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 From 2a3a7eeb00d96cbca262719bdc13d0be78dd45df Mon Sep 17 00:00:00 2001 From: Preetam Dwivedi Date: Mon, 14 Sep 2026 12:33:25 -0700 Subject: [PATCH 3/3] docs(demo): rename merging evidence factor to landing Match the RFC and YAML key after BatchStateLanding. --- doc/howto/QUICKSTART.md | 2 +- service/submitqueue/demo/provider/fake/profiles.yaml | 4 ++-- service/submitqueue/demo/provider/git/profiles.yaml | 2 +- service/submitqueue/demo/provider/github/profiles.yaml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/howto/QUICKSTART.md b/doc/howto/QUICKSTART.md index 0c4893b4a..32a24b25b 100644 --- a/doc/howto/QUICKSTART.md +++ b/doc/howto/QUICKSTART.md @@ -84,7 +84,7 @@ defaults: factors: pathPassed: 10 pathFailed: 0.3 - merging: 12 + landing: 12 cancelling: 0.1 base: type: heuristic diff --git a/service/submitqueue/demo/provider/fake/profiles.yaml b/service/submitqueue/demo/provider/fake/profiles.yaml index b217e310c..ffca1bac4 100644 --- a/service/submitqueue/demo/provider/fake/profiles.yaml +++ b/service/submitqueue/demo/provider/fake/profiles.yaml @@ -22,7 +22,7 @@ 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 + # Example evidence factors from the outcome-scorer RFC. Omitted keys would # 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. scorer: @@ -30,7 +30,7 @@ defaults: factors: pathPassed: 10 pathFailed: 0.3 - merging: 12 + landing: 12 cancelling: 0.1 base: type: heuristic diff --git a/service/submitqueue/demo/provider/git/profiles.yaml b/service/submitqueue/demo/provider/git/profiles.yaml index 449c5cd70..00911d9a2 100644 --- a/service/submitqueue/demo/provider/git/profiles.yaml +++ b/service/submitqueue/demo/provider/git/profiles.yaml @@ -19,7 +19,7 @@ defaults: factors: pathPassed: 10 pathFailed: 0.3 - merging: 12 + landing: 12 cancelling: 0.1 base: type: heuristic diff --git a/service/submitqueue/demo/provider/github/profiles.yaml b/service/submitqueue/demo/provider/github/profiles.yaml index 441b4a6a0..35b714877 100644 --- a/service/submitqueue/demo/provider/github/profiles.yaml +++ b/service/submitqueue/demo/provider/github/profiles.yaml @@ -17,7 +17,7 @@ defaults: factors: pathPassed: 10 pathFailed: 0.3 - merging: 12 + landing: 12 cancelling: 0.1 base: type: heuristic