v3.32.37

ruvnet/ruflov3.32.37Jul 29, 2026by ruvnet

AI Summary

Fixes MetaHarness readiness reports, initialization consistency, and removes unbacked Codex skill placeholders.

Key Highlights

  • MetaHarness readiness verdicts now machine-readable (preserves exit codes for 'needs-work' and 'blocked').
  • `memory init` honors `CLAUDE_FLOW_DB_PATH` for consistent shared-path usage.
  • Dual-mode initialization installs both Claude Code and Codex assets.
  • Removes unbacked Codex skill placeholders.

New Features

  • Improved MetaHarness wrapper for structured finding preservation.
  • Canonical skill installation and ADR idempotency improvements.

Full Release Notes

# Ruflo v3.32.37: Complete Reports, Consistent Initialization

Ruflo v3.32.37 closes the follow-up defects found while verifying v3.32.36
against older open bug reports. MetaHarness readiness verdicts remain
machine-readable even when a repository is blocked, memory initialization
uses the same configured database path as every later operation, and dual
Claude Code/Codex initialization now installs both native surfaces.

The release also removes unbacked Codex skill placeholders, makes ADR indexing
idempotent, repairs legacy live-memory row visibility, and bounds the
quadratic work in session-end intelligence consolidation.

## Install or upgrade

```bash
npm install --global ruflo@3.32.37
ruflo doctor
```

Existing projects remain compatible. The stable train still contains exactly
the three supported packages: `@claude-flow/cli`, `claude-flow`, and `ruflo`.

## MetaHarness readiness is data

```bash
ruflo metaharness genome --path . --format json
```

Upstream MetaHarness intentionally uses exit 1 for `needs-work` and exit 2 for
`blocked`. Ruflo now preserves those valid reports instead of replacing them
with a generic subprocess error:

```json
{
  "risk_score": 0.72,
  "verdict": "blocked",
  "verdictExitCode": 2
}
```

The Ruflo wrapper exits successfully for a valid report so CLI and MCP callers
can consume it. `--alert-on-risk-above` still exits 1 when its policy threshold
is crossed, and malformed or missing reports still fail with exit 2.

## Initialization and portability

- `memory init` honors `CLAUDE_FLOW_DB_PATH`, completing the shared-path
  contract used by dual-mode bootstrap and background workers.
- `init --dual` runs both native initializers, preserving the full Claude Code
  scaffold while adding Codex assets.
- Root `.gitignore` protection covers `.env` secrets in initialized projects.
- Codex full init installs canonical skill implementations only; it no longer
  generates more than one hundred placeholder skills that appear usable but
  have no implementation.
- Every tracked shell and Windows hook shim now resolves the same stable Ruflo
  dist-tag.

## ADR and memory correctness

- ADR metadata parsing accepts the bullet-prefixed Date, Tags, and relationship
  format emitted by `adr-create`.
- ADR records use explicit upsert semantics and stable keys.
- ADR relationships use deterministic semantic keys and are deduplicated
  within an import, while verification remains compatible with legacy keys.
- ADR creation guidance uses the real AgentDB `key`/`value` contract.
- Native memory CRUD treats legacy `NULL` status rows consistently as live.
- Intelligence consolidation deduplicates by content before graph creation and
  caps similarity comparisons while preserving temporal edges.

## Validation

- Blocked-genome CLI and MCP fixtures preserve the complete verdict.
- ADR smoke: 22/22; hook-shim smoke: 12/12.
- Release gates: 12 CLI contract, 238 Codex, 559 security, and 640
  federation tests pass.
- All 23 buildable V3 workspace packages compile successfully.
- Focused MetaHarness, memory-path, dual-init, canonical-skill, ADR parser,
  ADR idempotency, memory visibility, and consolidation regressions pass.
- The stable release workflow builds immutable archives, tests the bundled
  policy/Codex/federation runtimes, installs all three archives, publishes the
  same bytes, and installs them again from the npm registry.

This patch resolves
[#2626](https://github.com/ruvnet/ruflo/issues/2626),
[#2629](https://github.com/ruvnet/ruflo/issues/2629),
[#2600](https://github.com/ruvnet/ruflo/issues/2600),
[#2634](https://github.com/ruvnet/ruflo/issues/2634),
[#2636](https://github.com/ruvnet/ruflo/issues/2636),
[#2637](https://github.com/ruvnet/ruflo/issues/2637),
[#2660](https://github.com/ruvnet/ruflo/issues/2660),
[#2659](https://github.com/ruvnet/ruflo/issues/2659),
[#2651](https://github.com/ruvnet/ruflo/issues/2651),
[#2628](https://github.com/ruvnet/ruflo/issues/2628), and
the remaining active-row visibility defect in
[#2652](https://github.com/ruvnet/ruflo/issues/2652).