@sjawhar/pi-legion-envoy 5.5.1 → 5.5.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 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: "5.5.1",
16145
+ version: "5.5.2",
16146
16146
  type: "module",
16147
16147
  omp: {
16148
16148
  extensions: [
@@ -72,8 +72,8 @@ carries, so nothing changes in how you handle wakes. Under the TypeScript daemon
72
72
  claims the role and calls `/controller/ready` exactly as under tmux; under the Go daemon
73
73
  (`LEGION_DAEMON_API=go` in your environment) it registers on `/legion/v1/claims/register` with the
74
74
  secret, claims the role, then subscribes to `notifications.legion.<project>.controller`, where the
75
- Go daemon publishes the two Go rows of the wake routing table. The daemon records you as
76
- `controllerLocator: {runtime, external: true, sessionId, registeredAt}`, `runtime` being the
75
+ Go daemon publishes the rows marked from the Go daemon in the wake routing table. The daemon records
76
+ you as `controllerLocator: {runtime, external: true, sessionId, registeredAt}`, `runtime` being the
77
77
  daemon's own (`kubernetes`, or `tmux` under the Go daemon). The TypeScript daemon reads your
78
78
  liveness from the Envoy role registry (the holder of
79
79
  `legion-<project>-controller` and its `last_seen`), not from a pane: keep the session running.
@@ -87,15 +87,29 @@ mints a new secret, so your grants stop working and the role moves to the new se
87
87
 
88
88
  The Go daemon's controller topic is a wake for a session that is running when it is published.
89
89
  Envoy hands an Oh My Pi session no retained copy of a notice published before it subscribed, so a
90
- hold or a tree architect's failed claim from while no controller ran never arrives as a wake. At
91
- every start, before anything else, read `legion state --json` and handle each issue whose
92
- `issues.<KEY>.phase` is `held` (its `issues.<KEY>.holdReason` is `escalated` when its architect
93
- sent it to you, and absent while the architect is still deciding or while its tree lingers or is
94
- closed, where the hold waits for the tree's re-admission and needs nothing from you), and each
95
- tree root whose `issues.<KEY>.architect.state` is `failed` and whose `issues.<KEY>.phase` is not
96
- `done`, exactly as the matching wake below. A parked tree (root phase `done`: it lingers or is
97
- closed) needs nothing from you: a failed architect ignores the park and reads `failed` until the
98
- tree closes. The issue record is the truth; the topic is the wake.
90
+ hold, a tree architect's failed claim, or a new triage root from while no controller ran never
91
+ arrives as a wake. At every start, before anything else:
92
+
93
+ 1. Read `legion state --json` and handle each issue whose `issues.<KEY>.phase` is `held` (its
94
+ `issues.<KEY>.holdReason` is `escalated` when its architect sent it to you, and absent while the
95
+ architect is still deciding or while its tree lingers or is closed, where the hold waits for the
96
+ tree's re-admission and needs nothing from you), and each tree root whose
97
+ `issues.<KEY>.architect.state` is `failed` and whose `issues.<KEY>.phase` is not `done`, exactly
98
+ as the matching wake below. A parked tree (root phase `done`: it lingers or is closed) needs
99
+ nothing from you: a failed architect ignores the park and reads `failed` until the tree closes.
100
+ 2. List the project's triage issues with `dispatch_issues({project, status: "triage", limit: 250})`.
101
+ When its first line ends `(showing N of M)`, it is one page: say in your summary how many rows
102
+ it left unread. The rows show no parent, so open each row with `dispatch_read`: one whose
103
+ `Links:` name a `child_of` issue is a child, which its parent's architect owns, so leave it,
104
+ whether or not `legion state --json` records it (a `child_of` under `Referenced by:` is a child
105
+ of this issue, not its parent). Of the rest, triage each that `legion state --json` does not
106
+ record under `issues` as a new issue. A root recorded there and now in `triage` is work the
107
+ daemon holds that a human pulled back: never re-admit it yourself; name it in your summary to
108
+ the human ("<KEY> was pulled back to triage; what do you want?"). This listing is also the only
109
+ way you learn of an unrecorded root moved back into triage, or of a child detached to a root
110
+ while it is in triage, since the daemon wakes you only on a root's creation.
111
+
112
+ The issue record and Dispatch are the truth; the topic is the wake.
99
113
 
100
114
  ## Deployment instructions
101
115
 
@@ -123,7 +137,7 @@ quoted here.
123
137
 
124
138
  | Wake | Content | Controller action |
125
139
  |---|---|---|
126
- | New issue created in the Dispatch project (`issue.created`, status `triage`; resync heals misses) | issue key + triage context (incl. pre-existing children) | Triage: `legion status <KEY> todo` to admit, or set `backlog`/`icebox` to park |
140
+ | New issue created in the Dispatch project (`issue.created`, status `triage`; under the TypeScript daemon resync heals misses, under the Go daemon the boot step above does). From the Go daemon: `triage on <KEY>` (payload `{kind: "triage"}`) on the controller topic, for a root only | issue key + triage context (incl. pre-existing children) | Triage: `legion status <KEY> todo` to admit, or set `backlog`/`icebox` to park |
127
141
  | Backlog eligibility | slot freed / priority change | Reconsider parked items and move the eligible root to `todo` |
128
142
  | Architect escalation (controller-actionable only: re-file a child as a root issue, capacity, cross-tree conflicts) | request + context | Judge and act; issue-scoped human Q&A goes through `dispatch_ask` from the owning architect, not here |
129
143
  | Resync report | artifact-driven anomaly list (zero-owner trees, untriaged-open, launch-failed, admission-drift) | Verify against fresh state, then heal |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjawhar/pi-legion-envoy",
3
- "version": "5.5.1",
3
+ "version": "5.5.2",
4
4
  "type": "module",
5
5
  "omp": {
6
6
  "extensions": [