opencode-plugin-flow 6.5.0 → 6.7.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 CHANGED
@@ -6,6 +6,83 @@ One short entry per release, written for users deciding whether to upgrade.
6
6
 
7
7
  No changes yet.
8
8
 
9
+ ## [6.7.0] - 2026-07-23
10
+
11
+ Bounded auto-continuation lore keeps user-authorized goals moving while making
12
+ checkpoints, retries, and validation freshness explicit:
13
+
14
+ - `/flow-auto` now treats ready features and completed sessions as mechanical
15
+ loop states, so authorized work continues without an intermediate “ready for
16
+ the next feature” handoff. Its host lease starts from a provisional compact
17
+ baseline and auto-routes only after the initiating turn advances that same
18
+ Flow session; unchanged or replacement sessions fail closed, while
19
+ conversational plan approval remains resumable.
20
+ - Failed features are never selected implicitly while their latest relevant
21
+ reviewed outcome remains failed. Auto mode may continue untouched independent
22
+ work; when only retry-required candidates remain it waits for direction.
23
+ While a failed run is blocked, optional `nextFeatureId` makes its authorized
24
+ reset and exact next run atomic. Once that run is superseded and status is
25
+ ready, explicit `flow_run_start(featureId)` starts its authorized retry. This
26
+ adds no durable hold or retry ledger.
27
+ - Each feature now receives a before-edit evidence/environment preflight and
28
+ adversarial risk checklist. Manager policy withholds review while required
29
+ evidence is knowingly skipped, and reviewers treat missing proof as blocking;
30
+ no skipped-evidence state is persisted. Workers receive the checklist before
31
+ coding, and reviewers explicitly inspect adjacent/repeated transitions,
32
+ overlapping invariants, base diffs, and file modes.
33
+ - Stable source finding IDs remain traceable in immutable feature prose.
34
+ Active Flow work uses only the reserved worker and reviewer roles, while
35
+ precise missing-evidence review failures can request manager-run proof.
36
+ - Accepted validation markers expose their recorded revision as a concurrency
37
+ token, avoiding status reads made only to recover it. Only `passed: true` may
38
+ feed review while all runtime gates hold; failed, incomplete, and
39
+ source-drifted observations may use the token only for fresh validation. A
40
+ drifted marker reports `passed: false` plus its explicit ineligibility reason.
41
+ New review admission requires its current-source pass to be newer than the
42
+ latest relevant failure or drift; accepted reviews remain grandfathered.
43
+ - Status workflow data now includes a small non-authoritative timer for the
44
+ latest `/flow-auto` in the current plugin process. Active milliseconds are
45
+ coordinator-classified wall time, not CPU or pure coding time; user-wait
46
+ milliseconds cover only projected plan-approval and
47
+ `await-user-direction` checkpoints. Paused, inactive, errored, and
48
+ unprojected waits are excluded, and reload resets the timer.
49
+
50
+ Install or update:
51
+
52
+ ```bash
53
+ opencode plugin opencode-plugin-flow@6.7.0 --global --force
54
+ ```
55
+
56
+ ## [6.6.0] - 2026-07-22
57
+
58
+ Projection-guided recovery lore makes Flow's next step easier to understand
59
+ without adding persisted diagnostics or more orchestration:
60
+
61
+ - `/flow-run` now follows one ordered compact-status route, handles idle and
62
+ planning entry explicitly, and refreshes execution state before dispatching a
63
+ recovered reviewer assignment so stale work is reset rather than redispatched.
64
+ - Status failures report the exact summary and optional recovery guidance.
65
+ Post-review uncertainty no longer incorrectly claims that no lifecycle
66
+ mutation occurred.
67
+ - Blocked-review handoffs now explain attempts, recurring and new findings,
68
+ validation evidence, Flow-reported artifacts, completed and untouched work,
69
+ the exact next action, and whether another repair attempt needs authorization.
70
+ `/flow-status` obtains that evidence through one detail read.
71
+ - Typed status, execution, reviewer, detail, delivery, operation, and close
72
+ recovery projections replace broad record casts. Accepted archive retry,
73
+ accepted manual recovery, unconfirmed replay, and archive lookup collision
74
+ remain distinct without changing Session v5 or persisted state.
75
+ - OpenCode tool serialization preserves those specialized response types while
76
+ requiring every handler to return the Flow response envelope. Expanded prompt,
77
+ runtime, close-recovery, and integration tests cover the contracts; the
78
+ failed-review retry boundary and bounded worker waves remain unchanged.
79
+
80
+ Install or update:
81
+
82
+ ```bash
83
+ opencode plugin opencode-plugin-flow@6.6.0 --global --force
84
+ ```
85
+
9
86
  ## [6.5.0] - 2026-07-22
10
87
 
11
88
  Convergence-safe recovery lore makes long Flow sessions easier to trust
package/README.md CHANGED
@@ -21,11 +21,11 @@ into the active goal.
21
21
  Install the exact npm release through OpenCode:
22
22
 
23
23
  ```bash
24
- opencode plugin opencode-plugin-flow@6.5.0 --global --force
24
+ opencode plugin opencode-plugin-flow@6.7.0 --global --force
25
25
  ```
26
26
 
27
27
  Omit `--global` for project scope. Exact version pins do not update
28
- automatically. To update, replace `6.5.0` with the new release and rerun the
28
+ automatically. To update, replace `6.7.0` with the new release and rerun the
29
29
  command.
30
30
 
31
31
  Before upgrading from Flow v5 or earlier, finish or explicitly close any active
@@ -43,7 +43,7 @@ The equivalent manual project configuration is:
43
43
  ```json
44
44
  {
45
45
  "$schema": "https://opencode.ai/config.json",
46
- "plugin": ["opencode-plugin-flow@6.5.0"]
46
+ "plugin": ["opencode-plugin-flow@6.7.0"]
47
47
  }
48
48
  ```
49
49
 
@@ -64,7 +64,10 @@ Start a complete workflow:
64
64
  Flow inspects the worktree, proposes a feature plan, and asks for approval
65
65
  unless your request already authorized implementation. It then runs one
66
66
  runnable feature at a time, validates the actual workspace, obtains an
67
- independent review, and repeats until it can close the session.
67
+ independent review, and repeats until it can close the session. While
68
+ implementation remains authorized, `ready` and `completed` are internal loop
69
+ states: `/flow-auto` does not hand back “ready for the next feature” or wait for
70
+ another command between passing features.
68
71
 
69
72
  Before every manager-owned Flow mutation, including direct `/flow-plan` and
70
73
  `/flow-run` use, the manager compares the current request with the active goal.
@@ -76,13 +79,34 @@ continue, defer, or abandon the active work. If that work is completed but not
76
79
  closed, Flow closes it as completed before starting the new request.
77
80
 
78
81
  Existing implementation authority carries across approval and feature outcomes.
79
- Only the first in-scope failed review automatically resets for one fresh full
80
- retry; a `[scope-blocker]` checkpoints immediately. A second failed review
81
- projects `await-user-direction`, so Flow reports the blocker and waits for
82
- explicit direction before one additional attempt. The active session remains
83
- authoritative while it waits. Ordinary blocking findings are in-scope by
84
- default; a reviewer uses `[scope-blocker]` only when the required repair would
85
- materially exceed the approved plan.
82
+ Only the first in-scope failed review may automatically reset and atomically
83
+ start one fresh full retry; a `[scope-blocker]` checkpoints immediately. A
84
+ feature whose latest relevant reviewed outcome remains failed is never selected
85
+ implicitly. `/flow-auto` may continue untouched, dependency-independent
86
+ features, but when only retry-required candidates remain it projects
87
+ `await-user-direction`. Flow then reports the blocker and waits for an explicit
88
+ retry or independent-feature choice. While the failed run is still blocked, the
89
+ chosen feature is attached to `flow_feature_reset` as `nextFeatureId`, so reset
90
+ and the next run are one operation. If independent work later finishes and only
91
+ the superseded failed feature remains, status is ready with
92
+ `await-user-direction`; explicit retry then uses `flow_run_start` with that
93
+ feature's exact `featureId`, because there is no blocked run left to reset. The
94
+ active session remains authoritative while it waits. Ordinary blocking findings
95
+ are in-scope by default; a reviewer uses `[scope-blocker]` only when the required
96
+ repair would materially exceed the approved plan.
97
+
98
+ Before coding each feature, Flow inventories required evidence and its
99
+ environment, then applies an adversarial risk checklist covering failure
100
+ ordering, repeated and interrupted operations, adjacent state transitions,
101
+ overlapping invariants, and relevant file-mode or platform risks. While required
102
+ behavior or environment evidence is knowingly skipped, manager policy forbids
103
+ requesting review; the reviewer treats missing proof as blocking if the gap
104
+ reaches its packet. Flow persists no skipped-evidence ledger. Asking the user
105
+ remains the default when external evidence or authority is missing. At a blocked
106
+ checkpoint, atomic reset-and-start can discard that attempt and continue the
107
+ exact authorized retry or dependency-independent feature. At a ready retry
108
+ checkpoint, explicit feature start resumes the already superseded failure.
109
+ Neither route adds a hold or second blocker ledger.
86
110
 
87
111
  For plan-only or advanced use, plan first:
88
112
 
@@ -97,24 +121,42 @@ Repeating a same-goal plan-only request after approval reports the immutable pla
97
121
  and current progress, then stops without rewriting the plan or starting work.
98
122
 
99
123
  `/flow-run` and `/flow-status` are advanced/recovery controls. At any point,
100
- `/flow-status` reports the durable state and next action.
124
+ `/flow-status` reports the durable state and next action. After `/flow-auto` has
125
+ run in the current plugin process, status also reports a non-authoritative timer
126
+ for the latest invocation. `activeMs` is process-local wall time classified as
127
+ active by the coordinator, not CPU time or pure coding time.
128
+ `waitingForUserMs` counts only projected `flow_plan_approve` and
129
+ `await-user-direction` checkpoints. Plugin restart resets the timer; paused,
130
+ inactive, errored, and unprojected waits are excluded.
101
131
 
102
132
  ## How Flow works
103
133
 
104
134
  1. Planning saves a small feature DAG. Approval locks it.
105
135
  2. `/flow-run` starts one feature whose dependencies are complete.
106
- 3. The manager implements it serially or integrates an optional bounded worker
136
+ 3. Before editing, the manager preflights required evidence and gives any
137
+ bounded workers an explicit adversarial acceptance and risk checklist.
138
+ 4. The manager implements it serially or integrates an optional bounded worker
107
139
  wave.
108
- 4. Flow observes the exact armed validation command against the current
140
+ 5. Flow observes the exact armed validation command against the current
109
141
  workspace, then creates one independent review assignment. At new review
110
- admission, a known-failed exact planned gate needs a current-source pass;
111
- already accepted Session v5 pending or completed reviews are not reopened or
112
- vetoed later at close.
113
- 5. A passing feature advances the plan. A blocked feature is reset as a fresh
114
- full attempt within the retry boundary above. The final passing feature
115
- allows explicit closure. Every accepted close returns a concise delivery
116
- summary with each feature's attempt count, latest outcome, and terminal
117
- findings, derived from Flow's recorded state.
142
+ admission, a relevant failure or source-drift observation invalidates older
143
+ passes; the qualifying pass must be newer and match current source. Separately,
144
+ the manager must not call `flow_review_start` while known required behavior or
145
+ environment evidence is skipped; this is workflow policy, not persisted
146
+ admission state. Already accepted Session v5 pending or completed reviews are
147
+ not reopened or vetoed later at close.
148
+ 6. The reviewer inspects adjacent and repeated state transitions, overlapping
149
+ feature invariants, the changed artifacts, and the packet's base-diff and
150
+ file-mode inventory. Missing proof is recorded as a precise blocking
151
+ evidence request.
152
+ 7. A passing feature advances the plan. A failed feature is not selected again
153
+ by default. From blocked status, reset atomically starts the exact authorized
154
+ retry or independent feature through optional `nextFeatureId`. From ready
155
+ `await-user-direction`, the failed run is already superseded and explicit
156
+ `flow_run_start(featureId)` begins its retry. The final passing feature allows
157
+ explicit closure. Every accepted close returns a concise delivery summary
158
+ with each feature's attempt count, latest outcome, and terminal findings,
159
+ derived from Flow's recorded state.
118
160
 
119
161
  State lives in `.flow/session.json`, so `/flow-status` can recover the next
120
162
  action after a restart or context change.
@@ -128,6 +170,9 @@ targeted follow-up wave may address a concrete gap. Once implementation is
128
170
  authorized, a qualifying wave needs no separate approval.
129
171
 
130
172
  Workers cannot delegate, call Flow lifecycle tools, or approve their own work.
173
+ Generic or general-purpose agents are not used for active Flow work: bounded
174
+ implementation uses `flow-worker`, and independent review uses
175
+ `flow-reviewer`.
131
176
  Flow persists no wave state: the manager remains responsible for the combined
132
177
  diff, authoritative validation, and the one independent review. Small or
133
178
  integration-heavy tasks stay serial.
@@ -136,7 +181,7 @@ integration-heavy tasks stay serial.
136
181
 
137
182
  | Command | Purpose |
138
183
  | --- | --- |
139
- | `/flow-auto <goal>` | Normal end-to-end driver for the authorized lifecycle; stop after planning if implementation was not authorized. |
184
+ | `/flow-auto <goal>` | Normal end-to-end driver; it stops after planning without implementation authority, otherwise loops through every runnable feature and closure without an intermediate handoff. |
140
185
  | `/flow-plan <goal>` | Plan-only/advanced creation, revision, and approval. |
141
186
  | `/flow-run` | Advanced/recovery execution of one approved feature. |
142
187
  | `/flow-review` | Internal/recovery dispatch for a runtime-created reviewer assignment. |
@@ -150,8 +195,13 @@ plan-only, advanced, internal, or recovery controls.
150
195
  Start with `/flow-status`; its next action is durable default workflow
151
196
  direction, not permission to exceed the user's authority. For a first failed
152
197
  review, read detail once before reset because scope-blocker findings refine the
153
- compact default. Environment-sensitive transition guards remain authoritative
154
- when a mutation is attempted. Do not hand-edit
198
+ compact default. Pass the exact retry or dependency-independent choice as
199
+ `nextFeatureId` so reset and run start are atomic; do not reset and then rely on
200
+ default selection. If status is ready with `await-user-direction`, read detail
201
+ once and pass the explicitly authorized retry's exact `featureId` to
202
+ `flow_run_start`; reset is invalid because the failed run was already
203
+ superseded. Environment-sensitive transition guards remain authoritative when a
204
+ mutation is attempted. Do not hand-edit
155
205
  `.flow/session.json` to bypass a gate. If validation, review, locking,
156
206
  fingerprinting, or archive publication fails, follow the focused steps in
157
207
  [troubleshooting](docs/troubleshooting.md).