voidmachine 4.0.0 → 5.0.1

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.
@@ -0,0 +1,311 @@
1
+ ---
2
+ name: void-orchestrate
3
+ description: Delegate independent research and substantial implementation through native agents; choose context, isolation and bounded concurrency, collect results and preserve review evidence. Use the supported session host.
4
+ ---
5
+
6
+ # Orchestrate
7
+
8
+ The user-facing coordinator keeps intent, decisions and synthesis. This skill owns
9
+ adaptive delegation, transport and continuity; `void-implement` owns delivery quality
10
+ and `void-autopilot` its loop. Neither a pane nor a report grants merge permission.
11
+
12
+ ## Choose work and capabilities
13
+
14
+ Read project instructions, the approved task and Git state; preserve other writers'
15
+ changes. Before dispatch, inspect the actual native agent tools and their supported
16
+ context, permissions, completion and resume capabilities. Use the best supported
17
+ capabilities for the task in the current session; an installed executable or an
18
+ environment hint alone does not validate a host, identity or permission.
19
+
20
+ Herdr is optional for consumers, not discretionary inside a validated Herdr session.
21
+ When fresh discovery validates the coordinator in Herdr, use its adapter below for
22
+ durable terminal workers and mission visibility. Short agents remain native; never
23
+ duplicate an agent to give it a pane. Outside Herdr, use the current supported host
24
+ (such as tmux) when its required capabilities and ownership can be verified. This
25
+ policy adds no tmux transport and never relaunches through the legacy kernel.
26
+ Without supported presentation, retain native delegation and report the limitation;
27
+ do not claim durability from a pane or unsupported API. Failed or ambiguous host
28
+ discovery blocks the affected host action: diagnose it, never silently switch hosts
29
+ or act on an unrelated project. Native work independent of that action may continue.
30
+
31
+ - Work directly for a tiny targeted change, a single tool call, mechanical processing,
32
+ or tightly coupled work where delegation adds no useful separation.
33
+ - Delegate bounded independent research and exploration during brainstorm and plan.
34
+ Keep the user conversation, evaluation of sources and decisions in the coordinator.
35
+ - Delegate substantial implementation to one writer when supported. A writer
36
+ already assigned the unit executes it; never delegate the same complete workflow
37
+ recursively. Retain that writer for corrections. Before parallel feature slices,
38
+ define disjoint ownership, dependencies and acceptance of the integrated result.
39
+ - No native agent capability: execute sequentially and state the limitation. A
40
+ mandatory independent review or required isolation remains a blocker; do not
41
+ replace it with self-review or silently weaken its requirement.
42
+
43
+ ## Brief and bound the delegation
44
+
45
+ Use a fresh context by default. Choose a supported fork only when the task needs
46
+ conversation history. Give objective, relevant context/source revision, owned paths,
47
+ permissions, acceptance, result format and bounds. Tell writers they are not alone
48
+ and must preserve others' changes. Ask researchers for conclusions, source references,
49
+ uncertainty and remaining questions, not all intermediate logs. Ordinary research
50
+ uses this lightweight brief: do not invent specialist events or review receipts.
51
+ Formal specialist envelopes and evidence follow the independent contract below.
52
+
53
+ Count writer, research and review children together against observed available runtime slots
54
+ and the coordinator's bounded dispatch; queue work when full. Preserve tighter caller
55
+ limits, including Autopilot's ticket cap and the central schema's four-worker limit.
56
+ This is no machine-wide quota. Do not create recursive child coordinators or redispatch
57
+ the same complete workflow. Required formal specialists remain dispatched by their
58
+ designated owner within the shared available capacity. Do not duplicate a child's work
59
+ in the coordinator. Run independent work concurrently only when it helps the critical
60
+ path; use ordinary tools for mechanical operations. Respect permissions throughout.
61
+
62
+ Read-only research needs no new worktree. Reviews use an immutable exact subject.
63
+ Concurrent authors need isolated assigned worktrees and disjoint ownership; if
64
+ isolation fails, serialize rather than share concurrent writes. Required isolation
65
+ that cannot be met stays blocked. A sole writer may reuse its assigned checkout;
66
+ Autopilot retains its per-ticket worktree requirement. Follow the universal durable
67
+ worktree invariant and existing shared Git restrictions, irrespective of display.
68
+
69
+ ## Collect and resume honestly
70
+
71
+ Prefer native completion events; otherwise wait in bounded slices. A wait timeout
72
+ is not failure. Reconcile an uncertain launch or side effect before retrying. Use
73
+ partial results when useful, distinguish failure from missing output, and verify
74
+ acceptance before claiming success. Reuse the same session for corrections; confirm
75
+ that a new instruction was consumed or reflected in the result before calling it applied.
76
+
77
+ Distinguish saved work, live session, retained result and delivered result. A finished
78
+ turn or report alone proves no accepted outcome or crash recovery. Use the selected
79
+ runtime's actual persistence/recovery path; expose a lost session or unknown effects.
80
+ Never invent a durable inbox. Preserve formal receipts separately from working notes.
81
+
82
+ ## Short native specialists
83
+
84
+ Pass the returned specialist envelope unchanged: runtime, agentName, missionId,
85
+ contextPack and, when present, reviewSubject and reviewScope. Invoke the runtime's
86
+ native fresh-context primitive; native Agent calls are not intercepted. Keep the
87
+ real opaque context ID exactly as returned, including slash-prefixed names; it is
88
+ data, never a filesystem path. Record actual starts/completions with
89
+ `mission specialist-event`; never invent IDs or convert a failed call into a review.
90
+ Before another invocation, reconcile any existing invocation for the same envelope.
91
+ Preserve the complete result; incomplete results go back to the same agent.
92
+ With `panel.provider: orchestrator`, only ORCH launches and collects this panel.
93
+ Missing required native capability is reported with cause and next action.
94
+
95
+ ## Herdr adapter: recovery
96
+
97
+ The following Herdr sections apply when the session-host policy selects this adapter.
98
+ Native delegation without it does not require these central files or pane discovery.
99
+
100
+ Read project instructions, the approved task and the current Git status. Preserve
101
+ other writers' changes. Resolve the canonical Git common directory, SHA-256 its
102
+ absolute real path as UTF-8, and inspect
103
+ `~/.local/state/orchestra/<project>/<mission>/`. Never use an inherited workspace
104
+ variable or a stale pane ID as authority. Read mission.md, the applicable
105
+ workers/<label>/brief.md and report.md. Re-read `herdr pane list` before every
106
+ identity decision. Match **label + worktree**, using the canonical worktree path.
107
+ Refuse multiple matches, incomplete discovery, symlinks, traversal and invalid data.
108
+ After reattachment/restart, ORCH atomically updates pane_id and coordinator.workspace
109
+ from that validated fresh inventory. Hooks and workers never write these hints.
110
+ A missing unrelated historical worktree does not invalidate a current identity.
111
+
112
+ The coordinator is the existing ORCH session, never a second agent opened for display.
113
+ Resolve its own label + worktree before selecting its workspace. Keep each writer
114
+ in its assigned worktree. Do not affect any other project, workspace or pane.
115
+ An uncertain launch or prompt acknowledgement requires reconciliation of that same
116
+ worker before retrying. A timeout proves neither launch failure nor prompt loss.
117
+
118
+ ## Herdr adapter: explicit coordinator context
119
+
120
+ If unique discovery refuses multiple compatible missions, ORCH reads the target
121
+ mission and reports, then atomically replaces its local, unversioned
122
+ `<canonical worktree>/.void/machine/orchestra-selection.json`. Schema 1 is strict
123
+ JSON, at most 4096 UTF-8 bytes: `{ "schema": 1, "project": "<project-sha256>",
124
+ "mission": "<existing-id>", "coordinator": { "label": "ORCH", "worktree":
125
+ "/absolute/canonical/worktree" } }`. ORCH alone writes it; hooks never repair it.
126
+ No unknown or duplicate keys, YAML, traversal, symlinks or partial writes.
127
+
128
+ This selects context only, never execution state or permissions. Full bounded
129
+ central discovery still runs; malformed unrelated missions or limits refuse.
130
+ A stale/invalid binding never falls back. Verify selected coordinator label and
131
+ canonical worktree against the current worktree and a fresh `herdr pane list`;
132
+ missing or duplicate live matches refuse. Never prefer timestamps, running status
133
+ or pane tokens to decide intent. Without a binding, preserve unique discovery.
134
+ Clear/compact/resume re-read selection and central state without launching workers.
135
+ Separate worker worktrees retain their own mission, attempt and report discovery.
136
+ A selected terminal mission retains the guarded cleanup below: never clear tokens
137
+ belonging to another mission. No binding belongs in the programme descriptor.
138
+
139
+ ## Herdr adapter: central files and ownership
140
+
141
+ Use schema: 1 YAML frontmatter, strict string keys and one document, followed by
142
+ Markdown. Reject duplicate keys, tags, anchors, aliases and unknown fields. Bound
143
+ mission/report to 64 KiB, brief to 256 KiB, discovery to 64 entries and 1 MiB of
144
+ mission bytes; exceeding a bound is incomplete, never a unique match.
145
+ See the shipped technical contract `docs/ORCHESTRA.md` in the harness source for
146
+ schemas; the operational fields are listed here so an installed skill is sufficient.
147
+
148
+ - mission.md: schema, mission, project, status, updated_at (UTC ISO), repository
149
+ (canonical Git common path), coordinator {label, worktree, workspace?}, workers.
150
+ - Worker entries: label, agent (codex or claude), worktree, branch, ticket, status,
151
+ attempt; optional pane_id and session are hints only. At most four workers.
152
+ - Coordinator status and worker status: planned, running, blocked, done, failed.
153
+ - report.md: schema, mission, attempt, worker, branch, status (running, blocked,
154
+ done, failed), commits (full SHAs), tests (passed, failed, not_run), updated_at.
155
+ Body: actual commands/results, proof locations, risks, questions and remaining work.
156
+ - brief.md: absolute paths, exact base, footprint, acceptance criteria, ownership,
157
+ permissions, forbidden effects and current attempt. No secrets. Explicitly warn
158
+ that other writers exist and their changes must be preserved.
159
+
160
+ ORCH alone writes mission and briefs; each worker alone writes its report. Use an
161
+ atomic replacement: write an exclusive temporary sibling, then rename. Hooks never
162
+ write these files. A new work turn gets a new attempt; resume keeps its attempt.
163
+ A valid report for the current mission/attempt overrides workers[].status at every
164
+ event. An absent report falls back to the manifest. Malformed, foreign, partial or
165
+ unrecognized stale reports refuse usage; never turn a parse failure into absence.
166
+ The files carry coordination state, not independent review proof.
167
+
168
+ ## Herdr adapter: copyable starting files
169
+
170
+ Replace the example project hash with SHA-256 of the canonical common Git path.
171
+ Replace every path, branch, ticket and timestamp from actual observations. These
172
+ three files are authored by their owner, never by the hook.
173
+
174
+ mission.md:
175
+
176
+ ```yaml
177
+ ---
178
+ schema: 1
179
+ mission: dev-42
180
+ project: "<project-sha256>"
181
+ status: planned
182
+ updated_at: "2026-10-08T10:00:00.000Z"
183
+ repository: /absolute/repository/.git
184
+ coordinator:
185
+ label: ORCH
186
+ worktree: /absolute/repository
187
+ workspace: wA
188
+ workers:
189
+ - label: WORK-1
190
+ agent: codex
191
+ worktree: /absolute/worktrees/dev-42
192
+ branch: work/dev-42
193
+ ticket: DEV-42
194
+ status: planned
195
+ attempt: implementation-1
196
+ ---
197
+ # Mission
198
+ Scope, acceptance criteria, canonical mission journal and proof locations.
199
+ ```
200
+
201
+ workers/WORK-1/brief.md:
202
+
203
+ ```yaml
204
+ ---
205
+ schema: 1
206
+ mission: dev-42
207
+ attempt: implementation-1
208
+ worker: WORK-1
209
+ ---
210
+ # Work
211
+ Worktree: /absolute/worktrees/dev-42. Branch: work/dev-42.
212
+ Base: <verified full commit SHA>. Ticket: DEV-42.
213
+ Footprint: <exact owned files/directories>; preserve every other writer's edits.
214
+ Acceptance: <complete observable criteria and verification commands>.
215
+ Limits: <role permissions, forbidden effects, human gates>.
216
+ Report: /absolute/mission/workers/WORK-1/report.md, owned only by this worker.
217
+ Resume: <actual runtime session and the recipe from the table below>.
218
+ ```
219
+
220
+ workers/WORK-1/report.md:
221
+
222
+ ```yaml
223
+ ---
224
+ schema: 1
225
+ mission: dev-42
226
+ attempt: implementation-1
227
+ worker: WORK-1
228
+ branch: work/dev-42
229
+ status: running
230
+ commits: []
231
+ tests: not_run
232
+ updated_at: "2026-10-08T10:00:00.000Z"
233
+ ---
234
+ # Checkpoint
235
+ Completed: <actual changes>. Verification: <commands, results and proof paths>.
236
+ Remaining: <work and exact next action>. Risks/questions: <observed limitations>.
237
+ ```
238
+
239
+ ## Herdr adapter: durable workers
240
+
241
+ Read installed `herdr --help`, `herdr agent --help` and the live schema before
242
+ issuing commands. Use structured argv, exact acknowledged identities and bounded
243
+ waits/output. The launch recipes for the selected worktree are:
244
+
245
+ | Kind | Launch argv | Resume argv | Short contexts | ctx capability |
246
+ | --- | --- | --- | --- | --- |
247
+ | codex | `--no-daemon --add-dir <absolute-mission>` | `resume <actual-session> --no-daemon --add-dir <absolute-mission>` | Native fresh context | Unmeasurable without a supported usage source |
248
+ | claude | `--add-dir <absolute-mission>` | `--resume <actual-session> --add-dir <absolute-mission>` | Native Agent, no interception | Fresh transcript usage plus required context.windowTokens |
249
+
250
+ Use the selected kind's executable and preserve these options on every launch/resume:
251
+
252
+ ```sh
253
+ herdr agent start <unique-mission-worker-name> --kind <kind> --pane <resolved-pane> -- <argv-from-table>
254
+ ```
255
+
256
+ The arguments after `--` belong to the selected runtime. The name is unique within
257
+ the mission; it is not an invented native session ID. Resolve the pane first and
258
+ keep the session ID actually returned by the runtime.
259
+
260
+ Apply the role's existing permission/read-only policy; `--add-dir` only grants the
261
+ specified directory, never disables a sandbox or an approval. Unsupported kind or
262
+ option: diagnose and stop that launch. Do not update or restart Herdr to make it fit.
263
+ Register planned worker before creating its owned surface. Keep the returned pane
264
+ ID as a hint, launch once, submit the brief once, then reconcile by label + worktree.
265
+ Use `herdr agent wait` in bounded slices and read the report after every turn.
266
+ Idle/done is a turn ending, never proof the task passed. Request a missing report
267
+ from the same session. Follow up in that session; never create a duplicate worker.
268
+ After /clear read the same mission; after a killed process resume its actual session
269
+ in the same worktree. Missing session: retain the mission and expose the loss.
270
+
271
+ `resume_argv` is absent from Herdr 0.9.0 and 0.9.1, present from 0.9.2. Publish it
272
+ only after the installed schema proves support. Otherwise retain the complete resume
273
+ recipe in the brief. Never claim restart restoration was tested without doing it.
274
+
275
+ ## Herdr adapter: projection and closure
276
+
277
+ The hook publishes source void-machine on SessionStart startup/resume/clear/compact
278
+ and Stop after re-reading central state and fresh Herdr identities. Pane tokens:
279
+ mission, worker, ticket, wstatus; coordinator-only workspace: mission, wstatus, workers.
280
+ These are file status, never agent state. ctx requires the selected kind's measured capability from the table; unavailable measurement stays unavailable. Clear
281
+ removes ctx before fresh measurement. State TTL is 86400000 ms, ctx TTL 7200000 ms.
282
+ Sequences are exact nanosecond decimal BigInts captured before discovery. Old or
283
+ equal seq is ignored by Herdr. Tokens are global keys, not source namespaces: another
284
+ source may overwrite them; null clears globally. Never reconfigure cockpit to win.
285
+
286
+ Terminal mission cleanup explicitly clears keys on all still-resolved owned panes,
287
+ only where the currently projected mission still matches. Only the resolved
288
+ coordinator clears workspace keys, again after verifying the displayed mission.
289
+ A late closure of A must not clear B. A worker SessionEnd never cleans the workspace.
290
+ When no mission is active, recover the verified displayed terminal mission; do not
291
+ choose arbitrary history. Discovery/transport errors never trigger a purge.
292
+ After collection and acceptance ORCH may close its owned surfaces; retain worktrees,
293
+ branches and evidence according to their own lifecycle. Do not close the coordinator.
294
+
295
+ ## Independent review
296
+
297
+ Commit the candidate before the independent pass. Keep a fresh read-only reviewer,
298
+ different from the writer, on the exact reviewedCommit, baseCommit and
299
+ acceptanceCriteriaHash. Preserve its actual canonical request/start/completion and
300
+ receipt (native-context or supported review-artifact provenance). Artifact provenance
301
+ stays within the existing project boundary and must match its digest and invocation.
302
+ A central report marked done is never a review receipt. Preserve limitations honestly.
303
+
304
+ For autopilot, `autopilot review --ticket <id> --pr <n> --head <sha> --round <1|2>
305
+ --mission <canonical-id>` checks the target ticket against the existing bounded ticket reader (filename identity
306
+ and frozen content hash), then prepares the exact review subject/worktree and, when
307
+ pending, returns awaiting-native-review. ORCH performs the native invocation and
308
+ records its real receipts, then repeats the same command to collect. Do not start a
309
+ new mission to repair a pending attempt. Budgets, protected paths, HEAD drift checks,
310
+ local verdict admission and merge holds remain enforced. In-flight legacy runs are
311
+ collected through their existing transport and journals; never duplicate them.
@@ -0,0 +1,10 @@
1
+ kind: action
2
+ owner: folpe
3
+ runtimes: [claude, codex]
4
+ enforcement:
5
+ floor: ci
6
+ inline:
7
+ claude: pretooluse
8
+ codex: pretooluse
9
+ hermes: ci-only
10
+ eval_targets: [claude/anthropic/opus]
@@ -11,6 +11,13 @@ The spec answers "what should we build." This skill answers "in what order, with
11
11
 
12
12
  ---
13
13
 
14
+ ## Delegated investigation
15
+
16
+ Invoke `void-orchestrate` for independent dependency, codebase or verification
17
+ investigations that inform the plan. The coordinator integrates the results into
18
+ one dependency graph and retains scope, sequencing and approval decisions; agents
19
+ do not independently approve plans or start implementation.
20
+
14
21
  ## When to invoke
15
22
 
16
23
  Invoke immediately after `void-brainstorm` approves a spec. The plan is the next deliverable before any code.
@@ -3,6 +3,7 @@ Sources for `void-security-guidance` skill (see `docs/plans/skill-audits/void-se
3
3
  - security-audit — the deep-audit ceiling; full audits delegated there (was gstack /cso, vendored in DEV-387).
4
4
  - citypaul/.dotfiles security stance — daily defaults.
5
5
  - OWASP cheat sheets — https://cheatsheetseries.owasp.org — Input Validation, Auth, Session Mgmt, LLM cheat sheets referenced.
6
+ - OWASP Secrets Management Cheat Sheet — https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html — least privilege, automation, bounded lifetime and metadata auditing; adapted for model-invisible external operations (DEV-1020).
6
7
  - OWASP Top 10 for LLMs — https://owasp.org/www-project-top-10-for-large-language-model-applications/ — prompt injection, data leakage.
7
8
  - semgrep rule packs — https://semgrep.dev — opt-in CI tool.
8
9
  - Better-Auth docs — https://www.better-auth.com/ — default auth provider in void-starter.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: void-security-guidance
3
- description: Default-secure at trust boundaries. Zod at every input, secrets via env, SQL parameterized, Better-Auth, LLM I/O untrusted. Escalate to security-audit for deep audits. Use on trust-boundary code.
3
+ description: Secure defaults at trust boundaries and scoped credential operations. Zod input, app secrets via env, confidential external provisioning, SQL parameterized, Better-Auth, untrusted LLM I/O. Deep audits use void-security-audit.
4
4
  ---
5
5
 
6
6
  # security-guidance — voidcorp craftsman edition
@@ -54,7 +54,7 @@ The validated output is a typed value (often a branded type). No `as` cast requi
54
54
 
55
55
  ---
56
56
 
57
- ## Secrets — env vars only, validated, never logged
57
+ ## Application secrets — env vars, validated, never logged
58
58
 
59
59
  ### Allowed
60
60
 
@@ -100,6 +100,43 @@ Companion hooks (in `pack-monorepo`):
100
100
 
101
101
  ---
102
102
 
103
+ ## Agent-orchestrated external credential operations
104
+
105
+ This governs creation, storage and rotation through an external secret manager. It is separate
106
+ from application runtime configuration and customer BYO-key storage above.
107
+
108
+ 1. **Establish scope before acting.** Require explicit user authorization naming the operation,
109
+ affected service/account/project/environment, credential names or bounded set, and approved
110
+ destination manager. Reuse existing precise consent for that operation only. A broad request
111
+ to deploy, fix a project or run autopilot is not consent. Revocation or deletion needs its own
112
+ explicitly requested scope. New credentials get only required privileges and an appropriate
113
+ bounded lifetime; unclear permissions or lifetime require clarification, never administrator
114
+ privileges or an unrestricted credential by assumption.
115
+ 2. **Keep values outside model context.** Prefer provider-side generation and storage, opaque
116
+ references, or verified direct process-to-manager transfer. Before invocation, establish from
117
+ documented capabilities that both success and error paths keep values confidential. CLI, API
118
+ and MCP are transports, not exemptions. A tool that returns plaintext to the model is
119
+ unsuitable; redacting the final response after receiving it is too late.
120
+ 3. **Keep plaintext out of intermediate surfaces.** Never put values in prompts, model-visible
121
+ tool arguments, command argv/history, source, repository files, temporary plaintext files,
122
+ logs, traces, screenshots, reports or review evidence. Never request a secret through chat.
123
+ Authenticate through the provider's established secure flow or existing permitted credentials,
124
+ without printing them.
125
+ 4. **Verify by non-sensitive metadata.** Check destination, resource identifier, version and
126
+ status. Never read the secret back to prove storage. After an uncertain mutation, reconcile
127
+ metadata before retrying; never blindly regenerate or rotate.
128
+ 5. **Stop when the conditions cannot be established.** An unavailable destination, ambiguous
129
+ scope or unverified safe transfer stops that operation. Preserve existing credentials and
130
+ request the missing scope or a secure user/provider action.
131
+
132
+ Runtime permissions, sandboxing, hook refusals, role restrictions (including read-only reviewers)
133
+ and higher-priority instructions remain binding. Never bypass them or change policy during an
134
+ operation to unblock it. Local protected-file and secret-content guards remain active. These
135
+ instructions do not mechanically certify an external transfer: provider/runtime access controls
136
+ and the verified tool own execution; the agent owns checking scope and selecting a suitable tool.
137
+
138
+ ---
139
+
103
140
  ## SQL / DB — parameterized via Drizzle, no string concat
104
141
 
105
142
  ```typescript
@@ -247,7 +284,9 @@ The `doctrine-critic` agent (in void-machine) flags trust-boundary code in a dif
247
284
  ## Final rule
248
285
 
249
286
  ```
250
- Trust boundary → Zod validation. Secrets → env. SQL → parameterized. Auth → Better-Auth.
287
+ Trust boundary → Zod validation. App secrets → env; BYO keys → encrypted tenant data.
288
+ External credential operations → scoped consent, confidential transfer, metadata verification.
289
+ SQL → parameterized. Auth → Better-Auth.
251
290
  LLM I/O → untrusted. Logs → no PII no secrets.
252
291
  Otherwise → it is not voidcorp security-guidance.
253
292
  ```
@@ -176,9 +176,8 @@ progress:
176
176
  done: [<native completed states>]
177
177
  humanGates: [<ticket identifiers requiring explicit approval>]
178
178
  autopilot:
179
- schemaVersion: 1
179
+ schemaVersion: 2
180
180
  enabled: <true | false>
181
- mergeGate: human
182
181
  ---
183
182
  ```
184
183
 
@@ -188,7 +187,7 @@ lifecycle. `progress.order` is the deterministic tie-break among simultaneously
188
187
  scope, not mutable progress. Never store a current or next unit, copied status, assignee, or
189
188
  completion checklist in the program or checkpoint.
190
189
 
191
- The `void-autopilot` block is required, because consent to autonomous execution is never inferred from silence: a program that does not want it declares `enabled: false`. `mergeGate` takes `human`, or `union-reviewed` with a `deployBranch` naming the branch that ships — that pair IS the consent to a machine merge, and there is no flag for it. Add `clusterSize` (1..4), `base`, `verifyCommands` (argv arrays, run with `shell:false`) and `ownership.sequential` / `ownership.reconcileOnly` only when the program enables autopilot.
190
+ The `void-autopilot` block is required, because consent to autonomous execution is never inferred from silence: a program that does not want it declares `enabled: false`. There is no merge gate to declare: the loop merges into the integration branch on a local review verdict, never into the branch that deploys, which `deployBranch` names when it is not the repository's default branch; a person who merges themselves says so with `void-machine autopilot merges --by-human`, local state and not the program. Add `deployBranch`, `clusterSize` (1..4), `base`, `verifyCommands` (argv arrays, run with `shell:false`) and `ownership.sequential` / `ownership.reconcileOnly` only when the program enables autopilot.
192
191
 
193
192
  Do not replace an unrelated executing programme. Stop and surface the collision. When the same
194
193
  programme already has a descriptor, preserve its routing unless the user explicitly changes
@@ -10,6 +10,7 @@ stages: [post-implementation]
10
10
  appliesWhen:
11
11
  any:
12
12
  - code-change
13
+ - profile-base
13
14
  inputs:
14
15
  - ticket
15
16
  - acceptance-criteria