flow-next v1.12.0
·
36 commits
to main
since this release
Added
- Spec readiness signal — a human-owned
readyflag, the entry gate for autonomous execution (fn-58 / FLOW-7). A spec now carries areadyboolean (defaultfalse) marking it "complete enough to hand to an agent" — orthogonal tostatus(open|done; a ready spec staysopenthrough planning and work), human-owned or tracker-projected, never agent-inferred. The gate is strictly opt-in: non-adopters see no prompts, warnings, or badge noise anywhere.flowctl spec ready <id>/spec unready <id>— idempotent toggles (no write, noupdated_atbump when the flag already matches;"changed"reported in--json). The on-disk flag is lazy: the sidecar carriesreadyonly after a toggle actually changes state (spec createnever writes it; absent readsfalse) — zero working-tree churn for non-adopters. Every JSON read surface (show,specs,list) emits an explicit"ready": <bool>, and ready specs get a[ready]badge inspecs/listoutput (badge only when set — no draft-noise). Task ids rejected;donespecs allowed;epic ready/epic unreadyaliases included. New regression suitetests/test_spec_ready.py(lazy purity, idempotency, badge/JSON surfaces) wired into CI + both smoke scripts.- Tracker projection (
tracker.readyState) — for tracker-connected repos, the/flow-next:tracker-syncdiscovery ceremony asks one optional, skippable question: which tracker workflow state means "ready for work"? (Linear: a workflow-state name, matched case-insensitive/trimmed — names, notstate.type, since a custom "Ready" state is typicallytype=unstarted; GitHub: a label, pre-created idempotently — present ⇒ ready, absent ⇒ not ready, a normal state). Every pull-side sync (pull/reconcile) projects the state onto the localreadyflag — one-way, tracker → local, tracker authoritative (a localspec readyis overwritten on the next sync). Change-only event-tagged receipts (silent on echo); a stale/renamed configured state warns +noopreceipt + flag untouched + the sync continues.readyStatelives at the tracker top level (sibling ofconflictTiebreak);null= projection off. - Adoption-gated prompting layer — the same in-use gate (≥1 ready spec OR
tracker.readyStateconfigured) governs every new prompt, so non-adopters see zero new questions./flow-next:captureand/flow-next:interviewoffer an optional end-of-authoring "Mark ready?" consent (default keep-draft; gated OFF whenreadyStateis configured — never invite a local edit the next sync would revert; autofix never writes readiness)./flow-next:plansoft-checks readiness before the scout fan-out: not-ready + adopted ⇒ one warn-not-block question (default proceed — planning is non-destructive), with the option set split by mode (local: proceed / mark-ready-then-proceed / abort; tracker-authoritative: proceed / abort / update-tracker-state-then-rerun — local mark-ready never offered). Non-interactive/Ralph auto-proceeds with one stderr line.capture --rewriteresetsready→false(a full re-authoring re-opens the blessing) and announces the reset only when it actually changed the flag; interview refinement never auto-resets.
Notes
- Readiness is the shared entry gate for the forthcoming build-loop specs (fn-59/fn-60) but stands alone as backlog hygiene — knowing which specs are blessed vs still-draft. No new
statusvalue; no--readyfilter flag in v1 (specs --json+ jq covers selection); readiness is pull-only for tracker users (no outbound push). Bothflowctl.pycopies (canonicalscripts/+ dogfood.flow/bin/) updated in lockstep. Codex mirror regenerated (the three net-new ask sites — capture/interview mark-ready, plan soft-check, ceremony readiness question — verified transformed to plain-text numbered prompts). Docs: GLOSSARY "Ready" term,architecture.md(lazy spec-JSON field),flowctl.md(spec ready/unready,tracker.readyState, alias rows),tracker-sync.md(readiness projection), setupusage.md.