flow-next v1.14.0
·
22 commits
to main
since this release
Added
/flow-next:land— the ship loop: a cadence-tick autonomous PR babysitter (fn-60 / FLOW-9). Where pilot and Ralph deliberately stop at a draft PR, land takes those PRs the rest of the way — fully autonomously, opt-in,/loop-shaped (/loop 30m /flow-next:land). One invocation is one tick: DISCOVER the open PRs the build loop authored (specbranch_namematch AND the make-pr breadcrumb in the PR body — BOTH signals required before any mutation; branch-only matches areNEEDS_HUMAN, never acted on; only specs with ALL tasks done qualify — the pilot-concurrency interlock), GATE each PR read-only (durable-label skip → CI tri-state over ALL checks viagh pr checks --json bucket, never--required; empty check list inside the window = pending, never success → patience window anchored to the LAST PUSH, default 30 min → unresolved review threads → review signal → stale-approval-dismissal loop detection →mergeStateStatus), ACT with at most ONE action class per PR (bounded CI fix with strikes in$(git rev-parse --git-common-dir)/flow-next/land-strikes.jsonand a durableflow-next:needs-humanlabel on exhaustion; resolve-pr dispatch withmode:autonomous; mechanical rebase only for DIRTY/BEHIND — any conflict hunk aborts toBLOCKED; or the gated merge:gh pr readyflip + explicitgh pr merge --squash --delete-branch --match-head-commit, NEVER--auto, then the post-merge tailflowctl spec close→ opt-intracker.perEvent.land.mergedtouchpoint → release-follow of the project's own release docs with an idempotency probe, or stop at merge), then REPORT per-PR evidence blocks and one terminal machine-greppable line:LAND_VERDICT=<MERGED|RELEASED|FIXING_CI|AWAITING_REVIEW|RESOLVING|BLOCKED|NEEDS_HUMAN|NO_WORK> prs=<n> pr=<deciding-pr-url|-> reason="<one line>"(worst-severity rule). Review convergence is configurable vialand.reviewSignal:silence(default — an automated review present + zero unresolved threads + the window elapsed; bot reviewers like Codex never file formal APPROVEs),approve(formalreviewDecision), or a named reviewer login; with no automated review ever and no signal configured it never merges unreviewed (NEEDS_HUMAN). A merged-but-unclosed spec re-enters idempotently (resume close → tracker → release, never a second merge).--dry-runreports the full per-PR gate classification with zero mutations. Branch hygiene throughout: dirty-tree refusal at tick start, per-PR checkout restore + clean-tree assertion, Ralph-nesting refusal (FLOW_RALPH/REVIEW_RECEIPT_PATH). gh surfaces verified against gh 2.93.0.land.*config surface with seeded defaults (fn-60.2):land.release(true),land.patienceMinutes(30),land.reviewSignal(silence),land.automatedReviewers(""— csv allowlist supplementing the[bot]-suffix rule),land.ciFixBudget(3). Seeded in flowctl config defaults soconfig getreturns values, not null, on fresh repos. New regression suitetests/test_land_config.py.
Changed
/flow-next:resolve-prgained an autonomous mode (fn-60.2, fn-59.2 signal convention): themode:autonomousarg token (primary) orFLOW_AUTONOMOUS=1env (secondary) suppresses question branches only — never Ralph paths. Under autonomy the Phase-10 needs-human surface emitsNEEDS_HUMAN:report lines instead of blocking, threads stay open, and the run ends with the machine-readable terminal lineRESOLVE_PR_VERDICT=<RESOLVED|PENDING|NEEDS_HUMAN> threads=<n> fixed=<n> needs_human=<n>that land gates on. Bounded 2 fix-verify cycles unchanged. Its "user-triggered only" Forbidden line carries one confined exception: land may dispatch it withmode:autonomous.- The standing "no
gh pr mergefrom skills" rule now has exactly one confined exception — land merges explicitly after its full gate tree passes; every other skill keeps the no-auto-merge rule (CLAUDE.md exception note included).
Notes
- Land and Ralph are alternative autonomous drivers, never nested. Land is the pipeline terminus: with pilot (build loop) and land (ship loop) the lifecycle closes end to end — bless a spec → plan → review → work → draft PR → CI → reviews → merge → release. Codex mirror regenerated with the new land skill. Docs touched: README (count/row/third autonomous path), GLOSSARY Land term + Verdict extension, CLAUDE.md merge-rule exception, docs index,
ralph.mdship-loop recipe; flow-next.dev counterpart page:/autonomous/land.