docs(skills): never cut a running job or agent short, not as chair and not at its time cap
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
9f7844ad6c
commit
44c88b4bf7
5 files changed
+32
-16
No files matched your search
+10
-4
@@ -80,10 +80,12 @@ worktree or compose project name, a container label, an open handle, or
|
||||
`unknown`. Then apply, first match wins:
|
||||
|
||||
1. Claimed by a peer: `keep`.
|
||||
2. Attributable to a peer that has not answered: `keep (no answer from
|
||||
2. A job running on it (deploy, gate, test, swarm run, build): `keep
|
||||
(running)`.
|
||||
3. Attributable to a peer that has not answered: `keep (no answer from
|
||||
<peer>)`. Silence is not consent.
|
||||
3. Archive duty: `archive first`.
|
||||
4. Everything else is a candidate with a risk class:
|
||||
4. Archive duty: `archive first`.
|
||||
5. Everything else is a candidate with a risk class:
|
||||
|
||||
| Risk | Meaning | Typical items |
|
||||
| ---- | ------- | ------------- |
|
||||
@@ -145,7 +147,11 @@ ticked items. Revise repeats call 1; nothing is deleted before `Execute`.
|
||||
rest, then put the refused item to the operator again as its own option: an
|
||||
explicit renewed selection may pass; if it is refused again, hand over the
|
||||
exact command with its list file for the operator to run.
|
||||
- Running stacks go down through the project's teardown target, never by
|
||||
- Never stop, take down or kill a running job, and never ask its owner to, to
|
||||
free space: not for a priority slot, not at a disk stop. Free idle items,
|
||||
ask the operator for an exception, or wait; an owner's own disk guard only
|
||||
alerts the chair, and only the operator can order a running job down.
|
||||
- Idle running stacks go down through the project's teardown target, never by
|
||||
removing their containers or volumes underneath them.
|
||||
- Archive-first items: copy out, verify the copy, then delete.
|
||||
- A delete failing on permissions (files owned by a container UID): use the
|
||||
|
||||
@@ -77,8 +77,14 @@ records the result.
|
||||
for the grant, and reports the release. The chair keeps one queue, answers
|
||||
every request with its position, enforces the limits the operator set,
|
||||
checks every grant with `watch.py admit --need-gb <N>` (or `--kind <slot>`;
|
||||
test kinds also need CPU and RAM below the configured limits),
|
||||
and never cancels a running grant to free capacity.
|
||||
test kinds also need CPU and RAM below the configured limits).
|
||||
- A running job (deploy, gate, test, swarm run, build) is never cut short to
|
||||
free capacity. The chair neither asks nor orders its owner to stop, take
|
||||
down or kill it, not for an operator-prioritised slot and not for a
|
||||
projected disk stop. It grants nothing new, frees idle items through the
|
||||
`cleanup` flow, asks the operator for an exception, or waits. An owner's
|
||||
own disk guard only alerts the chair and takes nothing down; only the
|
||||
operator can order a running job down.
|
||||
- Handover is explicit: the outgoing chair sends every peer the new holder,
|
||||
the queue and the running grants, and keeps allocating until the incoming
|
||||
chair confirms. Two allocators never run at once.
|
||||
@@ -97,8 +103,9 @@ stays silent below the thresholds.
|
||||
- **Stop**: new heavy jobs are blocked in every session (teardown commands
|
||||
never), and the hook runs the configured low-risk cleanup by itself; it
|
||||
skips every worktree where a gate or deploy process still runs.
|
||||
- **Critical**: additionally a desktop alarm to the operator. A running stack
|
||||
is torn down only with the operator's OK.
|
||||
- **Critical**: additionally a desktop alarm to the operator. Running jobs
|
||||
and their stacks still keep running; only the operator can make an
|
||||
exception.
|
||||
- A measured fall that would reach the critical threshold within the
|
||||
projection window raises the stage by one at once.
|
||||
- Caches together stay under their budget; the least recently used go first.
|
||||
|
||||
@@ -21,8 +21,9 @@ in a sidetree until it does, or leaves as a proposal.
|
||||
## The stages
|
||||
|
||||
1. **Brief.** One concern per agent. Name the goal, the exact base commit, the
|
||||
scope that may change, the evidence expected back, a hard time cap (default
|
||||
60 minutes) and what the agent must not do: no pushes, no gates or deploys
|
||||
scope that may change, the evidence expected back, a time cap (default
|
||||
60 minutes) at which it reports its interim state, and what the agent must
|
||||
not do: no pushes, no gates or deploys
|
||||
unless the resource chair of the `democracy` skill granted them, read-only
|
||||
probes on shared live systems.
|
||||
2. **Sidetree.** The agent works in its own worktree on its own branch,
|
||||
@@ -93,8 +94,9 @@ below the bar never enters the main line on its own.
|
||||
|
||||
## Rules
|
||||
|
||||
- Stop an agent at its time cap and ask for its findings; an uncapped brief can
|
||||
run for hours and deliver nothing.
|
||||
- At its time cap, ask an agent for its interim findings and let it run on;
|
||||
never stop a running agent. A brief without a cap can run for hours without
|
||||
a word.
|
||||
- Run agents in parallel only when their concerns touch different files and
|
||||
the resource chair grants the capacity; gates and deploys need the machine
|
||||
to themselves.
|
||||
|
||||
@@ -55,7 +55,8 @@ jobs' logs, and a first clustering. The judgement in those steps stays yours.
|
||||
5. **One funnel per cluster.** Hand every cluster you claimed in step 3 to the
|
||||
`funnel` skill: one agent per cluster, working in its own worktree on its own
|
||||
branch created from the exact current HEAD, with that cluster as its only
|
||||
concern, the artifact paths of step 4 in its brief and a hard time cap.
|
||||
concern, the artifact paths of step 4 in its brief and a time cap for its
|
||||
interim report.
|
||||
Steps 6 to 8 run inside that sidetree, so no cluster's edits land under
|
||||
another cluster's work or under a running gate or deploy. Run clusters in
|
||||
parallel only when their fixes touch different files and the machine has
|
||||
|
||||
@@ -158,11 +158,11 @@ Python hot path with Rust:
|
||||
## Delegating an optimization
|
||||
|
||||
Hand every optimization to an agent through the `funnel` skill: one sidetree
|
||||
per candidate, branched from an exact commit, with a hard time cap and "measure
|
||||
per candidate, branched from an exact commit, with a time cap and "measure
|
||||
first, report the time split before implementing". The agent probes live
|
||||
systems read-only and never starts gates or deploys. A broad brief without a
|
||||
cap can run for hours and deliver nothing; stop an agent at its cap and collect
|
||||
its findings.
|
||||
cap can run for hours without a word; at its cap, collect the agent's interim
|
||||
findings and let it run on.
|
||||
|
||||
Before merging, run independent skeptics through the `dialectic` skill. The
|
||||
antithesis must try to show that the candidate removes coverage, hides a
|
||||
|
||||
Reference in new issue
Block a user