Repository navigation
Conversation
|
Security source review HOLD on exact dc06274: response completeness is not closed against the producer contract. The parser accepts a first terminal page whose echoed counts say total=5 but whose runs/returned_count contain only 4 entries and has_more=false. A focused causal control that removes one run from the otherwise-valid fixture and changes returned_count to 4 exits successfully and renders the truncated result. That can hide an open run while JSON/JSONL/human output still reports success. For a first page (no cursor), a terminal page must contain the complete selected cohort: counts.total without a state filter, or that state count with a filter. Independently, has_more=true must return exactly the requested limit: the Server contract fetches limit+1 and truncates to limit when a continuation exists. Later terminal cursor pages should remain opaque; do not decode cursors or infer prior-page cardinality. Please add causal controls for both incomplete first-terminal and undersized-continuation responses. Namespace/capability binding, exact echoed query checks, classification refusal, redirect refusal, and unknown-state presentation otherwise look sound in this bounded source review. No runtime, publication, or release disposition is implied. |
|
|
Security re-review PASS for the bounded pagination correction at exact This closes my incomplete-first-page finding:
The existing checks still bind The direct successor is limited to 12 production lines and the focused causal controls; |



Open runs can still depend on a version branch that an operator intends to remove. This draft adds
dw workflow:version-usage <workflow-type> <change-id> --min-version=N, with namespace validation, all-state counts, a bounded page of runs, explicit unknown reasons, help and JSON/JSONL output.The command uses relative
GET /workflow-version-usageand requires literalcapabilities.workflow_version_usage=true. It sends one usage GET and forwards opaque cursors without interpreting them. A first terminal page must contain the complete selected cohort; a continuation must fill the requested limit. Later terminal cursor pages may be empty while retaining all-state counts. Malformed responses, unavailable capability, auth/storage failures, redirects and lost replies remain failures.Validation: all 14 actual-CLI/loopback tests pass locally under Rust 1.99, covering scope/query encoding, signed bounds, validation before HTTP, unknown reasons, response completeness, transport errors and offline help. In separate build targets, the predecessor source fails exactly the three new completeness controls (11 pass/3 fail), while the corrected source passes all 14. Current hosted Rust 1.86 checks remain required. The existing 25 parity-harness controls passed at the previous source checkpoint; the response-only correction leaves those surfaces unchanged.
The producer endpoint is not published yet. Actual native Server acceptance remains the final integration gate before this leaves draft; no release or shared #220 closure is claimed. The self-contained native dev Server in #160 remains the immediate delivery priority. CLI #157 stays set aside.
Refs durable-workflow/.github#220, durable-workflow/workflow#1146, durable-workflow/server#1221.