Commit Graph
318 Commits
Author SHA1 Message Date
ruv baf97eb242 merge origin/main into the sentry/results PR (excluded-test list: keep both sides) 2026-10-05 18:53:49 -04:00
ruv aa1825d7b6 ci: the protector kit tests run under claude plugin test, not root vitest
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 15:49:09 -04:00
ruv 3fc617f0d3 ci: the new result-display kit test runs under claude plugin test, not root vitest
It imports claude-code/testing, which only exists inside Claude Code, so the ratchet reported it as an unexpected failing file. It joins the
excluded list (scripts/ci-test-excluded.txt) like every other plugin kit test.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 15:48:53 -04:00
ruv 668ee8d1e9 fix(ci): the test ratchet no longer runs files vitest cannot run (71 plugin kit tests and node:test files)
`Test Suite (ubuntu-latest)` failed with "71 unexpected failing file(s)": 66 plugin kit tests that import `claude-code/testing` (only
resolvable inside Claude Code) and 5 node:test files vitest finds no suite in. None is a regression; each has its own gate
(`claude plugin test` in every plugin smoke, `node --test` in all-plugins-smoke). They are now listed in scripts/ci-test-excluded.txt and
passed to vitest as excludes. A listed file that no longer exists fails the ratchet, and the baseline stays untouched and shrink-only.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 13:21:43 -04:00
ruv 8d32e0f642 test(mods): tripwire against forwarding a mod status file into model context (ADR-450 T7)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 05:37:46 -04:00
ruv edcc32f494 test(ruflo-mods): live verification of capabilityProbe and sessionRollup against real headless sessions
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 04:36:37 -04:00
ruv 0bae1e47e7 fix(mods): a domain plugin's refusal of another plugin's memory_store no longer claims the write (variant B, review #8)
Every guard still refuses exactly the same inputs (4752-case A/B against origin/main: 0 decision diffs, 744 message-only diffs).
When music, neural-trader, migrations, observability, rvf or ruvector refuse a memory_store whose namespace they do not own, the
message now says a secret-shaped value was found in a memory write and which namespace was targeted (short plain text, stripped and cut,
dropped if secret-shaped), never an owner and never content. Patch bumps: music 0.2.3, neural-trader 0.3.4, migrations 0.3.3,
observability 0.3.3, rvf 0.3.5, ruvector 0.3.4.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 04:07:46 -04:00
rUv 3de4a21ae3 Merge pull request #3762 from ruvnet/loop/live-writers
docs(agentdb): live proof the four new guarded writers refuse secrets; memory_import gap documented
2026-10-05 00:32:15 -07:00
ruv 620ce56fff test(agentdb): live check that the four newly guarded writers refuse a secret in a real session
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 03:07:59 -04:00
ruv e1e6762a85 test(ruflo-mods): measure agentTrim token saving and dispatch behaviour live
Adds scripts/live-ruflo-mods-trim.sh and the measured report: 4,236 fewer prompt tokens with 59 of 69 types hidden; an unnamed hidden type is refused at dispatch; a prompt-named type is not offered in a headless listing.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 02:53:23 -04:00
ruv 41be093926 test(mods): live headless proof of ruflo-mods route, deny, heartbeat and /ruflo-mods paths
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 01:56:36 -04:00
ruv 9f2e76bcb0 Merge origin/main into loop/ux-room; console 0.33.8
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 01:21:14 -04:00
rUv 5ac2886bc9 Merge pull request #3734 from ruvnet/loop/cap-r4
fix(mods): refuse input past the screen budgets in every guard; known holes 32 -> 0
2026-10-04 21:56:07 -07:00
rUv 67a3e7e108 Merge pull request #3733 from ruvnet/loop/live-mods
fix(ruflo-mods): live validation of toolHints/agentTrim; correct agentTrim text (0.3.2)
2026-10-04 21:39:45 -07:00
ruv d06b0122be fix(mods): shared textsOf reports truncation and every guard fails closed on it
The walker dropped input past its node, character and per-string budgets
silently, so 32 guards passed a secret placed after the cap. textsOf now
appends a TRUNCATED marker; names/hasSecretIn treat it as a finding. Regenerated
the 38 copies, bumped the 39 plugins, emptied the known-holes baseline.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 00:27:13 -04:00
ruv c9f47b7232 Merge remote-tracking branch 'origin/main' into loop/live-mods 2026-10-05 00:26:24 -04:00
ruv ebe2f82146 ruflo-mods 0.3.2: live validation of toolHints/agentTrim/status, correct the agentTrim option text
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 00:25:30 -04:00
ruv d855f75264 Merge remote-tracking branch 'origin/main' into loop/cap-r3 2026-10-05 00:14:43 -04:00
ruv 1ff11ce4e8 test(mods): fleet guard probe covers structured credentials and walker budgets
Adds structured (name/value pair) and budget (past the node and character
caps) probe classes. Finds 32 guards that pass a secret past the 25000-node
walker budget; recorded in the known-holes baseline, not fixed here (the
root cause is the vendored shared region owned by the sync generator).

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-05 00:11:15 -04:00
ruv 21adb5ce28 feat(mods): vendor the flag option parser from one origin with the screen sync and drift check (review #2)
Extend scripts/sync-mod-screen.mjs to a second kit: the flag() helper in hooks/options.ts of 38 mods now sits between SHARED FLAG markers and is
rewritten/checked from ruflo-agentdb. Drift, a lost marker or zero copies fails --check. Bump the 39 touched plugin versions and their version pins.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 23:46:06 -04:00
ruv fc10f0be2a Merge remote-tracking branch 'origin/main' into loop/hook-latency 2026-10-04 23:13:55 -04:00
rUv dd6d201246 Merge pull request #3724 from ruvnet/loop/live-recall
fix(ruflo-agentdb): live-verified recall (0.4.1) + live harness and report
2026-10-04 20:08:36 -07:00
ruv fd3fade675 Merge origin/main into loop/live-recall
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 22:50:32 -04:00
ruv 86f4032195 fix(ruflo-agentdb): live-verified recall (0.4.1) + live harness and validation report
Run against a real initialised AgentDB with real MCP servers and headless haiku
(v3/docs/validation/agentdb-recall-live-2026-10.md, scripts/live-agentdb-recall.sh).

Defects found by the live run and fixed:
- status.json only flushed on attach/block: skipped, timed-out, cached and error
  counters were invisible; add lastReader and lastError
- a permission-refused or failing reader call was swallowed and read as "nothing
  relevant"; now counted in errors/lastError
- memory_search (the only semantic reader) was never used; it is now the first
  reader, whole prompt only, and its 60-character value cut is completed with
  memory_retrieve before the screen and the frame
- ruvector scores arrive as strings and are noise (-0.10..0.10); read numeric
  strings and skip results scoring under 0.25
- an all-unsafe answer ended the search, hiding a clean memory behind a poisoned
  one; the walk continues and dropped counts each note once
- readers were cached even when none was connected
- add directed-at-the-assistant phrasing rules (plugin-local): haiku followed 6 of
  10 injected directives that passed the shared screen, whatever the frame said

41 plugin tests (was 26), smoke 19/19, claude plugin validate passes.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 22:48:04 -04:00
ruv d9bc8539ec Merge remote-tracking branch 'origin/main' into loop/cap-audit 2026-10-04 22:44:39 -04:00
rUv a4b990e88f Merge pull request #3721 from ruvnet/loop/adr-index
docs(adr): mod-system ADR index (404, 406–451), status/date/cross-link corrections, and an ADR link + duplicate-number check
2026-10-04 19:44:32 -07:00
ruv ed6af7710e Merge remote-tracking branch 'origin/main' into loop/cap-audit 2026-10-04 22:22:39 -04:00
ruv ebf229a12b Merge remote-tracking branch 'origin/main' into loop/adr-index 2026-10-04 22:21:39 -04:00
ruv b545645d41 Merge remote-tracking branch 'origin/main' into loop/guard-hardening
# Conflicts:
#	scripts/probe-mod-guards.known-holes.json
2026-10-04 22:11:05 -04:00
ruv a959998417 docs(adr): mod-system ADR index, status/date/cross-link corrections, ADR link check
Index of ADRs 404-451 with status, builds-on, PR and tests. Corrects ADR-404/444/447
statuses that contradicted shipped code, 444-446 dates (committed 2026-10-04), stale
follow-ups in 446/448, adds superseded-in-part back-links (422, 424, 430 amendments)
and scripts/check-adr-links.mjs (+node:test) for broken links and duplicate numbers.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 22:03:45 -04:00
ruv e117918a6f test(mods): regenerate the guard-probe baseline and report against main (key-name / budget fixes landed in #3708/#3710)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 21:34:29 -04:00
ruv 41358126ab Merge remote-tracking branch 'origin/main' into loop/guard-probe 2026-10-04 21:29:59 -04:00
ruv a98f66344f docs(mods): capability review 2026-10 and matrix generator
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 21:19:34 -04:00
ruv c4116f2377 ruflo-console 0.33.2: Room and Mods UX — clickable Mods detail, blocked filter, jump from feed entries
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 21:17:55 -04:00
ruv b1a6243a86 Merge remote-tracking branch 'origin/main' into loop/screen-vendor
# Conflicts:
#	.github/workflows/all-plugins-smoke.yml
2026-10-04 21:06:45 -04:00
ruv 53de5bb936 fix(mods): one iterative textsOf in the shared screen — depth, sibling, size caps, object keys and the invisible-character set fixed at the root (ADR-445)
Replaces 37 copy-pasted recursive walkers with a shared breadth-first one (keys as key=value, overlapping windows for long strings, node and char budgets) and widens INVISIBLE (soft hyphen, bidi isolates, Mongolian separator, more). Probe holes 788 -> 0.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 20:51:39 -04:00
ruv cb889f86df Merge branch 'loop/guard-probe' into loop/guard-hardening 2026-10-04 20:39:26 -04:00
ruv 5d8ab06dc4 test(mods): guard probe timing is a hang gate (median of 3 > 1000 ms), 50 ms/50x advisory; bare --known-holes; wider watchdog
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 20:34:20 -04:00
ruv b39cf24273 bench(mods): per-event hook latency across the plugin mods; measured, no optimization justified
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 19:47:20 -04:00
ruv bf84712833 test(mods): probe gate fails on lost calibration; --report splices below the marker
A baselined guard that stops refusing anything is now a failure, not 26 fixes;
fixed holes need an actual pass. --report preserves hand-written text above the
generated marker. Two tests added; report regenerated.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 19:40:23 -04:00
ruv 7de1657db8 test(mods): fleet adversarial probe for every plugin guard (W6)
scripts/probe-mod-guards.mjs bundles each hooks/guard.ts with esbuild and runs a
97-probe corpus through its verdict: invisible/bidi splits, nesting to 5000,
wide/huge inputs, secrets in object keys, encodings, regex-DoS stress timed per
call (50 ms gate), benign look-alikes. Calibrates each guard's real secret
surface first so a miss is a real bypass. A fast subset runs last in
smoke-all-plugins against a known-holes baseline. Findings (4 root causes across
32 guards, no ReDoS/crash/hang) are in v3/docs/validation/mod-guard-probe-2026-10.md.
No plugin code changed.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 19:35:38 -04:00
ruv 71bf281bf0 refactor(mods): one source for the secret screen — sync-mod-screen.mjs regenerates the shared region of 37 screen.ts copies, --check in all-plugins-smoke (ADR-445)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 19:03:37 -04:00
ruv 00eed549d4 test(mods): check that every tool name a plugin guard watches exists in the registry
Adds scripts/check-guard-tool-names.mjs, an allowlist for tools other servers
serve, node:test tests, and a step in the all-plugins-smoke workflow. Fails
loud when nothing is extracted or the registry is empty.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 19:02:02 -04:00
rUv 090c88cf2a Merge pull request #3703 from ruvnet/fix/3698-plugin-beta-feedback
fix: address Ruflo mod and console beta feedback
2026-10-04 14:06:12 -07:00
rUv 1b62011183 fix(guidance): close source identity, offline export and serialization edge cases 2026-10-04 13:43:46 -07:00
rUv 2207f8779a feat(guidance): bind mod exports to Git blobs and explain review signals 2026-10-04 13:38:29 -07:00
rUv 668f99dc33 fix: address Ruflo mod and console beta feedback (#3698) 2026-10-04 13:25:23 -07:00
ruv d9a6258895 chore: bump ruflo-console 0.28.0, ruflo-goals 0.3.0, ruflo-mods 0.1.1; baseline research.test.ts
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 00:28:33 -04:00
ruv 1156cb6b82 feat(ruflo-console): 0.25.0 — a compact nav: groups, one group's pages and a search, ADR-424
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-03 14:42:14 -04:00
ruv 9716a2e483 feat(ruflo-console): 0.24.0 — Start here steps on pages with an order, ADR-423
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-03 11:42:25 -04:00