Commit Graph

411 Commits

Author SHA1 Message Date
ruv 6b735a1537 darwin-plugins iter 2 — ruflo-goals: fix invalid --train-neural flag on post-task (belongs to post-edit) 2026-06-26 20:13:43 -04:00
ruv 16748510c6 darwin-plugins iter 2 — ruflo-daa: tighten /daa command to use detailed:true and remove unmet knowledge-share aggregate claim 2026-06-26 20:13:28 -04:00
ruv 0afaf63bc1 darwin-plugins iter 2 — ruflo-federation: fix misleading commands table (slash commands vs skills)
Co-Authored-By: RuFlo <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_01EYpeWgqLx3Q3yL2R2ePfmG
2026-06-26 20:13:16 -04:00
ruv 1df7d4e0d3 darwin-plugins iter 2 — ruflo-autopilot: fix /autopilot config flag names to match MCP signature (maxIterations/timeoutMinutes) 2026-06-26 20:12:51 -04:00
ruv 09eac92096 darwin-plugins iter 2 — ruflo-graph-intelligence: remove broken bench script (missing scripts/benchmark-substrate.mjs) 2026-06-26 20:12:32 -04:00
ruv 39bb83557c darwin-plugins iter 2 — ruflo-browser: fix stale tool count (18 interaction + 5 lifecycle, not 23+5) 2026-06-26 20:12:30 -04:00
ruv 4d7515cd06 darwin-plugins iter 2 — ruflo-agent: document nested-subagents skill in README 2026-06-26 20:12:10 -04:00
ruv 6ae2746ee4 darwin-plugins iter 2 — ruflo-agentdb: replace unverified 150x-12,500x HNSW claims with measured ~1.9x-4.7x 2026-06-26 20:11:39 -04:00
ruv 53916ea2e7 darwin-plugins iter 2 — ruflo-core: refresh stale tool/plugin counts (300+→314, 30+→32) 2026-06-26 20:11:27 -04:00
ruv 4717e3c85f darwin-plugins iter 2 — ruflo-cost-tracker: dedupe 'budget' keyword in plugin.json 2026-06-26 20:11:27 -04:00
ruv 8b565dfb29 darwin-plugins iter 2 — ruflo-adr: fix stale skills table + smoke count (3→4 skills, 10→15 tests) 2026-06-26 20:11:25 -04:00
ruv 347c0b8608 darwin-plugins iter 2 — ruflo-aidefence: declare allowed-tools on /aidefence command 2026-06-26 20:11:19 -04:00
ruv 463aa363d1 darwin-plugins iter 1 — ruflo-graph-intelligence: add ADR-112 'Use when' guidance to 5 MCP tool descriptions 2026-06-26 20:04:34 -04:00
ruv 0403f2bea9 darwin-plugins iter 1 — ruflo-testgen: add 'Use when' trigger guidance to test-gaps skill description (ADR-112) 2026-06-26 20:04:11 -04:00
ruv 720c27b305 darwin-plugins iter 1 — ruflo-workflows: add 'Use when' trigger to gaia-debugging skill (ADR-112) 2026-06-26 20:04:09 -04:00
ruv 938d07d097 darwin-plugins iter 1 — ruflo-swarm: add ADR-112 'Use when' guidance to swarm-init skill description 2026-06-26 20:03:58 -04:00
ruv 6a2b86d5ed darwin-plugins iter 1 — ruflo-rvf: align rvf-manage argument-hint with documented steps (add migrate|stats) 2026-06-26 20:03:56 -04:00
ruv 85e10caffa darwin-plugins iter 1 — ruflo-security-audit: add ADR-112 'Use when' guidance to skill descriptions 2026-06-26 20:03:50 -04:00
ruv 82e71f2656 darwin-plugins iter 1 — ruflo-ruvector: add ADR-112 'Use when' trigger to vector-engineer agent description 2026-06-26 20:03:41 -04:00
ruv 07054168d1 darwin-plugins iter 1 — ruflo-rag-memory: replace unverified 150x-12,500x HNSW claim with measured numbers 2026-06-26 20:03:26 -04:00
ruv 798b12abfd darwin-plugins iter 1 — ruflo-neural-trader: add ADR-112 'Use when' guidance to trader-regime description 2026-06-26 20:03:12 -04:00
ruv 132c5cf559 darwin-plugins iter 1 — ruflo-migrations: fix /migrate create step 5 to use memory_store (namespace-routed) instead of agentdb_hierarchical-store (tier-routed) 2026-06-26 20:02:58 -04:00
ruv 97f52f9ad1 darwin-plugins iter 1 — ruflo-market-data: fix market ingest cmd to use memory_store (hierarchical-* ignores namespace) 2026-06-26 20:02:56 -04:00
ruv f171f57bc1 darwin-plugins iter 1 — ruflo-loop-workers: list all 12 workers in /ruflo-loop command (was 7, plugin.json contract is 12) 2026-06-26 20:02:49 -04:00
ruv e9ed00eddd darwin-plugins iter 1 — ruflo-knowledge-graph: kg search uses pattern-search (semanticRouter disabled per #2049) 2026-06-26 20:02:46 -04:00
ruv c805a5a9b3 darwin-plugins iter 1 — ruflo-jujutsu: add 'Use when' guidance to diff-analyze skill description (ADR-112) 2026-06-26 20:02:39 -04:00
ruv 00792fd5a8 darwin-plugins iter 1 — ruflo-goals: use memory_list (not memory_search '*') in /goals
Co-Authored-By: RuFlo <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_01EYpeWgqLx3Q3yL2R2ePfmG
2026-06-26 20:02:31 -04:00
ruv fee85d97d0 darwin-plugins iter 1 — ruflo-ddd: add 'Use when' guidance to skill descriptions (ADR-112) 2026-06-26 20:02:27 -04:00
ruv a73ff2980d darwin-plugins iter 1 — ruflo-intelligence: correct Tier 1 to deterministic codemod (ADR-143) 2026-06-26 20:02:14 -04:00
ruv 44153b8aba darwin-plugins iter 1 — ruflo-iot-cognitum: add 'Use when' trigger guidance to iot-anomalies skill (ADR-112) 2026-06-26 20:02:06 -04:00
ruv e5258d919c darwin-plugins iter 1 — ruflo-federation: add 'Use when' guidance to federation-status (ADR-112) 2026-06-26 20:02:06 -04:00
ruv 2e8af5849a darwin-plugins iter 1 — ruflo-docs: add ADR-112 'Use when' trigger guidance to doc-gen skill 2026-06-26 20:02:02 -04:00
ruv 3120f50127 darwin-plugins iter 1 — ruflo-arena: add ADR-112 'Use when' guidance to run/get and run/list descriptions 2026-06-26 20:01:52 -04:00
ruv e0ffdec347 darwin-plugins iter 1 — ruflo-aidefence: add ADR-112 'Use when' guidance to SKILL descriptions 2026-06-26 20:01:49 -04:00
ruv fd8c42af30 darwin-plugins iter 1 — ruflo-core: add 'Use when' guidance to init-project skill (ADR-112) 2026-06-26 20:01:37 -04:00
ruv 26d69e504c darwin: iter 22 advance — memory documentation (Quick Start + EXAMPLES.md)
Added comprehensive getting-started guide and usage examples for ruflo-rag-memory plugin to improve memoryUsefulness scoring dimension.

Changes:
- Quick Start section in README with practical CLI and agent examples
- EXAMPLES.md with 5+ real-world usage patterns across namespaces
- Integration examples for auto-memory bridge and cross-session recall

Aim: Increase memoryUsefulness score from 40 (lowest dimension).

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-26 18:17:21 -04:00
ruv 64d0d70f22 darwin: iter 5 adr-coverage — handle full-bold MADR status style **Status: Value** 2026-06-26 16:21:58 -04:00
ruv 8c2f03e037 fix: 3 user-reported bugs — #2469 SKILL.md markdown, #2473 witness drift, #2474 ADR importer
Three bugs, one branch — all verified locally before commit.

**#2469** (AriESQ) — \`agent-docs-api-openapi/SKILL.md has malformed markdown\`
  The file had two adjacent \`---\` fenced YAML blocks at the top. Only
  the first is valid frontmatter; the second renders as \`<hr>\` + raw
  YAML text on skills.sh / GitHub web view. Wrapped the legacy agent
  YAML in a \`yaml\` code fence so it renders as code instead of leaking
  into the page body. Outer Claude Code skill frontmatter untouched.

**#2473** (verification HIGH) — witness manifest drift=8/9/9 on all 3 platforms
  My merge of #2468 changed 9 source files; their SHA-256s no longer
  matched the signed witness manifests. The Ed25519 seed is derived
  from gitCommit alone (\`sha256(gitCommit + ':ruflo-witness/v1')\`), so
  signatures generated on any one platform validate everywhere; only
  the manifest's \`os\` metadata field differs between the three.
  Re-signed all three with current HEAD source hashes — \`drift=0\` on
  all 3 platforms (was 8/9/9).

**#2474** (reimon) — ruflo-adr \`adr-index\` stores 0 records on common conventions
  Five distinct bugs in \`plugins/ruflo-adr/scripts/import.mjs\`:
  1. **(fatal)** Em-dash titles broke \`memoryStore\`: \`npm exec\` rejects
     args starting with non-ASCII dash, so every value-with-em-dash
     died with \`Records stored: 0/N\`. Use \`--flag=value\` form so npm
     sees a single argv token.
  2. \`parseStatus\` only matched \`**Status**:\` (colon outside bold) —
     missed the widely-used \`**Status:**\` (Nygard / MADR) form. Now
     accepts both placements.
  3. Body relationship regexes (\`**Supersedes**:\` etc.) had the same
     bug. Replaced with a shared \`REL(label)\` builder that accepts
     either colon placement and an optional qualifier (\`**Supersedes
     (partial):**\`).
  4. ID normalization mismatch: \`parseId\` kept \`ADR-0001\`, \`extractAdrRefs\`
     pad-then-stripped it to \`ADR-001\` → same ADR dangled. Single
     \`normalizeAdrId()\` now governs both paths.
  5. \`.claude/worktrees/*\` mirrors the repo; \`SKIP_DIRS\` didn't
     exclude \`.claude\`, so every ADR was indexed 2-3x. Added \`.claude\`
     to \`SKIP_DIRS\`.

  Verified with a synthetic fixture (3 ADRs: 1 zero-padded, 1 mixed,
  1 ADR-prefixed; em-dash titles; \`**Status:**\` and parenthetical
  qualifiers; \`**Supersedes:**\` / \`**Depends-on:**\` body relations;
  decoy worktree dir): \`Records stored: 3/3\`, all status fields
  populated, 3 edges parsed, 0 dangling refs, 0 worktree pollution
  (was: 0/3, all unknown, 0 edges).

  Em-dash fix end-to-end smoke: \`npx @claude-flow/cli@latest memory
  store --value="ADR-005 — Repository + Service Pattern"\` succeeds
  (was: \`npm error arg Argument starts with non-ascii dash\`).

Reporter @reimon and @AriESQ both filed clear, reproducible bugs with
root-cause analysis — thanks.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-26 14:40:18 -04:00
ruv 76eca40429 fix(ci): mint.mjs probes metaharness availability before dry-run plan
The no-metaharness-smoke gate asserts every metaharness skill emits a
\`"degraded"\` field when metaharness is unreachable (ADR-150 #3 —
graceful degradation). All other skills did this already; mint did not
because its dry-run path printed the plan without touching the registry.
Result: smoke-without-metaharness reported \`FAIL: mint did not emit
degraded:true payload\`.

Added a fast \`runMetaharness(['--version'])\` probe at the top of main()
so the dry-run also reports degraded:true when the registry is
unreachable. The probe is the same call the --confirm path uses
internally, so we don't add a new failure mode; we just surface the
existing one earlier.

This was the final red check on PR #2468 — all other 112 checks are
green on commit c73c8d96e.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-25 19:39:28 -04:00
ruv 1d1b5ba726 fix(ci): 17o test-mcp-tools contract — enumerate 3 new MCP tools, expect 12
Final ruflo-metaharness smoke contract failure after the count bumps:
test 17o anchors the contract test by enumerating every MCP tool name
and asserting \`tools.length === 9\`. Both lists are deliberately spelled
out so a refactor that drops a tool fails this gate. Added bench/evolve/
security_bench and bumped the count assertion to 12.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-25 18:57:11 -04:00
ruv 4b9e86840f fix(ci): bump 3 ruflo-metaharness stale lock-counts for ADR-153 tools
3 more plugin-contract failures from no-metaharness-smoke, all the same
root cause: ADR-153 added bench/evolve/security_bench MCP tools but the
smoke contract had hardcoded counts pinned to the pre-ADR-153 tool set.

  - 17z53: \`runScript('foo.mjs', ...)\` reference count 9 → 12
  - 17z9:  MCP_SUCCESS_SEMANTIC occurrence count 10 → 13 (1 decl + 12 uses)
  - 17z7:  \`success: r.success\` handler count 9 → 12
  - 17z6:  test-mcp-tools.mjs phase-1 \`tools.length === 9\` → 12, plus
           the 3 new tool names added to the expectedNames set

These are anchor counts that exist deliberately so a future iter adding
a tool also touches the smoke and CLAUDE.md catalog. Bumping in lockstep
with the 3 new tools.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-25 18:53:01 -04:00
ruv 575a7bdeed fix(ci): ruflo-metaharness smoke — fix brittle 17z61 lookback + iter-93 stale count
Two plugin-contract failures in the no-metaharness-smoke job for
ruflo-metaharness:

- **17z61** (drift-from-history dispatcher round-trip) used
  \`grep -B100\` to walk back from the step to its enclosing job header.
  metaharness-ci.yml grew past 100 lines between that step (now line 604)
  and its \`metaharness-real-data:\` job header (line 493). Replaced the
  fixed-window grep with an awk one-pass that finds the most-recent
  top-level job header above the step.

- **17z56** (every MCP tool documented in CLAUDE.md, iter 93) asserted
  exactly 9 MCP tools. ADR-153 added 3 more (\`metaharness_bench\`,
  \`metaharness_evolve\`, \`metaharness_security_bench\`) without updating
  the lock count or the CLAUDE.md catalog. Documented the 3 tools in
  CLAUDE.md and bumped the count to 12.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-25 18:36:12 -04:00
ruv d09a0e4cbd fix(ci): 5 CI failures — Build V3, Static guards, ADR-112, witness verify, supply-chain audit
Stacked fixes to clear the remaining red CI checks on \`main\` that pre-dated
the #2412 lockfile-cascade fix. Each one verified locally before commit.

1. **Build V3 (ubuntu/macos/windows)** — \`graph-edge-writer.ts\` did a static
   \`await import('better-sqlite3')\` which forces tsc to resolve the package's
   types at build time. \`better-sqlite3\` is in \`optionalDependencies\` (so
   CI doesn't install it) — type resolution failed with TS2307 on every
   platform. Routed the module name through a variable so the static analyzer
   stops trying to resolve it; runtime presence is still gated by the
   existing try/catch.

2. **Static regression guards (#2267)** — \`scripts/smoke-workflows-yaml.mjs\`
   crashed with \`SyntaxError: The requested module 'js-yaml' does not provide
   an export named 'default'\` after js-yaml dropped the synthetic default
   from its package exports. Switched to \`import * as yaml from 'js-yaml'\`.

3. **Tool description discoverability (ADR-112)** — two MCP tools regressed
   the no-guidance baseline (count went from 0 → 2):
     - \`metaharness_bench\` had no Use-when / Prefer / Pair-with hint
     - \`testgen_tdd_repair\` had \"Use when …\" in a *later* string
       fragment of a concatenated description, which the audit regex
       (single-quoted-literal-only) misses
   Added explicit \"Use when …\" guidance to the first fragment of each.
   Audit now reports 340/340 tools with guidance.

4. **witness verify precondition smoke (#1880)** — Root \`package-lock.json\`
   drifted: \`agentdb@3.0.0-alpha.16\` in lock vs \`^3.0.0-alpha.17\` in
   package.json (same root cause as #2412 but for the npm lockfile, not the
   pnpm one fixed last release). Every job that runs \`npm ci\` was failing
   at install. Regenerated via \`npm install --package-lock-only\`. Verified:
   \`npm ci --dry-run --legacy-peer-deps\` now exits 0.

5. **Supply-chain audit (#2046)** — \`plugins/ruflo-graph-intelligence\` had
   1 HIGH/CRITICAL unaccepted direct-dep finding:
     - \`ws@8.20.1\` pulled by \`sublinear-time-solver\` (GHSA-96hv-2xvq-fx4p,
       memory exhaustion DoS) — bumped root override \`ws >=8.18.4\` →
       \`>=8.21.0\` and added the same override to the plugin's own
       package.json so it propagates through the plugin's own npm install
     - \`@claude-flow/cli\` peerDep surfaces every HIGH transitive in cli's
       own tree inside the plugin's audit report — added a tracked,
       expiring accepted-finding (cli ships its own audit pipeline on
       every publish; the plugin doesn't redistribute cli's tree).
   Audit now reports \`OK: no hard-fail findings\`.

Verified locally:
  - \`npm run build\` in v3/@claude-flow/cli: clean
  - \`node scripts/smoke-workflows-yaml.mjs\`: exit 0, 53 workflows parsed
  - \`node scripts/audit-tool-descriptions.mjs\`: 340/340 with guidance, OK
  - \`npm ci --dry-run --legacy-peer-deps\` at repo root: exit 0
  - \`node scripts/audit-supply-chain.mjs\`: OK, no hard-fail findings

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-25 18:18:19 -04:00
ruv 1b336e9ced feat(testgen): Test-Driven Repair via headless claude -p (ADR-175-inspired)
Adds a new ruflo-testgen surface that closes the loop the existing TDD
plugins didn't — we generate tests, this fixes the code to satisfy them.
Inspired by agent-harness-generator/packages/darwin-mode ADR-175 Test-
Driven Repair mode, but implemented via headless `claude -p` instead of
wrapping `metaharness-darwin evolve`. Rationale:

  1. `claude -p` already in our stack (no new optional dep)
  2. Bounded cost via --max-budget-usd (first-class flag)
  3. Capability-restricted via --allowedTools Read,Edit,Bash
  4. Test exit code IS the fitness function (no LLM-as-judge)
  5. Resumable via --session-id

Surface:
  - plugins/ruflo-testgen/scripts/tdd-repair/tdd-repair.mjs (script)
  - plugins/ruflo-testgen/skills/tdd-repair/SKILL.md       (skill)
  - v3/@claude-flow/cli/src/mcp-tools/testgen-tools.ts     (MCP tool:
                                                             testgen_tdd_repair)

Pipeline (Test-Driven mode):
  1. Pre-flight: run the test command. Refuse if already passing.
  2. Spawn `claude -p` with focused prompt (read failing test, fix
     source, don't touch test, verify by running it).
  3. Re-run test to verify the fix; emit per-attempt receipts incl.
     usage.cost_usd from claude's --output-format json.
  4. If green: success. If red after --max-attempts: emit failure
     receipts; workspace left as-modified for review.

Safety (mirrors ADR-153 conventions):
  - --confirm REQUIRED (dry-run otherwise)
  - --max-budget-usd hard cap (default $5, divided across attempts)
  - --allowedTools restricts spawned claude to Read/Edit/Bash
  - --permission-mode acceptEdits (auto-accept within the allowed set)
  - 15 min hard timeout
  - Pre-flight catches --test-command typos before any spend

Conformant mode (--no-test-oracle, agent writes own repro via MCTS)
is scoped for a follow-up ADR — current --no-test-oracle returns
config error with a clear hint.

Smoke verification (docs/benchmarks/tdd-repair/SMOKE-2026-06-22.md):
  Built minimal failing-test fixture: add(a,b) returns a-b instead of
  a+b. Pre-repair: 2/2 tests fail. After `tdd-repair --confirm`:
  source patched to a+b, 2/2 tests pass. Verified by re-running.

Version bump 3.13.3 → 3.14.0 (MINOR per semver — backward-compatible
new MCP tool + new skill). Published with all three dist-tags (latest,
alpha, v3alpha) for @claude-flow/cli, claude-flow, ruflo.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-22 17:15:32 -04:00
ruv fdeacad7f8 feat(metaharness): integrate @metaharness/darwin@0.3.1 + bump umbrella to 0.2.6
Implements ADR-153 (Darwin Mode integration). Adds the WRITE layer that
closes the loop ADR-150's READ layer opens: score/genome describe a
harness; evolve changes one.

Three new surfaces, all honoring the four ADR-150 architectural constraints
(removable / optional / graceful degradation / CI-absent-path coverage):

  - harness-evolve         mutate 1 of 7 policy surfaces, sandbox-score, promote
  - harness-security-bench upstream's "Darwin Shield" (their own ADR-155)
  - harness-bench          create/verify bench suites for evolve --bench

Wiring:
  - plugins/ruflo-metaharness/scripts/_darwin.mjs       — shared subprocess helper
  - plugins/ruflo-metaharness/scripts/evolve.mjs        — main verb (--confirm gate)
  - plugins/ruflo-metaharness/scripts/security-bench.mjs — Darwin Shield wrapper
  - plugins/ruflo-metaharness/scripts/bench.mjs         — supporting verb
  - plugins/ruflo-metaharness/skills/harness-{evolve,security-bench,bench}/SKILL.md
  - v3/@claude-flow/cli/src/mcp-tools/metaharness-tools.ts — 3 new MCP tools:
      metaharness_evolve, metaharness_security_bench, metaharness_bench
  - v3/@claude-flow/cli/package.json optionalDependencies:
      + @metaharness/darwin ~0.3.1
      bump metaharness ~0.1.11 -> ~0.2.6
  - ruflo/package.json optionalDependencies: mirrored (per the #2112 lesson —
      wrapper does NOT inherit root overrides; required for transitive pin)

Safety posture (matches mint.mjs convention):
  - evolve requires --confirm; without it, returns a dry-run plan
  - Ruflo caps: --generations 1..50, --children 1..20, --concurrency 1..8,
    --population 1..20, --cycles 1..100 (upstream supports more)
  - Upstream exit code 99 (safety-disqualified) propagates VERBATIM —
    not remapped — so CI can distinguish "evolution failed" from
    "evolution surfaced a safety-tripping mutation"
  - All three scripts emit {degraded: true, reason: 'metaharness-darwin-not-available'}
    and exit 0 when the optional dep is absent

Connection to ruflo's own ADR-155 (nightly self-learning security harness,
PR #2417, issue #2418): harness-security-bench is the closest reference
implementation for our Loop A reward-signal sanity check. Running it
periodically gives us the empirical floor — if Darwin Shield's champion
reaches TPR=1/FPR=0 on the seeded corpus, our loop A's gradient signal
is sound.

Tests:
  - plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs extended
    with the 3 new scripts; all 16 assertions pass (8 skills × 2 contracts:
    exit 0 AND emit "degraded": true)
  - npx tsc --noEmit clean on v3/@claude-flow/cli

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-22 10:04:42 -04:00
rUv 11fee2a7ac Merge pull request #2383 from ruvnet/dependabot/npm_and_yarn/plugins/ruflo-graph-intelligence/vitest-4.1.9
chore(deps-dev): bump vitest from 4.1.6 to 4.1.9 in /plugins/ruflo-graph-intelligence
2026-06-17 18:42:01 -04:00
ruv daf39efa1b fix(bench): bench-recordpair-overhead emits markdown header in JSON mode (iter 137)
router-compat CI step pipes the bench's --format json output to
JSON.parse, but the script always emitted a markdown header
`# bench-recordpair-overhead` + iterations line BEFORE the JSON body.
Result:

   SyntaxError: Unexpected token '#', "# bench-re"... is not valid JSON

Same fix-class as iter 87 for bench-similarity. Guard the header
output behind `ARGS.format !== 'json'` so --format json emits pure JSON.

Local: pipes cleanly into JSON.parse — OK.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-17 17:28:25 -04:00
ruv 95dc43be20 fix(ci): bump cold-cache timeouts (iter 131)
Two CI cold-cache problems hit the 180s ceiling — bump to 300s.

(1) Windows hook execution smoke / macos-latest

   Observed running EXACTLY 180s before exit code null. macos runner's
   cold start of `ruflo init` triggers: ONNX model download, agentic-flow
   workspace init, MCP server spawn. CI's job timeout-minutes is 10, so
   300s leaves room for assertion phase. Applied to both
   smoke-windows-hook-execution.mjs and smoke-windows-init-hooks.mjs.

(2) test-mcp-tools chain-tool budget 90s → 180s

   metaharness_audit_list still timed out at 90s. Locally audit-list
   runs in ~4s; in CI, `npx @claude-flow/cli@latest memory list` pays
   the npx tarball fetch (warm) + full CLI startup (loads agentic-flow
   and ONNX). 180s gives 30x headroom over local cost.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-17 14:10:27 -04:00
ruv db1e965e19 fix(test-mcp-tools): audit_list also a chain-tool — 60s → 90s (iter 130)
In CI cold-cache, after oia_audit warms up the npx cache,
metaharness_audit_list STILL timed out at 60s. The audit_list handler
invokes `npx claude-flow memory list --namespace metaharness-audit`
which has its own cold-cache cost on first invocation (memory backend
init + ONNX embedder load if needed).

Add audit_list to the chain-tool bracket alongside drift_from_history
and oia_audit so it gets the 90s budget.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-17 13:54:44 -04:00
ruv 8df666e6d5 fix(smoke): 17z17 accepts isChainTool refactor (iter 129)
iter 128 refactored test-mcp-tools.mjs from:
   const timeoutMs = tool.name === 'metaharness_drift_from_history'
     ? 90_000 : 60_000;
to:
   const isChainTool = tool.name === 'metaharness_drift_from_history'
     || tool.name === 'metaharness_oia_audit';
   const timeoutMs = isChainTool ? 90_000 : 60_000;

The smoke step 17z17 ("drift_from_history MCP tool + CLAUDE.md
surfacing") still grep'd for the literal ternary form, so it failed
with "no-extended-timeout" after the refactor. Extended the OR-set
to include the isChainTool form.

Net: 528/528 plugin smoke steps now pass in no-metaharness-smoke CI.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-06-17 13:43:12 -04:00