Tracking issue for ADR-153 — population-based harness self-improvement via @metaharness/darwin@0.1.0.
Summary
@metaharness/darwin is the write layer of the metaharness ecosystem. Where ADR-150 gave ruflo score / genome / mcp-scan / threat-model / oia-audit / similarity / drift-from-history (all read-only), Darwin Mode evolves a harness's 7 policy surfaces under a sandbox + safety inspector + promotion gate. The model is frozen; the harness evolves.
Architectural constraints (per ADR-153, mirrors ADR-150)
- Removable —
npm ls --without @metaharness/darwin produces a working CLI
- Optional —
@metaharness/darwin lives in optionalDependencies, never dependencies
- Graceful degradation —
MODULE_NOT_FOUND emits {degraded: true, reason: 'metaharness-darwin-not-installed', ...} and exits 0
- CI gate —
no-metaharness-smoke.yml covers absence; metaharness-ci.yml adds a 5-min dry-run job
Phase 1 MVP — checklist
Explicit non-goals (Phase 1)
- No model fine-tuning (model is frozen; harness evolves)
- No auto-evolve in CI (user-initiated operation only)
- No bypass of existing CVE / threat-model / mcp-scan checks
- No cross-repo promotion (federation is Phase 3)
- No in-place mutation of ruflo's own surfaces — variants land under
.metaharness/variants/, promotion stays a manual PR through normal review
Phases 2-4 (out of scope for this issue)
| Phase |
Scope |
| 2 |
Witness-sign winning archives (ADR-103) so promoted variants carry cryptographic provenance |
| 3 |
Federated archives — share lineage trees across ruflo installations via the IPFS pattern from hooks transfer |
| 4 |
Per-repo policy file .metaharness/policy.json — restrict which surfaces may mutate |
Acceptance criteria
- All 4 ADR-153 architectural constraints verifiable via existing CI workflows
- Local validation:
bash plugins/ruflo-metaharness/scripts/smoke.sh step 18 green
- Local validation:
npx ruflo evolve /tmp/seed-repo --generations 1 --children 1 produces archive/lineage/winner JSON
- Local validation:
npm uninstall @metaharness/darwin && npx ruflo evolve . emits {degraded: true, reason: 'metaharness-darwin-not-installed'}, exits 0
- CI validation: new
darwin-dryrun job in metaharness-ci.yml green
- Doctor validation:
npx ruflo doctor --component metaharness includes a darwin: { installed: true/false, version: '...' } row
Cross-references
Target release
ruflo@3.13.0 (MINOR — new CLI surface + MCP tool count, ADR-150 + ADR-153 are siblings).
🤖 Generated with RuFlo
Tracking issue for ADR-153 — population-based harness self-improvement via @metaharness/darwin@0.1.0.
Summary
@metaharness/darwinis the write layer of the metaharness ecosystem. Where ADR-150 gave rufloscore/genome/mcp-scan/threat-model/oia-audit/similarity/drift-from-history(all read-only), Darwin Mode evolves a harness's 7 policy surfaces under a sandbox + safety inspector + promotion gate. The model is frozen; the harness evolves.Architectural constraints (per ADR-153, mirrors ADR-150)
npm ls --without @metaharness/darwinproduces a working CLI@metaharness/darwinlives inoptionalDependencies, neverdependenciesMODULE_NOT_FOUNDemits{degraded: true, reason: 'metaharness-darwin-not-installed', ...}and exits 0no-metaharness-smoke.ymlcovers absence;metaharness-ci.ymladds a 5-min dry-run jobPhase 1 MVP — checklist
@metaharness/darwin@~0.1.0tooptionalDependenciesof:package.json(root umbrella)ruflo/package.jsonv3/@claude-flow/cli/package.jsonplugins/ruflo-metaharness/scripts/evolve.mjs— spawn wrapper, degraded payload on MODULE_NOT_FOUND, surfaceswinner.json+ top-N leaderboardnpx ruflo evolve <repo>(mirrorsruflo eject), ormetaharness evolvesubcommand — decide before implementationmcp__claude-flow__metaharness_evolvewith ADR-112 "Use when ..." guidancenpx ruflo doctor --component metaharnessextended to report@metaharness/darwinavailability +metaharness-darwin --versiondarwin-dryrunjob in.github/workflows/metaharness-ci.yml:metaharness-darwin evolve . --generations 1 --children 1 --concurrency 1 --seed 0on a seed repoarchive.json+lineage.json+reports/winner.jsonexistplugins/ruflo-metaharness/scripts/smoke.sh— 5 grep checks + 1 runtime degraded-path check.github/workflows/no-metaharness-smoke.ymlgraceful-degradation drill to cover darwinCLAUDE.mdMetaHarness section withruflo evolve+metaharness_evolvedocs/metaharness-user-guide.mdExplicit non-goals (Phase 1)
.metaharness/variants/, promotion stays a manual PR through normal reviewPhases 2-4 (out of scope for this issue)
hooks transfer.metaharness/policy.json— restrict which surfaces may mutateAcceptance criteria
bash plugins/ruflo-metaharness/scripts/smoke.shstep 18 greennpx ruflo evolve /tmp/seed-repo --generations 1 --children 1produces archive/lineage/winner JSONnpm uninstall @metaharness/darwin && npx ruflo evolve .emits{degraded: true, reason: 'metaharness-darwin-not-installed'}, exits 0darwin-dryrunjob inmetaharness-ci.ymlgreennpx ruflo doctor --component metaharnessincludes adarwin: { installed: true/false, version: '...' }rowCross-references
ruvnet/agent-harness-generator/packages/darwin-modeTarget release
ruflo@3.13.0(MINOR — new CLI surface + MCP tool count, ADR-150 + ADR-153 are siblings).🤖 Generated with RuFlo