- profiles hold only what every job of the application must have; every profile value binds and a job may add to it, never change or remove it (replaces the default/fixed markers of 2026-10-09) - convenience defaults move to client-side presets (new xcecli-presets brief): option-level expansion on the client, the apiserver only shares admin-deployed presets read-only, pull copies, export/import - service section stays in the profile: probes, restart policy, ports bind; replica count within the profile range; spread/rollout if unset - job-config-layering, job-config-merge brief/requirements, roadmap and resource-questions updated to the additive rule - app:override and profile inheritance deferred; recommendations target site presets Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
Brief: xcecli-presets
(From the application-profile discussion, 2026-10-12; user decisions.
Backlog.)
Problem
Application profiles hold only essentials, what every job of an application
must have (job-config-layering.md, additive rule). Users still repeat the
same tuning on every job: rusage[mem=...], span[ptile=...], a task
count, env, the queue. They also tune these over time (sizing, placement)
and want to keep and share what they find. Putting such defaults in the
profile made the server-side rules complex (override markers per section
and per term, ranges, privileged overrides) and would add a per-user
configuration level.
Desired Outcome
- A preset is a set of job options (
--app,--queue,-R,-n, env, limits, ...), named and stored by the client.xcecli jobs submit --preset <name>expands it; any command-line flag replaces the preset's value for that option as a whole (no resreq parsing). The submit carries only the expanded values. - Handled fully on the client. Presets never reach the controller, WAL
or scheduler, own no attribute, are not a configuration level and carry
no privilege:
app:use,queue:submit, the profile's essentials, queue ceilings and project quotas still apply at submit. - Personal presets live in
~/.config/xce/presets.yaml; users change them on the fly (xcecli preset set / edit / show / list / delete). - The server only shares. The apiserver serves admin-deployed preset
files read-only:
GET /api/v1/presets(list) andGET /api/v1/presets/{name}(fetch). Team presets are namespaced (<team>/<name>). No database, no HA; with several apiservers the files are deployed to each, likerbac.yaml. Every authenticated user may see them. - Pull copies.
xcecli preset pull <name>writes a complete, standalone local preset with an informationalorigin(server name, content hash, pull date). Removing or changing a server preset never affects local copies.xcecli preset diff <name>compares with the server (reports when it is gone);preset pull --forcerefreshes. Both are user-initiated. - User-to-user sharing without the server:
preset export/import(file, mail, git). - Site presets complement profiles. Admins typically publish a preset
with the profile's name holding its usual tuning; clients may point to it
("server preset
openfoamavailable") but never apply it automatically. - Safety and visibility: a warning on export/import when env variable
names look like secrets;
xcecli jobs submit --dry-runshows the expanded options and the effective values after the profile merge (job-config-merge); optionally the preset name is recorded as a job label (preset=<name>) for comparing variants. - Portal: the same expansion (a small option-level merge) and the same read-only listing; its personal presets are stored by the portal itself and are not shared with xcecli in the first version.
Scope
- In: preset format, xcecli commands, expansion and precedence, the read-only apiserver listing/fetch and its file directory, pull/diff, export/import, secret warning, dry-run display, tests.
- Out: writable server-side shared presets (would need owners,
visibility and durable storage; revisit only if the portal needs it, after
rbac-persistence), automatic application of presets, any server-side preset expansion. - Open: whether the preset-name label lives here or in
job-status-detail-display(job labels); the portal's preset storage.
Upstream / Downstream
- Upstream:
application-profile(profiles and--app),job-config-merge(dry-run effective values). - Downstream:
profile-usage-insight(advisory suggestions for site presets).