diff --git a/ProwlCLITests/ProwlCLIIntegrationTests.swift b/ProwlCLITests/ProwlCLIIntegrationTests.swift index 62df14fa..6d2599c6 100644 --- a/ProwlCLITests/ProwlCLIIntegrationTests.swift +++ b/ProwlCLITests/ProwlCLIIntegrationTests.swift @@ -315,6 +315,7 @@ final class ProwlCLIIntegrationTests: XCTestCase { progress: nil, source: "cooperative_cli", confidence: "exact", + binding: .current, timestamp: "2026-08-22T12:00:00.000Z", sessionID: "session-1", detail: "Review complete", @@ -364,6 +365,7 @@ final class ProwlCLIIntegrationTests: XCTestCase { progress: 75, source: "cooperative_cli", confidence: "exact", + binding: .current, timestamp: "2026-08-22T12:00:00.000Z", sessionID: nil, detail: nil, diff --git a/skills/prowl-cli/SKILL.md b/skills/prowl-cli/SKILL.md index 1b25aa3d..c117b034 100644 --- a/skills/prowl-cli/SKILL.md +++ b/skills/prowl-cli/SKILL.md @@ -75,7 +75,7 @@ prowl agents signal turn-ended --detail "Review complete" --json prowl agents signal needs-input --session session-1 --json ``` -The app attributes the socket peer PID through process ancestry. `turn-ended` means a runtime turn edge, not task completion; only an `agents dispatch-complete` receipt proves an assigned task finished. Public `--origin` is claimed metadata and never upgrades trust. Check `.data.signal.binding` on the receipt: `current` means the signal is wait/dispatch evidence; `unbound` (with a `signal_unbound` entry in `.data.warnings[]`) means it was only recorded as diagnostics — the caller did not descend from the pane's detected agent. Report distinct events from distinct turns: waits see the latest terminal signal, so `needs-input` followed within 200 ms by `turn-ended` leaves only the `turn-ended`. +The app attributes the socket peer PID through process ancestry. `turn-ended` means a runtime turn edge, not task completion; only an `agents dispatch-complete` receipt proves an assigned task finished. Public `--origin` is claimed metadata and never upgrades trust. Check `.data.signal.binding` on the receipt: `current` means the signal is wait/dispatch evidence; `unbound` (with a `signal_unbound` entry in `.data.warnings[]`) means it was only recorded as diagnostics — the pane has no detected agent yet, the caller is outside that agent's process tree, or `--session` names a different session than the one Prowl knows. Report distinct events from distinct turns: waits see the latest terminal signal, so `needs-input` followed within 200 ms by `turn-ended` leaves only the `turn-ended`. ## Common Recipes