[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF7SEDJ46XQAHQNQMS99C5":3,"skill-same:01M6CF7SEDJ46XQAHQNQMS99C5":118},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":73,"commitSha":74,"skillDirectory":75,"forksCount":76,"repositoryHtmlUrl":77,"repositoryHomepageUrl":6,"ownerHtmlUrl":78,"ownerBlogUrl":6,"ownerDescription":79,"updatedAt":80,"install":81,"resources":94},"01M6CF7SEDJ46XQAHQNQMS99C5","artifact-channel",null,"Intra-cycle artifact-channel rules. Use when a role writes a per-cycle artifact (gamma-scaffold, self-coherence, beta-review, alpha-closeout, beta-closeout, gamma-closeout, cdd-iteration, gamma-clarification) to .cdd\u002Funreleased\u002F{N}\u002F on the cycle branch, when one role reads a predecessor role's artifact as input, or when γ moves the cycle directory at release.","usurobor\u002Fcnos","usurobor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F182342826?v=4","01M6CEXJCRMYD8HB2315FGB1Q8","Peter Lisovin","01M6CEXJH2RW04GQ2SNXY40F5S",9,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Fartifact-channel\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"artifact channel","channel","branch","gamma","releases","dispatch","use","write","closeout","repo","directory","work","Rules","advance","how","beta","alpha","release","merge","review","2026-11-10 10:12:30",false,"---\nname: artifact-channel\ndescription: Intra-cycle artifact-channel rules. Use when a role writes a per-cycle artifact (gamma-scaffold, self-coherence, beta-review, alpha-closeout, beta-closeout, gamma-closeout, cdd-iteration, gamma-clarification) to .cdd\u002Funreleased\u002F{N}\u002F on the cycle branch, when one role reads a predecessor role's artifact as input, or when γ moves the cycle directory at release.\nartifact_class: skill\nkata_surface: embedded\ngoverning_question: How do α, β, and γ hand work to each other inside a single cycle — using a sequential per-role-owned write channel over .cdd\u002Funreleased\u002F{N}\u002F — without inventing the channel rules per cycle and without leaking matter back into the channel after merge?\nvisibility: public\nparent: handoff\ntriggers:\n  - artifact-channel\n  - unreleased\n  - per-role artifact\n  - sequential handoff\n  - cycle directory\n  - frozen snapshot\n  - release-time move\nscope: task-local\ninputs:\n  - active CDD-class cycle on origin\u002Fcycle\u002F{N}\n  - active role (α \u002F β \u002F γ; ε at close-out)\n  - predecessor-role artifact(s) when applicable\noutputs:\n  - per-role artifact written at .cdd\u002Funreleased\u002F{N}\u002F{filename}.md\n  - SHA advance on origin\u002Fcycle\u002F{N} (the handoff signal to the successor role)\n  - \"at release: cycle directory moved from .cdd\u002Funreleased\u002F{N}\u002F to .cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F (frozen snapshot)\"\nrequires:\n  - cycle\u002F{N} exists on origin\n  - the role's predecessor (if any) has signaled completion via the channel (see §2.3 Sequential rule)\ncalls:\n  - HANDOFF.md\n  - mid-flight\u002FSKILL.md\n  - dispatch\u002FSKILL.md\n  - cross-repo\u002FSKILL.md\n---\n\n# Artifact Channel — intra-cycle α → β → γ sequential handoff\n\n## Core principle\n\n**`.cdd\u002Funreleased\u002F{N}\u002F` on the cycle branch is the sequential intra-cycle handoff substrate. Each per-cycle artifact has exactly one owning role at write time; successor roles read but do not modify predecessor artifacts (except by their own append, e.g. α's fix-round sections after β's RC verdict); the channel directory freezes on merge and moves to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` at release. Chat does not transit the channel; the artifact channel does.**\n\nThe artifact channel is the wire format by which α, β, and γ hand work to each other within a single cycle. Each role writes its artifacts at canonical paths under `.cdd\u002Funreleased\u002F{N}\u002F`; the SHA advance on `origin\u002Fcycle\u002F{N}` is the handoff signal to the polling successor role. The substrate is filesystem + git — no chat, no separate coordination database, no out-of-band side channel. The cycle directory carries the cycle's complete record from γ-scaffold to γ-closeout; at release-time, γ moves it from `.cdd\u002Funreleased\u002F{N}\u002F` to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` per the frozen-snapshot rule, where it stays as the immutable post-release record.\n\nThe failure mode is **channel-substrate drift** — a role writes a coordination signal to chat instead of to the channel; a role writes to a sibling role's artifact and obscures attribution; the cycle directory is mutated after merge (e.g. an α-closeout edit dated after release); the directory is left at `.cdd\u002Funreleased\u002F{N}\u002F` past release and loses its version association. The result is a cycle whose record is incomplete, whose role attribution is ambiguous, and whose post-release assessment cannot reconstruct what happened from the cycle directory alone.\n\nThis skill is the **canonical surface** for the wire-format invariants: the channel directory shape, the per-role write ownership pattern, the sequential α→β→γ flow, the frozen-snapshot rule on merge, and the release-time directory move. Consumer protocol packages bind the pattern to their specific artifact instantiation; for CDS-class cycles, the canonical *per-artifact* contract (filenames, content sections, ownership rows, verification gates, ordered 13-stage flow) lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"`. This skill governs the channel; cnos.cds governs the per-artifact contents.\n\n## Authority\n\n- This skill (in `cnos.handoff`) is the only canonical home for the channel-shape wire-format invariants: the channel directory path pattern (`.cdd\u002Funreleased\u002F{N}\u002F`), the per-role write ownership pattern (α writes α artifacts; β writes β artifacts; γ writes γ artifacts), the sequential α→β→γ flow (each role's artifact is the successor role's input), the frozen-snapshot rule (post-merge immutability of the channel directory), the release-time directory move (cycle dir migrates to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` before tag). If another skill or doctrine surface carries the same wire-format claims, this skill governs.\n- The consumer protocol packages govern the per-artifact instantiation. For CDS-class cycles, the canonical home is `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"` — specifically the Location matrix (canonical filename per artifact), Ownership matrix (per-role artifact assignment with verification gates), and Ordered flow (the 13-stage flow: design → contract → plan → tests → code → docs → self-coherence → review → gate → release → observe → assess → close). CDR-class cycles bind differently; future c-d-X may bind differently still. The wire-format pattern is what this skill owns; the per-consumer instantiation is what cds\u002Fcdr\u002Fc-d-X own.\n- The artifacts on this channel are also the substrate for sibling sub-skills' wire formats. `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md` (gamma-clarification.md \u002F gamma-coordination.md) and `cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md` (cdd-iteration.md aggregator) live on this channel. Their authoring\u002Freader\u002Fcadence rules are theirs; the channel-shape they live on is this skill's.\n\n## Scope\n\nIn scope:\n\n- The channel directory path pattern (`.cdd\u002Funreleased\u002F{N}\u002F`); the cycle-branch substrate (`origin\u002Fcycle\u002F{N}`); the SHA-advance handoff signal.\n- The per-role write ownership pattern (which role writes which class of artifact; what successor roles may and may not do to predecessor artifacts).\n- The sequential rule (α before β; β before γ; γ-scaffold exception at cycle-start).\n- The frozen-snapshot rule on merge (post-merge immutability of the channel directory; the release-time directory move from `.cdd\u002Funreleased\u002F{N}\u002F` to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F`).\n- The cross-cycle aggregation pointer (per-cycle `cdd-iteration.md` → `.cdd\u002Fiterations\u002FINDEX.md`; aggregator rules canonicalize in Sub 5 \u002F receipt-stream\u002FSKILL.md).\n- Empirical anchors (every cycle since the channel was established in pre-#364 form).\n\nOut of scope:\n\n- The per-artifact filenames and content sections. Those live in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Location matrix\"` (CDS-specific filename set: `self-coherence.md`, `alpha-closeout.md`, `beta-review.md`, `beta-closeout.md`, `gamma-closeout.md`, `gamma-scaffold.md`, `cdd-iteration.md`, `RELEASE.md`, version-snapshot directory, PRA path, cross-repo trace dir). CDR and future c-d-X bind differently.\n- The per-artifact role ownership table (who writes which file, when, what the verification gate is, what missing means). Lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Ownership matrix\"`.\n- The CDS-specific 13-stage Ordered flow. Lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Ordered flow\"`. CDR has a different flow; future c-d-X may have other flows.\n- The mid-flight rescue mechanism (`gamma-clarification.md` write\u002Fread protocol; cache-bust semantics). Lives in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`. This skill owns the channel; mid-flight owns the rescue protocol that lives on the channel.\n- The cross-cycle aggregator content (per-finding shape; INDEX.md row format; cross-repo trace bundle). Lives in `cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md` (Sub 5 of cnos#404; landed via cnos#419). This skill owns the per-cycle channel; receipt-stream owns the cross-cycle aggregation.\n- The harness substrate (polling primitives, Monitor wrapping, reachability re-probe). Lives in `cnos.cdd\u002Fskills\u002Fcdd\u002Fharness\u002FSKILL.md`. This skill assumes a polling primitive emits on cycle-branch SHA transitions.\n- Tooling that auto-verifies channel discipline (`cn cdd verify` channel-integrity checks). Deferred; doctrine first, tooling later.\n\n---\n\n## 1. Define\n\n### 1.1. What the channel is\n\nThe channel is **one directory per cycle**: `.cdd\u002Funreleased\u002F{N}\u002F` on `origin\u002Fcycle\u002F{N}`, where `{N}` is the cycle's issue number. Inside the directory, files are role-distinguished by **filename**, not by sub-directory. The directory carries the cycle's complete record from γ-scaffold (at cycle-start) through γ-closeout (at close); at release-time, γ moves the directory to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` per the frozen-snapshot rule (§2.4).\n\nThe substrate is filesystem + git. The handoff signal between roles is the SHA advance on `origin\u002Fcycle\u002F{N}` — the polling successor role's polling primitive (per `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Coordination surfaces\" → \"Polling primitives\"`) emits on the SHA transition and the successor's next intake iteration reads the predecessor's artifact live. No chat, no out-of-band coordination database, no separate inbox.\n\n### 1.2. What the channel is not\n\nThe channel is **not**:\n\n- a chat-coordination substitute. Chat does not transit the channel; if a load-bearing fact is communicated only in chat, it is invisible to polling roles and to the post-release record.\n- a shared-write directory. Each artifact has one owning role at write time. Sibling roles read but do not modify (except by their own append, e.g. α's fix-round sections after β's RC verdict — α appends to α's own `self-coherence.md`, never to β's `beta-review.md`).\n- a multi-cycle channel. One directory = one cycle. Cross-cycle aggregation runs through `.cdd\u002Fiterations\u002FINDEX.md` per the receipt-stream sub-skill (Sub 5 of cnos#404; landed via cnos#419).\n- mutable post-merge. Once the cycle merges, the channel directory freezes. Subsequent edits to predecessor artifacts are reviewable as protocol violations — corrections go in a new cycle's close-out or in the post-release assessment.\n- the canonical post-release snapshot. The frozen post-release snapshot lives under `docs\u002F{tier}\u002F{bundle}\u002F{X.Y.Z}\u002F` per CDS Location matrix; the channel directory at `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` is the cycle's role-local close-out evidence storage.\n\n### 1.3. Failure mode\n\nThe channel fails through **channel-substrate drift**:\n\n- A role writes a coordination signal to chat instead of to the channel — the signal is invisible to polling sessions and to the post-release assessment.\n- A role writes to a sibling role's artifact — attribution becomes ambiguous; β's review verdict and α's self-coherence are no longer distinguishable.\n- The cycle directory is mutated after merge — predecessor artifacts are silently edited to fit the post-merge narrative; the cycle's record is no longer trustworthy.\n- The directory is left at `.cdd\u002Funreleased\u002F{N}\u002F` past release — it loses its version association; future cycles operating on the same issue number (re-opens, follow-ons) collide with the stale directory.\n- A coordination note lives only in the GitHub issue comments or in a chat backlog — the artifact channel is incomplete and the post-release reconstruction is impossible.\n\nThe protocol closes each failure mode by naming the channel-shape invariants explicitly and binding role-write ownership, sequential flow, and frozen-snapshot rules to the channel directory.\n\n---\n\n## 2. Unfold\n\n### 2.1. Channel directory\n\nThe canonical channel path is:\n\n```text\n.cdd\u002Funreleased\u002F{N}\u002F\n```\n\non `origin\u002Fcycle\u002F{N}`, where `{N}` is the cycle's GitHub issue number. The directory exists for the duration of the cycle — from γ-scaffold (at cycle-start) through release-time move (at release). The path is consumer-agnostic (CDS, CDR, future c-d-X all use the same channel-directory shape); only the *filenames* inside vary per consumer protocol.\n\nThe cycle-branch substrate is `origin\u002Fcycle\u002F{N}` — a single named branch per cycle, created by γ from `origin\u002Fmain` at cycle-start per `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Development lifecycle\" → \"Branch rule\"`. The channel directory lives on the cycle branch (not on main) until the release-time move; polling main for in-flight cycle dirs is silent.\n\nThe handoff signal between roles is the **SHA advance on `origin\u002Fcycle\u002F{N}`**. Each commit to the cycle branch advances the SHA; polling primitives detect the transition and wake successor roles. The signal is git-native — no separate notification channel, no webhook, no inbox. The SHA advance is the only event the successor role needs.\n\n### 2.2. Per-role write ownership\n\nEvery per-cycle artifact has exactly one owning role at write time. The pattern (consumer-protocol-agnostic):\n\n| Owner role | Artifact class | Pattern |\n|---|---|---|\n| γ | scaffold | Cycle-start artifact; carries γ's selection decision and the dispatch surface set. One per cycle. |\n| α | role-local primary branch artifact | The role's review-readiness signal; gap \u002F mode \u002F ACs \u002F trace \u002F fix-rounds. One per cycle. |\n| α | role close-out | The role's post-merge findings record. One per cycle. |\n| β | role-local review record | The review CLP rounds + verdicts. One per cycle; one section per round. |\n| β | role close-out | The role's post-review close-out + release evidence. One per cycle. |\n| γ | role close-out | The cycle's closure declaration + triage record. One per cycle. |\n| γ | cross-cycle receipt | The per-cycle iteration artifact (when `protocol_gap_count > 0`; courtesy stub permitted when count is 0). Feeds the cross-cycle aggregator. |\n| γ | mid-flight rescue | The clarification artifact (per `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`). One file per cycle (appended to per event). |\n\n**Read access is universal; write access is role-local.** α reads γ's scaffold (it is α's intake brief); β reads α's primary branch artifact (it is β's review subject); γ reads both close-outs (they are γ's triage inputs). The reader does not modify the predecessor's artifact — the reader makes its observations and writes its own role-local artifact.\n\nThe one structured exception is **α's fix-round append after β's RC verdict.** When β returns RC, α appends a fix-round section to its *own* primary branch artifact (`self-coherence.md` for CDS-class) naming each finding addressed, the commit SHA that addressed it, and any reasoning β needs to re-verify. α does not edit β's review record; β iterates a new round in `beta-review.md`. The fix-round pattern keeps role attribution intact.\n\nThe consumer-specific *filename* set lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Location matrix\"` (CDS-class: `gamma-scaffold.md`, `self-coherence.md`, `alpha-closeout.md`, `beta-review.md`, `beta-closeout.md`, `gamma-closeout.md`, `cdd-iteration.md`, plus the cycle-orthogonal `RELEASE.md` and PRA at canonical version-directory paths). CDR has its own filename set; future c-d-X protocols bind their own. The wire-format pattern (per-role ownership, sequential flow) is what this skill owns; the per-protocol filename set is consumer-side.\n\n### 2.3. Sequential rule\n\nThe intra-cycle flow is **sequential α → β → γ** with one cycle-start exception:\n\n1. **γ-scaffold (cycle-start exception)** — γ writes the scaffold artifact *before* α is dispatched. This is the only cycle-start γ write; it is the binding gate per `cnos.cdd\u002Fskills\u002Fcdd\u002Fgamma\u002FSKILL.md §2.5 → \"Pre-dispatch γ scaffold check\"`. The scaffold is α's input.\n2. **α phase** — α writes its primary branch artifact incrementally on the cycle branch; the review-readiness section is the last section appended. The α phase ends when α signals review-readiness via the review-readiness section's append commit. α's primary artifact is β's input.\n3. **β phase** — β reads α's primary artifact + the diff + the issue body; runs the review CLP; writes the review record incrementally (one section per round). On A verdict, β merges. On RC, α appends a fix-round; β re-reviews. The β phase ends at merge (for non-RC paths) or at A after RC rounds.\n4. **Re-dispatched α (close-out)** — after β merge, α is re-dispatched (per `cnos.cdd\u002Fskills\u002Fcdd\u002Foperator\u002FSKILL.md` re-dispatch protocol) and writes its close-out artifact. α exits.\n5. **β close-out** — β writes its close-out artifact (release evidence + close-out findings) in the same β session as the merge (per CDS Field 6 collapse). β exits.\n6. **γ phase** — γ verifies both close-outs are on main; writes the per-cycle receipt artifact (when applicable); writes the cycle's closure declaration; moves the cycle directory at release-time per §2.4.\n\nThe successor role's intake **requires** the predecessor role's signaled completion. β does not begin review until α has signaled review-readiness (in α's primary artifact). γ does not begin triage until both close-outs are on main. Each role's polling primitive emits when the predecessor's relevant artifact reaches the expected state; the role's intake iteration reads the artifact live.\n\nThe two exceptions to the strictly-sequential pattern:\n\n- **The γ-scaffold cycle-start write** (§2.3 step 1) — γ writes before α exists in the cycle. Not strictly sequential because α has not yet written anything; γ-scaffold is the cycle's initial state.\n- **Mid-flight γ writes** (`gamma-clarification.md` \u002F `gamma-coordination.md`) — γ writes mid-cycle while α and\u002For β are in-flight. This is the rescue channel (per `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`); the channel is the substrate but the sequence is not strict α→β→γ. The clarification is bounded recovery — not routine cadence — and its writes do not violate the sequential rule because they are sibling-channel writes, not predecessor-overwrites.\n\n### 2.4. Frozen-snapshot rule (release-time move)\n\nWhen the cycle merges, the channel directory **freezes** — no further writes to predecessor artifacts. The frozen rule has two phases:\n\n#### 2.4.1. Post-merge, pre-release (in-version state)\n\nBetween β merge and γ tag\u002Frelease, the channel directory at `.cdd\u002Funreleased\u002F{N}\u002F` is on `origin\u002Fmain` (β merged it). γ writes close-out and (when applicable) receipt artifacts in this window; these are the *only* permitted writes — and they are γ-authored writes to γ-owned files (gamma-closeout.md, cdd-iteration.md, mid-flight files when a rescue event fires post-merge), not edits to predecessor artifacts.\n\n#### 2.4.2. Release-time move\n\nBefore γ requests the tag from δ, γ moves the channel directory:\n\n```text\n.cdd\u002Funreleased\u002F{N}\u002F  →  .cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F\n```\n\nThe move is part of the release commit on main (per `cnos.cdd\u002Fskills\u002Fcdd\u002Frelease\u002FSKILL.md §2.5a` and `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Location matrix\"`). After the move:\n\n- `.cdd\u002Funreleased\u002F{N}\u002F` no longer exists on main (the directory has moved).\n- `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` carries the cycle's complete record, version-anchored.\n- Multiple cycle directories may live under one release directory when several issues ship in the same release.\n\nAfter the release commit, the directory is **immutable**. Subsequent edits to files inside `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` are reviewable as protocol violations — corrections go in a new cycle's close-out, in the post-release assessment, or in a documentation-only release with its own version-snapshot. Doc-only releases use `.cdd\u002Freleases\u002Fdocs\u002F{ISO-date}\u002F{N}\u002F` as the destination directory shape per CDS Location matrix.\n\nThe release-time move is the **wire-format invariant**; the per-consumer realization (which release script runs the move; how `cn cdd verify` checks the move happened; how the legacy aggregate paths are detected) is consumer-side at cnos.cds + cnos.cdd\u002Frelease skills.\n\n### 2.5. Cross-cycle aggregation\n\nThe channel is per-cycle; cross-cycle aggregation runs through one persistent aggregator file at `.cdd\u002Fiterations\u002FINDEX.md` at the repo root. Each cycle that produces a `cdd-iteration.md` (per the cadence rule — required when `protocol_gap_count > 0`; courtesy stub permitted when count is 0 per cnos#401) updates INDEX.md with one row naming the cycle \u002F issue \u002F date \u002F findings \u002F patches \u002F MCAs \u002F no-patch \u002F path.\n\nThe aggregator's row format, the per-finding shape inside `cdd-iteration.md`, and the cross-repo trace bundle (when a finding's disposition is `patch-landed` with `Cross-repo` target) are owned by **Sub 5 of cnos#404** — the receipt-stream sub-skill ([`cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md`](..\u002Freceipt-stream\u002FSKILL.md); landed via cnos#419). This skill names the aggregator's *existence* and *channel-relationship* (per-cycle artifact on this channel feeds the cross-cycle aggregator); the aggregation rules themselves are receipt-stream's.\n\n---\n\n## 3. Rules\n\n### 3.1. Write to the channel, not to chat\n\n- ❌ Communicate a load-bearing cycle decision in chat alone — invisible to polling roles and to the post-release record.\n- ✅ Every load-bearing decision lives in the role's own channel artifact; chat is communication, not the cycle's record.\n\n### 3.2. Per-role write ownership; no sibling overwrites\n\n- ❌ β edits α's primary branch artifact to \"clarify\" what α should have written.\n- ❌ α edits β's review record to address findings inline.\n- ✅ Each role writes its own role-local artifacts; α's fix-round append after β's RC verdict goes in α's *own* primary artifact, not β's review record.\n\n### 3.3. Predecessor's signaled completion is the successor's intake gate\n\n- ❌ β begins review before α has signaled review-readiness in α's primary artifact.\n- ❌ γ begins triage before both close-outs are on main.\n- ✅ Each role's intake polls for the predecessor's signaled completion (review-readiness section append; close-out commit on main); the successor's intake iteration reads the predecessor's artifact live.\n\n### 3.4. Channel directory freezes on merge\n\n- ❌ Edit a predecessor's artifact post-merge to fit the post-merge narrative.\n- ❌ Add a \"clarification\" to α's self-coherence.md after β has approved and merged.\n- ✅ Post-merge writes are γ-authored writes to γ-owned files (close-out, iteration receipt, mid-flight files when a rescue event fires post-merge). Predecessor artifacts are immutable.\n\n### 3.5. Release-time move is part of the release commit\n\n- ❌ Leave the cycle directory at `.cdd\u002Funreleased\u002F{N}\u002F` after release; future cycles collide on the same issue number.\n- ❌ Move the directory in a separate post-release commit, after the tag fires.\n- ✅ γ moves `.cdd\u002Funreleased\u002F{N}\u002F` → `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` in the same release commit as `RELEASE.md`; the move is on main before γ requests the tag from δ.\n\n### 3.6. Post-release, the directory is immutable\n\n- ❌ Edit a file inside `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` to correct a typo discovered later; it is the cycle's frozen post-release record.\n- ✅ Corrections go in the post-release assessment, in a new cycle's close-out, or in a doc-only release with its own version-snapshot under `.cdd\u002Freleases\u002Fdocs\u002F{ISO-date}\u002F{N}\u002F`.\n\n### 3.7. Cross-reference, do not duplicate\n\nConsumer protocol skills cite this skill for the channel wire-format invariants. If you find channel-shape doctrine in `cnos.cdd\u002Fskills\u002Fcdd\u002F`, `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md`, or elsewhere that contradicts this skill, this skill governs and the other surface is patched to reference this one. The per-artifact contract (which files exist; what each file contains; who owns each row) stays at the consumer protocol's home (cds for software cycles; cdr for research cycles); the channel-shape lives here.\n\n---\n\n## 4. Empirical anchors\n\nEvery cycle since the channel was established (pre-#364) uses this channel. The channel is the default substrate — no cycle ships without it. Representative anchors:\n\n- **The `.cdd\u002Funreleased\u002F{N}\u002F` → `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` directory move pattern.** Standardized in pre-#283 form; refined through cnos#283–#287 (cycle-branch naming convention) and cnos#364 (per-role artifact-file conventions). Every release commit since cnos#364 carries the move as part of the release commit.\n- **Per-role write ownership.** Crystallized through cnos#287 (γ-owned branch pre-flight) and cnos#369 (the gamma-scaffold binding gate; β's role-side enforcement via review\u002FSKILL.md rule 3.11b). The pattern is empirically stable: across the cnos#388–#412 wave, no cycle showed cross-role artifact mutation.\n- **Sequential α→β→γ.** The pattern is empirically stable: across the cnos#388–#412 wave, every cycle followed the sequential pattern (with the γ-scaffold cycle-start exception). cnos#369 was the empirical anchor for the binding gate that makes the pattern protocol-enforced.\n- **Mid-flight on-channel writes.** The cnos#391 rescue cycle (anchored in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`) is the canonical demonstration that the channel handles non-sequential γ writes via sibling-channel files (`gamma-clarification.md`); the sequential rule is not violated.\n- **#406–#412 wave** — the post-codification cycles that exercised the channel in steady-state. Every cycle in the wave produced a complete `.cdd\u002Funreleased\u002F{N}\u002F` directory and a clean release-time move; the channel's wire-format is operationally stable.\n\n---\n\n## 5. Verify\n\n### 5.1. Channel directory check (per cycle, at scaffold time)\n\n- Does `.cdd\u002Funreleased\u002F{N}\u002F` exist on `origin\u002Fcycle\u002F{N}` after γ-scaffold commit?\n- Is `.cdd\u002Funreleased\u002F{N}\u002Fgamma-scaffold.md` present and γ-authored?\n\n### 5.2. Per-role write ownership check (at review and close-out times)\n\n- Are α-owned artifacts (e.g. `self-coherence.md`, `alpha-closeout.md` for CDS-class) authored only by α-attributed commits?\n- Are β-owned artifacts (`beta-review.md`, `beta-closeout.md`) authored only by β-attributed commits?\n- Are γ-owned artifacts (`gamma-scaffold.md`, `gamma-closeout.md`, `cdd-iteration.md`, mid-flight files) authored only by γ-attributed commits?\n- Are α's fix-round appends (after β RC) in α's *own* primary artifact, not in β's review record?\n\n### 5.3. Sequential rule check (at review time)\n\n- Did β begin review only after α's review-readiness signal commit?\n- Did γ begin close-out triage only after both close-outs were on main?\n\n### 5.4. Frozen-snapshot check (at release time)\n\n- Is `.cdd\u002Funreleased\u002F{N}\u002F` moved to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` in the release commit (same commit as `RELEASE.md`)?\n- Are there any post-merge edits to predecessor artifacts? If yes, are they γ-authored writes to γ-owned files (permitted) or sibling overwrites (protocol violations)?\n- Post-release, is `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` immutable (no further commits touching files inside)?\n\n### 5.5. Cross-cycle aggregation check (at close-out)\n\n- If `protocol_gap_count > 0`, does `.cdd\u002Fiterations\u002FINDEX.md` carry a row for cycle N?\n- If `protocol_gap_count == 0`, is the courtesy-stub `cdd-iteration.md` present (or explicitly omitted per cnos#401 cadence rule)?\n\n---\n\n## 6. Related documents\n\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002FHANDOFF.md` — package contract; this skill is one sub-surface.\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md` — the rescue protocol that lives on this channel. Companion sub-skill landed alongside this one under Sub 4 of cnos#404. mid-flight owns the `gamma-clarification.md` write\u002Fread rules; this skill owns the channel substrate.\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002Fdispatch\u002FSKILL.md` — the dispatch wire format; the dispatch prompt initiates the cycle that uses this channel. dispatch cites this skill for the `.cdd\u002Funreleased\u002F{N}\u002F` per-role write ownership.\n- [`cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md`](..\u002Freceipt-stream\u002FSKILL.md) — Sub 5 of cnos#404 (landed via cnos#419). The cross-cycle aggregator (`.cdd\u002Fiterations\u002FINDEX.md`; per-finding shape; cross-repo trace bundle). Receipt-stream consumes the per-cycle `cdd-iteration.md` artifact this channel produces.\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002Fcross-repo\u002FSKILL.md` — STATUS state machine; the cross-repo proposal lifecycle is orthogonal to this channel but uses a parallel directory shape (`.cdd\u002Fiterations\u002Fcross-repo\u002F{counterpart-repo}\u002F{slug}\u002F`) for bilateral coordination.\n- `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"` — the CDS-class per-artifact contract: Location matrix (canonical filenames); Ownership matrix (per-role artifact assignment with verification gates); Ordered flow (13-stage flow); Frozen snapshot rule (the cds-side realization of this skill's §2.4); Trace format. CDS binds and consumes the channel pattern declared here; it does not own the channel.\n- `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Coordination surfaces\" → \"Polling primitives\"` — the polling primitives that detect the cycle-branch SHA advance (the handoff signal this skill names).\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Fgamma\u002FSKILL.md §2.5 → \"Pre-dispatch γ scaffold check\"` — the binding gate at cycle-start; γ MUST NOT dispatch α until `gamma-scaffold.md` exists on `origin\u002Fcycle\u002F{N}`.\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Falpha\u002FSKILL.md` — α's role-local channel obligations (write `self-coherence.md` incrementally; append review-readiness as the final section; append fix-round sections after β RC).\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Fbeta\u002FSKILL.md` — β's role-local channel obligations (read α's primary artifact; write review record per round; write close-out + release evidence).\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Frelease\u002FSKILL.md §2.5a` — the release-time directory move mechanics (the cdd-side realization of §2.4.2).\n- [cnos#364](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F364) — per-role artifact filename conventions empirical anchor.\n- [cnos#369](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F369) — the gamma-scaffold binding gate empirical anchor.\n- [cnos#401](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F401) — the courtesy-stub cdd-iteration.md cadence rule.\n- [cnos#404](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F404) — parent tracker (handoff\u002Fcoordination extraction wave).\n- [cnos#418](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F418) — the codification cycle for this surface (Sub 4 of cnos#404).\n\n---\n\n## 7. Non-goals\n\n- This skill does NOT own the per-artifact filenames, content sections, or 13-stage Ordered flow. Those are CDS-specific (and CDR-different; future c-d-X may differ further) and live in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"`. This skill names the channel-shape; cds names the file set.\n- This skill does NOT own the mid-flight rescue mechanism. `gamma-clarification.md`'s write\u002Fread protocol, cache-bust semantics, and resumption protocol are at `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`. This skill names the channel that hosts the rescue file; mid-flight names the rescue's behavior.\n- This skill does NOT own the cross-cycle aggregator. The per-finding shape, the INDEX.md row format, and the cross-repo trace bundle are at [`cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md`](..\u002Freceipt-stream\u002FSKILL.md) (Sub 5 of cnos#404; landed via cnos#419). This skill names the per-cycle `cdd-iteration.md` artifact's existence and channel-relationship; receipt-stream owns the aggregation rules.\n- This skill does NOT own the dispatch wire format or the implementation-contract schema. Those live in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fdispatch\u002FSKILL.md`. This skill names the channel α\u002Fβ\u002Fγ use after dispatch; dispatch names the prompt that initiates the cycle.\n- This skill does NOT own the cross-repo proposal lifecycle (STATUS state machine; bundle file sets; LINEAGE.md schemas). Those live in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fcross-repo\u002FSKILL.md`. The cross-repo bundle uses a parallel directory shape (`.cdd\u002Fiterations\u002Fcross-repo\u002F{counterpart-repo}\u002F{slug}\u002F`); the two channels are orthogonal.\n- This skill does NOT own the polling primitives or harness substrate. Those live in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Coordination surfaces\" → \"Polling primitives\"` and `cnos.cdd\u002Fskills\u002Fcdd\u002Fharness\u002FSKILL.md`. This skill assumes a polling primitive emits on cycle-branch SHA transitions; it does not specify how.\n- This skill does NOT change the rescue mechanism's behavior, the artifact-file names, or the directory-move discipline. Sub 4 of cnos#404 is a wholesale extraction of an empirically-stable channel pattern; the wire-format invariants are preserved verbatim from the empirical practice.\n- This skill does NOT lift the channel pattern into a typed schema. Whether to type the channel-directory contents into `schemas\u002Fhandoff\u002Fartifact-channel.cue` is deferred; if a future cycle pressures the type-lift, the Markdown invariants reference the schema by `$ref` then.\n\n---\n\n## 8. Kata\n\n### Scenario\n\nγ is about to dispatch α on `cycle\u002FN`. The cycle is a substantial CDS-class cycle (mode = substantial); γ has already drafted the dispatch prompt with a populated implementation contract per `dispatch\u002FSKILL.md §2.3`. The channel directory `.cdd\u002Funreleased\u002FN\u002F` does not yet exist on `origin\u002Fcycle\u002FN`.\n\n### Expected reasoning\n\n1. **Scaffold write (cycle-start exception, §2.3 step 1).** γ writes `.cdd\u002Funreleased\u002FN\u002Fgamma-scaffold.md` per the per-role write ownership pattern (γ owns gamma-scaffold). γ commits and pushes to `origin\u002Fcycle\u002FN`. The binding gate at `cnos.cdd\u002Fskills\u002Fcdd\u002Fgamma\u002FSKILL.md §2.5` requires the scaffold's presence before α dispatch; γ has satisfied it.\n\n2. **α phase, intake.** γ dispatches α. α's intake polls `origin\u002Fcycle\u002FN`; the SHA advance from the scaffold commit wakes α. α reads `gamma-scaffold.md` (the scaffold is α's input per the sequential rule). α begins implementation per the dispatch prompt + scaffold.\n\n3. **α phase, primary artifact.** α writes `self-coherence.md` incrementally on the cycle branch (one section per commit per the CDS Large-file authoring rule). The final section append is the review-readiness signal — α appends `## Review-readiness | round 1 | ...` and pushes. This is α's signaled completion; the SHA advance wakes β.\n\n4. **β phase.** β reads α's primary artifact + the diff + the issue body (β does not modify α's primary artifact). β writes `beta-review.md` incrementally per round. On A verdict, β merges. (If RC, α appends a fix-round section to its own `self-coherence.md` — never to β's `beta-review.md` — and β re-reviews in a new round.)\n\n5. **Close-out phase.** α is re-dispatched after merge; α writes `alpha-closeout.md`. β writes `beta-closeout.md` (in the same β session as the merge per CDS Field 6 collapse). γ verifies both close-outs are on main; writes `gamma-closeout.md`; if `protocol_gap_count > 0` (or as a courtesy stub per cnos#401), writes `cdd-iteration.md` and adds a row to `.cdd\u002Fiterations\u002FINDEX.md`.\n\n6. **Release-time move (§2.4.2).** Before γ requests the tag from δ, γ moves `.cdd\u002Funreleased\u002FN\u002F` → `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` as part of the release commit (same commit as `RELEASE.md`). After the move, `.cdd\u002Funreleased\u002FN\u002F` no longer exists on main; the cycle's record is version-anchored at `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F`.\n\n7. **Post-release, immutable (§3.6).** The directory at `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` is immutable. Any subsequent correction goes in a follow-on cycle's close-out, in the post-release assessment, or in a doc-only release with its own version-snapshot.\n\n### Common failures\n\n- γ dispatches α before writing `gamma-scaffold.md` — the binding gate at γ §2.5 catches this at γ-side; β's rule 3.11b catches it at β-side if it survives.\n- β edits α's `self-coherence.md` to \"clarify\" something — sibling overwrite; rule 3.2 violation.\n- α appends a fix-round section to β's `beta-review.md` instead of its own `self-coherence.md` — sibling overwrite; rule 3.2 violation.\n- γ leaves `.cdd\u002Funreleased\u002FN\u002F` on main after release — rule 3.5 violation; future cycle on issue N collides with stale directory.\n- γ edits `alpha-closeout.md` post-release \"to add a missing finding\" — rule 3.6 violation; corrections go in a follow-on cycle.\n\n### Verification\n\n- The cycle directory exists on `origin\u002Fcycle\u002FN` after γ-scaffold commit; exists on main after merge; moved to `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` in the release commit.\n- All artifacts attribute commits to their owning role (`α-N:` \u002F `β-N:` \u002F `γ-N:` prefix convention).\n- No sibling-overwrite commits (a role committing to another role's owned artifact).\n- Post-release, `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` is unmodified.\n\n### Reflection\n\nA second γ reading the cycle's record (from the frozen `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` directory alone) should be able to reconstruct the cycle's full history — who wrote what when, what the review verdicts were, how findings were addressed, what the close-out triage decided — without consulting chat history, operator notes, or any out-of-band source. The channel carries the complete record.\n\n---\n\n**End of skill.**\n","# Artifact Channel — intra-cycle α → β → γ sequential handoff\n\n## Core principle\n\n**`.cdd\u002Funreleased\u002F{N}\u002F` on the cycle branch is the sequential intra-cycle handoff substrate. Each per-cycle artifact has exactly one owning role at write time; successor roles read but do not modify predecessor artifacts (except by their own append, e.g. α's fix-round sections after β's RC verdict); the channel directory freezes on merge and moves to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` at release. Chat does not transit the channel; the artifact channel does.**\n\nThe artifact channel is the wire format by which α, β, and γ hand work to each other within a single cycle. Each role writes its artifacts at canonical paths under `.cdd\u002Funreleased\u002F{N}\u002F`; the SHA advance on `origin\u002Fcycle\u002F{N}` is the handoff signal to the polling successor role. The substrate is filesystem + git — no chat, no separate coordination database, no out-of-band side channel. The cycle directory carries the cycle's complete record from γ-scaffold to γ-closeout; at release-time, γ moves it from `.cdd\u002Funreleased\u002F{N}\u002F` to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` per the frozen-snapshot rule, where it stays as the immutable post-release record.\n\nThe failure mode is **channel-substrate drift** — a role writes a coordination signal to chat instead of to the channel; a role writes to a sibling role's artifact and obscures attribution; the cycle directory is mutated after merge (e.g. an α-closeout edit dated after release); the directory is left at `.cdd\u002Funreleased\u002F{N}\u002F` past release and loses its version association. The result is a cycle whose record is incomplete, whose role attribution is ambiguous, and whose post-release assessment cannot reconstruct what happened from the cycle directory alone.\n\nThis skill is the **canonical surface** for the wire-format invariants: the channel directory shape, the per-role write ownership pattern, the sequential α→β→γ flow, the frozen-snapshot rule on merge, and the release-time directory move. Consumer protocol packages bind the pattern to their specific artifact instantiation; for CDS-class cycles, the canonical *per-artifact* contract (filenames, content sections, ownership rows, verification gates, ordered 13-stage flow) lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"`. This skill governs the channel; cnos.cds governs the per-artifact contents.\n\n## Authority\n\n- This skill (in `cnos.handoff`) is the only canonical home for the channel-shape wire-format invariants: the channel directory path pattern (`.cdd\u002Funreleased\u002F{N}\u002F`), the per-role write ownership pattern (α writes α artifacts; β writes β artifacts; γ writes γ artifacts), the sequential α→β→γ flow (each role's artifact is the successor role's input), the frozen-snapshot rule (post-merge immutability of the channel directory), the release-time directory move (cycle dir migrates to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` before tag). If another skill or doctrine surface carries the same wire-format claims, this skill governs.\n- The consumer protocol packages govern the per-artifact instantiation. For CDS-class cycles, the canonical home is `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"` — specifically the Location matrix (canonical filename per artifact), Ownership matrix (per-role artifact assignment with verification gates), and Ordered flow (the 13-stage flow: design → contract → plan → tests → code → docs → self-coherence → review → gate → release → observe → assess → close). CDR-class cycles bind differently; future c-d-X may bind differently still. The wire-format pattern is what this skill owns; the per-consumer instantiation is what cds\u002Fcdr\u002Fc-d-X own.\n- The artifacts on this channel are also the substrate for sibling sub-skills' wire formats. `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md` (gamma-clarification.md \u002F gamma-coordination.md) and `cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md` (cdd-iteration.md aggregator) live on this channel. Their authoring\u002Freader\u002Fcadence rules are theirs; the channel-shape they live on is this skill's.\n\n## Scope\n\nIn scope:\n\n- The channel directory path pattern (`.cdd\u002Funreleased\u002F{N}\u002F`); the cycle-branch substrate (`origin\u002Fcycle\u002F{N}`); the SHA-advance handoff signal.\n- The per-role write ownership pattern (which role writes which class of artifact; what successor roles may and may not do to predecessor artifacts).\n- The sequential rule (α before β; β before γ; γ-scaffold exception at cycle-start).\n- The frozen-snapshot rule on merge (post-merge immutability of the channel directory; the release-time directory move from `.cdd\u002Funreleased\u002F{N}\u002F` to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F`).\n- The cross-cycle aggregation pointer (per-cycle `cdd-iteration.md` → `.cdd\u002Fiterations\u002FINDEX.md`; aggregator rules canonicalize in Sub 5 \u002F receipt-stream\u002FSKILL.md).\n- Empirical anchors (every cycle since the channel was established in pre-#364 form).\n\nOut of scope:\n\n- The per-artifact filenames and content sections. Those live in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Location matrix\"` (CDS-specific filename set: `self-coherence.md`, `alpha-closeout.md`, `beta-review.md`, `beta-closeout.md`, `gamma-closeout.md`, `gamma-scaffold.md`, `cdd-iteration.md`, `RELEASE.md`, version-snapshot directory, PRA path, cross-repo trace dir). CDR and future c-d-X bind differently.\n- The per-artifact role ownership table (who writes which file, when, what the verification gate is, what missing means). Lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Ownership matrix\"`.\n- The CDS-specific 13-stage Ordered flow. Lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Ordered flow\"`. CDR has a different flow; future c-d-X may have other flows.\n- The mid-flight rescue mechanism (`gamma-clarification.md` write\u002Fread protocol; cache-bust semantics). Lives in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`. This skill owns the channel; mid-flight owns the rescue protocol that lives on the channel.\n- The cross-cycle aggregator content (per-finding shape; INDEX.md row format; cross-repo trace bundle). Lives in `cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md` (Sub 5 of cnos#404; landed via cnos#419). This skill owns the per-cycle channel; receipt-stream owns the cross-cycle aggregation.\n- The harness substrate (polling primitives, Monitor wrapping, reachability re-probe). Lives in `cnos.cdd\u002Fskills\u002Fcdd\u002Fharness\u002FSKILL.md`. This skill assumes a polling primitive emits on cycle-branch SHA transitions.\n- Tooling that auto-verifies channel discipline (`cn cdd verify` channel-integrity checks). Deferred; doctrine first, tooling later.\n\n---\n\n## 1. Define\n\n### 1.1. What the channel is\n\nThe channel is **one directory per cycle**: `.cdd\u002Funreleased\u002F{N}\u002F` on `origin\u002Fcycle\u002F{N}`, where `{N}` is the cycle's issue number. Inside the directory, files are role-distinguished by **filename**, not by sub-directory. The directory carries the cycle's complete record from γ-scaffold (at cycle-start) through γ-closeout (at close); at release-time, γ moves the directory to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` per the frozen-snapshot rule (§2.4).\n\nThe substrate is filesystem + git. The handoff signal between roles is the SHA advance on `origin\u002Fcycle\u002F{N}` — the polling successor role's polling primitive (per `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Coordination surfaces\" → \"Polling primitives\"`) emits on the SHA transition and the successor's next intake iteration reads the predecessor's artifact live. No chat, no out-of-band coordination database, no separate inbox.\n\n### 1.2. What the channel is not\n\nThe channel is **not**:\n\n- a chat-coordination substitute. Chat does not transit the channel; if a load-bearing fact is communicated only in chat, it is invisible to polling roles and to the post-release record.\n- a shared-write directory. Each artifact has one owning role at write time. Sibling roles read but do not modify (except by their own append, e.g. α's fix-round sections after β's RC verdict — α appends to α's own `self-coherence.md`, never to β's `beta-review.md`).\n- a multi-cycle channel. One directory = one cycle. Cross-cycle aggregation runs through `.cdd\u002Fiterations\u002FINDEX.md` per the receipt-stream sub-skill (Sub 5 of cnos#404; landed via cnos#419).\n- mutable post-merge. Once the cycle merges, the channel directory freezes. Subsequent edits to predecessor artifacts are reviewable as protocol violations — corrections go in a new cycle's close-out or in the post-release assessment.\n- the canonical post-release snapshot. The frozen post-release snapshot lives under `docs\u002F{tier}\u002F{bundle}\u002F{X.Y.Z}\u002F` per CDS Location matrix; the channel directory at `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` is the cycle's role-local close-out evidence storage.\n\n### 1.3. Failure mode\n\nThe channel fails through **channel-substrate drift**:\n\n- A role writes a coordination signal to chat instead of to the channel — the signal is invisible to polling sessions and to the post-release assessment.\n- A role writes to a sibling role's artifact — attribution becomes ambiguous; β's review verdict and α's self-coherence are no longer distinguishable.\n- The cycle directory is mutated after merge — predecessor artifacts are silently edited to fit the post-merge narrative; the cycle's record is no longer trustworthy.\n- The directory is left at `.cdd\u002Funreleased\u002F{N}\u002F` past release — it loses its version association; future cycles operating on the same issue number (re-opens, follow-ons) collide with the stale directory.\n- A coordination note lives only in the GitHub issue comments or in a chat backlog — the artifact channel is incomplete and the post-release reconstruction is impossible.\n\nThe protocol closes each failure mode by naming the channel-shape invariants explicitly and binding role-write ownership, sequential flow, and frozen-snapshot rules to the channel directory.\n\n---\n\n## 2. Unfold\n\n### 2.1. Channel directory\n\nThe canonical channel path is:\n\n```text\n.cdd\u002Funreleased\u002F{N}\u002F\n```\n\non `origin\u002Fcycle\u002F{N}`, where `{N}` is the cycle's GitHub issue number. The directory exists for the duration of the cycle — from γ-scaffold (at cycle-start) through release-time move (at release). The path is consumer-agnostic (CDS, CDR, future c-d-X all use the same channel-directory shape); only the *filenames* inside vary per consumer protocol.\n\nThe cycle-branch substrate is `origin\u002Fcycle\u002F{N}` — a single named branch per cycle, created by γ from `origin\u002Fmain` at cycle-start per `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Development lifecycle\" → \"Branch rule\"`. The channel directory lives on the cycle branch (not on main) until the release-time move; polling main for in-flight cycle dirs is silent.\n\nThe handoff signal between roles is the **SHA advance on `origin\u002Fcycle\u002F{N}`**. Each commit to the cycle branch advances the SHA; polling primitives detect the transition and wake successor roles. The signal is git-native — no separate notification channel, no webhook, no inbox. The SHA advance is the only event the successor role needs.\n\n### 2.2. Per-role write ownership\n\nEvery per-cycle artifact has exactly one owning role at write time. The pattern (consumer-protocol-agnostic):\n\n| Owner role | Artifact class | Pattern |\n|---|---|---|\n| γ | scaffold | Cycle-start artifact; carries γ's selection decision and the dispatch surface set. One per cycle. |\n| α | role-local primary branch artifact | The role's review-readiness signal; gap \u002F mode \u002F ACs \u002F trace \u002F fix-rounds. One per cycle. |\n| α | role close-out | The role's post-merge findings record. One per cycle. |\n| β | role-local review record | The review CLP rounds + verdicts. One per cycle; one section per round. |\n| β | role close-out | The role's post-review close-out + release evidence. One per cycle. |\n| γ | role close-out | The cycle's closure declaration + triage record. One per cycle. |\n| γ | cross-cycle receipt | The per-cycle iteration artifact (when `protocol_gap_count > 0`; courtesy stub permitted when count is 0). Feeds the cross-cycle aggregator. |\n| γ | mid-flight rescue | The clarification artifact (per `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`). One file per cycle (appended to per event). |\n\n**Read access is universal; write access is role-local.** α reads γ's scaffold (it is α's intake brief); β reads α's primary branch artifact (it is β's review subject); γ reads both close-outs (they are γ's triage inputs). The reader does not modify the predecessor's artifact — the reader makes its observations and writes its own role-local artifact.\n\nThe one structured exception is **α's fix-round append after β's RC verdict.** When β returns RC, α appends a fix-round section to its *own* primary branch artifact (`self-coherence.md` for CDS-class) naming each finding addressed, the commit SHA that addressed it, and any reasoning β needs to re-verify. α does not edit β's review record; β iterates a new round in `beta-review.md`. The fix-round pattern keeps role attribution intact.\n\nThe consumer-specific *filename* set lives in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Location matrix\"` (CDS-class: `gamma-scaffold.md`, `self-coherence.md`, `alpha-closeout.md`, `beta-review.md`, `beta-closeout.md`, `gamma-closeout.md`, `cdd-iteration.md`, plus the cycle-orthogonal `RELEASE.md` and PRA at canonical version-directory paths). CDR has its own filename set; future c-d-X protocols bind their own. The wire-format pattern (per-role ownership, sequential flow) is what this skill owns; the per-protocol filename set is consumer-side.\n\n### 2.3. Sequential rule\n\nThe intra-cycle flow is **sequential α → β → γ** with one cycle-start exception:\n\n1. **γ-scaffold (cycle-start exception)** — γ writes the scaffold artifact *before* α is dispatched. This is the only cycle-start γ write; it is the binding gate per `cnos.cdd\u002Fskills\u002Fcdd\u002Fgamma\u002FSKILL.md §2.5 → \"Pre-dispatch γ scaffold check\"`. The scaffold is α's input.\n2. **α phase** — α writes its primary branch artifact incrementally on the cycle branch; the review-readiness section is the last section appended. The α phase ends when α signals review-readiness via the review-readiness section's append commit. α's primary artifact is β's input.\n3. **β phase** — β reads α's primary artifact + the diff + the issue body; runs the review CLP; writes the review record incrementally (one section per round). On A verdict, β merges. On RC, α appends a fix-round; β re-reviews. The β phase ends at merge (for non-RC paths) or at A after RC rounds.\n4. **Re-dispatched α (close-out)** — after β merge, α is re-dispatched (per `cnos.cdd\u002Fskills\u002Fcdd\u002Foperator\u002FSKILL.md` re-dispatch protocol) and writes its close-out artifact. α exits.\n5. **β close-out** — β writes its close-out artifact (release evidence + close-out findings) in the same β session as the merge (per CDS Field 6 collapse). β exits.\n6. **γ phase** — γ verifies both close-outs are on main; writes the per-cycle receipt artifact (when applicable); writes the cycle's closure declaration; moves the cycle directory at release-time per §2.4.\n\nThe successor role's intake **requires** the predecessor role's signaled completion. β does not begin review until α has signaled review-readiness (in α's primary artifact). γ does not begin triage until both close-outs are on main. Each role's polling primitive emits when the predecessor's relevant artifact reaches the expected state; the role's intake iteration reads the artifact live.\n\nThe two exceptions to the strictly-sequential pattern:\n\n- **The γ-scaffold cycle-start write** (§2.3 step 1) — γ writes before α exists in the cycle. Not strictly sequential because α has not yet written anything; γ-scaffold is the cycle's initial state.\n- **Mid-flight γ writes** (`gamma-clarification.md` \u002F `gamma-coordination.md`) — γ writes mid-cycle while α and\u002For β are in-flight. This is the rescue channel (per `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`); the channel is the substrate but the sequence is not strict α→β→γ. The clarification is bounded recovery — not routine cadence — and its writes do not violate the sequential rule because they are sibling-channel writes, not predecessor-overwrites.\n\n### 2.4. Frozen-snapshot rule (release-time move)\n\nWhen the cycle merges, the channel directory **freezes** — no further writes to predecessor artifacts. The frozen rule has two phases:\n\n#### 2.4.1. Post-merge, pre-release (in-version state)\n\nBetween β merge and γ tag\u002Frelease, the channel directory at `.cdd\u002Funreleased\u002F{N}\u002F` is on `origin\u002Fmain` (β merged it). γ writes close-out and (when applicable) receipt artifacts in this window; these are the *only* permitted writes — and they are γ-authored writes to γ-owned files (gamma-closeout.md, cdd-iteration.md, mid-flight files when a rescue event fires post-merge), not edits to predecessor artifacts.\n\n#### 2.4.2. Release-time move\n\nBefore γ requests the tag from δ, γ moves the channel directory:\n\n```text\n.cdd\u002Funreleased\u002F{N}\u002F  →  .cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F\n```\n\nThe move is part of the release commit on main (per `cnos.cdd\u002Fskills\u002Fcdd\u002Frelease\u002FSKILL.md §2.5a` and `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\" → \"Location matrix\"`). After the move:\n\n- `.cdd\u002Funreleased\u002F{N}\u002F` no longer exists on main (the directory has moved).\n- `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` carries the cycle's complete record, version-anchored.\n- Multiple cycle directories may live under one release directory when several issues ship in the same release.\n\nAfter the release commit, the directory is **immutable**. Subsequent edits to files inside `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` are reviewable as protocol violations — corrections go in a new cycle's close-out, in the post-release assessment, or in a documentation-only release with its own version-snapshot. Doc-only releases use `.cdd\u002Freleases\u002Fdocs\u002F{ISO-date}\u002F{N}\u002F` as the destination directory shape per CDS Location matrix.\n\nThe release-time move is the **wire-format invariant**; the per-consumer realization (which release script runs the move; how `cn cdd verify` checks the move happened; how the legacy aggregate paths are detected) is consumer-side at cnos.cds + cnos.cdd\u002Frelease skills.\n\n### 2.5. Cross-cycle aggregation\n\nThe channel is per-cycle; cross-cycle aggregation runs through one persistent aggregator file at `.cdd\u002Fiterations\u002FINDEX.md` at the repo root. Each cycle that produces a `cdd-iteration.md` (per the cadence rule — required when `protocol_gap_count > 0`; courtesy stub permitted when count is 0 per cnos#401) updates INDEX.md with one row naming the cycle \u002F issue \u002F date \u002F findings \u002F patches \u002F MCAs \u002F no-patch \u002F path.\n\nThe aggregator's row format, the per-finding shape inside `cdd-iteration.md`, and the cross-repo trace bundle (when a finding's disposition is `patch-landed` with `Cross-repo` target) are owned by **Sub 5 of cnos#404** — the receipt-stream sub-skill ([`cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md`](..\u002Freceipt-stream\u002FSKILL.md); landed via cnos#419). This skill names the aggregator's *existence* and *channel-relationship* (per-cycle artifact on this channel feeds the cross-cycle aggregator); the aggregation rules themselves are receipt-stream's.\n\n---\n\n## 3. Rules\n\n### 3.1. Write to the channel, not to chat\n\n- ❌ Communicate a load-bearing cycle decision in chat alone — invisible to polling roles and to the post-release record.\n- ✅ Every load-bearing decision lives in the role's own channel artifact; chat is communication, not the cycle's record.\n\n### 3.2. Per-role write ownership; no sibling overwrites\n\n- ❌ β edits α's primary branch artifact to \"clarify\" what α should have written.\n- ❌ α edits β's review record to address findings inline.\n- ✅ Each role writes its own role-local artifacts; α's fix-round append after β's RC verdict goes in α's *own* primary artifact, not β's review record.\n\n### 3.3. Predecessor's signaled completion is the successor's intake gate\n\n- ❌ β begins review before α has signaled review-readiness in α's primary artifact.\n- ❌ γ begins triage before both close-outs are on main.\n- ✅ Each role's intake polls for the predecessor's signaled completion (review-readiness section append; close-out commit on main); the successor's intake iteration reads the predecessor's artifact live.\n\n### 3.4. Channel directory freezes on merge\n\n- ❌ Edit a predecessor's artifact post-merge to fit the post-merge narrative.\n- ❌ Add a \"clarification\" to α's self-coherence.md after β has approved and merged.\n- ✅ Post-merge writes are γ-authored writes to γ-owned files (close-out, iteration receipt, mid-flight files when a rescue event fires post-merge). Predecessor artifacts are immutable.\n\n### 3.5. Release-time move is part of the release commit\n\n- ❌ Leave the cycle directory at `.cdd\u002Funreleased\u002F{N}\u002F` after release; future cycles collide on the same issue number.\n- ❌ Move the directory in a separate post-release commit, after the tag fires.\n- ✅ γ moves `.cdd\u002Funreleased\u002F{N}\u002F` → `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` in the same release commit as `RELEASE.md`; the move is on main before γ requests the tag from δ.\n\n### 3.6. Post-release, the directory is immutable\n\n- ❌ Edit a file inside `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` to correct a typo discovered later; it is the cycle's frozen post-release record.\n- ✅ Corrections go in the post-release assessment, in a new cycle's close-out, or in a doc-only release with its own version-snapshot under `.cdd\u002Freleases\u002Fdocs\u002F{ISO-date}\u002F{N}\u002F`.\n\n### 3.7. Cross-reference, do not duplicate\n\nConsumer protocol skills cite this skill for the channel wire-format invariants. If you find channel-shape doctrine in `cnos.cdd\u002Fskills\u002Fcdd\u002F`, `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md`, or elsewhere that contradicts this skill, this skill governs and the other surface is patched to reference this one. The per-artifact contract (which files exist; what each file contains; who owns each row) stays at the consumer protocol's home (cds for software cycles; cdr for research cycles); the channel-shape lives here.\n\n---\n\n## 4. Empirical anchors\n\nEvery cycle since the channel was established (pre-#364) uses this channel. The channel is the default substrate — no cycle ships without it. Representative anchors:\n\n- **The `.cdd\u002Funreleased\u002F{N}\u002F` → `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` directory move pattern.** Standardized in pre-#283 form; refined through cnos#283–#287 (cycle-branch naming convention) and cnos#364 (per-role artifact-file conventions). Every release commit since cnos#364 carries the move as part of the release commit.\n- **Per-role write ownership.** Crystallized through cnos#287 (γ-owned branch pre-flight) and cnos#369 (the gamma-scaffold binding gate; β's role-side enforcement via review\u002FSKILL.md rule 3.11b). The pattern is empirically stable: across the cnos#388–#412 wave, no cycle showed cross-role artifact mutation.\n- **Sequential α→β→γ.** The pattern is empirically stable: across the cnos#388–#412 wave, every cycle followed the sequential pattern (with the γ-scaffold cycle-start exception). cnos#369 was the empirical anchor for the binding gate that makes the pattern protocol-enforced.\n- **Mid-flight on-channel writes.** The cnos#391 rescue cycle (anchored in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`) is the canonical demonstration that the channel handles non-sequential γ writes via sibling-channel files (`gamma-clarification.md`); the sequential rule is not violated.\n- **#406–#412 wave** — the post-codification cycles that exercised the channel in steady-state. Every cycle in the wave produced a complete `.cdd\u002Funreleased\u002F{N}\u002F` directory and a clean release-time move; the channel's wire-format is operationally stable.\n\n---\n\n## 5. Verify\n\n### 5.1. Channel directory check (per cycle, at scaffold time)\n\n- Does `.cdd\u002Funreleased\u002F{N}\u002F` exist on `origin\u002Fcycle\u002F{N}` after γ-scaffold commit?\n- Is `.cdd\u002Funreleased\u002F{N}\u002Fgamma-scaffold.md` present and γ-authored?\n\n### 5.2. Per-role write ownership check (at review and close-out times)\n\n- Are α-owned artifacts (e.g. `self-coherence.md`, `alpha-closeout.md` for CDS-class) authored only by α-attributed commits?\n- Are β-owned artifacts (`beta-review.md`, `beta-closeout.md`) authored only by β-attributed commits?\n- Are γ-owned artifacts (`gamma-scaffold.md`, `gamma-closeout.md`, `cdd-iteration.md`, mid-flight files) authored only by γ-attributed commits?\n- Are α's fix-round appends (after β RC) in α's *own* primary artifact, not in β's review record?\n\n### 5.3. Sequential rule check (at review time)\n\n- Did β begin review only after α's review-readiness signal commit?\n- Did γ begin close-out triage only after both close-outs were on main?\n\n### 5.4. Frozen-snapshot check (at release time)\n\n- Is `.cdd\u002Funreleased\u002F{N}\u002F` moved to `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` in the release commit (same commit as `RELEASE.md`)?\n- Are there any post-merge edits to predecessor artifacts? If yes, are they γ-authored writes to γ-owned files (permitted) or sibling overwrites (protocol violations)?\n- Post-release, is `.cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F` immutable (no further commits touching files inside)?\n\n### 5.5. Cross-cycle aggregation check (at close-out)\n\n- If `protocol_gap_count > 0`, does `.cdd\u002Fiterations\u002FINDEX.md` carry a row for cycle N?\n- If `protocol_gap_count == 0`, is the courtesy-stub `cdd-iteration.md` present (or explicitly omitted per cnos#401 cadence rule)?\n\n---\n\n## 6. Related documents\n\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002FHANDOFF.md` — package contract; this skill is one sub-surface.\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md` — the rescue protocol that lives on this channel. Companion sub-skill landed alongside this one under Sub 4 of cnos#404. mid-flight owns the `gamma-clarification.md` write\u002Fread rules; this skill owns the channel substrate.\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002Fdispatch\u002FSKILL.md` — the dispatch wire format; the dispatch prompt initiates the cycle that uses this channel. dispatch cites this skill for the `.cdd\u002Funreleased\u002F{N}\u002F` per-role write ownership.\n- [`cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md`](..\u002Freceipt-stream\u002FSKILL.md) — Sub 5 of cnos#404 (landed via cnos#419). The cross-cycle aggregator (`.cdd\u002Fiterations\u002FINDEX.md`; per-finding shape; cross-repo trace bundle). Receipt-stream consumes the per-cycle `cdd-iteration.md` artifact this channel produces.\n- `cnos.handoff\u002Fskills\u002Fhandoff\u002Fcross-repo\u002FSKILL.md` — STATUS state machine; the cross-repo proposal lifecycle is orthogonal to this channel but uses a parallel directory shape (`.cdd\u002Fiterations\u002Fcross-repo\u002F{counterpart-repo}\u002F{slug}\u002F`) for bilateral coordination.\n- `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"` — the CDS-class per-artifact contract: Location matrix (canonical filenames); Ownership matrix (per-role artifact assignment with verification gates); Ordered flow (13-stage flow); Frozen snapshot rule (the cds-side realization of this skill's §2.4); Trace format. CDS binds and consumes the channel pattern declared here; it does not own the channel.\n- `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Coordination surfaces\" → \"Polling primitives\"` — the polling primitives that detect the cycle-branch SHA advance (the handoff signal this skill names).\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Fgamma\u002FSKILL.md §2.5 → \"Pre-dispatch γ scaffold check\"` — the binding gate at cycle-start; γ MUST NOT dispatch α until `gamma-scaffold.md` exists on `origin\u002Fcycle\u002F{N}`.\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Falpha\u002FSKILL.md` — α's role-local channel obligations (write `self-coherence.md` incrementally; append review-readiness as the final section; append fix-round sections after β RC).\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Fbeta\u002FSKILL.md` — β's role-local channel obligations (read α's primary artifact; write review record per round; write close-out + release evidence).\n- `cnos.cdd\u002Fskills\u002Fcdd\u002Frelease\u002FSKILL.md §2.5a` — the release-time directory move mechanics (the cdd-side realization of §2.4.2).\n- [cnos#364](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F364) — per-role artifact filename conventions empirical anchor.\n- [cnos#369](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F369) — the gamma-scaffold binding gate empirical anchor.\n- [cnos#401](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F401) — the courtesy-stub cdd-iteration.md cadence rule.\n- [cnos#404](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F404) — parent tracker (handoff\u002Fcoordination extraction wave).\n- [cnos#418](https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fissues\u002F418) — the codification cycle for this surface (Sub 4 of cnos#404).\n\n---\n\n## 7. Non-goals\n\n- This skill does NOT own the per-artifact filenames, content sections, or 13-stage Ordered flow. Those are CDS-specific (and CDR-different; future c-d-X may differ further) and live in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Artifact contract\"`. This skill names the channel-shape; cds names the file set.\n- This skill does NOT own the mid-flight rescue mechanism. `gamma-clarification.md`'s write\u002Fread protocol, cache-bust semantics, and resumption protocol are at `cnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md`. This skill names the channel that hosts the rescue file; mid-flight names the rescue's behavior.\n- This skill does NOT own the cross-cycle aggregator. The per-finding shape, the INDEX.md row format, and the cross-repo trace bundle are at [`cnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md`](..\u002Freceipt-stream\u002FSKILL.md) (Sub 5 of cnos#404; landed via cnos#419). This skill names the per-cycle `cdd-iteration.md` artifact's existence and channel-relationship; receipt-stream owns the aggregation rules.\n- This skill does NOT own the dispatch wire format or the implementation-contract schema. Those live in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fdispatch\u002FSKILL.md`. This skill names the channel α\u002Fβ\u002Fγ use after dispatch; dispatch names the prompt that initiates the cycle.\n- This skill does NOT own the cross-repo proposal lifecycle (STATUS state machine; bundle file sets; LINEAGE.md schemas). Those live in `cnos.handoff\u002Fskills\u002Fhandoff\u002Fcross-repo\u002FSKILL.md`. The cross-repo bundle uses a parallel directory shape (`.cdd\u002Fiterations\u002Fcross-repo\u002F{counterpart-repo}\u002F{slug}\u002F`); the two channels are orthogonal.\n- This skill does NOT own the polling primitives or harness substrate. Those live in `cnos.cds\u002Fskills\u002Fcds\u002FCDS.md §\"Coordination surfaces\" → \"Polling primitives\"` and `cnos.cdd\u002Fskills\u002Fcdd\u002Fharness\u002FSKILL.md`. This skill assumes a polling primitive emits on cycle-branch SHA transitions; it does not specify how.\n- This skill does NOT change the rescue mechanism's behavior, the artifact-file names, or the directory-move discipline. Sub 4 of cnos#404 is a wholesale extraction of an empirically-stable channel pattern; the wire-format invariants are preserved verbatim from the empirical practice.\n- This skill does NOT lift the channel pattern into a typed schema. Whether to type the channel-directory contents into `schemas\u002Fhandoff\u002Fartifact-channel.cue` is deferred; if a future cycle pressures the type-lift, the Markdown invariants reference the schema by `$ref` then.\n\n---\n\n## 8. Kata\n\n### Scenario\n\nγ is about to dispatch α on `cycle\u002FN`. The cycle is a substantial CDS-class cycle (mode = substantial); γ has already drafted the dispatch prompt with a populated implementation contract per `dispatch\u002FSKILL.md §2.3`. The channel directory `.cdd\u002Funreleased\u002FN\u002F` does not yet exist on `origin\u002Fcycle\u002FN`.\n\n### Expected reasoning\n\n1. **Scaffold write (cycle-start exception, §2.3 step 1).** γ writes `.cdd\u002Funreleased\u002FN\u002Fgamma-scaffold.md` per the per-role write ownership pattern (γ owns gamma-scaffold). γ commits and pushes to `origin\u002Fcycle\u002FN`. The binding gate at `cnos.cdd\u002Fskills\u002Fcdd\u002Fgamma\u002FSKILL.md §2.5` requires the scaffold's presence before α dispatch; γ has satisfied it.\n\n2. **α phase, intake.** γ dispatches α. α's intake polls `origin\u002Fcycle\u002FN`; the SHA advance from the scaffold commit wakes α. α reads `gamma-scaffold.md` (the scaffold is α's input per the sequential rule). α begins implementation per the dispatch prompt + scaffold.\n\n3. **α phase, primary artifact.** α writes `self-coherence.md` incrementally on the cycle branch (one section per commit per the CDS Large-file authoring rule). The final section append is the review-readiness signal — α appends `## Review-readiness | round 1 | ...` and pushes. This is α's signaled completion; the SHA advance wakes β.\n\n4. **β phase.** β reads α's primary artifact + the diff + the issue body (β does not modify α's primary artifact). β writes `beta-review.md` incrementally per round. On A verdict, β merges. (If RC, α appends a fix-round section to its own `self-coherence.md` — never to β's `beta-review.md` — and β re-reviews in a new round.)\n\n5. **Close-out phase.** α is re-dispatched after merge; α writes `alpha-closeout.md`. β writes `beta-closeout.md` (in the same β session as the merge per CDS Field 6 collapse). γ verifies both close-outs are on main; writes `gamma-closeout.md`; if `protocol_gap_count > 0` (or as a courtesy stub per cnos#401), writes `cdd-iteration.md` and adds a row to `.cdd\u002Fiterations\u002FINDEX.md`.\n\n6. **Release-time move (§2.4.2).** Before γ requests the tag from δ, γ moves `.cdd\u002Funreleased\u002FN\u002F` → `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` as part of the release commit (same commit as `RELEASE.md`). After the move, `.cdd\u002Funreleased\u002FN\u002F` no longer exists on main; the cycle's record is version-anchored at `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F`.\n\n7. **Post-release, immutable (§3.6).** The directory at `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` is immutable. Any subsequent correction goes in a follow-on cycle's close-out, in the post-release assessment, or in a doc-only release with its own version-snapshot.\n\n### Common failures\n\n- γ dispatches α before writing `gamma-scaffold.md` — the binding gate at γ §2.5 catches this at γ-side; β's rule 3.11b catches it at β-side if it survives.\n- β edits α's `self-coherence.md` to \"clarify\" something — sibling overwrite; rule 3.2 violation.\n- α appends a fix-round section to β's `beta-review.md` instead of its own `self-coherence.md` — sibling overwrite; rule 3.2 violation.\n- γ leaves `.cdd\u002Funreleased\u002FN\u002F` on main after release — rule 3.5 violation; future cycle on issue N collides with stale directory.\n- γ edits `alpha-closeout.md` post-release \"to add a missing finding\" — rule 3.6 violation; corrections go in a follow-on cycle.\n\n### Verification\n\n- The cycle directory exists on `origin\u002Fcycle\u002FN` after γ-scaffold commit; exists on main after merge; moved to `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` in the release commit.\n- All artifacts attribute commits to their owning role (`α-N:` \u002F `β-N:` \u002F `γ-N:` prefix convention).\n- No sibling-overwrite commits (a role committing to another role's owned artifact).\n- Post-release, `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` is unmodified.\n\n### Reflection\n\nA second γ reading the cycle's record (from the frozen `.cdd\u002Freleases\u002F{X.Y.Z}\u002FN\u002F` directory alone) should be able to reconstruct the cycle's full history — who wrote what when, what the review verdicts were, how findings were addressed, what the close-out triage decided — without consulting chat history, operator notes, or any out-of-band source. The channel carries the complete record.\n\n---\n\n**End of skill.**\n",{"name":5,"calls":44,"scope":49,"inputs":50,"parent":54,"outputs":55,"requires":59,"triggers":62,"visibility":69,"description":7,"kata_surface":70,"artifact_class":71,"governing_question":72},[45,46,47,48],"HANDOFF.md","mid-flight\u002FSKILL.md","dispatch\u002FSKILL.md","cross-repo\u002FSKILL.md","task-local",[51,52,53],"active CDD-class cycle on origin\u002Fcycle\u002F{N}","active role (α \u002F β \u002F γ; ε at close-out)","predecessor-role artifact(s) when applicable","handoff",[56,57,58],"per-role artifact written at .cdd\u002Funreleased\u002F{N}\u002F{filename}.md","SHA advance on origin\u002Fcycle\u002F{N} (the handoff signal to the successor role)","at release: cycle directory moved from .cdd\u002Funreleased\u002F{N}\u002F to .cdd\u002Freleases\u002F{X.Y.Z}\u002F{N}\u002F (frozen snapshot)",[60,61],"cycle\u002F{N} exists on origin","the role's predecessor (if any) has signaled completion via the channel (see §2.3 Sequential rule)",[5,63,64,65,66,67,68],"unreleased","per-role artifact","sequential handoff","cycle directory","frozen snapshot","release-time move","public","embedded","skill","How do α, β, and γ hand work to each other inside a single cycle — using a sequential per-role-owned write channel over .cdd\u002Funreleased\u002F{N}\u002F — without inventing the channel rules per cycle and without leaking matter back into the channel after merge?","main","fb527e6c4bfb75c71fa75d6471b3aa3da32106d4","src\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Fartifact-channel",0,"https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos","https:\u002F\u002Fgithub.com\u002Fusurobor","Coherence engineer. Building git-CN.","2026-11-07 14:25:44",{"source":8,"skillName":5,"commands":82,"prompt":92,"zipAvailable":93},[83,86,89],{"tool":84,"command":85},"npx","npx skills add usurobor\u002Fcnos --skill artifact-channel",{"tool":87,"command":88},"bunx","bunx skills add usurobor\u002Fcnos --skill artifact-channel",{"tool":90,"command":91},"pnpm","pnpm dlx skills add usurobor\u002Fcnos --skill artifact-channel","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Fartifact-channel\u002FSKILL.md",true,[95,101,106,110,114],{"path":96,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":99,"sourceHtmlUrl":100},"agents\u002Fopenai.yaml","REFERENCE","参考文档",149,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002Fagents\u002Fopenai.yaml",{"path":102,"resourceType":102,"resourceTypeDesc":103,"sizeBytes":104,"sourceHtmlUrl":105},"LICENSE","许可证",11357,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE",{"path":107,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fstreams.md",868,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002Freferences\u002Fstreams.md",{"path":111,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":112,"sourceHtmlUrl":113},"SOURCE.md",413,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSOURCE.md",{"path":115,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":116,"sourceHtmlUrl":117},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FTRUST.auto.yaml",[119,134,150,178,194,210],{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":39},"01M6CF8RWQPM0VXZG06XMR0FFX","issues\u002Ftriage","Issue triage doctrine pointer. Use when classifying a new issue, deciding dispatch eligibility, or deciding whether to close\u002Fsupersede\u002Fdefer.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002Fskills\u002Ftriage\u002FSKILL.md",[],[126,127,128,129,130,33,131,69,25,24,132,133],"triage","issues","issues triage","issue triage","SET","decision","issue","doctrine",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":39},"01M6CF8PJ812DD4APZ3WE8X67B","issues\u002Ftaxonomy","Issue label taxonomy pointer. Use when classifying an issue's kind\u002Farea\u002Fpriority\u002Feffort\u002Fstatus\u002Fprotocol\u002Fdispatch labels, or when the board needs to interpret them.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002Fskills\u002Ftaxonomy\u002FSKILL.md",[],[127,141,142,143,144,145,130,146,69,147,25,24,148,132,149],"taxonomy","issues taxonomy","github","status","protocol","open","board","github issue","issue labels",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":166,"publishedAt":39},"01M6CF8KBMZ4D0CDJQ3PF1YVTP","issues\u002Fmap","Issue-board (Issue Pivot) generation domain. Use when reasoning about `cn issues map`'s fetch, taxonomy-parse, effort-computation, and render pipeline, or about the board's JSON\u002FHTML output contract.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002Fskills\u002Fmap\u002FSKILL.md",[156,161],{"categoryNo":157,"categoryName":158,"taxonomyType":159,"taxonomyTypeDesc":160},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":162,"categoryName":163,"taxonomyType":164,"taxonomyTypeDesc":165},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[127,167,143,168,169,170,130,171,141,146,33,172,173,147,174,175,176,177,25,132],"issues map","reasoning","data","pipeline","api","json","README","edit","interactive","fetch","generated",{"skillNo":179,"name":127,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":39},"01M6CF8CZQH7G7B7RZPANQWR4G","cnos.issues package entrypoint. Use when reasoning about issue taxonomy, the Issue Pivot \u002F issue-board (`cn issues map`), the read-only CDS issue-state evaluator (`cn issues fsm evaluate`), or the current command-dispatch disposition of issue tooling.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.issues\u002FSKILL.md",[],[127,143,184,185,186,187,188,189,190,141,146,33,131,21,173,191,25,192,24,193],"pr","current state","run","artifacts","state","package","boundary","command","only","cds",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":200,"publishedAt":39},"01M6CF896XKSRQVB1CSHY8GSXB","receipt-stream","Cross-cycle receipt-stream doctrine for protocol-iteration. Use when γ closes a cycle and writes the per-cycle iteration artifact (`cdd-iteration.md`), when γ updates the cross-cycle aggregator at `.cdd\u002Fiterations\u002FINDEX.md`, when ε reads the receipt stream across cycles to surface protocol-gap patterns, when a finding's disposition lands a cross-repo patch and the cross-repo trace bundle attaches, or when a courtesy empty-findings stub is written for a `protocol_gap_count == 0` cycle.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Freceipt-stream\u002FSKILL.md",[],[201,54,187,145,202,33,203,204,205,69,28,27,206,20,25,70,207,208,209,133],"receipt stream","index","learning","format","trace","read","patch","shape","cdd",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":39},"01M6CF84VCBME6RK8V6HAVDM8Z","mid-flight","Mid-flight γ→in-flight-α rescue channel. Use when γ needs to change a load-bearing fact (pinned axis, scope, AC, blocker) after α has begun coding, when γ edits the cycle's GitHub issue body mid-cycle, or when a spec change lands on origin\u002Fmain while α\u002Fβ polling sessions are in-flight.","https:\u002F\u002Fgithub.com\u002Fusurobor\u002Fcnos\u002Fblob\u002Fmain\u002Fsrc\u002Fpackages\u002Fcnos.handoff\u002Fskills\u002Fhandoff\u002Fmid-flight\u002FSKILL.md",[],[217,143,218,219,220,221,33,222,223,21,28,206,25,192,24,224,148,225,22,19],"mid flight","change","sessions","file","cache","pin","coordination","up","Legacy"]