@ckanner/flywheel 0.31.0 → 0.32.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/CHANGELOG.md +122 -5
- package/CONTRIBUTING.md +19 -0
- package/LICENSE +21 -0
- package/README.en.md +4 -171
- package/README.md +152 -269
- package/README.zh-CN.md +116 -0
- package/bin/flywheel-claude-code-pro-worker.js +1 -1
- package/bin/flywheel-codex-pro-worker.js +1 -1
- package/bin/flywheel-dsh-worker.js +1 -1
- package/bin/flywheel.js +1 -1
- package/bin/runtime.js +1 -1
- package/docs/README.md +86 -0
- package/docs/README.zh-CN.md +64 -0
- package/docs/archive/README.md +13 -0
- package/docs/archive/codex-pro-adapter-handoff.md +197 -0
- package/docs/archive/design-v0.24.md +540 -0
- package/docs/design.md +812 -0
- package/docs/en/claude-code-pro.md +25 -16
- package/docs/en/configuration.md +405 -145
- package/docs/en/contributing.md +303 -0
- package/docs/en/flow-console.md +142 -24
- package/docs/en/getting-started.md +232 -126
- package/docs/en/investigation.md +263 -0
- package/docs/en/jev-shadow.md +5 -0
- package/docs/en/jev.md +240 -0
- package/docs/en/model-policy.md +154 -62
- package/docs/en/releasing.md +207 -0
- package/docs/en/session-evaluation.md +4 -2
- package/docs/en/session-recovery.md +88 -6
- package/docs/en/workflow.md +241 -114
- package/docs/evaluation/README.md +12 -0
- package/docs/evaluation/jev-historical-provisional.json +138 -0
- package/docs/evaluation/jev-historical-result-2026-11-10.json +174 -0
- package/docs/plans/2026-11-01-dsh-integration.md +67 -0
- package/docs/plans/2026-11-01-model-profiles-preflight.md +29 -0
- package/docs/plans/2026-11-01-npm-installation.md +19 -0
- package/docs/plans/2026-11-03-codex-pro-default.md +28 -0
- package/docs/plans/2026-11-06-adaptive-workflow.md +365 -0
- package/docs/plans/2026-11-07-session-lifecycle.en.md +424 -0
- package/docs/plans/2026-11-07-session-lifecycle.md +337 -0
- package/docs/plans/2026-11-08-flow-console.md +271 -0
- package/docs/plans/2026-11-10-jev-shadow.md +32 -0
- package/docs/plans/2026-11-10-task-discovery.md +17 -0
- package/docs/plans/2026-11-10-workbench-redesign.md +19 -0
- package/docs/plans/2026-11-12-feedback-driven-workflows.md +739 -0
- package/docs/plans/2026-11-12-unified-jev-decisions.md +89 -0
- package/docs/plans/2026-11-13-jev-execution-decisions.md +110 -0
- package/docs/plans/2026-11-13-p5-ready-queue-prewarm.md +178 -0
- package/docs/plans/README.md +25 -0
- package/docs/reviews/2026-08-24-v0.18-review-fixplan.md +265 -0
- package/docs/reviews/2026-09-12-pr4-pr5-review.md +70 -0
- package/docs/reviews/README.md +12 -0
- package/docs/validation/2026-11-01-npm-installation.md +105 -0
- package/docs/validation/2026-11-01-profiles-preflight.md +67 -0
- package/docs/validation/2026-11-01-results.md +114 -0
- package/docs/validation/2026-11-03-codex-pro-default.md +90 -0
- package/docs/validation/2026-11-04-dsh-native-view.md +85 -0
- package/docs/validation/2026-11-04-release-0.28.1.md +33 -0
- package/docs/validation/2026-11-04-release-0.28.2.md +35 -0
- package/docs/validation/2026-11-05-dsh-0.2.2-compatibility.md +26 -0
- package/docs/validation/2026-11-05-registry-smoke-recovery.md +26 -0
- package/docs/validation/2026-11-05-release-0.28.3.md +32 -0
- package/docs/validation/2026-11-05-subscription-model-access.md +60 -0
- package/docs/validation/2026-11-05-view-order.md +14 -0
- package/docs/validation/2026-11-07-adaptive-workflow.md +79 -0
- package/docs/validation/2026-11-07-claude-code-pro.md +144 -0
- package/docs/validation/2026-11-07-session-lifecycle.md +136 -0
- package/docs/validation/2026-11-08-session-p3-p4.md +99 -0
- package/docs/validation/2026-11-09-flow-console.md +81 -0
- package/docs/validation/2026-11-10-jev-shadow.md +50 -0
- package/docs/validation/2026-11-10-task-discovery.md +45 -0
- package/docs/validation/2026-11-10-workbench-redesign.md +54 -0
- package/docs/validation/2026-11-11-release-0.30.2.md +65 -0
- package/docs/validation/2026-11-11-release-0.31.0.md +46 -0
- package/docs/validation/2026-11-12-dsh-0.2.2-rc.2.md +58 -0
- package/docs/validation/2026-11-12-feedback-driven-workflows.md +187 -0
- package/docs/validation/2026-11-12-release-0.31.1.md +58 -0
- package/docs/validation/2026-11-12-session-console-ux.md +46 -0
- package/docs/validation/2026-11-12-unified-jev-decisions.md +93 -0
- package/docs/validation/2026-11-13-dsh-settings-controls.md +104 -0
- package/docs/validation/2026-11-13-jev-execution-decisions.md +140 -0
- package/docs/validation/2026-11-13-p5-ready-queue-prewarm.md +138 -0
- package/docs/validation/2026-11-13-p5-review-closure.md +114 -0
- package/docs/validation/2026-11-13-p5-tracked-runtime-fixes.md +108 -0
- package/docs/validation/2026-11-13-prewarm-receipts-and-expiry-tests.md +92 -0
- package/docs/validation/2026-11-13-workspace-redesign.md +66 -0
- package/docs/validation/README.md +51 -0
- package/docs/validation/evidence/2026-11-08-session-p3-p4.json +5430 -0
- package/docs/validation/evidence/2026-11-13-p5-npm-candidate.json +54 -0
- package/docs/validation/evidence/claude-node-bridges.txt +118 -0
- package/docs/validation/evidence/claude-npm-build.txt +15 -0
- package/docs/validation/evidence/claude-npm-candidate.json +54 -0
- package/docs/validation/evidence/claude-npm-install.txt +21 -0
- package/docs/validation/evidence/claude-npm-tests.txt +145 -0
- package/docs/validation/evidence/claude-plugin-tests.txt +205 -0
- package/docs/validation/evidence/claude-quality-gate.txt +29 -0
- package/docs/validation/evidence/claude-race.txt +7 -0
- package/docs/validation/evidence/codex-pro-070-probes.txt +4 -0
- package/docs/validation/evidence/dsh-bridge.txt +4 -0
- package/docs/validation/evidence/dsh-native-view-bridge-tests.txt +1 -0
- package/docs/validation/evidence/dsh-native-view-build.txt +15 -0
- package/docs/validation/evidence/dsh-native-view-candidate.json +54 -0
- package/docs/validation/evidence/dsh-native-view-inspect.txt +27 -0
- package/docs/validation/evidence/dsh-native-view-install-tests.txt +19 -0
- package/docs/validation/evidence/dsh-native-view-npm-tests.txt +143 -0
- package/docs/validation/evidence/dsh-native-view-plugin-tests.txt +99 -0
- package/docs/validation/evidence/dsh-native-view-quality-gate.txt +29 -0
- package/docs/validation/evidence/dsh-plugin-tests.txt +48 -0
- package/docs/validation/evidence/function-coverage.txt +378 -0
- package/docs/validation/evidence/npm-build.txt +13 -0
- package/docs/validation/evidence/npm-contract-tests.txt +65 -0
- package/docs/validation/evidence/npm-dsh-bridge.txt +18 -0
- package/docs/validation/evidence/npm-dsh-plugin-tests.txt +62 -0
- package/docs/validation/evidence/npm-function-coverage.txt +420 -0
- package/docs/validation/evidence/npm-install-tests.txt +20 -0
- package/docs/validation/evidence/npm-quality-gate.txt +29 -0
- package/docs/validation/evidence/npm-race.txt +7 -0
- package/docs/validation/evidence/pr-dsh-bridge.txt +4 -0
- package/docs/validation/evidence/pr-dsh-plugin-tests.txt +48 -0
- package/docs/validation/evidence/pr-function-coverage.txt +379 -0
- package/docs/validation/evidence/pr-quality-gate.txt +28 -0
- package/docs/validation/evidence/pr-race.txt +6 -0
- package/docs/validation/evidence/profiles-control-smoke.json +1 -0
- package/docs/validation/evidence/profiles-dsh-bridge.txt +18 -0
- package/docs/validation/evidence/profiles-dsh-plugin-tests.txt +59 -0
- package/docs/validation/evidence/profiles-function-coverage.txt +411 -0
- package/docs/validation/evidence/profiles-quality-gate.txt +29 -0
- package/docs/validation/evidence/profiles-race.txt +7 -0
- package/docs/validation/evidence/quality-gate.txt +28 -0
- package/docs/validation/evidence/race.txt +6 -0
- package/docs/validation/evidence/watchdog-startup-after.txt +2 -0
- package/docs/validation/evidence/watchdog-startup-before.txt +6 -0
- package/docs/validation/evidence/watchdog-startup-quality-gate.txt +29 -0
- package/docs/validation/evidence/watchdog-startup-race.txt +7 -0
- package/docs/{claude-code-pro.md → zh-CN/claude-code-pro.md} +23 -17
- package/docs/{configuration.md → zh-CN/configuration.md} +397 -142
- package/docs/zh-CN/contributing.md +240 -0
- package/docs/zh-CN/flow-console.md +216 -0
- package/docs/zh-CN/getting-started.md +352 -0
- package/docs/zh-CN/investigation.md +213 -0
- package/docs/zh-CN/jev-shadow.md +5 -0
- package/docs/zh-CN/jev.md +192 -0
- package/docs/zh-CN/model-policy.md +128 -0
- package/docs/zh-CN/releasing.md +120 -0
- package/docs/{session-evaluation.md → zh-CN/session-evaluation.md} +4 -2
- package/docs/{session-recovery.md → zh-CN/session-recovery.md} +75 -12
- package/docs/zh-CN/workflow.md +284 -0
- package/npm/install.js +1 -1
- package/package.json +12 -25
- package/docs/flow-console.md +0 -122
- package/docs/getting-started.md +0 -418
- package/docs/model-policy.md +0 -65
- package/docs/workflow.md +0 -314
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# Contributing to Flywheel
|
|
2
|
+
|
|
3
|
+
English · [简体中文](../zh-CN/contributing.md) · [Documentation](../README.md)
|
|
4
|
+
|
|
5
|
+
Start with the [project overview](../../README.md), the authoritative
|
|
6
|
+
[system design](../design.md) (Chinese), and [AGENTS.md](https://github.com/ckanner/flywheel/blob/main/AGENTS.md).
|
|
7
|
+
Flywheel is a deterministic Go orchestrator: models plan, implement, and review
|
|
8
|
+
bounded tasks; code owns state transitions, verification, budgets, and process
|
|
9
|
+
lifecycles. Contributions must preserve that boundary.
|
|
10
|
+
|
|
11
|
+
## License and scope
|
|
12
|
+
|
|
13
|
+
Flywheel is distributed under the [MIT License](../../LICENSE). Keep its copyright
|
|
14
|
+
and license notice with copies or substantial portions of the software. Preserve
|
|
15
|
+
third-party notices and the provenance of bundled dependencies; the repository's
|
|
16
|
+
license does not replace their terms.
|
|
17
|
+
|
|
18
|
+
Keep credentials, private project contents, and unredacted model/session logs out
|
|
19
|
+
of issues, PRs, and fixtures. For a sensitive security report, request a private
|
|
20
|
+
reporting route before disclosing details; the repository does not publish a
|
|
21
|
+
separate response-time commitment.
|
|
22
|
+
|
|
23
|
+
## Choose a branch and execution directory
|
|
24
|
+
|
|
25
|
+
Use or reuse a worktree dedicated to the change. For a new change, when `origin`
|
|
26
|
+
and `main` are the intended remote and base:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
git status --short
|
|
30
|
+
git fetch origin
|
|
31
|
+
git worktree add -b task/my-change ../flywheel-my-change origin/main
|
|
32
|
+
cd ../flywheel-my-change
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Inspect an existing branch or directory before reusing it. Preserve other work
|
|
36
|
+
and keep the change's contracts, configuration, checks, and commits in the same
|
|
37
|
+
integration checkout. The original repository remains the session's project
|
|
38
|
+
workspace; the integration checkout and packet worktrees are execution locations.
|
|
39
|
+
When Flywheel develops the change, follow the effective `worktree.enabled` policy.
|
|
40
|
+
The engine merges accepted packets into the integration checkout's current
|
|
41
|
+
branch, not automatically into `main`.
|
|
42
|
+
|
|
43
|
+
Worktrees isolate checkout files and the index; they are not security sandboxes.
|
|
44
|
+
Serial execution can retain the documented `in-place` fallback. Parallel execution
|
|
45
|
+
with automatic worktree management requires successfully created isolated
|
|
46
|
+
worktrees. With automatic management disabled, shared execution uses batch-wide
|
|
47
|
+
verification and delivery. See the [workflow](workflow.md) and
|
|
48
|
+
[console](flow-console.md) guides for these distinctions and external directory
|
|
49
|
+
registration.
|
|
50
|
+
|
|
51
|
+
Prepare requirements, scope, and executable acceptance criteria before a large
|
|
52
|
+
implementation. Open a Draft PR once there is a useful reviewable plan or change;
|
|
53
|
+
one PR may cover several packets. Keep commits focused and use English
|
|
54
|
+
Conventional Commit subjects, such as `fix: preserve cleanup evidence`.
|
|
55
|
+
Agents follow the user's existing commit, push, and merge authorization without
|
|
56
|
+
asking again for an already authorized step or extending it to a different action.
|
|
57
|
+
|
|
58
|
+
## Implement against observable contracts
|
|
59
|
+
|
|
60
|
+
The [design invariants](../design.md#2-设计不变量) and AGENTS file define the core rules:
|
|
61
|
+
|
|
62
|
+
- Go and `internal/state` own task state. Writes use revision compare-and-set and
|
|
63
|
+
atomic replacement; models and skills never edit `state.json`.
|
|
64
|
+
- Contract schemas define valid input. Validate at load time and update the design
|
|
65
|
+
before changing a wire contract, including the error taxonomy.
|
|
66
|
+
- Test completion, cancellation, timeouts, and cleanup using observable results.
|
|
67
|
+
A terminal text marker or worker exit does not prove its child groups stopped.
|
|
68
|
+
- Verification and independent review apply to the candidate that is committed
|
|
69
|
+
and merged. Preserve work and evidence when a gate or Git delivery fails.
|
|
70
|
+
- Missing usage, cost, permission, or capability evidence stays unknown; it cannot
|
|
71
|
+
become success or zero cost.
|
|
72
|
+
- Skills validate inputs and invoke the CLI. The desktop plugin consumes Go
|
|
73
|
+
control interfaces; neither owns a second state machine or retry loop.
|
|
74
|
+
|
|
75
|
+
Use meaningful failure-path tests and narrow I/O injection points. Every measured
|
|
76
|
+
Go function must reach 100% statement coverage; only the trivial `cmd/flywheel`
|
|
77
|
+
entry stub is excluded. Preserve that gate and test behavior rather than repeating
|
|
78
|
+
the implementation solely to increase the percentage.
|
|
79
|
+
|
|
80
|
+
## Build and verification
|
|
81
|
+
|
|
82
|
+
Source development needs **Go 1.27 or later** and Git. Flywheel's npm runtime
|
|
83
|
+
requires **Node 22.18.0 or later**; the selected DSH release may require a newer
|
|
84
|
+
Node version. CI and releases pin **Node 24.22.1 / npm 12.2.1**. Use those versions
|
|
85
|
+
when reproducing package and installation evidence.
|
|
86
|
+
|
|
87
|
+
Run the applicable checks from the repository root:
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
make quality-gate
|
|
91
|
+
npm --prefix plugins/dsh ci --ignore-scripts
|
|
92
|
+
npm --prefix plugins/dsh run check
|
|
93
|
+
FLYWHEEL_TEST_NODE_BRIDGE=1 go test ./internal/drivers -run '^Test(DSH|CodexPro|ClaudeCodePro)NodeWorkerOfflineBridge$' -count=1
|
|
94
|
+
npm test
|
|
95
|
+
npm run build:npm
|
|
96
|
+
FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
| Change | Required verification |
|
|
100
|
+
|---|---|
|
|
101
|
+
| Go engine | `make quality-gate`: vet, formatting, tests, and coverage |
|
|
102
|
+
| DSH plugin or worker | Plugin checks and the applicable Go-to-Node bridges |
|
|
103
|
+
| npm installation or release | Root npm tests, a six-package candidate build, and installation of those tarballs |
|
|
104
|
+
| Documentation | Links, anchors, fences, runnable examples, translation consistency, and affected embedding/package contents |
|
|
105
|
+
|
|
106
|
+
The Claude bridge needs the exact optional 0.4.0 machine API in the worker's
|
|
107
|
+
dependency tree. An absent-peer skip does not verify that backend. Preserve the
|
|
108
|
+
reviewed source/tarball identity when using a source candidate. Codex Pro's
|
|
109
|
+
bundled 0.9.0 source package is likewise pinned by its actual integrity and
|
|
110
|
+
[vendor record](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/vendor/README.md).
|
|
111
|
+
|
|
112
|
+
For lifecycle, state, or process changes, reproduce the Linux CI race check:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
go test -race ./internal/machine ./internal/verify ./internal/watchdog ./internal/drivers ./internal/cli ./internal/modules ./internal/diagnostic -count=1
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
For changes to session quality or the evaluation harness, use the fixed offline
|
|
119
|
+
paired scenarios described in [Session evaluation](session-evaluation.md):
|
|
120
|
+
|
|
121
|
+
```sh
|
|
122
|
+
make build
|
|
123
|
+
FLYWHEEL_EVAL_BINARY="$PWD/flywheel" npm run test:sessions
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Default tests exercise real Git, processes, workers, and public adapter packages
|
|
127
|
+
with offline fixtures. Installation tests consume actual candidate tarballs in an
|
|
128
|
+
isolated registry and user directory; desktop registration uses a CLI fixture.
|
|
129
|
+
Dependencies require registry access or the documented verified fixture. These
|
|
130
|
+
checks do not establish live account access, model quality, subscription quota,
|
|
131
|
+
or a real Mac desktop pass.
|
|
132
|
+
|
|
133
|
+
CI uses the same candidate on Ubuntu and macOS, with race checks on Linux. Report
|
|
134
|
+
what actually ran: unavailable CI remains unavailable, and cross-compiling a Mac
|
|
135
|
+
binary does not establish its runtime behavior. Stop additional testing once the
|
|
136
|
+
applicable gates and concrete remaining risks are resolved.
|
|
137
|
+
|
|
138
|
+
## Keep documentation organized
|
|
139
|
+
|
|
140
|
+
Documentation changes belong in the same PR as the behavior they describe. Identify
|
|
141
|
+
which guides are affected before implementation, then update those guides in both
|
|
142
|
+
languages. A narrow change does not require rewriting every guide or running every
|
|
143
|
+
repository test.
|
|
144
|
+
|
|
145
|
+
### Use the right source for each claim
|
|
146
|
+
|
|
147
|
+
| Claim | Authoritative source | How to use it |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| Architecture, responsibilities, and invariants | [System design](../design.md), especially its design invariants | Treat these as intended constraints, not optional descriptions. |
|
|
150
|
+
| Legal fields, types, required values, and wire formats | [Schemas and templates](https://github.com/ckanner/flywheel/tree/main/templates), the relevant parser, and [worker protocol](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/PROTOCOL.md) | Check examples against the applicable schema and implemented interface. A schema accepting a field does not prove a backend supports it. |
|
|
151
|
+
| Defaults, precedence, migration, and model bindings | [Templates embedded from the current source revision](https://github.com/ckanner/flywheel/tree/main/templates) and [configuration parsing and normalization](https://github.com/ckanner/flywheel/tree/main/internal/config) | For an installed release, also verify that version's actual templates and `config inspect` output. Distinguish defaults, omitted-field compatibility, and the user's effective configuration; an older installation cannot establish new source defaults. |
|
|
152
|
+
| CLI, worker, and desktop behavior | Current [CLI](https://github.com/ckanner/flywheel/tree/main/internal/cli), [drivers](https://github.com/ckanner/flywheel/tree/main/internal/drivers), and [DSH plugin](https://github.com/ckanner/flywheel/tree/main/plugins/dsh) implementation and relevant tests | Verify commands, lifecycle boundaries, permission support, and UI labels against the implemented path. |
|
|
153
|
+
| Packaging, release order, and automated gates | [Package manifest](https://github.com/ckanner/flywheel/blob/main/package.json), lockfiles, [scripts](https://github.com/ckanner/flywheel/tree/main/scripts), and [workflows](https://github.com/ckanner/flywheel/tree/main/.github/workflows) | Document the commands and gates that exist. A policy in prose is not evidence that CI enforces it. |
|
|
154
|
+
| Completed tests, releases, or evaluations | [Dated validation records](../validation/README.md) and [evaluation evidence](../evaluation/README.md) | Limit claims to the recorded source, platform, inputs, and results; past results do not establish current registry or live-account status. |
|
|
155
|
+
|
|
156
|
+
When design and implementation disagree, record the mismatch and resolve the
|
|
157
|
+
intended behavior from the task's accepted requirements and design constraints.
|
|
158
|
+
Correct the implementation when it violates that contract; update the design when
|
|
159
|
+
an intended design change is part of the task, then align code, tests, and guides in
|
|
160
|
+
the same PR. Do not silently declare the code correct by weakening an invariant,
|
|
161
|
+
or describe a planned capability as implemented. If the intended behavior remains
|
|
162
|
+
unresolved, state that limit instead of inventing a resolution.
|
|
163
|
+
|
|
164
|
+
### Put content in its canonical location
|
|
165
|
+
|
|
166
|
+
The default root and plugin `README.md` are English, with `README.zh-CN.md`
|
|
167
|
+
counterparts. `README.en.md` remains a compatibility link, not another manual.
|
|
168
|
+
Current user and maintainer guides use matching filenames in `docs/en/` and
|
|
169
|
+
`docs/zh-CN/`, with reciprocal language links and the appropriate documentation index.
|
|
170
|
+
|
|
171
|
+
| Content | Canonical location |
|
|
172
|
+
|---|---|
|
|
173
|
+
| Product overview and first commands | Root READMEs |
|
|
174
|
+
| Current installation, workflow, configuration, and maintenance | `docs/en/` and `docs/zh-CN/` |
|
|
175
|
+
| Current architecture and invariants | `docs/design.md` |
|
|
176
|
+
| Design proposals and their original context | `docs/plans/` |
|
|
177
|
+
| Executed checks, environments, evidence, and limits | `docs/validation/` and `docs/evaluation/` |
|
|
178
|
+
| Historical reviews and superseded material | `docs/reviews/` and `docs/archive/` |
|
|
179
|
+
| Package-specific interfaces and provenance | `plugins/dsh/` |
|
|
180
|
+
| Rules for contributors and coding agents | The paired contribution guides and [AGENTS.md](https://github.com/ckanner/flywheel/blob/main/AGENTS.md) |
|
|
181
|
+
|
|
182
|
+
This repository's documentation is separate from the `docs/<task>/` contracts and
|
|
183
|
+
runtime ledger created in a target repository.
|
|
184
|
+
|
|
185
|
+
### Map a change to its documentation
|
|
186
|
+
|
|
187
|
+
Use the following as an impact checklist. Update the named material only where the
|
|
188
|
+
change affects its claims; design/schema/protocol changes also follow their own
|
|
189
|
+
contract rules.
|
|
190
|
+
|
|
191
|
+
| Change | Documentation to inspect and update when affected |
|
|
192
|
+
|---|---|
|
|
193
|
+
| Installation, upgrade, prerequisites, or setup | Root and plugin READMEs, `getting-started.md`, installation examples, and package contents |
|
|
194
|
+
| CLI commands, control responses, workers, or backend support | `getting-started.md`, `workflow.md`, relevant backend guide, plugin README/`PROTOCOL.md`, and affected skill instructions |
|
|
195
|
+
| Configuration, defaults, accounts, models, or permissions | `configuration.md`, `model-policy.md`, relevant README tables, actual template explanations, and migration instructions |
|
|
196
|
+
| Scheduling, worktrees, execution locations, or delivery | `workflow.md`, `configuration.md`, `flow-console.md`, design sections, and affected skills |
|
|
197
|
+
| Session reuse, recovery, handoff, or accounting | `session-recovery.md`, configuration/workflow/console sections, design, and affected worker contracts |
|
|
198
|
+
| Desktop UI, task discovery, or operator controls | `flow-console.md`, plugin READMEs, and getting-started instructions that name the UI |
|
|
199
|
+
| Evaluation tools, scenarios, or result interpretation | `session-evaluation.md` or `jev.md`, their input/output contracts, and dated evidence when new checks actually run |
|
|
200
|
+
| Package layout, licenses, or release behavior | `releasing.md`, relevant installation instructions, manifests/lockfiles, packaged links, and applicable license/provenance notices |
|
|
201
|
+
| A documentation move, rename, or heading change | Both documentation indexes, language links, all incoming paths/anchors, package lists, embedding references, scripts, and tests |
|
|
202
|
+
| Contributor or AI operating rules | [AGENTS.md](https://github.com/ckanner/flywheel/blob/main/AGENTS.md), both contribution guides, and their navigation; keep the requirements consistent |
|
|
203
|
+
|
|
204
|
+
The affected English and Chinese guides must ship in the same PR. Translate the
|
|
205
|
+
meaning, not just the headings: commands, model IDs, JSON fields, examples, defaults,
|
|
206
|
+
permissions, failure behavior, and capability limits must agree. A translation must
|
|
207
|
+
not promise a broader capability or hide a limitation present in the other language.
|
|
208
|
+
|
|
209
|
+
### Maintain readable structure and reliable history
|
|
210
|
+
|
|
211
|
+
Update the section that owns a behavior; add a named subsection only when needed.
|
|
212
|
+
Keep one page title, a logical heading hierarchy, short introductions, typed code
|
|
213
|
+
fences, readable tables, and blank lines around headings and lists. Label fragments
|
|
214
|
+
and placeholders, and use consistent terminology for project workspace, execution
|
|
215
|
+
directory, task, packet, and session. Write concrete instructions rather than a
|
|
216
|
+
conversation transcript. Do not prepend development updates to introductions or
|
|
217
|
+
append unrelated status paragraphs after the license. Release changes belong in
|
|
218
|
+
`CHANGELOG.md`; dated execution evidence belongs in validation records.
|
|
219
|
+
|
|
220
|
+
Historical plans, reviews, archives, and validation records retain their original
|
|
221
|
+
language and dated context. Preserve recorded dates, commits, trees, versions,
|
|
222
|
+
hashes, inputs, platforms, and pass/fail/skip/not-run results. Correct a historical
|
|
223
|
+
error with an explicitly labelled correction that identifies what changed and why;
|
|
224
|
+
do not silently rewrite an old outcome or replace its candidate identity with a
|
|
225
|
+
new one. Later completion belongs in a new dated record, linked from the old record
|
|
226
|
+
when useful. Historical material does not need duplicate translations, but indexes
|
|
227
|
+
must make its language and status clear.
|
|
228
|
+
|
|
229
|
+
### Validate the affected documentation
|
|
230
|
+
|
|
231
|
+
Before requesting review, check the items relevant to this change:
|
|
232
|
+
|
|
233
|
+
- [ ] Update the owning section and affected English/Chinese counterparts in the
|
|
234
|
+
same PR, with equivalent meaning, matching filenames, and reciprocal language links.
|
|
235
|
+
- [ ] Verify behavior and default claims against the relevant design, CLI, schema,
|
|
236
|
+
and source templates; support completed-test claims with matching dated evidence.
|
|
237
|
+
State unresolved differences and validation limits.
|
|
238
|
+
- [ ] For moves or heading changes, use `rg` to check incoming paths and anchors in
|
|
239
|
+
guides, READMEs, skills, template embedding code, manifests, scripts, and tests.
|
|
240
|
+
Resolve links from the referring file; preserve historical immutable commit links.
|
|
241
|
+
- [ ] Check local links, anchors, headings, fences, JSON/YAML examples, and safe shell
|
|
242
|
+
syntax as applicable; run `git diff --check`. Use a repository documentation checker
|
|
243
|
+
only if one exists; identify manual or ad hoc checks accurately.
|
|
244
|
+
- [ ] For package or embedding changes, inspect the relevant build/pack output and
|
|
245
|
+
links in the actual candidate. Include relative-link targets or use repository URLs
|
|
246
|
+
for source-only material; an old tarball cannot verify newly edited documentation.
|
|
247
|
+
- [ ] Record actual passed/failed/skipped/not-run results, methods, environments, and
|
|
248
|
+
applicable candidate identity in the PR. Do not imply unconfigured CI checks or
|
|
249
|
+
validation beyond the evidence; apply only gates relevant to the change.
|
|
250
|
+
|
|
251
|
+
Use source/help inspection, syntax checks, or isolated fixtures for examples. Do not
|
|
252
|
+
run live models, change accounts, install into real user profiles, publish, or deploy
|
|
253
|
+
merely to check documentation; those actions require an already authorized task scope.
|
|
254
|
+
|
|
255
|
+
## AI-assisted contribution workflow
|
|
256
|
+
|
|
257
|
+
1. Establish the current task scope and existing authorization. Read applicable
|
|
258
|
+
repository instructions, inspect the branch, HEAD, and dirty work, and preserve
|
|
259
|
+
unrelated edits. Reuse the intended PR/worktree when continuing a task.
|
|
260
|
+
2. Inspect the relevant authoritative sources and identify documentation impact
|
|
261
|
+
before implementation. Separate current behavior, proposed changes, and historical
|
|
262
|
+
evidence; surface unresolved design/code differences.
|
|
263
|
+
3. Implement the scoped change and its affected bilingual documentation in the same
|
|
264
|
+
PR. Preserve the engine's state ownership, frozen contracts, and user customizations.
|
|
265
|
+
4. Run the applicable checks and resolve concrete failures. Do not expand a small
|
|
266
|
+
documentation change into unrelated runtime work or live-account experiments.
|
|
267
|
+
5. Review the final diff, relevant branch/base changes, translations, references, and
|
|
268
|
+
verification evidence. Recheck any conclusions invalidated by later edits.
|
|
269
|
+
6. Complete the authorized commit/push/PR work and report the result. Reuse prior
|
|
270
|
+
authorization without asking again for the same action; a request for a PR alone
|
|
271
|
+
does not authorize merging, publishing, deploying, or changing repository visibility.
|
|
272
|
+
|
|
273
|
+
## Prepare a reviewable PR
|
|
274
|
+
|
|
275
|
+
Explain the concrete problem, the change and resulting behavior, the affected
|
|
276
|
+
bilingual guides, and any intentionally unchanged documentation whose relevance is
|
|
277
|
+
not obvious. Review the final diff and evidence independently of an implementing
|
|
278
|
+
model's completion claim. Follow active merge requirements and the user's
|
|
279
|
+
authorization; preserve required gates and repository settings.
|
|
280
|
+
|
|
281
|
+
Record each applicable check as **passed**, **failed**, **skipped**, or **not run**,
|
|
282
|
+
including the command/method, relevant environment, and reason for skipped or
|
|
283
|
+
unavailable checks. Distinguish local evidence from remote CI and live validation.
|
|
284
|
+
For package or release work, record the tested candidate's source commit/tree,
|
|
285
|
+
snapshot hash, tarball integrity, and dirty/clean status as applicable. Do not attach
|
|
286
|
+
results from a different source or candidate to the PR's final state without stating
|
|
287
|
+
that limitation. Source merge and npm publication remain separate operations.
|
|
288
|
+
|
|
289
|
+
## Release changes
|
|
290
|
+
|
|
291
|
+
Follow the [release guide](releasing.md). All six Flywheel packages share one exact
|
|
292
|
+
version with exact internal dependencies and the pinned Codex Pro runtime. Build
|
|
293
|
+
once from final clean source and test those tarballs. Preserve the source commit,
|
|
294
|
+
tree, snapshot hash, and package integrity values; the release tag must identify
|
|
295
|
+
that source. Do not relabel a dirty candidate as a clean release or rebuild
|
|
296
|
+
different bytes for a published version.
|
|
297
|
+
|
|
298
|
+
Use the repository's release scripts for candidate checks, publication, registry
|
|
299
|
+
verification, and promotion. Publish platform packages and the plugin before the
|
|
300
|
+
meta package, test the exact registry version before moving `latest`, and verify
|
|
301
|
+
all six tags and integrities. A partial publication resumes with the same
|
|
302
|
+
candidate. Manual publication requires its own explicit authorization and an
|
|
303
|
+
accurate record of completed and unavailable checks.
|
package/docs/en/flow-console.md
CHANGED
|
@@ -1,66 +1,148 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Workflow console
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[Documentation](../README.md) · English · [简体中文](../zh-CN/flow-console.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The DSH Flywheel view brings the current task, workflow stages, configuration, session
|
|
6
|
+
interaction, and delivery into one place. Keep the CLI, platform packages, and DSH
|
|
7
|
+
plugin at the same version. For installation, see [Getting started](getting-started.md).
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## Find a task without entering paths
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
The view follows the current conversation automatically; there is no task selector or editable path field. Its explicit tool association takes priority. Without one, the latest registered run with an exact matching host session ID opens. Foreign and ownerless runs are not shown. The index supplies identity only; Go status establishes progress. Unconfirmed operations retain their original target.
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
The project, task folder, execution directory and branch appear directly when known. Use `flywheel_control status` in the intended conversation to associate a prepared or standalone terminal task. Old UI-generated status command records do not establish a new association.
|
|
12
14
|
|
|
13
15
|
DSH keeps the original repository in the Session header and switches the current execution directory through its public API. The desktop Host periodically attaches Flywheel SDK sessions to matching existing projects; task status also ensures the original project is registered. It does not create a desktop workspace for every packet Worktree or rewrite old Session headers. Probes use temporary persistence, leaving no new user sessions. Native Providers start sessions in the project; task prompts name the actual execution directory for every shell/file operation. Backends unable to separate a `workspace-write` sandbox root reject that combination before dispatch instead of widening permissions. Full access and supported read-only modes retain their actual semantics.
|
|
14
16
|
|
|
15
|
-
Loading a skill does not start the engine. flywheel-task prepares and
|
|
17
|
+
Loading a skill does not start the engine. `flywheel-task` prepares the appropriate contract and invokes either the bounded investigation control or `flywheel_launch` for implementation. A preparation/proposal-only response must explicitly say execution was not started. Single-stage skills query `flywheel_control status` afterward to associate their canvas, or disclose the exact path when that tool is absent rather than claiming association.
|
|
18
|
+
|
|
19
|
+
| Conversation entry | Does it start the engine? | How the UI finds the task |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `/flywheel-new <goal>` | Prepares contracts for review only | Before handing over the proposal, the assistant registers a candidate through read-only `status`; an uninitialized task shows its identity and location, not execution progress |
|
|
22
|
+
| `/flywheel-run <task directory>` | Starts or resumes an existing task | Start and query the original task path to associate it with the conversation; the view follows the explicit association |
|
|
23
|
+
| `/flywheel-task <goal>` | Prepares, then starts | Use investigation control for evidence collection or `flywheel_launch` for implementation, then check status |
|
|
24
|
+
|
|
25
|
+
`new → run` and `task` use the same engine; the canvas is not exclusive to one
|
|
26
|
+
skill. Writing task files alone does not register a view, and a failed association
|
|
27
|
+
query must not be replaced with launch merely to populate the canvas. Report an
|
|
28
|
+
unavailable association tool explicitly. Standalone terminal tasks without a host ID require an explicit association in the intended conversation.
|
|
29
|
+
|
|
30
|
+
While the canvas is visible, registered-task discovery refreshes every five seconds.
|
|
31
|
+
An observed running task refreshes status every two seconds, backing off to ten
|
|
32
|
+
seconds after an unsuccessful response. Hidden documents skip those requests.
|
|
33
|
+
Refresh uses a read-only Remote instead of a slash command, so it does not append chat events or JSON. Explicit mutations and uncertain-result reconciliation retain durable command receipts. Old chat records are preserved.
|
|
16
34
|
|
|
17
35
|
## This stage versus the full workflow
|
|
18
36
|
|
|
19
|
-
When run.kind and control.kind identify the same single-stage operation, This run shows its recorded outcome. A review-only run defaults to **L1 → Review**, including the recorded verdict and score, while stating that overall delivery is not complete. Switch to Full workflow for the larger graph.
|
|
37
|
+
When `run.kind` and `control.kind` identify the same single-stage operation, This run shows its recorded outcome. A review-only run defaults to **L1 → Review**, including the recorded verdict and score, while stating that overall delivery is not complete. Switch to Full workflow for the larger graph.
|
|
20
38
|
|
|
21
|
-
Continue workflow is
|
|
39
|
+
Continue workflow is directly visible when applicable. New-task launch options appear only before an engine state exists. A passed stage does not start subsequent stages or mark the task completed. Failed, cancelled and unknown operations cannot inherit an older green verdict. Run ID, HEAD and digests are directly visible in node details.
|
|
40
|
+
|
|
41
|
+
## Investigation before implementation
|
|
42
|
+
|
|
43
|
+
A task with a preparation record and no implementation state opens the investigation
|
|
44
|
+
panel. It shows the goal, action budget, collected observations, truncated excerpts,
|
|
45
|
+
decision receipts, and the evidence report. Continue investigation submits the current
|
|
46
|
+
revision to Go; a pending invocation instead offers reconciliation of the original
|
|
47
|
+
receipt. Unknown control results require status reconciliation before another mutation.
|
|
48
|
+
Stop waits for the running owner to settle; it cannot turn a missing action receipt
|
|
49
|
+
into a confirmed cancellation.
|
|
50
|
+
|
|
51
|
+
The panel does not offer ordinary code-workflow launch while the task is in preparation.
|
|
52
|
+
`awaiting-report` asks the host assistant to submit an evidence-based analysis; it is
|
|
53
|
+
not implementation completion. A report-only goal ends with that report. An already
|
|
54
|
+
authorized repair can proceed after a supported report and a valid Spec are prepared,
|
|
55
|
+
retaining the original scope and usage. See [bounded investigation](investigation.md)
|
|
56
|
+
for the supported read/search actions, command protocol, and handoff requirements.
|
|
22
57
|
|
|
23
58
|
## Configuration
|
|
24
59
|
|
|
25
|
-
In an existing DSH conversation view, Flywheel remains after Statistics; the blank new-session landing page does not yet show these conversation views. Its
|
|
60
|
+
In an existing DSH conversation view, Flywheel remains after Statistics; the blank new-session landing page does not yet show these conversation views. Its primary navigation is Workflow and History; Settings opens a separate workspace. Global settings require no task directory. Project settings target the selected Git root. Discovery still selects one complete file in task → project → global → embedded order; it does not deep-merge files.
|
|
26
61
|
|
|
27
|
-
Opening
|
|
62
|
+
Opening Settings automatically reads the selected scope. Execution, Models and sessions, Budget and retries, JEV, and Advanced and diagnostics have separate sections. Save, Discard and Restore defaults stay in a fixed footer; Save is disabled without changes. Saving takes one click, including the single JEV master switch; the form explains supported decisions and the configured data scope. Serial mode omits concurrency controls. Minutes and seconds are converted precisely to engine millisecond fields.
|
|
28
63
|
|
|
29
|
-
|
|
64
|
+
Reload, complete JSON editing, diagnostics and raw responses live in Advanced and diagnostics. The narrow navigation row is fixed at 54px with 36px buttons (44px for coarse pointers); shorter content cannot stretch it. Leaving Settings, scope changes or reloads first disclose unsaved drafts; restoring defaults loads a pending full replacement before saving. Failures retain the draft and an uncertain save requires reconciliation. Go checks file identity, backs up the original and publishes atomically. Implementation runs retain their configuration snapshot. JEV additionally rechecks current activation and tighter permissions at decision boundaries; see [JEV recovery](jev.md#data-budgets-and-recovery). The displayed source is file-level: task → project → global → installed defaults selects one file, not a per-field overlay. New files start from the installed template.
|
|
30
65
|
|
|
31
66
|
Resources include ChatGPT through DSH or Codex Pro, Kimi Code, DeepSeek Account (Flash by default), and optional Claude Code Pro. Defaults come from the embedded template. Use config inspect and doctor for actual backend capabilities. An absent peer or unsupported permission fails explicitly. Provider sign-in stays with its normal account flow.
|
|
32
67
|
|
|
33
68
|
`permissions.bindings` overrides `loops.<role>`, `routes.<route>` or `judge-panel`. Unspecified bindings use the global policy. History overrides are role-based: execution routes share the execute policy while each packet keeps its own session. Scoped continuation requires the same task, role, goal and eligible binding; fresh also retains invocation-safety records.
|
|
34
69
|
|
|
70
|
+
[JEV decisions](jev.md) use one default-off master switch. Enabling it activates
|
|
71
|
+
supported investigation and failure-action decisions automatically, including approved
|
|
72
|
+
execution-model choices. Configuration inspection is read
|
|
73
|
+
only; it is not another switch. The investigation view shows the last observed JEV
|
|
74
|
+
state, adopted versus baseline actions, and evidence-referenced deferral or early
|
|
75
|
+
report effects. A stored state label is not a live re-read of configuration. These
|
|
76
|
+
collection effects never mean the root cause is proven or implementation completed.
|
|
77
|
+
|
|
78
|
+
### Switches and scheduling choices
|
|
79
|
+
|
|
80
|
+
Settings uses one JEV master switch. Automatic task Worktree management and early
|
|
81
|
+
DSH Review runtime preparation have their own switches in Execution. Each switch
|
|
82
|
+
has an associated label, a visible On/Off state, and native checkbox keyboard
|
|
83
|
+
behavior. Toggling edits the draft; Save changes writes the selected scope. No
|
|
84
|
+
second JEV confirmation or task-specific enable switch is required.
|
|
85
|
+
|
|
86
|
+
Parallel dispatch remains a two-option policy selector: Batch waits for the
|
|
87
|
+
current batch, while Ready queue refills an available Execute/L1 slot with another
|
|
88
|
+
eligible independent packet. The form preserves the selected policy and explains
|
|
89
|
+
unmet configuration conditions; it cannot establish whether a future task will
|
|
90
|
+
use Full or have independent work. Ready queue requires Full, parallel scheduling,
|
|
91
|
+
a maximum above one and automatic Worktrees. Early runtime preparation is
|
|
92
|
+
independent of JEV and only initializes a supported DSH Review SDK; no Session or
|
|
93
|
+
model prompt is created before normal admission. Defaults remain Batch and
|
|
94
|
+
preparation Off. See [runtime scheduling](configuration.md#scheduling-and-worktrees).
|
|
95
|
+
|
|
96
|
+
Automatic Worktree management controls engine-owned directories. Turning it off
|
|
97
|
+
does not delete existing directories or prohibit externally managed Worktrees.
|
|
98
|
+
The JEV section explains the allowed data boundary and current-task disable
|
|
99
|
+
semantics beside the fields. Disabling JEV or switching to serial discards the
|
|
100
|
+
invalid input drafts hidden by that change and retains the last valid values;
|
|
101
|
+
unrelated errors still require correction. Detected invalid fields entered through advanced JSON remain editable there and
|
|
102
|
+
block Save until corrected; Go still validates the complete configuration.
|
|
103
|
+
A valid connection, provider quota, explicit empty allowed-data list, role policy
|
|
104
|
+
or budget is not reset by an unrelated switch. Invalid drafts and stale/unknown
|
|
105
|
+
saves retain the existing protections.
|
|
106
|
+
|
|
107
|
+
### Session defaults and stage overrides
|
|
108
|
+
|
|
109
|
+
Execution sets the default fresh/scoped policy. Models and sessions lets each role inherit or override it. Execute routes share a role policy while packets retain independent histories. An explicit Plan choice reconciles the legacy Kimi history switch; inheritance preserves it. Nodes show actual session IDs, actions and reasons, not a resume inferred from configuration.
|
|
110
|
+
|
|
111
|
+
### Optional usage budget
|
|
112
|
+
|
|
113
|
+
Choose Off, Warn only, or Stop at limit. Off hides the threshold while retaining accounting. Warn only does not stop execution; a hard budget blocks new calls at the limit or when usage is unknown. Thresholds apply per task and UTC day; blank means no limit. Timeouts and transport retries remain independent, as do Provider quotas. The form reads actual settings and never silently changes an existing soft budget to off.
|
|
114
|
+
|
|
35
115
|
## Canvas and operations
|
|
36
116
|
|
|
37
|
-
The left-to-right overview groups Plan/decomposition, scheduling, task branches, integration/final checks and PR/Merge. Selecting a node
|
|
117
|
+
The left-to-right overview groups Plan/decomposition, scheduling, task branches, integration/final checks and PR/Merge. Selecting a node directly shows its outcome, actions, configuration snapshot and actual role-session facts. Evidence and managed session interaction have separate explicit destinations. Open task workflow drills into Execute, L1, Review and Git delivery; integration can be inspected separately, while PR and Merge are separate nodes. Colors have text labels. Identity, project/worktree, branch, HEAD, run ID, bindings and evidence come from actual receipts.
|
|
38
118
|
|
|
39
119
|
The canvas uses the available plugin width, with two-axis panning, zoom, fit width, current-step location, paging and a list alternative. New snapshots preserve the viewport and selection; location can switch to the running packet's page. Large tasks use bounded excerpts. Read full node evidence loads one packet with a matching fresh revision; it never changes the ledger.
|
|
40
120
|
|
|
41
121
|
Focus canvas expands the view in a plugin-owned native dialog. Exit or Escape returns without starting or stopping the task. It does not change the DSH global layout or composer. Unknown operation outcomes exit focus mode so the original-invocation reconciliation action remains visible.
|
|
42
122
|
|
|
43
|
-
|
|
123
|
+
Ordinary node operations dispatch once with the observed revision. Repair and retry records the explicit console action and adds one Execute/L1 attempt, without inventing an explanation for the failure. Reopening a completed packet still requires a reason and confirmation of downstream evidence invalidation; a changed revision invalidates that confirmation. Review cannot run with a red current L1. Unqueried remote state, closed PR and merged PR remain distinct.
|
|
44
124
|
|
|
45
125
|
- Run stage submits the observed revision for lease-bound admission.
|
|
46
|
-
-
|
|
126
|
+
- Repair and retry records the explicit console action and adds one Execute/L1 attempt without resetting failures or billing.
|
|
47
127
|
- Reopening a completed packet archives old evidence and invalidates downstream acceptance.
|
|
48
128
|
- Git delivery requires current L1 and independent Review evidence.
|
|
49
129
|
- Final acceptance runs milestone gates and Judge without starting Plan or unfinished execution units.
|
|
50
130
|
- Continue workflow resumes the persisted Full or ultraWork/Quick policy.
|
|
51
131
|
- Stop waits for managed work to settle; closing a view is not a stop.
|
|
52
132
|
|
|
53
|
-
Explicitly independent packets with satisfied dependencies can be run ahead in
|
|
133
|
+
Explicitly independent packets with satisfied dependencies can be run ahead in their registered execution directories, subject to the selected worktree policy. Integration changes invalidate old acceptance. Each asynchronous node operation records running/passed/failed/cancelled and its reason. Quick retains deterministic checks and independent final Review; omitted Plan/Judge stages are not presented as passes.
|
|
54
134
|
|
|
55
135
|
## Parallel execution
|
|
56
136
|
|
|
137
|
+
### Eligibility and limits
|
|
138
|
+
|
|
57
139
|
Read `flywheel template scheduler-policy.schema.json` for the current fields and bounds. For example:
|
|
58
140
|
|
|
59
141
|
```json
|
|
60
|
-
{"scheduler":{"mode":"parallel","max-parallel":2,"providers":{"deepseek-account":1}}}
|
|
142
|
+
{"scheduler":{"mode":"parallel","max-parallel":2,"providers":{"deepseek-account":1},"dispatch":"batch","prewarm":false}}
|
|
61
143
|
```
|
|
62
144
|
|
|
63
|
-
Provider-limit keys are
|
|
145
|
+
Provider-limit keys are actual configuration channel names. The example uses the inline template's `deepseek-account`; a binding using `deepseek-account-sdk` needs that key instead. Eligibility comes from frozen packet contracts:
|
|
64
146
|
|
|
65
147
|
```yaml
|
|
66
148
|
schedule:
|
|
@@ -70,7 +152,26 @@ schedule:
|
|
|
70
152
|
|
|
71
153
|
Dependencies reference earlier known packet IDs. Writes are normalized relative paths or directory prefixes, without globs or escapes. Include ordinary tests/configuration and account for shared test resources. Undeclared independence, overlapping scopes and live-credential units remain serial.
|
|
72
154
|
|
|
73
|
-
|
|
155
|
+
### Dispatch and runtime preparation
|
|
156
|
+
|
|
157
|
+
The configuration editor also offers `scheduler.dispatch` and `scheduler.prewarm`.
|
|
158
|
+
The defaults are `batch` and false. Selecting `ready-queue` fills a free Execute/L1
|
|
159
|
+
slot from the remaining independent Full packets when automatic Worktree management
|
|
160
|
+
is enabled and the parallel limit exceeds one. Review, replanning and integration
|
|
161
|
+
retain the all-workers-settled barrier. Shared-checkout runs keep batch dispatch.
|
|
162
|
+
|
|
163
|
+
Prewarming initializes one DSH Review runtime while a serial packet performs its
|
|
164
|
+
post-Execute deterministic checks. It sends no model prompt until normal Review
|
|
165
|
+
admission. Parallel Execute/L1 lanes and shared candidates do not prewarm; an
|
|
166
|
+
independent cohort must settle before its serial Review path may prepare a runtime.
|
|
167
|
+
Other harnesses use the cold path. Unused runtimes must finish bounded cleanup.
|
|
168
|
+
Neither setting changes JEV activation, task qualification or completion gates.
|
|
169
|
+
Saving takes effect on the next start. See [Configuration](configuration.md#ready-queues-and-runtime-preparation)
|
|
170
|
+
for eligibility, recovery and the separate live-performance evaluation.
|
|
171
|
+
|
|
172
|
+
### Execution directories
|
|
173
|
+
|
|
174
|
+
Configuration → Workflow policy → Automatically manage task Worktrees is on by default (`worktree.enabled`). It controls automatic directory creation/management independently from parallel scheduling. The installation default allows parallel execution with a limit of two; existing complete files without `scheduler` remain serial, as do explicit serial settings. Parallel automatic management requires isolated worktrees and stops if creation fails; the legacy serial path can record an in-place fallback. With automatic management off, tasks may run concurrently in the task checkout or choose their own Worktrees. Shared directories do not provide file isolation: write-scope conflicts, candidate drift and failed acceptance still stop progress.
|
|
74
175
|
|
|
75
176
|
To select another execution Worktree, the executor first prepares a clean checkout of the same repository and task baseline, unclaimed by another unit in this workflow and with a branch not shared by multiple Worktrees, then returns only `{"flywheelExecutionDirectory":{"cwd":"/absolute/worktree","branch":"actual-branch"}}` before implementation. Go validates and records it; the next invocation, tests, Review and delivery follow that directory. Registration is not task completion and its model usage is still billed. External Worktrees are retained. A prompt-only directory claim or edited state file cannot replace this registration.
|
|
76
177
|
|
|
@@ -78,6 +179,10 @@ Independent Worktrees permit concurrent Execute/L1. Shared checkouts run Execute
|
|
|
78
179
|
|
|
79
180
|
Review, integration and milestone gates remain serial. A combined candidate is revalidated after incorporating earlier work. Bounded execution failures retain their escalation policy. Integration conflicts and failed gates preserve the worktree and evidence. Write scopes are orchestration/acceptance contracts; full access is not an OS sandbox.
|
|
80
181
|
|
|
182
|
+
### Shared-checkout batches
|
|
183
|
+
|
|
184
|
+
When a batch shares one checkout, all executor calls finish before L1 and independent Review validate the complete combined candidate. Changes are projected onto declared scopes; undeclared and forbidden paths still fail. This does not attribute filesystem writes to individual processes. Repairs invalidate earlier proofs. Only after every peer passes can code be committed and all completions published in one state CAS; failed publication never optimistically completes a subset. Mixed batches deliver the shared checkout first, then revalidate and integrate external Worktrees. Manual integration/final checks cannot bypass the batch barrier; resume the complete workflow. The canvas shows the cohort and previous error.
|
|
185
|
+
|
|
81
186
|
## Controlled Provider session interaction
|
|
82
187
|
|
|
83
188
|
Read latest response opens the exact digest-bound receipt, not an invented native history path or a claim of complete provider history.
|
|
@@ -93,13 +198,23 @@ Each terminal line is a prompt. `/history` reads the latest response; `/reconcil
|
|
|
93
198
|
|
|
94
199
|
Returning runs L1, applicable Quick gates and independent Review. Human text is not a passing verdict. Candidate-bound human-takeover evidence allows normal subsequent delivery. Release does not claim verification and cannot bypass unknown effects or cleanup. Milestone sessions currently expose read-only responses; interactive handoff is packet-scoped.
|
|
95
200
|
|
|
96
|
-
|
|
201
|
+
This return path requires an existing eligible managed session. It does not import
|
|
202
|
+
an arbitrary patch prepared before the task, and running Verify followed by Review
|
|
203
|
+
does not create that provenance. A general existing-candidate admission interface
|
|
204
|
+
remains separate work.
|
|
205
|
+
|
|
206
|
+
The engine accepts session ledger storage versions 1, 2 and 3. Human handoff
|
|
207
|
+
requires at least v2; the first runtime prewarm records v3 so older engines reject
|
|
208
|
+
cleanup responsibilities they cannot interpret. Later handoffs retain v3.
|
|
209
|
+
Session policy-version remains 1; worker/lifecycle versions are independent.
|
|
210
|
+
[Recovery](session-recovery.md#dsh-runtime-preparation-after-a-restart) explains the
|
|
211
|
+
original cleanup receipt required after an interrupted preparation.
|
|
97
212
|
|
|
98
213
|
## Discovery and comparison
|
|
99
214
|
|
|
100
|
-
CLI and desktop starts register run IDs. A conversation retains multiple confirmed task associations. The index lives in runs
|
|
215
|
+
CLI and desktop starts register run IDs. A conversation retains multiple confirmed task associations. The index lives in `runs/` beside the global configuration, optionally overridden by absolute `FLYWHEEL_RUNS_DIR`. It shows the latest 100 registrations and never scans the disk. Query Go again for liveness.
|
|
101
216
|
|
|
102
|
-
Run history uses a selection list with adjacent details for operation kind, branch, HEAD, contract/configuration conditions, elapsed time and newly observed attempts, failures and deliveries. Selecting a record does not launch it; opening its canvas refreshes current Go state. Metrics scope chooses the selected run or all calls for its task, including legacy observations. The reference compares conditions without changing the metrics target. Invocation/receipt reconciliation precedes aggregation; late receipts keep their original attribution and are not double-billed. A group with entirely missing cost shows Not reported, not $0.
|
|
217
|
+
Run history is limited to the currently associated task and uses a selection list with adjacent details for operation kind, branch, HEAD, contract/configuration conditions, elapsed time and newly observed attempts, failures and deliveries. Selecting a record does not launch it; opening its canvas refreshes current Go state. Metrics scope chooses the selected run or all calls for its task, including legacy observations. The reference compares conditions without changing the metrics target. Invocation/receipt reconciliation precedes aggregation; late receipts keep their original attribution and are not double-billed. A group with entirely missing cost shows Not reported, not $0.
|
|
103
218
|
|
|
104
219
|
Usage, cost and duration are known amounts, with missing/partial observations retained. Costs may include estimates from configured prices. Call failure rate is not code quality. Different conditions permit descriptive comparison only; quality conclusions require acceptance evidence and an independent oracle.
|
|
105
220
|
|
|
@@ -113,6 +228,9 @@ Merge rechecks the PR, head, base and checks, using `--match-head-commit`. It ne
|
|
|
113
228
|
|
|
114
229
|
Retries reconcile existing PR/merge results before mutations. Missing receipts remain unknown. Remote state is separate from local engine completion. Publication must bind the actual merge commit and artifacts for its own validation; Merge does not automatically publish npm packages or deploy.
|
|
115
230
|
|
|
116
|
-
|
|
231
|
+
## Related guides
|
|
117
232
|
|
|
118
|
-
|
|
233
|
+
- [Configuration](configuration.md): complete files, model bindings, permissions, and scheduling.
|
|
234
|
+
- [Workflow](workflow.md): preparation, execution, and PR review checkpoints.
|
|
235
|
+
- [Investigation](investigation.md): bounded evidence collection, reports, and optional JEV decisions.
|
|
236
|
+
- [Recovery](session-recovery.md): durable receipts and unresolved invocation handling.
|