17 KiB
XCE Project Status — Aug 30 – Sep 05, 2026
Note: the calendar-default window (Aug 24–29) is already covered by
aug23-aug29-2026.md; this report covers the actual gap — the last completed day before this report was generated.
TL;DR
The single densest spec-throughput week on record: six full specs went
requirements-to-implementation-complete inside seven days —
worker-rejoin-resync, scheduler-sim-repl-verbosity,
eliminate-frontend-makefile, scheduler-sim-step-verbosity,
scheduler-sim-reconcile-terminal-guard, and — closing the week — the
flagship scheduler-allocation feature (lazy iterator-driven allocation,
parallel-job combinatorial planning, and the unsatisfiable-resreq cache),
confirmed via full regression (58e6a855) and an HA soak (ecfb0a3c) on
Saturday. Sunday and Monday cleared a dense backlog of live-deployment bugs
(bug-1429, bug-1560, bug-1727, bug-1734–bug-1739) and closed both
of last week's spec-metadata carry-over threads. The week's one unresolved
thread, bug-1714 (the scheduler UAF crash), had two more candidate causes
ruled out but is still not root-caused after 11 sessions. Most consequential
finding of the week: scheduler-allocation's own closing commit documents
that parjob_allocator — the entire multi-host allocation path just built
and soak-validated — has zero live production path today, because
parse_resreq_primary() hardcodes every job's task count to 1 (bug-1770);
the feature is soak-clean but not yet "done" for real clusters.
Commits by day
Sun 08-30 — live-bug sweep + closing last week's metadata carry-overs
0e96a69f—bug-1429(controller_unit_test300s TIMEOUT, open since Jul 10, last week's oldest unresolved item):persist_stop()now runs beforecommit_engine_fini()in 21 test fixtures — test-fixture-only fix, no production code change.dfcd345d—bug-1560: the symlink-escape test was asserting the wrong error string, not a real regression.b0476a84,5c2c6664,d8a37fa2—bug-1734(merge redelivered job state instead of discarding it),bug-1736(capturememory_swap/tasks_current, computepeak_cpu_time),bug-1735(job memory/CPU usage always read 0 in scheduler replay) — a related trio of worker/controller resource-usage tracking gaps.38437e57— scheduler no longer hands an orphaned duplicate job to the picker.ff9de2e0—bug-924: prune stale/tmptest-fixture dirs inxce-build.sh.a02d4777—bug-1561: fixed flakytest_conf_trim_keeps_only_n_versions/test_conf_get_saved_tag_no_config.f59890ce— closes last week's open thread #2 (half):scheduler-snapshot-job-allocation'sspec.jsonphase synced toimplementation-complete, matching work already done.ccef5610— newxce-changesskill for component-groupedCHANGES.mdgeneration.63261097— commits last week'sCHANGES.mdandaug23-aug29-2026.mdreport.
Mon 08-31 — memory reservation-vs-usage reconciliation + a live 3-bug HA sweep
87a2a46b,f4103e0e,a6a0bdf7— scheduler now reconciles memory reservation against real usage and charges unreserved jobs' real memory too, with a doc explaining why admission control deliberately doesn't query live usage.fc559948—bug-1727:info worker/info resourcewas double-counting used capacity (avail + usedinstead ofavailalone, sinceavailalready included it).0e78f863,026fe97b— a live 3-node HA cluster + 50-element array-job investigation surfaced and fixedbug-1737(scheduler could never learn a job finished successfully — EXIT vs. DONE confusion),bug-1738(a separate terminal-state regression), andbug-1739(phantom RUN jobs inJOBS_PUSHmerge).
Tue 09-01 — worker-rejoin-resync: Foundation through Integration in one day
1ff57ef6→80d5a062(~20 commits) — wire protocol, worker reconciling status, reconciliation round lifecycle, idempotent outcome application, job-state query/answer, config-field wiring into xceadmin, and dispatch exclusion of a reconciling host — tasks 1.1 through 5 all landed the same day this large spec's requirements/design/tasks were also written (f2ff45f1,6c908d50).8a2e22f4— closes last week's open thread #2 (other half):scheduler-dispatch-commit's stale 13/18 task count synced to the true 18/18; also adds the parkedcommit-batch-windowspec (deliberately not being pursued — logged as a future cross-cutting WAL-commit-batching facility).343639fc,728496be,eb06f16d— three more fixes: apiserver job-control panic on int/int64 mismatch (bug-1742, Gitea #45), hosts-list slot usage counts never populated (bug-1743, Gitea #46), and mem-reservation reconciliation wired into the live rusage event path (bug-1740).
Wed 09-02 — worker-rejoin-resync closes out; scheduler-sim-repl-verbosity built end to end
613b80e9→a1dc2396—worker-rejoin-resync's remaining tasks (bounded pagination, burst/failover recovery, gating periodic reporting onresync_pending) land and all group headers get checked off — spec reachesimplementation-complete.f165e3a7→e6c67019(~20 commits) — the entirescheduler-sim-repl-verbosityfeature (job-id range compression, round-boundary decision summaries, mode-aware event echo, dynamic REPL prompt, resource formatting/table rendering, discoverable help/break types) built and regression-verified in a single day, fixingbug-1761(repl_cmd_delete()rejecting invalid ids) along the way.00fc0a43—xce-test-hasoak gains worker-rejoin-resync coverage in both sequential and chaotic modes.
Thu 09-03 — busiest day: two more specs closed, a design pivot, and a hermetic build
6c3ff201→375c49ec—eliminate-frontend-makefilebuilt and closed end to end: Meson-based CGO test target,xce-build.shmigrated off Make, 11 doc files + 3 scripts + 2 C testsuite files + 2 Go source files updated, live-reference sweep clean,src/frontend/Makefiledeleted.6a2aa47f→9dcffce8—scheduler-sim-step-verbosity(preamble deduplication, fixingbug-1762/bug-1763) andscheduler-sim-reconcile-terminal-guard(terminal-state guard on job reconciliation, fixingbug-1764) both go from spec toimplementation-complete.0f7699de,177e9b29—scheduler-primary-lifecyclemarked superseded by new specxce-node-manager(a general per-node component-supervisor design, design-generated, tasks not yet drafted);bug-1760's reactive-rejoin deadlock requirements carry forward into it.68bc86bc— hermetic Nix build: vendors all Go modules and blocks PyPI/goproxy network access during build — the source of this week's outsized diff (see Stats).df4b386a,8557b869,1abab949,b14e53f5— spec-metadata reconciliation sweep acrossworker-rejoin-resync,xce-test-rc-file, and 3 more specs.4a224e8c,651b5138— AppImage build simplified tonix build .#xce.appImage; thexce-buildskill now dispatches builds viaBash run_in_backgroundinstead of theAgentsubagent tool.
Fri 09-04 — scheduler-allocation: Foundation through cache-wiring in one day
d5d2c1ca→5c022d0b(~14 commits) — the shared plan/host-iterator contracts, resreq fingerprinting, the unsatisfiable-resreq cache, seqjob's rewrap onto shared iterators, parjob's combinatorial plan generation and per-bucket allocation loop, and cache/dispatch wiring — tasks 1.1 through 5.1 of a 6-phase, 16-subtask spec, all in one day.88b0ac99—bug-1760fixed: post-failover rejoin detection gap closed by adding passive, socket-free broken-connection detection (xcecli_is_connection_broken()) alongside the existing reactive path, live-verified against a real 3-node failover with zero jobs in flight.1fc08d74,d912d33e—bug-1714forensics: ruled out the controller-side dual-push-path race and two more candidates; all known scheduler- and controller-side memory-ownership candidates are now exhausted with the stale second reader still unfound.0b1e3107— removed an external "extralib" dependency, replaced with an in-treexcelist.c/xcelist.hprimitive, shrinkingflake.lock.
Sat 09-05 — scheduler-allocation closes the feature
e8c2087d— cache cleared per scheduling session (task 5.2).c009f108— end-to-end multi-host parallel job proof through the real dispatch path (task 5.3).58e6a855— full existing scheduler regression pass, zero unexpected assertion changes (task 6.1).ecfb0a3c— HA soak regression, zero new job loss/divergence/stall (task 6.2) — feature complete, with a standing caveat (see TL;DR and Open threads).
Bugs opened/fixed this window
- 40 genuinely new bugs (bug-1734 – bug-1774, one intentional ID gap at bug-1749), 22 fully fixed, 3 partially fixed (bug-1736, bug-1743, bug-1747 — each split into a fixed slice and an explicitly deferred remainder), 16 still open at window end. One additional entry,
bug-1727, was carried over from last week's open list and fixed this window (Mon,fc559948). - Carry-over status from last week's report:
bug-1429— fixed (Sun,0e96a69f), closing the oldest open item.bug-1714— still open; two more candidates ruled out (controller dual-push race, redelivery-storm volume), all known static leads now exhausted.bug-1630housekeeping note — closed (fix field backfilled, re-verified zero collisions).bug-1632,bug-1723,bug-1726,bug-1728— no movement this window, still open. - Highest-severity fixes: bug-1760 (HA availability — every job submitted after a controller failover could stay PEND forever until the scheduler was manually restarted), bug-1737/1738/1739 (a live 3-node array-job run showing phantom RUN states and a scheduler that could never learn a job finished), bug-1740 (memory-reservation reconciliation dead-wired to nothing).
- ⚠️ bug-1770, discovered during
scheduler-allocationtask 5.3 (Sep 4):parse_resreq_primary()hardcodes every job'sminTasks/maxTasksto 1, soparjob_allocator— the multi-host allocation path this window's flagship feature just built — has no live production path. Itsfixfield records a resolution dated 2026-09-06 (outside this window), by a separate feature; as of this window's close (Sep 5) it was still open. Not counted as fixed in this report's tallies. See Open threads. - Integrity check: of 41 unique bug IDs touched in-window, 1 (
bug-1727) falls below the prior report's ID floor — a legitimate carry-over fix, not a duplicate-ID defect. The buglog counter otherwise stayed clean (40 new sequential-range IDs, one deliberate gap at bug-1749).
Spec status changes
scheduler-allocation— 0 →implementation-completethis window (all 16 subtasks,spec.jsonstill readstasks-generated/ready_for_implementation: true— a phase-sync pass is due). Standing caveat: soak-validated but not production-effective untilbug-1770lands.worker-rejoin-resync—implementation-complete, all tasks and group headers checked (Foundation through Validation, ~19 subtasks), spanning Tue–Wed.scheduler-sim-repl-verbosity—implementation-complete, 10 major tasks / 23 subtasks, built and regression-verified in one day (Wed).eliminate-frontend-makefile— tasks.md shows 14/14 complete and its own closing commit (375c49ec) declares the feature complete, butspec.jsonstill reads phasetasks-generated/ready_for_implementation: false— a metadata/reality mismatch matching the pattern fixed for two other specs this same window.scheduler-sim-step-verbosityandscheduler-sim-reconcile-terminal-guard— bothimplementation-complete(Thu), fixing bug-1762/1763 and bug-1764 respectively.scheduler-dispatch-commit— task-count metadata lag from last week's report fixed (8a2e22f4): now correctly reads 18/18 matching its already-implementation-completephase.scheduler-snapshot-job-allocation— phase synced toimplementation-complete(Sun), closing the other half of last week's metadata carry-over.scheduler-primary-lifecycle— superseded by new specxce-node-manager(design-generated; requirements/design approved, tasks not yet drafted) after a design pivot: node-level component supervision, not controller-internal scheduler spawning.scheduler-sim-diagnostics— new draft spec added (requirements only, unapproved).commit-batch-window— new spec created, explicitly parked/not pursued.
Stats
- 160 commits — 130 real (feature/fix/docs/test), 30
.wolfbookkeeping. - 3,565 non-
.wolffiles changed, +1,479,878 / −1,710 (non-wolf headline; raw incl..wolf: +1,487,194 / −4,224). This figure is dominated by a single commit (68bc86bc, hermetic Nix build) that vendored ~3,177 third-party Go source files (~1.45M lines) — excluding that one-time vendor dump, the week's real hand-written churn is a small fraction of the headline number. - Busiest areas by files touched:
src/frontend(3,188, ~3,177 of which are the vendor dump),src/autoscaler(151, also vendored),src/scheduler(78),.kiro(55),src/controller(35),src/worker(12),src/lib(10). - 6 specs shipped end-to-end this window (
scheduler-allocation,worker-rejoin-resync,scheduler-sim-repl-verbosity,eliminate-frontend-makefile,scheduler-sim-step-verbosity,scheduler-sim-reconcile-terminal-guard); 2 more had metadata-only carry-over fixes (scheduler-dispatch-commit,scheduler-snapshot-job-allocation); 1 design pivot (scheduler-primary-lifecycle→xce-node-manager); 3 new specs opened. - 11 sessions logged in
.wolf/memory.mdfor Aug 30 – Sep 4 (no Sep 5 session flushed yet at report time); busiest logged days Sep 1 (396 actions, worker-rejoin-resync Foundation-to-Integration) and Sep 2 (331 actions, worker-rejoin-resync close-out + scheduler-sim-repl-verbosity). - Commits landed on all 7 days; peak day Fri 09-04 for
scheduler-allocation's Foundation-through-cache-wiring push.
Open threads / to-do heading into next session
bug-1714still unresolved after 11 sessions. All known scheduler-side memory-ownership candidates and the controller-side dual-push-path race are now ruled out; the stale second reader forjob_submit_data_tremains unfound. Next step needs either a fresh live gdb-watchpoint campaign specifically instrumentingcore->jobs's own lifecycle (snapshot/recording code, REPL inspection commands, picker-plugin job-reference caching — none checked yet), or an explicit project-owner decision to accept this as a monitored low-frequency risk rather than continue speculative re-chasing.scheduler-allocationis soak-validated but not production-effective.parjob_allocator's entire multi-host allocation path (tasks 4.1–4.3, 5.1–5.2) has zero live production path becauseparse_resreq_primary()(src/lib/resreq.c:431-432) hardcodesminTasks=maxTasks=1regardless of what a job actually requests, and the resreq grammar's ownspan[ptile=N]syntax is parsed then discarded. Logged asbug-1770(with siblingbug-1771, an unrelated fcfs NULL-queue-deref found while building the same test). This needs a dedicated, high-priority follow-up spec before the feature has any real-cluster effect.eliminate-frontend-makefile'sspec.jsonmetadata lag — tasks.md and its own closing commit say the feature is done; phase still readstasks-generatedandready_for_implementation: false. Same class of fix already applied toscheduler-dispatch-commitandscheduler-snapshot-job-allocationthis window — needs the same treatment.scheduler-allocation's ownspec.jsonlikewise needs its phase synced toimplementation-completenow that all 16 subtasks and the HA soak are done.- Four lower-priority open bugs with zero movement this window:
bug-1632,bug-1723,bug-1726,bug-1728— still awaiting triage. xce-node-managerneeds/kiro-spec-tasks— design is approved (GO, all findings fixed in place) but tasks aren't drafted yet; it's the successor to supersededscheduler-primary-lifecycleand carries forwardbug-1760's now-fixed rejoin-detection work as validated precedent.- A cluster of discovery-only bugs from this week's spec reviews remain open and unowned by any spec's current boundary:
bug-1766–bug-1769,bug-1771–bug-1774(compound/alter-resreq rollback and resource-accounting gaps, a heap-OOB type confusion, snapshot/schedobj duplication patterns) — worth a triage pass to decide which need dedicated follow-up specs.