diff --git a/docs-ai/063-agent-workflows/000-plan.md b/docs-ai/063-agent-workflows/000-plan.md index a2a52aec..1600f4f4 100644 --- a/docs-ai/063-agent-workflows/000-plan.md +++ b/docs-ai/063-agent-workflows/000-plan.md @@ -5,7 +5,7 @@ | **Status** | Planned (design in discussion; see Open questions) | | **Anchor date** | 2026-08-21 | | **Primary PRs** | TBD (see Delivery slicing) | -| **Related** | [047 cross-agent-handoff](../047-cross-agent-handoff/000-plan.md), [049 agents-toolbar-entry](../049-agents-toolbar-entry/000-plan.md), [053 agent-profiles](../053-agent-profiles/000-plan.md), [055 agent-profile-runtimes](../055-agent-profile-runtimes/000-plan.md), [059 agent-transcript-snapshots](../059-agent-transcript-snapshots/000-plan.md), [060 cli-targeting-and-contract-governance](../060-prowl-cli-targeting-and-contract-governance/000-plan.md), [061 native-toolbar-controls](../061-native-toolbar-controls/toolbar-controls.md), [064 agent-completion-signals](../064-agent-completion-signals/000-plan.md) (signal bus, `agents signal` / `agents wait`), [#699 `prowl create pane`](https://github.com/onevcat/Prowl/issues/699), [PR #651 (direction reference, not merged)](https://github.com/onevcat/Prowl/pull/651), [DSL spec (living)](dsl-spec.md), `docs/components/handoff.md`, `docs/components/agent-profiles.md`, `docs/components/cli.md` | +| **Related** | [047 cross-agent-handoff](../047-cross-agent-handoff/000-plan.md), [049 agents-toolbar-entry](../049-agents-toolbar-entry/000-plan.md), [053 agent-profiles](../053-agent-profiles/000-plan.md), [055 agent-profile-runtimes](../055-agent-profile-runtimes/000-plan.md), [059 agent-transcript-snapshots](../059-agent-transcript-snapshots/000-plan.md), [060 cli-targeting-and-contract-governance](../060-prowl-cli-targeting-and-contract-governance/000-plan.md), [061 native-toolbar-controls](../061-native-toolbar-controls/toolbar-controls.md), [064 agent-completion-signals](../064-agent-completion-signals/000-plan.md) (signal bus, `agents signal` / `agents wait`), [#699 `prowl create pane`](https://github.com/onevcat/Prowl/issues/699), [PR #651 (direction reference, not merged)](https://github.com/onevcat/Prowl/pull/651), [DSL spec (living)](dsl-spec.md), [release plan (living)](release-plan.md), `docs/components/handoff.md`, `docs/components/agent-profiles.md`, `docs/components/cli.md` | ## Background @@ -377,54 +377,27 @@ Shapes are intentionally close to what exists so the runner and the CLI share on ### Delivery slicing -Four tracks — terminal/CLI primitives (A), definitions/runner (B), UI (C), built-ins and -docs (D) — plus 064's signal slices (S), shipped as **three releases** (decision -2026-08-22, keeping Prowl's small-step cadence; PRs still merge to `main` one at a time -and engine PRs without a user-facing surface simply stay dormant until their release): - -- **R1 — CLI orchestration primitives + completion signals**: C0 (Agents settings group - with Profiles + Command Line Tool only), A1, A2, 064-S1 (signal bus, `ObservedAgentState` - observer, `prowl agents signal`), 064-S2 (`prowl agents wait`, `signals` field, - `--include-screen`, skill rubric), 064-S3 wave 1 (launch-scoped hooks for the tier-A - runtimes). Outcome: onevcat's daily CLI-driven orchestration is first-class - (`create pane --profile --prompt -` → `agents wait` → `send`), deterministic for - Prowl-launched agents. Docs: `cli.md`, `agent-detection.md`, `prowl-cli` skill. -- **R2 — Agent Workflows**: B1, B2, B3, C1, C2, D1 (incl. the Settings › Workflows page), - D2, and the 064-S5 part where the watchdog consumes exact signals. Outcome: the engine, - the GUI entry points, the first built-in (`prowl.adversarial-review`), custom workflows. - The shipped handoff (HUD + `prowl handoff`) stays untouched in R2. Docs: - `workflows.md`, `command-palette.md`, `active-agents.md`, `settings.md`. -- **R3 — Handoff migration + signal completion**: D3 (`prowl.handoff` / - `prowl.handoff-checkpoint`, `HANDOFF_RETIRED` stubs, HUD removal), 064-S3 wave 2 - (dedicated-home runtimes) and S4 (transcript file-watch / OSC producers), first V2 items - as capacity allows (observe mode, `on_attention: ask`, retention). The stubs are deleted - one release after R3. Docs: `handoff.md` rewrite. - -If R2 proves too large, it splits into R2a (B1+B2+B3+C1: workflows runnable from the CLI, -visible in the status center) and R2b (C2+D1+D2: GUI entry, Settings, skills, E2E); the -default is a single R2 because "runnable but no GUI entry" is hard to explain to users. - -Within a release the order below applies; C0 ∥ A1, A2 ∥ S1, and B1 ∥ B2 can proceed in -parallel. - -| Release | Order | PR | Track | Depends | Expectation | -| --- | --- | --- | --- | --- | --- | -| R1 | 1 | **C0** Settings IA: `Section("Agents")` with **Profiles** (today's Agents page, renamed) and **Command Line Tool** (moved from Advanced); no Workflows page yet | C | — | Independent, small; decides where everything lands | -| R1 | 2 | **A1** `prowl create pane` (#699) + target-surface split primitive returning the surface id; CLI four layers | A | 060 | Foundation for every `launch` into a split | -| R1 | 3 | **A2** Profile launch boundary (`.prompt`, placement override, anchor, background, synchronous `LaunchedSurface` result) + `prowl create tab/pane --profile --prompt -` + `prowl profiles list`; the boundary exposes the seam 064-S3 uses to attach launch-scoped hooks | A | A1 | Unlocks the CLI-driven route and is the runner's `launch` boundary | -| R1 | 4 | **064-S1** signal bus + `ObservedAgentState` multicast observer (moved here from B3) + `prowl agents signal` | S | — | Layer 0 for every runtime; B3 later consumes the same observer | -| R1 | 5 | **064-S2** `prowl agents wait` + `agents` `signals` field + `--include-screen` + skill rubric | S | S1 | Route B usable; heuristic fallback honest | -| R1 | 6 | **064-S3 wave 1** launch-scoped hooks for Claude Code, Codex (`notify`), Copilot, Droid, Qoder, Pi, OMP, OpenCode + self-check | S | A2, S1 | `agents wait` deterministic for Prowl-launched agents | -| R2 | 7 | **B1** Definitions: Yams, `AgentWorkflow` model + validator + JSON Schema, three-source discovery, `prowl workflow list/validate/schema` | B | — | Makes the DSL concrete and authorable (may merge during R1 without user-facing surface) | -| R2 | 8 | **B2** Runner core (pure): run state machine incl. `repeat`, run store, template renderer, `WorkflowRequestRegistry`, action registry, watchdog with injected clock — tested against fake boundaries | B | B1 | Parallel with B1's tail | -| R2 | 9 | **B3** Runner wiring: `WorkflowRunsFeature` effects, observer consumption via `AppFeature`, CLI preflight, `prowl workflow run/status/done/cancel` + contracts | B | A2, S1, B2 | Engine first powered on | -| R2 | 10 | **C1** Status center fifth state + run panel + attention triggers + notifications (061 visual verification) | C | B3 | Runs become visible | -| R2 | 11 | **C2** Start sheet (bindings, suggestion-based profile creation, don't-ask-again, `--skip` equivalent) + entry points (capsule popover, palette, Active Agents context menu) | C | B3 | GUI-initiated runs | -| R2 | 12 | **D1** `embed-skills`, `prowl-workflows` authoring skill, `docs/components/workflows.md`, Settings › Workflows page (enable/validate/Reveal/New/Ask-agent/per-workflow auto) added to the Agents group | D | B1, C2 | Distribution and docs | -| R2 | 13 | **D2** `prowl.adversarial-review` built-in + reviewer skill + E2E self-verification; watchdog consumes exact signals (064-S5 part) | D | A2, C2, D1, S3 | Proves the engine on a fresh flow before touching shipped behavior | -| R3 | 14 | **D3** `prowl.handoff` + `prowl.handoff-checkpoint` built-ins + `handoff.transition`/`handoff.checkpoint` actions; `prowl handoff to|save` → `HANDOFF_RETIRED` stubs; remove `HandoffHudFeature`, `HandoffCommandHandler`, `HandoffRequestRegistry`; rewrite `docs/components/handoff.md` and the `prowl-cli` skill | D | D2 | Migrate the shipped feature last | -| R3 | 15 | **064-S3 wave 2** (dedicated-home runtimes) + **064-S4** (transcript file-watch / OSC producers) | S | S3, 053 homes | More runtimes get exact signals | -| R3+ | 16 | V2: observe mode (`expect.status` + `agents read`/hook `last_assistant_message`), `on_attention: ask `, fan-out (`count`, `wait all`), run persistence/resume, retention, cross-worktree roles, GUI editor | — | — | — | +This section defines **what** each slice contains. **When** it ships and in what order — +including the interleaving with 064's signal slices — is owned by the living +[release-plan.md](release-plan.md) (three releases: R1 CLI primitives + signals, R2 Agent +Workflows, R3 handoff migration; decision 2026-08-22). Only two couplings cross the two +entries: 064-S1 delivers the `ObservedAgentState` observer that B3 consumes, and 064-S3 +attaches hooks through A2's launch boundary. + +| Slice | Track | Depends | Contents / expectation | +| --- | --- | --- | --- | +| **C0** | C | — | Settings IA: `Section("Agents")` with **Profiles** (today's Agents page, renamed) and **Command Line Tool** (moved from Advanced); the Workflows page comes with D1. Independent, small; decides where everything lands. | +| **A1** | A | 060 | `prowl create pane` (#699) + target-surface split primitive returning the surface id; CLI four layers. Foundation for every `launch` into a split. | +| **A2** | A | A1 | Profile launch boundary (`.prompt`, placement override, anchor, background, synchronous `LaunchedSurface` result) + `prowl create tab/pane --profile --prompt -` + `prowl profiles list`; exposes the seam 064-S3 uses for launch-scoped hooks. Unlocks the CLI-driven route; the runner's `launch` boundary. | +| **B1** | B | — | Definitions: Yams, `AgentWorkflow` model + validator + JSON Schema, three-source discovery, `prowl workflow list/validate/schema`. Makes the DSL concrete and authorable (no user-facing surface until R2). | +| **B2** | B | B1 | Runner core (pure): run state machine incl. `repeat`, run store, template renderer, `WorkflowRequestRegistry`, action registry, watchdog with injected clock — tested against fake boundaries. | +| **B3** | B | A2, 064-S1, B2 | Runner wiring: `WorkflowRunsFeature` effects, observer consumption via `AppFeature`, CLI preflight, `prowl workflow run/status/done/cancel` + contracts. Engine first powered on. | +| **C1** | C | B3 | Status center fifth state + run panel + attention triggers + notifications (061 visual verification). Runs become visible. | +| **C2** | C | B3 | Start sheet (bindings, suggestion-based profile creation, don't-ask-again, `--skip` equivalent) + entry points (capsule popover, palette, Active Agents context menu). GUI-initiated runs. | +| **D1** | D | B1, C2 | `embed-skills`, `prowl-workflows` authoring skill, `docs/components/workflows.md`, Settings › Workflows page (enable/validate/Reveal/New/Ask-agent/per-workflow auto) added to the Agents group. Distribution and docs. | +| **D2** | D | A2, C2, D1, 064-S3 wave 1 | `prowl.adversarial-review` built-in + reviewer skill + E2E self-verification; the watchdog consumes exact signals (064-S5 part). Proves the engine on a fresh flow before touching shipped behavior. | +| **D3** | D | D2 | `prowl.handoff` + `prowl.handoff-checkpoint` built-ins + `handoff.transition`/`handoff.checkpoint` actions; `prowl handoff to\|save` → `HANDOFF_RETIRED` stubs; remove `HandoffHudFeature`, `HandoffCommandHandler`, `HandoffRequestRegistry`; rewrite `docs/components/handoff.md` and the `prowl-cli` skill. Migrate the shipped feature last. | +| **V2** | — | — | observe mode (`expect.status` + `agents read` / hook `last_assistant_message`), `on_attention: ask `, fan-out (`count`, `wait all`), run persistence/resume, retention, cross-worktree roles, GUI editor. | ## Alternatives & decisions @@ -507,10 +480,11 @@ parallel. when it is truly complete, and attention states that never discard a late delivery. - **PR order / releases** (revised 2026-08-22): three releases — R1 = C0, A1, A2, 064-S1/S2/S3-wave-1 (CLI orchestration + signals); R2 = B1, B2, B3, C1, C2, D1, D2 - (Agent Workflows); R3 = D3, 064-S3-wave-2/S4, first V2 items (handoff migration) — see - Delivery slicing. The new Adversarial Review flow validates the engine before the shipped - handoff is migrated; the `ObservedAgentState` observer moved from B3 to 064-S1 so R1 can - ship `agents wait`. + (Agent Workflows); R3 = D3, 064-S3-wave-2/S4, first V2 items (handoff migration). The + single source for order and release assignment is [release-plan.md](release-plan.md); + the slice tables in 063/064 define contents only. The new Adversarial Review flow + validates the engine before the shipped handoff is migrated; the `ObservedAgentState` + observer moved from B3 to 064-S1 so R1 can ship `agents wait`. - **Review round (2026-08-22)** — accepted corrections: runner as an `AppFeature` child fed by the single event subscription + a per-surface multicast observer for CLI waits; opaque per-step delivery tokens for `done`; `LegacyHandoffAdapter` with a full parameter diff --git a/docs-ai/063-agent-workflows/release-plan.md b/docs-ai/063-agent-workflows/release-plan.md new file mode 100644 index 00000000..de500ae6 --- /dev/null +++ b/docs-ai/063-agent-workflows/release-plan.md @@ -0,0 +1,89 @@ +# Agent Workflows (063) + Agent Completion Signals (064) — release plan (living) + +> Living document: the single place that says **when** and **in what order** the slices of +> [063](000-plan.md) and [064](../064-agent-completion-signals/000-plan.md) ship. The +> slices themselves — what each PR contains — are defined in the owning plan's +> "Delivery slicing" section. Update this file when scope moves between releases. + +## Ownership + +| Prefix | Owner | Meaning | +| --- | --- | --- | +| A | 063 | terminal / CLI primitives (`create pane`, profile launch boundary) | +| B | 063 | workflow definitions and runner | +| C | 063 | UI (Settings IA, status center, start sheet, entry points) | +| D | 063 | built-ins, skills, docs, handoff migration | +| S | 064 | completion signals (bus, `agents signal` / `agents wait`, hooks, producers) | + +Cross-entry couplings (only these two): 064-S1 delivers the `ObservedAgentState` observer +that 063-B3 consumes; 064-S3 attaches launch-scoped hooks through 063-A2's launch boundary. +063 V1 does not otherwise depend on 064 (steps complete on `prowl workflow done`). + +## Releases + +PRs merge to `main` one at a time (each keeps `main` shippable); engine PRs without a +user-facing surface may merge before "their" release and stay dormant. Three releases: + +### R1 — CLI orchestration primitives + completion signals + +| Order | Slice | Entry | Depends | Outcome | +| --- | --- | --- | --- | --- | +| 1 | **C0** Settings IA: `Section("Agents")` with Profiles (renamed) + Command Line Tool (from Advanced); no Workflows page yet | 063 | — | CLI install lives with Agents | +| 1 | **A1** `prowl create pane` (#699) + anchored split primitive | 063 | 060 | CLI can split | +| 2 | **A2** profile launch boundary + `create tab\|pane --profile

--prompt -` + `profiles list` | 063 | A1 | CLI launches a profile with a kickoff prompt and gets the pane back | +| 2 | **S1** signal bus + `ObservedAgentState` multicast observer + `prowl agents signal` | 064 | — | layer-0 signals for every runtime | +| 3 | **S2** `prowl agents wait` (`source`/`confidence`, `--include-screen`) + `agents` `signals` field + skill rubric | 064 | S1 | no hand-written polling; heuristic results are labelled | +| 4 | **S3 wave 1** launch-scoped hooks for tier-A runtimes (Claude Code, Codex `notify`, Copilot, Droid, Qoder, Pi, OMP, OpenCode) + self-check | 064 | A2, S1 | `agents wait` is deterministic for Prowl-launched agents | + +User-visible result: onevcat's daily CLI-driven orchestration is first-class +(`create pane --profile --prompt -` → `agents wait` → `send`). Docs: `docs/components/cli.md`, +`agent-detection.md`, `settings.md`, `prowl-cli` skill. Parallelism: C0 ∥ A1, A2 ∥ S1. + +### R2 — Agent Workflows + +| Order | Slice | Entry | Depends | Outcome | +| --- | --- | --- | --- | --- | +| 1 | **B1** definitions (Yams, model, validator, JSON Schema, three-source discovery, `workflow list/validate/schema`) | 063 | — | DSL authorable and validatable (may merge during R1) | +| 2 | **B2** runner core (pure state machine, run store, templates, registry, watchdog) | 063 | B1 | — | +| 3 | **B3** runner wiring + `workflow run/status/done/cancel` | 063 | A2, S1, B2 | engine powered on | +| 4 | **C1** status center + run panel + notifications | 063 | B3 | runs visible | +| 5 | **C2** start sheet + entry points (capsule popover, palette, Active Agents) | 063 | B3 | GUI-initiated runs | +| 6 | **D1** `embed-skills`, `prowl-workflows` authoring skill, `docs/components/workflows.md`, Settings › Workflows page | 063 | B1, C2 | custom workflows, agent-assisted authoring | +| 7 | **D2** `prowl.adversarial-review` built-in + reviewer skill + E2E; watchdog consumes exact signals (064-S5 part) | 063 + 064 | A2, C2, D1, S3 wave 1 | first built-in workflow | + +The shipped handoff (HUD + `prowl handoff`) stays untouched in R2. Fallback split if R2 is +too large: R2a = B1–C1 (workflows runnable from the CLI, visible in the status center), +R2b = C2–D2 (GUI entry, Settings, skills, E2E). Default is one R2. Docs: `workflows.md`, +`command-palette.md`, `active-agents.md`, `settings.md`. + +### R3 — Handoff migration + signal completion + +| Order | Slice | Entry | Depends | Outcome | +| --- | --- | --- | --- | --- | +| 1 | **D3** `prowl.handoff` + `prowl.handoff-checkpoint` built-ins, `HANDOFF_RETIRED` stubs, removal of `HandoffHudFeature` / `HandoffCommandHandler` / `HandoffRequestRegistry`, `docs/components/handoff.md` rewrite | 063 | D2 | handoff is a workflow | +| 1 | **S3 wave 2** tier-B runtimes via dedicated-home profiles (Gemini, Qwen, Grok, Cline, Kimi) | 064 | S3 wave 1, 053 homes | more runtimes exact | +| 1 | **S4** transcript file-watch + OSC producers | 064 | S1 | layer-2 signals without hooks | + +The `HANDOFF_RETIRED` stubs are deleted one release after R3. + +### R3+ — V2 + +063 V2 items (observe mode, `on_attention: ask `, fan-out, retention, run resume, +cross-worktree roles, GUI editor) and the rest of 064-S5; scheduled by demand. + +## Dependency graph + +``` +R1: C0 A1 ──► A2 ──┐ + S1 ──► S2 ├──► S3w1 + └────────┘ +R2: B1 ──► B2 ──► B3 (◄ A2, S1) ──► C1 ──► C2 ──► D1 ──► D2 (◄ S3w1) +R3: D3 (◄ D2) S3w2 (◄ S3w1) S4 (◄ S1) +R3+: V2 / S5 rest; delete HANDOFF_RETIRED stubs +``` + +## Change log + +- 2026-08-22 — first version: three releases agreed; `ObservedAgentState` observer moved + from 063-B3 to 064-S1; C0 ships without the Workflows page; `prowl agents wait` owned by + 064-S2. diff --git a/docs-ai/064-agent-completion-signals/000-plan.md b/docs-ai/064-agent-completion-signals/000-plan.md index e62e85a4..fd3ac587 100644 --- a/docs-ai/064-agent-completion-signals/000-plan.md +++ b/docs-ai/064-agent-completion-signals/000-plan.md @@ -146,20 +146,19 @@ permission or question dialog), tells the agent to use `--include-screen` and ### Delivery slicing -Release mapping (decision 2026-08-22, shared with 063): **R1** ships S1, S2, and S3 -wave 1 together with 063's C0/A1/A2 — the "CLI orchestration primitives + completion -signals" release; **R2** (Agent Workflows) consumes the signals in the runner's watchdog -(S5 part); **R3** ships S3 wave 2 and S4 alongside the handoff migration. - -| Release | Order | Slice | Depends | Notes | -| --- | --- | --- | --- | --- | -| R1 | 1 | **S1** Signal bus state + the `ObservedAgentState` multicast observer (snapshot / changed / removed / surfaceClosed / `.signal`; moved here from 063-B3 so it ships first) + `prowl agents signal` (CLI four layers) | — | Layer 0 works for every runtime immediately; 063-B3 later consumes the same observer | -| R1 | 2 | **S2** `prowl agents wait` + `agents` `signals` field + `--include-screen` + skill rubric | S1 | Route B usable; heuristic fallback honest | -| R1 | 3 | **S3 wave 1** Launch-scoped hook injection (adapter `signalHooks`, self-check) for tier A of the research matrix (flag/env per launch, live-verified): Claude Code `--settings`, Codex `-c notify=[…]` (turn-complete only; hook trust bypass is never passed), Copilot `--plugin-dir`, Droid `--settings`, Qoder `--settings`, Pi `-e`, OMP `--hook`, OpenCode `OPENCODE_CONFIG_CONTENT` | 063 A2, S1, research matrix | `agents wait` deterministic for Prowl-launched agents on these runtimes | -| R2 | 4 | **S5 (part)** 063's watchdog consumes exact signals (nudge on `turn-complete` without `done`, immediate attention on `needs-input`) | 063 C1, S3 | Recorded in 063 amendments | -| R3 | 5 | **S3 wave 2** tier B (`configDirOnly`: Gemini, Qwen, Grok, Cline, Kimi) for dedicated-home profiles only; tier C (Cursor, Amp: project files) is not attached | S3 wave 1, 053 dedicated homes | More runtimes get exact signals | -| R3 | 6 | **S4** Transcript file-watch and OSC producers | S1 | Layer 2 without hooks | -| R3+ | 7 | **S5 (rest)** 063 V2 observe mode (`expect.status` + `agents read` / hook `last_assistant_message`) and `on_attention: ask ` | S3, S4, 063 V2 | — | +This section defines **what** each slice contains; **when** it ships, and how it +interleaves with 063's slices, is owned by the shared living +[release-plan.md](../063-agent-workflows/release-plan.md) (R1: S1, S2, S3 wave 1 with +063's C0/A1/A2; R2: the S5 watchdog part; R3: S3 wave 2 and S4). + +| Slice | Depends | Contents / expectation | +| --- | --- | --- | +| **S1** | — | Signal bus state + the `ObservedAgentState` multicast observer (snapshot / changed / removed / surfaceClosed / `.signal`; first specified in 063, delivered here so it ships first) + `prowl agents signal` (CLI four layers). Layer 0 works for every runtime immediately; 063-B3 later consumes the same observer. | +| **S2** | S1 | `prowl agents wait` + `agents` `signals` field + `--include-screen` + skill rubric. Route B usable; heuristic fallback honest. | +| **S3 wave 1** | 063-A2, S1, research matrix | Launch-scoped hook injection (adapter `signalHooks`, self-check) for tier A of the research matrix (flag/env per launch, live-verified): Claude Code `--settings`, Codex `-c notify=[…]` (turn-complete only; hook trust bypass is never passed), Copilot `--plugin-dir`, Droid `--settings`, Qoder `--settings`, Pi `-e`, OMP `--hook`, OpenCode `OPENCODE_CONFIG_CONTENT`. `agents wait` becomes deterministic for Prowl-launched agents on these runtimes. | +| **S3 wave 2** | S3 wave 1, 053 dedicated homes | Tier B (`configDirOnly`: Gemini, Qwen, Grok, Cline, Kimi) for dedicated-home profiles only; tier C (Cursor, Amp: project files) is not attached. | +| **S4** | S1 | Transcript file-watch and OSC producers — layer 2 without hooks. | +| **S5** | 063 C1 (part), S3/S4 + 063 V2 (rest) | 063's watchdog consumes exact signals (nudge on `turn-complete` without `done`, immediate attention on `needs-input`) — ships with 063-D2; later: 063 V2 observe mode (`expect.status` + `agents read` / hook `last_assistant_message`) and `on_attention: ask `. Recorded in 063 amendments. | ### Verification diff --git a/docs-ai/README.md b/docs-ai/README.md index ebeb5f30..ddc36f52 100644 --- a/docs-ai/README.md +++ b/docs-ai/README.md @@ -39,6 +39,9 @@ Living documents hosted here: - `013-prowl-cli/contracts/` — normative CLI contracts - `017-upstream-sync-process/upstream-ledger.md` — upstream review ledger (baseline + decisions) - `020-observability/runbook.md` — observability/diagnostics runbook +- `063-agent-workflows/dsl-spec.md` — Agent Workflow DSL (`prowl.workflow/v1`) normative spec +- `063-agent-workflows/release-plan.md` — release/order plan shared by 063 and 064 +- `064-agent-completion-signals/research-agent-completion-signals.md` — per-runtime completion-signal matrix Some entries also host verbatim historical attachments migrated from doc-onevcat (e.g. `023-shelf-mode/jank-investigation.md`, `017-.../batch-2026-07-06-post-v0.10.5.md`,