3 Commits
Author SHA1 Message Date
rUv 313f2f88e0 feat(intelligence): per-task bandit priors (ADR-142) + honest EWC/HNSW/MicroLoRA labeling (3.10.9) (#2231)
Completes the intelligence-audit punch-list with the fixable items, and
documents the honest ceilings for the rest.

FIXED
- Per-task bandit priors (ADR-142): model-router Beta priors are now keyed by
  complexity bucket (low/med/high) instead of global-per-model, so failures on
  one task type no longer suppress a model for ALL types. Backward-compatible
  schema migration (v1 flat -> seed all buckets, version:2). +isolation +migration
  tests; router-bandit suite made bucket-aware (8/8).
- EWC++ honesty: header doc clarifies F_i is a heuristic embedding-importance
  proxy (embedding_i^2), not true gradient-curvature Fisher.
- HNSW backend label: getStatus().backend -> 'ruvector-native' vs
  'ruvector-stub-search-disabled'. isWasm()===true means the broken stub
  (search returns []), not acceleration, so a regression is now visible.
- MicroLoRA: fixed the genuine applyUpdates() signature bug (passed Float32Array
  where the WASM runtime wants a scalar learning rate).

HONEST CEILINGS (re-confirmed NOT fixable in-repo, documented in the audit ledger)
- WASM-accelerated HNSW: no WASM HNSW build exists in the stack; native NAPI is
  already fastest (~1.9-6.5x at N=20k); 150x-12,500x unreachable here.
- WASM MicroLoRA apply(): empirically still inert after the flush (delta=0); we
  do NOT fabricate a gradient from scalar quality to fake adaptation.

Verification: cli build clean; 23/23 targeted tests pass (bandit 8 + bug-cluster 15).
2026-05-29 13:35:44 -04:00
rUv a73a2cbe32 fix(routing): stale route cache + --explore false (3.10.8) (#2229)
* feat(workflows): add native Workflow JS orchestration surface (ADR-0002)

ruflo-workflows now documents both workflow surfaces: the existing 10
workflow_* MCP tools and the native Claude Code Workflow JS capability
(.claude/workflows/*.js — agent/parallel/pipeline/phase fan-out).

- ADR-0002 (Accepted): adopts native orchestration alongside the MCP surface
- Reference workflow .claude/workflows/plugin-contract-audit.js (fans smoke
  contracts across all plugins, diagnoses failures in parallel)
- README: native orchestration section + four-hook API + surface decision table
- workflow-create/workflow-run skills, workflow-specialist agent, /workflow
  command made surface-aware
- plugin.json 0.3.0 -> 0.4.0; native-workflow keywords + component block
- smoke.sh reconciled (stale version + ADR-0001 status) and extended 11 -> 15
  checks; smoke-gaia.sh version assertion bumped to 0.4.0

Co-Authored-By: RuFlo <ruv@ruv.net>

* fix(routing): #bugB stale route cache + #bugC --explore false (3.10.8)

Two routing-learning correctness bugs from the intelligence audit's remaining
punch-list (docs/reviews/intelligence-system-audit-2026-05-29.md §Remediation).

- Bug B (stale route cache): QLearningRouter.update() only invalidated the
  whole route cache every 50 updates, so a freshly-learned Q-update stayed
  hidden behind a stale cached decision — feedback appeared to have no effect
  on routing in-process until 50 updates accumulated. Now update() invalidates
  the updated state's cache entry immediately (new invalidateCacheEntry).
  Verified: learned route flips coder→researcher within 10 updates (was 50+).

- Bug C (--explore false ignored): boolean flags dropped an explicit space-form
  value, forcing a default-true boolean (explore) to true even with
  , so exploitation could never be forced. parser.ts now
  consumes a true/false literal for boolean flags (--explore false / -e false),
  while --explore=false and --no-explore keep working. Verified deterministic.

+4 regression tests (15/15 bug-cluster pass); 52/52 parser tests pass; cli
build clean. Audit doc updated with full remediation status (3.10.7 + 3.10.8
shipped; SONA-default/MicroLoRA/EWC-Fisher/per-task-bandit deferred with
honest rationale — the latter two need an ADR/upstream fix, not a patch).

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-05-29 13:02:15 -04:00
rUv 08b3623759 fix+perf+docs(intelligence): self-learning audit, hardening fixes, honest perf numbers (3.10.7) (#2228)
* docs(review): empirical capability audit of the intelligence/self-learning system

6 parallel auditors ran real measurements against built dist (not docs).
- Self-learning loop is REAL, measured end-to-end (pattern confidence +
  Q-routing change persist cross-process; MoE gating converges; SONA WASM
  adapt 0.0042ms; Int8 3.92x; RaBitQ 32x memory — all CONFIRMED).
- Performance multipliers largely UNSUBSTANTIATED: HNSW 150x-12,500x measured
  1.48x peak; Flash Attention 2.49-7.47x fabricated via Math.random() at
  runtime; embeddings 75x / RaBitQ 2.70x retrieval never benchmarked.
- 1 critical bug: CLI inverts negative reward (route feedback -r -1.0 -> +1.00).
- Real-but-inert: WASM MicroLoRA apply(), MCP consolidation gradient (synthetic),
  hooks_intelligence_learn (cosmetic), CLI trajectory-* (no-op stubs), silent
  mock-embedding mislabel.

No source modified — audit branch only. Prioritized fix list in the report.

Co-Authored-By: RuFlo <ruv@ruv.net>

* fix+perf(intelligence): harden self-learning system + replace fabricated/unsubstantiated perf numbers with measured ones

Implements the prioritized fix list from docs/reviews/intelligence-system-audit-2026-05-29.md.

FIXES
- CRITICAL (audit #1, #2222 follow-up): CLI inverted negative reward — route feedback
  -r -1.0 / --reward -1.0 parsed as +1.00, so negative feedback REINFORCED the bad
  agent. Fixed in src/parser.ts (isFlagValue accepts negative numeric literals). All
  three syntaxes now yield -1.0; +6 regression assertions; 52/52 parser tests pass.
- audit #2: removed fabricated Flash Attention speedup (randomized/midpoint telemetry)
  in attention-coordinator (swarm + integration) -> unmeasured sentinel + unverified.
- audit #3: generateEmbedding returns backend:onnx|mock, surfaced in bridge_status /
  import_claude so mock embeddings are never mislabeled as real ONNX.
- audit #4/#5: trajectory-end no longer feeds EWC a synthetic sine gradient;
  hooks_intelligence_learn runs a real distill/consolidate cycle. New test added.

OPTIMIZE (HNSW, measured): root cause — HNSW never ran (no storagePath -> native DB
lock held by daemon -> silent catch{} -> brute force). Fixed vector-db.ts (unique
storagePath, hnswConfig m:32/efC:200, visible fallback warning). Same-harness
before->after: N=5000 0.92x->3.2-4.7x, N=20000 0.95x->1.89x; N=1000 below crossover
(reported honestly); reverted m16/efC64 (recall loss).

BENCHMARK: new scripts/benchmark-intelligence.mjs (HNSW N=1k-50k, Int8 3.84x/cos
0.99999, RaBitQ 32x/0.60ms, SONA 0.0043ms, MoE 0.13->0.88, embedding backend).

DOCS: README + 3x CLAUDE.md + READMEs perf tables now show MEASURED values or
unverified/target; HNSW 150x-12,500x & Flash 2.49-7.47x marked NOT reproduced.

Verification: cli build clean (tsc); 161/161 targeted tests pass.

Co-Authored-By: RuFlo <ruv@ruv.net>

* chore(release): bump 3.10.6 → 3.10.7 (intelligence hardening + honest perf docs)

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-05-29 12:13:53 -04:00