## ruvnet/ruflo — v3.49.0…v3.50.0

_41 commits._

### Features
- **feat(ruflo-ruos): mod part — ruos status segment via $.ruflo.segment** (c957086)
- **feat(plugin-creator): scaffold governed Claude Code mods (create-mod + templates/mod, ADR-404)** (707977d)
- **feat(mods): doctor reports which claude runs, mods-by-default from 2.1.287, stale/mixed installs (ADR-404)** (c84c559)
- **feat(mods): $.ruflo noun, status segments, mod trust gate, refusal-tolerant $ (ADR-404)** (8a1e11f)
- **feat(ruflo-swarm): show ruOS-hosted agents and hosts (ruflo-ruos contract); keep pane state per folder** (8ceed88)
- **feat(ruflo-ruos): JobTransport (exec-poll + ruOS jobs API), live-run fixes, ruOS design rules** (30cd360)
- **feat(cli): ruflo mods install|uninstall|status|doctor|sync-policy, init --mods, doctor check (ADR-404)** (73f530e)
- **feat(helpers): hand route/post-edit to the ruflo mod via RUFLO_MODS_OWNS (ADR-404)** (c335261)
- **feat(mods): ruflo-mods plugin — ruflo as a Claude Code mod (ADR-404)** (d48897f)
- **feat(ruflo-swarm): label teammates by name and unknown loops honestly; document the mod** (869101e)
- **feat(ruflo-ruos): README, local overhead benchmark, typecheck in smoke** (56e847b)
- **feat(ruflo-ruos): commands, skill, agent, smoke contract, deploy-info, ADR-405** (92ff48b)
- **feat(ruflo-ruos): host adapter, audited command builder, fleet MCP + SSH transports** (bd228c6)
- **feat(ruflo-swarm): swarm mod skeleton: readers, members, pane view, actions, commands** (5c13369)

### Fixes
- **fix(mods): CI — keep metaharness last in doctor help; RUFLO_MODS_OWNS escape hatch; self-contained plugin tsconfigs** (969dcb2)
- **fix(ruflo-ruos): jobs API 400 is non-retryable; cancelled (exit 143) is a stop** (c150ac7)
- **fix(ruflo-ruos): align JobsApiTransport with the live ADR-105 jobs API** (1dd984d)
- **fix(mods): trust gate allow-list by provenance, no name-keyed self-exemption; fs.write is risky; strip CSI/OSC from segments** (a0c4f99)
- **fix(ruflo-ruos): echo-proof nonce markers, CI ratchet entries, ISO heartbeat** (e1bf696)
- **fix(mods): handshake in the generated helper; ENOENT-only missing; doctor reports the rollout switch (ADR-404)** (24c9c4a)
- **fix(ruflo-swarm): never pass a dash-led task text to the router as an argv value** (6302b67)
- **fix(ruflo-ruos): merge hosts.json, detect a killed runner, never skip bytes on a truncated poll** (8ab1703)

### Backend
- **Merge pull request #3611 from ruvnet/release/3.50.0** (2798298)
- **release 3.50.0: re-sign helper manifest, regenerate witness manifests** (7634d7a)
- **release 3.50.0: bump train to 3.50.0** (519709a)
- **Merge pull request #3605 from ruvnet/feat/ruflo-ruos** (b470828)
- **Merge origin/main into feat/ruflo-ruos** (d3a3979)
- **Merge pull request #3607 from ruvnet/feat/claude-code-mods-swarm-ui** (fbaeca0)
- **Merge pull request #3608 from ruvnet/feat/claude-code-mods** (89a33bf)

### Tests
- **test(mods): declaration-faithful harness, parity and no-double-fire suites, latency bench (ADR-404)** (5c74f1e)
- **test(ruflo-swarm): hostile-text readers, vitest parser spec, render/refresh benchmark at 8/32/100 agents** (5004131)
- **test(ruflo-swarm): controller actions, refusal tolerance, spawn note and audit options** (f1d1fff)
- **test(ruflo-swarm): engine-kit tests for register and pane over a real ruflo run** (77e5262)

### Docs
- **docs(ruflo-swarm): allow-list note for the ruflo-mods refuse-risky trust gate** (6bd7b2f)
- **docs(plugin-creator): create-mod allow-lists by plugin id, not name** (b1a6f1c)
- **docs(adr): ADR-404 — 2.1.287 facts, $.ruflo contract, trust gate, live evidence, scaffold** (f0a5d66)
- **docs(adr): ADR-404 ruflo as a Claude Code mod (function hooks)** (e543195)

### Chore
- **chore(helpers): re-sign helpers manifest for the mods hook-handler handshake (ADR-404)** (fd35a49)
- **chore(ruflo-ruos): marketplace entry (handed over by integration owner); ADR mod contract** (b928e71)
- **ci: list ruflo-swarm engine-kit tests in the root vitest baseline** (db6f422)
- **chore(data): clone snapshot #15 — 0 clones (14d)** (6cfd886)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/ruvnet/ruflo?utm_source=github-action)._