myxce/.kiro/specs/project-guarantee/brief.md
Rongsong Shen b761878b58
docs(specs): discovery for layered job configuration (queue/app/project)
New briefs: job-config-merge (one live merge of job, application profile,
queue policy and project into effective values; simplified rules: job
overrides profile, select ANDed, queue hard/task limits reject; queue is
policy only, res_req deprecated), project-config (project quotas v1) and
project-guarantee (backlog).

application-profile: the profile carries the job's resreq (incl. span) and
task limits; "frozen at submit" replaced by the live merge.
parjob-placement: span constraints live in the fixed-N planner and the
range search bisects over the planner's allowed counts; LSF 10.1 block,
ptile, stripe and HOSTLIMIT_PER_JOB findings recorded.
Roadmap: new specs, existing-spec updates, lsf-config-migration backlog.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-10 03:14:16 +00:00

54 lines
2.1 KiB
Markdown

# Brief: project-guarantee
(`/kiro-discovery`, 2026-10-09, Path E "configuration layering". Backlog:
not started until `project-config` and `scheduler-preemption` land.)
## Problem
With `project-config`, projects can only be capped. Owners of a project (a
group that funded hardware, a department with a committed share) need a
**guarantee**: a minimum share or a pool of resources they get when they ask
for it, while idle capacity is still lent to others.
## Current State
- No guarantee, share or pool concept exists; fairshare is in the queue YAML
schema only and dropped by `xceadmin` (`mapping.py:80-97`).
- Preemption is specified but not implemented (`scheduler-preemption`,
requirements generated).
## Desired Outcome
- A project can own a guarantee: a resource amount (slots, hosts or any
resource) or a pool of hosts.
- Idle guaranteed capacity may be borrowed by other projects' jobs.
- When an owner's pending job needs its guarantee back, borrowers are
reclaimed (preempted, requeued or allowed to finish, by policy).
- Guarantee state and borrowing are visible (REST, `xcecli`, REPL).
## Approach
To be chosen in discovery when the spec starts. Candidates: LSF-style
guarantee service classes (`lsb.resources` GuaranteedResourcePool), or
guarantees as reserved virtual resources built on the limit/vres machinery
plus preemption.
## Scope
- **In**: guarantee model, borrowing, reclaim policy, visibility.
- **Out**: quotas (`project-config`), fairshare ordering, accounting/billing.
## Boundary Candidates
- Guarantee model and config.
- Scheduler accounting of owned vs borrowed usage.
- Reclaim through `scheduler-preemption`.
## Out of Boundary
- Project definitions and membership (`project-config`).
## Upstream / Downstream
- **Upstream**: `project-config`, `scheduler-preemption`, `job-config-merge`.
- **Downstream**: `lsf-config-migration` (guarantee pools).
## Existing Spec Touchpoints
- **Extends**: none.
- **Adjacent**: `scheduler-preemption`, `resource-distribution-mapping`.
## Constraints
- Scheduler driver equivalence (live and simulator identical).
- Touches scheduling policy and HA state: full 3-phase workflow.