Skip to content

v2.94.0: agent onboarding, weekly impact digest, task matrix

Choose a tag to compare

@BartWaardenburg BartWaardenburg released this 12 Jun 00:11
· 47 commits to main since this release
v2.94.0
1a5676d

v2.94.0 makes fallow easier to discover and adopt from inside coding agents, and starts reporting the value it delivers back to you.

Guided setup, on first contact

  • First-run output now points at guided setup. On a project with no fallow config, a run that surfaces findings leads its JSON next_steps[] with a setup step (command: fallow schema, the read-only capability manifest that lists the agent-guide and commit-gate commands to offer), and bare fallow prints a one-line Setup: hint after the failure summary. The pointer stays quiet everywhere else: never in CI, never on configured projects or clean runs, and never again after fallow init --decline, the new flag that records "this project deliberately stays unconfigured" without writing a config file.
  • fallow hooks status gives agents and scripts a read-only view (human and --format json) of all three hook surfaces: the Git pre-commit hook, the Claude Code gate, and the Codex AGENTS.md managed block, including user-edited detection, the gate script's installer version, and its minimum-version floor.
  • A task-to-command matrix routes agent intents to the right command. One cheat sheet ("when the agent is about to X, run Y") renders from a single source into fallow schema, the AGENTS.md scaffolded by fallow init --agents, the managed block from fallow hooks install --target agent, and root fallow --help. Drift tests parse every row through the live CLI, and the matrix never names a mutating command.
  • The bundled agent skill's CLI flag tables now regenerate from the capability manifest, so global flags, command-local flags, and the dead-code filter table can no longer drift behind the binary. (Closes #1189.)

Fallow Impact: see what the gate is doing for you

  • The agent commit gate now feeds Impact. A commit the Claude Code gate blocks and a later retry clears lands in fallow impact as a containment event (with Impact tracking enabled). The gate script's version floor moves to 2.85.0 to match; older binaries on PATH get an explicit upgrade block instead of a silent pass-through.
  • Impact reports its value once a week. With tracking enabled and non-zero results, next_steps[] carries an at-most-weekly impact-report step with the real counters (commits contained at the gate, findings resolved), and bare fallow prints a matching one-line Impact: summary. Zero results never surface, and CI never sees the digest.
  • Opt-in prompts can tell "asked and declined" from "never asked". fallow telemetry status and fallow impact status expose an explicit_decision field set only by an explicit enable or disable, so agents offer each opt-in exactly once and respect a "no" permanently.

Analysis

  • Bare fallow accepts Istanbul coverage inputs for the embedded health pass. --coverage / --coverage-root, FALLOW_COVERAGE / FALLOW_COVERAGE_ROOT, and health.coverage / health.coverageRoot now reach the combined default command, so fallow --format json uses the same exact CRAP scoring path as fallow health. The GitHub Action and GitLab CI default runs forward their coverage inputs too. Thanks @stieglma for the follow-up. (Refs #300.)
  • Opt-in telemetry can count installs instead of runs. When enabled, fallow keeps one anonymous, random install token (never derived from machine, user, repository, or path data), sent only as a private transport header for server-side grouping and deleted on fallow telemetry disable. The spooled events themselves still carry no identifiers.

Bug fixes

  • Angular template scanning no longer panics on a backslash before a multi-byte character. The quoted-attribute scanner could land mid-character and panic with "byte index N is not a char boundary"; it now advances over one full UTF-8 character. Thanks @shawnrice for the report and the patch in #1202. (Closes #1201.)

Full Changelog: v2.93.0...v2.94.0