Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ Written against the real runtime rather than assumed from documentation:
altered what the worker is told, so position is checked by counting the `"""`
delimiters that precede it.
- `wire_api` accepts only `responses` on Codex CLI 0.153.0. `chat` returns "is no longer
supported" and `openai` returns "unknown variant". The published config schema still
advertises all three; the binary is the authority. An endpoint that speaks only
chat-completions cannot serve a Codex lane on this version.
supported" and `openai` returns "unknown variant". The published config schema agrees
rather than conflicting: its `WireApi` is a `oneOf` carrying the single variant
`responses`. An endpoint that speaks only chat-completions cannot serve a Codex lane on
this version.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,26 @@ Then invoke `$fablewright` and let it post the call sheet before it calls anyone
Installing lane profiles is deliberately a separate step: installing a plugin registers
skills, not user-owned agent profiles.

### One-minute smoke test

Four commands. None of them calls a model, spends a token, or writes outside a temporary
directory, so it is safe to run before you trust anything here.

```sh
sh scripts/verify.sh # the repo checks itself
sh tests/run-tests.sh # 143 offline cases
sh scripts/install-agents.sh --host codex --dry-run # what WOULD be written, nothing is
sh scripts/cast-call.sh --lane terra --check # is this lane real and runnable?
```

Expect `VERIFY PASSED`, `ALL TESTS PASSED`, six `Would install:` lines, and then either a
lane that validates or a named reason it cannot. `--check` resolving a lane is the point
where an install stops being a claim.

The verifier's count moves with your environment even though its verdict does not: **154**
on a machine with neither CLI installed — the floor CI asserts — and 155 when the Claude
CLI is present and the optional manifest validator can also run.

---

## The call sheet
Expand Down
8 changes: 7 additions & 1 deletion docs/WALKTHROUGH.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,16 @@ passed: 143 failed: 0
ALL TESTS PASSED

$ sh scripts/verify.sh
verify 1.0.0: passed 155, failed 0
verify 1.0.0: passed 154, failed 0
VERIFY PASSED
```

The verifier's **count is environment-dependent; its verdict is not.** 154 is the
invariant floor — what a machine with neither CLI installed runs, and what CI asserts.
With the Claude CLI on `PATH` the optional `claude plugin validate --strict` manifest
check also runs and the total is 155. Quote 154 when you need a number that holds
everywhere.

Both call no model and write nothing outside a temporary directory. The test suite uses
synthetic session fixtures under `tests/fixtures/`, plus a stub runtime that lets the
whole routing-verification path — including a lane that drops below its pinned effort —
Expand Down
Binary file modified docs/images/proof.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 13 additions & 4 deletions skills/fablewright/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,26 @@ risk: <concise, task-specific rationale>
~~~

No task tool call may precede it. `solo` is the default and needs a reason to leave, not
a reason to keep. A later call sheet may only **escalate**, only on newly observed risk,
and only with that evidence recorded. Never silently downgrade, and never add a lane
that the posted sheet did not call.
a reason to keep. A later call sheet may **escalate** on newly observed risk, with that
evidence recorded, and may never add a lane the posted sheet did not call.

Reducing rigour is the constrained direction, not a forbidden one. Dropping a reader,
widening a sandbox, or standing a lane down needs the same written evidence an
escalation does — what is banned is doing it *silently*. One reduction is planned rather
than reactive: when `ensemble` cannot meet its disjoint-ownership or single-family
requirements, the plan becomes sequential `full` runs and the risk line records why
(`references/role-contracts.md`). That is a change of structure, not a loss of rigour.

## Routes

Listed in the order the decision ladder in `references/call-sheet.md` works down.
Stop at the first match; do not shop for a route further down the table.

| route | implements | wright verifies | reader | use when |
|---|---|---|---|---|
| `solo` | wright | n/a | none | bounded, low-risk, reversible, cheap to redo |
| `delegate` | one cast lane | yes | none | bounded and fully specifiable, and worth the wright's context |
| `audit` | wright | yes | one | the wright is the fastest author but the risk earns an independent read |
| `delegate` | one cast lane | yes | none | bounded and fully specifiable, and worth the wright's context |
| `full` | one cast lane | yes | one | judgment-heavy, high-risk, or wide blast radius |
| `ensemble` | 2+ cast lanes | yes | one | genuinely parallel work over **provably disjoint** file ownership |

Expand Down
Loading