The mission goal was cut at 500 characters and drawn on one clipped line; the host Input is one line and hides the rest. A live mirror
under every field shows all lines, views draw text in full with an explicit marker, limits are checked before sending with the exact
count, and every silent slice/plain cap on typed text is removed or made a counted refusal. console 0.39.1.
Co-Authored-By: RuFlo <ruv@ruv.net>
One dependency-free policy (canonical in ruflo-mods, byte-identical copies in console,
swarm and protector, checked by scripts/sync-toast-policy.mjs and each smoke.sh): level
prefixes, one washed line of at most 120 characters, 60 s de-duplication, four toasts a
minute per source with errors held and counted, the person's all/important/off setting and
per-source mute (console Settings, mirrored to a file the others read), and a digest of
every toast kept for the console's Events page. All call sites migrated; new toasts for a
mission that finishes or fails and a swarm subagent that fails or a loop that is stuck.
Versions: console 0.37.0, swarm 0.3.4, protector 0.1.1, mods 0.3.16.
Co-Authored-By: RuFlo <ruv@ruv.net>
Supersedes the accidental "test" commit above, which pushed placeholder
content for this file while I was isolating a git-push transport issue
(repeated 500s from the smart-HTTP receive-pack endpoint led me to try
the REST push_files path, and a literal test payload went through
before I'd swapped in the real content).
The audit-env-var-precedence check (#1902/#1903/#1904 job) flagged
hive-mind-tools.ts's readBootstrapSecret() as an undocumented env read.
It's a server-side operator credential (ADR-476), same category as
RUFLO_ADMIN_TOKEN/RUFLO_X_ADMIN_TOKEN/SERAPHINA_METALLM_KEY already in
KNOWN_ESCAPE_HATCHES: a secret must never be a CLI flag, and it configures
the server rather than one invocation.
Co-Authored-By: RuFlo <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_0154oN1EzxHHtaHEKXyXxpmc
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>
The plugin CLI resolvers added for #3558 read two test seams that force
the PATH and npx fallbacks. Plugin scripts have no CLI-flag surface, so
they follow the RUFLO_METAHARNESS_SKIP_LOCAL precedent (Option B) rather
than growing a flag. Fixes the 'Plugin package install-safety' job.
Co-Authored-By: ruflo <ruv@ruv.net>
`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>
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>
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>
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>
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>
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>
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>
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>
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>