v3.26.0

ruvnet/ruflov3.26.0Jul 13, 2026by ruvnet

AI Summary

A minor release introducing Agent-Native Versioning (ANV) Phase 1 and fixing CI/security issues.

Key Highlights

  • ANV Phase 1 with advisory version suffixes and a real catalog-manifest.json.
  • Shortened promo disclosure grace period from 72h to 24h.
  • Verified funnel analytics pipeline with pseudonymous, rotating IDs.
  • Fixed exponential-backtracking ReDoS vulnerability in regex patterns.
  • Corrected CLI output formatter to route warnings/info to stderr.

New Features

  • Agent-Native Versioning (ANV) Phase 1
  • Funnel analytics verification
  • ReDoS security fix
  • CLI output formatter correction

Full Release Notes

## Highlights

- **Agent-Native Versioning (ANV) — Phase 1.** `ruflo version --explain` now reports an advisory
  `+ad.<n>.g<sha>.cat<generation>[.hal<tier>]` suffix alongside the normal semver, backed by a new
  `catalog-manifest.json` with real, git-measured counts (currently 164 agent types, 387 MCP tools,
  34 skills) — never fabricated numbers, and no benchmark tier claimed without a real signed GAIA/HAL
  submission. Plain `ruflo --version`/`-V` and bare `ruflo version` are unaffected (still plain semver,
  npm-range-safe build metadata). `ruflo version --require-catalog-gte N` gives scripts a capability
  gate. See the [ANV proposal](https://gist.github.com/ruvnet/0d858ad440a4439b4a2281a40c39b1a0).
- **Statusline promo disclosure grace period shortened from 72h to 24h.** The disclosure/opt-out text
  (ending in `· manage: ruflo settings`, enforced at the content-validation layer) still shows for the
  full window before any promotional content is eligible — just a shorter window now.
- Verified the funnel analytics pipeline: `promo_impression`/`promo_open` events are tracked with a
  pseudonymous, 90-day-rotating ID and daily-bucket timestamps only — no hostname, username, email, or
  path ever leaves the machine. Verified the sponsored-proxy feature remains a fully separate,
  never-bundled opt-in (per `consent.ts`'s "four+ distinct decisions, never bundled" design).
- Confirmed the existing critical-helper auto-refresh mechanism (`autoRefreshHelpersIfStale`) correctly
  propagates the updated `statusline.cjs` to already-initialized projects on their next `ruflo` command
  — no re-`init` required.

## Fixes

- **PR #2622 CI (7 failing checks)** — an npm `overrides`/direct-install conflict in a CI smoke step, 8
  funnel/statusline env vars missing from the CLI-flag-precedence audit's escape-hatch list, a silently
  renamed regression-guard variable, a stdout/stderr contract bug in the shared CLI output formatter
  (warnings/info/debug/trace now correctly go to stderr, matching `printError`), and a help-text
  ordering regression.
- **Security**: fixed a confirmed exponential-backtracking ReDoS (measured: 2.8s at 36 pattern
  repetitions) in the shared npx-hook flag-list regex; stopped inheriting a subprocess's raw stderr in
  the helper/config signing scripts (clear-text-logging hardening); fixed an `EOVERRIDE` conflict where
  `@claude-flow/cli/package.json` declared both `overrides.agentdb` and `optionalDependencies.agentdb`
  for the same package (now uses npm's canonical `$agentdb` self-reference).

## Packages published

`@claude-flow/cli@3.26.0`, `claude-flow@3.26.0`, `ruflo@3.26.0` — `latest`/`alpha`/`v3alpha` dist-tags
all aligned.