KeiSeiKit-1.0/skills/sleep-on-it/phase-3-priority.md
Parfii-bot a4e667de10 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

130 lines
4.5 KiB
Markdown

# Phase 3 — Priority & time budget (click)
Decide how much night-time the remote agent spends on this task.
Priority maps to a wall-clock budget; the pipeline reads the budget
from frontmatter, so a hard equation can own the whole night while a
quick lookup is boxed to 15 minutes.
## 3a — Click
Emit ONE `AskUserQuestion`:
```json
{
"questions": [
{
"question": "How much night-time should this task get?",
"header": "Priority",
"multiSelect": false,
"options": [
{
"label": "Quick",
"description": "15 min, this night — simple questions, fast lookups"
},
{
"label": "Standard",
"description": "60 min, this night — default, medium research"
},
{
"label": "Deep",
"description": "4 hour, this night — serious derivations, thorough prior-art"
},
{
"label": "Marathon",
"description": "Full night, 1 task only — hard equations, full autonomy; Phase B REM skipped this night"
},
{
"label": "Weekly batch",
"description": "60 min, processed next Sunday UTC — non-urgent research"
}
]
}
]
}
```
## 3b — Marathon confirmation
If `LABEL == "Marathon"`, emit ONE more `AskUserQuestion` so the user
consciously accepts the cost:
```json
{
"questions": [
{
"question": "Marathon = this task owns the whole night. Phase B REM consolidation is skipped. Other queue tasks deferred to next night. Confirm?",
"header": "Marathon",
"multiSelect": false,
"options": [
{"label": "Yes, marathon", "description": "Take the full night; defer everything else"},
{"label": "No, downgrade to Deep (4 hour)", "description": "Still a long run but Phase B and other tasks proceed"}
]
}
]
}
```
If the user picks "No, downgrade to Deep (4 hour)", treat the effective
label as `Deep` for the rest of the pipeline.
## 3c — Normalise
Map the final label (after any marathon downgrade) to four variables:
| Label | `PRIORITY_LABEL` | `TIME_BUDGET_MINUTES` | `CHECKPOINT_EVERY_MINUTES` | `MARATHON` |
|---------------|------------------|-----------------------|----------------------------|------------|
| Quick | `quick` | 15 | 0 (off) | `false` |
| Standard | `standard` | 60 | 20 | `false` |
| Deep | `deep` | 240 | 30 | `false` |
| Marathon | `marathon` | 480 | 30 | `true` |
| Weekly batch | `weekly` | 60 | 20 | `false` |
Store all four as phase-scoped variables. They flow to Phase 5, which
passes them to `kei-sleep-queue.sh add`.
## 3d — Cap check (informational)
If `PRIORITY_LABEL ∈ {quick, standard, deep, marathon}` (i.e. this
night), count current this-night pending tasks:
```bash
~/.claude/agents/_primitives/kei-sleep-queue.sh list --pending \
| awk '$4 ~ /^(quick|standard|deep|marathon)$/' \
| wc -l
```
Informational messages:
- **Marathon already queued this night:**
> A marathon task is already pending for tonight. Submitting a second
> marathon — or any this-night task — will be deferred to the next
> night, because the marathon owns the whole window.
- **Greedy-pack near-full (≥ 480 min queued this-night):**
> Tonight's this-night budget is nearly full (≥ 8 hours queued). New
> this-night tasks will still be accepted but may be deferred to the
> next night by the greedy-packing scheduler.
Do NOT re-prompt; the user may explicitly want overflow.
## 3e — Advanced overrides (informational)
After Phase 5 preview, explicit flags override the priority defaults:
```
kei-sleep-queue add --time-budget <N>m # e.g. --time-budget 90m
--checkpoint-every <M>m # e.g. --checkpoint-every 15m
--no-timeout # time_budget_minutes: null
--marathon # explicit marathon flag
```
The wizard does not emit these flags itself; they exist for power users
who call the helper directly.
## Verify-criterion
- `PRIORITY_LABEL ∈ {quick, standard, deep, marathon, weekly}`.
- `TIME_BUDGET_MINUTES ∈ {15, 60, 240, 480}` per the table.
- `CHECKPOINT_EVERY_MINUTES ∈ {0, 20, 30}` per the table.
- `MARATHON` is boolean and `true` iff `PRIORITY_LABEL == "marathon"`.
- At most TWO `AskUserQuestion` calls (second only on marathon path).