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.

Emacs 29.3 (Org mode 9.6.15)