Skip to content

flow-next v2.0.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 13:38
· 10 commits to main since this release

Added

  • Optional HTML artifact mode — spec & PR render lenses (fn-62 / FLOW-12). When activated, the lifecycle skills that own the human touchpoints emit beautifully rendered, self-contained HTML pages alongside their markdown output: a render lens is a regenerable review artifact derived from a markdown source of truth — never the storage format, never parsed back as state. Markdown (and tracker-sync) stays 100% the record; users who stick with default markdown see zero change (no reference file loads, no artifacts are written, no new steps, zero token cost).
    • Activation (fn-62.1): flowctl config set artifacts.html.enabled true — seeded in flowctl config defaults (false, so config get returns a value, not null, on fresh repos; tests/test_artifacts_config.py). /flow-next:setup asks once (include-only-if-unset, like every ceremony question) and on opt-in offers the optional lavish-axi install with its session-spanning feedback model. Artifacts live at fixed deterministic paths — .flow/artifacts/<spec-id>/spec.html / pr.html, never timestamped (Lavish keys annotation sessions on the absolute file path) — committed by default so PR blob links resolve, or gitignored per project (setup offers the choice; link strategy follows git check-ignore).
    • Shared disclosure reference (fn-62.2): one progressively disclosed file, references/html-artifacts.md, loaded by participating skills only when the mode is on. Carries all generation rules plus an explicit anti-slop design contract (own instrument-panel palette/typography, no CDN fonts, zero external requests, print-friendly, staleness stamp in every footer, layered CSS-grid DAG rendering — never hand-typed SVG coordinates). Generation is agentic (the host agent reads the reference); flowctl's only contribution is the config knob.
    • Spec artifact (fn-62.3): ONE generation pathway with state-dependent rendering — spec-only business-review view before tasks exist (/flow-next:capture §5.10), the added plan layer (task dependency DAG with critical path, R-ID → task coverage matrix) once tasks exist (/flow-next:plan Step 8.5, after the refinement loop exits). The spec markdown links its lens via an idempotent marker line (replaced in place, never duplicated).
    • PR artifact (fn-62.4): /flow-next:make-pr Phase 1.5 emits a read-only review instrument — diff-derived (never from commit messages), verified against the spec's R-ID export before publishing (mismatches render as visibly flagged rows; warn-in-artifact, never blocking), churn grouped by review intent, where-to-look checklist. Committed narrowly (chore(flow): pr artifact <spec-id>, artifact file only — never git add -A); --dry-run writes no artifact; generation failure is non-fatal and the Ralph stdout contract (PR_URL= only) is untouched.
    • Lavish integration (optional, detect-on-PATH — never wrapped, bundled, or required) : with lavish-axi on PATH in an interactive session, spec artifacts open as annotation sessions; feedback is pull-only and session-spanning (queues in ~/.lavish-axi/state.json, survives agent death, any later session drains it via lavish-axi poll), and every annotation maps to a markdown-source edit followed by lens regeneration. The PR artifact never enters the annotate loop; autonomous/Ralph contexts never open a session and never poll. Absence or server idle-stop is invisible — the artifact is a self-contained static page.
    • Docs (fn-62.5): new docs/html-artifacts.md reference (GitHub-display limitation + local-open guidance included), README / teams / ralph / GLOSSARY surfaces.

Removed

  • BREAKING: the planSync.crossEpic config alias is gone (deprecated since 1.1.3; removal promised for 2.0 throughout the 1.x line). flowctl no longer reads, writes, or migrates the legacy key: reading planSync.crossSpec never falls back to a leftover crossEpic value, config get/set planSync.crossEpic is now a plain unknown-key lookup (no redirect, no deprecation warning), and flowctl init no longer mirrors legacy → canonical. A leftover crossEpic key in .flow/config.json is inert (preserved by the config merge, never read). Migration: if you still rely on it, set the canonical key once — flowctl config set planSync.crossSpec true. Regression suites converted to pin the removal (tests/test_config_alias.py, tests/test_init_crossspec_mirror.py); prose surfaces (setup workflow, docs/flowctl.md, plan-sync agent, local-dev smoke) updated to match.

Notes

  • 2.0.0 marks the leap, not an unrelated rewrite: the HTML artifact mode is fully opt-in (OFF by default — markdown-only users see zero new steps, prerequisites, or token overhead), and the only breaking change is the long-promised crossEpic alias removal above. Codex mirror regenerated and audited (references/ copy byte-identical, no spurious ask-block injections, validators green). flow-next.dev shipped the counterpart pass in the same workstream: visual-aids + pipeline pages, landing/SPECS/TEAMS/REVIEW surfaces, docs-site changelog + FLOW_NEXT_VERSION → 2.0.0.