@hecer/yoke 1.11.0 → 1.13.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.
- package/.claude-plugin/plugin.json +13 -13
- package/.codex-plugin/plugin.json +7 -7
- package/CHANGELOG.md +435 -398
- package/README.md +943 -915
- package/TODOS.md +5 -5
- package/agents/docs.toml +6 -6
- package/agents/implementer.toml +6 -6
- package/agents/reviewer.toml +6 -6
- package/agents/security.toml +6 -6
- package/bench/README.md +86 -86
- package/bench/RESULTS.md +35 -35
- package/bench/output-compaction.mjs +65 -65
- package/bench/result-schema.mjs +12 -12
- package/bench/results/claude-2026-07-27T18-03-26.json +50 -50
- package/bench/results/codex-unavailable-1785175418318.json +15 -15
- package/bench/results/gemini-2026-07-27T18-03-44.json +46 -46
- package/bench/run-matrix.mjs +26 -26
- package/bench/run.mjs +106 -106
- package/canon/AGENTS.md +30 -30
- package/canon/context/DECISIONS.md +4 -4
- package/canon/context/GLOSSARY.md +11 -11
- package/canon/context/KNOWLEDGE.md +4 -4
- package/canon/context/PROJECT.md +15 -15
- package/canon/loop/loop-spec.md +65 -65
- package/canon/loop/prd.schema.md +41 -41
- package/canon/manifest.yaml +59 -59
- package/canon/policy/gates.md +7 -7
- package/canon/policy/roles.md +9 -9
- package/canon/skills/ATTRIBUTION.md +99 -99
- package/canon/skills/authoring-prd/SKILL.md +57 -57
- package/canon/skills/brainstorming/SKILL.md +164 -164
- package/canon/skills/codebase-design/DEEPENING.md +15 -15
- package/canon/skills/codebase-design/DESIGN-IT-TWICE.md +12 -12
- package/canon/skills/codebase-design/SKILL.md +39 -39
- package/canon/skills/dispatching-parallel-agents/SKILL.md +182 -182
- package/canon/skills/document-release/SKILL.md +302 -302
- package/canon/skills/domain-modeling/ADR-FORMAT.md +19 -19
- package/canon/skills/domain-modeling/CONTEXT-FORMAT.md +39 -39
- package/canon/skills/domain-modeling/SKILL.md +35 -35
- package/canon/skills/executing-plans/SKILL.md +70 -70
- package/canon/skills/finishing-a-development-branch/SKILL.md +200 -200
- package/canon/skills/health/SKILL.md +177 -177
- package/canon/skills/maintaining-context/SKILL.md +34 -34
- package/canon/skills/minimal-code/SKILL.md +21 -21
- package/canon/skills/no-ai-slop/SKILL.md +103 -103
- package/canon/skills/no-ai-slop/eval.md +43 -43
- package/canon/skills/plan-ceo-review/SKILL.md +541 -541
- package/canon/skills/plan-eng-review/SKILL.md +362 -362
- package/canon/skills/receiving-code-review/SKILL.md +213 -213
- package/canon/skills/requesting-code-review/SKILL.md +105 -105
- package/canon/skills/resolving-merge-conflicts/SKILL.md +18 -18
- package/canon/skills/retro/SKILL.md +397 -397
- package/canon/skills/review/SKILL.md +246 -246
- package/canon/skills/ship/SKILL.md +691 -691
- package/canon/skills/subagent-driven-development/SKILL.md +277 -277
- package/canon/skills/systematic-debugging/SKILL.md +296 -296
- package/canon/skills/tdd/SKILL.md +371 -371
- package/canon/skills/unslop-ui/SKILL.md +34 -34
- package/canon/skills/using-git-worktrees/SKILL.md +218 -218
- package/canon/skills/verification-before-completion/SKILL.md +139 -139
- package/canon/skills/visual-verification/SKILL.md +54 -54
- package/canon/skills/workflow/SKILL.md +22 -22
- package/canon/skills/writing-for-agents/SKILL-MECHANICS.md +27 -27
- package/canon/skills/writing-for-agents/SKILL.md +42 -42
- package/canon/skills/writing-plans/SKILL.md +152 -152
- package/canon/skills/writing-skills/SKILL.md +655 -655
- package/canon/skills/yoke-retrofit/SKILL.md +26 -26
- package/canon/skills/yoke-workflow/SKILL.md +20 -20
- package/canon/tools/codex-rtk-hook.mjs +35 -35
- package/canon/tools/gemini-rtk-hook.mjs +25 -25
- package/canon/tools/graphify.md +3 -3
- package/canon/tools/playwright-mcp.md +3 -3
- package/canon/tools/qwen-rtk-hook.mjs +25 -0
- package/canon/tools/rtk.md +7 -7
- package/canon/tools/serena.md +6 -6
- package/dist/agents/catalog.js +7 -0
- package/dist/agents/contracts.js +3 -1
- package/dist/agents/host.js +5 -1
- package/dist/agents/process-streams.js +62 -0
- package/dist/agents/process.js +43 -3
- package/dist/agents/providers.js +61 -6
- package/dist/agents/telemetry.js +133 -37
- package/dist/canon/manifest.js +2 -1
- package/dist/change/inbox.js +1 -1
- package/dist/cli.js +30 -24
- package/dist/dashboard/page.js +122 -122
- package/dist/dashboard/panels.js +91 -91
- package/dist/goals/command.js +3 -2
- package/dist/loop/claims.js +2 -1
- package/dist/loop/decision.js +3 -2
- package/dist/loop/parallel-command.js +4 -2
- package/dist/loop/prd.js +2 -1
- package/dist/loop/reporter.js +1 -0
- package/dist/loop/run-command.js +31 -10
- package/dist/prd/command.js +19 -19
- package/dist/quality/candidate-comparison.js +6 -1
- package/dist/quality/command.js +17 -2
- package/dist/quality/types.js +6 -1
- package/dist/retrofit/apply.js +95 -2
- package/dist/retrofit/config.js +9 -1
- package/dist/retrofit/detect.js +8 -0
- package/dist/retrofit/plan.js +6 -0
- package/dist/retrofit/planners/claude.js +14 -14
- package/dist/retrofit/planners/kilo.js +44 -0
- package/dist/retrofit/planners/opencode.js +44 -0
- package/dist/retrofit/planners/pi.js +24 -0
- package/dist/retrofit/planners/qwen.js +3 -3
- package/dist/retrofit/preserve.js +2 -2
- package/dist/retrofit/qwen-settings.js +17 -0
- package/dist/retrofit/skill-actions.js +4 -1
- package/dist/retrofit/tools.js +8 -0
- package/dist/review/command.js +3 -2
- package/dist/review/verdict.js +1 -1
- package/dist/routing/capability.js +2 -2
- package/dist/routing/planning.js +2 -0
- package/dist/routing/registry.js +3 -1
- package/dist/routing/router.js +7 -3
- package/dist/setup/command.js +35 -11
- package/dist/setup/model-presets.js +48 -0
- package/docs/CAPABILITY-ROUTING.md +51 -51
- package/docs/DASHBOARD-EVOLUTION.md +33 -33
- package/docs/HARNESSES.md +81 -0
- package/docs/MIGRATING-TO-1.0.md +33 -33
- package/docs/MIGRATING-TO-1.1.md +27 -27
- package/docs/MIGRATING-TO-1.4.md +70 -70
- package/docs/PRODUCT-DIRECTION-2026-09-05.md +210 -210
- package/docs/PUBLISHING.md +114 -114
- package/docs/QWEN-MODEL-SUPPORT.md +142 -0
- package/docs/VERIFIED-PROJECTS-VALIDATION.md +29 -29
- package/docs/VERIFIED-PROJECTS.md +167 -167
- package/docs/superpowers/plans/2026-06-28-baustein-e-context-layer.md +981 -981
- package/docs/superpowers/plans/2026-06-29-baustein-f-routing.md +258 -258
- package/docs/superpowers/plans/2026-06-29-baustein-g-loop-observability.md +1006 -1006
- package/docs/superpowers/plans/2026-06-29-baustein-h-loop-robustness.md +374 -374
- package/docs/superpowers/plans/2026-06-30-baustein-i-visual-design-verification.md +450 -450
- package/docs/superpowers/plans/2026-07-02-baustein-k-zero-to-100-bootstrap.md +1024 -1024
- package/docs/superpowers/plans/2026-07-02-baustein-m-flow-smoke-proofs.md +574 -574
- package/docs/superpowers/plans/2026-08-13-gauntlet-quality-loop.md +537 -537
- package/docs/superpowers/plans/2026-08-16-artifact-backed-output-compaction.md +329 -329
- package/docs/superpowers/plans/2026-09-05-verified-projects.md +83 -83
- package/docs/superpowers/specs/2026-06-28-baustein-e-context-layer-design.md +146 -146
- package/docs/superpowers/specs/2026-06-29-baustein-f-routing-design.md +106 -106
- package/docs/superpowers/specs/2026-06-29-baustein-g-loop-observability-design.md +186 -186
- package/docs/superpowers/specs/2026-06-29-baustein-h-loop-robustness-design.md +113 -113
- package/docs/superpowers/specs/2026-06-30-baustein-i-visual-design-verification-design.md +98 -98
- package/docs/superpowers/specs/2026-07-02-baustein-k-zero-to-100-bootstrap-design.md +200 -200
- package/docs/superpowers/specs/2026-07-02-baustein-m-flow-smoke-proofs-design.md +155 -155
- package/docs/superpowers/specs/2026-08-13-gauntlet-quality-loop-design.md +422 -422
- package/docs/superpowers/specs/2026-08-16-artifact-backed-output-compaction-design.md +166 -166
- package/gemini-extension.json +6 -6
- package/hooks/hooks.json +19 -19
- package/package.json +91 -87
- package/dist/dashboard/discovery.js +0 -73
- package/docs/community-outreach-2026-08-20.md +0 -85
- package/docs/launch-copy-2026-08-21.md +0 -193
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
# Dashboard evolution
|
|
2
|
-
|
|
3
|
-
The local dashboard is an actionable workspace for registered Yoke projects. It reads the same saved project, loop, goal, acceptance, and measurement data as the CLI. Project-controlled text is rendered through `textContent`, and the server remains bound to the loopback interface with same-origin authorization for pause requests.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
Project status is derived from both the saved goal and the latest loop report. A blocked or running loop is not hidden by a completed goal. When goal and loop states differ, the card displays both. Blocked, failed, paused, unavailable, and stale active reports need attention; those projects are ordered before active projects, followed by the remaining projects.
|
|
8
|
-
|
|
9
|
-
Cards also show the reported current task and saved blocker reason when available, so the overview explains why a project needs attention before opening it.
|
|
10
|
-
|
|
11
|
-
An active loop report more than 20 minutes old is labeled **unconfirmed**. This means Yoke has an old active report, not evidence that the process is still live. The overview can be searched by project name, canonical path, or goal objective and filtered to All, Active, or Needs attention. A no-match state explains the result and provides a clear action that resets both search and filter.
|
|
12
|
-
|
|
13
|
-
## Durable navigation
|
|
14
|
-
|
|
15
|
-
The URL hash stores the current screen, project, project tab, period, UTC grouping, and complete custom date range. Supported screens are the overview, workspace comparison, and project detail. Supported project tabs are Now, Usage & time, and Results; periods are 1, 7, 30, 90, or 365 days; groupings are day, week, or month. Custom dates must be real ISO calendar dates in chronological order and cover at most 366 inclusive days.
|
|
16
|
-
|
|
17
|
-
Invalid hash state returns to the overview with the 30-day/day defaults. Browser back and forward, a page reload, and Refresh restore the validated state. Refresh reloads data without resetting the selected view or controls. Starting any navigation aborts earlier fetches and changes a request generation, so an older response cannot replace the current screen.
|
|
18
|
-
|
|
19
|
-
The workspace comparison schedules at most three project analytics requests at once. If navigation changes, in-flight fetches are aborted and no additional obsolete project requests are scheduled. All projects and individual project links remain available in the navigation while viewing the comparison.
|
|
20
|
-
|
|
21
|
-
## Usage comparisons
|
|
22
|
-
|
|
23
|
-
Usage & time compares the selected period with the immediately preceding period of exactly the same duration. A single time boundary is captured before either analytics request is made. The comparison covers recorded input plus output tokens, recorded acceptance events, and reported cost.
|
|
24
|
-
|
|
25
|
-
When the preceding value is zero, the dashboard describes no change or new recorded activity instead of calculating an infinite percentage. A cost percentage is shown only when both periods have fully measured cost. Otherwise the dashboard says the percentage is unavailable. Current and previous missing-usage coverage is displayed from calls with unknown usage and unmeasured attempts. Recorded portions remain recorded portions; missing tokens or charges are not estimated as zero.
|
|
26
|
-
|
|
27
|
-
Charts and their tables include periods that contain recorded events. Empty UTC calendar buckets are omitted and the chart explains that a gap means no recorded activity, not a measured zero. Detailed provider/model/role, model timeline, task, and phase tables remain below the comparison.
|
|
28
|
-
|
|
29
|
-
## Design findings and limitations
|
|
30
|
-
|
|
31
|
-
Goal state and loop state describe different durable facts and need independent presentation. Freshness is also separate from state: a saved `running` value can become unconfirmed without being rewritten. Navigation state belongs in the URL because the dashboard has several independently useful views and time controls. Analytics fan-out needs cancellation as well as a concurrency bound because registered workspaces may contain many projects.
|
|
32
|
-
|
|
33
|
-
The dashboard combines local saved evidence with process-identity checks for supervised providers (see [Windows runner validation](WINDOWS-RUNNER-VALIDATION.md)). Unverified process identity remains unknown. It does not reconstruct activity that predates retained measurements, estimate missing provider usage or prices, or turn requested model names into proof of models used. Parallel call durations can overlap, so summed call time is consumption intensity rather than generation speed. The 20-minute freshness threshold is a presentation rule, not a process-health guarantee. No provider performance benchmark is implied by these views.
|
|
1
|
+
# Dashboard evolution
|
|
2
|
+
|
|
3
|
+
The local dashboard is an actionable workspace for registered Yoke projects. It reads the same saved project, loop, goal, acceptance, and measurement data as the CLI. Project-controlled text is rendered through `textContent`, and the server remains bound to the loopback interface with same-origin authorization for pause requests.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Project status is derived from both the saved goal and the latest loop report. A blocked or running loop is not hidden by a completed goal. When goal and loop states differ, the card displays both. Blocked, failed, paused, unavailable, and stale active reports need attention; those projects are ordered before active projects, followed by the remaining projects.
|
|
8
|
+
|
|
9
|
+
Cards also show the reported current task and saved blocker reason when available, so the overview explains why a project needs attention before opening it.
|
|
10
|
+
|
|
11
|
+
An active loop report more than 20 minutes old is labeled **unconfirmed**. This means Yoke has an old active report, not evidence that the process is still live. The overview can be searched by project name, canonical path, or goal objective and filtered to All, Active, or Needs attention. A no-match state explains the result and provides a clear action that resets both search and filter.
|
|
12
|
+
|
|
13
|
+
## Durable navigation
|
|
14
|
+
|
|
15
|
+
The URL hash stores the current screen, project, project tab, period, UTC grouping, and complete custom date range. Supported screens are the overview, workspace comparison, and project detail. Supported project tabs are Now, Usage & time, and Results; periods are 1, 7, 30, 90, or 365 days; groupings are day, week, or month. Custom dates must be real ISO calendar dates in chronological order and cover at most 366 inclusive days.
|
|
16
|
+
|
|
17
|
+
Invalid hash state returns to the overview with the 30-day/day defaults. Browser back and forward, a page reload, and Refresh restore the validated state. Refresh reloads data without resetting the selected view or controls. Starting any navigation aborts earlier fetches and changes a request generation, so an older response cannot replace the current screen.
|
|
18
|
+
|
|
19
|
+
The workspace comparison schedules at most three project analytics requests at once. If navigation changes, in-flight fetches are aborted and no additional obsolete project requests are scheduled. All projects and individual project links remain available in the navigation while viewing the comparison.
|
|
20
|
+
|
|
21
|
+
## Usage comparisons
|
|
22
|
+
|
|
23
|
+
Usage & time compares the selected period with the immediately preceding period of exactly the same duration. A single time boundary is captured before either analytics request is made. The comparison covers recorded input plus output tokens, recorded acceptance events, and reported cost.
|
|
24
|
+
|
|
25
|
+
When the preceding value is zero, the dashboard describes no change or new recorded activity instead of calculating an infinite percentage. A cost percentage is shown only when both periods have fully measured cost. Otherwise the dashboard says the percentage is unavailable. Current and previous missing-usage coverage is displayed from calls with unknown usage and unmeasured attempts. Recorded portions remain recorded portions; missing tokens or charges are not estimated as zero.
|
|
26
|
+
|
|
27
|
+
Charts and their tables include periods that contain recorded events. Empty UTC calendar buckets are omitted and the chart explains that a gap means no recorded activity, not a measured zero. Detailed provider/model/role, model timeline, task, and phase tables remain below the comparison.
|
|
28
|
+
|
|
29
|
+
## Design findings and limitations
|
|
30
|
+
|
|
31
|
+
Goal state and loop state describe different durable facts and need independent presentation. Freshness is also separate from state: a saved `running` value can become unconfirmed without being rewritten. Navigation state belongs in the URL because the dashboard has several independently useful views and time controls. Analytics fan-out needs cancellation as well as a concurrency bound because registered workspaces may contain many projects.
|
|
32
|
+
|
|
33
|
+
The dashboard combines local saved evidence with process-identity checks for supervised providers (see [Windows runner validation](WINDOWS-RUNNER-VALIDATION.md)). Unverified process identity remains unknown. It does not reconstruct activity that predates retained measurements, estimate missing provider usage or prices, or turn requested model names into proof of models used. Parallel call durations can overlap, so summed call time is consumption intensity rather than generation speed. The 20-minute freshness threshold is a presentation rule, not a process-health guarantee. No provider performance benchmark is implied by these views.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# OpenCode, Kilo and Pi
|
|
2
|
+
|
|
3
|
+
Yoke 1.13.0 adds first-class adapters for OpenCode, Kilo and Pi coding agent. The adapters share Yoke's invocation, routing, review, quality, telemetry and retrofit contracts, while preserving the controls each harness actually provides.
|
|
4
|
+
|
|
5
|
+
This is a CLI integration, not an authentication bundle. Install the selected harness, log in or configure its API provider, and verify it independently before starting a Yoke loop.
|
|
6
|
+
|
|
7
|
+
## Setup and retrofit
|
|
8
|
+
|
|
9
|
+
Select one of the new harnesses explicitly:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
yoke setup . --yes --agent=opencode --runner=opencode
|
|
13
|
+
yoke setup . --yes --agent=kilo --runner=kilo
|
|
14
|
+
yoke setup . --yes --agent=pi --runner=pi
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
To add one to an existing project without changing the other generated artifacts:
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
yoke retrofit . --agent=opencode
|
|
21
|
+
yoke retrofit . --agent=kilo
|
|
22
|
+
yoke retrofit . --agent=pi
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`--agent=all` now includes all seven supported harnesses. Retrofit is merge-aware for the native config files and backs up Yoke-managed overwrites under `.yoke/backup/`.
|
|
26
|
+
|
|
27
|
+
## Native artifacts
|
|
28
|
+
|
|
29
|
+
| Harness | Generated project artifacts | Native capabilities used by Yoke |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| OpenCode | `AGENTS.md`, `.opencode/skills/`, `opencode.json`, `.opencode/agents/yoke-reviewer.md` | `run --format json`, provider/model selection, variants, plan agent, local MCP servers |
|
|
32
|
+
| Kilo | `AGENTS.md`, `.kilo/skills/`, `kilo.jsonc`, `.kilo/agents/yoke-reviewer.md` | OpenCode-compatible `run --format json`, provider/model selection, variants, plan agent, local MCP servers |
|
|
33
|
+
| Pi | `AGENTS.md`, `.pi/skills/`, `.pi/settings.json` | JSONL mode, provider/model selection, thinking level, explicit tool allowlists |
|
|
34
|
+
|
|
35
|
+
All three consume the shared `AGENTS.md` and `.yoke/context/*.md` context. OpenCode and Kilo also receive the configured local MCP servers from the Yoke code-graph choice. Pi has no native MCP or sub-agent layer, so its integration intentionally uses the portable skills and Yoke's own loop rather than pretending those features exist.
|
|
36
|
+
|
|
37
|
+
## Provider, model and variant selection
|
|
38
|
+
|
|
39
|
+
Yoke keeps the harness (`agent`) separate from the model provider (`provider`) and model identifier (`model`):
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
runner:
|
|
43
|
+
agent: opencode
|
|
44
|
+
provider: openrouter
|
|
45
|
+
model: openai/gpt-5.6
|
|
46
|
+
variant: high
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
For OpenCode and Kilo this becomes `--model openrouter/openai/gpt-5.6 --variant high`. If no explicit provider is configured, a model string already in the harness's `provider/model` form is passed through unchanged. For Pi the equivalent is:
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
runner:
|
|
53
|
+
agent: pi
|
|
54
|
+
provider: openai
|
|
55
|
+
model: gpt-5.6
|
|
56
|
+
reasoningEffort: high
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This becomes `--provider openai --model gpt-5.6 --thinking high`. Pi calls `variant` and `reasoningEffort` the same underlying thinking-level selection; configuring both with different values is rejected.
|
|
60
|
+
|
|
61
|
+
The same fields are available on routing workers and quality critic/repair roles. Routing evidence is keyed by harness, provider, model, reasoning effort and variant, so a model profile does not inherit another profile's success history.
|
|
62
|
+
|
|
63
|
+
## Permission profiles and honest limits
|
|
64
|
+
|
|
65
|
+
| Yoke profile | OpenCode / Kilo | Pi |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| `safe` | Headless `--auto` run; Yoke still verifies the resulting tree and gates the commit | `read,bash,edit,write` tool allowlist so the implementer can test and modify the project |
|
|
68
|
+
| `read-only` | `--agent plan` plus JSON output | `read,grep,find,ls` only |
|
|
69
|
+
| `unsafe` | Explicit `--dangerously-skip-permissions` | Harness default tool set; no Yoke-added allowlist |
|
|
70
|
+
|
|
71
|
+
OpenCode, Kilo and Pi do not provide the same OS-level sandbox boundary as Codex or Gemini. The Yoke `safe` label therefore describes the selected harness controls and Yoke's mechanical gates, not a universal filesystem sandbox. Use `read-only` for review and do not use `unsafe` unless the project owner accepts the boundary.
|
|
72
|
+
|
|
73
|
+
The Yoke loop disables native delegation where the harness exposes it, so Yoke's worker budget remains the authority. OpenCode and Kilo native agents are installed as a read-only reviewer artifact; Yoke's review runner still validates the structured verdict itself. Pi has no native sub-agent or plan mode by design.
|
|
74
|
+
|
|
75
|
+
## Telemetry and validation limits
|
|
76
|
+
|
|
77
|
+
Yoke parses OpenCode/Kilo JSON text events and `step_finish` token/cost events, and Pi `message_end` plus `message_update.usage` events. Missing provider events produce partial or unknown measurements; they are never reported as zero-cost success. Provider-reported model and usage remain provider claims.
|
|
78
|
+
|
|
79
|
+
The release test suite covers argument construction, provider/variant propagation, routing and quality configuration, retrofit plans, host detection, JSON result parsing, and representative telemetry fixtures. It does not authenticate against every provider or claim equal model quality. Run a small project-specific smoke task after installing a harness and configuring credentials.
|
|
80
|
+
|
|
81
|
+
Official CLI references: [OpenCode CLI](https://dev.opencode.ai/docs/cli), [OpenCode configuration](https://opencode.ai/docs/config), [OpenCode skills](https://opencode.ai/docs/skills), [Kilo CLI reference](https://github.com/Kilo-Org/kilocode/blob/main/packages/kilo-docs/pages/code-with-ai/platforms/cli-reference.md), and [Pi coding agent](https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/README.md).
|
package/docs/MIGRATING-TO-1.0.md
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
# Migrating to Yoke 1.0
|
|
2
|
-
|
|
3
|
-
Yoke 1.0 changes unsafe implicit behavior into explicit policy.
|
|
4
|
-
|
|
5
|
-
## Runner permissions
|
|
6
|
-
|
|
7
|
-
The default is `runner.permissions: safe`. Automation that intentionally requires a full
|
|
8
|
-
sandbox bypass must pass `--unsafe` or configure `runner.permissions: unsafe`. Use
|
|
9
|
-
`read-only` for planning and probing.
|
|
10
|
-
|
|
11
|
-
## Reviews
|
|
12
|
-
|
|
13
|
-
Reviewers write `.yoke/review-verdict.json`; Yoke validates and consumes it. The reviewer must
|
|
14
|
-
differ from the implementer unless `--allow-self-review` is explicit. CI can add `--json`.
|
|
15
|
-
|
|
16
|
-
## Commit ownership
|
|
17
|
-
|
|
18
|
-
Yoke resolves identity before implementation. Configure it when Git has no identity:
|
|
19
|
-
|
|
20
|
-
```yaml
|
|
21
|
-
commit:
|
|
22
|
-
authorName: HECer
|
|
23
|
-
authorEmail: hec_er@web.de
|
|
24
|
-
allowCoAuthors: false
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## PRDs, audit, and cleanup
|
|
28
|
-
|
|
29
|
-
Existing PRDs remain valid. Optional `needs`, `area`, and `agent` fields add dependencies,
|
|
30
|
-
collision domains, and affinity. Enable the story audit gate with `audit.enabled: true` and
|
|
31
|
-
version suppressions with `suppressionsVersion: 1`.
|
|
32
|
-
|
|
33
|
-
`yoke loop cleanup` now reports retained worktrees. Add `--remove-worktrees` for deletion.
|
|
1
|
+
# Migrating to Yoke 1.0
|
|
2
|
+
|
|
3
|
+
Yoke 1.0 changes unsafe implicit behavior into explicit policy.
|
|
4
|
+
|
|
5
|
+
## Runner permissions
|
|
6
|
+
|
|
7
|
+
The default is `runner.permissions: safe`. Automation that intentionally requires a full
|
|
8
|
+
sandbox bypass must pass `--unsafe` or configure `runner.permissions: unsafe`. Use
|
|
9
|
+
`read-only` for planning and probing.
|
|
10
|
+
|
|
11
|
+
## Reviews
|
|
12
|
+
|
|
13
|
+
Reviewers write `.yoke/review-verdict.json`; Yoke validates and consumes it. The reviewer must
|
|
14
|
+
differ from the implementer unless `--allow-self-review` is explicit. CI can add `--json`.
|
|
15
|
+
|
|
16
|
+
## Commit ownership
|
|
17
|
+
|
|
18
|
+
Yoke resolves identity before implementation. Configure it when Git has no identity:
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
commit:
|
|
22
|
+
authorName: HECer
|
|
23
|
+
authorEmail: hec_er@web.de
|
|
24
|
+
allowCoAuthors: false
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## PRDs, audit, and cleanup
|
|
28
|
+
|
|
29
|
+
Existing PRDs remain valid. Optional `needs`, `area`, and `agent` fields add dependencies,
|
|
30
|
+
collision domains, and affinity. Enable the story audit gate with `audit.enabled: true` and
|
|
31
|
+
version suppressions with `suppressionsVersion: 1`.
|
|
32
|
+
|
|
33
|
+
`yoke loop cleanup` now reports retained worktrees. Add `--remove-worktrees` for deletion.
|
package/docs/MIGRATING-TO-1.1.md
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# Migrating to Yoke 1.1
|
|
2
|
-
|
|
3
|
-
Yoke 1.1 makes Claude, Codex, and Gemini share the same setup, planning, runner-selection, and decision behavior.
|
|
4
|
-
|
|
5
|
-
Run the setup wizard once in an existing project:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx @hecer/yoke@1.1.0 setup .
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
It preserves existing Yoke configuration and asks for target agents, code graph, loop state, default runner, and decision mode. A non-interactive agent can apply explicit choices with `--yes`.
|
|
12
|
-
|
|
13
|
-
The new config fields are optional and backward-compatible:
|
|
14
|
-
|
|
15
|
-
```yaml
|
|
16
|
-
runner:
|
|
17
|
-
agent: codex
|
|
18
|
-
permissions: safe
|
|
19
|
-
loop:
|
|
20
|
-
enabled: true
|
|
21
|
-
timeoutMinutes: 30
|
|
22
|
-
decisionPolicy: critical # auto | critical
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
`loop.onAmbiguity: resolve|abort` and `--on-ambiguity=` still work. Prefer `decisionPolicy` for new projects: `auto` resolves routine choices without asking; `critical` pauses only for high-impact decisions and continues after `yoke loop answer`. Resume restores the original isolation, review, runner, permissions, timeout, and policy flags instead of silently weakening the run. If the restart cannot begin, `yoke loop resume` retries from the request-bound state stored under Git's private state directory.
|
|
26
|
-
|
|
27
|
-
Restart an already-open Codex task after retrofit if it does not discover the newly generated `.agents/skills/yoke-workflow/SKILL.md`.
|
|
1
|
+
# Migrating to Yoke 1.1
|
|
2
|
+
|
|
3
|
+
Yoke 1.1 makes Claude, Codex, and Gemini share the same setup, planning, runner-selection, and decision behavior.
|
|
4
|
+
|
|
5
|
+
Run the setup wizard once in an existing project:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @hecer/yoke@1.1.0 setup .
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
It preserves existing Yoke configuration and asks for target agents, code graph, loop state, default runner, and decision mode. A non-interactive agent can apply explicit choices with `--yes`.
|
|
12
|
+
|
|
13
|
+
The new config fields are optional and backward-compatible:
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
runner:
|
|
17
|
+
agent: codex
|
|
18
|
+
permissions: safe
|
|
19
|
+
loop:
|
|
20
|
+
enabled: true
|
|
21
|
+
timeoutMinutes: 30
|
|
22
|
+
decisionPolicy: critical # auto | critical
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`loop.onAmbiguity: resolve|abort` and `--on-ambiguity=` still work. Prefer `decisionPolicy` for new projects: `auto` resolves routine choices without asking; `critical` pauses only for high-impact decisions and continues after `yoke loop answer`. Resume restores the original isolation, review, runner, permissions, timeout, and policy flags instead of silently weakening the run. If the restart cannot begin, `yoke loop resume` retries from the request-bound state stored under Git's private state directory.
|
|
26
|
+
|
|
27
|
+
Restart an already-open Codex task after retrofit if it does not discover the newly generated `.agents/skills/yoke-workflow/SKILL.md`.
|
package/docs/MIGRATING-TO-1.4.md
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
# Migrating to Yoke 1.4
|
|
2
|
-
|
|
3
|
-
Yoke 1.4 adds dependency-aware parallel workers, isolated candidate selection, and a reference-driven quality gauntlet. Existing projects remain serial and skip quality comparison unless you opt in.
|
|
4
|
-
|
|
5
|
-
Upgrade and refresh generated harness files:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install -g @hecer/yoke@1.4.0
|
|
9
|
-
yoke retrofit .
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Parallel execution
|
|
13
|
-
|
|
14
|
-
Run dependency-ready stories concurrently with an explicit worker limit:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
yoke loop run . --isolate --parallel=3
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Parallel runs use isolated worktrees, leased claims, and a FIFO integration queue. Every candidate must pass its worker gates and the merged result must pass the project gates again. Adaptive routing is disabled during parallel and multi-candidate runs so each worker has one auditable provider identity.
|
|
21
|
-
|
|
22
|
-
Use `--candidates=N` to produce and mechanically gate multiple implementations before an identity-blind comparison selects the winner. Candidate mode supports up to five candidates.
|
|
23
|
-
|
|
24
|
-
## Reference-driven quality
|
|
25
|
-
|
|
26
|
-
Quality remains disabled by default. A story must declare a trusted reference, candidate artifacts, and a rubric:
|
|
27
|
-
|
|
28
|
-
```yaml
|
|
29
|
-
quality:
|
|
30
|
-
reference: { name: approved-home, source: design/home.png, kind: file }
|
|
31
|
-
candidate: { kind: screenshots, paths: [.yoke/proof/STORY-1/home.png] }
|
|
32
|
-
rubric: Match the approved layout, hierarchy, spacing, and states.
|
|
33
|
-
policy: blocking
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Project defaults can bound critic and repair work:
|
|
37
|
-
|
|
38
|
-
```yaml
|
|
39
|
-
quality:
|
|
40
|
-
enabled: false
|
|
41
|
-
policy: blocking
|
|
42
|
-
maxRounds: 3
|
|
43
|
-
maxMinutes: 60
|
|
44
|
-
consistencyChecks: 2
|
|
45
|
-
maxParallelCandidates: 2
|
|
46
|
-
critic: { agent: codex, model: gpt-5.6-sol } # model required for --candidates
|
|
47
|
-
repair: { agent: claude }
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Enable it for one run with:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
yoke loop run . --quality
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
`consistencyChecks` is fixed at `2`: Yoke runs the swapped-label pair needed to detect identity-sensitive critic output. Advisory mode records both verdicts without blocking; blocking mode permits bounded repairs and reruns all mechanical gates.
|
|
57
|
-
|
|
58
|
-
## Cleanup behavior
|
|
59
|
-
|
|
60
|
-
`yoke loop cleanup` now retains Yoke-created worktrees by default so failed candidates remain inspectable. Remove them explicitly when no longer needed:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
yoke loop cleanup . --remove-worktrees
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Cleanup still reaps only provider processes recorded for the current project and removes stale loop locks. It never kills providers by machine-wide process name.
|
|
67
|
-
|
|
68
|
-
## Review verdicts
|
|
69
|
-
|
|
70
|
-
Review verdict files now require `schemaVersion: 1` and provenance containing the provider, provider-reported model, review role, prompt version, and permission profile. Custom reviewer integrations must emit the contract printed in the reviewer prompt. Legacy verdict files without this envelope fail closed.
|
|
1
|
+
# Migrating to Yoke 1.4
|
|
2
|
+
|
|
3
|
+
Yoke 1.4 adds dependency-aware parallel workers, isolated candidate selection, and a reference-driven quality gauntlet. Existing projects remain serial and skip quality comparison unless you opt in.
|
|
4
|
+
|
|
5
|
+
Upgrade and refresh generated harness files:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @hecer/yoke@1.4.0
|
|
9
|
+
yoke retrofit .
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Parallel execution
|
|
13
|
+
|
|
14
|
+
Run dependency-ready stories concurrently with an explicit worker limit:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
yoke loop run . --isolate --parallel=3
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Parallel runs use isolated worktrees, leased claims, and a FIFO integration queue. Every candidate must pass its worker gates and the merged result must pass the project gates again. Adaptive routing is disabled during parallel and multi-candidate runs so each worker has one auditable provider identity.
|
|
21
|
+
|
|
22
|
+
Use `--candidates=N` to produce and mechanically gate multiple implementations before an identity-blind comparison selects the winner. Candidate mode supports up to five candidates.
|
|
23
|
+
|
|
24
|
+
## Reference-driven quality
|
|
25
|
+
|
|
26
|
+
Quality remains disabled by default. A story must declare a trusted reference, candidate artifacts, and a rubric:
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
quality:
|
|
30
|
+
reference: { name: approved-home, source: design/home.png, kind: file }
|
|
31
|
+
candidate: { kind: screenshots, paths: [.yoke/proof/STORY-1/home.png] }
|
|
32
|
+
rubric: Match the approved layout, hierarchy, spacing, and states.
|
|
33
|
+
policy: blocking
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Project defaults can bound critic and repair work:
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
quality:
|
|
40
|
+
enabled: false
|
|
41
|
+
policy: blocking
|
|
42
|
+
maxRounds: 3
|
|
43
|
+
maxMinutes: 60
|
|
44
|
+
consistencyChecks: 2
|
|
45
|
+
maxParallelCandidates: 2
|
|
46
|
+
critic: { agent: codex, model: gpt-5.6-sol } # model required for --candidates
|
|
47
|
+
repair: { agent: claude }
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Enable it for one run with:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
yoke loop run . --quality
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`consistencyChecks` is fixed at `2`: Yoke runs the swapped-label pair needed to detect identity-sensitive critic output. Advisory mode records both verdicts without blocking; blocking mode permits bounded repairs and reruns all mechanical gates.
|
|
57
|
+
|
|
58
|
+
## Cleanup behavior
|
|
59
|
+
|
|
60
|
+
`yoke loop cleanup` now retains Yoke-created worktrees by default so failed candidates remain inspectable. Remove them explicitly when no longer needed:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
yoke loop cleanup . --remove-worktrees
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Cleanup still reaps only provider processes recorded for the current project and removes stale loop locks. It never kills providers by machine-wide process name.
|
|
67
|
+
|
|
68
|
+
## Review verdicts
|
|
69
|
+
|
|
70
|
+
Review verdict files now require `schemaVersion: 1` and provenance containing the provider, provider-reported model, review role, prompt version, and permission profile. Custom reviewer integrations must emit the contract printed in the reviewer prompt. Legacy verdict files without this envelope fail closed.
|