@axiomantic/garden 0.2.3 → 0.2.4
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/SKILL.md +6 -4
- package/bin/binaries/garden-darwin-arm64 +0 -0
- package/bin/binaries/garden-darwin-x64 +0 -0
- package/bin/binaries/garden-linux-arm64 +0 -0
- package/bin/binaries/garden-linux-x64 +0 -0
- package/bin/binaries/garden-win32-x64.exe +0 -0
- package/package.json +1 -1
- package/skills/garden/SKILL.md +6 -4
- package/skills/orchestrate-swarm/SKILL.md +22 -15
package/SKILL.md
CHANGED
|
@@ -166,10 +166,12 @@ To prevent silent deadlocks when workers stall, crash, or fail to re-arm listene
|
|
|
166
166
|
2. **Watchdog Window**: If a worker fails to respond within the expected turn window (e.g. 5–10 minutes) and `rhizo probe` reveals `NO_LISTENER` or unread inbox items:
|
|
167
167
|
- **Escalate Immediately**: Prompt the operator via `ask_question` with the diagnostic status.
|
|
168
168
|
- **Actionable Remediation**: Offer options to (1) re-arm the listener in the worker's terminal session (`rhizo listen <worker>`), (2) reboot the agent harness, or (3) reassign the task via `rhizo reroute <worker> <new_worker>`.
|
|
169
|
-
3. **Orchestrator Self-Audit Watchdog &
|
|
170
|
-
- For harnesses supporting `schedule` (e.g. Antigravity), arm a debounced
|
|
171
|
-
-
|
|
172
|
-
-
|
|
169
|
+
3. **Orchestrator Self-Audit Watchdog & Stepped Backoff Protocol (GVR-014, GVR-015)**:
|
|
170
|
+
- For harnesses supporting `schedule` (e.g. Antigravity), arm a debounced watchdog timer (`schedule(DurationSeconds=cadence, Prompt="...", TimerCondition="any")`).
|
|
171
|
+
- **Stepped Backoff & 4-Strike Cap**: Starts at base 15m (900s). On consecutive quiescent checks with a stable listener, backs off (15m $\rightarrow$ 30m $\rightarrow$ 60m $\rightarrow$ 120m) and stands down at check 4 (`recommended_cadence=0`), preventing infinite token-eating polling loops.
|
|
172
|
+
- **Reset Invariant**: Resets immediately to base 15m (streak 0) on any listener failure, unread inbox backlog, outbound task dispatch (`rhizo send`/`enqueue`), worker reply, or user chat prompt.
|
|
173
|
+
- **Replace, Never Stack**: Kills previous timer via `manage_task(Action='kill')` before arming a new one. Arriving worker traffic cancels the timer automatically with zero token overhead.
|
|
174
|
+
- When the timer fires, execute the short check: `rhizo watchdog check --agent <orchestrator> --json` and follow `next_action` (`SCHEDULE_TIMER` or `STAND_DOWN`).
|
|
173
175
|
|
|
174
176
|
---
|
|
175
177
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/skills/garden/SKILL.md
CHANGED
|
@@ -166,10 +166,12 @@ To prevent silent deadlocks when workers stall, crash, or fail to re-arm listene
|
|
|
166
166
|
2. **Watchdog Window**: If a worker fails to respond within the expected turn window (e.g. 5–10 minutes) and `rhizo probe` reveals `NO_LISTENER` or unread inbox items:
|
|
167
167
|
- **Escalate Immediately**: Prompt the operator via `ask_question` with the diagnostic status.
|
|
168
168
|
- **Actionable Remediation**: Offer options to (1) re-arm the listener in the worker's terminal session (`rhizo listen <worker>`), (2) reboot the agent harness, or (3) reassign the task via `rhizo reroute <worker> <new_worker>`.
|
|
169
|
-
3. **Orchestrator Self-Audit Watchdog &
|
|
170
|
-
- For harnesses supporting `schedule` (e.g. Antigravity), arm a debounced
|
|
171
|
-
-
|
|
172
|
-
-
|
|
169
|
+
3. **Orchestrator Self-Audit Watchdog & Stepped Backoff Protocol (GVR-014, GVR-015)**:
|
|
170
|
+
- For harnesses supporting `schedule` (e.g. Antigravity), arm a debounced watchdog timer (`schedule(DurationSeconds=cadence, Prompt="...", TimerCondition="any")`).
|
|
171
|
+
- **Stepped Backoff & 4-Strike Cap**: Starts at base 15m (900s). On consecutive quiescent checks with a stable listener, backs off (15m $\rightarrow$ 30m $\rightarrow$ 60m $\rightarrow$ 120m) and stands down at check 4 (`recommended_cadence=0`), preventing infinite token-eating polling loops.
|
|
172
|
+
- **Reset Invariant**: Resets immediately to base 15m (streak 0) on any listener failure, unread inbox backlog, outbound task dispatch (`rhizo send`/`enqueue`), worker reply, or user chat prompt.
|
|
173
|
+
- **Replace, Never Stack**: Kills previous timer via `manage_task(Action='kill')` before arming a new one. Arriving worker traffic cancels the timer automatically with zero token overhead.
|
|
174
|
+
- When the timer fires, execute the short check: `rhizo watchdog check --agent <orchestrator> --json` and follow `next_action` (`SCHEDULE_TIMER` or `STAND_DOWN`).
|
|
173
175
|
|
|
174
176
|
---
|
|
175
177
|
|
|
@@ -70,27 +70,34 @@ Whenever the Lead Orchestrator dispatches a task, broadcasts instructions, or aw
|
|
|
70
70
|
|
|
71
71
|
FORBIDDEN: Never yield the conversation turn to the operator after dispatching work without an active background listener running. Yielding a turn without a listener severs the swarm's physical lifeline, trapping worker replies in Redis and causing silent swarm stalls.
|
|
72
72
|
|
|
73
|
-
Safety Net (Scheduled Timer Watchdog & Debouncer Protocol):
|
|
73
|
+
Safety Net (Scheduled Timer Watchdog & Debouncer Protocol — Stepped Backoff & 4-Strike Cap):
|
|
74
74
|
In harnesses supporting `schedule` (e.g. Google Antigravity), arm a debounced watchdog timer to ensure an orchestrator session is never abandoned if a listener fails to arm or terminates prematurely.
|
|
75
|
-
- **Cadence
|
|
75
|
+
- **Base Cadence & Stepped Backoff**:
|
|
76
|
+
- Initial / After Activity: Base 15 minutes (`DurationSeconds=900`).
|
|
77
|
+
- Quiescent Check 1 (Streak 1): 30 minutes (`DurationSeconds=1800`).
|
|
78
|
+
- Quiescent Check 2 (Streak 2): 60 minutes (`DurationSeconds=3600`).
|
|
79
|
+
- Quiescent Check 3 (Streak 3): 120 minutes (`DurationSeconds=7200`).
|
|
80
|
+
- Quiescent Check 4 (Streak 4): **Stand Down** (`recommended_cadence=0`, do not reschedule).
|
|
81
|
+
- **The Non-Exponential Reset Invariant**:
|
|
82
|
+
The quiescent streak and timer cadence IMMEDIATELY reset to 0 (base 15m / 900s) upon:
|
|
83
|
+
1. Any listener failure or missing process (`ACTION_REQUIRED: REARM_LISTENER`).
|
|
84
|
+
2. Any unread inbox backlog (`ACTION_REQUIRED: UNREAD_MESSAGES`).
|
|
85
|
+
3. Any outbound task dispatch (`rhizo send`, `rhizo enqueue`, `rhizo reply`).
|
|
86
|
+
4. Any worker gate report or message receipt.
|
|
87
|
+
5. Any operator interaction or new prompt in chat.
|
|
76
88
|
- **Replace, Never Stack Invariant**:
|
|
77
89
|
Harnesses prohibit concurrent timers with `TimerCondition="any"`. Before setting a timer, inspect running tasks with `manage_task(Action='list')`. If an existing watchdog task is active (`toolName == "schedule"` or prompt includes `[RHIZO WATCHDOG]`), cancel it via `manage_task(Action='kill', TaskId=...)`.
|
|
78
|
-
- **
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
2. Worker Message / Gate Report receipt.
|
|
82
|
-
3. Implementation Plan updates (`implementation_plan.md` checkboxes).
|
|
83
|
-
4. Watchdog Wakeup turn (if tasks are still in flight).
|
|
84
|
-
- **Stand Down Invariant**:
|
|
85
|
-
When all tasks in `implementation_plan.md` are complete (`- [x]` 100%), kill any running watchdog timer and do not reschedule.
|
|
90
|
+
- **Stand Down Invariants**:
|
|
91
|
+
1. When all tasks in `implementation_plan.md` are complete (`- [x]` 100%), kill any running watchdog timer and do not reschedule.
|
|
92
|
+
2. When the watchdog reaches `substatus: "MAX_STREAK_REACHED"` (streak 4/4), stand down and do not reschedule. The background listener process (`rhizo listen`) remains continuously active on Redis `BRPOP` and will wake the session on any new message.
|
|
86
93
|
- **Zero-Token Happy Path**:
|
|
87
|
-
Because `TimerCondition="any"` is set, any arriving worker message or background task completion automatically cancels the timer early before it expires. The timer only fires if the orchestrator was silent and deaf for
|
|
94
|
+
Because `TimerCondition="any"` is set, any arriving worker message or background task completion automatically cancels the timer early before it expires. The timer only fires if the orchestrator was silent and deaf for the full cadence duration.
|
|
88
95
|
- **The Short Check (When Timer Fires)**:
|
|
89
96
|
Run `rhizo watchdog check --agent <name> --json`.
|
|
90
|
-
* If `ACTION_REQUIRED: REARM_LISTENER`: start `rhizo listen <name>` in background and
|
|
91
|
-
* If `ACTION_REQUIRED: UNREAD_MESSAGES`: drain messages with `rhizo drain 10 <name>`, start listener, and
|
|
92
|
-
* If `OK: LISTENING`: listener is healthy;
|
|
93
|
-
* If `STAND_DOWN: IDLE`:
|
|
97
|
+
* If `ACTION_REQUIRED: REARM_LISTENER`: start `rhizo listen <name>` in background and schedule base timer (`DurationSeconds=900`).
|
|
98
|
+
* If `ACTION_REQUIRED: UNREAD_MESSAGES`: drain messages with `rhizo drain 10 <name>`, start listener, and schedule base timer (`DurationSeconds=900`).
|
|
99
|
+
* If `OK: LISTENING`: listener is healthy; check `recommended_cadence`. If `next_action == "SCHEDULE_TIMER"`, schedule timer with `DurationSeconds=recommended_cadence` and return to sleep with minimal or no user-facing chat output.
|
|
100
|
+
* If `STAND_DOWN: MAX_STREAK_REACHED` or `STAND_DOWN: IDLE`: stand down and do NOT reschedule.
|
|
94
101
|
</CRITICAL>
|
|
95
102
|
|
|
96
103
|
---
|