myxce/reports/sep13-sep19-2026.md
2026-09-20 13:18:15 +00:00

14 KiB
Raw Blame History

XCE Project Status — Sep 13 – Sep 19, 2026

Note: the calendar-default window (Sep 07–Sep 12) is already covered by sep06-sep12-2026.md; this report covers the actual gap — the last completed day before this report was generated.

TL;DR

A scheduler-architecture week, one spec per day or two: Monday relocated xce_test out of controller into its own standalone harness component; Tuesday was a live-replay-driven resource-accounting firefight (7 bugs fixed same-day — stale JOBS_PUSH resync races, a systemd rusage sentinel bug, a reconciliation-freeze gap); Wednesday shipped controller-status's Req 12 (election term/time) and Req 13 (per-controller connection status) deltas to feature-level GO; Thursday landed scheduler-sim-diagnostics' human-readable limit-inspection feature (Req 1–5) end-to-end, plus a run of deploy-ha worker-cleanup fixes; Friday–Saturday built and shipped scheduler-sim-live-allocation — a genuinely large unification merging the normal-mode driver's and sim-mode driver's job-election/allocation logic into one shared implementation (sched_election.c), closing bug-1825/1826 (sim-mode limit-plugin bootstrap and matching) along the way. 25 new bugs were opened, 22 fixed, 2 deliberately deferred, and 1 fix attempt was reverted after it broke the recorded-decision-reconciliation live-verify test. ⚠️ A mass bug-log retag on Saturday touched 1,164 historical entries with an identical timestamp — at least one now carries a "fixed" tag that contradicts its own fix-field prose (see Bugs section).

Commits by day

Sun 09-13 (Sunday) — bookkeeping only

  • 04807985..b8ef82c1 (2 commits) — added last week's report (sep06-sep12-2026.md) and CHANGES.md, then a routine .wolf sync. No code changes.

Mon 09-14 (Monday) — xce-harness-component: full spec in one day

  • cf55d691..868c6427 (19 commits) — relocated xce_test and its four standalone test binaries out of controller into a new standalone harness component (own /xce-build harness target, decoupled from controller's build), promoted ctrlstatus_fmt.h to the shared xce/ include path, and wired harness into xce-test-ha/xce-test-multihost/xce-test-resources's explicit build/check steps. Verified build isolation, xce_test's post-relocation behavioral parity, and every downstream workflow end-to-end (tasks 1–4, all in one day). Also fixed bug-1807 (getopt_long's optind=0 reset, cross-command state corruption) and bug-1808 (a longjmp'd Unity assertion leaking a spawned xce_test child process).

Tue 09-15 (Tuesday) — live-replay resource-accounting firefight

  • b7250c2e..7f3237ae (8 commits) — a live-replay debugging session found and fixed, same-day: bug-1809 (routine EEXIST resync log flooding operational output), bug-1810 (cbuf_put/cbuf_get orphaning their mutex on cancellation, hanging vtaskmgr_fini), bug-1812/1813 (a stale JOBS_PUSH resync claim could destroy a real allocation; job-array expansion moved off the vtask thread pool as the underlying architectural fix), bug-1814 (worker rusage collection was treating systemd's UINT64_MAX sentinel as real memory data), bug-1815 (mem-usage reconciliation now freezes for a RECONCILING/UNAVAIL worker too, closing a gap next to bug-1801), and bug-1816 (xce-deploy-ha: stop a stale deploy's processes surviving a hand-typed cleanup mistake). Also added a live-computed default for xce-build's --jobs flag.

Wed 09-16 (Wednesday) — controller-status: two requirement deltas to GO

  • 63de9473..d19e9f27 (20 commits) — Req 12 (primary election term/time): new schema fields + ha_state_t, stamped on both promotion roads, carried on the heartbeat, sourced in ctrlstatus_fill, rendered in the ctrlstatus CLI — reached feature-level GO. Req 13 (per-controller connection status): same shape (schema field → ctrlstatus_fill → CLI render) — reached feature-level GO, but its own live E2E validation (task 8.6) found bug-1819: ctrlstatus_fill was preferring a stale disconnected registry slot over a live one (slot-reuse, first-match-wins bug), fixed same-day. Also fixed bug-1818 (a dead-code gate had cmd_ctrlstatus never actually reaching its own display-layer election check) and a zarray_fini/xlist_fini bug that left stale caps/count behind instead of resetting them.

Thu 09-17 (Thursday) — scheduler-sim-diagnostics limit inspection, plus deploy-ha/xceadmin fixes

  • baa07d78..77924f78 (18 commits, 2 .wolf-only) — built info limit's full feature set end-to-end: name/all resolution, configured-setting display via fmt_limit(), effective host-scope notes (Req 1.6), live usage for both cluster-wide and host-scoped limit instances, and REPL dispatch wiring — with a read-only/deterministic proof as the closing task. Found and logged bug-1824 (a latent, pre-existing zarray bounds imprecision in repl_info_resource_one(), left unfixed as out-of-scope) along the way. Same day: bug-1820/1823 (stop-all.sh/cleanup.sh couldn't find a real, sudo-launched worker regardless of process-tree depth — two rounds, the second a regression on the first's own fix) and bug-1821/1822 (xceadmin now accepts a comma-separated --controller failover list; found a NoPrimaryError retry gap live while verifying it).

Fri 09-18 (Friday) — scheduler-sim-live-allocation: foundation

  • fc23ea8d..2f1ffd1e (8 commits) — started the driver-unification effort: threaded core state through allocation context and host search, made plugin-hook dispatch, capacity checks, allocation-dispatch/decision-commit, and limit matching all "core-safe" (usable from either driver). Same day, fixed bug-1825: the limit plugin was never registered on any sim-mode driver path at all — a limit_new_plugin() factory plus a new sim_bootstrap_limit_plugin() (mirroring sim_picker.c's own bootstrap shape) closed the gap.

Sat 09-19 (Saturday) — scheduler-sim-live-allocation: unification to done

  • 4195331b..8c363de7 (13 commits, 1 .wolf-only) — extracted the shared picker/allocator into a new sched_election.c, wired simulation mode onto it, narrowed reconciliation to a timing-gap safety net, closed a host-scoped limit fan-out seam gap, then proved contention parity across drivers and replay-driven limit visibility (closing bug-1826, the sim-mode limit-matching follow-up to Friday's bootstrap fix) and reconciled the equivalence test suites. Also fixed bug-1682/1492 (plugin_end_session() guarding on the wrong field) and bug-1827 (a core_clock.c coverage gap in the core-isolation test found during an /xce-audit-invariants scheduler run), and corrected a stale bug-1611 status claim in the driver-equivalence steering doc.

Bugs opened/fixed this window

  • 25 genuinely new bugs (bug-1805 – bug-1829): 22 fixed, 2 deliberately deferred (bug-1806 — accepted as a documented Meson platform limitation, user decision 2026-09-14; bug-1824 — latent pre-existing bug, out of its discovering task's scope), 1 reverted (bug-1811 — an initial guard-based fix broke test_e2e_original_motivation_long_replay, the live-verify for the entire Recorded-Decision Reconciliation mechanism, and was rolled back; reclassified as a design decision, not a defect).
  • Carry-over status from last week's report: xce-test-cli-ux's spec.json metadata lag — still unsynced, now 2 windows running. bug-1796/1797/1793/1777 — still open, deliberately deferred, unowned. bug-1714 — still zero movement, now a 3rd consecutive window (last real progress Aug 26). bug-1632/1726/1728 — still zero movement, also a 3rd consecutive window. gitea MCP connectivity — still failing to connect (confirmed again this session).
  • Highest-severity fixes: bug-1817 (a SIGSEGV core dump in a live, HA-connected xce_scheduler — a "previously-unroot-caused, recurring bug class" per its own tags, fixed at the zarray/xlist library-primitive level), bug-1814/1815 (a live-user-traced memory-accounting chain: a systemd rusage sentinel bug plus the reconciliation-freeze gap it exposed), bug-1819 (a display-layer stale-slot bug found during controller-status's own live E2E validation).
  • ⚠️ Integrity concern: a mass edit on Sat, last_seen=2026-09-19T09:00:00Z, added the tag closed-by-scheduler-sim-live-allocation (plus, on many entries, a bare fixed tag) to 1,164 historical bug entries — including clearly unrelated ones from as far back as May (bug-002). At least one (bug-1811) now carries a fixed tag that directly contradicts its own fix-field text ("REVERTED"). Any future tooling that trusts .tags or .fix-field-non-empty as a status oracle will misclassify entries like this — the fix field's actual prose (read fresh) remains the only reliable signal. Worth either a stale-tag cleanup pass or documenting this caveat permanently in the buglog's own schema notes.

Spec status changes

  • xce-harness-component — implementation-complete (Mon), 16/20 tasks checked (the 4 unchecked are top-level group headers whose own subtasks are all done — a checkbox-convention gap, not real incompleteness). Metadata is correctly synced this time.
  • controller-status — Req 12 and Req 13 deltas both reached feature-level GO this window (Wed); 29/30 tasks done, the 1 remaining explicitly marked optional (8.5, live-cluster observation). spec.json still reads phase tasks-generated / ready_for_implementation: true rather than implementation-complete — a metadata-sync candidate, same class of gap flagged for xce-test-cli-ux.
  • scheduler-sim-diagnostics — Requirements 1–5 (limit inspection) shipped end-to-end (Thu), 17/19 tasks checked (tasks 8 and 10's own subtasks are all done; only their parent headers are unflipped, same convention gap as above). Requirement 6 (human-readable units) had not started as of this window's close.
  • scheduler-sim-live-allocation — a new spec, taken from Task 1.1 to Task 5.4 (all subtasks complete per commit history) in two days (Fri–Sat). spec.json still reads tasks-generated / ready_for_implementation: false — the THIRD spec this window showing the same phase/checkbox metadata lag (alongside xce-test-cli-ux and controller-status), suggesting a quick batch phase-sync pass would clear all three at once.

Stats

  • 89 commits — 83 touching at least one non-.wolf file, 6 pure-.wolf bookkeeping (4 routine chore(openwolf) syncs, 2 buglog-only edits).
  • 454 non-.wolf file changes, +21,856 / −2,047 (non-wolf headline; raw incl. .wolf: +30,969 / −5,452).
  • Busiest areas by files touched: src/scheduler (78), src/harness (50), .kiro (25), src/lib (12), src/controller (12), .claude (8), src/xceadmin (7), .wolf (6), src/include (4).
  • By spec scope: controller-status (19 commits), xce-harness-component (18), scheduler-sim-live-allocation (14), scheduler-sim-diagnostics (13), scheduler (7, unscoped fixes).
  • 1 spec shipped and correctly synced (xce-harness-component); 2 requirement deltas reached feature-level GO (controller-status Req 12/13); 2 specs functionally complete pending metadata sync (scheduler-sim-diagnostics Req 1–5, scheduler-sim-live-allocation).
  • 10 sessions logged in .wolf/memory.md touching this window (Sep 14 ×3, Sep 15 ×3, Sep 16 ×2, Sep 17 ×1, Sep 18 ×1); busiest logged day Sep 18 (383 actions — the scheduler-sim-live-allocation foundation day).
  • Commits landed on all 7 days; peak day Wed 09-16 (20 commits, controller-status Req 12+13), close behind by Sat 09-19 (13 commits, closing scheduler-sim-live-allocation).

Open threads / to-do heading into next session

  1. Metadata-lag pattern now spans three specs: xce-test-cli-ux (2 windows unaddressed), and newly controller-status (29/30 done, both deltas GO) and scheduler-sim-live-allocation (all subtasks done) — all three still read a stale phase/ready_for_implementation in spec.json. A single batch phase-sync pass would clear all three at once.
  2. Buglog integrity: the Sat mass retag (1,164 entries, closed-by-scheduler-sim-live-allocation, identical last_seen) leaves .tags and .fix-non-empty unreliable as status signals — confirmed via bug-1811's contradicting fixed tag. Needs a cleanup pass or a documented caveat before any tooling trusts those fields directly again.
  3. gitea sync backlog now 32 bugs deep (bug-1798 through bug-1829) — the MCP server is still failing to connect (CONNECT_TIMEOUT, reconfirmed this session). Retry gitea-sync once reachable.
  4. bug-1714/bug-1632/bug-1726/bug-1728 — zero movement for a 3rd consecutive window each. Worth an explicit triage-or-accept decision rather than letting them keep aging silently.
  5. bug-1796/bug-1797/bug-1793/bug-1777 — still deliberately deferred from xce-test-cli-ux's validation tasks, still unowned.
  6. scheduler-sim-eager-reconciliation's live-replay smoke pass (flagged last week) — still not directly done; scheduler-sim-live-allocation's tasks 5.1/5.2/5.4 delivered adjacent live-replay proof, but for a different spec — the original open item remains untouched.
  7. scheduler-sim-live-allocation shipped a full driver-unification architecture in two days — before treating it as fully done, it warrants a live multi-round replay or HA-adjacent smoke pass beyond the unit suite, the same caution this project's own /xce-audit-invariants methodology applies to architectural/consistency changes of this size.