@sjawhar/opencode-legion-envoy 5.6.3 → 5.6.5
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/package.json
CHANGED
|
@@ -170,6 +170,20 @@ and request approval again as this section says. Later waves, re-scoping open ch
|
|
|
170
170
|
same Acceptance, and integration-failure children need no spec edit and no new approval, and a
|
|
171
171
|
child issue's spec is never gated: the root approval covers the tree.
|
|
172
172
|
|
|
173
|
+
**A decision block for a read no pod can make.** An acceptance criterion sometimes needs
|
|
174
|
+
evidence from a production or external system before a human can approve it: a measurement, a
|
|
175
|
+
current count, a stored record. Check first whether the evidence is already reachable through a
|
|
176
|
+
credential this tree's own pods carry — the model route every pod already has, and any further
|
|
177
|
+
identity the operator's deployment configuration grants pods (read the pod's own environment,
|
|
178
|
+
for example `AWS_CONFIG_FILE` or `AGENT_SECRETS_URL`, rather than assuming there is none; a
|
|
179
|
+
credential can exist without any skill having told you so). When the evidence genuinely is not
|
|
180
|
+
reachable, do not have a different running session perform the read on this tree's behalf and
|
|
181
|
+
fold the result into the spec as if it were routine: write the missing capability as its own
|
|
182
|
+
decision block — which external system, which read or write, why the spec needs it — addressed
|
|
183
|
+
to the human, in the same spirit as the implementer reports a production-check gap (section 6) and leave it
|
|
184
|
+
open until the human resolves it. A workaround substituted for that record only hides the gap
|
|
185
|
+
from the next tree that hits it.
|
|
186
|
+
|
|
173
187
|
## 2. Children in flight
|
|
174
188
|
|
|
175
189
|
Release only the next useful wave. A release is an explicit lifecycle write:
|
|
@@ -327,7 +341,7 @@ active phase worker.
|
|
|
327
341
|
| A reply on an ask you follow | Interpret the reply in the issue's design context. Answer in its thread (`dispatch_comment` with `reply_to`; under an open ask whose next move is yours, such as the approval request you must revise or hand back, `reply_to_ask` with `turn: "agent"`, since a default-turn reply hands that request back to the human and a corrected `summary` is then refused), then adjust the plan or relay it via `envoy_publish` to the responsible worker's role token; scope and product decisions remain with you. |
|
|
328
342
|
| `worker-died` | Its `role` and `phase`. That role's claim failed: its launches or prompts ran out. For a phase worker the daemon holds the issue (phase `held`) and starts nothing more on it. Reassess the work, then decide with `retry_or_escalate`: `retry` when the failure looks agent-specific or transient, `escalate` to hand the held issue to the controller when it looks environmental. |
|
|
329
343
|
| `held` | Its `role` and `phase` (the phase the issue left), or `phase` with `reason: "escalated"`. Without `reason`, that phase's worker ran out of launches or prompts: the issue is held (phase `held`), the `worker-died` that comes with it is yours to answer with `retry_or_escalate` as that row says, and the controller hears of the hold too. With `reason: "escalated"`, it records your own `escalate`: the controller has the issue now, and you start nothing for it. |
|
|
330
|
-
| `ready-refused` | Its `version` and `reason`. The merger's READY was refused.
|
|
344
|
+
| `ready-refused` | Its `version` and `reason`. The merger's READY was refused, and its packet is kept with the completion so no second READY is ever needed. With `version` greater than 0, `reason` reads `READY refused: approve design version <N> before requesting READY.`: the root's spec is already registered at that version, so get it approved (section 1), and the daemon advances the merge and posts the kept packet the moment it is. With `version` 0, `reason` reads `READY refused: no design version is approved; register and approve the tree's spec before requesting READY.`: the root has no spec registered yet, so register it and get it approved (section 1) exactly as above; the daemon releases the kept packet the same way — at registration itself when that opens the gate (`gates.design: off`, or Dispatch already shows the version approved), otherwise the moment a human approves the version you registered. Either way, nothing else is needed once the gate opens. A `reason` starting `READY_PACKET_MISSING` names a READY refused before the daemon kept packets: that READY is void and the issue stays in merging, so start it over (`park_child` then `rerun_child`, for a child) or end it. |
|
|
331
345
|
|
|
332
346
|
## Escalation judgment
|
|
333
347
|
|
|
@@ -239,6 +239,17 @@ artifact, not a broken credential. Run credentialed commands from your own bash
|
|
|
239
239
|
run that may outlast a minute with `gh run watch` in bash, which redeems once and then runs on the
|
|
240
240
|
token it got.
|
|
241
241
|
|
|
242
|
+
**Other credentials your pod may already carry.** Before reporting that a read is unreachable,
|
|
243
|
+
check for them rather than assuming none exist: `AGENT_SECRETS_URL` and `AGENT_SECRETS_KEY_DIR`
|
|
244
|
+
are set when the deployment enrolls pods with the agent-secrets broker (`docs/kubernetes.md`,
|
|
245
|
+
"Operator configuration"), in which case `agent-secrets <SECRET> -- <command>` runs `<command>`
|
|
246
|
+
with only the secrets this pod generation's grant allows — refuses closed, naming the secret, if
|
|
247
|
+
the rule does not allow it. `AWS_CONFIG_FILE` is set when the deployment's `pod.volumes` carries a
|
|
248
|
+
further projected token beyond the model route's own; read the file it names for what profiles it
|
|
249
|
+
configures before assuming the AWS CLI has nothing to reach. Neither variable existing is a
|
|
250
|
+
guarantee the read you need is covered — a refusal from either still means what it says — but
|
|
251
|
+
neither should be assumed absent without checking.
|
|
252
|
+
|
|
242
253
|
## GitHub PR comment attribution
|
|
243
254
|
|
|
244
255
|
Append this exact structured footer to **every** pull-request comment and review that this
|