AGENT SKILL

epsilon

ε role in CDD — the CDD-specific instantiation of the generic ε doctrine. Reads receipt streams across cycles, surfaces `cdd-*-gap` findings, applies MCA discipline, and writes `cdd-iteration.md` when the cycle's receipt has `protocol_gap_count > 0`.

License 许可
Apache-2.0
所属仓库
usurobor/cnos
最近更新
2026-11-07
Stars
★ 9
Forks
0

01 前言 Front Matter

name
epsilon
scope
role-local
inputs
[ "the cross-cycle receipt stream", "cdd-gap findings", "the cycle receipt protocol_gap_count" ]
parent
cdd
outputs
[ "cdd-iteration.md recording durable cdd-protocol improvements when protocol_gap_count is above zero" ]
triggers
[ "cdd-iteration", "protocol-iteration", "epsilon" ]
description
ε role in CDD — the CDD-specific instantiation of the generic ε doctrine. Reads receipt streams across cycles, surfaces `cdd-*-gap` findings, applies MCA discipline, and writes `cdd-iteration.md` when the cycle's receipt has `protocol_gap_count > 0`.
kata_surface
embedded
artifact_class
skill
governing_question
How does ε turn `cdd-*-gap` findings from the receipt stream into durable cdd-protocol improvements without accumulating deferred debt?

03 SKILL.md 正文

Epsilon (CDD ε)

This is the CDD-specific instantiation of the generic ε doctrine declared in ROLES.md §4b. The kernel grammar — what ε observes (receipt streams across cells); the watched receipt fields (protocol_gap_count, protocol_gap_refs); the gap-class instantiation pattern ({protocol}-{axis}-gap); the iteration artifact rule (required only when protocol_gap_count > 0); the MCA discipline (ship-now / next-MCA / no-patch); the ε=δ collapse rule for small-protocol regimes — is inherited by reference. Only CDD-specific gap class names, the receipt-stream location, the iteration artifact path, and the aggregator location diverge for the engineering loss function per ROLES.md §4a.2.

§1 ε's CDD-side scope

ε's domain in cdd is protocol-iteration: the work of observing whether the cdd protocol is itself coherent — whether it selects the right gaps, closes them durably, and produces a system that learns from its own cycles rather than repeating the same class of error.

CDD-specific gap classes (per the {protocol}-{axis}-gap pattern in ROLES.md §4b.3):

  • cdd-skill-gap — a procedural skill (the active skill set loaded during the cycle) was underspecified or wrong for the failure pattern that surfaced. Patch lands in the affected skill file under src/packages/cnos.cdd/skills/cdd/.
  • cdd-protocol-gap — CDD doctrine itself (CDD.md, COHERENCE-CELL.md, RECEIPT-VALIDATION.md, ROLES.md) drifted from its intended invariant, or two surfaces disagree about the same rule. Patch lands in the canonical doctrine file.
  • cdd-tooling-gap — tooling absent, wrong, or environmentally unavailable blocked or distorted the cycle (the agent had to work around it). Patch lands in scripts/, CI workflows, or cnos.eng/ tooling packages.
  • cdd-metric-gap — a measurement the protocol expects is missing or wrong (e.g. mechanical-ratio threshold mis-calibrated, a CHANGELOG TSC field computed incorrectly). Patch lands in the measurement-emitting surface.

These are the CDD-specific trigger classes, distinct from cdr's research-failure classes (cdr-data-gate-gap, cdr-overclaim-gap, etc. per cnos.cdr/skills/cdr/epsilon/SKILL.md §1). The MCA-discipline shape (ship now / next-MCA / no-patch) is identical and inherited from ROLES.md §4b.5.

Receipt stream ε reads: .cdd/releases/{X.Y.Z}/{N}/receipt.yaml (after release) and .cdd/unreleased/{N}/receipt.yaml (during cycle). ε observes protocol_gap_count + protocol_gap_refs across cycles to surface patterns no single cycle could surface.

Iteration artifact: cdd-iteration.md, located at .cdd/unreleased/{N}/cdd-iteration.md during the cycle and migrated to .cdd/releases/{X.Y.Z}/{N}/cdd-iteration.md at release time (per release/SKILL.md §2.5a). For docs-only releases, the path uses the §2.5b form: .cdd/releases/docs/{ISO-date}/{N}/cdd-iteration.md. The per-finding shape is canonical at cnos.handoff/skills/handoff/receipt-stream/SKILL.md §1; the cdd-side runbook applies the rule at cycle close-out per post-release/SKILL.md §5.6b (pointer).

Cadence rule: cdd-iteration.md is required only when the cycle's receipt has protocol_gap_count > 0 — i.e. when the close-out triage produced ≥1 finding tagged cdd-skill-gap, cdd-protocol-gap, cdd-tooling-gap, or cdd-metric-gap. The receipt's protocol_gap_count == 0 is the no-gap signal; no iteration file is required when the cycle ran cleanly. This is the inherited rule from ROLES.md §4b.4 — the receipt is the always-present record of whether an iteration file is required; the file is the conditional record of what was found. The canonical wire-format home for the cadence rule + per-finding shape + aggregator-update procedure is cnos.handoff/skills/handoff/receipt-stream/SKILL.md; post-release/SKILL.md §5.6b is the cdd-side runbook (now a pointer to the canonical home).

Backward compatibility: existing empty-findings cdd-iteration.md files (written under the prior every-cycle rule) remain valid artifacts. They are no longer required under the new rule but are not invalid; future cycles with protocol_gap_count == 0 may simply omit the file.

Aggregator: .cdd/iterations/INDEX.md carries one row per cycle that produced an iteration artifact. The row format (eight pipe-separated columns: Cycle / Issue / Date / Findings / Patches / MCAs / No-patch / Path) and the per-row update procedure are canonical at cnos.handoff/skills/handoff/receipt-stream/SKILL.md §2.

Cross-repo trace: when a finding's disposition is patch-landed against a different repo, ε also writes a cross-repo bundle at .cdd/iterations/cross-repo/{counterpart-repo}/{slug}/ per cnos.handoff/skills/handoff/cross-repo/SKILL.md.

§2 ε's relationship to δ in CDD

The generic ε=δ collapse rule is declared in ROLES.md §4b.6; this section names the CDD-specific operating point.

In the current cnos cdd operating point — one active operator running a handful of cycles per day across a small number of repos — protocol-iteration volume does not justify a dedicated reviewer of the protocol. The operator (δ) naturally accumulates the longitudinal view ε requires and performs ε work as part of γ's Phase 4 (CDD iteration) and Phase 3 close-out triage. This is the ε=δ collapsed mode, and it is the default for cdd at current scale.

Separation becomes warranted when:

  • cdd-iteration.md is written with non-empty findings on most cycles, or
  • .cdd/iterations/INDEX.md accumulates faster than one actor can triage, or
  • the operator's operational load (δ) crowds out the reflective work (ε).

At that point, ε may be a distinct actor — a second agent or a dedicated human — who reads close-outs across cycles and drives protocol patches independently.

The role-collapse is one of the safe collapses (ROLES.md §4); contrast α=β (never safe).

§3 Cross-references

04 同仓库更多 Skills

usurobor
usurobor/cnos

issues/triage

Issue triage doctrine pointer. Use when classifying a new issue, deciding dispatch eligibility, or deciding whether to close/supersede/defer.

★ 9
usurobor
usurobor/cnos

issues/taxonomy

Issue label taxonomy pointer. Use when classifying an issue's kind/area/priority/effort/status/protocol/dispatch labels, or when the board needs to interpret them.

★ 9
usurobor
usurobor/cnos

issues/map

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/HTML output contract.

律师与法务前端开发
★ 9
usurobor
usurobor/cnos

issues

cnos.issues package entrypoint. Use when reasoning about issue taxonomy, the Issue Pivot / 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.

★ 9
usurobor
usurobor/cnos

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/iterations/INDEX.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.

★ 9
usurobor
usurobor/cnos

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/main while α/β polling sessions are in-flight.

★ 9