11# Routed Rust Small dogfood
22
3- Status: first live dogfood note for the routed Rust Small front door.
3+ Status: live dogfood note for the routed Rust Small front door.
44
55Date: 2026-06-12
66
@@ -125,16 +125,104 @@ seconds of queue time in these observations.
125125
126126## Cases not yet observed live
127127
128- These cases remain ` Unknown ` from live hosted evidence in this dogfood note:
129-
130- | Case | Status | Next proof |
131- | --- | --- | --- |
132- | Same-repo PR with idle healthy self-hosted capacity | Unknown | Observe a real PR or manual run when an eligible runner is idle and healthy. |
128+ No routed Rust Small route class remains intentionally unobserved in this
129+ dogfood note. The fallback proof modes above cover hosted fallback behavior;
130+ the healthy self-hosted proof below covers the trusted idle-capacity path.
133131
134132The workflow-contract tests cover the proof-mode wiring, and the route helper
135133tests cover the decision table. Those tests are not substitutes for live fleet
136134observations.
137135
136+ ## Healthy self-hosted proof
137+
138+ PR:
139+
140+ ``` text
141+ https://github.com/EffortlessMetrics/tokmd-swarm/pull/254
142+ ```
143+
144+ Routed Rust Small workflow:
145+
146+ ``` text
147+ https://github.com/EffortlessMetrics/tokmd-swarm/actions/runs/27432612954
148+ ```
149+
150+ The live PR route selected self-hosted execution before dispatching an
151+ implementation job:
152+
153+ | Field | Observed value |
154+ | --- | --- |
155+ | Event | ` pull_request ` |
156+ | Target | ` self-hosted ` |
157+ | Reason | ` trusted_capacity_available ` |
158+ | Eligible runners | ` 7 ` |
159+ | Busy runners | ` 2 ` |
160+ | Healthy runners | ` 7 ` |
161+ | Selected runner label | ` em-ci-small ` |
162+ | Route-selected runner candidate | ` em-ci-hel2-cpx42-rust-01 ` |
163+ | Actual execution runner | ` em-ci-hel2-cx53-rust-01 ` |
164+ | Router job | passed |
165+ | Self-hosted implementation | passed |
166+ | GitHub-hosted implementation | skipped |
167+ | Normalized result | passed |
168+
169+ Downloaded ` target/ci/route-rust-small.json ` from run ` 27432612954 ` showed:
170+
171+ ``` json
172+ {
173+ "target" : " self-hosted" ,
174+ "reason" : " trusted_capacity_available" ,
175+ "eligible_runners" : 7 ,
176+ "busy_runners" : 2 ,
177+ "healthy_runners" : 7 ,
178+ "selected_runner_label" : " em-ci-small" ,
179+ "selected_runner" : " em-ci-hel2-cpx42-rust-01" ,
180+ "warnings" : [],
181+ "errors" : []
182+ }
183+ ```
184+
185+ Downloaded ` target/ci/routed-rust-small-result.json ` from the same run showed:
186+
187+ ``` json
188+ {
189+ "router" : {
190+ "target" : " self-hosted" ,
191+ "reason" : " trusted_capacity_available"
192+ },
193+ "selected" : {
194+ "job" : " rust-small-self-hosted" ,
195+ "result" : " success"
196+ },
197+ "jobs" : {
198+ "self_hosted" : " success" ,
199+ "github" : " skipped"
200+ },
201+ "telemetry" : {
202+ "runner_name" : " em-ci-hel2-cx53-rust-01" ,
203+ "runner_group" : " em-ci-small" ,
204+ "runner_labels" : [" self-hosted" , " linux" , " x64" , " em-ci" , " trusted-pr" , " rust-small" ],
205+ "duration_seconds" : 497.0 ,
206+ "queue_seconds" : 2.0 ,
207+ "cache_note" : " self-hosted run-scoped Cargo home with scratch target cleanup"
208+ }
209+ }
210+ ```
211+
212+ The route receipt's ` selected_runner ` is a pre-dispatch idle-runner candidate
213+ from the runner API. GitHub still owns final self-hosted assignment for the
214+ label/group match. The actual execution runner is recorded in
215+ ` routed-rust-small-result.json ` telemetry for the selected implementation job.
216+
217+ This proves the healthy-capacity invariant for the observed case:
218+
219+ ``` text
220+ trusted same-repo PR + healthy idle Rust Small runner
221+ -> self-hosted implementation runs
222+ -> GitHub-hosted implementation skips
223+ -> Tokmd Rust Small Result normalizes the selected implementation result
224+ ```
225+
138226## Confusing points
139227
140228- The route helper compiles ` xtask ` inside the GitHub-hosted router job. In the
@@ -145,11 +233,14 @@ observations.
145233 after required checks are green.
146234- GitHub emitted a Node.js 20 deprecation annotation for ` oven-sh/setup-bun ` .
147235 That warning is unrelated to routed Rust Small behavior.
236+ - Before PR #254 , the runner API adapter compared labels case-sensitively
237+ against ` linux ` and ` x64 ` , while GitHub returned built-in labels as ` Linux `
238+ and ` X64 ` . It also did not require the ` rust-small ` lane label. PR #254
239+ normalized API labels and aligned the route predicate with the self-hosted
240+ dispatch labels.
148241
149242## Follow-ups
150243
151- - Capture one self-hosted-selected run when an eligible runner is idle and
152- health is fresh.
153244- Keep branch protection pinned to ` Tokmd Rust Small Result ` ; do not require
154245 the route or conditional implementation jobs directly.
155246- Watch router-job duration. If it becomes noisy, consider a narrower route
@@ -161,7 +252,7 @@ observations.
161252This dogfood note does not prove:
162253
163254- every future PR will select GitHub-hosted under capacity pressure;
164- - self-hosted selection works under a fresh idle runner ;
255+ - every future trusted PR will select self-hosted when a runner appears idle ;
165256- all manual simulation modes have been executed live;
166257- route telemetry is a CI actuals source of truth;
167258- routed Rust Small behavior generalizes to release, publish, signing, full
0 commit comments