docs(worker-rejoin-resync): add task 1.5, xceadmin config-build wiring
Discovered live during task 1.4 development: xceadmin's controller.capnp copy is freshly synced from src/schema/ on every /xce-build xceadmin run (meson-build.sh), so task 1.1's two new ClusterConfig fields already broke the checked-in golden-fixture tests (test_golden_fixture_matches_ checked_in_expected_bin[minimal/full]) by changing the binary's wire layout. Deeper gap: neither field has a YAML->binary configuration path at all (unlike their own cited precedent, heartbeatInterval/ inactiveHeartbeatCount, which is wired into both xce.schema.json and mapping.py) -- the original design review never scoped xceadmin as a boundary. Added design.md Boundary Commitments addendum + tasks.md task 1.5 to close both gaps together. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y4M5MJM2zK6nU43da267Ku
This commit is contained in:
parent
25347648be
commit
9fbbd12b36
2 changed files with 9 additions and 0 deletions
|
|
@ -33,6 +33,7 @@ On every worker (re)join — a fresh network reconnect after a disconnect, or a
|
|||
- Worker-side: a new short-lived retention of recently-finished job outcomes (jobid, exit status, real finish time), bounded by a configurable window; answering the controller's query from that retention plus the still-running job list; reporting extra jobs outside the query; a new local gate flag that delays the worker's own resumption of normal post-join operation until its report has finished sending (Requirement 3.8).
|
||||
- Scheduler-side: one narrow addition — the existing candidate-host filter (`scheduler.c:1211`, today `IS_WORKER_UNAVAIL`-only) also excludes a host with `XCE_WORKER_RECONCILING` set, so a RECONCILING host is never proposed as a dispatch target in the first place (Requirement 5.1). No other scheduler-side change; the worker-status mirror this reads from already exists (`core_events.c:527`/`:595`) and needs no new wire content for this bit.
|
||||
- Two new shared-config fields (the Requirement 3.7 reporting window; the Requirement 5.3 reconciliation timeout).
|
||||
- **Addendum (2026-09-01, added during implementation):** xceadmin's `config build` YAML→`ClusterConfig` pipeline, scoped narrowly to making the two new fields operator-settable through it, consistent with how their own cited precedent (`heartbeatInterval`/`inactiveHeartbeatCount`) is already wired. This was missed by the original design review — design.md's Configuration Model section says these fields are distributed "via the existing shared-config push mechanism," which is only true end-to-end if xceadmin can actually produce a `ClusterConfig` binary containing operator-supplied values for them; as originally scoped, neither field had a path from YAML into the binary at all. Concretely, in scope: `src/configs/schema/xce.schema.json` (add both fields, same shape/validation style as `heartbeatInterval`), `src/xceadmin/src/xcecommon/mapping.py` (add both to the YAML-field-name → capnp-field-name tuple list at line ~179, immediately following the `heartbeat_interval`/`inactive_heartbeat_count` pair), and the checked-in golden-fixture binaries under `src/xceadmin/tests/fixtures/{minimal,full}/expected.bin` (regenerate — task 1.1 already changed `ClusterConfig`'s wire layout, which these fixtures predate; regenerating them before this field is wired would need redoing once it lands, so do both together). Out of scope, still: any change to `xceadmin`'s validation/business-rule logic beyond the two-field addition, and any question of whether these two fields *should* be operator-facing at all versus hardcoded-only (assumed yes, matching their cited precedent, not re-litigated here).
|
||||
|
||||
### Out of Boundary
|
||||
- apiserver/scheduler resync-on-reconnect content (`component-rejoin-resync`).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue