Skip to content

Commit ef4dc8d

Browse files
committed
docs: add proposals CLI reference, webui /proposals, contract rework docs
- cli.md: add wave proposals subcommands (list/show/approve/reject) - cli.md: add proposals to quick reference table - web-dashboard.md: add /proposals section + API endpoints - state-resumption.md: add rework (test guard) failure mode - webhooks-worksource-overlap.md: F4 analysis (informational)
1 parent e3d5eed commit ef4dc8d

4 files changed

Lines changed: 52 additions & 0 deletions

File tree

docs/guides/state-resumption.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ Recovery hints:
123123
| Failure Mode | What Happens | Recovery |
124124
|-------------|-------------|----------|
125125
| **Contract validation** | Step output doesn't match schema. Step is marked failed. | Fix the issue, then `--from-step <step>` to retry. Use `--force` to skip contract checks. |
126+
| **Rework (test guard)** | `test_diff` or `test_count_baseline` detects test deletion/regression. Step re-executes automatically. | The rework loop retries the step up to `max_attempts`. If test count drops, the implementer must restore tests. |
126127
| **Adapter crash** | LLM CLI process exits unexpectedly. Step is marked failed. | `--from-step <step>` to retry with a fresh adapter invocation. |
127128
| **Missing artifact** | A required input artifact from a prior step is missing. | Re-run the upstream step that produces the artifact, then resume. |
128129
| **Timeout** | Step exceeds its configured timeout. | Increase timeout in manifest or simplify the prompt, then resume. |

docs/guides/web-dashboard.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ The dashboard is available at `http://127.0.0.1:8080` by default.
4646

4747
Browser-driven onboarding chats with the same `internal/onboarding.Service` the CLI uses. Hitting `GET /onboard` allocates a session and redirects to `/onboard/{sessionID}`; the page subscribes to `/onboard/{sessionID}/stream` (SSE) and surfaces conversation events as chat bubbles. When the agent asks a question (`PromptString` / `PromptChoice`), a form is rendered and `POST /onboard/{sessionID}/answer` (form-encoded `answer` + `prompt_id`) feeds the answer back into the blocked Service goroutine. Reload survives via `Last-Event-ID` ring-buffer replay; sessions are in-memory and tied to the `wave webui` process lifetime.
4848

49+
### Proposals (`/proposals`)
50+
51+
Evolution proposal review and approval. Lists proposals generated by `pipeline-evolve` with status (proposed/approved/rejected/superseded), trigger reason, and eval signal summary. Each proposal shows a diff between current and proposed pipeline YAML. Approve or reject via buttons — approving atomically activates the new pipeline version. A rollback button on approved proposals reverts to the prior version.
52+
4953
## Authentication
5054

5155
When binding to localhost (default), no authentication is required. When binding to a non-localhost address, a token is required:
@@ -77,6 +81,11 @@ Clients authenticate via the `Authorization: Bearer <token>` header or the `?tok
7781
| POST | `/api/runs/{id}/resume` | Resume from a step |
7882
| GET | `/api/personas` | List personas |
7983
| GET | `/api/pipelines` | List pipelines |
84+
| GET | `/proposals` | List evolution proposals |
85+
| GET | `/proposals/{name}` | Proposals for a specific pipeline |
86+
| POST | `/proposals/{name}/{id}/approve` | Approve a proposal |
87+
| POST | `/proposals/{name}/{id}/reject` | Reject a proposal |
88+
| POST | `/proposals/{name}/{id}/rollback` | Rollback to prior pipeline version |
8089

8190
## Configuration
8291

docs/reference/cli.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Wave CLI commands for pipeline orchestration.
2828
| `wave retro` | View and manage run retrospectives |
2929
| `wave rewind` | Rewind a run to an earlier checkpoint |
3030
| `wave skills` | Discover, validate, install, and diagnose SKILL.md files |
31+
| `wave proposals` | Manage evolution proposals (list, show, approve, reject, rollback) |
3132
| `wave suggest` | Suggest impactful pipeline runs |
3233
| `wave serve` | Start the web dashboard server |
3334
| `wave migrate` | Database migrations |
@@ -1318,6 +1319,32 @@ All commands support:
13181319

13191320
---
13201321

1322+
## proposals
1323+
1324+
Manage evolution proposals generated by `pipeline-evolve`.
1325+
1326+
```bash
1327+
wave proposals list [--status proposed|approved|rejected|superseded] [--format text|json]
1328+
wave proposals show <id> [--format text|json]
1329+
wave proposals approve <id> [--reason "..."]
1330+
wave proposals reject <id> [--reason "..."]
1331+
```
1332+
1333+
Proposals are created when the evolution loop detects pipeline improvement opportunities (drift signals, retry-rate patterns, eval-score thresholds). Approving a proposal creates a new `pipeline_version` row and activates it — the next `wave run` picks up the evolved YAML.
1334+
1335+
| Subcommand | Description |
1336+
|-----------|-------------|
1337+
| `list` | List proposals, default filter: `--status proposed` |
1338+
| `show <id>` | Display proposal details, reason, and eval signal summary |
1339+
| `approve <id>` | Activate the proposed pipeline version |
1340+
| `reject <id>` | Mark proposal as rejected |
1341+
1342+
### Web UI
1343+
1344+
The `/proposals` page in the web dashboard provides the same approve/reject workflow with diff preview. Proposal rollback (revert to prior version) is available via the web UI rollback button.
1345+
1346+
---
1347+
13211348
## Exit Codes
13221349

13231350
| Code | Meaning |
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Webhooks + WorkSource overlap analysis
2+
3+
Audited overlap between future webhooks (#638) and current worksource/dispatch surface (Phase 2). Conclusion: additive, no refactor needed.
4+
5+
## Outbound webhooks (lifecycle listeners)
6+
7+
Integration point: `internal/pipeline/executor_observers.go:112-116` via existing `HookRunner` / `FireWebhooks()`. Webhooks fire on lifecycle events (run-start, step-complete, run-finish) as additional observers alongside existing emitter, state-store, and contract hooks. No worksource changes required.
8+
9+
## Inbound webhook triggers (future phase)
10+
11+
Payload normalization → `WorkItemRef``MatchBindings()``launchPipelineExecution`. Plug-in point: `internal/webui/handlers_work_dispatch.go:83-91`. New endpoint (`POST /api/webhooks/{forge}`) would parse forge-specific payloads, extract issue/PR identifiers, and feed into the existing dispatch flow. No worksource schema changes needed — `WorkItemRef` already models the required fields.
12+
13+
## No action required
14+
15+
This document is informational. Link from Epic #1565 follow-ups and future #638 epic body.

0 commit comments

Comments
 (0)