@ckanner/flywheel 0.31.1 → 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 +74 -0
- package/docs/README.md +5 -3
- package/docs/README.zh-CN.md +2 -2
- package/docs/design.md +166 -35
- package/docs/en/configuration.md +106 -11
- package/docs/en/contributing.md +1 -1
- package/docs/en/flow-console.md +88 -24
- package/docs/en/investigation.md +127 -83
- package/docs/en/jev-shadow.md +3 -65
- package/docs/en/jev.md +240 -0
- package/docs/en/model-policy.md +7 -0
- package/docs/en/session-recovery.md +39 -0
- package/docs/en/workflow.md +20 -1
- 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 +3 -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 +10 -0
- package/docs/validation/evidence/2026-11-13-p5-npm-candidate.json +54 -0
- package/docs/zh-CN/configuration.md +79 -8
- package/docs/zh-CN/contributing.md +1 -1
- package/docs/zh-CN/flow-console.md +73 -22
- package/docs/zh-CN/investigation.md +91 -60
- package/docs/zh-CN/jev-shadow.md +3 -77
- package/docs/zh-CN/jev.md +192 -0
- package/docs/zh-CN/model-policy.md +5 -0
- package/docs/zh-CN/session-recovery.md +29 -0
- package/docs/zh-CN/workflow.md +15 -1
- package/package.json +7 -7
package/docs/en/configuration.md
CHANGED
|
@@ -196,13 +196,17 @@ An existing complete file without `scheduler` normalizes to **serial**, and an
|
|
|
196
196
|
explicit serial choice remains unchanged. Installing a new release does not replace
|
|
197
197
|
that file. The [scheduler schema](https://github.com/ckanner/flywheel/blob/main/templates/scheduler-policy.schema.json)
|
|
198
198
|
bounds total and per-channel concurrency from 1 to 8.
|
|
199
|
+
Both new and existing configurations default to `dispatch: "batch"` and
|
|
200
|
+
`prewarm: false`. These settings do not change the Quick/Full workflow or enable JEV.
|
|
199
201
|
|
|
200
202
|
```json
|
|
201
203
|
{
|
|
202
204
|
"scheduler": {
|
|
203
205
|
"mode": "parallel",
|
|
204
206
|
"max-parallel": 2,
|
|
205
|
-
"providers": {"deepseek-account": 1}
|
|
207
|
+
"providers": {"deepseek-account": 1},
|
|
208
|
+
"dispatch": "batch",
|
|
209
|
+
"prewarm": false
|
|
206
210
|
},
|
|
207
211
|
"worktree": {"enabled": true}
|
|
208
212
|
}
|
|
@@ -239,6 +243,74 @@ backends that cannot separate a `workspace-write` sandbox root reject unsupporte
|
|
|
239
243
|
split-directory requests before dispatch, without expanding permissions. See the
|
|
240
244
|
[console guide](flow-console.md#parallel-execution) for registration and batch rules.
|
|
241
245
|
|
|
246
|
+
### Ready queues and runtime preparation
|
|
247
|
+
|
|
248
|
+
`scheduler.dispatch` accepts `batch` or `ready-queue`. Batch dispatch waits for the
|
|
249
|
+
current bounded group before selecting more work. Ready queues admit the next
|
|
250
|
+
already independent packet when an Execute/L1 slot becomes free. They apply to
|
|
251
|
+
Full with parallel scheduling, a maximum above one, and automatic Worktree
|
|
252
|
+
management. Quick, serial scheduling, a maximum of one, and automatic management
|
|
253
|
+
off retain their existing path. Shared-checkout execution retains its batch rules,
|
|
254
|
+
including when executors may register external Worktrees later.
|
|
255
|
+
|
|
256
|
+
The first ready-queue window must have every Worktree prepared and saved before
|
|
257
|
+
dispatch. Later packets prepare their directory before taking a freed slot. A
|
|
258
|
+
preparation failure stops admission and cancels and awaits started workers; queued
|
|
259
|
+
packets that have not been admitted create no directory or model invocation.
|
|
260
|
+
Dependencies become ready only after delivery. Review, replanning and integration
|
|
261
|
+
wait for all admitted workers to settle, and every combined candidate is rechecked.
|
|
262
|
+
Existing total/channel limits, hard budgets, attempts and unknown-result recovery
|
|
263
|
+
remain in force.
|
|
264
|
+
|
|
265
|
+
A replacement packet does not recover or cancel a sibling's still-running model
|
|
266
|
+
call. The coordinator retains those calls and their shared accounting. An unknown
|
|
267
|
+
result or failed receipt persistence stops new admission immediately and must be
|
|
268
|
+
reconciled before resuming.
|
|
269
|
+
|
|
270
|
+
`--pause-before review` also applies to independent parallel Worktrees. Once all
|
|
271
|
+
Execute/L1 work in the current group passes and its workers settle, the task pauses
|
|
272
|
+
before any Review or integration, retaining the verified candidates. Batch mode
|
|
273
|
+
finishes its admitted group; ready-queue mode may refill the fixed independent
|
|
274
|
+
queue before reaching that boundary. Resuming the same task reuses valid execution
|
|
275
|
+
evidence instead of repeating Execute. A candidate changed by later integration
|
|
276
|
+
still requires validation again.
|
|
277
|
+
|
|
278
|
+
`scheduler.prewarm: true` allows a serial packet to initialize one DSH Review
|
|
279
|
+
runtime while its post-Execute deterministic checks run. Initialization sends no
|
|
280
|
+
model prompt or Session request. Review inference still waits for its checks and
|
|
281
|
+
normal admission. Parallel Execute/L1 lanes do not prepare runtimes: after their
|
|
282
|
+
barrier, preparation can begin only in the serial Review path. Shared-candidate
|
|
283
|
+
batches do not prewarm. The main overlap opportunity is therefore a serial
|
|
284
|
+
Execute's L1 and applicable Quick checks, not every parallel lane's validation.
|
|
285
|
+
|
|
286
|
+
Unused or incompatible runtimes must finish bounded cleanup before further model
|
|
287
|
+
work. If an unused runtime reaches its 60-second lifetime before a formal start
|
|
288
|
+
is attempted, one cold invocation may use the same persisted request identity and
|
|
289
|
+
remaining time allowance. This requires an exact, durable no-dispatch receipt,
|
|
290
|
+
confirmed SDK and process-group cleanup, and no cancellation or expired invocation
|
|
291
|
+
deadline. It does not grant another attempt or reset a budget. Unknown cleanup
|
|
292
|
+
remains blocking. Other harnesses start normally. Session history reuse is separate
|
|
293
|
+
from runtime preparation and retains role isolation.
|
|
294
|
+
|
|
295
|
+
Confirmed initialization failures preserve their reported error classification and
|
|
296
|
+
the normal retry/fallback rules. An authentication or invalid-request failure does
|
|
297
|
+
not become a transport retry or qualify as a harmless prepared-runtime expiration.
|
|
298
|
+
|
|
299
|
+
In Settings → Execution, dispatch is a Batch/Ready queue selector and prewarm is
|
|
300
|
+
an independent switch. The form shows unmet Ready queue configuration conditions
|
|
301
|
+
without resetting the selected value; task eligibility is checked by the engine.
|
|
302
|
+
Both options also remain available in advanced JSON. Saving
|
|
303
|
+
applies to the next start; the current process retains its loaded policy. A resumed
|
|
304
|
+
run still reconciles existing invocations and shared batches before new dispatch.
|
|
305
|
+
An outstanding prepared worker also requires its original no-prompt cleanup
|
|
306
|
+
receipt, synchronized file and directory, and confirmed worker/process-group exit,
|
|
307
|
+
even after `prewarm` is disabled; see
|
|
308
|
+
[prewarm recovery](session-recovery.md#dsh-runtime-preparation-after-a-restart).
|
|
309
|
+
Both optimizations remain optional while live latency, resource use and adoption
|
|
310
|
+
defaults are evaluated separately. Offline checks establish behavior and recovery,
|
|
311
|
+
not a guaranteed speed or token improvement. See the
|
|
312
|
+
[P5 implementation plan](../plans/2026-11-13-p5-ready-queue-prewarm.md) (Chinese).
|
|
313
|
+
|
|
242
314
|
## Session policy, history reuse, and invocation safety
|
|
243
315
|
|
|
244
316
|
```json
|
|
@@ -384,6 +456,12 @@ dispatch; `state.packets[*].execution-policy.history` records separate
|
|
|
384
456
|
`quality-upgrade` and `channel-fallback` events with full before/after bindings,
|
|
385
457
|
attempt and reason. Parallel packets retain independent records.
|
|
386
458
|
|
|
459
|
+
With `jev.enabled`, confirmed failures can also select a legal binding through
|
|
460
|
+
JEV. These switches are recorded as `jev-model-selection`, use the same
|
|
461
|
+
`max-switches` and cold-start rules, and do not alter channel-error handling.
|
|
462
|
+
The allowed bindings remain an explicit resource/permission declaration; the
|
|
463
|
+
JEV switch does not add a provider, account or model to that set.
|
|
464
|
+
|
|
387
465
|
`config inspect --json` exposes the complete declaration under
|
|
388
466
|
`execution-policy`; the ordinary bindings table remains the configured baseline.
|
|
389
467
|
Current choices belong to packet/session state. Doctor's existing binding probes
|
|
@@ -532,16 +610,33 @@ Codex Pro checks actually import the public API and verify exact version 0.9.0/p
|
|
|
532
610
|
No probe sends an inference prompt, runs L1/L2/L3, creates a worktree, or writes Flywheel task state. SDK initialization may contact a provider's catalog and write its own cache files and temporary probe-session persistence; read-only here is scoped to Flywheel state and configuration. Recheck in the desktop panel because its PATH/profile/environment may differ from the terminal.
|
|
533
611
|
|
|
534
612
|
|
|
535
|
-
##
|
|
536
|
-
|
|
537
|
-
`jev
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
613
|
+
## JEV decisions
|
|
614
|
+
|
|
615
|
+
`jev.enabled` is the only JEV activation setting and defaults to false. The desktop
|
|
616
|
+
editor exposes one switch; enabled investigation preparations automatically freeze
|
|
617
|
+
an adoption policy for action selection, evidence-backed deferral and early report
|
|
618
|
+
handoff. Confirmed implementation failures can also select bounded repair, an
|
|
619
|
+
approved feedback check, replanning or an allowed execution binding. Task/New/Run
|
|
620
|
+
share the same engine-owned policy. Disabling stops subsequent
|
|
621
|
+
requests and adoption, while existing receipts and budgets are retained.
|
|
622
|
+
|
|
623
|
+
There is no independent task shadow/advisory switch. Legacy `jev-shadow` is read
|
|
624
|
+
only to migrate connection hints into a disabled unified configuration; editor saves
|
|
625
|
+
remove the old key. Explicit new `jev` wins, and configuration still selects one
|
|
626
|
+
complete task/project/global/embedded file without merging. Endpoint, fixed model,
|
|
627
|
+
credential variable, limits, data categories and recovery are documented in the
|
|
628
|
+
[JEV guide](jev.md).
|
|
629
|
+
|
|
630
|
+
Packets may declare up to eight optional `feedback-checks`, using the same
|
|
631
|
+
`cmd`/`script` and `expect` shape as an acceptance command. They are short,
|
|
632
|
+
approved diagnostic candidates, not replacements for `acceptance.L1/L2/L3`.
|
|
633
|
+
Add a concise `purpose` (up to 160 characters) explaining what each check can
|
|
634
|
+
distinguish. JEV receives that approved purpose, not the command. A check without
|
|
635
|
+
`purpose` remains executor guidance and is excluded from JEV's targeted candidates.
|
|
636
|
+
Keep credentials, raw logs and command text out of the purpose. JEV may also use
|
|
637
|
+
an eligible previously failed L1 check. Execution uses the existing
|
|
638
|
+
verification timeout, environment allowlist and process cleanup rules. Changing
|
|
639
|
+
these checks changes the contract identity and invalidates stale decisions.
|
|
545
640
|
|
|
546
641
|
## Reference files
|
|
547
642
|
|
package/docs/en/contributing.md
CHANGED
|
@@ -196,7 +196,7 @@ contract rules.
|
|
|
196
196
|
| Scheduling, worktrees, execution locations, or delivery | `workflow.md`, `configuration.md`, `flow-console.md`, design sections, and affected skills |
|
|
197
197
|
| Session reuse, recovery, handoff, or accounting | `session-recovery.md`, configuration/workflow/console sections, design, and affected worker contracts |
|
|
198
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
|
|
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
200
|
| Package layout, licenses, or release behavior | `releasing.md`, relevant installation instructions, manifests/lockfiles, packaged links, and applicable license/provenance notices |
|
|
201
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
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 |
|
package/docs/en/flow-console.md
CHANGED
|
@@ -2,17 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
[Documentation](../README.md) · English · [简体中文](../zh-CN/flow-console.md)
|
|
4
4
|
|
|
5
|
-
The DSH Flywheel view brings task
|
|
5
|
+
The DSH Flywheel view brings the current task, workflow stages, configuration, session
|
|
6
6
|
interaction, and delivery into one place. Keep the CLI, platform packages, and DSH
|
|
7
7
|
plugin at the same version. For installation, see [Getting started](getting-started.md).
|
|
8
8
|
|
|
9
9
|
## Find a task without entering paths
|
|
10
10
|
|
|
11
|
-
The
|
|
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.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
There are no editable task/project path fields. The project workspace remains the original repository; the execution directory may be a task checkout or independent Worktree. These locations are displayed separately when known. The task folder contains the specification, acceptance checks and progress. A prepared task can be associated using read-only status and then selected from the list.
|
|
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.
|
|
16
14
|
|
|
17
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.
|
|
18
16
|
|
|
@@ -21,25 +19,24 @@ Loading a skill does not start the engine. `flywheel-task` prepares the appropri
|
|
|
21
19
|
| Conversation entry | Does it start the engine? | How the UI finds the task |
|
|
22
20
|
|---|---|---|
|
|
23
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 |
|
|
24
|
-
| `/flywheel-run <task directory>` | Starts or resumes an existing task | Start and query the original task path to associate it with the conversation;
|
|
25
|
-
| `/flywheel-task <goal>` | Prepares, then starts |
|
|
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 |
|
|
26
24
|
|
|
27
25
|
`new → run` and `task` use the same engine; the canvas is not exclusive to one
|
|
28
26
|
skill. Writing task files alone does not register a view, and a failed association
|
|
29
27
|
query must not be replaced with launch merely to populate the canvas. Report an
|
|
30
|
-
unavailable association tool explicitly.
|
|
31
|
-
terminal remain selectable under Recent tasks on this computer.
|
|
28
|
+
unavailable association tool explicitly. Standalone terminal tasks without a host ID require an explicit association in the intended conversation.
|
|
32
29
|
|
|
33
30
|
While the canvas is visible, registered-task discovery refreshes every five seconds.
|
|
34
31
|
An observed running task refreshes status every two seconds, backing off to ten
|
|
35
32
|
seconds after an unsuccessful response. Hidden documents skip those requests.
|
|
36
|
-
Refresh
|
|
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.
|
|
37
34
|
|
|
38
35
|
## This stage versus the full workflow
|
|
39
36
|
|
|
40
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.
|
|
41
38
|
|
|
42
|
-
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.
|
|
43
40
|
|
|
44
41
|
## Investigation before implementation
|
|
45
42
|
|
|
@@ -60,33 +57,73 @@ for the supported read/search actions, command protocol, and handoff requirement
|
|
|
60
57
|
|
|
61
58
|
## Configuration
|
|
62
59
|
|
|
63
|
-
In an existing DSH conversation view, Flywheel remains after Statistics; the blank new-session landing page does not yet show these conversation views. Its navigation
|
|
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.
|
|
64
61
|
|
|
65
|
-
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.
|
|
66
63
|
|
|
67
|
-
|
|
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.
|
|
68
65
|
|
|
69
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.
|
|
70
67
|
|
|
71
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.
|
|
72
69
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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.
|
|
77
114
|
|
|
78
115
|
## Canvas and operations
|
|
79
116
|
|
|
80
|
-
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.
|
|
81
118
|
|
|
82
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.
|
|
83
120
|
|
|
84
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.
|
|
85
122
|
|
|
86
|
-
|
|
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.
|
|
87
124
|
|
|
88
125
|
- Run stage submits the observed revision for lease-bound admission.
|
|
89
|
-
-
|
|
126
|
+
- Repair and retry records the explicit console action and adds one Execute/L1 attempt without resetting failures or billing.
|
|
90
127
|
- Reopening a completed packet archives old evidence and invalidates downstream acceptance.
|
|
91
128
|
- Git delivery requires current L1 and independent Review evidence.
|
|
92
129
|
- Final acceptance runs milestone gates and Judge without starting Plan or unfinished execution units.
|
|
@@ -102,7 +139,7 @@ Explicitly independent packets with satisfied dependencies can be run ahead in t
|
|
|
102
139
|
Read `flywheel template scheduler-policy.schema.json` for the current fields and bounds. For example:
|
|
103
140
|
|
|
104
141
|
```json
|
|
105
|
-
{"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}}
|
|
106
143
|
```
|
|
107
144
|
|
|
108
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:
|
|
@@ -115,6 +152,23 @@ schedule:
|
|
|
115
152
|
|
|
116
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.
|
|
117
154
|
|
|
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
|
+
|
|
118
172
|
### Execution directories
|
|
119
173
|
|
|
120
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.
|
|
@@ -144,13 +198,23 @@ Each terminal line is a prompt. `/history` reads the latest response; `/reconcil
|
|
|
144
198
|
|
|
145
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.
|
|
146
200
|
|
|
147
|
-
|
|
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.
|
|
148
212
|
|
|
149
213
|
## Discovery and comparison
|
|
150
214
|
|
|
151
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.
|
|
152
216
|
|
|
153
|
-
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.
|
|
154
218
|
|
|
155
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.
|
|
156
220
|
|