Skip to content
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,12 @@ Other things to know:
stop the run for you instead. You can switch modes when the table is shown. A task the
adjudicator parks is deferred, never counted as delivered; security tasks are never
parked, and `allow_deferral: false` forbids parking altogether.
- **Carry-over.** Rulings (pre-flight's, the adjudicator's, implementers') live in the ledger
and bind every agent that starts after them, a relaunch included; a relaunch's pre-flight
never re-rules work already built. Task minors an earlier launch left open reach the final
review, where one reviewer owns the checklist. A task that changes a file another lane or a
later task owns needs a ruling first; edits to earlier tasks' files are flagged. See
`reference.md` ("Carry-over").
- **Transient failures** (agent errors, missing results) relaunch once automatically.
Anything substantive stops the run and asks you.
- **Where files go.** Manifests and ledgers are stored beside the plan, or under
Expand Down
28 changes: 15 additions & 13 deletions SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,8 @@ this. Say the table is the one required check, show it, and wait.
token (keep it for relaunches). Exit 4: another session holds the run; stop and ask, and use
`--takeover` only when the user confirms that session ended. Then run
`<python> <skill_dir>/scripts/setup <manifest file> --owner <token>`. Its exit 4 naming another
run (`the checkout ... is in use by run ...`) means that run holds the checkout: setup changed
nothing, so release this run's own launch lock first (`active-run release <run_id> setup_failed
--owner <token>`, or `active-run release <run_id> --remove --owner <token>` for a new run that never
started), then stop and report it. It creates the feature branch and
run (`the checkout ... is in use by run ...`): reference.md "Active-run markers and stops"; then stop
and report it. It creates the feature branch and
worktrees and discards edits in run-owned worktrees, so never before the yes. On failure
wait 10 seconds and retry once; then `active-run release <run_id> setup_failed --owner <token>`, report,
and stop. Put its output in `setup_result`
Expand All @@ -195,12 +193,12 @@ this. Say the table is the one required check, show it, and wait.
never stops the run; keep the latest launch's refusal code for `tool-outcomes`.
5. Record each launch's spend (reference.md "Budgets"), a relaunch included, never a dry run:
`<python> <skill_dir>/scripts/ledger ended <ledger_dir> <status> <agents_spawned>
<rulings_spent>` (`<status>`: reference.md "Budgets").
After a launch that a transient relaunch follows, record only the spend (keep the lock
through the relaunch). At the end, record the spend and release the lock in one command
line, so the spend is never forgotten once the lock goes, and a refused record (exit 2)
keeps the lock until it is fixed: `<python> <skill_dir>/scripts/ledger ended <ledger_dir> <status>
<agents_spawned> <rulings_spent> && bash <skill_dir>/scripts/active-run release <run_id>
<rulings_spent>` (`<status>`: reference.md "Budgets"), then `<python> <skill_dir>/scripts/ledger
carry-launch <ledger_dir> <transcript dir>` (reference.md "Carry-over"; exit 3: say that launch
is not carried). Before a transient relaunch, keep the lock. At the end, in one command line
(reference.md "Budgets"): `<python> <skill_dir>/scripts/ledger ended <ledger_dir> <status>
<agents_spawned> <rulings_spent> && { <python> <skill_dir>/scripts/ledger carry-launch <ledger_dir>
<transcript dir> || true; } && bash <skill_dir>/scripts/active-run release <run_id>
<release> --owner <token>`, where `<release>` is `--remove` only for `complete` when the hand-back gate
passes: `acceptance.status` `accepted`, and `<python> <skill_dir>/scripts/check-verify <transcript dir>
<manifest file>` exits 0 printing status `match` or `not_required`; otherwise `<status>` (`unaccepted` for
Expand All @@ -227,7 +225,8 @@ earlier snapshot belongs to the earlier launch.

Relaunch once with the relaunch notice: carry budgets over (reference.md "Transient stops"). Set
`repairs_spent` to the repairs in the stopped run's `final.repairs` plus the earlier value.
First recompute `done`, `reviewed`, `deferred`, the `carry` notes and `backfill` as in Resume
First recompute `done`, `reviewed`, `deferred`, the `carry` notes, `carried_minors`,
`inputs_changed` and `backfill` as in Resume
steps 2-3, then rerun `scripts/setup --owner <token>` and take `start_points`; if validation
rejects its `setup_skipped`, rerun setup. Launch again. No second table. A second transient
stop is a real stop, unless it is a usage-limit stop (reference.md "Usage limit").
Expand Down Expand Up @@ -288,10 +287,13 @@ first, show its plan, and add `--yes` only on the user's yes. Keep the manifest

1. Invoked notice. Read the manifest (an `active-run list` marker names it); set `python` by
Building step 0. No manifest (earlier work from a hand-run attempt): `<skill_dir>/adopt.md` first.
2. `<python> <skill_dir>/scripts/ledger status <ledger_dir> --plan <plan> --manifest <manifest
2. First `<python> <skill_dir>/scripts/ledger carry-launch <ledger_dir> <wf id>` for each earlier
launch not yet carried, in launch order (`doctor-<wf>.json` gives its `setup_event`). Then
`<python> <skill_dir>/scripts/ledger status <ledger_dir> --plan <plan> --manifest <manifest
file> [--spec <spec>]`. Set `done`, `reviewed`, and `deferred` from it (taking a deferred
task up: reference.md "Backfill"), and `repairs_spent` from earlier reports' `final.repairs`;
put each `carry` entry into `notes`. Tasks in `stale`
put each `carry` entry into `notes`; copy `minors` into `carried_minors`, and `inputs` into
`inputs_changed` as `{plan: plan_changed, spec: spec_changed}` (reference.md "Carry-over"). Tasks in `stale`
(with their dependents) or `unbound` are left out of `reviewed`, so they are reviewed
again: tell the user which and why, and say so when `inputs` reports a changed plan or
spec. `<python> <skill_dir>/scripts/coverage <plan> <manifest file>` must exit 0 again
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.6.2
1.6.3
Loading
Loading