@sjawhar/pi-legion-envoy 3.0.0 → 3.0.2
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/dist/legion.js +1 -1
- package/dist/skills/dispatch/SKILL.md +28 -7
- package/package.json +1 -1
package/dist/legion.js
CHANGED
|
@@ -16142,7 +16142,7 @@ import { logger } from "@oh-my-pi/pi-utils";
|
|
|
16142
16142
|
// package.json
|
|
16143
16143
|
var package_default = {
|
|
16144
16144
|
name: "@sjawhar/pi-legion-envoy",
|
|
16145
|
-
version: "3.0.
|
|
16145
|
+
version: "3.0.2",
|
|
16146
16146
|
type: "module",
|
|
16147
16147
|
omp: {
|
|
16148
16148
|
extensions: [
|
|
@@ -92,8 +92,9 @@ A spec has two readers: the human who decides reads the **Summary** and **New si
|
|
|
92
92
|
|
|
93
93
|
- The spec is the issue's one primary document. Extend it in place — a new version that keeps the
|
|
94
94
|
human's own text — never a second "spec" artifact beside it.
|
|
95
|
-
- No hedging ("might", "could consider"). No TBD, TODO, or placeholders: an open item is
|
|
96
|
-
|
|
95
|
+
- No hedging ("might", "could consider"). No TBD, TODO, or placeholders: an open item is an ask
|
|
96
|
+
block, a technical decision your lane makes and records as a Requirement, or, for a contract
|
|
97
|
+
between two lanes or a halt condition, a question for the platform PO (see
|
|
97
98
|
[Before you ask](#before-you-ask) under Asking).
|
|
98
99
|
- Keep each section to one screen; work that exceeds one screen per section is two specs.
|
|
99
100
|
- Update the spec as decisions land: the spec is the record, comments are the discussion.
|
|
@@ -281,9 +282,13 @@ eval_id? What's an R4 model header? What exactly is the question or uncertainty
|
|
|
281
282
|
production import). Every `dispatch_ask` passes three gates first:
|
|
282
283
|
|
|
283
284
|
1. **Does it need his authority, taste, or risk appetite?** This is the bar for a decision
|
|
284
|
-
written as an `:::ask` block in context ([Decision blocks](#decision-blocks)).
|
|
285
|
-
|
|
286
|
-
the
|
|
285
|
+
written as an `:::ask` block in context ([Decision blocks](#decision-blocks)). Technical
|
|
286
|
+
decisions inside your outcome do not: schema shapes, table layouts, field names, and migration
|
|
287
|
+
internals are your lane's to decide and record in the spec. Two things still go to the
|
|
288
|
+
platform PO over Envoy: a contract between two lanes, and a halt condition (a change to IAM,
|
|
289
|
+
deletion or exposure of production data, anything that reaches a customer). The PO takes those
|
|
290
|
+
to Sami as a Dispatch ask; you do not open one yourself, even as a permission ask under gate 2
|
|
291
|
+
(Sami, 2026-09-25, AGENTC-34 §12).
|
|
287
292
|
2. **Is there genuine uncertainty?** If not, it is a plan you execute. The one legitimate ask
|
|
288
293
|
without uncertainty is permission for an action only a human can authorise — a production
|
|
289
294
|
write, an external send, a console action — and then the question is that action in one
|
|
@@ -381,11 +386,13 @@ It returns the imported commit, or the recorded error when the model was rejecte
|
|
|
381
386
|
|
|
382
387
|
Before saying you are waiting for human input, call `dispatch_open_asks`. With no arguments it lists this session's active asks across open issues and project documents, including whether the human or agent owes the next reply. With `dispatch_open_asks({ project })` it lists every open ask in that project — on its issues and on its documents, whoever authored them — which is how you audit what a whole project is waiting on rather than just your own asks.
|
|
383
388
|
|
|
384
|
-
**Unsettled product shape needs a decision before implementation.** When a page, navigation entry, table key, customer-scoping rule, or persisted sidecar would set product shape that Sami has not already settled, send a one-line ask before the first implementation commit. A
|
|
389
|
+
**Unsettled product shape needs a decision before implementation.** When a page, navigation entry, table key, customer-scoping rule, or persisted sidecar would set product shape that Sami has not already settled, send a one-line ask before the first implementation commit. A lane's schema decision or a platform-PO contract ruling does not settle product shape. This does not turn a user-specified decision or routine implementation into an approval request; it is inferred from AGENTC-186's 2026-09-16 retro (platform PO, 2026-09-17).
|
|
385
390
|
|
|
386
391
|
**Anything that needs the human is an ask, or it does not exist.** An approval, a credential,
|
|
387
392
|
a setting only they can change, a review click, a conflict between two of their own rules - if
|
|
388
|
-
your work waits on it, open a `dispatch_ask` the moment you know, the action as the question.
|
|
393
|
+
your work waits on it, open a `dispatch_ask` the moment you know, the action as the question. The
|
|
394
|
+
exception is a halt condition from [Before you ask](#before-you-ask) gate 1, which goes to the
|
|
395
|
+
platform PO over Envoy instead.
|
|
389
396
|
Never write it into a spec, a comment reply, a message, or a
|
|
390
397
|
pull-request body: nothing in those paths reaches the human's Inbox, and a human who is not
|
|
391
398
|
reading your document does not know they are the blocker. Before asking, try to remove the
|
|
@@ -606,6 +613,20 @@ survive moves and retyping.
|
|
|
606
613
|
block id, keeps a typed block's body, and uses `attributes` for client-owned typed attributes. Use it when
|
|
607
614
|
an existing paragraph is the question that should become a decision.
|
|
608
615
|
|
|
616
|
+
### A document that is reloading
|
|
617
|
+
|
|
618
|
+
These calls can answer `DOC_SERVICE_UNAVAILABLE` (HTTP 503), because each writes a document inside its
|
|
619
|
+
transaction: `dispatch_doc_edit`; `dispatch_ask` and `dispatch_comment` on a quote; a `dispatch_comment` reply
|
|
620
|
+
in a thread whose first comment is anchored; `dispatch_suggest`; `dispatch_resolve_comment` on an anchored
|
|
621
|
+
comment; `dispatch_artifact` replacing a document that already exists; and, on an ask that lives in a `:::ask`
|
|
622
|
+
block, `dispatch_edit_ask` and `dispatch_resolve_ask`, which write that block. Creating an issue with a spec,
|
|
623
|
+
uploading a new document, `dispatch_request_approval` and `dispatch_message` never answer it, and neither do
|
|
624
|
+
`dispatch_edit_ask` and `dispatch_resolve_ask` on an ask that has no block. It means that document's live room
|
|
625
|
+
failed and is reloading from its durable copy, so the server refused rather than wait for it; your call wrote
|
|
626
|
+
nothing and the document is intact. Nothing retries it for you: the Dispatch client hands a 503 straight back.
|
|
627
|
+
Wait a few seconds and make the same call again. A second refusal in a row is worth telling your human about,
|
|
628
|
+
with the document's reference.
|
|
629
|
+
|
|
609
630
|
## Typed blocks
|
|
610
631
|
|
|
611
632
|
The server declares typed document blocks at `GET /api/v1/schema/blocks`. Write one only with the
|