docs(spec): presets record themselves in exdata.meta; job-labels backlog item

- no preset field on the server: the client puts preset name + hash into
  the job's exdata JSON under 'meta', passed through uninterpreted; the
  worker skips 'meta' silently; 'preset report' filters jobs client-side
- drop the local submission log idea
- job-labels: independent backlog item (general server-side labels)
- bug-1970: note the dropped REST 'tags' field

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-12 13:26:09 +00:00
parent 5cfe64218c
commit a68d2fc965
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
5 changed files with 40 additions and 12 deletions

View file

@ -18776,7 +18776,7 @@
"timestamp": "2026-10-12T13:07:37Z",
"last_seen": "2026-10-12T13:07:37Z",
"occurrences": 1,
"error_message": "apiserver accepts rerunable, requeue/checkpoint/runtime/warning submit options, never sends them\n\n**Observed:** (source reading, 2026-10-12, at 83c6eb80)\n`POST /xce/v1/jobs/create` accepts these `JobSubmitRequest` fields\n(`src/frontend/apiserver/models/jobs.go`, struct at :636) and answers success,\nbut none of them reaches the controller:\n```go\nRerunable bool `json:\"rerunable,omitempty\"`\nWarningTimePeriod int `json:\"warning_time_period,omitempty\"`\nWarningAction string `json:\"warning_action,omitempty\"`\nRequeueErrorValues string `json:\"requeue_error_values,omitempty\"`\nRunTimeEstimation int `json:\"run_time_estimation,omitempty\"`\nMigThreshold int `json:\"mig_threshold,omitempty\"`\nChkpntPeriod int `json:\"chkpnt_period,omitempty\"`\nChkpntDir string `json:\"chkpnt_dir,omitempty\"`\nInitChkpntPeriod int `json:\"init_chkpnt_period,omitempty\"`\n```\n- `rerunable`, `warning_time_period`, `warning_action`, `init_chkpnt_period`\n are not read anywhere outside `models/`.\n- `requeue_error_values`, `run_time_estimation`, `mig_threshold`,\n `chkpnt_period`, `chkpnt_dir` are copied into `models.JobInfo`\n (`controllers/jobs.go:1214-1218`, and on restart :1013-1025), but\n `modelJobToSubmit()` (`backend/convert.go:334`) never reads them, and the\n controller's `JobSubmitData` / `JobStartInfo` (`src/schema/controller.capnp`\n :583, :314) have no field for them.\n- None is in `preCheckSubmitOptions()`'s list of refused options\n (`controllers/jobs.go:1285`), which bug-1936 added for exactly this kind of\n option (in/out/err files, asked hosts, begin/term time).\n\n**Expected:** each submit option is either passed on to the job or rejected\nwith 400 naming the option, as `preCheckSubmitOptions()` does for the others.\n**Impact:** wrong result: a user asking for automatic requeue on given exit\ncodes, rerun on host failure, periodic checkpoints or a warning signal before\nthe run limit gets a success reply and a job that does none of it.\n**Found by:** review during the `application-profile` brief discussion\n(extra v1 attributes), 2026-10-12.",
"error_message": "apiserver accepts rerunable, requeue/checkpoint/runtime/warning submit options, never sends them\n\n**Observed:** (source reading, 2026-10-12, at 83c6eb80)\n`POST /xce/v1/jobs/create` accepts these `JobSubmitRequest` fields\n(`src/frontend/apiserver/models/jobs.go`, struct at :636) and answers success,\nbut none of them reaches the controller:\n```go\nRerunable bool `json:\"rerunable,omitempty\"`\nWarningTimePeriod int `json:\"warning_time_period,omitempty\"`\nWarningAction string `json:\"warning_action,omitempty\"`\nRequeueErrorValues string `json:\"requeue_error_values,omitempty\"`\nRunTimeEstimation int `json:\"run_time_estimation,omitempty\"`\nMigThreshold int `json:\"mig_threshold,omitempty\"`\nChkpntPeriod int `json:\"chkpnt_period,omitempty\"`\nChkpntDir string `json:\"chkpnt_dir,omitempty\"`\nInitChkpntPeriod int `json:\"init_chkpnt_period,omitempty\"`\n```\n- `rerunable`, `warning_time_period`, `warning_action`, `init_chkpnt_period`\n are not read anywhere outside `models/`.\n- `requeue_error_values`, `run_time_estimation`, `mig_threshold`,\n `chkpnt_period`, `chkpnt_dir` are copied into `models.JobInfo`\n (`controllers/jobs.go:1214-1218`, and on restart :1013-1025), but\n `modelJobToSubmit()` (`backend/convert.go:334`) never reads them, and the\n controller's `JobSubmitData` / `JobStartInfo` (`src/schema/controller.capnp`\n :583, :314) have no field for them.\n- None is in `preCheckSubmitOptions()`'s list of refused options\n (`controllers/jobs.go:1285`), which bug-1936 added for exactly this kind of\n option (in/out/err files, asked hosts, begin/term time).\n\n**Expected:** each submit option is either passed on to the job or rejected\nwith 400 naming the option, as `preCheckSubmitOptions()` does for the others.\n**Impact:** wrong result: a user asking for automatic requeue on given exit\ncodes, rerun on host failure, periodic checkpoints or a warning signal before\nthe run limit gets a success reply and a job that does none of it.\n**Found by:** review during the `application-profile` brief discussion\n(extra v1 attributes), 2026-10-12.\n\nUPDATE (2026-10-12): The REST submit model's `Tags []string` (`json:\"tags\"`, models/jobs.go JobSubmitRequest) is also accepted and dropped: nothing outside models/ reads it, and it is not in preCheckSubmitOptions(). Roadmap item job-labels would reuse or replace it.",
"file": "src/frontend/apiserver/controllers/jobs.go, src/frontend/apiserver/backend/convert.go, src/frontend/apiserver/models/jobs.go",
"root_cause": "TODO: required for fixed/partial",
"fix": "TODO: required for fixed/partial\n\nVerification:\n- Test: TODO: name + file; RED before the fix, GREEN after\n- Suites: TODO: suite results and build profile\n- Live: TODO: soak/deploy run, or n/a and why",

View file

@ -51,6 +51,8 @@ the run limit gets a success reply and a job that does none of it.
**Found by:** review during the `application-profile` brief discussion
(extra v1 attributes), 2026-10-12.
UPDATE (2026-10-12): The REST submit model's `Tags []string` (`json:"tags"`, models/jobs.go JobSubmitRequest) is also accepted and dropped: nothing outside models/ reads it, and it is not in preCheckSubmitOptions(). Roadmap item job-labels would reuse or replace it.
## Environment
- OS: no /etc/os-release; Docker container; NixOS kernel; kernel Linux 6.18.33 x86_64
- libc: n/a: found by source reading, no binary run (host ldd reports glibc 2.40)