8 Commits
Author SHA1 Message Date
randRuFlo d2a2c98c9c review(#4096): shared-screen references and email verb, plugin version bumps, helpers re-signed
Independent review of #4096 (issues #4093-#4095). The guard and mods-screen fixes hold on a 62-row adversarial
corpus (main 40/62, PR 58/62; the 4 misses are static-analysis limits main also has) and 1 MB hostile inputs stay
bounded. Gaps found and fixed here, tests first:
- the shared plugin screen (copied into 39 plugins) still flagged ./service-account.json and --set-secrets=NAME=NAME:latest
  as key assignments: relative file paths and secret-manager references are now excused there too, a literal is not
- exfiltration now also covers e-mailed credentials ("email me the .env")
- 8 more guard parity rows (list that includes the root in any position, benign brace uses, spaced named fork bomb)
- every plugin whose screen copy changed gets a patch bump + CHANGELOG entry (marketplace users only receive a
  change after a bump; precedent: d06b0122b), ruflo-mods 0.6.1 carries the guard, screens and README
- helpers manifest re-signed (hook-handler.cjs changed)

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-12 13:39:02 -04:00
randRuFlo ac583cd342 fix(plugins): group B skills and agents use real CLI flags and MCP parameter names
Verified every CLI flag and MCP call example in ruflo-core, cost-tracker, daa,
ddd, deepseek-harness, docs, federation and goals against the published CLI
(3.56.5) and the tool schemas in source:

- hooks post-task has no --train-neural (8 agents/skills); neural train takes
  --pattern, not --pattern-type; hooks worker dispatch takes --context, not
  --scope (docs scoping was silently ignored).
- agentdb_* examples used non-existent parameters (semantic-route query ->
  input; causal-edge from/to/type -> sourceId/targetId/relation; hierarchical
  store/recall path/data/depth -> key/value/tier and query/topK; pattern-search
  limit -> topK; context-synthesize sources -> maxEntries); ddd skills used a
  CLI-style --parent/--child form that failed on required key/value. The
  researcher agent now follows edges with graph-query/graph-pathfinder.
- hooks_worker-status has no worker filter; cost docs now filter the result.
- dossier-collect/investigator fetch web content: add untrusted-content rules
  and AIDefence screening. deepseek skills state the data egress.
- Stale smoke/tool/command counts and four dead relative links fixed.

Patch-bumps each changed plugin with a CHANGELOG entry.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-11 11:26:09 -04: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 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 cb2fcafbde feat(ruflo-docs): function-hook mod (secret guard, /docs-mod, status file)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-04 15:34:05 -04:00
ruvnet e332689b8c fix(release): harden hooks, statusline, security, and plugin MCP integration 2026-07-16 23:06:29 -04:00
ruv 6198abfab7 fix(plugins): reconcile stale smoke contract assertions across 23 plugins
full-system-test surfaced 23/32 plugin smoke contracts failing on a
single drifted assertion: the smoke gate greps ADR-0001 for
`status: Proposed`, but those ADRs were long since promoted to
`Accepted` without updating the gate. Flip the assertion (label, grep,
message) Proposed -> Accepted only where the ADR is genuinely Accepted.

ruflo-core additionally had a stale version assertion (0.2.0 -> 0.2.2).

Left untouched: ruflo-adr, ruflo-browser, ruflo-intelligence — their
ADR-0001 is genuinely Proposed, so their smokes correctly assert it.
No plugin source or ADR changed — only the drifted test assertions.

All 32 plugin smoke contracts now pass; full-system-test is 4/4 green.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-05-29 15:00:34 -04:00
ReuvenandRuFlo 0648218312 feat(ruflo-docs): v0.2.0 — adopt plugin contract (ADR-0001, document-worker contract, namespace coordination)
- ADR-0001 (Proposed) at docs/adrs/0001-docs-contract.md
- README adds Compatibility (pin v3.6, Haiku agent model), Document-worker
  contract (trigger:document with optional scope: api or file path),
  Namespace coordination (claims docs-drift for drift-detection state),
  Verification + Architecture Decisions sections
- plugin.json bumps 0.1.0 → 0.2.0; description names the document worker;
  keywords add jsdoc, openapi, mcp
- scripts/smoke.sh — 10 structural checks: version + keywords, 2 skills
  with frontmatter, agent + command present, hooks_worker-dispatch
  referenced, document trigger doc'd, v3.6 pin, namespace coordination,
  docs-drift claimed, scope table doc'd, ADR Proposed, agent uses Haiku

Verification: bash plugins/ruflo-docs/scripts/smoke.sh → 10/10

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-05-04 20:01:39 -04:00