Commit Graph
9020 Commits
Author SHA1 Message Date
rUv 7819992df6 Merge pull request #3961 from ruvnet/release/swarm-3.0.2
chore(release): @claude-flow/swarm 3.0.2
@claude-flow/swarm@3.0.2
2026-10-09 17:53:48 -07:00
randRuFlo c09d44cfd5 chore(release): @claude-flow/swarm 3.0.2 (carries #3929 broadcast-retry fix)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 20:40:29 -04:00
rUv 5696d1e6b2 Merge pull request #3929 from ruvnet/dream/2026-10-09-swarm
dream(swarm): #3928 MessageBus broadcast-retry re-queues under real subscriber, not 'broadcast' sentinel (evaluated, ACCEPT)
2026-10-09 15:22:16 -07:00
randRuFlo 873c5a1007 fix(swarm): skip broadcast retry re-queue for a subscriber that unsubscribed during backoff (#3928)
Without the guard the fix would recreate an orphaned queue for the departed agent. Adds a discriminating test.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 18:07:38 -04:00
r b03e7e21a1 Merge main into dream/2026-10-09-swarm 2026-10-09 18:06:38 -04:00
rUv 22b90b7ed0 Merge pull request #3959 from ruvnet/feat/session-workspace
feat(console,mods): session workspace on the Room: attention queue, browser, preview (ADR-486)
2026-10-09 15:00:12 -07:00
rUv 8c60c8c71d Merge pull request #3960 from ruvnet/release/3.56.3
release: 3.56.3 (AgentDB alpha.20, memory 3.0.3, sql.js lock guard)
v3.56.3
2026-10-09 14:51:20 -07:00
randRuFlo 3fa9d639d6 release: regenerate witness manifests (linux/macos/windows) for 3.56.3
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:34:55 -04:00
randRuFlo 11a8cf79a7 release: re-sign helpers manifest for 3.56.3
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:34:28 -04:00
randRuFlo c6fa271756 fix(v3): declare onnxruntime-common for transformers 4.2.0 in the pnpm tree; recall test tolerates alpha.20 borderline neighbour
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:33:49 -04:00
randRuFlo dffb5171e0 chore(release): 3.56.3 versions and changelog (memory 3.0.3, AgentDB alpha.20)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:26:16 -04:00
randRuFlo dd8fd3cda8 fix(memory): settle hybrid shutdown, real-path sql.js lock test for AgentDBBackend
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:25:23 -04:00
randRuFlo f047a545f0 fix(console): fold the Sessions list, honest wording, read budget for first reads, Codex sub-agent lineage
- Sessions list starts folded; jumping from the queue opens it.
- First reads past a pass's byte budget wait for the next pass ("not read yet").
- A Codex sub-agent rollout's trailing parent session_meta is lineage, not a second identity.
- ADR/CHANGELOG/README say discovery spawns nothing; the only write is the four-count summary.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:24:09 -04:00
randRuFlo c53bed71e3 feat(console,mods): session workspace on the Room: attention queue, session browser, preview (ADR-486)
Needs-you queue (approvals, questions, failures, finished-unread) across Claude Code, Codex and Ruflo
sessions, a browser grouped by repository and worktree, and a preview of the selected session. Local,
read-only discovery (no model call, no process); ambiguous identity goes to an unassigned bucket;
finished work clears only after its preview was drawn; transcript text never reaches a model, the
state, the disk or a text answer. ruflo-mods gains an optional counts-only attention row.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:18:27 -04:00
randRuFlo 01fa240e7c wip(memory): agentdb alpha.20 floor + sql.js lock/concurrency guard
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 17:17:36 -04:00
rUv a1f90501d3 Merge pull request #3956 from ruvnet/feat/x-gateway-github-query
feat(x-gateway): read-only GitHub/npm query tools on /mcp (ADR-485)
2026-10-09 12:10:15 -07:00
randRuFlo 39a6792f01 fix(x-gateway): escape every slash in scoped npm names (CodeQL js/incomplete-sanitization)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 14:51:37 -04:00
randRuFlo 733596cc1f feat(x-gateway): read-only GitHub/npm query tools on /mcp (ADR-485)
Adds ruv_github_search, ruv_github_repo, ruv_github_file and ruv_registry_latest
to the legacy /mcp surface: allowlisted owner (default ruvnet), public repos only,
SSRF-pinned URLs, redirects refused, size/time caps, TTL+ETag cache, per-client
and shared upstream budgets, results fenced as untrusted GitHub data. Directory
profiles (/chatgpt/mcp, /claude/mcp) are unchanged at twelve tools.

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 14:28:35 -04:00
rUv 9f97475fc5 Merge pull request #3944 from ruvnet/release/3.56.2
release: 3.56.2
v3.56.2
2026-10-09 10:22:17 -07:00
randRuFlo 14f2c4f850 release: regenerate witness manifests (linux/macos/windows) for 3.56.2
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 13:07:44 -04:00
randRuFlo 0f6a464a7b release: re-sign helpers manifest for 3.56.2
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 13:06:48 -04:00
randRuFlo 183d2d5140 chore(release): 3.56.2 versions and changelog
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 13:06:28 -04:00
rUv 04ea90611e Merge pull request #3942 from proffesor-for-testing/fix/console-adr-hardening
fix(console,swarm): linear ADR scope matcher, ADR-481 titles refused at the proposal, ADR digest validated, quoted and framed, prototype-safe What's new
2026-10-09 10:04:40 -07:00
randRuFlo 0e99d1961a chore(console,swarm): console 0.40.8 and swarm 0.3.6 changelog and versions; merge main
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 12:49:55 -04:00
r dbbd1b14bc Merge remote-tracking branch 'origin/main' into w3942 2026-10-09 12:48:34 -04:00
rUv 69dd12c76f Merge pull request #3939 from proffesor-for-testing/fix/console-macos-writes
fix(console): disk writes work on macOS/BSD (append, exclusive create, create-with-folders)
2026-10-09 09:48:27 -07:00
randRuFlo 5e6e454ee5 chore(console): 0.40.7 changelog; merge main
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 12:33:15 -04:00
r 88bdd80977 Merge remote-tracking branch 'origin/main' into w3939 2026-10-09 12:32:12 -04:00
rUv 5ccb20978d Merge pull request #3936 from proffesor-for-testing/fix/console-display-truth
fix(console): show times as times, a swarm's own agents, and labels that match the gate
2026-10-09 09:32:01 -07:00
randRuFlo f407072f35 chore(console): 0.40.6 changelog; keep perf probe entries gated as delete (do not lower the gate); reduce instead of Math.max spread
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 12:14:54 -04:00
randRuFlo df6aea0a46 Merge origin/main into fix/console-display-truth
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 12:13:19 -04:00
rUv 767f7a6896 Merge pull request #3934 from proffesor-for-testing/fix/console-verdict-exit
fix(console): treat a verdict command's "found something" exit as an answer, and show the real failure reason
2026-10-09 09:12:42 -07:00
randRuFlo 41b2175901 chore(console): 0.40.5 changelog; bound the answer scan on unclosed openers; merge main
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 12:11:58 -04:00
r 56ea638508 Merge remote-tracking branch 'origin/main' into w3934 2026-10-09 12:09:34 -04:00
rUv 5400cdf938 Merge pull request #3932 from proffesor-for-testing/fix/task-status-enum
fix(task,console): task_update accepts only the five statuses; "complete" is never re-dispatched or shown as pending
2026-10-09 09:09:19 -07:00
randRuFlo 555ee880e7 chore(console): 0.40.4 changelog and version, drop regex fallback in isOpenTask, test wf-links isOpen
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 11:43:41 -04:00
rUv 098312f6a2 Merge pull request #3940 from ruvnet/feat/ruflo-ai-team-0.2.0
feat(ruflo-ai-team): surface-neutral tool references, clearer skills and README (0.2.0)
2026-10-09 08:22:11 -07:00
randRuFlo e2c7cfe221 fix(ai-team): keep portable allowed-tools: Read (repo frontmatter audit requires the field)
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 10:57:11 -04:00
randRuFlo 339e99c36b feat(ruflo-ai-team): surface-neutral tool references, clearer skills and README (0.3.0)
- feat: skills name connector tools in plain language; allowed-tools with Claude Code namespaced identifiers removed so claude.ai and Cowork read them correctly
- feat: lifecycle skill covers run_complete; skills state real statuses, template ids, budget range
- feat: README examples per surface, auth and data section, troubleshooting
- fix: descriptions lead with what and when, no angle brackets
- chore: smoke asserts tool names, descriptions, README examples and directory bundle parity; directory bundle 0.2.0

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 10:33:31 -04:00
rUv 27306121a0 Merge pull request #3937 from ruvnet/fix/plugin-manifest-validation
fix(plugins): clean claude.ai plugin-validator findings (nested manifest, unknown keys, XML tags in skill descriptions)
2026-10-09 07:33:09 -07:00
Dragan SpiridonovandRuflo & AQE a6608e8c84 fix(console,swarm): linear ADR scope matcher, ADR titles refused not cut, ADR digest validated and framed, prototype-safe What's new
- adr-scope: each `*` became a stacked `[^/]*`, so an ADR scope entry with
  many stars hung the console (10 stars: 8-15 s, ~6x per star) during verify
  and goal suggestions. A segment-wise glob matcher with the same semantics.
- ADR-481: a title over 120 is refused with the count at the proposal itself
  (page field, adr-propose palette, console_run); a mission-objective draft
  title that is shortened says so on the confirm card; cuts and counts are in
  code points (no lone surrogates; 120 emoji read back whole).
- ruflo-swarm: .claude-flow/console/adr-digest.json (committable by a cloned
  repo) was appended to every subagent prompt unframed. The reader now accepts
  only the console's shape (statuses, file identity, washed text, no
  duplicates), quotes each record's text with marker words neutralised, and
  frames the block as project data. A model-level mitigation, not a boundary.
- What's new: plugin-name maps are null-prototype with own-key lookups;
  __proto__/constructor/prototype never enter seen, toasted, pinned or
  dismissed records.

Co-Authored-By: Ruflo & AQE
Claude-Session: https://claude.ai/code/session_01CGoza3gyxBjpaiMPhGHcHs
2026-10-09 16:27:56 +02:00
Dragan SpiridonovandRuflo & AQE f598890888 fix(console): disk writes work on macOS/BSD (append, exclusive create, create-with-folders, copy)
The console wrote every file through GNU-only argv: dd oflag=append
iflag=fullblock, dd conv=excl, install -D and cp --no-clobber. BSD dd,
install and cp (macOS) refuse all of them, so on a Mac events never
persisted ("345 waiting to write · write failed: the write exited 1"), ADR
initialise/propose never created a file (and blamed a race), exports and
first-time state files failed, the autopilot journal was never appended or
rotated, and its cross-session kill switch was never written.

- data/write-flavor.ts detects the platform once (uname -s, own 3 s
  deadline, process.platform fallback) before the controller exists; every
  flavor-dependent write awaits it and its builder requires the flavor.
- Linux keeps the GNU argv byte for byte.
- macOS/BSD use a frozen set of seven constant sh scripts with the path as
  "$1" (and "$2" for the copy source), never interpolated: each sets its
  umask, refuses a link or a non-regular target, uses noclobber for
  exclusive creates and creates missing folders. smoke.sh enforces the set.
- adr.ts reports the real write failure; worktree /proc specs skip off Linux.

Co-Authored-By: Ruflo & AQE
Claude-Session: https://claude.ai/code/session_01CGoza3gyxBjpaiMPhGHcHs
2026-10-09 16:23:20 +02:00
randRuFlo a457cbf4dc fix(plugins): clean claude.ai plugin-validator findings (nested manifest, unknown keys, XML tags in skill descriptions)
- ruflo-plugin-creator 0.4.2: mod template manifest is plugin.json.tmpl (no nested plugin); scripts/scaffold-mod.mjs + test-scaffold-mod.mjs validate and test a scaffolded mod
- ruflo-workflows 0.6.5 / ruflo-arena 0.2.4 / ruflo-graph-intelligence 0.2.0-alpha.5: drop unused components / categories keys
- ruflo-metaharness 0.2.5: seven harness-* descriptions use {braces}, not angle brackets
- ruflo-ai-team 0.2.3 (+directory 0.1.1) / ruflo-x-gateway 0.9.5 (+directory 0.8.2): documentationUrl points at main, not the feat branch; store-listing keys kept (the directory reads them)
- scripts/check-plugin-manifests.mjs wired into all-plugins-smoke

Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-09 10:18:04 -04:00
Dragan SpiridonovandRuflo & AQE 3c3ed992d0 fix(console): show times as times, a swarm's own agents, and labels that match the gate
- AgentDB mod panel read updatedMs through countOf, whose 1e12 cap (added
  in 44b157b52) clamps every epoch-ms time to 2001-09-09: "written 9161d ago
  (an earlier session)" for a file written minutes before. Times are read as
  times; implausible ones (before 2000, more than a day ahead) read n/a.
- Overview/Swarm/Workflows/status bar/topology credited a swarm with the whole
  agent store ("running · max 3 · 259 agents" for a swarm with 0 agents) and
  disagreed on its status (running vs finished). One helper
  (data/swarm-status.ts) gives each page the swarm's own listed/found count
  and its age; "stale" only on evidence (old record, no busy member, no
  recent member). An empty fresh swarm is still its own Workflows run; the
  roster of unlisted agents keeps the run id saved views and pins used.
- mission-goal's label said "(nothing is written)" but it is a write action;
  perf-bottleneck/optimize were gated as delete (needs full) because their
  note said the probe file is "removed". Labels and notes now match the gate.

Co-Authored-By: Ruflo & AQE
Claude-Session: https://claude.ai/code/session_01CGoza3gyxBjpaiMPhGHcHs
2026-10-09 16:14:47 +02:00
Dragan SpiridonovandRuflo & AQE df7af622ab fix(console): a verdict command's "found something" exit is an answer, and a failure names its real reason
security defend / scan / channel-scan / scan-plan and the metaharness alert
scripts exit non-zero to say "found something" while printing a valid JSON
verdict. The runner treated every non-zero exit as a failure, so exactly when
a safety check caught something, Claude (console_run / console_state) was told
it failed and got no verdict. Failure reasons took the first stderr line, which
on many installs is "[WARN] Skipped helper auto-refresh", hiding the [ERROR].

- ActionSpec.findings = { exits, isAnswer, found } per entry, taken from the
  CLI source: such an exit is an answer only when stdout holds a complete
  answer of that command's shape, judged on its top-level keys (a hostile span
  quoting "[ERROR]" or a nested failure cannot flip it), the answer says it
  found something, and nothing outside it (trailing stdout, stderr) reports a
  failure. A banner object before the verdict is skipped.
- The one-line outcome carries the verdict ("answered: UNSAFE · 2 threats").
- data/failure.ts: one failure-reason helper (wrapped MCP isError, top-level
  error, [ERROR] line, error-naming line; [WARN]/[INFO]/Parameters skipped),
  used by the runner, CLI probes and mission verify notes.

Co-Authored-By: Ruflo & AQE
Claude-Session: https://claude.ai/code/session_01CGoza3gyxBjpaiMPhGHcHs
2026-10-09 16:12:36 +02:00
Dragan SpiridonovandRuflo & AQE bc14216777 fix(task,console): task_update accepts only the five statuses; a task stored as "complete" is never shown pending or re-dispatched
task_update stored any string as a task's status, so an agent writing
"complete" left a finished task every reader misread: the ruflo-console
Automation kanban listed it under PENDING (offering assign/cancel), and
Mission Control derived it as ready, so nextTask() would hand finished work
to Claude again as a new billed turn.

CLI (mcp-tools/task-tools.ts)
- statusOf(): trimmed, case-insensitive, aliases complete/done/canceled/
  running/in-progress; anything else (incl. "" and prototype keys) is
  refused with the allowed list and the task is left unchanged.
- No schema enum on purpose: the HTTP/WebSocket registry validates enums
  before the handler, which would refuse aliases there but not over stdio.
- Completing through task_update now finishes the task as task_complete
  does (progress 100, completedAt, worker idle and counted once per
  hand-out); cancelling frees workers as failing already did. Worker
  effects run after the task store is saved.

Console
- taskStatusOf() reads the spellings older CLIs already stored; used by the
  kanban lanes and verbs, Mission Control derive (no re-dispatch), mission
  cancel, workflow links and the workflow guide.

Co-Authored-By: Ruflo & AQE
Claude-Session: https://claude.ai/code/session_01CGoza3gyxBjpaiMPhGHcHs
2026-10-09 15:54:18 +02:00
ClaudeandRuFlo 86af231f6d dream(swarm): #3928 MessageBus broadcast-retry re-queues under the real subscriber agentId, not the 'broadcast' sentinel
handleDeliveryError()'s retry re-queue used message.to ('broadcast') as the
queue key for a broadcast message instead of the per-subscriber agentId
enqueue() actually fanned the message out to. processQueues() skips any
unsubscribed queue, so a failing broadcast subscriber's retries -- and
eventual message.failed -- were silently dropped into an orphaned queue
leaking until shutdown(). Explicitly disclosed as a known limitation by the
preceding #3562/#3563 MessageBus rewrite; closed by threading
subscription.agentId through deliverMessage() -> handleDeliveryError() ->
the re-queue.

2 new discriminating tests (stash-isolated baseline-fails/candidate-passes,
independently reproduced by an adversarial critic). Full swarm suite
274/274 -> 276/276, 0 regressions, tsc clean both ways.

Co-Authored-By: RuFlo <ruv@ruv.net>
Claude-Session: https://claude.ai/code/session_016qkoWKmaupqNEJwqiedzsX
2026-10-09 06:24:53 +00:00
rUv 58e0ae7e14 Merge pull request #3925 from ruvnet/release/3.56.1
release: 3.56.1
v3.56.1
2026-10-08 21:36:28 -07:00
randRuFlo 4adc4b6a75 release: regenerate witness manifests (linux/macos/windows) for 3.56.1
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 23:50:13 -04:00
randRuFlo 133b3a4735 release: re-sign helpers manifest for 3.56.1
Co-Authored-By: RuFlo <ruv@ruv.net>
2026-10-08 23:49:19 -04:00