chore(policy): slice-12 UI freeze — blocking/advisory lane split + the created dev doc (OPR.0.5.0.12)

FR-1 (A1-amended): test:workspaces enumerates the blocking set readably
(daemon + cli + tui); NEW advisory test:ui runs packages/ui vitest at will.
lint/build/build:package/test/test:repo byte-untouched — UI typecheck and
the shipped UI dist stay blocking.

FR-2: docs/reference/developing.md created — gates/lanes table, the no-UI-
sync norm verbatim (hooks mirrors unmaintained; a test:ui failure = moved
API contract signal, not a broken gate), the wording rule (experimental /
maintenance mode / best-effort / CLI primary — never 'deprecated'; zero
'deprecated' hits grep-proven).

FR-3: the diff is EXACTLY two files (root package.json + the new doc); no
doctor/bundling/ui.enabled/build-package/starter-skill changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
v-openrig-build
2026-08-04 02:21:56 +00:00
co-authored by Claude Fable 5
parent ef5d5d7179
commit 908c571654
2 changed files with 41 additions and 1 deletions
+39
View File
@@ -0,0 +1,39 @@
# Developing OpenRig — gates and lanes
This is the contributor-facing statement of which checks BLOCK a change and which are
advisory. There is no external CI at this tip: the root `package.json` script chain IS
the gate, and the release checklists invoke it.
## 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` | script self-tests, docs guard, skill mirror check |
| Unit tests | `npm run test:workspaces` | `packages/daemon` + `packages/cli` + `packages/tui` |
`npm test` runs `test:repo` and `test:workspaces` — the blocking set is readable in the
script itself.
## Advisory lane
| Lane | Command | Meaning |
|---|---|---|
| UI unit tests | `npm run test:ui` | runs `packages/ui` vitest at will; NOT part of `npm test` |
## The norm (web-UI freeze at 0.5.0)
Daemon API changes no longer require UI sync or UI verification; the contract mirrors
under `packages/ui/src/hooks/` are no longer proactively maintained; a new `test:ui`
failure signals a moved API contract, not a broken gate.
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.
+2 -1
View File
@@ -14,7 +14,8 @@
"build": "npm run build --workspaces",
"test": "npm run test:repo && npm run test:workspaces",
"test:repo": "node --test scripts/*.test.mjs && node scripts/check-docs-guard.mjs && node scripts/mirror-skills.mjs --check",
"test:workspaces": "npm run test --workspaces",
"test:workspaces": "npm run test -w packages/daemon -w packages/cli -w packages/tui",
"test:ui": "npm run test -w packages/ui",
"lint": "tsc --noEmit --project packages/daemon/tsconfig.json && tsc --noEmit --project packages/ui/tsconfig.json && tsc --noEmit --project packages/cli/tsconfig.json && tsc --noEmit --project packages/tui/tsconfig.json",
"build:package": "bash scripts/build-package.sh",
"test:tui-package": "node scripts/test-tui-package.mjs",