Skip to content

flow-next v1.14.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 17:33
· 22 commits to main since this release
8be8eef

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 (spec branch_name match AND the make-pr breadcrumb in the PR body — BOTH signals required before any mutation; branch-only matches are NEEDS_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 via gh 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.json and a durable flow-next:needs-human label on exhaustion; resolve-pr dispatch with mode:autonomous; mechanical rebase only for DIRTY/BEHIND — any conflict hunk aborts to BLOCKED; or the gated merge: gh pr ready flip + explicit gh pr merge --squash --delete-branch --match-head-commit, NEVER --auto, then the post-merge tail flowctl spec close → opt-in tracker.perEvent.land.merged touchpoint → 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 via land.reviewSignal: silence (default — an automated review present + zero unresolved threads + the window elapsed; bot reviewers like Codex never file formal APPROVEs), approve (formal reviewDecision), 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-run reports 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 so config get returns values, not null, on fresh repos. New regression suite tests/test_land_config.py.

Changed

  • /flow-next:resolve-pr gained an autonomous mode (fn-60.2, fn-59.2 signal convention): the mode:autonomous arg token (primary) or FLOW_AUTONOMOUS=1 env (secondary) suppresses question branches only — never Ralph paths. Under autonomy the Phase-10 needs-human surface emits NEEDS_HUMAN: report lines instead of blocking, threads stay open, and the run ends with the machine-readable terminal line RESOLVE_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 with mode:autonomous.
  • The standing "no gh pr merge from 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.md ship-loop recipe; flow-next.dev counterpart page: /autonomous/land.