Skip to content

OpenRig v0.6.8

Choose a tag to compare

@mvschwarz mvschwarz released this 09 Oct 06:39
· 43 commits to main since this release
aa126c7

OpenRig 0.6.8

0.6.8 is mostly fixes, and most of them came from the community. One skill being edited in the managed catalog no longer stops every seat's skills, a launch plan can never start a seat by accident, Slack replies stay in their thread, a seat that stays quiet after compacting is still restored, and a workflow that could never finish is caught when you validate it. Twelve of this release's 21 changes came from nine outside contributors.

npm install -g @openrig/cli

It is built from main at aa126c74 (after #1041). Work merged to main after that point isn't in this release. If something breaks for you, please open an issue.

Before you upgrade

Restart the daemon after upgrading the CLI. The running daemon keeps its old build until it restarts: run rig daemon stop, then rig daemon start. There are no database migrations in this release, and the bundled openrig-core plugin stays at version 0.1.8.

Behaviour that changed:

  • TUI keys. On an empty command line, j and k move the selection down and up (#1019). The footer toggle moved from f to F, and in a selected Scopes view the mini-requirements and narrative keys moved from m and n to M and N, so typed commands such as find, feed, mission, narrative and needs reach the command line whole (#1020).
  • Workflows. rig workflow validate reports step_cannot_finish, and refuses to instantiate, when no allowed exit can finish a step or route onward. An allowed mapped exit is valid; in a dependency graph, handoff can finish a sink without a next step. A spec that validated on 0.6.7 can be refused now; the message names the step and the fix (#1012).
  • Skill projection exit codes. rig context work-install --runtime <runtime> and rig skill loadout --runtime <runtime> report a selected skill skipped for uncommitted catalog content with exit 1. Inspection is the default; applying with --apply-skills or --apply, respectively, still reconciles the remaining clean skills. Exit 1 alone doesn't say whether files were changed (#1031).
  • Launch plans. rig launch --plan refuses to send to a daemon older than 0.5.9, which would ignore the plan and launch (#1024).

Highlights

One skill being edited no longer blocks every seat's skills. Before, any uncommitted or untracked file in the managed skill catalog made the whole catalog unavailable, so rig context work-install, rig up, launch and restore preflight all failed for every seat. Now a skill with uncommitted content is skipped by itself and named in a warning, and the remaining clean skills stay available for projection (#1031).

  • A seat that already has a copy of the skipped skill keeps that copy as it was. After the catalog change is committed or restored, the next applied projection can refresh it.
  • No seat receives the skill's uncommitted files, whichever runtime it uses.
  • A seat's launch only warns about a skipped skill; it doesn't fail.
  • An uncommitted change to catalog.yaml itself still makes the whole catalog unavailable, because it changes what every selection means.

See a launch before it happens, safely.

  • rig launch <rig> <seat> --plan now previews a single seat's launch, as --seats already could: the snapshot it would use, the target, and what happens to the other seats, without launching anything. It works over --host too (#1023).
  • A daemon older than 0.5.9 ignores the plan flag and launches. rig launch --plan now reads the daemon's version first and refuses to send to such a daemon. If an answer comes back that isn't a plan but shows the daemon acted, the command exits non-zero and tells you to check rig ps --nodes -A before retrying (#1024).

Slack.

  • When a person replies inside a thread OpenRig opened, an agent's answer with rig queue create --human-intent update --reply-to <that reply's row> now posts in the same thread, instead of as a new message (#1021). The messaging-the-human skill says how.
  • When Slack rate-limits a post and asks for a pause of 10 seconds or less, OpenRig waits that long and retries the post once. A longer pause is still left to the usual retry of retained messages (#1026).
  • The check that keeps the Slack bot token on Slack's own hosts now sits inside the private-file download itself, not only at its one caller (#1006).

A workflow that could never finish is caught at validate. Before, rig workflow validate passed a step with no exit that could finish it, and the workflow then stalled on that step. Now validate reports it, naming the step and how to fix it (#1012).

A quiet seat is restored after compaction. After a managed /compact, the turn boundary, the restore request and the read-depth audit now reach a Claude seat that takes no turn. Before, they waited for the seat's next turn, so a seat with nothing to do could sit unrestored until something woke it. Each stage still waits until the seat's screen shows it idle, and only a fresh usage reading can start a compaction (#1035).

The TUI keeps typed commands whole. Agents drive the TUI by typing, so every command now reaches the command line intact, and j/k navigate when the line is empty (#1019, #1020).

Dependency and install-script changes

  • npm dependencies: none added, removed or changed. External dependency lock entries and direct ranges are unchanged, and the Node requirement is unchanged (node >=22). OpenRig's own version fields in the package files and the lockfile advance to 0.6.8 (#1038).
  • Install scripts: unchanged. The package's only lifecycle script is still postinstall: node scripts/check-abi.mjs.
  • Building from source: the CLI and TUI build scripts now finish their output with one Node script, scripts/prepare-workspace-build.mjs, instead of chmod, mkdir and cp, so they no longer need POSIX shell tools (#1033, originally contributed by @dajiaohuang in #956). This hasn't been run on Windows yet; WSL2 is still the way to run OpenRig there.
  • Database: no migrations.

Everything else since 0.6.7

Launch, restore and seats. A Claude seat launched with --remote-control confirms its identity instead of staying "identity not confirmed" (#1025). rig down still saves its recovery snapshot when finding one seat's resume details fails, instead of skipping the snapshot for every seat (#1030).

Queue. A wake for a handed-off task now shows the task's summary on one line, up to 120 characters, so the woken seat sees what it's for (#1028).

Scope and proof. rig scope audit accepts slice folders numbered 100 and above, which rig scope slice create makes after 99 (#1016). rig proof add --file keeps a leading UTF-8 byte-order mark in the artifact instead of removing it (#270).

Docs. A topology naming reference explains how to name a team's pods and seats, from purpose to domain to role, and the rig spec, bundle and authoring guides point to it (#1000). The architecture and CLI reference docs were brought to the 0.6.7 release (#1015). The README, reference guides and architecture docs were brought to 0.6.8 (#1041), and the what-changed note, capability map and changelog written for it (#1039).

How it was tested

  • The final package: openrig-cli-0.6.8-aa126c74.tgz, 4,135 files, SHA-256 b573304ffad3f4b3ed412d819de9c6fc587e5e2fbbe6c56ed1c099cc2d732b50, built from aa126c74. Compared file by file with the earlier candidate build from 4f7626e6, 82 files changed, all traced: the compaction fix's compiled files (#1035), the version fields and the packaged context-pack manifests that carry the version (#1038), the packaged what-changed note, capability map and reference guides (#1039, #1041), and the two build stamps. Installed into a fresh Linux server: the CLI and daemon reported 0.6.8 at aa126c74, clean; rig ps, help and specs ran; the starter and factory launch plans listed 2 and 7 seats; the workshop's create, inspect and install plan from the current registry passed; and the installed package served the 0.6.8 what-changed note and the capability map for 0.6.8. The same check confirmed four of this release's changes: a single seat's launch plan selected only that seat and changed nothing; a daemon older than 0.5.9 received no plan request and the CLI exited 1 with the upgrade message; a catalog skill with uncommitted changes was skipped while its clean sibling projected its exact files; and, in a scripted check without a real compaction, a pending post-compaction step waited while the screen showed compaction and was sent once the seat was idle. No agents were launched in this check. The automated tests passed on aa126c74.
  • Each change ran the repository's automated tests, merged into the main of its day, before it merged.
  • Not tested: building on Windows; live Slack for thread replies and rate limits; a real compaction; the TUI's keys in a live session; the full first install from nothing.

Known issues

  • Not yet proven on a real machine: the full first install from nothing, on Mac, Linux and Windows, hasn't been run for this release.
  • Help without a prompt has been checked in a live Claude session for only one selected lifecycle-help command (#927), as in 0.6.7.
  • Codex team seats don't yet ask before lifecycle commands such as rig up and rig down. Claude Code team seats do.
  • The send gate trusts the latest recorded hook, as in 0.6.7. If a seat's hooks are recorded out of order, a send can be held for a question that's already answered, or let through to one that's waiting.
  • A Codex seat whose permission request was approved automatically can still read "needs input" (#896).
  • A launched team still writes its skills into its working folder.
  • rig scope mission approve writes its stamp into the daemon's workspace and ignores --workspace (#995).
  • After a restart, rig status shows Kernel: skipped whatever the kernel seats' state. Read them with rig ps --nodes --rig kernel --full.
  • rig doctor fails for a harness you don't use. Only the harnesses your teams use need a login.
  • Slack channel map: replies are matched to a thread by its timestamp alone, missed-message recovery covers the default channel only, and private channels and direct messages aren't supported targets, as in 0.6.7.
  • Refocus after compaction hasn't been proven on a long-running install.
  • Older issues, as in 0.6.7: the starter's Codex reviewer needs a Codex newer than 0.145; a restore can report a problem with a seat that works (#273); a claude alias defined only in a nushell rc doesn't resolve; after a reboot, start the daemon with rig daemon start and bring your rig back with rig up <name> --existing; the web UI's file preview runs scripts, so preview only files you trust; browser access isn't complete browser isolation; and Codex network inside the sandbox hasn't been checked with real logins, managed policy bundles or on Linux.

Thanks

To the people whose pull requests are in this release: @Bortlesboat, @DeryFerd, @pr0xc3nt4ur1, @rem4ik4ever, @rudycelekli, @tianqizhao0704, @Totopo27 and @Vaishnavi220506; and to @dajiaohuang, whose Windows build change from #956 is in this release as #1033.

And to the people whose reports shaped fixes here: @ivannovak (#822), @pono-yviavant (#883), @pr0xc3nt4ur1 (#1017), @some-marketing (#887) and @tianqizhao0704 (#1011).