From 0480798583b245cb5da248db11c84bb83df31778 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Sun, 13 Sep 2026 09:40:47 +0000 Subject: [PATCH] add weekly report and change log for Sep 06-12, 2026 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01RLSNJhNoULvVcUhXEFafQC --- CHANGES.md | 128 ++++++++++++++++++++++++++++++++++++ reports/sep06-sep12-2026.md | 70 ++++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 reports/sep06-sep12-2026.md diff --git a/CHANGES.md b/CHANGES.md index e16c2168..7ea6cd90 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,134 @@ Auto-generated by /xce-changes — component-grouped, newest week first. `.wolf/` bookkeeping commits are excluded. +## Sep 06, 2026 - Sep 12, 2026 + + +### controller +- `a83d7087` docs(xce-test-cli-ux): document jobsub -n's min,max task-range format (2026-09-10) +- `38595099` test(xce-test-cli-ux): verify help/completion/context-switching hold together (task 4.4) (2026-09-10) +- `a98fad24` fix(xce-test-cli-ux): route diagnostic/warning messages to stderr uniformly (2026-09-10) +- `96746af3` feat(xce-test-cli-ux): generate and consolidate every command's help content (2026-09-09) +- `0d67f5cb` feat(xce-test-cli-ux): add JSON output mode to the listing commands (2026-09-09) +- `a57c0471` feat(xce-test-cli-ux): wire confirmation gate to the five destructive commands (2026-09-09) +- `45120af2` feat(xce-test-cli-ux): wrap every blocking RPC with the interrupt adapter (2026-09-09) +- `f152c59e` feat(xce-test-cli-ux): migrate all flag-accepting commands to flagspec (2026-09-09) +- `878a42fb` fix(xce-test-cli-ux): fix bug-1557's join maxmem default (2026-09-09) +- `a8154acb` fix(xce-test-cli-ux): fix bug-1711's display and text defects (2026-09-09) +- `c709eba8` feat(xce-test-cli-ux): add in-session source command with cycle detection (2026-09-09) +- `0ef232a0` feat(xce-test-cli-ux): add command-name tab completion scoped to context (2026-09-09) +- `07d238ea` feat(xce-test-cli-ux): build JSON list-output helper library (2026-09-09) +- `a2686516` feat(xce-test-cli-ux): build destructive-command confirmation gate (2026-09-09) +- `4d1f2476` test(xce-test-cli-ux): build reusable pty-driven black-box CLI harness (2026-09-09) +- `b70228c5` feat(xce-test-cli-ux): add process-level help/version discovery (2026-09-09) +- `204f81d1` feat(xce-test-cli-ux): add per-connection lock to interruptible-call adapter (2026-09-09) +- `9a06047d` feat(xce-test-cli-ux): build interruptible-call heap-ownership mechanism (2026-09-09) +- `b4f5a460` feat(xce-test-cli-ux): fix SIGINT install to guarantee EINTR, add accessor (2026-09-09) +- `89af46af` feat(xce-test-cli-ux): add flag typo-suggestion and help-block renderer (2026-09-09) +- `0748f10c` feat(xce-test-cli-ux): build flag-descriptor parsing/rejection core (2026-09-09) + +### worker +- `a35f597e` fix(worker): real maxswap/maxtmp detection; feat(scheduler): annotate multi-slot assigned jobs (2026-09-07) +- `f02bedc5` test(resreq-maxtasks-wiring): close worker launch-type dispatch coverage gap (2026-09-06) + +### scheduler +- `25fb5c11` fix(scheduler): sim resource over-commit, byte-unit display, sync job-state-at-capture (2026-09-12) +- `a6d96705` refactor(scheduler): read slots' job total from alloc_req instead of name-checking (2026-09-08) +- `5b18f14a` fix(scheduler): restore slots-based global limit enforcement (bug-1790 regression) (2026-09-08) +- `fa34b038` refactor(scheduler): move job-total limit computation to the limit plugin (bug-1790) (2026-09-08) +- `c832706e` test(scheduler): fix wrong resInUse precondition in mem-reservation test (bug-1758) (2026-09-08) +- `9caf1424` fix(scheduler): populate job-wide total want for per-host resources during global phase (bug-1790) (2026-09-08) +- `924ac32c` fix(scheduler): global limits on per-host resources now read the correct want (bug-1789) (2026-09-07) +- `22cfe616` fix(scheduler): fix limit-plugin usergroup/scope/error-code cascade (gitea#46) (2026-09-07) +- `0d3f925c` fix(scheduler): retire reconciled jobs from picker candidates (bug-1759/1779) (2026-09-07) +- `ef3c4670` fix(scheduler): exclude terminal jobs from assigned-jobs listing (bug-1778) (2026-09-07) +- `a35f597e` fix(worker): real maxswap/maxtmp detection; feat(scheduler): annotate multi-slot assigned jobs (2026-09-07) +- `c454f065` test(resreq-maxtasks-wiring): fix deferred queue-priority assertion (2026-09-06) +- `d1849c94` test(resreq-maxtasks-wiring): retire multislot test's bug-1770 workaround (2026-09-06) +- `c36014c0` test(resreq-maxtasks-wiring): verify driver parity, update-immunity, cache (2026-09-06) +- `4644d20c` test(resreq-maxtasks-wiring): verify ingest wiring parity and no-regression (2026-09-06) +- `6577e041` feat(resreq-maxtasks-wiring): wire snapshot-restore ingest to real task count (2026-09-06) +- `0aadb494` feat(resreq-maxtasks-wiring): wire fresh job-ingest to real task count (2026-09-06) + +### frontend +- `099dbdab` fix(apiserver): fix job control union discriminant, add human-readable job ID support (gitea#45) (2026-09-07) +- `5ab344e1` fix(apiserver): propagate submit user as job execuser (bug-1780) (2026-09-07) +- `e395eaa3` fix(frontend): count host job-state columns and EXEC_HOST by real slots (2026-09-07) + +### lib +- `f09fbdb3` fix(build): close the same codegen race for the four PEG parsers (bug-1798) (2026-09-10) +- `c1c6c9a2` fix(build): close capnp codegen race for controller/worker/scheduler too (bug-1798) (2026-09-10) +- `654c6e8c` fix(build): close capnp codegen missing-dependency-edge race (bug-1798) (2026-09-10) +- `fa34b038` refactor(scheduler): move job-total limit computation to the limit plugin (bug-1790) (2026-09-08) +- `4b20590c` fix(lib): free host_account.host and job_account test fixtures (bug-1723, bug-1621) (2026-09-08) +- `9caf1424` fix(scheduler): populate job-wide total want for per-host resources during global phase (bug-1790) (2026-09-08) +- `22cfe616` fix(scheduler): fix limit-plugin usergroup/scope/error-code cascade (gitea#46) (2026-09-07) +- `799a71ec` feat(resreq-maxtasks-wiring): add task-count derivation helper (2026-09-06) + +### include +- `fa34b038` refactor(scheduler): move job-total limit computation to the limit plugin (bug-1790) (2026-09-08) +- `9caf1424` fix(scheduler): populate job-wide total want for per-host resources during global phase (bug-1790) (2026-09-08) +- `22cfe616` fix(scheduler): fix limit-plugin usergroup/scope/error-code cascade (gitea#46) (2026-09-07) +- `799a71ec` feat(resreq-maxtasks-wiring): add task-count derivation helper (2026-09-06) + +### specs +- `25fb5c11` fix(scheduler): sim resource over-commit, byte-unit display, sync job-state-at-capture (2026-09-12) +- `38595099` test(xce-test-cli-ux): verify help/completion/context-switching hold together (task 4.4) (2026-09-10) +- `31d66060` docs(xce-test-cli-ux): verify source's interaction with the confirmation gate (task 4.3) (2026-09-10) +- `f6793a24` docs(xce-test-cli-ux): verify the confirmation gate end-to-end (task 4.2) (2026-09-10) +- `18aa7366` docs(xce-test-cli-ux): verify Ctrl-C cancellation end-to-end (task 4.1) (2026-09-10) +- `a98fad24` fix(xce-test-cli-ux): route diagnostic/warning messages to stderr uniformly (2026-09-10) +- `96746af3` feat(xce-test-cli-ux): generate and consolidate every command's help content (2026-09-09) +- `0d67f5cb` feat(xce-test-cli-ux): add JSON output mode to the listing commands (2026-09-09) +- `a57c0471` feat(xce-test-cli-ux): wire confirmation gate to the five destructive commands (2026-09-09) +- `45120af2` feat(xce-test-cli-ux): wrap every blocking RPC with the interrupt adapter (2026-09-09) +- `f152c59e` feat(xce-test-cli-ux): migrate all flag-accepting commands to flagspec (2026-09-09) +- `878a42fb` fix(xce-test-cli-ux): fix bug-1557's join maxmem default (2026-09-09) +- `a8154acb` fix(xce-test-cli-ux): fix bug-1711's display and text defects (2026-09-09) +- `c709eba8` feat(xce-test-cli-ux): add in-session source command with cycle detection (2026-09-09) +- `0ef232a0` feat(xce-test-cli-ux): add command-name tab completion scoped to context (2026-09-09) +- `07d238ea` feat(xce-test-cli-ux): build JSON list-output helper library (2026-09-09) +- `a2686516` feat(xce-test-cli-ux): build destructive-command confirmation gate (2026-09-09) +- `7d0ac6f6` docs(xce-test-cli-ux): commit requirements/design/tasks spec-phase artifacts (2026-09-09) +- `4d1f2476` test(xce-test-cli-ux): build reusable pty-driven black-box CLI harness (2026-09-09) +- `b70228c5` feat(xce-test-cli-ux): add process-level help/version discovery (2026-09-09) +- `204f81d1` feat(xce-test-cli-ux): add per-connection lock to interruptible-call adapter (2026-09-09) +- `9a06047d` feat(xce-test-cli-ux): build interruptible-call heap-ownership mechanism (2026-09-09) +- `b4f5a460` feat(xce-test-cli-ux): fix SIGINT install to guarantee EINTR, add accessor (2026-09-09) +- `89af46af` feat(xce-test-cli-ux): add flag typo-suggestion and help-block renderer (2026-09-09) +- `0748f10c` feat(xce-test-cli-ux): build flag-descriptor parsing/rejection core (2026-09-09) +- `0d3f925c` fix(scheduler): retire reconciled jobs from picker candidates (bug-1759/1779) (2026-09-07) +- `a221b6ae` chore(resreq-maxtasks-wiring): close out feature-level validation (2026-09-06) +- `5c87f1cc` chore(resreq-maxtasks-wiring): confirm HA soak regression (task 5.2) (2026-09-06) +- `c454f065` test(resreq-maxtasks-wiring): fix deferred queue-priority assertion (2026-09-06) +- `1e962746` feat(resreq-maxtasks-wiring): prove array-job element spans hosts too (2026-09-06) +- `7fd673cc` feat(resreq-maxtasks-wiring): submit real multi-task job across hosts (2026-09-06) +- `0313b910` feat(resreq-maxtasks-wiring): add multi-host e2e test harness (2026-09-06) +- `d1849c94` test(resreq-maxtasks-wiring): retire multislot test's bug-1770 workaround (2026-09-06) +- `c36014c0` test(resreq-maxtasks-wiring): verify driver parity, update-immunity, cache (2026-09-06) +- `4644d20c` test(resreq-maxtasks-wiring): verify ingest wiring parity and no-regression (2026-09-06) +- `f02bedc5` test(resreq-maxtasks-wiring): close worker launch-type dispatch coverage gap (2026-09-06) +- `6577e041` feat(resreq-maxtasks-wiring): wire snapshot-restore ingest to real task count (2026-09-06) +- `0aadb494` feat(resreq-maxtasks-wiring): wire fresh job-ingest to real task count (2026-09-06) +- `799a71ec` feat(resreq-maxtasks-wiring): add task-count derivation helper (2026-09-06) + +### build +- `58918a6a` fix(scheduler): live-verify bug-1790 with a real global mem limit (2026-09-08) +- `ed654609` remove override of maxswap (2026-09-08) +- `028d8f6a` chore(build): make xce-build.sh self-wrap into nix develop (2026-09-07) +- `850d186d` feat(build): cap xce-build.sh's run-queue length via a live-computed --jobs flag (2026-09-07) + +### misc +- `25fb5c11` fix(scheduler): sim resource over-commit, byte-unit display, sync job-state-at-capture (2026-09-12) +- `ffca959e` docs(skills): note join's corrected maxmem default at bare-join call sites (2026-09-10) +- `7acf26f2` docs(xce-build): drop redundant manual nix develop wrapper from skill (2026-09-08) +- `028d8f6a` chore(build): make xce-build.sh self-wrap into nix develop (2026-09-07) +- `850d186d` feat(build): cap xce-build.sh's run-queue length via a live-computed --jobs flag (2026-09-07) +- `a6b735b6` add weekly report and change logs (2026-09-06) +- `1e962746` feat(resreq-maxtasks-wiring): prove array-job element spans hosts too (2026-09-06) +- `7fd673cc` feat(resreq-maxtasks-wiring): submit real multi-task job across hosts (2026-09-06) +- `0313b910` feat(resreq-maxtasks-wiring): add multi-host e2e test harness (2026-09-06) + ## Aug 30, 2026 - Sep 05, 2026 diff --git a/reports/sep06-sep12-2026.md b/reports/sep06-sep12-2026.md new file mode 100644 index 00000000..2a71b184 --- /dev/null +++ b/reports/sep06-sep12-2026.md @@ -0,0 +1,70 @@ +# XCE Project Status — Sep 06 – Sep 12, 2026 + +> Note: the calendar-default window (Aug 31–Sep 05) is already covered by +> `aug30-sep05-2026.md`; this report covers the actual gap — the last +> completed day before this report was generated. + +## TL;DR + +A CLI-quality week bookended by two scheduler-side finishes: Sunday closed out `resreq-maxtasks-wiring` (real multi-host task-count wiring, proven end-to-end and HA-soak clean), and the middle of the week was almost entirely `xce-test-cli-ux` — a large, self-contained rebuild of `xce_test`'s interactive shell (interrupt-safe RPCs, confirmation gates, tab completion, JSON output, flag parsing) that surfaced its own cluster of testsuite bugs (bug-1791–1797). Monday/Tuesday cleared the last of the gitea#46 limit-plugin cascade and closed the from-scratch build race (bug-1798) for good. Saturday's session — driven by a live scheduler-replay debugging conversation — fixed a real resource over-commit (bug-1799/1801), added human-scaled resource-unit display (bug-1800), and, after live user feedback, revised `scheduler-sim-eager-reconciliation`'s own design to make captured jobs' `job->state` transition synchronously (bug-1804) rather than deferred. Last week's flagged flagship gap, bug-1770 (multi-host allocation had no live production path), is now fixed. + +## Commits by day + +### Sun 09-06 — resreq-maxtasks-wiring to done, plus last week's report +- **`799a71ec`..`5c87f1cc`** (12 commits) — built the real task-count derivation helper, wired it into fresh job-ingest and snapshot/replay-restore ingest, closed a worker launch-type coverage gap, then validated with a real multi-host end-to-end harness (plain multi-task job + array-job element, both genuinely split across hosts) and a full regression + HA soak pass. This is the fix for last week's flagged **bug-1770** (multi-host allocation had zero live production path). +- **`a6b735b6`** — added `aug30-sep05-2026.md` and `CHANGES.md` for the prior window. + +### Mon 09-07 — gitea#46 limit-plugin cascade, apiserver job-control fixes +- **`22cfe616`..`924ac32c`** — fixed the limit-plugin usergroup/scope/error-code cascade (gitea#46) end-to-end: named-usergroup resolution, default-scope semantics, kvmgr not-found-vs-error confusion (twice), an RTTI/pointer-indirection type-confusion bug, and finally live-verified all 7 `limits.yaml` limits matching expectations (bug-1784–1789). +- **`099dbdab`, `5ab344e1`** — apiserver: fixed a job-control union discriminant bug + added human-readable job IDs (gitea#45 reopened), and propagated submit user as job execuser (bug-1780). +- **`0d3f925c`, `ef3c4670`** — scheduler: retired reconciled jobs from picker candidates and excluded terminal jobs from the assigned-jobs listing (bug-1759/1778/1779). +- **`a35f597e`, `e395eaa3`** — worker: real maxswap/maxtmp hardware detection (bug-1554); frontend: fixed host job-state/EXEC_HOST columns to count real slots. +- **`850d186d`, `028d8f6a`** — build: `xce-build.sh` now self-wraps into `nix develop` and caps its run-queue length via a live-computed `--jobs` flag. + +### Tue 09-08 — bug-1790 residual gap, leak fixes, scheduler global-limit refactor +- **`9caf1424`..`a6d96705`** — fixed bug-1790 (global limits on per-host resources reading the wrong "want"), live-verified with a real global mem limit, then refactored job-total limit computation into the limit plugin itself and fixed a regression that briefly broke slots-based global enforcement along the way. +- **`4b20590c`, `c832706e`** — fixed two pre-existing ASAN leaks (host_account/job_account test fixtures, bug-1621/1723) and a wrong resInUse precondition in a mem-reservation test (bug-1758). + +### Wed 09-09 — xce-test-cli-ux: foundation and core (bulk of the week) +- **`0748f10c`..`96746af3`** (16 commits) — built the flag-descriptor parsing/rejection core, typo suggestions, SIGINT/EINTR handling, an interruptible-call heap-ownership adapter with per-connection locking, a pty-driven black-box CLI test harness, tab completion, in-session `source` with cycle detection, a JSON list-output helper library, a destructive-command confirmation gate wired to five commands, flagspec migration for every flag-accepting command, and consolidated help generation. Along the way, fixed bug-1557 (join's maxmem default) and bug-1711 (display/text defects). +- Testsuite bugs surfaced and fixed same-day: **bug-1791** (cross-thread pthread mutex unlock, EPERM), **bug-1792** (tab-completion test silent-input-mode gap). + +### Thu 09-10 — xce-test-cli-ux: integration, validation, and the build-race root-cause fix +- **`a98fad24`..`38595099`** — routed diagnostic/warning output to stderr uniformly, then verified Ctrl-C cancellation, the confirmation gate, `source`'s interaction with it, and help/completion/context-switching end-to-end (tasks 4.1–4.4). Found and deliberately deferred four more testsuite bugs (bug-1794–1797: a `cmd_jobrun` ASAN abort, a `leave_ctx()` use-after-free, misleading `perror()` diagnostics, a queue-name leak) — all out of boundary for their discovering (validation-only) tasks. +- **`654c6e8c`, `c1c6c9a2`, `f09fbdb3`** — root-caused and closed the long-standing intermittent from-scratch build failure (`fatal error: controller.capnp.h`): a missing-dependency-edge race in the capnp codegen `custom_target`, fixed at the `meson.build` level and extended to controller/worker/scheduler and all four PEG parser generators (bug-1798). + +### Fri–Sat 09-11/09-12 — live replay debugging: resource over-commit, unit display, design revision +- Live scheduler-replay session surfaced and fixed, same-day (all TDD, RED confirmed before GREEN): **bug-1799/1801** (sim replay resInUse over-commit — a worker's used slots could exceed its own capacity after a resync replay; `sched_account_jobs` now skips RECONCILING/UNAVAIL workers like `core_reset_workers` already does), **bug-1800** (bytes-valued CONSUMABLE resources now render human-scaled units), and **bug-1802/1803** (a `break ANY` breakpoint kind was added, then reverted after live feedback it over-fired inside busy sessions, replaced with a prescan-based "next non-dummy session" hint in `info summary`). +- **`25fb5c11`** (Sat) — bundled commit landing all of the above plus **bug-1804**: a user-directed design-fork resolution revising `scheduler-sim-eager-reconciliation` so a captured job's `job->state` is set to `RUN` synchronously at dispatch capture (mirroring normal-mode's `sched_commit_decision`, bug-1624) instead of deferring until its separately-recorded `JOB_STATE_CHANGE` event replays. Full scheduler suite verified 77/77 green before commit. + +## Bugs opened/fixed this window + +- **29 genuinely new bugs** (bug-1775 – bug-1804, one intentional ID gap at bug-1783), **24 fixed**, **5 deliberately deferred/still open** (bug-1777, bug-1793, bug-1796, bug-1797 — all explicitly out-of-boundary for the validation-only tasks that found them; bug-1799 itself stays logged as "not yet fixed" by this project's own convention of routing its actual fix through a separate follow-up ID, bug-1801, which is fixed). +- **Carry-over status from last week's report**: **bug-1770 — fixed** (Sun, `resreq-maxtasks-wiring`), closing the flagship gap flagged last week (multi-host allocation now has a real production path). `bug-1621`/`bug-1723`/`bug-1758` — fixed (Tue). `bug-1714` — still open, no movement this window (last touched Sep 4). `bug-1632`, `bug-1726`, `bug-1728` — no movement, still open. +- Highest-severity fixes: **bug-1799/1801** (resource-accounting over-commit — a worker could show more slots in use than it physically has), **bug-1798** (root-caused a long-standing intermittent from-scratch build failure), **bug-1784–1789** (gitea#46's full limit-plugin cascade, 6 stacked bugs found and fixed in sequence). +- **Integrity check**: 29 unique new bug IDs, sequential except one deliberate gap (bug-1783); 0 duplicate IDs in the buglog overall. + +## Spec status changes + +- **`resreq-maxtasks-wiring`** — `implementation-complete`, all subtasks done (Sun), HA-soak and full-suite verified with no regression. Closes bug-1770. +- **`scheduler-sim-eager-reconciliation`** — revision 4 landed (Sat, `25fb5c11`): synchronous job-state-at-capture per bug-1804/user direction. Phase remains `implementation-complete`, 12/12 tasks. +- **`xce-test-cli-ux`** — all 23 real subtasks across all 4 task groups (Foundation → Validation) are checked done, but `spec.json` still reads phase `tasks-generated` (`ready_for_implementation: true`) — the same metadata-lag pattern flagged for three other specs in the prior two reports. A phase-sync pass is due. + +## Stats + +- **73 commits** — **62 real** (feature/fix/refactor/test/docs), **11 `.wolf` bookkeeping**. +- **287 non-`.wolf` files changed**, **+22,190 / −1,889** (non-wolf headline; raw incl. `.wolf`: +30,044 / −7,591). +- Busiest areas by files touched: `src/scheduler` (47), `src/controller` (28), `.kiro` (16), `src/lib` (10), `src/worker` (7), `src/frontend` (7), `.wolf` (7), `.claude` (5). +- By spec scope: `xce-test-cli-ux` (25 commits), `resreq-maxtasks-wiring` (13), `scheduler` (11, unscoped fixes), `build` (5). +- **2 specs shipped end-to-end** this window (`resreq-maxtasks-wiring`, and `scheduler-sim-eager-reconciliation`'s revision-4 patch); **1 spec functionally complete pending metadata sync** (`xce-test-cli-ux`). +- **8 sessions** logged in `.wolf/memory.md` touching this window (Sep 7 ×5, Sep 9, Sep 11, Sep 12); busiest logged day Sep 7 (184 actions, gitea#46 cascade + apiserver fixes). +- Commits landed on all 7 days; peak day **Wed 09-09** (16 commits, `xce-test-cli-ux` foundation-to-core). + +## Open threads / to-do heading into next session + +1. **`xce-test-cli-ux`'s `spec.json` metadata lag** — tasks.md shows all 23 real subtasks complete across all 4 groups, but phase still reads `tasks-generated`. Same class of fix already applied to three other specs in recent weeks (`scheduler-dispatch-commit`, `scheduler-snapshot-job-allocation`, and implicitly `eliminate-frontend-makefile`) — needs the same treatment: sync phase to `implementation-complete`. +2. **Four deliberately-deferred testsuite bugs from `xce-test-cli-ux`'s validation tasks remain open and unowned**: bug-1796 (misleading `perror()` diagnostics on RPC-failure paths), bug-1797 (queue-name leak on an RPC-error path), bug-1793 (join's stale maxswap/maxtmp defaults — docs and code both need fixing together to avoid a new mismatch), bug-1777 (workerlist MaxSwap can disagree with the scheduler's own view). Worth a triage pass to decide which need a dedicated follow-up spec vs. quick fixes. +3. **`bug-1714` still unresolved**, now over two weeks old with zero movement this window — the stale second reader for `job_submit_data_t->project_name` remains unfound. Needs either a fresh live gdb-watchpoint campaign or an explicit decision to accept it as a monitored low-frequency risk. +4. **Three lower-priority open bugs with zero movement across two consecutive windows**: `bug-1632`, `bug-1726`, `bug-1728` — still awaiting triage. +5. **`gitea` MCP server connectivity** — noted in `.wolf/STATUS.md` as failing to connect (CONNECT_TIMEOUT) as of this window's close; buglog entries bug-1798 through bug-1804 have not yet been synced to Gitea issues via `gitea-sync`. Retry once the server is reachable. +6. **`scheduler-sim-eager-reconciliation`'s revision 4** is committed and test-verified (77/77), but has not yet been exercised against a live multi-round replay beyond the unit/integration fixtures added this window — worth a live-replay smoke pass next session to confirm the synchronous-state change behaves as expected outside the test harness.