Six corrections from an after-merge source check of the bundle and first-run references, each confirmed at source. Text only. - rig-bundle: identical target files avoid a target-content conflict but the rig-name check still applies; a carried pack is named by its archive folder. - agent-startup-guide: the Claude submission check is bounded and can leave a seat ready with its submission unverified or staged; one final readiness recheck after delivery; rig seat launch --fresh needs --reason, and --stop to replace a live occupant. - getting-started: --non-interruptive hides the Codex notices only when OpenRig itself selects full bypass. - developing: which CI jobs run npm ci and build.
3.4 KiB
Developing OpenRig — gates and lanes
This is the contributor-facing statement of which checks BLOCK a change and which are
advisory. Every pull request to main runs .github/workflows/tests.yml on a clean GitHub
runner: build and packaging, typecheck, the repository scripts (npm run test:repo), each
workspace's test suite (daemon, cli, tui and ui) on macOS without ambient credentials or
external network, and an installed-package scenario (scripts/run-pr-scenarios.sh). The root
package.json scripts below run the same build, typecheck, repository and test checks locally,
with one difference: npm test does not include the UI suite, which CI runs as
package-tests (ui). Run npm run test:ui for it.
In a fresh clone or worktree, run npm ci, then npm run build, as CI's build-and-package and
package-test jobs do (typecheck and repo-checks build only the daemon, through their scripts; see
CONTRIBUTING.md and worktree builds).
Locally, npm test builds only the daemon, and test:workspaces and test:ui build nothing.
Blocking gates (must pass before a candidate moves)
| Gate | Command | Covers |
|---|---|---|
| Typecheck | npm run lint |
daemon + ui + cli + tui tsconfigs — UI typecheck STAYS blocking |
| Build | npm run build |
all workspaces — the UI dist ships in the package, so its build STAYS blocking |
| Repo scripts | npm run test:repo |
daemon build, script self-tests, docs guard, skill mirror check, context-pack generation check |
| Unit tests | npm run test:workspaces |
packages/daemon + packages/cli + packages/tui |
| UI unit tests | npm run test:ui |
packages/ui vitest. NOT part of npm test, but every pull request runs it as package-tests (ui) (the package-tests matrix in .github/workflows/tests.yml) |
| Installed-package scenario | CI only: scripts/run-pr-scenarios.sh |
the installed package, a daemon restart and a seeded durability failure. The script refuses to run outside GitHub Actions unless given --remote with DOCKER_HOST=ssh://… |
| Package file lists | CI only | records each package's published file list (npm pack --dry-run) |
npm test runs test:repo and test:workspaces; npm run test:ui is the separate UI
suite. Both sets are readable in the root package.json scripts.
Advisory lane
| Lane | Command | Meaning |
|---|---|---|
| Portability report | node scripts/portability-report.mjs |
lists added lines with machine-specific values; findings never fail it (.github/workflows/portability-report.yml) |
The norm (web-UI freeze at 0.5.0)
Daemon API changes no longer require browser or interaction verification of the UI, and
the contract mirrors under packages/ui/src/hooks/ are no longer proactively maintained. A
new test:ui failure usually signals a moved API contract. Because pull-request CI runs the
UI suite as package-tests (ui), the change that moves the contract has to update the affected
UI test or mirror to pass that check.
Browser/interaction testing of the web UI is not a contributor gate. (The packaged starter-rig agent skills that exercise the UI are product content for user rigs, not part of this repo's gates.)
Wording rule
The web UI is experimental, in maintenance mode, supported best-effort; the CLI is primary. There is no scheduled removal and PRs are welcome. Do not describe the UI with stronger end-of-life language than this section uses.