Task: Implement Hotfix: fix the main CI failures
Table of Contents
This page documents a task in the Hotfix: fix the main CI failures story. It captures the goal, current status, acceptance, and any notes or results.
1. Goal
(Describe what user-visible-or-internal change this task produces.)
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Hotfix: fix the main CI failures |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-10-20 |
3. Acceptance
4. Plan
(Implementation strategy. Written when work starts; key decisions
are distilled into the parent story's * Decisions at close, but the
plan itself stays — it is the historical record of what we did.)
5. Measurements
Every number this task claims about a tree, with the command that produced it
and the commit it was measured at. A number without both is not a measurement,
because a clean-up record describes a tree and trunk moves under a branch: a
consumer count, a gate's component count and a suite's size all change with no
code changing, and the reader of a bare number cannot tell which tree it came
from. Where the raw output matters, put it in an evidence/ file beside the
task and name that file in the Command column.
| What | Value | Command | Commit |
|---|---|---|---|
6. Notes
7. Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario)
that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
8. PRs
| PR | Title |
|---|---|
| #3584 | [ci] Fix the four failures on main |
9. Review
| # | Comment summary | File | Decision | Notes |
|---|---|---|---|---|
| 1 | disconnect() still destroys the connection if the 5 s wait for the closed callback expires | projects/ores.nats/src/service/client.cpp | Declined | Minor. A callback that is more than 5 s late means cnats is stuck; the old code had the same exposure with no wait at all. |
10. Result
The four CI failures on main are fixed in commit 438ed5e525. The gcc loop in
xml_document_tests.cpp copies each string. The generator emits stable_arena
for the recursive arenas of wide records, so MSVC no longer sees a std::deque
of an incomplete type. client::disconnect waits for the closed callback, so
the callback no longer locks a destroyed mutex. The two id links in the
time-series plot capture are uppercase. Only CI proves the gcc, MSVC and
workflow results.