Hazel reports · ^report(23) · draft, 2026-10-19
#2635 Is Green
^report(18) answered Cyrus's question of 2026-10-16, why CI fails on #2635 (livelits × modular editors), with three causes, and ended with five next steps. What happened to each step, and what is known now? Matthew asked on 2026-10-19, once the agenda for the next meeting with Cyrus, ^report(20), could mark #2635 green.
Short answers. As of 2026-10-20 04:24 UTC (2026-10-19 evening, Mountain time). Every run is linked below, and its numbers are in this page's data.
- #2635 has passed CI twice, its first green runs since it was made on 2026-10-01. First on
90ed4505bf, the merge of #2699: Fast checks ran 5,553 tests and Full tests 6,098, none failing (1 h 28 min for Full tests). Then on5961401df2, one more commit on top, with the same counts.^report(18)counted 97 runs and none green; since then 2 green, 0 red, and 4 cancelled by a newer push.0 of 97runs green before^report(18)2 of 2finished runs green since - Each of
^report(18)'s three causes is fixed on #2635, and one was a real bug. The 8 module cases pass with Andrew Blinn's per-member analysis on Modules II (through #2699); the table test has an input whose error the table hides whatever completion does (27f100e37c); and the corpus mismatch was incremental statics keeping a livelit use's old expansion after the livelit changed (1131a457e4). - Of its five next steps, two are done, two partly, and one is for the meeting. Left over: #2597 still has the old table-test input (it will fail when #2597 next merges dev, now 494 commits ahead of it); #2635 conflicts with its base again in 1 file, since #2597 took two commits that evening; and the plan for merging into dev is item 6 of the agenda.
- Both parents are green too: #2597 at
8a03584ef6(4,523 + 4,977 tests) and #2469 at1290464a1a(5,131 + 5,538). #2687's newest finished run failed one test of its own (below), which is Andrew's work in progress, not #2635's.
^report(18)'s five next steps, each with where it stands. Green: done; amber: done on #2635 but not everywhere it is needed; grey: open, for the meeting on 2026-10-21.The question, and ^report(18)'s answer
Cyrus asked, at his meeting with Matthew on 2026-10-16, why CI fails on #2635, the branch that merges modular editors (#2469) into the livelits branch (#2597). ^report(18) read all 97 of #2635's CI runs and found that it had never passed, failing the same tests every time, for three causes that came from the merge itself, with neither parent broken on its own:
- 8 module tests: #2469 analyzes a module one member at a time on dev's module statics, which Modules II (on the livelits branch only) replaced, so the merge analyzed a module literal whole and the tests' counts came out low (cause 1);
- 1 table test: dev's canonical completion (#2374) closes the stray bracket the test relied on, so its error no longer landed in a hidden row (cause 2);
- 1 corpus test: one livelits document elaborated differently per item than as a whole program, cause unknown when the report was first written (cause 3).
Its update at 12:45 MDT the same day had a fix for each, and its What next listed five steps. This report takes them one by one.
The five steps, then and now
| Step | ^report(18) said | Now | What happened |
|---|---|---|---|
| 1 | Bring Andrew's per-member analysis on Modules II into #2635, adapted to Modules II part 3. | done | Done through #2699, merged into #2635 on 2026-10-19 (its merge commit 90ed4505bf): Andrew Blinn's per-member module analysis on Modules II, fitted to #2635's Modules II part 3, and one fix of its own, a livelit definition analyzed whole, not as a module (223357135a). The 8 module cases pass. |
| 2 | Give Editing.TableDecorations 1 an input whose error stays hidden under canonical completion, on #2597 too. | partly | Done on #2635 (27f100e37c: the row gets a wrong label, an error in table syntax that the projector hides, whatever completion does). Not yet on #2597, which still has the old input: it passes there only because #2597's dev predates canonical completion, and it is now 494 commits behind dev. |
| 3 | Find why macro-result.hz elaborates differently per item. | done | Found and fixed (1131a457e4): a real bug in incremental statics. A livelit use records the livelit it applies as ^inc among the names it depends on, but DefStatics named the livelit's own entry plain inc, so a changed livelit marked no use stale, and after an edit the use kept its old expansion. DefStatics is #2469's, so #2597, which has no DefStatics, never had the bug. |
| 4 | Follow Cyrus's plan for merging into dev: first the PRs that have been waiting, then Andrew's modular editing PRs (#2469, with #2687 in it), then the livelits and performance PRs. | open | For the meeting: item 6 of the agenda for 2026-10-21, ^report(20), with item 7 (requiring the test jobs for merging into dev). |
| 5 | Merge the livelits branch into #2635 instead of cherry-picking, to clear the 25 conflicting files before its next CI run. | partly | Done (cf325d4f61: a merge keeping #2635's side, every one of #2597's commits since the merge base being there already): GitHub showed #2635 mergeable, and its CI ran green twice after. Since then #2597 took two more commits on 2026-10-19 (54e5a66bf2, 8a03584ef6), and #2635 conflicts with it again, now in 1 file (test/Test_ContextInspector.re). |
#2635's CI since then
^report(18)'s data was read, to 2026-10-20 04:24 UTC: one tick each, green passed, red failed, grey cancelled (a newer push replaced it), amber running. #2635's cancelled runs are four commits of its afternoon, among them the merge of the livelits branch, the table test's input and the statics fix, each replaced by the next push before its tests finished.| Started (UTC) | Head | Run | Verdict | Fast checks | Full tests |
|---|---|---|---|---|---|
| 2026-10-19 21:07 | 5961401df2 | run | success | 5,553, 0 failed, 12 min | 6,098, 0 failed, 1 h 14 min |
| 2026-10-19 19:33 | 90ed4505bf | run | success | 5,553, 0 failed, 15 min | 6,098, 0 failed, 1 h 28 min |
| 2026-10-19 17:58 | 1131a457e4 | run | cancelled | (a newer push replaced it) | |
| 2026-10-19 17:38 | 27f100e37c | run | cancelled | (a newer push replaced it) | |
| 2026-10-19 17:35 | cf325d4f61 | run | cancelled | (a newer push replaced it) | |
| 2026-10-19 16:41 | b44bb9c50f | run | cancelled | (a newer push replaced it) |
The two green runs are the first in #2635's history. Fast checks ran one test more than at 1131a457e4 in ^report(18)'s update (5,552 then, 5,553 now). The times are the test suite's own, as alcotest reports them.
The parents and #2687
| Branch | Head | Run | Verdict | Fast checks | Full tests |
|---|---|---|---|---|---|
| #2597 the livelits branch | 8a03584ef6 | run | success | 4,523, 0 failed | 4,977, 0 failed |
| #2469 modular editors | 1290464a1a | run | success | 5,131, 0 failed | 5,538, 0 failed |
| #2687 modular editors + the standard library | 939cd7f7c7 | run | failure | 5,423, 0 failed | 5,837, 1 failed |
#2597 took two commits on 2026-10-19 after ^report(18): a revealed livelit model selects whole tiles and no longer blanks the editor (54e5a66bf2), and Γ outlines a type too large to show (8a03584ef6). Both answer items of the agenda (item 2 and item 4). #2687's newest finished run, on 939cd7f7c7, passed Fast checks and failed one of 5,837 Full tests: WorldTree 3, "the corpus in one document", which raised Not_found. That is #2687's own test on its own work, which goes red and back within hours, as ^report(18) found for #2469; a newer run of it was still going when this was collected.
What is still open
- #2597's table test. Its input is still the stray bracket, and it passes only because #2597's dev (
2f9f2f6424) is from before canonical completion. #2597 is 494 commits behind dev (484 when^report(18)counted), so this test will fail at its next merge of dev unless27f100e37c's input goes there first. - #2635's conflict with its base. GitHub shows #2635 conflicting with #2597's branch again, in 1 file:
test/Test_ContextInspector.re, from #2597's two commits of that evening. Like the 25 files of^report(18), it is how #2635 is kept up to date (by taking #2597's work across), not a failure; a merge clears it before #2635's next run. - The merge plan for dev, for the meeting (
^report(20), item 6). #2635 is now 15 commits behind dev, through #2469's own merges of dev; #2597 is 494.
What next
- Give #2597 the table test's new input (
27f100e37c) before it next merges dev. - Merge #2597's two commits of 2026-10-19 into #2635, to clear the conflict in
test/Test_ContextInspector.rebefore #2635's next CI run. - Settle the order of merging into dev at the meeting on 2026-10-21 (
^report(20), item 6), and whether the test jobs are required for it (item 7).
How this was put together
- The runs: every CI run on the four branches created since 2026-10-19 15:55 UTC (when
^report(18)'s runs were listed), from GitHub's Actions API at 2026-10-20T04:24+00:00. A run counts as green, red or cancelled as GitHub gives its conclusion. - The test counts: each finished run's Fast checks and Full tests job logs, read for alcotest's summary line (tests run, failures, seconds), as
^report(18)read them. - The steps: each fix's commit checked with git for being on #2635 and on #2597 (
merge-base --is-ancestor), the conflict withgit merge-treebetween the two branches' heads, and how far behind dev each branch is from its merge base with dev. - Not done: no tests were run for this report; every number is from CI's own runs.
- The data: in this page's
<script type="application/json" id="report-data">element and in 023/data/ (the runs, the parents' newest runs, the PRs, the git facts). The collector and this page's generator are in 023/drivers/. - #2635 is Matthew Hammer's branch, made and kept with Claude. #2469 and #2687 are Andrew Blinn's, and the per-member analysis on Modules II is his (
00bc805ca1on #2687). Modules II is Alexander's.