OXYGENHUB

A highlighting test allows a debug build more time 8eae2f0e255c

closes #327
Author
Andy McCall @andymccall <[email protected]>
via
agent agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key e8197e1cbe49
When
· 2026-10-26 05:05 UTC
Signature
◈ sealed by agent:claude@andymccall
Hash
8eae2f0e255c5d2e162865f8219a66b836ffcc2fee97998124ef36ea2ff7f8c5
Depends on
9bbca80f777a a7e6e8e6094c b5668108487f d23464c0ac60 f157bcea0e32
Depended on by
d061ac87618c
In bookmarks
api-unknown-fields diffusion-pin-bookmark main proposal-list-fast
In tags
v0.9.11 v0.9.15 v0.9.16 v0.9.19 v0.9.20 v0.9.21 v0.9.22 v0.9.23 v0.9.24 v0.9.6 v0.9.7 v0.9.8 v0.9.9
Edits
3 atoms, 0 tree operations, 2 files

Browse the tree at this change

modified CHANGELOG.md +1 −0
…
3 unchanged lines
4 4
5 5
## Unreleased
6 6
7 +
- **A highlighting test no longer fails a busy machine's gate (#327):** it timed a debug build against a release build's 500 ms; debug builds now have 3 s, still far below what highlighting the line would take.
7 8
- **`oh runner-updates` and its API (#322):** site administrators read every level's update settings, the test groups, each runner's policy and offer, and the held builds (`GET /api/v1/admin/runner-updates`); `oh runner-updates set group:canary --updates on --window 02-05` changes one level, keeping what is not given (`PUT …/settings`, 422 saying what is wrong); `oh runner-updates lift 0.4.0` offers a held build again (`POST …/holds/{version}/lift`).
8 9
- **A build that rolls back on one runner is held for the rest (#326):** when a runner reports it rolled back from flow X (it did not reach the hub after updating, or would not start), the hub offers X to no other runner, saying why, until an administrator lifts the hold on Admin › Runners › Updates, which lists each held build with the runner and the reason. One failed canary halts the rollout. Migration 0097.
9 10
- **Finished work moves to Done (#325):** a card whose issue closes (on its page, through the API, or by a change's `closes #N`), or whose proposal lands or closes, moves to its board's column for finished work. A new board's Done is that column, and so is each existing board's column named Done; a column's menu turns it on or off (one column of a board). Archived cards stay archived.
…
339 unchanged lines
modified crates/hub/src/render/highlight.rs +4 −1
…
135 unchanged lines
136 136
        let long = format!("var a=\"<\";{}\nb();\n", "x+".repeat(MAX_HIGHLIGHTED_LINE));
137 137
        let started = std::time::Instant::now();
138 138
        let l = lines("app.min.js", &long);
139 -
        assert!(started.elapsed() < std::time::Duration::from_millis(500), "{:?}", started.elapsed());
139 +
        // Highlighting it would take far longer; a debug build on a busy
140 +
        // machine takes some of this bound for reading it plain (#327).
141 +
        let bound = std::time::Duration::from_millis(if cfg!(debug_assertions) { 3000 } else { 500 });
142 +
        assert!(started.elapsed() < bound, "{:?}", started.elapsed());
140 143
        assert_eq!(l.len(), 2);
141 144
        assert!(l[0].starts_with("var a=&quot;&lt;&quot;;") && !l[0].contains("<span"), "{}", &l[0][..40]);
142 145
        assert!(lines("app.js", "var a = 1;\n")[0].contains("<span"), "a normal file is highlighted");
…
2 unchanged lines