flow-workflows 0.94.0 → 0.94.1
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/adapters/codex/CORE.md +1 -1
- package/adapters/codex/skills/flow-work-run/SKILL.md +5 -3
- package/adapters/gemini/CORE.md +1 -1
- package/adapters/gemini/commands/flow/work/run.toml +5 -3
- package/adapters/hermes/CORE.md +1 -1
- package/adapters/hermes/skills/flow-work-run/SKILL.md +5 -3
- package/adapters/opencode/CORE.md +1 -1
- package/adapters/opencode/commands/flow-work-run.md +5 -3
- package/package.json +1 -1
- package/plugins/flow/.claude-plugin/plugin.json +1 -1
- package/plugins/flow/CHANGELOG.md +15 -0
package/adapters/codex/CORE.md
CHANGED
|
@@ -17,7 +17,7 @@ Every `$flow-*` command assumes these rules. They are stated once, here, so a co
|
|
|
17
17
|
carries what is specific to its phase. Read this once per session; a command that says "load
|
|
18
18
|
`flow-core`" means this file.
|
|
19
19
|
|
|
20
|
-
**This file belongs to flow `0.94.
|
|
20
|
+
**This file belongs to flow `0.94.1`.** Compare it once, at the start of the session, against
|
|
21
21
|
`version` in `~/.claude/flow/.claude-plugin/plugin.json`. The two differing means the session
|
|
22
22
|
is running a **mixture** — the commands from one copy of the plugin, these shared rules from another
|
|
23
23
|
— which is exactly what happens when a branch or a release candidate is loaded over an installed
|
|
@@ -96,9 +96,11 @@ switch" case included, and only while no build or fix has begun (neither `05-imp
|
|
|
96
96
|
that is where it lives. A study writes no code, so its branch still sits where the base was when the
|
|
97
97
|
study began; an approval that waited for the tickets the study depends on (`meta.json.ticket_deps`)
|
|
98
98
|
would otherwise build on a base that lacks them. `<base>` = `meta.json.base`, empty →
|
|
99
|
-
`git.default_base`: `git fetch origin <base
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
`git.default_base`: `git fetch origin <base>` when a remote is configured (best-effort, as
|
|
100
|
+
`$flow-feat-build` does — a fetch the container cannot make is not an error: the orchestrator left
|
|
101
|
+
`origin/<base>` where the forge had it when it launched the run, and a container is given no git
|
|
102
|
+
credentials), then `<ref>` = `origin/<base>` when it resolves, the local `<base>` otherwise. Neither
|
|
103
|
+
resolves → `blocked`. `git merge-base --is-ancestor HEAD <ref>` and `HEAD` is not
|
|
102
104
|
`<ref>` → the branch holds no commit of its own and the base moved: `git merge --ff-only <ref>`, and
|
|
103
105
|
record `{ "key": "unattended:base-caught-up", "default": "<old short sha> → <new short sha> on
|
|
104
106
|
<base>", "phase": "run" }`. The fast-forward fails → `blocked`, its message as the reason. Not an
|
package/adapters/gemini/CORE.md
CHANGED
|
@@ -16,7 +16,7 @@ Every `/flow:*` command assumes these rules. They are stated once, here, so a co
|
|
|
16
16
|
carries what is specific to its phase. Read this once per session; a command that says "load
|
|
17
17
|
`flow-core`" means this file.
|
|
18
18
|
|
|
19
|
-
**This file belongs to flow `0.94.
|
|
19
|
+
**This file belongs to flow `0.94.1`.** Compare it once, at the start of the session, against
|
|
20
20
|
`version` in `~/.claude/flow/.claude-plugin/plugin.json`. The two differing means the session
|
|
21
21
|
is running a **mixture** — the commands from one copy of the plugin, these shared rules from another
|
|
22
22
|
— which is exactly what happens when a branch or a release candidate is loaded over an installed
|
|
@@ -92,9 +92,11 @@ switch" case included, and only while no build or fix has begun (neither `05-imp
|
|
|
92
92
|
that is where it lives. A study writes no code, so its branch still sits where the base was when the
|
|
93
93
|
study began; an approval that waited for the tickets the study depends on (`meta.json.ticket_deps`)
|
|
94
94
|
would otherwise build on a base that lacks them. `<base>` = `meta.json.base`, empty →
|
|
95
|
-
`git.default_base`: `git fetch origin <base
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
`git.default_base`: `git fetch origin <base>` when a remote is configured (best-effort, as
|
|
96
|
+
`/flow:feat:build` does — a fetch the container cannot make is not an error: the orchestrator left
|
|
97
|
+
`origin/<base>` where the forge had it when it launched the run, and a container is given no git
|
|
98
|
+
credentials), then `<ref>` = `origin/<base>` when it resolves, the local `<base>` otherwise. Neither
|
|
99
|
+
resolves → `blocked`. `git merge-base --is-ancestor HEAD <ref>` and `HEAD` is not
|
|
98
100
|
`<ref>` → the branch holds no commit of its own and the base moved: `git merge --ff-only <ref>`, and
|
|
99
101
|
record `{ "key": "unattended:base-caught-up", "default": "<old short sha> → <new short sha> on
|
|
100
102
|
<base>", "phase": "run" }`. The fast-forward fails → `blocked`, its message as the reason. Not an
|
package/adapters/hermes/CORE.md
CHANGED
|
@@ -17,7 +17,7 @@ Every `/flow-*` command assumes these rules. They are stated once, here, so a co
|
|
|
17
17
|
carries what is specific to its phase. Read this once per session; a command that says "load
|
|
18
18
|
`flow-core`" means this file.
|
|
19
19
|
|
|
20
|
-
**This file belongs to flow `0.94.
|
|
20
|
+
**This file belongs to flow `0.94.1`.** Compare it once, at the start of the session, against
|
|
21
21
|
`version` in `~/.claude/flow/.claude-plugin/plugin.json`. The two differing means the session
|
|
22
22
|
is running a **mixture** — the commands from one copy of the plugin, these shared rules from another
|
|
23
23
|
— which is exactly what happens when a branch or a release candidate is loaded over an installed
|
|
@@ -96,9 +96,11 @@ switch" case included, and only while no build or fix has begun (neither `05-imp
|
|
|
96
96
|
that is where it lives. A study writes no code, so its branch still sits where the base was when the
|
|
97
97
|
study began; an approval that waited for the tickets the study depends on (`meta.json.ticket_deps`)
|
|
98
98
|
would otherwise build on a base that lacks them. `<base>` = `meta.json.base`, empty →
|
|
99
|
-
`git.default_base`: `git fetch origin <base
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
`git.default_base`: `git fetch origin <base>` when a remote is configured (best-effort, as
|
|
100
|
+
`/flow-feat-build` does — a fetch the container cannot make is not an error: the orchestrator left
|
|
101
|
+
`origin/<base>` where the forge had it when it launched the run, and a container is given no git
|
|
102
|
+
credentials), then `<ref>` = `origin/<base>` when it resolves, the local `<base>` otherwise. Neither
|
|
103
|
+
resolves → `blocked`. `git merge-base --is-ancestor HEAD <ref>` and `HEAD` is not
|
|
102
104
|
`<ref>` → the branch holds no commit of its own and the base moved: `git merge --ff-only <ref>`, and
|
|
103
105
|
record `{ "key": "unattended:base-caught-up", "default": "<old short sha> → <new short sha> on
|
|
104
106
|
<base>", "phase": "run" }`. The fast-forward fails → `blocked`, its message as the reason. Not an
|
|
@@ -16,7 +16,7 @@ Every `/flow-*` command assumes these rules. They are stated once, here, so a co
|
|
|
16
16
|
carries what is specific to its phase. Read this once per session; a command that says "load
|
|
17
17
|
`flow-core`" means this file.
|
|
18
18
|
|
|
19
|
-
**This file belongs to flow `0.94.
|
|
19
|
+
**This file belongs to flow `0.94.1`.** Compare it once, at the start of the session, against
|
|
20
20
|
`version` in `~/.claude/flow/.claude-plugin/plugin.json`. The two differing means the session
|
|
21
21
|
is running a **mixture** — the commands from one copy of the plugin, these shared rules from another
|
|
22
22
|
— which is exactly what happens when a branch or a release candidate is loaded over an installed
|
|
@@ -94,9 +94,11 @@ switch" case included, and only while no build or fix has begun (neither `05-imp
|
|
|
94
94
|
that is where it lives. A study writes no code, so its branch still sits where the base was when the
|
|
95
95
|
study began; an approval that waited for the tickets the study depends on (`meta.json.ticket_deps`)
|
|
96
96
|
would otherwise build on a base that lacks them. `<base>` = `meta.json.base`, empty →
|
|
97
|
-
`git.default_base`: `git fetch origin <base
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
`git.default_base`: `git fetch origin <base>` when a remote is configured (best-effort, as
|
|
98
|
+
`/flow-feat-build` does — a fetch the container cannot make is not an error: the orchestrator left
|
|
99
|
+
`origin/<base>` where the forge had it when it launched the run, and a container is given no git
|
|
100
|
+
credentials), then `<ref>` = `origin/<base>` when it resolves, the local `<base>` otherwise. Neither
|
|
101
|
+
resolves → `blocked`. `git merge-base --is-ancestor HEAD <ref>` and `HEAD` is not
|
|
100
102
|
`<ref>` → the branch holds no commit of its own and the base moved: `git merge --ff-only <ref>`, and
|
|
101
103
|
record `{ "key": "unattended:base-caught-up", "default": "<old short sha> → <new short sha> on
|
|
102
104
|
<base>", "phase": "run" }`. The fast-forward fails → `blocked`, its message as the reason. Not an
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flow-workflows",
|
|
3
|
-
"version": "0.94.
|
|
3
|
+
"version": "0.94.1",
|
|
4
4
|
"description": "Guided feat/bug workflows (start→ship), post-deploy monitoring and multi-agent code review, stack-agnostic. Each repo uses a shared FLOW.md plus optional harness overlay.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "flow",
|
|
4
4
|
"displayName": "Flow — guided dev workflows",
|
|
5
5
|
"description": "Guided feat/bug workflows (start→ship), post-deploy monitoring and multi-agent code review, stack-agnostic. Each repo uses a shared FLOW.md plus optional harness overlay.",
|
|
6
|
-
"version": "0.94.
|
|
6
|
+
"version": "0.94.1",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Alberto Vioque",
|
|
9
9
|
"email": "mashware@gmail.com"
|
|
@@ -5,6 +5,21 @@ plugin and is what `/flow:news` reads to show you what changed since your previo
|
|
|
5
5
|
|
|
6
6
|
The canonical, richest notes live in the [GitHub Releases](https://github.com/mashware/flow-workflows/releases).
|
|
7
7
|
|
|
8
|
+
## v0.94.1 — An unattended start with a study no longer stops because the container cannot fetch · 2026-10-14
|
|
9
|
+
|
|
10
|
+
**In short**
|
|
11
|
+
- **`/flow:work:run` on `start` takes the base the orchestrator left** when `git fetch origin <base>`
|
|
12
|
+
fails, as `/flow:feat:build` already did. A container is given no git credentials, so that fetch
|
|
13
|
+
could never succeed there, and every handed-off study stopped as `blocked` before building.
|
|
14
|
+
- Nothing changes on a laptop or outside `unattended`: the fetch still runs first, and a fetch that
|
|
15
|
+
works still decides the base.
|
|
16
|
+
|
|
17
|
+
The catch-up of a study's branch with its base fetched `origin/<base>` and treated a failed fetch as
|
|
18
|
+
`blocked`, to avoid building on a stale ref. Under an orchestrator that ref is not stale: the
|
|
19
|
+
contract has it leave `origin/<base>` where the forge had it when the run was launched, and gives the
|
|
20
|
+
container no credentials to fetch with. The fetch is now best-effort; `origin/<base>` is used when it
|
|
21
|
+
resolves, the local `<base>` otherwise, and the run is `blocked` only when neither does.
|
|
22
|
+
|
|
8
23
|
## v0.94.0 — A repo commits the FLOW config for where flow runs, and whoever launches flow picks it · 2026-10-14
|
|
9
24
|
|
|
10
25
|
**In short**
|