---
type: cdd-iteration
scope: wave-level (cross-cycle)
date: 2026-05-12
source: "#286 wave + tsc #30 dispatch session"
---

# CDD Iteration — Wave-Level Findings (2026-05-12)

## Summary

First autonomous wave dispatch (δ-as-agent) surfaced five protocol-level findings about multi-cycle coordination, artifact durability, and δ dispatchability.

## Findings

| # | Axis | Severity | Description | Evidence | Disposition |
|---|------|----------|-------------|----------|-------------|
| 1 | cdd-protocol-gap | B | Wave artifacts live in /tmp — not durable, not auditable | δ wave prompt wrote status/prompts to /tmp; lost on reboot; not committed to repo | MCA: wave artifacts belong in `.cdd/waves/` (status, prompts, inter-cycle state). Committed and auditable like all CDD artifacts. |
| 2 | cdd-protocol-gap | B | δ is not a dispatchable role | operator/SKILL.md describes δ algorithm but no dispatch prompt template exists; δ cannot be run via `claude -p` without ad-hoc prompt writing | MCA: add δ dispatch prompt template to operator/SKILL.md §1 (parallel to α/β templates in γ/SKILL.md). δ prompt takes a wave manifest (issue list + standing permissions). |
| 3 | cdd-protocol-gap | B | No wave-level coordination surface defined | CDD defines single-cycle artifacts (.cdd/unreleased/{N}/) but nothing for multi-cycle waves — no manifest, no inter-cycle status, no wave closure | MCA: define `.cdd/waves/{wave-id}/` structure: manifest.md (issue list + order + dependencies), status.md (per-issue status table), wave-closeout.md. |
| 4 | cdd-skill-gap | C | γ SIGTERM budget insufficient for §5.2 full-cycle runs | tsc #30 γ ran full cycle autonomously (scaffold → α → β → merge → close-outs → PRA → release-prep) in §5.2 single-session; SIGTERM'd at 900s during release-prep | MCA: §5.2 full-cycle γ sessions need ≥1200s budget. 900s covers γ-as-prompt-drafter (§5.1) but not γ-as-autonomous-coordinator running sub-agents. |
| 5 | cdd-protocol-gap | C | release.sh interactive prompt blocks non-interactive dispatch | tsc release.sh uses `read -r -p` for confirmation; blocks when run from claude -p Bash tool | Observation: release scripts in CDD tenants should support `--yes` or `RELEASE_CONFIRM=y` env var for non-interactive dispatch. Not an MCA — tenant-specific. |

## Protocol health signal

The wave pattern works. δ-as-agent is viable — tsc #30 proved γ can run full cycles autonomously via §5.2, and the cnos δ wave prompt successfully dispatched. But the infrastructure assumes single-cycle scope: artifacts, timeouts, and coordination surfaces are all cycle-scoped. Wave-level coordination is ad-hoc.

The three B-severity findings (#1, #2, #3) are the structural gap: CDD has no wave primitive. Single cycles are well-defined; sequences of cycles are stitched together by operator memory and /tmp files. This is the same class of gap #286 closed for α/β encapsulation — now at the δ/wave level.

## Disposition

| # | Action |
|---|--------|
| 1 | File issue: `.cdd/waves/` artifact structure |
| 2 | File issue: δ dispatch prompt template in operator/SKILL.md |
| 3 | File issue: wave manifest + status + closure protocol |
| 4 | Patch operator/SKILL.md §5.2 timeout guidance: 1200s for full-cycle γ |
| 5 | No action — tenant-specific; note in activation skill §11 as recommendation |

Issues #1–#3 may consolidate into a single "wave primitive" issue.

## Addendum — mid-wave findings

| # | Axis | Severity | Description | Evidence | Disposition |
|---|------|----------|-------------|----------|-------------|
| 6 | cdd-protocol-gap | B | Post-merge CI failures not caught by β or γ | #295 merged with unused Go imports; CI red for 6+ commits. β approved without CI green (no Go in sandbox). γ PRA didn't poll CI. | MCA: β pre-merge gate should require CI green status check via `gh run list`. γ PRA should poll CI after merge. |
| 7 | cdd-skill-gap | C | Manual intervention in running wave creates merge conflicts | δ manually edited files in a repo with a running wave session sharing the same working tree; committed to wrong branch twice, needed 4 fix commits for what should have been 1 | MCA: never manually edit a repo with a running wave. Dispatch a fix-round agent or pause the wave first. Document in operator/SKILL.md §wave dispatch. |
