myxce/.wolf/STATUS.md
Rongsong Shen b57ce6d6a9
docs(wolf): refresh STATUS.md handoff (2026-10-02)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-02 08:58:26 +00:00

3.9 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.

🚀 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.
  • Follow-ups found during the bug work (not logged as bugs): xcecli jobs restart/peek accept only the decimal job-ID form; bug-1736's peak/efficiency fields are not mapped into the apiserver job model or shown by xcecli; apiserver/middleware TestLoadJobs needs a live :8080 server (outside the canonical test set); pre-existing gofmt drift (controllers/jobs.go, xcecli/cmd/jobs/jobs.go); unused REGEX_JOBID/REGEX_JOBARRAY_ID in config.h.
  • 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