operator
δ role in CDD. Owns external gates, routing, and override authority during an active triad cycle.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
δ role in CDD. Owns external gates, routing, and override authority during an active triad cycle.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
A recursive coherence methodology for cnos cell architectures and cell executions. It measures the three-cell system, each cell's CCNF kernel, typed contract/evidence surfaces, cell and wave FSMs, and an actual receipt stream without allowing a strong local layer to average away a broken cross-level projection.
Coherence-Driven Development. Use for substantial changes that require explicit selection, artifact flow, review, release, and post-release closure.
Measurement fixture for State-A execution path validation.
Measurement fixture for State-A execution-mode validation.
Measurement fixture for TSC-compatible methodology validation.
Measurement fixture for TSC-compatible methodology validation.
| name | operator |
| description | δ role in CDD. Owns external gates, routing, and override authority during an active triad cycle. |
| artifact_class | skill |
| kata_surface | embedded |
| governing_question | What does the operator do — and not do — during an active CDD cycle? |
| visibility | internal |
| parent | cdd |
| triggers | ["operator","dispatch","gate","unblock"] |
| scope | role-local |
| inputs | ["γ dispatch prompts","external gate requests from α/β/γ","cycle state (issue, branch, .cdd/unreleased/{N}/, CI)"] |
| outputs | ["routed prompts to agent sessions","external gate executions and confirmations (push on β's behalf, tag, release, deploy, issue filing)","override declarations when needed"] |
| requires | ["active CDD cycle exists","γ has produced dispatch prompts"] |
| calls | ["gamma/SKILL.md","harness/SKILL.md"] |
Coherent δ operation routes work, holds gates, and stays out of the triad's reasoning.
δ is not a fourth triad role — δ is not scored on coherence axes. δ owns what agents cannot: external platform actions, session routing, and override authority. The failure mode is invisible meddling — the operator adjusts implementation, review, or coordination reasoning without declaring an override, and the triad's coherence record no longer matches what actually happened.
First-time operator? Before running the algorithm below, ensure the repository has been activated under CDD. See
cdd/activation/SKILL.mdfor the one-time bootstrap:.cdd/scaffold, version pin, identity convention setup, and the §24 verification command that confirms activation is complete.
harness/SKILL.md §1 for invocation mechanics.cnos.cds/skills/cds/CDS.md §"Coordination surfaces"; prompt format in §5.2 of this file); α fixes findings, appends fix-round to self-coherence.md, exits.cnos.cds/skills/cds/CDS.md §"Coordination surfaces"; prompt format in §5.2 of this file); α writes alpha-closeout.md, commits to main, exits. This step is mandatory when γ requests it. γ cannot complete the closure gate without alpha-closeout.md.gamma-closeout.md exists on main. Disconnect-release mechanics live in release-effector/SKILL.md (Phase 4c of cnos#366, cycle/399); see §3.4 below for the doctrinal frame. δ blocks release completion until CI is green (or operator explicitly accepts a known pre-existing failure per the release-effector recovery runbook).delta/SKILL.md §3; this step is operator-as-coordinator routing the override declaration through the cycle.δ runs one role at a time. This keeps memory pressure low (single process per role), gives δ direct visibility into each session via the observability stream (harness/SKILL.md §2), and isolates failures — if α dies, δ retries α without losing γ or β state.
The canonical identity form ({role}@{project}.cdd.cnos, with the {role}@cdd.cnos elision for the cnos project) and the worktree-aware identity-write discipline live in harness/SKILL.md §3 "Git identity for role actors." δ ensures each role-actor's identity is set per that contract before any commits land on the cycle branch.
δ dispatches γ. γ reads the issue, creates the cycle branch, and returns α/β prompts to δ. γ does not execute dispatch — δ does.
δ dispatches α, waits for completion, then dispatches β. One role at a time.
The invocation shell, observability flags, and permission-mode requirement are codified in harness/SKILL.md §1 (Dispatch invocation) and §2 (Dispatch observability contract). δ honors that contract; this section names the routing discipline.
Once dispatched, the triad runs. The operator does not need to monitor branch diffs, .cdd/unreleased/{N}/ files, or CI runs — γ owns that.
The operator's wake-up signals are:
Between these signals, the operator's correct action is nothing.
Poll the issue and cycle branches for activity using the same transition-only pattern as the triad (cnos.cds/skills/cds/CDS.md §"Coordination surfaces" → §"Polling primitives"). δ polls less frequently than γ — the wake-up signals are coarser (gate requests, not per-commit state). 5-minute interval is sufficient for δ; γ owns the tight loop.
The polling loop mechanics (issue-activity poller, multi-branch poller with reachability re-probe) live in harness/SKILL.md §5 (Polling and wake-up). δ uses those forms under Monitor or equivalent. Canonical cycle branches are origin/cycle/{N} (per cnos.cds/skills/cds/CDS.md §"Development lifecycle" → §"Branch rule", since #287); the pre-#287 'origin/claude/*' glob is warn-only / retrospective per harness §5.3.
δ-as-role boundary policy lives in
delta/SKILL.md. This section retains the gate-policy doctrine thatoperator/SKILL.mdis authoritative for (the gate-action confirmation protocol, the request-vs-observation discipline, the operator-as-coordinator routing). The role-policy that governs whether and when gate actions fire — δ as sole tag-author, gate-fires-on-request-not-observation, the BoundaryDecision enumerants, the override-as-degraded-action doctrine, the verdict-vs-decision distinction — lives indelta/SKILL.md§1 "Outward membrane" and §3 "Override." Dispatch-coordinator mechanics (theclaude -p/cn dispatchinvocation, observability flags, worktree management, identity discipline) live inharness/SKILL.mdper Phase 4b of cnos#366. Release-effector mechanics (the single-command release script invocation, post-push CI polling, the recovery runbook, merged-branch deletes) live inrelease-effector/SKILL.mdper Phase 4c of cnos#366 (cycle/399).
The actions in this table require platform permissions agents may lack. δ-as-role authorises these actions per delta/SKILL.md §1.1; operator-as-coordinator dispatches them on request from γ, β, or α-via-γ:
| Action | Trigger | Who requests |
|---|---|---|
| Pre-merge gate validation | Before authorizing β merge, run scripts/validate-release-gate.sh --mode pre-merge to verify cycle artifacts exist and are well-formed. See cnos.cds/skills/cds/CDS.md §"Artifact contract" → §"Ownership matrix" and gamma/SKILL.md §2.10. | γ |
| Push β-approved merge to main | β runs git merge — δ only pushes when β cannot execute the push directly (env/auth constraint). This is execution of β's integration authority, not δ approval. | β or γ |
| Release-boundary preflight | After β merge + close-outs + γ PRA, δ verifies merge commit, release artifacts, tag/deploy preconditions, and platform readiness. Proceed / request changes / override. See cnos.cds/skills/cds/CDS.md §"Development lifecycle" → §"Step table" Step 9 (δ gate). | γ |
| Tag push + release | After δ preflight confirms and γ closes the cycle. δ is sole tag-author — β does not tag; only δ creates tags per cycle (role-policy: delta/SKILL.md §1.1) | γ |
| Branch delete | Cycle closed, merged branches | γ |
| Issue filing on external repos | Cross-project dependency | γ |
| Force push | Rebase required with env constraints | α via γ |
| Auth refresh | Token/permission expiry | any role via γ |
Gate actions fire when a role requests them, not when δ notices they're needed. Observing that a tag isn't pushed or a branch exists is not a gate trigger — γ's explicit request is. (Role-policy framing: delta/SKILL.md §1.2.)
delta/SKILL.md §3After executing a gate action, confirm to the requesting role that the action completed. (Role-policy framing: delta/SKILL.md §1.3.)
git push origin 3.59.0 — confirmed on remote"After all post-cycle work lands on main (γ's PRA + skill patches, δ's own session patches), δ cuts the release. This is not optional — the release is how δ disconnects the triad's output into a distributable, tagged whole.
Role-policy (the triad's work is not complete until tagged; untagged post-cycle patches on main are an open boundary; δ is sole tag-author; δ blocks release completion until CI is green and owns recovery on red) lives in
delta/SKILL.md§1.1. Mechanics (the single-command release script invocation, post-push CI polling, the recovery runbook, branch deletes) live inrelease-effector/SKILL.md— Phase 4c of cnos#366 (cycle/399) relocated them out of this section.
The triad's work is not complete until it is tagged. Untagged post-cycle patches on main are an open boundary — the triad's output is still entangled with whatever comes next. The tag is the disconnection point.
That skill owns: the single-command release script invocation, the bare-X.Y.Z tag policy (per cnos.cds/skills/cds/CDS.md §"Artifact contract" → §"Location matrix"), post-push CI polling, the CI-red recovery runbook, and merged-cycle-branch deletes. The script-as-only-path discipline (no manual git tag) is its rule, not this section's.
Two gate-rules δ enforces from this surface (the policy-level claims; mechanics in the effector skill):
gamma-closeout.md exists on main.The disconnect tag (§3.4) is git-observable. γ and all future agents can see it. No separate completion signal is needed — the tag appearing on main IS the proof that all gate actions completed and the cycle is disconnected.
For mid-cycle gate actions (per release-effector/SKILL.md — pre-disconnect tag pushes, merged-branch deletes), confirm completion to the requesting role per §3.3. But the disconnect tag itself needs no announcement — it speaks for itself. (Role-policy framing: delta/SKILL.md §1.4.)
Canonical doctrine lives at cnos.handoff/skills/handoff/dispatch/SKILL.md §"δ as inward membrane" (Sub 3 of cnos#404, shipped under cnos#417). That skill owns the 7 implementation-contract axes, δ's review-before-routing duty, the fill-or-escalate paths, the four-surface mesh (γ template / δ enrichment / α constraint / β verification), and the cnos#389/#391/#392/#393 empirical anchors. The role-local realization continues to live at delta/SKILL.md §2 (the inward-membrane half of δ's two-sided framing; outward half at §1; override at §3). operator/SKILL.md retains operator-as-coordinator + harness mechanics only; the doctrine lives at handoff and the role-local pointer lives in delta/SKILL.md.
Relocated to delta/SKILL.md §3 "Override — degraded boundary action" as Phase 4a of cnos#366 (cycle/397). Override is a degraded boundary action (never a form of validity, never rewrites V's ValidationVerdict) per the cnos#367 freeze in RECEIPT-VALIDATION.md §Q4 — that role-doctrine is unified with the δ role-skill in delta/SKILL.md. The dispatch-coordinator side ("when α/β/γ ask for an override decision, where does it land?") fires through the algorithm step 7 above; the doctrine that constrains δ's override decision lives in the role-skill.
For the embedded override kata (Kata B — "α stuck on AC3 due to undocumented API change"), see §9 of this file. The kata exercises operator-as-coordinator's request-handling; the doctrine constraining δ's decision is in delta/SKILL.md §3.
CDD defines two valid dispatch configurations. Choose one before dispatching; record it in gamma-closeout.md.
One dispatched process per role (via the harness — see harness/SKILL.md §1); each has an independent auth context and no shared memory. This is the model described in §1.2 above.
cycle/{N} persists through all fix rounds because each role session checks it out fresh.Use this configuration when the cycle is substantial (see §5.3 escalation criteria).
When the operator is a Claude Code agent (one parent session), α and β are dispatched as sub-agents using the Agent tool rather than via separate harness processes. Sub-agents run with fresh context per invocation and are functionally equivalent to a fresh dispatched session for role-isolation purposes (each sub-agent reasons independently, cannot see the parent's conversation state, and cannot see the other sub-agent's conversation state). However, sub-agents inherit MCP scope and filesystem access from the parent session.
Scope of the collapse. §5.2 collapses δ↔γ only. γ↔α↔β remain structurally separate per the triadic rule (cnos.cds/skills/cds/CDS.md §"Field 6: Actor collapse rule"): γ scaffolds and coordinates in the parent session, α implements in its own sub-agent, β reviews and merges in its own sub-agent. The dyad-plus-coordinator structure is preserved; only the operator (δ) and coordinator (γ) functions fuse into one parent session.
A single sub-agent that performs γ-selection plus α-implementation plus β-review is not §5.2 — it is a triadic-rule violation (cnos.cds/skills/cds/CDS.md §"Field 6: Actor collapse rule"). §5.2 requires three execution contexts: the parent session (γ, also δ), a separate α sub-agent, and a separate β sub-agent. Lumping γ+α+β into one sub-agent breaks role-isolation (α gains access to β's reasoning and vice versa) and is rejected.
Three structural consequences follow:
release/SKILL.md applies — see §3.8 configuration-floor clause.For the general principle governing when role collapses are safe, see ROLES.md §4 (hats-vs-actors: independence as the collapse constraint).
sub-agent return messages are summaries, not full transcripts. The Agent tool returns a summary message from the sub-agent, not a full conversation transcript. δ-as-γ verifies committed artifacts — specifically beta-review.md for β's verdict and self-coherence.md for α's review-readiness signal — rather than relying on the sub-agent's return message. This is the protocol invariant that makes §5.2 valid despite the summary-not-transcript limitation: the artifact β commits is canonical; the return message is informational only.
Harness push restrictions surface as branch-name churn under fix-rounds. Some Claude Code harness environments block updates to existing remote branches (403 on push to a previously-written branch). Under this constraint, a fresh-branch chain (cycle/{N} → cycle/{N}-impl → cycle/{N}-impl-r2 → cycle/{N}-impl-r3 → cycle/{N}-merged → cycle/{N}-final) is an acceptable workaround. Each link in the chain is a valid cycle branch for that fix-round; the final fast-forward into main becomes an external operator action.
Empirical anchors: The cnos-tsc supercycle (cycles 24–26, close-outs at usurobor/tsc:.cdd/releases/{0.5.0,0.6.0,0.7.0}/{24,25,26}/gamma-closeout.md) ran under §5.2 end-to-end; tsc cycle 26 γ-closeout explicitly records "operator (δ = γ in this two-agent configuration)." Tsc cycle #32 (close-out at usurobor/tsc:.cdd/releases/docs/2026-05-09/32/gamma-closeout.md) ran §5.2 and produced a five-link branch trail (cycle/32 → cycle/32-impl → cycle/32-impl-r2 → cycle/32-merged → cycle/32-final) due to harness push restrictions; that trail is the source observation for consequence (3) above.
Reference dependencies: §5.2 dispatch sizing follows cnos.cds/skills/cds/CDS.md §"Field 6: Actor collapse rule" (sequential bounded dispatch model; sub-agent dispatch budget heuristic). The harness push restriction that produces branch-name churn is the same constraint that makes the mechanical pre-merge gate (release/SKILL.md §2.1) an operator-side action when β cannot push directly (cnos.cds/skills/cds/CDS.md §"Development lifecycle" → §"Step table" Step 8 — β review and merge).
Wave-manifest as γ-artifact-of-record (rule 3.11b discoverability under §5.2 wave-mode). When §5.2 is run as a wave — a sequence of related cycles under one wave manifest per §10 Wave Coordination — the canonical γ-artifact-of-record for every sub of the wave is the wave manifest at .cdd/waves/{wave-id}/manifest.md, not a per-sub .cdd/unreleased/{N}/gamma-scaffold.md. The wave manifest carries every γ-artifact duty: γ=δ collapse declaration (or equivalent wave-mode exemption text), pinned file-paths forward-reference contract, standing permissions, timeout budgets, dispatch order, and per-issue scope. β's binding rule 3.11b gate (review/SKILL.md §3.11b "Exemption discoverability") recognizes this configuration provided the sub-issue ↔ wave-manifest discoverability link is auditable: either (a) the sub-issue body cites the wave by id (e.g. names .cdd/waves/{wave-id}/manifest.md or the wave title in a ## Wave / ## Source / ## Related section), OR (b) the master tracking issue named by the wave manifest links to the sub-issue (e.g. GitHub sub-issue relations, wave-tracking comment thread, or an explicit Issues: table in the manifest itself naming the sub). Wave authors (δ-as-wave-planner, γ-as-wave-dispatcher) ensure at least one of (a)/(b) holds before dispatching any sub of the wave. The manifest template at §10.2 includes the ## Issues table; populating that table with sub-issue links discharges path (b) by construction. Derives from: cph cdr-refactor wave 2026-05-18 (master usurobor/cph#11; subs cph#12, #13, #14, #15) — four-of-four sub-uniform §5.2 with zero per-sub gamma-scaffold; three distinct β substantive-read justifications across four subs of the same wave-manifest-as-γ-artifact configuration. Without explicit recognition of this convention at the operator layer (this clause) and the review layer (rule 3.11b clause (ii)) and the alpha pre-review-gate layer (§2.6 row 15), β must re-derive the substantive read per sub and α cannot pre-empt the gate. Wave-iteration consolidation: usurobor/cph:.cdd/iterations/wave-2026-05-18.md Finding F1.
When a sub-agent dispatch is in flight (via the Agent tool), the parent session MUST enter quiescent mode:
Prohibited during sub-agent runs:
git checkout, git switch)git add / git restore --staged (index state must remain stable for the sub-agent's view)git pull / git fetch that updates the current branch HEADPermitted during sub-agent runs:
git status, git log, git diff, file reads via Read tool, web fetches, GitHub MCP queriesgit fetch <branch> (does not update HEAD)/tmp, drafts)When the parent must edit: dispatch a sub-agent to do the edit, or wait for current sub-agents to complete. The parent is the coordinator, not a fourth concurrent writer.
What goes wrong when this is violated: Sub-agent A is running α R1, has read the working tree, is about to git add and git commit. Parent session edits file X concurrently. Sub-agent's git add . picks up parent's edits accidentally. Sub-agent's commit message describes only its intended change but the diff includes parent's edits. Result: corrupted commit, branch must be reset, fix-round required.
Sub-agent parallelism note: Multiple sub-agents launched in parallel (via Agent tool calls in one parent message) have isolated contexts from each other but share the working tree with the parent and with each other. Concurrent file edits by parallel sub-agents are also a corruption risk and should be avoided — multi-sub-agent parallelism is for independent reads, not concurrent writes.
Exception: When the Agent tool runs with filesystem-isolation mode (the sub-agent operates on a copy of the repo, e.g. the Claude Code Agent tool's isolation parameter set to the per-agent-copy mode), parent-session quiescence is unnecessary. Default mode requires quiescence.
Switch from §5.2 to §5.1 (multi-session) when any of the following is true at γ scaffold time:
These are role boundaries. Crossing them without an override declaration breaks the coherence record.
| Phase | Operator action | Wait for |
|---|---|---|
| γ dispatch | Dispatch γ via the harness (see harness/SKILL.md §1); γ creates branch, returns α/β prompts | γ completion |
| α dispatch | Dispatch α via the harness with γ's prompt | α completion (exits after review-readiness) |
| β dispatch | Dispatch β via the harness with γ's prompt | β completion (merge + β close-out) |
| α fix-round re-dispatch | Dispatch α via the harness with fix-round prompt (cnos.cds/skills/cds/CDS.md §"Coordination surfaces"; prompt format in §5.2 of this file) when β returns RC | α completion (exits after fix-round) |
| α close-out re-dispatch | Dispatch α via the harness with close-out prompt (cnos.cds/skills/cds/CDS.md §"Coordination surfaces"; prompt format in §5.2 of this file) when γ requests | α completion (alpha-closeout.md on main) |
| Release prep | γ writes RELEASE.md, moves cycle dirs; δ holds until complete | γ request |
| δ preflight | Verify merge commit, release artifacts, tag preconditions | γ preflight request |
| Closure | Gate: do not tag before gamma-closeout.md exists on main | γ closure declaration (gamma-closeout.md) |
| Disconnect | Cut the release — see release-effector/SKILL.md | γ close-out + δ session patches on main |
| Post-release | Execute deferred operator actions from γ close-out | γ deferred-output list |
| Inter-cycle | Nothing until next γ dispatch | γ next-cycle selection |
When a dispatched session SIGTERMs, hits a timeout, or crashes before committing, δ runs the worktree inspection + decision-tree recovery procedure codified in harness/SKILL.md §6 (Timeout recovery). The procedure is mechanics; the doctrine surfaces that depend on it stay here:
delta/SKILL.md §3 with the standard shape ("Override: operator-identity commit for cycle #N. Reason: …"). The mechanics record entry lives in self-coherence.md §Debt per harness §6.4.release/SKILL.md §3.8, the γ-axis grade reflects the override.cnos.cds/skills/cds/CDS.md §"Field 6: Actor collapse rule" (heuristic constants in this file's §5.2). Record budget/AC count in PRA telemetry (post-release/SKILL.md §4) so the heuristic refines.gamma/SKILL.md §2.10 row 15: gh issue view {N} --json state --jq .state MUST return CLOSED) before declaring the recovered cycle closed — mechanics at harness/SKILL.md §6.6. Recovery changes who runs the closure gate, not whether it runs.γ has dispatched α and β prompts for issue #230. You have two agent sessions available.
Execute the operator role through the full cycle.
release-effector/SKILL.mdα has been implementing for 4 hours. γ reports α is stuck on AC3 due to an undocumented API change. γ's unblock attempt (clarifying the issue) didn't resolve it.
Decide whether to override and, if so, execute the protocol.
Multi-cycle coordination primitive for sequences of related issues.
When δ runs a wave (sequence of related cycles), the artifacts, coordination protocol, and dispatch templates below ensure wave state is durable, auditable, and git-committed — not ephemeral like /tmp files.
Wave dispatch prompt template for δ-as-agent. Parallel to α/β templates in gamma/SKILL.md §2.5. Takes wave manifest as input, produces γ prompts per issue.
# δ Wave Dispatch — {wave-name}
You are δ (operator) for CDD wave coordination.
## Load Order (mandatory)
1. Read `src/packages/cnos.cdd/skills/cdd/operator/SKILL.md` — canonical δ algorithm
2. Read wave manifest at `.cdd/waves/{wave-id}/manifest.md` — issue order, dependencies, permissions
3. Read wave status at `.cdd/waves/{wave-id}/status.md` — current per-issue state
## Context
- **Wave:** {wave-name}
- **Wave ID:** {wave-id}
- **Repo:** {repo-path}
- **Issues in scope:** {issue-list}
## Algorithm
1. **Initialize wave directory** — create `.cdd/waves/{wave-id}/` if it doesn't exist
2. **Update wave status** — write current state to `status.md` (queued → in-progress for next issue)
3. **Select next issue** — per manifest order and dependency constraints
4. **Dispatch γ** — create issue-specific γ prompt using manifest permissions and timeouts
5. **Monitor cycle** — poll `origin/cycle/{N}` and `.cdd/unreleased/{N}/` for completion
6. **Update wave status** — mark cycle completed/failed, update rounds, notes
7. **Repeat or close** — continue with next issue or close wave when complete
## Wave permissions from manifest
- Push to cycle branches: {push-cycles}
- Push merges to main: {push-main}
- Auto-dispatch α fix rounds: {auto-fix} (max {fix-max})
- Tag/release: {tag-release}
- Branch delete after merge: {branch-delete}
## Standing instructions
- Update `.cdd/waves/{wave-id}/status.md` after each cycle completion
- Emit wave status table on operator request
- Close wave when all issues completed/deferred per manifest
- Write `.cdd/waves/{wave-id}/wave-closeout.md` at wave end
Signal completion when wave is closed or blocked.
Canonical wave manifest — .cdd/waves/{wave-id}/manifest.md.
Contains issue list, execution order, dependency constraints, standing permissions, timeout budgets.
# Wave: {wave-title}
**Date:** {YYYY-MM-DD}
**Dispatcher:** {δ-identity}
**Repo:** {repo-path}
## Issues (run in order)
| Order | # | Title | ACs | Type | Dependencies |
|-------|---|-------|-----|------|--------------|
| 1 | {N1} | {title1} | {ac-count1} | {type1} | — |
| 2 | {N2} | {title2} | {ac-count2} | {type2} | #{N1} |
| 3 | {N3} | {title3} | {ac-count3} | {type3} | #{N1}, #{N2} |
## Standing permissions
- Push to cycle branches: {yes|no}
- Push merges to main: {yes|no}
- Auto-dispatch α fix rounds on REQUEST CHANGES: {yes|no} (max {N})
- Tag/release: {yes|no} — write to status.md only
- Branch delete after merge: {yes|no}
## Timeout budgets
- γ: {N}s ({configuration-note})
- α: {N}s
- β: {N}s
## Dependencies
{per-issue dependency description}
Wave status tracking — .cdd/waves/{wave-id}/status.md.
Per-issue status table updated by δ after each cycle closes.
# Wave Status: {wave-title}
**Last updated:** {timestamp} by δ
| # | Issue | Status | Rounds | Branch | Tag | Notes |
|---|-------|--------|--------|--------|-----|-------|
| {N1} | {title1} | {status1} | {rounds1} | {branch-state1} | {tag-state1} | {notes1} |
| {N2} | {title2} | {status2} | {rounds2} | {branch-state2} | {tag-state2} | {notes2} |
## Status values
- `⬜ queued` — not started
- `🔄 in-progress` — γ/α/β active
- `✅ completed` — merged to main
- `❌ failed` — cycle abandoned
- `⏸️ blocked` — waiting on dependency
- `⭕ deferred` — explicitly moved out of wave
Wave completion conditions and closure procedure.
Wave is closed when:
Closure algorithm:
Wave status table emitted by δ. Parallel to γ's TLDR (§2.11) but wave-scoped.
| # | Issue | Status | Rounds | Notes |
|---|---|---|---|---|
| {N} | {title} | {status} | {round-count} | {notes} |
Status icons:
⬜ queued — not started🔄 in-progress — cycle active✅ completed — merged, tagged❌ failed — cycle abandoned⏸️ blocked — dependency wait⭕ deferred — moved out of waveEmit frequency:
Three-stage lifecycle for wave iteration findings.
Wave iteration files (like .cdd/iterations/wave-2026-05-12.md) track cross-cycle findings and their dispositions through wave execution and into release.
Stage 1: Per-issue close
filed #{N}, patched {SHA}, deferred, or no-actionStage 2: Wave close
.cdd/waves/{wave-id}/iteration.mdStage 3: Release boundary
File movement example:
.cdd/iterations/wave-2026-05-12.md
↓ (wave closes)
.cdd/waves/hardening-2026-05-12/iteration.md
↓ (release time)
.cdd/releases/3.60.0/post-release-assessment.md (references iteration findings)