- 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>
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>
A refused mod or a permission deny has no action, so it held 'n to approve' up
with nothing to press. The band, menu badge, change notices and the Approvals
header now count waitingApprovalsOf(); notices stay listed, named apart.
Co-Authored-By: RuFlo <ruv@ruv.net>
- A Yes runs only the card it was pressed on: every pending card has an id,
the Yes / Always allow / Always accept buttons carry it, runner.confirm(seen)
runs nothing (and says so) when another card took its place. A card Claude
raised is re-checked against the level and Stop when it lands and when the
Yes arrives.
- Everything returned to the model goes through modelLine (escapes, then
control and invisible characters removed, cut, withheld whole when it holds
a secret shape or an invite code) and every answer leaves through
modelLines; a version such as v2.1.0-beta.3 is not an invite.
- ESCAPES is linear: an unterminated OSC ends at the next introducer or the
end of the text (7.7 s on the old pattern became milliseconds on 1 MB).
- Mission state/status, hive role, audit severity and Settings plugin names
that are Object.prototype keys read as unknown (own()).
- Approvals and a mission objective wrap at 80 columns instead of being cut
with an ellipsis (#3899).
Specs ported from #3820, #3821 and #3822, adapted to main.
Co-authored-by: Dragan Spiridonov <spiridonovdragan@gmail.com>
Co-Authored-By: RuFlo <ruv@ruv.net>
With the ruflo CLI option on npx, a confirmed action ran a cold online npx under the 90 s default and aborted with 'still running after 90000ms'. Resolve ruflo on PATH, a project-local bin or the cached npx copy first; give a cold download a 300 s limit and a first-run label; turn a timeout or ENOTCACHED into an error naming the fix. Console 0.40.1; ADR-407 update.
Co-Authored-By: RuFlo <ruv@ruv.net>
Default-off Settings rows: a read-only claude -p consult (asked first, exact argv, turn budget, mission spend cap) before a plan locks, when the same check fails twice in a row, and before done; a third failure pauses the mission. Honest about not being the in-session advisor tool. Console 0.40.0.
Co-Authored-By: RuFlo <ruv@ruv.net>
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>
Repairs ADR-477, whose section 3 had been overwritten by a replacement-string accident (the document was pasted into it three times).
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>
Gate hive-mind init/join/leave/spawn/propose/vote/broadcast/shutdown/
memory set+delete/optimize-memory for remote (HTTP/WebSocket) callers only;
local stdio, ruflo mcp exec, the CLI and in-process callers keep working
with no extra step. hive-mind_init never returns hiveToken. Operator secret
from RUFLO_HIVE_BOOTSTRAP_SECRET or a 0600 bootstrap.secret created by the
first local init. state.json is written 0600 atomically (dir 0700).
Constant-time compare. RUFLO_HIVE_REQUIRE_AUTH=1 for bridged stdio.
Co-Authored-By: RuFlo <ruv@ruv.net>
verify never re-anchors receipts that have no anchor (anchor-missing); appending refuses too.
Adds a hash-chained second anchor log in the project dir plus a mirror of its newest entry under
~/.config/ruflo/policy-trust, an explicit interactive --establish-anchor repair that is logged,
and migration of older state.json anchors. Threat model in ADR-475.
Co-Authored-By: RuFlo <ruv@ruv.net>
- plugin.json declares eventsPersist (default true); version 0.36.0 in plugin.json, version.ts, smoke.sh
- data/append-argv.ts: one dd argv (bs=1M iflag=fullblock) shared by the Events store and the autopilot journal; real-dd 8-writer test fails on the old argv
- history decoders and Events/Timeline displays use #3874's timeOf/countOf/isoOf, so a hostile time or count cannot throw
- cli init: .claude-flow/.gitignore template lists console/
- ADR-474 updated to the reviewed behaviour and the open low items
Co-Authored-By: RuFlo <ruv@ruv.net>
A transcript that grew is parsed from where its last parse ended, not from its
first line: checked resume (head + anchor), unfinished last line taken back,
bounded ring and id set, LRU memo, tail windows by unique anchor. Reference
parsers untouched and used as the oracle by a seeded property test plus
mutation checks. Refresh warms the parse memo for the search (400k chars a tick).
scripts/kit-seq.sh runs the 25 kit tests one file at a time in a temp copy;
scripts/typecheck.sh makes tsc find the ambient types in a fresh worktree; the
specs' type errors are fixed (sources of other lanes listed in the report).
Co-Authored-By: RuFlo <ruv@ruv.net>
- list editor for folders, repos, hosts, secret names and verify commands, every edit checked by the loader's own validator, shown as a diff against the approved envelope
- bounded parallel hand-over up to min(envelope concurrency, adaptation) through a narrow startable() beside nextTask; a park no longer holds the other tasks back
- spend: windows never start before Start, Claude Code only, unpriced models and old trackers say why the reading is unknown
- the band segment is drawn through registerBarSource
- ruflo autopilot_* tools: probed, not used (ADR-470 section 2.5)
- live run in a scratch repo found and fixed: dead 8/9 hotkeys, Start unreachable without a run, an input-less permission probe that parked every task, a failed record for a step that finished after Stop, a lost step retried without a question, a false "allow every class"
Co-Authored-By: RuFlo <ruv@ruv.net>
Replaces every "unverified" label with what Claude Code 2.1.289 actually answered:
- Stop a run: TaskStop takes the Workflow TASK id (read from the session transcript, last launch wins); the wf_ run id and a workflow agent's id are "No task found", so Stop-one-agent is removed and shows the engine's refusal.
- Message: delivered mid-task to a running workflow agent; to a named Agent-tool agent it arrives when its turn ends (161-165 s measured).
- $.tool.call opens the engine's real dialog for ask-class tools; deny resolves {deny}; never bypassed.
- Codex "tokens used" is a total (tokensTotal), stdout trimmed; federation argv checked against the helper's parser; stub OpenAI endpoint receives the card's exact bytes; the engine does not block link-local, so isBaseUrl is the only SSRF gate.
- Real answers are fixtures (tests/fixtures/control-real.ts); new wf-send-stub spec uses a real HTTP server.
Mutation check: 13 mutations (first-launch task id, run id passed to TaskStop, deny ignored, tool_use_error kept, stop-agent spec, codex total as output, untrimmed error, link-local allowed, plain http, transcript path unchecked, huge transcript unread, task id never re-read, usage field on every endpoint) each killed.
Co-Authored-By: RuFlo <ruv@ruv.net>
Learning Lab explains a recall from the hook's recall log (scores as recorded,
recomputation kept as the labelled fallback) and shows real surfaced counts.
The memory map reads stored vectors (memory list --embeddings, int8+scale) and
drops 'NOT similarity' only when they drove the layout. Memory health judges
stale by the log where it can speak and adds similar-by-meaning clusters when
vectors were read. ADR-472 documents the log schema, privacy, vector path and
rollback.
Co-Authored-By: RuFlo <ruv@ruv.net>
The Control tab's Stop asks first and calls TaskStop; it is unverified for a
workflow run's own id, so the text names Claude Code's Workflows panel as the
sure way. Found by looking at the demo GIF frames.
Co-Authored-By: RuFlo <ruv@ruv.net>
Plugged in through the page's slot seams only: a board slot for the panel, eight key slots, a search slot and a follow tick.
Reads are capped and path-checked; loaders need the host bound (bindWorkflowDrill), unbound the drill states what it cannot read.
Co-Authored-By: RuFlo <ruv@ruv.net>
Worktree list with ahead/behind, dirty, age and maker, plus a confirm-gated removal of merged,
clean, idle worktrees that re-checks each one before it goes; four workflow templates with a
dry-run estimate launched through the existing prompt path; Project Anatole verdicts matched to
runs and agents from the files alone, with 'not attributed' where they cannot be placed.
Co-Authored-By: RuFlo <ruv@ruv.net>
Four board slots behind one import: scrub a finished run through its agents' start and end moments, compare two runs of one workflow, export a masked markdown summary through the confirm card, and remember the cursor and pins across restarts. No shell in any write; no hotkey taken.
Co-Authored-By: RuFlo <ruv@ruv.net>