Skip to content

Commit cec94af

Browse files
committed
chore(flow-next): bump version to 5.3.0
Claude-Session: https://claude.ai/code/session_01JFYv5JtK8HAsshpWRAT5YL
1 parent de3ac4f commit cec94af

8 files changed

Lines changed: 26 additions & 8 deletions

File tree

.agents/plugins/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"plugins": [
77
{
88
"name": "flow-next",
9-
"version": "5.2.2",
9+
"version": "5.3.0",
1010
"source": {
1111
"source": "local",
1212
"path": "./plugins/flow-next"

.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
},
77
"metadata": {
88
"description": "Plan-first workflows for Claude Code and Factory Droid. Ships flow-next: zero-dep, spec-driven, Ralph autonomous mode.",
9-
"version": "5.2.2"
9+
"version": "5.3.0"
1010
},
1111
"plugins": [
1212
{
1313
"name": "flow-next",
1414
"description": "Zero-dependency, spec-driven agentic SDLC: durable specs, context-fit plans, re-anchored workers, adversarial cross-model review, and receipts. Includes 21 subagents, 29 commands, 33 skills.",
15-
"version": "5.2.2",
15+
"version": "5.3.0",
1616
"author": {
1717
"name": "Gordon Mickel",
1818
"email": "gordon@mickel.tech",

CHANGELOG.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,23 @@ All notable changes to the flow-next.
44

55
## Unreleased
66

7+
## [flow-next 5.3.0] - 2026-09-14
8+
9+
Teams whose specs depend on each other stop waiting on merges. A dependent spec used to sit until its parent's pull request landed, so every layer of a dependency chain cost one human merge before the next could start and the build loop idled in between. Now the dependent spec builds as soon as its parent is built, its pull request shows only its own layer, GitHub links the layers into a stack, and land drains the chain from the bottom without a hand rebase. Nothing is configured: the dependency graph a plan already records is the only input, and a spec with no dependencies behaves exactly as before.
10+
11+
The reviewer's journey changes in one place. Instead of one large PR after a serial wait, they get a chain of small ones, each with its own cognitive-aid body and a stack map in the merge box, reviewed and merged from the bottom up. Merge judgment stays theirs: nothing in this release merges on its own, and land still needs its existing consent and gates. The release's own two pull requests, #432 and #433, were the first live chain, built on 2026-09-13, linked into GitHub stack #434, and merged from the stack UI.
12+
713
### Added
8-
- **Dependent specs chain on their parent instead of waiting for its merge (fn-152).** When a parent spec's tasks are all done and its branch is on origin, the dependent spec is selectable: `flow --auto` (ready and backlog mode), the attended ladder, `/flow-next:work`, and flowctl's task-admission gate (`ready --spec`, `next`, `ready --all`) all consult the new read-only `flowctl spec chain <id>` predicate, work branches the spec from the parent's remote tip, and make-pr detects the chain from history (the merge-base with the parent's branch tip or merged-PR head), opens the PR against the parent's branch, and on GitHub links it into the parent's stack via the stacks REST API with integer-typed payloads (any failure leaves a plain chain layer with one stderr line). A merged parent is rewritten onto the chain base from the detected boundary on a create run only; `--dry-run` and `--update` never rewrite. Chained layers with nothing open are created ready. Chains are linear (two open parents, or a sibling already chained, park with a reason and no strike). No config key was added; a spec with no open parent is byte-identical to before. Vocabulary (`chain`, `stack`, `layer`, `frontier`) is in the glossary and the orchestration guide.
9-
- **Land drains chains and GitHub stacks one frontier at a time (fn-149).** A dependent PR (based on its parent's branch, with or without a GitHub stack over it) no longer breaks land or gets closed by a parent merge. Each tick classifies every PR from its REST `stack` object and base ref, merges only the lowest open layer (`merge-async` with squash, `direct_merge`, and a server-enforced `sha` pin on a stack; `gh pr merge` on a plain chain), keeps a review verdict across a rebase when the stable patch-id of base-to-head is unchanged (the reviewer's clean comment on the original head keeps satisfying through any number of equivalent head moves), retargets the layers above a merged parent itself on the plain path with a leased force-push per layer from a resumable ledger record, and defers branch deletion until no open PR targets the branch (the 2026-08-27 failure). The verdict reason names the stack number, layer, and size, or the parent PR. A standalone PR keeps byte-identical verdicts, merge arguments, tail order, and ledger writes; no config key was added. Details: [`chains-and-stacks.md`](plugins/flow-next/skills/flow-next-land/references/chains-and-stacks.md).
14+
15+
- **Dependent specs build on their parent's branch instead of waiting for its merge (fn-152).** When a parent spec's tasks are all done and its branch is on origin, the dependent spec becomes selectable in `flow --auto` (ready and backlog mode), in the attended ladder, and under a direct `/flow-next:work`. Work forks the spec branch from the parent's remote tip, make-pr opens the PR against the parent's branch and, on GitHub, links it into the parent's stack, and chained layers with nothing open are created ready so a human can merge them from the stack UI. A spec whose parent is still in progress, a spec with two open parents, or a second child of an already-chained parent parks with a stated reason and no strike. Linear chains only; no configuration key.
16+
- **Land drains chains and GitHub stacks one frontier at a time (fn-149).** A dependent PR, with or without a GitHub stack over it, no longer breaks land or gets closed when its parent merges. Each tick classifies every PR from GitHub's stack object and its base ref and merges only the lowest open layer. On a stack it uses GitHub's asynchronous stack merge with a server-enforced head pin (a stale pin is refused before anything merges, verified live). A review verdict survives a rebase when the stable patch-id of the diff is unchanged, so a reviewer's clean comment on the original head keeps counting through GitHub's retargets and land's own. Above a merged parent on a plain chain, land rewrites the open layers bottom-up in a prepare-then-publish cascade with a leased push per layer and a resumable record, and it never deletes a merged branch while an open PR still targets it, which was the 2026-08-27 failure. Standalone PRs keep byte-identical verdicts, merge arguments, tail order, and ledger writes.
17+
18+
### Under the hood
19+
20+
- One read-only predicate, `flowctl spec chain <id>`, owns chain eligibility (parent open, all tasks done, branch on origin, linear, one `git ls-remote` at most, a failed remote read never reported as an absent branch); flowctl's spec-level task-admission gate (`ready --spec`, `next`, `ready --all`) treats the chain parent as satisfied, and every skill consumer calls the predicate instead of duplicating it. `pilot-log append` gains an optional `--reason` so the backlog decision-log row carries the `chained on <parent>; ` prefix.
21+
- Make-pr detects a chain from history, the merge-base of HEAD with the parent's branch tip or merged-PR head, never from a scratch file; a merged parent is rewritten onto the chain base from that boundary on a create run only (`--dry-run` and `--update` never rewrite); stack linking uses the stacks REST API with integer-typed payloads and degrades to a plain chain layer with one stderr line on 404, 409, 422, or a transport error.
22+
- Land's ledger gains one evidence binding per PR (verdict head, base, patch-id, window anchor), a pending merge-async uuid, a top-level `pending_branch_deletes` map swept at the start of every tick, and a `cascade` record that survives a lost lease or a lost write; an unread children count keeps the branch. The Codex mirror and the glossary (`chain`, `stack`, `layer`, `frontier`) are updated; the 2026-08-27 recovery memory now points at the chain rules. Details: [`chains-and-stacks.md`](plugins/flow-next/skills/flow-next-land/references/chains-and-stacks.md).
23+
- Tests: flowctl chain states and admission gates over a bare origin; fence fixtures for every consumer under `set -e` with a stubbed `gh`; land fixtures for every shape, a three-layer chain with multi-commit squash parents, lease and lost-write resumption, the stale pin, and the janitor across four ticks; the merge-fence shell test now states its children count.
1024

1125
## [flow-next 5.2.2] - 2026-09-13
1226

plugins/flow-next/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flow-next",
3-
"version": "5.2.2",
3+
"version": "5.3.0",
44
"description": "Zero-dependency, spec-driven agentic SDLC: durable specs, context-fit plans, re-anchored workers, adversarial cross-model review, and receipts. Includes 21 subagents, 29 commands, 33 skills.",
55
"author": {
66
"name": "Gordon Mickel",

plugins/flow-next/.codex-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flow-next",
3-
"version": "5.2.2",
3+
"version": "5.3.0",
44
"description": "Zero-dependency, spec-driven agentic SDLC: durable specs, context-fit plans, re-anchored workers, adversarial cross-model review, and receipts. Compatible with Codex, Claude Code, and Factory Droid.",
55
"author": {
66
"name": "Gordon Mickel",

plugins/flow-next/.cursor-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flow-next",
3-
"version": "5.2.2",
3+
"version": "5.3.0",
44
"description": "Zero-dependency, spec-driven agentic SDLC: durable specs, context-fit plans, re-anchored workers, adversarial cross-model review, and receipts. (Ralph autonomous mode is available on other hosts; intentionally not registered on Cursor.)",
55
"author": {
66
"name": "Gordon Mickel",

plugins/flow-next/codex/docs/flow-next/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ The repo's strategic intent is [`STRATEGY.md`](https://github.com/gmickel/flow-n
7979

8080
## Notable updates
8181

82+
- **5.3.0: dependent specs chain on their parent, land drains the chain.** A spec whose parent is built but unmerged now builds on the parent's branch, opens its PR against it, and joins a GitHub stack; land merges the bottom layer first, carries review verdicts across a rebase when the patch is unchanged, and never deletes a branch a child still targets. Enable: nothing, the dependency graph decides. Details: [chains and stacks](../../skills/flow-next-land/references/chains-and-stacks.md), [orchestration](orchestration.md), [CHANGELOG](https://github.com/gmickel/flow-next/blob/main/CHANGELOG.md).
83+
8284
- **5.2.2: five issue fixes, no new knobs.** Glossary entries with both metadata lines survive `glossary add`; land's merge step works under zsh and its ci-fix step follows git to a worktree that already holds the branch; a planned spec against a `status:backlog` label is a no-op instead of a conflict; a merged spec-text-only PR no longer counts as merge evidence. Enable: nothing. Details: [CHANGELOG](https://github.com/gmickel/flow-next/blob/main/CHANGELOG.md).
8385

8486
- **5.2.1: keep the direct route when changing implementers.** Choosing another model or harness no longer triggers task decomposition. Explicit planning requests, separate human owners, and staged PRs still select a plan. See [the route rule](../../skills/flow-next-flow/references/plan-vs-no-plan.md).

plugins/flow-next/docs/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ The repo's strategic intent is [`STRATEGY.md`](../../../STRATEGY.md). The vocabu
7676

7777
## Notable updates
7878

79+
- **5.3.0: dependent specs chain on their parent, land drains the chain.** A spec whose parent is built but unmerged now builds on the parent's branch, opens its PR against it, and joins a GitHub stack; land merges the bottom layer first, carries review verdicts across a rebase when the patch is unchanged, and never deletes a branch a child still targets. Enable: nothing, the dependency graph decides. Details: [chains and stacks](../skills/flow-next-land/references/chains-and-stacks.md), [orchestration](orchestration.md), [CHANGELOG](../../../CHANGELOG.md).
80+
7981
- **5.2.2: five issue fixes, no new knobs.** Glossary entries with both metadata lines survive `glossary add`; land's merge step works under zsh and its ci-fix step follows git to a worktree that already holds the branch; a planned spec against a `status:backlog` label is a no-op instead of a conflict; a merged spec-text-only PR no longer counts as merge evidence. Enable: nothing. Details: [CHANGELOG](../../../CHANGELOG.md).
8082

8183
- **5.2.1: keep the direct route when changing implementers.** Choosing another model or harness no longer triggers task decomposition. Explicit planning requests, separate human owners, and staged PRs still select a plan. See [the route rule](../skills/flow-next-flow/references/plan-vs-no-plan.md).

0 commit comments

Comments
 (0)