@brainervirus/workit-opencode 8.24.0 → 8.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,8 +25,8 @@ units of ~100+ lines each. Coupled work stays with one owner. Workit never spawn
25
25
  Never hand-edit it; change the plan or the standing orders and render again.
26
26
  4. **Spawn in a rolling window**, in the background, each in its own worktree:
27
27
  keep 4-6 in flight and refill from `spawnable` in `workit fanout status` as
28
- each one finishes. Model: the brief's `model:` line, else TIER
29
- (`references/orchestration.md`). Claude Code: the `implementer` agent, never
28
+ each one finishes. Model: the brief's `model:` and `effort:` lines (`workit models show`),
29
+ else TIER (`references/orchestration.md`). Claude Code: the `implementer` agent, never
30
30
  with `isolation: "worktree"`; Workit's hooks confine it to its WORKTREE.
31
31
  5. **Judge liveness by side effects only:** `workit fanout status` (head age,
32
32
  PR, CI, verdict, landed; STUCK past the TIMEBOX). Stop a stuck worker and
@@ -40,12 +40,12 @@ units of ~100+ lines each. Coupled work stays with one owner. Workit never spawn
40
40
  chain resumes. A fix round and recheck that both fail: a decider, not a
41
41
  third round; product choices go to the user (`references/orchestration.md`).
42
42
  7. **Verify by the workspace `verification` setting** (`workit grant show`).
43
- A report is a pointer, never evidence. `proportional` (default): each slice's lane (`workit pr status`) decides; none needs no verdict, self the author's `--self`, focused (cheap model: Claude Code `model: sonnet`) and full a verifier after the last push. `self`: a verifier that wrote none
43
+ A report is a pointer, never evidence. `proportional` (default): each slice's lane (`workit pr status`) decides; none needs no verdict, self the author's `--self`, focused and full a verifier (Claude Code: the `model` and `effort` of `workit models show --role verifier`) after the last push; one verdict at a stack's top covers its unchanged lower PRs, and a stale one with `reverify: focused` re-checks only the new diff, reusing green CI. `self`: a verifier that wrote none
44
44
  of the slices, or you if you wrote none. `independent` or high risk: a
45
45
  separate verifier session, never yours (doctrine: the ledger only refuses
46
46
  authors). One verifier may take a batch of slices, one verdict per branch
47
47
  (`workit ledger verdict <result> --branch <b> --how "<evidence>"`), in a
48
- session never chosen by the author. A review panel on separate models only at high risk.
48
+ session never chosen by the author. Spawn it with the brief's `verifier:` model (`workit models show --role verifier`). A review panel on separate models only at high risk.
49
49
  8. **Fan in** with `workit fanout check`: out-of-scope files (any file outside
50
50
  it stops the fan-in) and `git merge-tree` conflicts with trunk and between
51
51
  siblings. Fix what it names until it exits 0; a merged slice reads as
@@ -25,7 +25,7 @@ REPORT: branch, head SHA, files changed, each VERIFY command with its exit code,
25
25
  each ACCEPTANCE line met / not met, rulings you made (`workit ledger ruling`),
26
26
  anything out of scope as a follow-up, not a diff.
27
27
  STANDING: <the standing orders, verbatim: `workit ledger standing add` records each one>
28
- WORKTREE: <the path `workit fanout worktree create <slice>` made; the worker runs `workit --cwd <it> …` there>
28
+ WORKTREE: <the path `workit fanout worktree create <slice>` made; the worker runs `workit <verb> --cwd <it> …` there>
29
29
  <identity line, per the lead's host: see "Identity and git rules per host" below>
30
30
  ```
31
31
 
@@ -114,7 +114,7 @@ lead's host (`WORKIT_HOST`, or the host's own session variable):
114
114
 
115
115
  Once `workit fanout worktree create <slice>` made the worktree, the brief's
116
116
  WORKTREE line names it and RULES 1 and 3 run against it on every host:
117
- `workit --cwd <worktree> git commit …`, `workit --cwd <worktree> check <name>`,
117
+ `workit git --cwd <worktree> commit …`, `workit check --cwd <worktree> <name>`,
118
118
  one verb per call. The worktree is already on the branch (MODE new or resume),
119
119
  so no branch command comes first. Without one, `MODE: resume` is
120
120
  `git switch <branch>` (the branch exists), then continue from its head. A race
@@ -124,13 +124,13 @@ attempt (`--attempt <n>`) follows its host's row with the branch
124
124
  ## Worker rules (`workit fanout brief` appends them as RULES)
125
125
 
126
126
  1. Work only in WORKTREE, already on the branch, one verb per call against it
127
- (`workit --cwd <worktree> …`); Workit's hooks deny an implementer's change
127
+ (`workit <verb> --cwd <worktree> …`); Workit's hooks deny an implementer's change
128
128
  outside it. With no worktree made yet: create the branch (`MODE: new`) or
129
129
  `git switch` to it (`MODE: resume`), as the table above says.
130
130
  2. Decide ambiguities yourself and record them:
131
131
  `workit ledger ruling "<what>" --why "<why>" --cost-if-wrong "<cost>"`.
132
132
  Stop only for an irreversible action, a security-sensitive one, or a side
133
133
  effect outside the worktree.
134
- 3. Commit with `workit --cwd <worktree> git commit -m "<msg>" -- <paths in SCOPE>`;
134
+ 3. Commit with `workit git --cwd <worktree> commit -m "<msg>" -- <paths in SCOPE>`;
135
135
  push only if the brief says so.
136
136
  4. Never record a verdict on your own work.
@@ -5,22 +5,31 @@ and fans in. Workit records and checks; the host's own subagents run the work.
5
5
 
6
6
  ## TIER to model
7
7
 
8
- TIER is a field of each slice and of its brief. When the workspace sets
9
- `fanout.tierModels`, the brief has a `model:` line under TIER and `workit
10
- fanout status` names the model next to each spawnable slice: use that model.
11
- Without one, map TIER where the host lets you pick a model per spawn:
12
-
13
- | TIER | Claude Code (`model` on the Agent call) | Hosts without a per-spawn model |
14
- | --- | --- | --- |
15
- | scouting (read-only search, not a slice) | `haiku` | host default |
16
- | mundane | `sonnet` | host default |
17
- | standard | omit it (inherits yours) | host default |
18
- | hard | omit it (inherits yours); consider a race | host default |
19
-
20
- OpenCode takes a subagent's model from its agent config: pick a configured
21
- agent whose model fits the TIER, else the default. Codex, Cursor and Pi run
22
- every worker on the host's model, so TIER only sizes the timebox and decides
23
- whether to race.
8
+ TIER is a field of each slice and of its brief. Role models come from the
9
+ workspace (`models.roles`; `fanout.tierModels` still feeds the implementer
10
+ tiers) and, on Claude Code, built-in defaults: the brief has a `model:` line
11
+ (with `effort:` when set) under TIER and a `verifier:` line; `workit fanout
12
+ status` names the model next to each spawnable slice; `workit models show
13
+ [--role r] [--host h] --json` lists every role (decider, implementer tiers,
14
+ verifier, reviewer, explore, babysit). Pass exactly that `model` (and `effort`
15
+ where the host's spawn call takes one) on the spawn call: a subagent that
16
+ passes none inherits your model. Scouting and PR babysitting use the `explore`
17
+ and `babysit` roles. A role with no model (other hosts without config) runs
18
+ on the host's model, and TIER only sizes the timebox and decides whether to
19
+ race. Claude Code's built-in defaults, when nothing is configured:
20
+
21
+ | Role or TIER | `model` on the Agent call |
22
+ | --- | --- |
23
+ | decider | `fable`, effort `high` |
24
+ | hard | `opus` |
25
+ | standard | `sonnet` |
26
+ | mundane | `haiku` |
27
+ | verifier | `sonnet` |
28
+ | reviewer | `opus` |
29
+ | explore, babysit | `haiku` |
30
+
31
+ OpenCode takes a subagent's model from its agent config: pick a
32
+ configured agent whose model fits the TIER, else the default.
24
33
 
25
34
  ## Rolling window
26
35
 
@@ -53,7 +62,7 @@ reversibility (the option cheapest to undo wins a tie), and the exact change
53
62
  list. The fixer applies that list once, then one focused recheck follows.
54
63
 
55
64
  - Hard call (shared contract, security, migration): two deciders on different
56
- models (Claude Code: a different `model` on the Agent call; OpenCode: a
65
+ models (Claude Code: the `decider` role model, the other a different `model` on the Agent call; OpenCode: a
57
66
  child session on another configured agent; Codex, Cursor and Pi: one
58
67
  decider, since the host picks no model). If they disagree, you take the
59
68
  more reversible option.
@@ -40,7 +40,7 @@ description: Build a requested change in small verified steps - follow local pat
40
40
  status`). Lane none: no verdict. Lane self: after `workit check test` passes,
41
41
  record `workit ledger verdict tests-verified --self --how "<what you ran>"`;
42
42
  it reads self-reviewed, never verified, and is enough. Focused, full, high
43
- risk or `verification: self|independent` merges: one fresh verifier per PR after the last push, its own host-derived session (Claude Code: the `verifier` agent, `model: sonnet` when focused; Codex:
43
+ risk or `verification: self|independent` merges: one fresh verifier per PR after the last push, its own host-derived session (Claude Code: the `verifier` agent with the `model` (and `effort`) of `workit models show --role verifier`; Codex:
44
44
  the `verifier` agent; OpenCode: a child session; Pi: a supervised worker),
45
45
  never a hand-minted id. Before saying done, reconcile
46
46
  every named deliverable against the target checkout and observe it (for a push:
@@ -9,13 +9,16 @@ Review the candidate, never the author's summary of it. A session that wrote a
9
9
  commit on the branch cannot record a passing verdict: if that is you, hand the
10
10
  review to a fresh agent with its own host-derived session: Claude Code and
11
11
  Codex, the `reviewer` or `verifier` agent (`--session` and `--token` from SubagentStart);
12
- OpenCode, a child session; Pi, a supervised worker. Never hand-mint one such
12
+ OpenCode, a child session; Pi, a supervised worker. On Claude Code pass the
13
+ `model` and `effort` of `workit models show --role <verifier|reviewer>`. Never hand-mint one such
13
14
  as `<lead>-v1`: it is refused as `forged_session`.
14
15
  An author's `--self` verdict reads self-reviewed and never counts as
15
16
  independent; `type-check-only` never proves a behavior change.
16
17
  Depth follows the review lane in `workit pr status`: focused reads the diff and
17
18
  runs its tests; full also drives the real surface (verify-<app>). Review once
18
19
  per PR after its last push; a second pass on an unchanged head is waste.
20
+ A stale verdict showing `reverify: focused (<files>)` in `workit pr status`: re-check only
21
+ those files since the judged head and reuse green CI there (no fresh install, no full suite).
19
22
 
20
23
  1. Pin the candidate: `git rev-parse HEAD`, the base, `git diff <base>...HEAD`;
21
24
  for a PR, `workit pr status --json` (checks, unresolved threads).
@@ -51,7 +51,7 @@ the same check. Fix round and recheck both failed: a decider (call the skill too
51
51
  allows; no sleep loop. Red: read `logTail`, classify. Flake or infra: one
52
52
  `workit ci rerun --failed --reason flake|infra` per head. Real: reproduce
53
53
  with `workit check`, fix the root cause, batch every fix in one push.
54
- 6. **Verified.** The lane in `workit pr status` decides: none, no verdict; self, your `--self` verdict; focused or full (or `verification: self|independent`), one non-author verifier per PR after the last push, never per push (call the skill tool with `workit-review`), on Claude Code `model: sonnet` when focused. Land only when
54
+ 6. **Verified.** The lane in `workit pr status` decides: none, no verdict; self, your `--self` verdict; focused or full (or `verification: self|independent`), one non-author verifier per PR after the last push, never per push (call the skill tool with `workit-review`), on Claude Code with the `model` and `effort` of `workit models show --role verifier`. A docs-only push (or test-only under a unit verdict) keeps the verdict (`carried`); `reverify: focused` re-checks only the new diff, reusing green CI; one verdict at a stack's top covers its unchanged lower PRs. Land only when
55
55
  granted: `workit stack land` or `workit pr merge`; `--unverified --reason` if user-asked.
56
56
  7. **Observe it landed:** `workit verify-delivery pr` or `merge`. After a failed
57
57
  verdict or a check red 3+ times, at any endpoint: offer `/wk-retro` in one