What
scripts/capability-registry.mjs asserts, twice, that evolve is absent from ruflo's metaharness CLI. On main @ 75f9310 today:
:40 similarity|drift-from-history|mint|redblue|learn|gepa. No `evolve`.
:624 // VERIFIED NULL: `ruflo metaharness --help` enumerates its subcommands and `evolve` is not among them.
That measurement has drifted. Measured just now against ruflo v3.34.0:
$ ruflo metaharness --help
--subcommand One of: score | genome | mcp-scan | threat-model | oia-audit |
audit-list | audit-trend | similarity | drift-from-history |
mint | redblue | learn | gepa | evolve | bench | flywheel
evolve is there — and so are bench and flywheel, neither of which the header enumerates either.
Why it matters
The claim is load-bearing, not just a comment. It justifies turnOn: null on the harness-evolution row (:625), so the console can never offer an action that now exists. On this machine that row reads on with "an evolved policy is active machine-wide … applied 7 days ago" and no way to act on it.
The header's stated rule — "this registry only ships commands a person can paste into a terminal" — is now satisfied by ruflo metaharness --subcommand evolve. It's pasteable, it's real, and it dry-runs safely: without --confirm it prints a plan and exits 0.
Verified the dry-run path is genuinely free before suggesting it:
$ node .../ruflo-metaharness/0.1.1/scripts/evolve.mjs --repo <repo>
{ "dryRun": true, "message": "Pass --confirm to run the evolution." } # exit 0
Also worth noting for whoever picks this up: the plugin's default is "sandbox": "real" and "mutator": "deterministic" — so a --confirm run costs real test executions but no API key (no OPENROUTER/API_KEY reference anywhere in evolve.mjs or _darwin.mjs).
The class of bug, not just the instance
A VERIFIED NULL is a measurement with a timestamp that isn't written down. It was true when taken and silently became false when ruflo shipped a new subcommand — and nothing re-checks it, because the failure mode is a capability quietly never being offered.
This is the same shape as the anticipate.sh path assertion in #114: a comment asserting a fact about the environment, correct when written, with no test binding it to reality.
Suggested fix, in preference order:
- Derive it. Parse
ruflo metaharness --help at detect time rather than hardcoding the list — the same discipline installer-sibling-imports-packaged.test.mjs already applies ("the list is DERIVED from install.mjs by reading its actual import sites — never hand-maintained").
- Or bind it to a test that fails when the real
--help gains a subcommand the header doesn't list.
- At minimum, date-stamp
VERIFIED NULL claims and name the version they were verified against, so staleness is visible on read.
Happy to send a PR for (1) if you'd like it.
Environment: ruflo v3.34.0 · ruvnet-brain plugin 4.0.7 · macOS
What
scripts/capability-registry.mjsasserts, twice, thatevolveis absent from ruflo's metaharness CLI. Onmain@ 75f9310 today:That measurement has drifted. Measured just now against ruflo v3.34.0:
evolveis there — and so arebenchandflywheel, neither of which the header enumerates either.Why it matters
The claim is load-bearing, not just a comment. It justifies
turnOn: nullon theharness-evolutionrow (:625), so the console can never offer an action that now exists. On this machine that row readsonwith "an evolved policy is active machine-wide … applied 7 days ago" and no way to act on it.The header's stated rule — "this registry only ships commands a person can paste into a terminal" — is now satisfied by
ruflo metaharness --subcommand evolve. It's pasteable, it's real, and it dry-runs safely: without--confirmit prints a plan and exits 0.Verified the dry-run path is genuinely free before suggesting it:
Also worth noting for whoever picks this up: the plugin's default is
"sandbox": "real"and"mutator": "deterministic"— so a--confirmrun costs real test executions but no API key (noOPENROUTER/API_KEYreference anywhere inevolve.mjsor_darwin.mjs).The class of bug, not just the instance
A
VERIFIED NULLis a measurement with a timestamp that isn't written down. It was true when taken and silently became false when ruflo shipped a new subcommand — and nothing re-checks it, because the failure mode is a capability quietly never being offered.This is the same shape as the
anticipate.shpath assertion in #114: a comment asserting a fact about the environment, correct when written, with no test binding it to reality.Suggested fix, in preference order:
ruflo metaharness --helpat detect time rather than hardcoding the list — the same disciplineinstaller-sibling-imports-packaged.test.mjsalready applies ("the list is DERIVED from install.mjs by reading its actual import sites — never hand-maintained").--helpgains a subcommand the header doesn't list.VERIFIED NULLclaims and name the version they were verified against, so staleness is visible on read.Happy to send a PR for (1) if you'd like it.
Environment: ruflo v3.34.0 · ruvnet-brain plugin 4.0.7 · macOS