Repository navigation
build: bake ruflo-console (mods) behind toolchains.ruflo_console - #16
Merged
Merged
Conversation
Bakes ruflo-console, ruflo-mods and ruflo-swarm, ruflo's Claude Code function-hook mods, from the ruflo v3.51.1 tag (flake input rufloConsole, 09a1cb0244a677f54c2b3d691a7009927add527d) into the `agentbox` directory marketplace beside factrail. Gate: [toolchains].ruflo_console, default false, rebuild-class. - scripts/bake-ruflo-console.sh copies only the three plugin directories (1.6 MB of a ~100 MB repo), drops node_modules, defaults userConfig.cli to "ruflo" and fails the build if a version differs from marketplace.json. - scripts/ruflo-console-project.mjs runs at boot. It registers the three at their stable /opt paths (the codex-plugin-cc pattern, so there is no stale cache copy), enables them, sets pluginConfigs cli=ruflo and disables shadowing @RuFlo copies. It self-heals and fails open. With the gate off it removes the three ids and leaves everything else byte-identical. - The entrypoint keeps CLAUDE_CODE_ENABLE_FUNCTION_HOOKS and the shared `agentbox` marketplace while either factrail or the console is on. - The ruflo closure is baked when the console gate is on, because cli=ruflo needs the bin on PATH. npx-offline fails ENOTCACHED on a fresh npm cache. - flake.lock narHash computed offline (NAR serialiser validated against the existing codexPlugin entry); the image is unverified until the host rebuild. Co-Authored-By: jjohare <github@thedreamlab.uk>
…ARKET env-secret-inventory requires every name the entrypoint reads to carry a class; both are NON_SECRET locals beside factrail's _JC_* ones. Co-Authored-By: jjohare <github@thedreamlab.uk>
… re-verify 21 records (451823c) ADR-2121 records the shared marketplace, the shared function-hook switch, and the codex-style /opt registration beside factrail's cache install. It gains the three new files in verified_paths. The other 20 records were tripped by the new gate's lines in flake.nix, agentbox.toml, the schema, the entrypoint, the catalogue, env-classes and the invariants workflow; none changes meaning. Co-Authored-By: jjohare <github@thedreamlab.uk>
jjohare
force-pushed
the
ruflo/console-plugin
branch
from
October 3, 2026 12:56
c330428 to
84d8a4d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Bakes ruflo's three Claude Code function-hook mods, ruflo-console (the
/ruflocockpit), ruflo-mods (/ruflo mods) and ruflo-swarm (/ruflo swarm …), from the ruflo v3.51.1 tag into theagentboxdirectory marketplace beside factrail. Gate:[toolchains].ruflo_console, default false, rebuild-class.rufloConsole = github:ruvnet/ruflo/09a1cb0244a677f54c2b3d691a7009927add527d,flake = false. Theflake.locknarHash was computed offline with a NAR serialiser; on the existingcodexPluginentry that serialiser reproduces the locked hash exactly.scripts/bake-ruflo-console.sh): copies onlyplugins/ruflo-{console,mods,swarm}(1.6 MB of a ~100 MB repo) and dropsnode_modules. It defaultsuserConfig.clitorufloand fails the build if aplugin.jsonversion differs frommarketplace.json.scripts/ruflo-console-project.mjs, entrypoint block after factrail). It uses the codex-plugin-cc pattern: the plugins are registered ininstalled_plugins.jsonat stable/opt/agentbox/config/claude-plugins/<name>paths, with no cache copy. It setsenabledPluginsandpluginConfigs.<id>.options.cli = "ruflo", and disables any@ruflonetwork copy of the same mod so/ruflois not hooked twice. Registration is self-healing: a wrong path, version or cli is rewritten each boot. Fail-open. With the gate off, the three ids are removed and nothing else changes.CLAUDE_CODE_ENABLE_FUNCTION_HOOKSand theagentboxmarketplace now stay in place while either gate is on. Before this change, factrail-off removed the marketplace.system-manifest.jscatalogue entry (rebuild-class). The ruflo closure is baked when this gate is on.Why cli =
rufloThe upstream default
npx-offlineexpands tonpx --offline -y @claude-flow/cli@latest. On a fresh npm cache, which is what the container has, it fails withENOTCACHED. The image ships the cli as the Nixruflobin on PATH. Claude Code hands plugins the value fromsettings.jsonpluginConfigs, and the console'soptionsOf()falls back tonpx-offlinewhen that value is unset, so the projector writes it there.Proof against
ruflo@3.51.1on PATH, using therufloprefix with each probe argv fromhooks/data/cli.ts, parsed with its ownjsonAfter():--versionruflo v3.51.1memory stats --format jsonmemory list --format json --limit 500metaharness score --format jsonmcp exec -t metaharness_flywheel …metaharness audit-list --format jsonmcp exec -t hooks_intelligence_statsmcp exec -t federation_bbs_peersmcp exec -t x_federation_channel_listrosterwas not run: it is network-only and off by default. The memory probes need an initialised memory DB in the project; they print "Database not found" until one exists. With the realclaude2.1.285 and a scratch config dir,claude plugin listshows all three plugins✔ enabledafter the projector runs.Tests
tests/config/ruflo-console.test.mjshas 15 tests: 14 run in CI, plus one against the real tree withRUFLO_SRC. All pass locally against the real v3.51.1 tarball. It is wired intoinvariants.yml. Factrail projection, jev-config-stamp, boot-projection-contract, catalogue parity (80 paths), the config validator (gate off and on), the ADR index (--check,--check-index) and the ratchet are all green.ADR-2121 has a dated note on the shared marketplace. 20 other records were re-verified because this change touched their governed paths (no new ADR).
Not verified
There is no
nixin the container, sonix flake checkwas not run. The image is unverified until the host rebuild. This PR depends on RF-1 (ruflo 3.51.1 and Claude Code ≥ 2.1.287); the current main still bakes ruflo 3.47.0 and Claude Code 2.1.285.🤖 Generated by Claude Code