@brainervirus/workit-opencode 8.11.0 → 8.12.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,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
- export WORKIT_SESSION_ID=<lead>-w<n> (set by the lead for a worker's commits; a verifier brief sets none: the host derives it)
28
+ <identity line, per the lead's host: see "Identity and git rules per host" below>
29
29
  ```
30
30
 
31
31
  ## Worked example
@@ -97,17 +97,32 @@ is the slice's STUCK threshold in `workit fanout status`. `"fanIn":
97
97
  }
98
98
  ```
99
99
 
100
+ ## Identity and git rules per host
101
+
102
+ `workit fanout brief` renders the identity line and RULES 1 and 3 for the
103
+ lead's host (`WORKIT_HOST`, or the host's own session variable):
104
+
105
+ | Lead's host | Identity line | RULES 1 and 3 |
106
+ | --- | --- | --- |
107
+ | Claude Code | `Session: your env already has WORKIT_SESSION_ID (the lead's id)`; no `export`, no hand-minted id (SubagentStart issues `<lead>:<agent id>` only to verifiers and reviewers, never to an implementer, so the worker's commits carry the lead's id) | plain git: `git fetch origin && git switch -c <branch> origin/<base>` and `git commit -m <msg> --trailer "Workit-Session: <the env WORKIT_SESSION_ID>" --trailer "<host attribution>" -- <paths in SCOPE>`, because worktree isolation refuses every `workit git` form |
108
+ | OpenCode, Pi, Codex | `Session: your host already sets WORKIT_SESSION_ID in your shell`; export nothing (the host derives the id and an export cannot replace it) | `workit git branch <branch> --base <base>`, `workit git commit -m <msg> -- <paths in SCOPE>` |
109
+ | Cursor, CI, a plain terminal | `export WORKIT_SESSION_ID=<lead>-w-<slice>` (`+try<n>` for a race attempt): declared, not checked | the same `workit git` forms |
110
+
111
+ `MODE: resume` is `git switch <branch>` on every host (the branch exists; the
112
+ lead removed the dead worker's worktree after its exit, so the switch
113
+ succeeds), then continue from its head. A race attempt (`--attempt <n>`)
114
+ follows its host's row with the branch `<branch>-try<n>`.
115
+
100
116
  ## Worker rules (`workit fanout brief` appends them as RULES)
101
117
 
102
- 1. First command. `MODE: new`: `workit git branch <branch> --base <base>` (the
103
- worktree may start on a name that breaks branch policy). `MODE: resume`:
104
- `git switch <branch>` (the branch exists; the lead removed the dead
105
- worker's worktree after its exit, so the switch succeeds), then continue
106
- from its head.
118
+ 1. First command: create the branch (`MODE: new`; the worktree may start on a
119
+ name that breaks branch policy) or `git switch` to it (`MODE: resume`),
120
+ as the table above says for your host.
107
121
  2. Decide ambiguities yourself and record them:
108
122
  `workit ledger ruling "<what>" --why "<why>" --cost-if-wrong "<cost>"`.
109
123
  Stop only for an irreversible action, a security-sensitive one, or a side
110
124
  effect outside the worktree.
111
- 3. Commit with `workit git commit -m "<msg>" -- <paths in SCOPE>`; push only if
112
- the brief says so.
125
+ 3. Commit as the table says (`workit git commit -m "<msg>" -- <paths in SCOPE>`,
126
+ or plain git with the trailers on Claude Code); push only if the brief says
127
+ so.
113
128
  4. Never record a verdict on your own work.
@@ -73,8 +73,8 @@ Which session id a verdict carries, per host:
73
73
  - Claude Code: subagents inherit your `WORKIT_SESSION_ID`, so the
74
74
  SubagentStart hook names each `verifier` and `reviewer` its own session
75
75
  (`<lead>:<agent id>`), passed exactly as `--session`: the hook records the
76
- ids it issues, and only those are accepted. An `implementer` uses the
77
- session its brief exports for its workit commands.
76
+ ids it issues, and only those are accepted. An `implementer` is issued
77
+ none: it keeps your id in its env for its workit commands and commits.
78
78
  - Codex: the `workit-verifier` and `workit-reviewer` agents get the same
79
79
  issued `--session` from SubagentStart; any other verifier passes
80
80
  `--as verifier`.
@@ -84,8 +84,13 @@ Which session id a verdict carries, per host:
84
84
  - Cursor (no session id in the shell): the brief sets the verifier's
85
85
  `WORKIT_SESSION_ID=<lead>:verifier-<random hex>`, a fresh suffix per
86
86
  verifier. Cursor cannot check it: it is declared, not derived.
87
- - A worker's commits use `export WORKIT_SESSION_ID=<lead>-w-<slice>` from
88
- `workit fanout brief`. A verdict under an id you made up (`<lead>-v1`,
87
+ - A worker's commits: on Claude Code the lead's `WORKIT_SESSION_ID` already in
88
+ its env (SubagentStart issues no implementer id; plain git, no export, so the
89
+ lead authored those commits: a verifier or reviewer records the verdict, not
90
+ the lead); on OpenCode, Pi and Codex the id the host already
91
+ puts in its shell; on Cursor, CI and a plain terminal the brief's
92
+ `export WORKIT_SESSION_ID=<lead>-w-<slice>` (see `brief.md`, "Identity and
93
+ git rules per host"). A verdict under an id you made up (`<lead>-v1`,
89
94
  `<lead>:v1`) is refused as `forged_session` on Claude Code, Codex,
90
95
  OpenCode and Pi.
91
96
 
package/dist/plugin.js CHANGED
@@ -12391,7 +12391,7 @@ function loadCheckConfig(cwd) {
12391
12391
  gates[gate] = names;
12392
12392
  }
12393
12393
  }
12394
- return { source: CHECKS_FILE, root, checks, gates, error: null };
12394
+ return { source: CHECKS_FILE, root, checks, gates, error: null, resources: parsed.resources };
12395
12395
  }
12396
12396
  var sameArgv = (left, right) => left.length === right.length && left.every((item, index) => item === right[index]);
12397
12397
  function matchesNamedCheck(config, name, argv, cwd) {
@@ -13002,6 +13002,7 @@ var workspaceConfigSchema = object({
13002
13002
  autoApprove: union([boolean2(), array(nonBlank)]).optional(),
13003
13003
  defaultEndpoint: unknown().optional(),
13004
13004
  verification: _enum(["self", "independent"]).optional(),
13005
+ trailers: boolean2().optional(),
13005
13006
  autonomy: object(Object.fromEntries(["push", "pr", "merge", "release", "rerun"].map((kind) => [
13006
13007
  kind,
13007
13008
  union([boolean2(), literal("verified")]).optional()
@@ -13283,8 +13284,8 @@ var resolveRuntimeWorkspaceVcs = (cwd) => resolveRuntimeWorkspaceCandidate(cwd,
13283
13284
  var runtimeWorkspaceIndexSchema = object({
13284
13285
  workspaces: array(object({ name: nonBlank, glob: nonBlank }).passthrough()).optional()
13285
13286
  }).passthrough();
13286
- var matchRuntimeWorkspace = (cwd) => {
13287
- const file = path10.join(configDir(), "workspaces.json");
13287
+ var matchRuntimeWorkspace = (cwd, dir = configDir()) => {
13288
+ const file = path10.join(dir, "workspaces.json");
13288
13289
  let raw;
13289
13290
  try {
13290
13291
  raw = readFileSync3(file, "utf8");
@@ -13313,7 +13314,7 @@ var matchRuntimeWorkspace = (cwd) => {
13313
13314
  const matches = matchingEntries(cwd, entries ?? []);
13314
13315
  const workspaceName = process.env.WORKFLOW_WORKSPACE_NAME?.trim() || undefined;
13315
13316
  const selected = selectWorkspaceMatch(matches, cwd, workspaceName);
13316
- return selected ? { file, selected } : null;
13317
+ return selected ? { file, selected, matches } : null;
13317
13318
  };
13318
13319
  var resolveRuntimeReleaseTracks = (cwd) => {
13319
13320
  const matched = matchRuntimeWorkspace(cwd);
@@ -15691,9 +15692,9 @@ Autonomy contract:
15691
15692
  ship), go to the effective endpoint in \`workit grant show\`: \`pr\` opens
15692
15693
  the PR; \`green\` babysits it without asking (workit-ship) to merge-ready,
15693
15694
  never merging; \`merged\` also lands it with \`workit pr merge\`.
15694
- Merge and release need a workspace grant, which only the user raises from
15695
- their own terminal (a blocked verb names how); never edit workspaces.json or
15696
- route around a grant_required.
15695
+ Merge and release need a workspace grant only the user raises from their
15696
+ own terminal (a blocked verb names how); never edit workspaces.json or route
15697
+ around a grant_required.
15697
15698
  - Ask only for a product or preference choice, or for authority you lack, with
15698
15699
  your recommended answer. Facts are yours: read, run or prototype.
15699
15700
  - Label claims measured (run and seen this session), inferred, or guess.
@@ -15702,17 +15703,19 @@ Autonomy contract:
15702
15703
  - Author is not verifier: your own verdict is \`--self\`, shown as
15703
15704
  self-reviewed, never verified. High risk, \`verification: independent\` and
15704
15705
  merge need a verifier with its own host-derived session (a subagent's
15705
- \`<lead>:<child>\`, set by the host); never hand-mint one such as \`<lead>-v1\`.
15706
+ \`<lead>:<child>\`); never hand-mint one (\`<lead>-v1\`).
15706
15707
  - A local-commit endpoint does not imply PR readiness, and a local commit alone
15707
15708
  is not evidence of a requested remote push. Before reporting delivery,
15708
15709
  reconcile every requested item and observe it (\`workit verify-delivery\`).
15709
15710
 
15710
15711
  CLI first: if a step has one right answer, use the \`workit\` verb instead of
15711
15712
  hand-running git, gh or glab (\`workit git|pr|ci|check\`; \`workit help\` lists
15712
- the rest; without \`workit\` on PATH, \`npx -y @brainervirus/workit-cli\`).
15713
+ the rest; lacking \`workit\`, \`npx -y @brainervirus/workit-cli\`).
15714
+ Add Co-Authored-By via \`workit git commit --trailer "K: v" -- <paths>\`, never
15715
+ an amend.
15713
15716
  The task families (task, policy, evidence, finding, decision, worker, state)
15714
15717
  are optional continuity for tracked work; each branch has one implicit task,
15715
- created by the first recording, and a solo edit needs no task. A decision
15718
+ and a solo edit needs no task. A decision
15716
15719
  records a user choice; it never authorizes an effect. Judge work once with
15717
15720
  \`workit policy assess --judge risk= behavior= product-choice= plan=\`.
15718
15721
  Across repositories, bind each item to its checkout, branch and endpoint,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-opencode",
3
- "version": "8.11.0",
3
+ "version": "8.12.0",
4
4
  "private": false,
5
5
  "description": "Workit OpenCode plugin — native tools, adaptive policy, and sixteen method skills",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  "typecheck": "tsc --noEmit"
40
40
  },
41
41
  "dependencies": {
42
- "@brainervirus/workit-core": "^8.11.0"
42
+ "@brainervirus/workit-core": "^8.12.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@opencode/plugin": "2.0.18"