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.
4.5 KiB
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:
{
"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:
{
"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:
~/.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.MARATHONis boolean andtrueiffPRIORITY_LABEL == "marathon".- At most TWO
AskUserQuestioncalls (second only on marathon path).