@h-rig/product-ad-website 0.0.6-alpha.283
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/package.json +52 -0
- package/site/assets/favicon.svg +1 -0
- package/site/assets/og-card.png +0 -0
- package/site/assets/rig.css +199 -0
- package/site/assets/rig.js +66 -0
- package/site/assets/search-index.json +1 -0
- package/site/assets/site.css +46 -0
- package/site/assets/site.js +510 -0
- package/site/cli/index.html +88 -0
- package/site/config/index.html +256 -0
- package/site/docs/agent-tools/index.html +129 -0
- package/site/docs/architecture/index.html +42 -0
- package/site/docs/capabilities/index.html +84 -0
- package/site/docs/entities/index.html +68 -0
- package/site/docs/environment/index.html +62 -0
- package/site/docs/faq/index.html +17 -0
- package/site/docs/fleet-irc/index.html +44 -0
- package/site/docs/gate/index.html +128 -0
- package/site/docs/getting-started/index.html +50 -0
- package/site/docs/glossary/index.html +31 -0
- package/site/docs/index.html +68 -0
- package/site/docs/operator/index.html +49 -0
- package/site/docs/packages/index.html +36 -0
- package/site/docs/pi-extensions/index.html +15 -0
- package/site/docs/recipes/index.html +28 -0
- package/site/docs/runs/index.html +35 -0
- package/site/docs/security/index.html +29 -0
- package/site/docs/server/index.html +27 -0
- package/site/docs/swarm-commander/index.html +41 -0
- package/site/docs/task-sources/index.html +129 -0
- package/site/docs/troubleshooting/index.html +23 -0
- package/site/docs/validators/index.html +177 -0
- package/site/index.html +1653 -0
- package/site/plugins/examples/index.html +419 -0
- package/site/plugins/index.html +193 -0
- package/site/skills/index.html +140 -0
- package/site/variants/deck/index.html +1 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
2
|
+
<title>Capabilities // RIG</title><meta property="og:image" content="https://how.rig-does.work/assets/og-card.png"><meta name="twitter:card" content="summary_large_image">
|
|
3
|
+
<meta name="description" content="Rig capabilities: foreground OMP, inline CNet cards, the Swarm Commander model role, detached drones, placement, exact-run attach, packages, and automation.">
|
|
4
|
+
<meta property="og:title" content="Capabilities // Rig">
|
|
5
|
+
<meta property="og:description" content="Rig capabilities: foreground OMP, inline CNet cards, the Swarm Commander model role, detached drones, placement, exact-run attach, packages, and automation.">
|
|
6
|
+
<link rel="stylesheet" href="../../assets/rig.css?v=v9">
|
|
7
|
+
<link rel="stylesheet" href="../../assets/site.css?v=v9">
|
|
8
|
+
<link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg">
|
|
9
|
+
</head>
|
|
10
|
+
<body data-doc-theme="capabilities">
|
|
11
|
+
<canvas id="docfield"></canvas>
|
|
12
|
+
<nav class="nav">
|
|
13
|
+
<div class="nav-in">
|
|
14
|
+
<a class="brand" href="../../index.html"><span class="mk"></span><span class="blk">Rig</span></a>
|
|
15
|
+
<button class="burger" onclick="document.getElementById('nl').classList.toggle('open')">menu</button>
|
|
16
|
+
<div class="nav-links" id="nl"><button class="nsearch" type="button" onclick="rigSearchOpen()">search<kbd>⌘K</kbd></button>
|
|
17
|
+
<a href="../../index.html">overview</a>
|
|
18
|
+
<a href="../../docs/index.html" class="active">docs</a>
|
|
19
|
+
<a href="../../plugins/index.html">plugins</a>
|
|
20
|
+
<a href="../../skills/index.html">skills</a>
|
|
21
|
+
<a href="../../cli/index.html">cli</a>
|
|
22
|
+
<a href="../../config/index.html">config</a>
|
|
23
|
+
<a href="https://github.com/humanity-org/rig" class="ext">github</a>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</nav>
|
|
27
|
+
<div class="docwrap">
|
|
28
|
+
<aside class="sidebar"><div class="grp">START</div><a href="../../docs/index.html" class="">docs home</a><a href="../../docs/capabilities/index.html" class="active">capabilities</a><a href="../../docs/getting-started/index.html" class="">getting started</a><div class="grp">RUN</div><a href="../../docs/runs/index.html" class="">the run lifecycle</a><a href="../../docs/operator/index.html" class="">operator guide</a><a href="../../docs/swarm-commander/index.html" class="">swarm commander</a><a href="../../docs/fleet-irc/index.html" class="">drone messages</a><a href="../../docs/agent-tools/index.html" class="">agent tools</a><a href="../../docs/gate/index.html" class="">the merge gate</a><a href="../../docs/troubleshooting/index.html" class="">troubleshooting</a><div class="grp">ARCHITECTURE</div><a href="../../docs/architecture/index.html" class="">how rig works</a><a href="../../docs/entities/index.html" class="">entities & data model</a><a href="../../docs/server/index.html" class="">OMP relay/web</a><a href="../../docs/security/index.html" class="">security & trust</a><a href="../../docs/environment/index.html" class="">environment variables</a><div class="grp">EXTEND</div><a href="../../plugins/index.html" class="">plugin authoring</a><a href="../../plugins/examples/index.html" class="">plugin examples</a><a href="../../docs/pi-extensions/index.html" class="">OMP/Pi extensions</a><a href="../../skills/index.html" class="">skills</a><a href="../../docs/task-sources/index.html" class="">task sources</a><a href="../../docs/validators/index.html" class="">validators & hooks</a><div class="grp">OPERATE</div><a href="../../cli/index.html" class="">cli reference</a><a href="../../config/index.html" class="">rig.config.ts</a><a href="../../docs/recipes/index.html" class="">recipes</a><a href="../../docs/glossary/index.html" class="">glossary</a><a href="../../docs/faq/index.html" class="">faq</a><div class="grp">ENGINE</div><a href="../../docs/packages/index.html" class="">packages</a></aside>
|
|
29
|
+
<main class="doc">
|
|
30
|
+
<h1>Capabilities</h1>
|
|
31
|
+
<p class="lede">The current surface is OMP-first: bare <code>rig</code> opens foreground OMP with the Rig extension, the CNet carries a bounded current projection and exact receipts, query aliases materialize inline cards, and the Swarm Commander model role uses generated discoverable tools.</p>
|
|
32
|
+
|
|
33
|
+
<pre class="code"><span class="p">$</span> curl -fsSL https://where.rig-does.work/install | bash
|
|
34
|
+
<span class="p">$</span> rig
|
|
35
|
+
<span class="p">OMP</span> /fleet
|
|
36
|
+
<span class="p">OMP</span> /tasks
|
|
37
|
+
<span class="p">OMP</span> /drone
|
|
38
|
+
<span class="p">$</span> rig attach <run-id></pre>
|
|
39
|
+
|
|
40
|
+
<h2 id="map">Capability map</h2>
|
|
41
|
+
<div class="grid">
|
|
42
|
+
<a class="card" href="#session"><span class="ic">OMP</span><h4>Rig session</h4><p>Bare <code>rig</code> opens foreground OMP with the Rig extension: chat, the cnet, inline query cards, and no separate product server.</p></a>
|
|
43
|
+
<a class="card" href="#tasks"><span class="ic">TASKS</span><h4>Tasks</h4><p><code>/tasks</code> reads work from the configured source — GitHub Issues or Linear — with state derived on read.</p></a>
|
|
44
|
+
<a class="card" href="#tasks"><span class="ic">RUNS</span><h4>Runs</h4><p>Every run is a detached OMP drone session. CNet projects current status, recent timeline, controls, and attach actions.</p></a>
|
|
45
|
+
<a class="card" href="#relay"><span class="ic">RELAY</span><h4>Transport & relay</h4><p>Local or remote selects where a detached drone runs. The CNet workflow and exact-run attach contract stay the same.</p></a>
|
|
46
|
+
<a class="card" href="#cap"><span class="ic">CAP</span><h4>Swappable capabilities</h4><p>Task source, reviewer, isolation backend, provider, and validators are all capability contributions resolved at boot.</p></a>
|
|
47
|
+
<a class="card" href="#extend"><span class="ic">PKG</span><h4>Explicit packages</h4><p><code>rig.config.ts</code> composes plugins; <code>runtime.pi.packages</code> pins OMP/Pi extension packages.</p></a>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<h2 id="session">Rig session</h2>
|
|
51
|
+
<p>Rig contributes a bounded CNet projection, model control, generated discoverable tools, and the <code>/fleet</code>, <code>/tasks</code>, and <code>/drone</code> query aliases inside foreground OMP. Each alias materializes cards in the same transcript. OMP remains the authority for transcript, cwd, tools, prompts, participants, and history.</p>
|
|
52
|
+
|
|
53
|
+
<h2 id="tasks">Tasks and runs</h2>
|
|
54
|
+
<p><code>/tasks</code> materializes a bounded summary from the configured source — GitHub Issues or Linear — with create, rename, and close actions owned by the tasks plugin; exact dispatch is the <code>/fleet</code> card action or <code>rig run dispatch <taskId></code> through the run plugin. Dispatching starts a detached OMP drone session (<code>runId === sessionId</code>). The run read model supplies current CNet projections, and operator requests resolve through inline attention items or the same generated actions used by the Swarm Commander role.</p>
|
|
55
|
+
|
|
56
|
+
<h2 id="relay">Transport & collab relay</h2>
|
|
57
|
+
<p>Placement comes from the selected endpoint in <code>.rig/state/connection.json</code>; <code>RIG_REMOTE_ALIAS</code> overrides it for scripts or one-off dispatch. Local and remote are placement choices for the same detached-drone runtime, not separate product modes. Terminal attach uses <code>rig attach <run-id></code>; web attach uses <code>rig attach <run-id> --web</code> or the exact run’s CNet action. Rig resolves the private transport credential internally.</p>
|
|
58
|
+
|
|
59
|
+
<h2 id="cap">Swappable capabilities</h2>
|
|
60
|
+
<p>At startup Rig composes plugins that provide and consume capabilities resolved by <code>@rig/kernel-seed</code>. The task source, the PR reviewer / merge-gate policy, the runtime-isolation backend, the agent-harness provider, and the validators are capability contributions — each one replaceable by swapping the plugin that provides it.</p>
|
|
61
|
+
|
|
62
|
+
<h2 id="extend">Extensibility</h2>
|
|
63
|
+
<p>Rig plugins are explicit packages for the workflow automation Rig runs around a session: task sources, validators, hooks, skills, roles, repo sources, task fields, and plugin commands. OMP/Pi extensions are separate community packages that add live-session tools, slash commands, and behavior inside the Pi session.</p>
|
|
64
|
+
|
|
65
|
+
<h2 id="headless-cli">Headless CLI</h2>
|
|
66
|
+
<p>The exact CLI is a first-class headless adapter over the same CNet and domain operations, for scripts, CI, release checks, and agents. Interactively, the same work runs through bare <code>rig</code>, inline <code>/fleet</code>/<code>/tasks</code>/<code>/drone</code> cards, exact-run attach, the Swarm Commander model role, and <code>rig doctor</code>.</p>
|
|
67
|
+
|
|
68
|
+
<div class="nextnav"><a href="../../docs/index.html"><span class="dir">← Back</span><span class="ttl">Docs</span></a><a href="../../docs/getting-started/index.html"><span class="dir">Next →</span><span class="ttl">Getting started</span></a></div>
|
|
69
|
+
</main>
|
|
70
|
+
</div>
|
|
71
|
+
<footer>
|
|
72
|
+
<div class="wrap">
|
|
73
|
+
<div class="foot">
|
|
74
|
+
<div class="col"><h5>orchestrate</h5><a href="../../docs/getting-started/index.html">getting started</a><a href="../../docs/runs/index.html">the run lifecycle</a><a href="../../docs/operator/index.html">operator guide</a><a href="../../docs/gate/index.html">the merge gate</a></div>
|
|
75
|
+
<div class="col"><h5>extend</h5><a href="../../plugins/index.html">plugin authoring</a><a href="../../skills/index.html">skills</a><a href="../../docs/pi-extensions/index.html">OMP/Pi extensions</a><a href="../../docs/packages/index.html">packages</a></div>
|
|
76
|
+
<div class="col"><h5>operate</h5><a href="../../docs/index.html">docs home</a><a href="../../cli/index.html">cli reference</a><a href="../../config/index.html">rig.config.ts</a></div>
|
|
77
|
+
<div class="col"><h5>source</h5><a href="https://github.com/humanity-org/rig">github</a><a href="https://where.rig-does.work/install">install script</a></div>
|
|
78
|
+
<div class="sig">Rig is the OMP session extension.<br><span class="blk">You are the operator.</span><br>release: rig --version</div>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</footer>
|
|
82
|
+
<script src="../../assets/rig.js"></script>
|
|
83
|
+
<script src="../../assets/site.js?v=v9"></script>
|
|
84
|
+
</body></html>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
2
|
+
<title>Entities & data model // RIG</title><meta property="og:image" content="https://how.rig-does.work/assets/og-card.png"><meta name="twitter:card" content="summary_large_image">
|
|
3
|
+
<meta name="description" content="Rig's data model: foreground OMP hosts the CNet, each run is a detached OMP drone session, and /fleet, /tasks, and /drone materialize inline projections.">
|
|
4
|
+
<meta property="og:title" content="Entities & data model // Rig">
|
|
5
|
+
<meta property="og:description" content="Rig's data model: foreground OMP hosts the CNet, each run is a detached OMP drone session, and /fleet, /tasks, and /drone materialize inline projections.">
|
|
6
|
+
<link rel="stylesheet" href="../../assets/rig.css?v=v9">
|
|
7
|
+
<link rel="stylesheet" href="../../assets/site.css?v=v9">
|
|
8
|
+
<link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg">
|
|
9
|
+
</head>
|
|
10
|
+
<body data-doc-theme="entities">
|
|
11
|
+
<canvas id="docfield"></canvas>
|
|
12
|
+
<nav class="nav">
|
|
13
|
+
<div class="nav-in">
|
|
14
|
+
<a class="brand" href="../../index.html"><span class="mk"></span><span class="blk">Rig</span></a>
|
|
15
|
+
<button class="burger" onclick="document.getElementById('nl').classList.toggle('open')">menu</button>
|
|
16
|
+
<div class="nav-links" id="nl"><button class="nsearch" type="button" onclick="rigSearchOpen()">search<kbd>⌘K</kbd></button>
|
|
17
|
+
<a href="../../index.html">overview</a>
|
|
18
|
+
<a href="../../docs/index.html" class="active">docs</a>
|
|
19
|
+
<a href="../../plugins/index.html">plugins</a>
|
|
20
|
+
<a href="../../skills/index.html">skills</a>
|
|
21
|
+
<a href="../../cli/index.html">cli</a>
|
|
22
|
+
<a href="../../config/index.html">config</a>
|
|
23
|
+
<a href="https://github.com/humanity-org/rig" class="ext">github</a>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</nav>
|
|
27
|
+
<div class="docwrap">
|
|
28
|
+
<aside class="sidebar"><div class="grp">START</div><a href="../../docs/index.html" class="">docs home</a><a href="../../docs/capabilities/index.html" class="">capabilities</a><a href="../../docs/getting-started/index.html" class="">getting started</a><div class="grp">RUN</div><a href="../../docs/runs/index.html" class="">the run lifecycle</a><a href="../../docs/operator/index.html" class="">operator guide</a><a href="../../docs/swarm-commander/index.html" class="">swarm commander</a><a href="../../docs/fleet-irc/index.html" class="">drone messages</a><a href="../../docs/agent-tools/index.html" class="">agent tools</a><a href="../../docs/gate/index.html" class="">the merge gate</a><a href="../../docs/troubleshooting/index.html" class="">troubleshooting</a><div class="grp">ARCHITECTURE</div><a href="../../docs/architecture/index.html" class="">how rig works</a><a href="../../docs/entities/index.html" class="active">entities & data model</a><a href="../../docs/server/index.html" class="">OMP relay/web</a><a href="../../docs/security/index.html" class="">security & trust</a><a href="../../docs/environment/index.html" class="">environment variables</a><div class="grp">EXTEND</div><a href="../../plugins/index.html" class="">plugin authoring</a><a href="../../plugins/examples/index.html" class="">plugin examples</a><a href="../../docs/pi-extensions/index.html" class="">OMP/Pi extensions</a><a href="../../skills/index.html" class="">skills</a><a href="../../docs/task-sources/index.html" class="">task sources</a><a href="../../docs/validators/index.html" class="">validators & hooks</a><div class="grp">OPERATE</div><a href="../../cli/index.html" class="">cli reference</a><a href="../../config/index.html" class="">rig.config.ts</a><a href="../../docs/recipes/index.html" class="">recipes</a><a href="../../docs/glossary/index.html" class="">glossary</a><a href="../../docs/faq/index.html" class="">faq</a><div class="grp">ENGINE</div><a href="../../docs/packages/index.html" class="">packages</a></aside>
|
|
29
|
+
<main class="doc">
|
|
30
|
+
<h1>Entities & data model</h1>
|
|
31
|
+
<p class="lede">Rig stores almost nothing of its own. A run <em>is</em> an OMP (Pi) session; task state is <em>derived</em> from GitHub Issues or Linear on read; and CNet, <code>/fleet</code>, <code>/tasks</code>, and <code>/drone</code> render projections owned by the plugins behind them. There is no local task database.</p>
|
|
32
|
+
|
|
33
|
+
<h2 id="current-entities">Current entities</h2>
|
|
34
|
+
<table class="t"><thead><tr><th>entity</th><th>what owns it</th><th>what it means</th></tr></thead><tbody>
|
|
35
|
+
<tr><td>Run</td><td>OMP/Pi runtime + <code>@rig/run-plugin</code></td><td>A run is a detached OMP drone session: <code>runId === sessionId</code>. <code>run-plugin</code> folds its OMP JSONL journal into the read-model projection.</td></tr>
|
|
36
|
+
<tr><td>Task</td><td>The source (GitHub Issues / Linear) via <code>@rig/tasks-plugin</code></td><td>Task state is derived from the source on read. No local task DB — the issue tracker is the store.</td></tr>
|
|
37
|
+
<tr><td>Session surface</td><td><code>@rig/omp-extension-plugin</code> + owning plugins</td><td>The bounded foreground CNet, generated tools, model control, and inline <code>/fleet</code>, <code>/tasks</code>, <code>/drone</code> cards. Each card reads from its owning plugin projection.</td></tr>
|
|
38
|
+
<tr><td>Attach target</td><td><code>@rig/transport-plugin</code> + operator attach capability</td><td>One exact live detached run, selected by <code>runId</code>. The private relay credential is resolved internally for terminal or web attach.</td></tr>
|
|
39
|
+
<tr><td>Attention item</td><td><code>@rig/run-plugin</code> + <code>@rig/omp-extension-plugin</code></td><td>An inline CNet item for a run, approval, or question that currently needs operator input, with actions owned by the contributing plugin.</td></tr>
|
|
40
|
+
<tr><td>Package composition</td><td><code>rig.config.ts</code> / <code>rigfig.toml</code> / <code>.pi/settings.json</code></td><td>Explicit plugin and OMP/Pi package inputs; no package is discovered by accident.</td></tr>
|
|
41
|
+
</tbody></table>
|
|
42
|
+
|
|
43
|
+
<h2 id="derived-tasks">Derived task state</h2>
|
|
44
|
+
<p>Task state is not persisted by Rig. On read, <code>@rig/tasks-plugin</code> pulls the current state from the configured source — GitHub Issues or Linear — and projects it into <code>/tasks</code>. There is no local task database and nothing on disk that holds task state: change an issue in GitHub or Linear and Rig reflects it on the next read.</p>
|
|
45
|
+
|
|
46
|
+
<h2 id="status">Statuses</h2>
|
|
47
|
+
<p>Status labels describe operator-visible state: an active detached run, local or remote placement, an attached terminal or web client, a pending gate, or disconnected transport. Task status is whatever the source reports at read time. Nothing here is a second stored record that can drift from the run session or source issue.</p>
|
|
48
|
+
|
|
49
|
+
<h2 id="packages">Plugin/package state</h2>
|
|
50
|
+
<p>The Rig application supplies the first-party plugin graph. Executable project extras are composed through <code>rig.config.ts</code>; declarative projects select plugin-owned data in <code>rigfig.toml</code>. OMP/Pi packages are declared through <code>runtime.pi.packages</code> and materialized into <code>.pi/settings.json</code>. Skills materialize to <code>.pi/skills/</code> for OMP/Pi to read natively.</p>
|
|
51
|
+
|
|
52
|
+
<div class="nextnav"><a href="../../docs/architecture/index.html"><span class="dir">← Back</span><span class="ttl">Architecture</span></a><a href="../../docs/server/index.html"><span class="dir">Next →</span><span class="ttl">OMP relay + web</span></a></div>
|
|
53
|
+
</main>
|
|
54
|
+
</div>
|
|
55
|
+
<footer>
|
|
56
|
+
<div class="wrap">
|
|
57
|
+
<div class="foot">
|
|
58
|
+
<div class="col"><h5>orchestrate</h5><a href="../../docs/getting-started/index.html">getting started</a><a href="../../docs/runs/index.html">the run lifecycle</a><a href="../../docs/operator/index.html">operator guide</a><a href="../../docs/gate/index.html">the merge gate</a></div>
|
|
59
|
+
<div class="col"><h5>extend</h5><a href="../../plugins/index.html">plugin authoring</a><a href="../../skills/index.html">skills</a><a href="../../docs/pi-extensions/index.html">OMP/Pi extensions</a><a href="../../docs/packages/index.html">packages</a></div>
|
|
60
|
+
<div class="col"><h5>operate</h5><a href="../../docs/index.html">docs home</a><a href="../../cli/index.html">cli reference</a><a href="../../config/index.html">rig.config.ts</a></div>
|
|
61
|
+
<div class="col"><h5>source</h5><a href="https://github.com/humanity-org/rig">github</a><a href="https://where.rig-does.work/install">install script</a></div>
|
|
62
|
+
<div class="sig">Rig is the OMP session extension.<br><span class="blk">You are the operator.</span><br>release: rig --version</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</footer>
|
|
66
|
+
<script src="../../assets/rig.js"></script>
|
|
67
|
+
<script src="../../assets/site.js?v=v9"></script>
|
|
68
|
+
</body></html>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
2
|
+
<title>Environment variables // RIG</title><meta property="og:image" content="https://how.rig-does.work/assets/og-card.png"><meta name="twitter:card" content="summary_large_image">
|
|
3
|
+
<meta name="description" content="Runtime knobs for foreground Rig, detached-drone placement, relay/discovery, package pins, sandbox policy, and the exact headless CLI.">
|
|
4
|
+
<meta property="og:title" content="Environment variables // Rig">
|
|
5
|
+
<meta property="og:description" content="Runtime knobs for foreground Rig, detached-drone placement, relay/discovery, package pins, sandbox policy, and the exact headless CLI.">
|
|
6
|
+
<link rel="stylesheet" href="../../assets/rig.css?v=v9">
|
|
7
|
+
<link rel="stylesheet" href="../../assets/site.css?v=v9">
|
|
8
|
+
<link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg">
|
|
9
|
+
</head>
|
|
10
|
+
<body data-doc-theme="env">
|
|
11
|
+
<canvas id="docfield"></canvas>
|
|
12
|
+
<nav class="nav">
|
|
13
|
+
<div class="nav-in">
|
|
14
|
+
<a class="brand" href="../../index.html"><span class="mk"></span><span class="blk">Rig</span></a>
|
|
15
|
+
<button class="burger" onclick="document.getElementById('nl').classList.toggle('open')">menu</button>
|
|
16
|
+
<div class="nav-links" id="nl"><button class="nsearch" type="button" onclick="rigSearchOpen()">search<kbd>⌘K</kbd></button>
|
|
17
|
+
<a href="../../index.html">overview</a>
|
|
18
|
+
<a href="../../docs/index.html" class="active">docs</a>
|
|
19
|
+
<a href="../../plugins/index.html">plugins</a>
|
|
20
|
+
<a href="../../skills/index.html">skills</a>
|
|
21
|
+
<a href="../../cli/index.html">cli</a>
|
|
22
|
+
<a href="../../config/index.html">config</a>
|
|
23
|
+
<a href="https://github.com/humanity-org/rig" class="ext">github</a>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
</nav>
|
|
27
|
+
<div class="docwrap">
|
|
28
|
+
<aside class="sidebar"><div class="grp">START</div><a href="../../docs/index.html" class="">docs home</a><a href="../../docs/capabilities/index.html" class="">capabilities</a><a href="../../docs/getting-started/index.html" class="">getting started</a><div class="grp">RUN</div><a href="../../docs/runs/index.html" class="">the run lifecycle</a><a href="../../docs/operator/index.html" class="">operator guide</a><a href="../../docs/swarm-commander/index.html" class="">swarm commander</a><a href="../../docs/fleet-irc/index.html" class="">drone messages</a><a href="../../docs/agent-tools/index.html" class="">agent tools</a><a href="../../docs/gate/index.html" class="">the merge gate</a><a href="../../docs/troubleshooting/index.html" class="">troubleshooting</a><div class="grp">ARCHITECTURE</div><a href="../../docs/architecture/index.html" class="">how rig works</a><a href="../../docs/entities/index.html" class="">entities & data model</a><a href="../../docs/server/index.html" class="">OMP relay/web</a><a href="../../docs/security/index.html" class="">security & trust</a><a href="../../docs/environment/index.html" class="active">environment variables</a><div class="grp">EXTEND</div><a href="../../plugins/index.html" class="">plugin authoring</a><a href="../../plugins/examples/index.html" class="">plugin examples</a><a href="../../docs/pi-extensions/index.html" class="">OMP/Pi extensions</a><a href="../../skills/index.html" class="">skills</a><a href="../../docs/task-sources/index.html" class="">task sources</a><a href="../../docs/validators/index.html" class="">validators & hooks</a><div class="grp">OPERATE</div><a href="../../cli/index.html" class="">cli reference</a><a href="../../config/index.html" class="">rig.config.ts</a><a href="../../docs/recipes/index.html" class="">recipes</a><a href="../../docs/glossary/index.html" class="">glossary</a><a href="../../docs/faq/index.html" class="">faq</a><div class="grp">ENGINE</div><a href="../../docs/packages/index.html" class="">packages</a></aside>
|
|
29
|
+
<main class="doc">
|
|
30
|
+
<h1>Environment variables</h1>
|
|
31
|
+
<p class="lede">Most Rig behavior is configured in <code>.rig/rigfig.toml</code> (or <code>.rig/rig.config.ts</code>) and through the Rig session. Environment variables are escape hatches for launch, placement, relay, package, sandbox, and the exact headless CLI. Anything settable by env can also be set from config via the generic <code>env</code> map; ambient env always wins.</p>
|
|
32
|
+
<h2 id="launcher">Launcher and workspace</h2>
|
|
33
|
+
<table class="t"><thead><tr><th>variable</th><th>meaning</th></tr></thead><tbody>
|
|
34
|
+
<tr><td><code>RIG_PROJECT_ROOT</code></td><td>Project-root override used when a script cannot launch from the workspace directory. Prefer <code>rig --workspace <path></code> for humans.</td></tr>
|
|
35
|
+
<tr><td><code>RIG_STATE_DIR</code> / <code>RIG_LOGS_DIR</code></td><td>Override where Rig writes private per-project state and run logs.</td></tr>
|
|
36
|
+
<tr><td><code>RIG_REMOTE_ALIAS</code></td><td>Override remote placement for dispatch. Without it, Rig uses the selected endpoint in <code>.rig/state/connection.json</code>.</td></tr>
|
|
37
|
+
</tbody></table>
|
|
38
|
+
<h2 id="relay">Relay and web</h2>
|
|
39
|
+
<p>Detached run sessions use <code>wss://where.rig-does.work</code> by default. Deployment-specific env (<code>RIG_BACKBONE_HOST</code>, or the explicit <code>RIG_RELAY_URL</code> / <code>RIG_REGISTRY_URL</code>) can point relay and discovery at another trusted host. Private attach credentials remain runtime transport state. These mirror the <code>[runtime.server]</code> config section.</p>
|
|
40
|
+
<h2 id="packages">Packages</h2>
|
|
41
|
+
<p><code>runtime.pi.packages</code> is the team-facing package pin. The Pi harness env knobs (<code>RIG_PI_BINARY</code>, <code>RIG_PI_MODEL</code>, <code>RIG_PI_PROVIDER</code>) are for release/testing only; normal projects should commit package intent in config or <code>.pi/settings.json</code>.</p>
|
|
42
|
+
<h2 id="sandbox">Sandbox and security</h2>
|
|
43
|
+
<p>The OS sandbox is <code>workspace.sandbox</code> (<code>enforce</code> by default). <code>RIG_RUNTIME_SANDBOX</code> and <code>RIG_SANDBOX_BACKEND</code> are fail-closed diagnostics for the sandbox axis: if a host cannot provide the configured backend, the run must not silently downgrade. GitHub, model, and other credentials are supplied to runs through scoped, per-run injection (the <code>RIG_BAKED_*</code> family), never task payloads or committed files.</p>
|
|
44
|
+
<h2 id="older-variables">Older variables</h2>
|
|
45
|
+
<p>Some older environment variables remain readable by the exact CLI and CI probes. Prefer config and the current variables above for new setups.</p>
|
|
46
|
+
<div class="nextnav"><a href="../../docs/security/index.html"><span class="dir">← Back</span><span class="ttl">Security & trust</span></a><a href="../../plugins/index.html"><span class="dir">Next →</span><span class="ttl">Plugin authoring</span></a></div>
|
|
47
|
+
</main>
|
|
48
|
+
</div>
|
|
49
|
+
<footer>
|
|
50
|
+
<div class="wrap">
|
|
51
|
+
<div class="foot">
|
|
52
|
+
<div class="col"><h5>orchestrate</h5><a href="../../docs/getting-started/index.html">getting started</a><a href="../../docs/runs/index.html">the run lifecycle</a><a href="../../docs/operator/index.html">operator guide</a><a href="../../docs/gate/index.html">the merge gate</a></div>
|
|
53
|
+
<div class="col"><h5>extend</h5><a href="../../plugins/index.html">plugin authoring</a><a href="../../skills/index.html">skills</a><a href="../../docs/pi-extensions/index.html">OMP/Pi extensions</a><a href="../../docs/packages/index.html">packages</a></div>
|
|
54
|
+
<div class="col"><h5>operate</h5><a href="../../docs/index.html">docs home</a><a href="../../cli/index.html">cli reference</a><a href="../../config/index.html">rig.config.ts</a></div>
|
|
55
|
+
<div class="col"><h5>source</h5><a href="https://github.com/humanity-org/rig">github</a><a href="https://where.rig-does.work/install">install script</a></div>
|
|
56
|
+
<div class="sig">Rig is the OMP session extension.<br><span class="blk">You are the operator.</span><br>release: rig --version</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</footer>
|
|
60
|
+
<script src="../../assets/rig.js"></script>
|
|
61
|
+
<script src="../../assets/site.js?v=v9"></script>
|
|
62
|
+
</body></html>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>FAQ // RIG</title><meta property="og:image" content="https://how.rig-does.work/assets/og-card.png"><meta name="twitter:card" content="summary_large_image"><meta name="description" content="FAQ for current Rig: OMP-first operation, collab relay, package pins, the headless CLI, and setup expectations."><meta property="og:title" content="FAQ // RIG"><meta property="og:description" content="FAQ for current Rig: OMP-first operation, collab relay, package pins, the headless CLI, and setup expectations."><link rel="stylesheet" href="../../assets/rig.css?v=v9"><link rel="stylesheet" href="../../assets/site.css?v=v9"><link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg"></head><body data-doc-theme="ripple"><canvas id="docfield"></canvas><nav class="nav"><div class="nav-in"><a class="brand" href="../../index.html"><span class="mk"></span><span class="blk">Rig</span></a><button class="burger" onclick="document.getElementById('nl').classList.toggle('open')">menu</button><div class="nav-links" id="nl"><button class="nsearch" type="button" onclick="rigSearchOpen()">search<kbd>⌘K</kbd></button><a href="../../index.html" class="">overview</a><a href="../../docs/index.html" class="active">docs</a><a href="../../plugins/index.html" class="">plugins</a><a href="../../skills/index.html" class="">skills</a><a href="../../cli/index.html" class="">cli</a><a href="../../config/index.html" class="">config</a><a href="https://github.com/humanity-org/rig" class="ext">github</a></div></div></nav><div class="docwrap"><aside class="sidebar"><div class="grp">START</div><a href="../../docs/index.html" class="">docs home</a><a href="../../docs/capabilities/index.html" class="">capabilities</a><a href="../../docs/getting-started/index.html" class="">getting started</a><div class="grp">RUN</div><a href="../../docs/runs/index.html" class="">the run lifecycle</a><a href="../../docs/operator/index.html" class="">operator guide</a><a href="../../docs/swarm-commander/index.html" class="">swarm commander</a><a href="../../docs/fleet-irc/index.html" class="">drone messages</a><a href="../../docs/agent-tools/index.html" class="">agent tools</a><a href="../../docs/gate/index.html" class="">the merge gate</a><a href="../../docs/troubleshooting/index.html" class="">troubleshooting</a><div class="grp">ARCHITECTURE</div><a href="../../docs/architecture/index.html" class="">how rig works</a><a href="../../docs/entities/index.html" class="">entities & data model</a><a href="../../docs/server/index.html" class="">OMP relay/web</a><a href="../../docs/security/index.html" class="">security & trust</a><a href="../../docs/environment/index.html" class="">environment variables</a><div class="grp">EXTEND</div><a href="../../plugins/index.html" class="">plugin authoring</a><a href="../../plugins/examples/index.html" class="">plugin examples</a><a href="../../docs/pi-extensions/index.html" class="">OMP/Pi extensions</a><a href="../../skills/index.html" class="">skills</a><a href="../../docs/task-sources/index.html" class="">task sources</a><a href="../../docs/validators/index.html" class="">validators & hooks</a><div class="grp">OPERATE</div><a href="../../cli/index.html" class="">cli reference</a><a href="../../config/index.html" class="">rig.config.ts</a><a href="../../docs/recipes/index.html" class="">recipes</a><a href="../../docs/glossary/index.html" class="">glossary</a><a href="../../docs/faq/index.html" class="active">faq</a><div class="grp">ENGINE</div><a href="../../docs/packages/index.html" class="">packages</a></aside><main class="doc">
|
|
2
|
+
<h1>FAQ</h1>
|
|
3
|
+
<p class="lede">Straight answers for the current Rig surface.</p>
|
|
4
|
+
<h2 id="start">How do I start?</h2>
|
|
5
|
+
<p>Install the binary, then run bare <code>rig</code> in a project. It opens foreground OMP with the Rig extension for that workspace: bounded CNet projection, generated model tools, model control, and inline <code>/fleet</code>, <code>/tasks</code>, <code>/drone</code> cards. Use <code>rig --workspace <path></code> for another project.</p>
|
|
6
|
+
<h2 id="share">Can I attach to a running drone?</h2>
|
|
7
|
+
<p>Yes. Use <code>rig attach <run-id></code> for terminal attach or add <code>--web</code> for web attach. Both target that exact detached drone; Rig resolves its private credential internally. Foreground Rig and the Swarm Commander role are not attachable sessions.</p>
|
|
8
|
+
<h2 id="tasks">Where do tasks come from?</h2>
|
|
9
|
+
<p>From GitHub Issues or Linear. Task state is derived from the source on read — there is no local task database.</p>
|
|
10
|
+
<h2 id="packages">How do extensions load?</h2>
|
|
11
|
+
<p>Rig plugins are explicit <code>definePlugin</code> packages composed in <code>rig.config.ts</code>. OMP/Pi extensions are live-session packages declared in <code>runtime.pi.packages</code>; Rig materializes them into <code>.pi/settings.json</code> and OMP/Pi auto-installs them at session start. Manage them with <code>rig pi add/list/search</code>.</p>
|
|
12
|
+
<h2 id="gate">How does the merge gate work?</h2>
|
|
13
|
+
<p>The default review provider is <code>github</code> — GitHub reviews plus status checks. The gate pins the merge to the exact reviewed commit, so a commit pushed after the gate clears makes the merge fail. Swap the policy with <code>review.provider</code>.</p>
|
|
14
|
+
<h2 id="headless-cli">Is the exact CLI just for scripts?</h2>
|
|
15
|
+
<p>No — the exact CLI is a first-class headless adapter over the same operations, for scripts, CI, and agents: <code>rig doctor</code>, <code>rig config get/set</code>, <code>rig test</code>, <code>rig server</code>, <code>rig run</code>, and more (add <code>--json</code> for structured output). Interactively, the same work runs through bare <code>rig</code>, <code>/fleet</code>, <code>/tasks</code>, <code>/drone</code>, and the Swarm Commander.</p>
|
|
16
|
+
<div class="nextnav"><a href="../../docs/glossary/index.html"><span class="dir">← Back</span><span class="ttl">Glossary</span></a><a href="../../docs/packages/index.html"><span class="dir">Next →</span><span class="ttl">Packages</span></a></div>
|
|
17
|
+
</main></div><footer><div class="wrap"><div class="foot"><div class="col"><h5>orchestrate</h5><a href="../../docs/getting-started/index.html">getting started</a><a href="../../docs/runs/index.html">the run lifecycle</a><a href="../../docs/operator/index.html">operator guide</a><a href="../../docs/gate/index.html">the merge gate</a></div><div class="col"><h5>extend</h5><a href="../../plugins/index.html">plugin authoring</a><a href="../../skills/index.html">skills guide</a><a href="../../docs/pi-extensions/index.html">OMP/Pi extensions</a><a href="../../docs/packages/index.html">packages</a></div><div class="col"><h5>live</h5><a href="../../index.html">the home rig</a><a href="../../cli/index.html">cli reference</a><a href="https://where.rig-does.work/install">install script</a></div><div class="sig">Rig is the OMP session extension.<br><span class="blk">You are the operator.</span><br>release: rig --version</div></div></div></footer><script src="../../assets/rig.js"></script><script src="../../assets/site.js?v=v9"></script></body></html>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Drone messages // RIG</title><meta name="description" content="A detached drone has a narrow journal-backed operator message lane; local and remote share the same run contract."><meta property="og:title" content="Drone messages // RIG"><meta property="og:description" content="A detached drone has a narrow journal-backed operator message lane; local and remote share the same run contract."><meta property="og:image" content="https://how.rig-does.work/assets/og-card.png"><meta name="twitter:card" content="summary_large_image"><link rel="stylesheet" href="../../assets/rig.css?v=v9"><link rel="stylesheet" href="../../assets/site.css?v=v9"><link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg"></head><body data-doc-theme="feeds"><canvas id="docfield"></canvas><nav class="nav"><div class="nav-in"><a class="brand" href="../../index.html"><span class="mk"></span><span class="blk">Rig</span></a><button class="burger" onclick="document.getElementById('nl').classList.toggle('open')">menu</button><div class="nav-links" id="nl"><button class="nsearch" type="button" onclick="rigSearchOpen()">search<kbd>⌘K</kbd></button><a href="../../index.html" class="">overview</a><a href="../../docs/index.html" class="active">docs</a><a href="../../plugins/index.html" class="">plugins</a><a href="../../skills/index.html" class="">skills</a><a href="../../cli/index.html" class="">cli</a><a href="../../config/index.html" class="">config</a><a href="https://github.com/humanity-org/rig" class="ext">github</a></div></div></nav><div class="docwrap"><aside class="sidebar"><div class="grp">START</div><a href="../../docs/index.html" class="">docs home</a><a href="../../docs/capabilities/index.html" class="">capabilities</a><a href="../../docs/getting-started/index.html" class="">getting started</a><div class="grp">RUN</div><a href="../../docs/runs/index.html" class="">the run lifecycle</a><a href="../../docs/operator/index.html" class="">operator guide</a><a href="../../docs/swarm-commander/index.html" class="">swarm commander</a><a href="../../docs/fleet-irc/index.html" class="active">drone messages</a><a href="../../docs/agent-tools/index.html" class="">agent tools</a><a href="../../docs/gate/index.html" class="">the merge gate</a><a href="../../docs/troubleshooting/index.html" class="">troubleshooting</a><div class="grp">ARCHITECTURE</div><a href="../../docs/architecture/index.html" class="">how rig works</a><a href="../../docs/entities/index.html" class="">entities & data model</a><a href="../../docs/server/index.html" class="">OMP relay/web</a><a href="../../docs/security/index.html" class="">security & trust</a><a href="../../docs/environment/index.html" class="">environment variables</a><div class="grp">EXTEND</div><a href="../../plugins/index.html" class="">plugin authoring</a><a href="../../plugins/examples/index.html" class="">plugin examples</a><a href="../../docs/pi-extensions/index.html" class="">OMP/Pi extensions</a><a href="../../skills/index.html" class="">skills</a><a href="../../docs/task-sources/index.html" class="">task sources</a><a href="../../docs/validators/index.html" class="">validators & hooks</a><div class="grp">OPERATE</div><a href="../../cli/index.html" class="">cli reference</a><a href="../../config/index.html" class="">rig.config.ts</a><a href="../../docs/recipes/index.html" class="">recipes</a><a href="../../docs/glossary/index.html" class="">glossary</a><a href="../../docs/faq/index.html" class="">faq</a><div class="grp">ENGINE</div><a href="../../docs/packages/index.html" class="">packages</a></aside><main class="doc">
|
|
2
|
+
<h1>Drone messages</h1>
|
|
3
|
+
<p class="lede">A detached drone has a narrow journal-backed message lane to the operator. It is not an all-peer fleet bus: the current drone tool accepts only the operator as a destination.</p>
|
|
4
|
+
|
|
5
|
+
<h2 id="model">One run, one journal</h2>
|
|
6
|
+
<p>The drone-side <code>irc</code> tool is installed only in Rig run sessions. Outbound messages and operator replies are recorded in that run’s OMP JSONL journal and exposed through the run read model.</p>
|
|
7
|
+
|
|
8
|
+
<h2 id="verbs">Drone tool operations</h2>
|
|
9
|
+
<table class="t"><thead><tr><th>op</th><th>parameters</th><th>what it does</th></tr></thead><tbody>
|
|
10
|
+
<tr><td><code>send</code> or omitted</td><td>optional <code>to</code>, <code>message</code> or <code>body</code>, optional <code>replyTo</code></td><td>Append a message to the run journal. The only accepted destination is <code>operator</code>; omitted means operator.</td></tr>
|
|
11
|
+
<tr><td><code>inbox</code></td><td>optional <code>sinceSeq</code>, optional <code>limit</code></td><td>Read that run’s operator messages from the run read model. The limit defaults to 20 and clamps to 50.</td></tr>
|
|
12
|
+
</tbody></table>
|
|
13
|
+
|
|
14
|
+
<h2 id="receipts">What a receipt means</h2>
|
|
15
|
+
<p>The drone tool returns a local journal sequence receipt after the message is appended. Foreground CNet action results follow a stricter rule: sending transport data is not enough; an action is applied only when the owning run capability returns the exact durable session/effect receipt.</p>
|
|
16
|
+
|
|
17
|
+
<h2 id="channels">Current channel boundary</h2>
|
|
18
|
+
<p>The current product does not expose drone-to-drone broadcast, a Commander mailbox tool, or a fleet-wide wake bus. Operator-to-drone direction goes through the exact run’s CNet action. Drone-to-operator messages remain facts in that run’s journal.</p>
|
|
19
|
+
|
|
20
|
+
<h2 id="wire">Local and remote</h2>
|
|
21
|
+
<p>Local and remote describe only where the detached drone is placed. The same run id, journal format, CNet action contract, and exact-run attach behavior apply to both placements.</p>
|
|
22
|
+
|
|
23
|
+
<h2 id="cnet-surface">In the CNet</h2>
|
|
24
|
+
<ul>
|
|
25
|
+
<li><b>/fleet:</b> one bounded fleet aggregate; it is not a callsign inbox.</li>
|
|
26
|
+
<li><b>/drone:</b> current status, recent timeline, controls, and attach actions for one exact run; it does not render a full DM thread.</li>
|
|
27
|
+
<li><b>Attention items:</b> approvals and questions that need operator input are separate inline CNet items.</li>
|
|
28
|
+
<li><b>Commander:</b> uses generated CNet actions on an operator turn; it has no autonomous wake mailbox.</li>
|
|
29
|
+
</ul>
|
|
30
|
+
|
|
31
|
+
<h2 id="from-a-drone">From inside a drone</h2>
|
|
32
|
+
<pre class="code"><span class="p">drone tool</span> irc { "message": "Blocked on APP_TOKEN; integration cannot run." }
|
|
33
|
+
<span class="p">receipt</span> journal append · to operator
|
|
34
|
+
<span class="p">drone tool</span> irc { "op": "inbox", "sinceSeq": 120, "limit": 10 }</pre>
|
|
35
|
+
|
|
36
|
+
<h2 id="semantics">Semantics, precisely</h2>
|
|
37
|
+
<ul>
|
|
38
|
+
<li>The run journal is authoritative for message order.</li>
|
|
39
|
+
<li><code>replyTo</code> correlates an operator reply with a prior message.</li>
|
|
40
|
+
<li>Unknown destinations and calls outside a Rig run session refuse structurally.</li>
|
|
41
|
+
<li>Message transport does not synthesize a CNet action receipt.</li>
|
|
42
|
+
</ul>
|
|
43
|
+
<div class="nextnav"><a href="../../docs/swarm-commander/index.html"><span class="dir">← Back</span><span class="ttl">Swarm Commander</span></a><a href="../../docs/agent-tools/index.html"><span class="dir">Next →</span><span class="ttl">Agent tools</span></a></div>
|
|
44
|
+
</main></div><footer><div class="wrap"><div class="foot"><div class="col"><h5>orchestrate</h5><a href="../../docs/getting-started/index.html">getting started</a><a href="../../docs/runs/index.html">the run lifecycle</a><a href="../../docs/operator/index.html">operator guide</a><a href="../../docs/gate/index.html">the merge gate</a></div><div class="col"><h5>extend</h5><a href="../../plugins/index.html">plugin authoring</a><a href="../../skills/index.html">skills guide</a><a href="../../docs/pi-extensions/index.html">OMP/Pi extensions</a><a href="../../docs/packages/index.html">packages</a></div><div class="col"><h5>live</h5><a href="../../index.html">the home rig</a><a href="../../cli/index.html">cli reference</a><a href="https://where.rig-does.work/install">install script</a></div><div class="sig">Rig is the OMP session extension.<br><span class="blk">You are the operator.</span><br>release: rig --version</div></div></div></footer><script src="../../assets/rig.js"></script><script src="../../assets/site.js?v=v9"></script></body></html>
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>The strict merge gate // RIG</title><meta property="og:image" content="https://how.rig-does.work/assets/og-card.png"><meta name="twitter:card" content="summary_large_image"><meta name="description" content="Nothing merges on vibes. The strict merge gate in full: GitHub review approval, green CI, resolved threads, and the SHA-pinned merge."><meta property="og:title" content="The strict merge gate // RIG"><meta property="og:description" content="Nothing merges on vibes. The strict merge gate in full: GitHub review approval, green CI, resolved threads, and the SHA-pinned merge."><link rel="stylesheet" href="../../assets/rig.css?v=v9"><link rel="stylesheet" href="../../assets/site.css?v=v9"><link rel="icon" type="image/svg+xml" href="../../assets/favicon.svg"></head><body><canvas id="docfield"></canvas><nav class="nav"><div class="nav-in"><a class="brand" href="../../index.html"><span class="mk"></span><span class="blk">Rig</span></a><button class="burger" onclick="document.getElementById('nl').classList.toggle('open')">menu</button><div class="nav-links" id="nl"><button class="nsearch" type="button" onclick="rigSearchOpen()">search<kbd>⌘K</kbd></button><a href="../../index.html" class="">overview</a><a href="../../docs/index.html" class="active">docs</a><a href="../../plugins/index.html" class="">plugins</a><a href="../../skills/index.html" class="">skills</a><a href="../../cli/index.html" class="">cli</a><a href="../../config/index.html" class="">config</a><a href="https://github.com/humanity-org/rig" class="ext">github</a></div></div></nav><div class="docwrap"><aside class="sidebar"><div class="grp">START</div><a href="../../docs/index.html" class="">docs home</a><a href="../../docs/capabilities/index.html" class="">capabilities</a><a href="../../docs/getting-started/index.html" class="">getting started</a><div class="grp">RUN</div><a href="../../docs/runs/index.html" class="">the run lifecycle</a><a href="../../docs/operator/index.html" class="">operator guide</a><a href="../../docs/swarm-commander/index.html" class="">swarm commander</a><a href="../../docs/fleet-irc/index.html" class="">drone messages</a><a href="../../docs/agent-tools/index.html" class="">agent tools</a><a href="../../docs/gate/index.html" class="active">the merge gate</a><a href="../../docs/troubleshooting/index.html" class="">troubleshooting</a><div class="grp">ARCHITECTURE</div><a href="../../docs/architecture/index.html" class="">how rig works</a><a href="../../docs/entities/index.html" class="">entities & data model</a><a href="../../docs/server/index.html" class="">OMP relay/web</a><a href="../../docs/security/index.html" class="">security & trust</a><a href="../../docs/environment/index.html" class="">environment variables</a><div class="grp">EXTEND</div><a href="../../plugins/index.html" class="">plugin authoring</a><a href="../../plugins/examples/index.html" class="">plugin examples</a><a href="../../docs/pi-extensions/index.html" class="">OMP/Pi extensions</a><a href="../../skills/index.html" class="">skills</a><a href="../../docs/task-sources/index.html" class="">task sources</a><a href="../../docs/validators/index.html" class="">validators & hooks</a><div class="grp">OPERATE</div><a href="../../cli/index.html" class="">cli reference</a><a href="../../config/index.html" class="">rig.config.ts</a><a href="../../docs/recipes/index.html" class="">recipes</a><a href="../../docs/glossary/index.html" class="">glossary</a><a href="../../docs/faq/index.html" class="">faq</a><div class="grp">ENGINE</div><a href="../../docs/packages/index.html" class="">packages</a></aside><main class="doc"><h1>The strict merge gate</h1>
|
|
2
|
+
<p class="lede">Nothing merges on vibes. A run grinds the same PR until GitHub says approved — green CI, resolved threads, no unresolved review — or it dies; the merge then ships the exact SHA the gate verified, nothing else. The policy lives in <code>@rig/pr-review-plugin</code> and is swappable via <code>review.provider</code>.</p>
|
|
3
|
+
|
|
4
|
+
<h2 id="conditions">The gate, stated</h2>
|
|
5
|
+
<p>On every Rig-owned merge — unconditionally, independent of the completion-review policy — the merge stage refuses to call <code>gh pr merge</code> until <b>all</b> of the following hold for the <b>current head SHA</b>, read fresh from GitHub:</p>
|
|
6
|
+
<div class="demo"><div class="demo-bar"><span class="t">strict merge gate · PR #418</span></div><div class="demo-body">
|
|
7
|
+
<span class="cy">review</span> GitHub reviewDecision <span class="w">APPROVED</span> <span class="ok">✓</span><br>
|
|
8
|
+
<span class="cy">ci checks</span> 14/14 green <span class="dim">(minus merge.allowedFailures)</span> <span class="ok">✓</span><br>
|
|
9
|
+
<span class="cy">threads</span> all review threads resolved <span class="ok">✓</span><br>
|
|
10
|
+
<span class="cy">head sha</span> read & pinned @ <span class="w">9f3c2e1</span> <span class="ok">✓</span><br>
|
|
11
|
+
<span class="yl">merge</span> gh pr merge <span class="dim">--match-head-commit</span> 9f3c2e1<br>
|
|
12
|
+
<span class="ok">closed</span> issue #418 · branch deleted
|
|
13
|
+
</div></div>
|
|
14
|
+
|
|
15
|
+
<h2 id="decision">The decision, as code <span class="ns">// evaluateStrictPrMergeGate</span></h2>
|
|
16
|
+
<p>The gate is one pure function over freshly-read GitHub evidence: <code>evaluateStrictPrMergeGate(evidence)</code>. It approves only when the reason list is empty — <b>zero blocking reasons fire</b>:</p>
|
|
17
|
+
<pre class="code"><span class="c">// pr-review-gate.ts — approved iff no reason fired</span>
|
|
18
|
+
<span class="k">const</span> <span class="f">approved</span> = evaluated.reasonDetails.length === <span class="s">0</span>;</pre>
|
|
19
|
+
<p>Each reason is produced by reading the PR fresh: read errors, a missing head SHA, failed or pending CI checks, a blocking GitHub <code>reviewDecision</code>, and unresolved review threads. Every reason carries a <code>reasonClass</code> (<code>pending</code> vs <code>reject</code>) and a <code>suggestedAction</code> (<code>wait</code>, <code>fix</code>, <code>needs_attention</code>). A gate that is <b>all-pending</b> means “keep watching” (the loop polls); any <code>reject</code> reason means the head needs work before it can pass.</p>
|
|
20
|
+
<pre class="code"><span class="c"> GitHub evidence (read fresh, every cycle)</span>
|
|
21
|
+
<span class="p">↓</span>
|
|
22
|
+
<span class="f">evaluateStrictPrMergeGate</span>(evidence)
|
|
23
|
+
<span class="p">↓</span>
|
|
24
|
+
<span class="p">┌─</span> reasonDetails.length > 0 ?
|
|
25
|
+
<span class="p">│</span> <span class="mg">yes</span> → all pending ? <span class="cy">wait/poll</span> : <span class="mg">reject</span> → give direction / re-request review
|
|
26
|
+
<span class="p">└─</span> <span class="ok">no</span> → <span class="ok">merge --match-head-commit <sha></span></pre>
|
|
27
|
+
|
|
28
|
+
<h2 id="evidence">The evidence the gate reads</h2>
|
|
29
|
+
<p>The gate trusts nothing it didn’t read. It is built around the surfaces GitHub actually exposes on a PR — read live from the GitHub API/CLI, not assumed:</p>
|
|
30
|
+
<table class="t"><thead><tr><th>surface</th><th>behavior</th></tr></thead>
|
|
31
|
+
<tbody>
|
|
32
|
+
<tr><td>reviewDecision</td><td>GitHub’s own PR-level review state: <code>APPROVED</code>, <code>CHANGES_REQUESTED</code>, or <code>REVIEW_REQUIRED</code>. Only <code>APPROVED</code> (with no other blocking reason) clears the gate.</td></tr>
|
|
33
|
+
<tr><td>check runs / statuses</td><td>Every CI check on the current head, classified success / pending / failure. Failures block; pending holds; success (or an allowlisted name) passes.</td></tr>
|
|
34
|
+
<tr><td>review threads</td><td>Every review conversation on the PR. Any unresolved thread holds the merge, regardless of the review decision.</td></tr>
|
|
35
|
+
<tr><td>head SHA</td><td>The current head commit. The merge is pinned to it; if it can’t be read, the gate refuses to merge at all.</td></tr>
|
|
36
|
+
</tbody></table>
|
|
37
|
+
|
|
38
|
+
<h2 id="ci">Review, CI, threads</h2>
|
|
39
|
+
<ul>
|
|
40
|
+
<li><b>GitHub review must be APPROVED</b> for the current head. A <code>CHANGES_REQUESTED</code> or <code>REVIEW_REQUIRED</code> decision blocks.</li>
|
|
41
|
+
<li><b>CI must be green</b> for the current head, minus the explicit <code>merge.allowedFailures</code> allowlist.</li>
|
|
42
|
+
<li><b>A pending check always counts as pending</b> — the gate waits rather than merging on an incomplete run.</li>
|
|
43
|
+
<li><b>Every review thread resolved.</b> Unresolved threads hold the merge regardless of the review decision.</li>
|
|
44
|
+
</ul>
|
|
45
|
+
|
|
46
|
+
<h2 id="reason-codes">Why a head was held <span class="ns">// the reason codes</span></h2>
|
|
47
|
+
<p>When the gate withholds a merge it emits a structured <code>reasonDetails</code> list, one entry per failed condition. Each entry has a stable machine code, a <code>reasonClass</code>, and a <code>suggestedAction</code>. These are the codes the gate can emit:</p>
|
|
48
|
+
<table class="t"><thead><tr><th>code</th><th>class</th><th>plain English</th></tr></thead>
|
|
49
|
+
<tbody>
|
|
50
|
+
<tr><td>read_error</td><td>reject</td><td>A required PR evidence surface (PR view, checks, comments, or threads) could not be read in full. The gate refuses to merge on partial data.</td></tr>
|
|
51
|
+
<tr><td>missing_head_sha</td><td>reject</td><td>The PR head SHA could not be read, so the merge cannot be pinned to the current head at all.</td></tr>
|
|
52
|
+
<tr><td>ci_failed</td><td>reject</td><td>A CI check failed on the current head (after subtracting <code>merge.allowedFailures</code>).</td></tr>
|
|
53
|
+
<tr><td>check_pending</td><td>pending</td><td>A CI check is still running/queued on the current head. The gate waits.</td></tr>
|
|
54
|
+
<tr><td>review_decision_blocking</td><td>reject</td><td>GitHub’s <code>reviewDecision</code> is <code>CHANGES_REQUESTED</code> or <code>REVIEW_REQUIRED</code> — a required review is unresolved.</td></tr>
|
|
55
|
+
<tr><td>review_thread_unresolved</td><td>reject</td><td>An open review thread (any author) is unresolved. Resolve it or address the comment.</td></tr>
|
|
56
|
+
</tbody></table>
|
|
57
|
+
<div class="note">The pending-vs-reject split is what makes the loop patient instead of brittle. <b>Pending reasons mean “wait and poll”; reject reasons mean “this head needs action”</b> — Pi receives direction on the actionable feedback (<code>fix</code>) or an operator resolves it (<code>needs_attention</code>). A gate whose reasons are <i>all</i> pending never gives up; it keeps re-reading until the head clears or fails.</div>
|
|
58
|
+
|
|
59
|
+
<h2 id="pinned">The SHA-pinned merge</h2>
|
|
60
|
+
<p>Passing the gate is necessary but not sufficient — the merge must ship <b>the code the gate verified</b>:</p>
|
|
61
|
+
<pre class="code"><span class="p">$</span> gh pr merge --match-head-commit <span class="s"><gate-verified-sha></span> …</pre>
|
|
62
|
+
<p>If a commit races in between gate-pass and merge, <code>--match-head-commit</code> makes the merge <b>fail</b> instead of shipping unreviewed code. The run loops back to gate evaluation for the new head. Branch protection and repo rules are obeyed by default (<code>merge.bypass</code> is an explicit, off-by-default escape hatch).</p>
|
|
63
|
+
|
|
64
|
+
<h3 id="bypass-allowed-failures">merge.bypass and merge.allowedFailures <span class="ns">// the two escape hatches</span></h3>
|
|
65
|
+
<p>Two <code>merge</code> fields adjust what the final <code>gh pr merge</code> tolerates. Neither one weakens the strict gate — the gate has already passed by the time the merge command runs.</p>
|
|
66
|
+
<table class="t"><thead><tr><th>field</th><th>type / default</th><th>effect</th></tr></thead>
|
|
67
|
+
<tbody>
|
|
68
|
+
<tr><td>merge.bypass</td><td><code>boolean</code> · off</td><td>When <code>true</code>, Rig appends <code>--admin</code> to <code>gh pr merge</code>. That is GitHub’s administrator override: it merges <b>past GitHub branch-protection rules</b> (required reviewers, required status checks, linear-history rules) using the operator’s admin privileges.</td></tr>
|
|
69
|
+
<tr><td>merge.allowedFailures</td><td><code>string[]</code> · <code>[]</code></td><td>A check-name allowlist. Checks whose name matches an entry are <b>not counted</b> as a CI failure by the gate. Entries support <code>*</code> wildcards, matched case-insensitively against the full check name.</td></tr>
|
|
70
|
+
</tbody></table>
|
|
71
|
+
<pre class="code">merge: {
|
|
72
|
+
mode: <span class="s">"auto"</span>,
|
|
73
|
+
bypass: <span class="k">false</span>, <span class="c">// keep GitHub branch protection in force</span>
|
|
74
|
+
allowedFailures: [<span class="s">"license/cla"</span>, <span class="s">"codecov/*"</span>], <span class="c">// known-flaky / non-gating checks</span>
|
|
75
|
+
};</pre>
|
|
76
|
+
<div class="note"><b>Security implication of bypass.</b> <code>--admin</code> overrides GitHub’s server-side protection — the very rules a security team configures to require human review. What it does <b>not</b> override is Rig’s own machinery: the run still only reaches the merge after <code>evaluateStrictPrMergeGate</code> approved, and the merge is still pinned to the gate-verified SHA. So <code>bypass</code> trades GitHub’s gate for Rig’s gate. Leave it off unless you trust Rig’s strict gate <i>more</i> than your branch-protection config — and audit who can edit <code>.rig/rigfig.toml</code> / <code>.rig/rig.config.ts</code> if you turn it on.</div>
|
|
77
|
+
<p><code>allowedFailures</code> is the surgical alternative: rather than bypassing protection wholesale, name the exact non-gating checks (a CLA bot, an advisory coverage report) so the gate treats only those as ignorable while every other check still blocks. See <a href="../../docs/security/index.html">security & trust →</a> for how merge identity, tokens, and branch protection fit together.</p>
|
|
78
|
+
|
|
79
|
+
<h2 id="stale">A moved head triggers action, not a shrug</h2>
|
|
80
|
+
<p>When the branch moves past the reviewed SHA, the gate doesn’t merge on the old approval and doesn’t silently wait forever — GitHub dismisses or re-requires review on the new head, and the gate holds:</p>
|
|
81
|
+
<ul>
|
|
82
|
+
<li>the head SHA changes, so any prior <code>APPROVED</code> decision no longer clears the current head,</li>
|
|
83
|
+
<li>the gate waits for a current-head review decision and green current-head checks,</li>
|
|
84
|
+
<li>there is a short window between a push and CI/review completing where the gate correctly reports pending — that’s the system working, not stuck.</li>
|
|
85
|
+
</ul>
|
|
86
|
+
|
|
87
|
+
<h3 id="re-review-window">Watching the gate re-arm <span class="ns">// cnet + /drone</span></h3>
|
|
88
|
+
<p>Here is what an operator sees when Pi pushes a fix and the gate re-arms. The branch moved past the last reviewed SHA, so the gate holds on the new head, waits for current-head CI and a fresh review decision, and <b>does not merge on the old approval</b>. Follow it live:</p>
|
|
89
|
+
<div class="demo"><div class="demo-bar"><span class="t">run projection · PR #418</span></div><div class="demo-body">
|
|
90
|
+
<span class="cy">› push</span> head a1b2c3d → origin <span class="ok">✓</span>
|
|
91
|
+
<span class="yl">› gate</span> check_pending <span class="dim">(CI re-running @ a1b2c3d)</span> · class <span class="cy">pending</span>
|
|
92
|
+
<span class="cmt">// old approval no longer counts — branch moved past it</span>
|
|
93
|
+
<span class="cy">› gate</span> review_decision REVIEW_REQUIRED · waiting on current-head review
|
|
94
|
+
<span class="cmt">// CI goes green and the review approves on the new head</span>
|
|
95
|
+
<span class="cy">› ci</span> 14/14 green @ <span class="w">a1b2c3d</span> <span class="ok">✓</span>
|
|
96
|
+
<span class="cy">› review</span> reviewDecision APPROVED @ <span class="w">a1b2c3d</span> <span class="ok">✓</span>
|
|
97
|
+
<span class="ok">› gate</span> approved · 0 blocking reasons
|
|
98
|
+
<span class="ok">› merge</span> gh pr merge --match-head-commit a1b2c3d <span class="ok">✓</span>
|
|
99
|
+
</div></div>
|
|
100
|
+
<p>Nothing here is a stuck state. The <code>check_pending</code> and <code>review_decision_blocking</code> lines are followed by a re-poll — the loop is watching, not failing — and the merge fires when a green, approved current head lands. Materialize <code>/fleet</code> to find the run or <code>/drone [ref]</code> for its current status and recent timeline; detailed gate and diff diagnostics remain in the owning run records and the exact CLI inspection commands.</p>
|
|
101
|
+
<p>Before any push that could create this situation, Rig syncs the branch with origin (fetch + rebase <code>--autostash</code>) at every push site — PR automation, source closeout, re-dispatch — so a branch that moved on origin never wedges the pipeline.</p>
|
|
102
|
+
|
|
103
|
+
<h2 id="config">Configuring the gate</h2>
|
|
104
|
+
<pre class="code">review: {
|
|
105
|
+
mode: <span class="s">"required"</span>, <span class="c">// "off" | "advisory" | "required"</span>
|
|
106
|
+
provider: <span class="s">"github"</span>, <span class="c">// GitHub reviews + checks (the default provider)</span>
|
|
107
|
+
};
|
|
108
|
+
merge: {
|
|
109
|
+
mode: <span class="s">"auto"</span>, <span class="c">// "auto" | "off" | "pr-ready"</span>
|
|
110
|
+
method: <span class="s">"repo-default"</span>, <span class="c">// "repo-default" | "squash" | "merge" | "rebase"</span>
|
|
111
|
+
deleteBranch: <span class="s">"repo-default"</span>,
|
|
112
|
+
allowedFailures: [], <span class="c">// explicit allowlist of acceptable failing checks</span>
|
|
113
|
+
<span class="c">// bypass: true // admin-merge past branch protection (off by default)</span>
|
|
114
|
+
};</pre>
|
|
115
|
+
<p><code>review.mode</code> governs the <b>completion review gate</b> (the AI verdict on task completion); the strict merge gate above is always on for Rig-owned merges. The review provider is <code>github</code> (GitHub reviews + status checks); it is swappable via <code>review.provider</code> by contributing a different <code>@rig/pr-review-plugin</code>-shaped policy. Inspect or change the completion policy live: <code>rig review show</code> / <code>rig review set <off|advisory|required> [--provider github]</code>. Full field reference: <a href="../../config/index.html">rig.config.ts →</a>.</p>
|
|
116
|
+
|
|
117
|
+
<div class="note"><b>Dogfooded.</b> Rig gates and merges PRs into its own repository with this exact machinery — the gate chain described above is the one that shipped the gate.</div>
|
|
118
|
+
|
|
119
|
+
<h2 id="see-also">See also</h2>
|
|
120
|
+
<ul>
|
|
121
|
+
<li><a href="../../docs/runs/index.html">The run lifecycle →</a> — where the merge gate sits in the run, and how to follow a run and give direction while it waits.</li>
|
|
122
|
+
<li><a href="../../config/index.html">rig.config.ts →</a> — the full <code>review</code>, <code>merge</code>, <code>pr</code>, and <code>automation</code> field reference.</li>
|
|
123
|
+
<li><a href="../../docs/security/index.html">Security & trust →</a> — merge identity, GitHub tokens, branch protection, and what <code>merge.bypass</code> hands over.</li>
|
|
124
|
+
<li><a href="../../docs/environment/index.html">Environment variables →</a> — the GitHub auth the gate reads when fetching PR evidence.</li>
|
|
125
|
+
</ul>
|
|
126
|
+
|
|
127
|
+
<div class="nextnav"><a href="../../docs/agent-tools/index.html"><span class="dir">← Back</span><span class="ttl">Agent tools</span></a><a href="../../docs/troubleshooting/index.html"><span class="dir">Next →</span><span class="ttl">Troubleshooting</span></a></div>
|
|
128
|
+
</main></div><footer><div class="wrap"><div class="foot"><div class="col"><h5>orchestrate</h5><a href="../../docs/getting-started/index.html">getting started</a><a href="../../docs/runs/index.html">the run lifecycle</a><a href="../../docs/operator/index.html">operator guide</a><a href="../../docs/gate/index.html">the merge gate</a></div><div class="col"><h5>extend</h5><a href="../../plugins/index.html">plugin authoring</a><a href="../../skills/index.html">skills guide</a><a href="../../docs/pi-extensions/index.html">OMP/Pi extensions</a><a href="../../docs/packages/index.html">packages</a></div><div class="col"><h5>live</h5><a href="../../index.html">the home rig</a><a href="../../cli/index.html">cli reference</a><a href="https://where.rig-does.work/install">install script</a></div><div class="sig">Rig is the OMP session extension.<br><span class="blk">You are the operator.</span><br>release: rig --version</div></div></div></footer><script src="../../assets/rig.js"></script><script src="../../assets/site.js?v=v9"></script></body></html>
|