myxce/.wolf/STATUS.md
Rongsong Shen 5c4d101b15
docs(wolf): STATUS.md -- group-3 follow-ups done, run-usage exposure pending
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 10:37:11 +00:00

4.2 KiB
Raw Blame History

STATUS

Single source of truth for resuming work. Read this FIRST when starting a session. Update at the end of every work phase so the next /clear resumes in 1 read.


✅ Done (2026-10-01/02, all pushed)

  • job-array-one-based-index (spec, 30/30 tasks, validate-impl GO): job arrays numbered 1..N (LSF name[1-N]), <array-id>[k] / [a-b] selections in REST, xcecli and the harness, XCE_JOBINDEX, E_XCE_ARRAY_START0; docs in src/docs/xce.md "Job arrays". Closed bug-1896.
  • Every open bug closed (buglog.py list --open is empty): fixed bug-1736 (LSF CPU peak/efficiency fields, 6df644e6), 1880 (pre-bug-1888 capture), 1892, 1897, 1898 (restart path c73708b8), 1899–1908, 1437 (librtti re-pin 8c7d26a9, record updated); bug-1856 wontfix (upstream OpenWolf hook; auto_detect=false survives openwolf update).
  • Spec metadata and roadmap synced (84a93a01); Gitea #89, #331, #335 closed.
  • Group-3 follow-ups (3615c7c0..c15580a7): gofmt on 29 frontend files; unused job-ID regex macros removed from config.h; TestLoadJobs runs only with XCE_LOAD_TEST_URL; peek resolves <array-id>[k] on the server and restart takes written job IDs (c-a-ts-seq[k]) in xcecli and REST.

🚀 Next phase

Goal: None active. Pick from the open items below.

Open items (not yet actioned)

  • Checks needing a host with systemd/dbus (this container has none): a running array element prints the right XCE_JOBINDEX; bug-1908's kept signal reaches a real (non-virtual) worker over IPC at RUNNING.
  • Exposing bug-1736's peak/efficiency fields in the apiserver/xcecli (decision pending): the computed run_usage never reaches the apiserver -- the capnp Job pushed on job updates has no run_usage, and the only usage notify (schedJobRusages) is the raw worker report, which the apiserver ignores. Needs a wire change (add run_usage to Job, or a new notify event) plus a cgo handler, store update and xcecli display: spec-sized (/kiro-spec-quick), or drop it -- nothing consumes the fields yet.
  • Specs awaiting the next phase: design review -- controller-peers-env-fallback, xce-node-manager; requirements written -- job-status-detail-display, scheduler-preemption, scheduler-sim-decision-trace; initialized -- commit-batch-window, resource-distribution-mapping; brief -- component-rejoin-resync.
  • Roadmap backlog (briefs only): application-profile → job-sandbox-execution → job-sandbox-multinode; job-time-window → job-dependency → job-dependency-insight; rbac-persistence; scheduler-alter-pend-reasons; controller-job-cleanup.

Files to create / edit

  • none pending

Open decisions

  • REST job output for jobs with a custom out_file/err_file: the worker never writes those paths (always /tmp/job_<id>_task<N>.out), so since bug-1508 GET /jobs/:id/output for such a job returns a permission error from the worker. Either the apiserver's resolveOutputPath() (controllers/output.go) always targets the worker's own output file, or the worker starts honouring out_file. Waiting on the user.
  • Bug records not mirrored to Gitea: ~400 older records plus bug-1885–bug-1908. A sync without --since/--ids would create an issue for each. Default: leave them off Gitea.

📁 Active architecture

  • Stack: Go API/CLI tier (src/frontend/apiserver) fronting C daemons (src/controller, src/worker, src/scheduler); Meson-based build via src/tools/xce-build.sh, hermetic nix dev shell.
  • Bug tracking: .wolf/bugs/*.md (records) → scripts/buglog.py (CLI + checks) → .wolf/buglog.json (generated index) → scripts/gitea-sync.py (Gitea issues in nexa/xce).
  • Local-only, never committed: .claude/settings.json (hook paths rewritten for this machine), data/ (450 MB replays/logs).

🔧 Useful commands

python3 scripts/buglog.py list --open | new ... --binary <bin> | check <id> | status <id> fixed --commit <sha>
ln -sf ../../scripts/git-hooks/pre-commit .git/hooks/pre-commit   # once per clone
XCE_HA_ROUNDS=6 nix develop ./src --command bash .claude/skills/xce-test-ha/run-ha-soak.sh --sequential <dir>
python3 scripts/gitea-sync.py --dry-run --bugs --since <date> [--ids bug-N,bug-M]   # dry-run first