@intentius/behold 0.15.0 → 0.16.0

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/AGENTS.md CHANGED
@@ -171,6 +171,33 @@ and nothing else about the run is behold's to decide: a stream that dies leaves
171
171
  the playhead at the last settled step and says so, and a gate paints as pending
172
172
  only when chant's `gateState` query named it.
173
173
 
174
+ ### The executor contract (#165, #61)
175
+
176
+ `.behold.json` may designate which forge deploys an environment:
177
+
178
+ ```json
179
+ { "executor": { "prod": { "forge": "github", "workflow": "deploy-prod.yml" } } }
180
+ ```
181
+
182
+ It designates the committed WORKFLOW, not just the forge: two environments'
183
+ generated pipelines carry identical job ids, so a picker cannot tell them
184
+ apart, and a contract that names prod must not sit on a guess. For a
185
+ designated env, `POST /api/apply` and a committed ApplyOp's `/api/ops/:name/run`
186
+ answer `409 {code: "executor-forge"}`, auto-sync declines out loud, and the
187
+ only deploy is `POST /api/ci/dispatch?env=<env>`, which runs the designated
188
+ workflow through the operator's own `gh` and follows it on the dial. Any
189
+ approval the workflow's environment requires is granted on the forge by a
190
+ GitHub identity behold does not have; the dial links the run's page and offers
191
+ nothing else. Fail-closed: a designation behold cannot honour (a typo'd forge,
192
+ a missing or non-dispatchable workflow, a forge with no trigger here) disables
193
+ Deploy for that env with the reason on `/api/project`'s `executor` block, and
194
+ never falls back to running it here. `/api/project` reports `{forge, workflow,
195
+ ok, reason?}` per designated env.
196
+
197
+ Without a designation, dispatch picks the committed workflow named for the env
198
+ (`chant-components-<env>`, chant ≥ 0.54.0) and refuses a tie on the older
199
+ job-overlap match rather than letting directory order choose.
200
+
174
201
  ## The operating loop (a strip, a timeline, and a gate that is not the run gate)
175
202
 
176
203
  A project that declares a `ConvergeOp` gets an operator strip on the ops lens: