Produce the design artifact for a substantial change: incoherence, challenged assumption, impact graph, acceptance criteria, and leverage.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
["design artifact with impact graph","acceptance criteria","file changes","leverage and negative leverage"]
requires
["substantial change or explicit design need"]
calls
[]
Design
Core Principle
Coherent design: every decision traces to a named incoherence, and every artifact affected by the decision is enumerated before implementation begins.
If you can't name the incoherence, you don't have a design problem. If you can't enumerate what your change affects, you don't have a design โ you have a guess.
Algorithm
Define โ name the incoherence, the parts, and the failure mode.
Unfold โ walk the design through problem, constraints, impact graph, proposal, acceptance criteria, and file changes.
Rules โ make each subsection mechanically actionable with explicit โ/โ examples.
1. Define
1.1. Identify the parts
Problem (the named incoherence)
Constraints (what can't change, what contracts govern)
Proposal (what to build, with types and interfaces)
Impact graph (what consumes, produces, or copies the changed thing)
Acceptance criteria (specific file + specific check + pass/fail)
โ "We need better version handling" (unnamed incoherence)
โ "Version is duplicated in 5 files with no single source of truth โ #22" (named, numbered)
โ "Actor FSM allows IdleโProcessing but daemon never checks for re-entry โ #12" (named, located)
1.2. Articulate how they fit
The problem names what's wrong; constraints bound what you can touch; the proposal changes the minimum to close the gap; the impact graph ensures nothing is missed; ACs verify the gap is closed
Design fails via incomplete impact tracing โ changing the node without following the edges. The proposal fixes one artifact but breaks or neglects the artifacts that consume it.
โ "Updated the skill, canonical doc will catch up later"
โ "Skill declares canonical doc as authority โ canonical doc must be updated in the same change, or authority claim must be explicitly narrowed"
2. Unfold
2.1. Problem
State the incoherence precisely before proposing anything.
2.1. Name the incoherence, not the feature
โ "Add a VERSION file" (solution, not problem)
โ "Version is duplicated across 5 files โ bumping requires 5 manual edits, forgetting any breaks CI" (incoherence)
2.2. Distinguish schema from population
โ "Lockfile doesn't support package versions" (wrong โ schema has version/source/rev/subdir)
โ "Lockfile schema has version field but first-party entries populate it with placeholder 1.0.0" (population problem)
2.3. Show evidence
โ "This has caused problems"
โ "v3.8.0 shipped with v3.7.4 version string. Three patch releases to fix. Pi reported v3.7.3 when binary was v3.8.2."
2.4. Enumerate all failure modes
โ "cn update version comparison is broken" (one failure mode)
โ "Three independent failures: CI doesn't upload assets (404), binary naming mismatch (x64 vs x86_64), version-only comparison (no same-version patches)" (all three)
2.2. Constraints
Identify what governs before proposing what changes.
3.1. Name existing contracts
What authority relationships exist? What documents govern on disagreement?
โ "We'll update the skill"
โ "Skill ยงAuthority says canonical doc governs on disagreement โ so canonical doc must be updated, or authority claim must be narrowed"
3.2. Name the abstraction level
โ "Use language-specific build metadata as version source" (wrong level for system manifests, lockfiles, tests, status)
โ "VERSION file is language-agnostic, sits above all consumers: build system, system manifest, package manifests, lockfiles, tests, CI"
3.3. Name what can't change
โ Proposal silently breaks an existing interface
โ "Lockfile format is consumed by cn deps restore โ schema stays, population changes"
3.4. Name the architecture assumption you are challenging
State which existing boundary, ownership model, or system assumption is no longer serving the system.
โ "We need a cleaner design"
โ "This change challenges the assumption that every new capability family must be hardcoded in trusted core"
โ "This change challenges the assumption that communication is just a capability rather than a body/medium subsystem"
2.3. Impact Graph
This section is not optional. Trace everything the change touches.
4.1. Enumerate downstream consumers
What reads, renders, or acts on the artifact you're changing?
โ Update CDD skill, forget post-release template consumes the new metrics
โ "cnos.cds/skills/cds/CDS.md ยง"Assessment" โ ยง"PRA contents" defines metrics โ post-release template must render them โ review skill must tag findings by type"
โ "Adding a new FSM state โ check: protocol interface, doctor checks, status output, packed context renderer, tests"
4.2. Enumerate upstream producers
What produces the inputs your design depends on?
โ "Tests will use the version" (which version? from where?)
โ "VERSION file โ build generates version module โ core library reads it โ tests derive from the exported version constant"
4.3. Enumerate copies and embeddings
Where does the same information appear in multiple places?
โ "Update src, packages will sync"
โ "src/packages/cnos.cdd/skills/cdd/CDD.md is the canonical source; docs/development/cdd/CDD.md is a human-facing pointer and must continue to point to the right canonical path"
4.4. Name authority relationships
If two artifacts carry the same information, which governs?
โ Both skill and canonical doc have the rule, unclear which wins
โ "cnos.cds/skills/cds/CDS.md is the normative source for the software-cycle lifecycle algorithm (CDD.md owns the generic CCNF kernel). Role skills (alpha/, beta/, gamma/) expand execution detail for their role. Each fact lives in exactly one place โ skills do not restate canonical rules, they add role-local detail that CDS.md does not cover."
4.5. Trace rule changes through all embeddings
When you add a rule, find every artifact that embeds, templates, or implements that rule
โ Add review quality metrics to CDS, forget post-release template still has old 4-section output
If the proposal adds artifacts, gates, or process, state:
who must produce them
who consumes them
why a lighter alternative is insufficient
โ "Require another artifact for rigor"
โ "Require SELF-COHERENCE.md for governance branches because reviewer and releaser need branch-local proof that the branch followed the process it defines"
5.8. State the automation boundary
Say what should remain human judgment and what should become script/CI/lint.
โ "Reviewers will keep checking stale paths manually"
โ "Artifact presence, placeholder rendering, and stale path refs should be automated; ฮฑ/ฮฒ/ฮณ judgment remains human"
5.9. Simplest thing that closes all failure modes
KISS/YAGNI, but don't confuse "simple" with "incomplete"
โ "Fix version comparison" (1 of 3 failure modes โ CI upload and naming still broken)
โ "Three failures, three fixes: CI uploads assets, naming made consistent, comparison includes commit hash"
5.10. Name what you're not doing
โ Non-goals absent
โ "V1 does not: score ฮฑ/ฮฒ/ฮณ semantically, decide MCA vs MCI correctness, replace review dialogue"
2.5. Acceptance Criteria
ACs are the contract between design and implementation.
6.1. Map each AC to a specific file and check
โ "The system handles version coherence correctly" (unfalsifiable)
โ "grep -rn for version string returns exactly one source file (VERSION)" (file + check + pass/fail)
6.2. No charitable interpretation
Each AC must be mechanically verifiable โ not "I believe this is met because..." but "file X, line Y, present: yes/no"
โ "AC4 is met because ยง11.11 covers review metrics" (belief, not evidence)
List every file that needs to change, grouped by action.
9.1. Create / Generate / Edit / Delete
โ "Update the relevant files" (which ones?)
โ "Create: VERSION. Generate: version module. Edit: core library, package manifest, dependency config, system config, runtime contract, 3 test files."
9.2. Name the specific change per file
โ "Edit cn_deps.ml"
โ "Edit cn_deps.ml โ default_manifest_for_profile uses current first-party version, not ^1.0.0; lockfile_for_manifest uses exact version + cnos_commit"
3. Rules
3.1. Output Format
This is the cycle-artifact form (working cell) โ the shape a design carries while the design cycle runs. It is not the promoted reader-surface form; see ยง3.2 for what to strip when the artifact becomes a canonical doc.
# [Title]**Issue:** #NN
**Version:** X.Y.Z
**Mode:** MCA / MCI
**Active Skills:** [2โ3 governing skills for this change]
**Engineering Level:** L5 / L6 / L7 *(optional โ if used, must be paired with active skills)*## Problem
[Named incoherence with evidence]
## Constraints
[Existing contracts, abstraction levels, what can't change]
## Challenged Assumption
[Which boundary / ownership model / architecture assumption is being replaced]
## Impact Graph
[Downstream consumers, upstream producers, copies, authority relationships]
## Proposal
[Types โ interface โ workflow, with design principles governing trade-offs]
## Leverage
[What future work becomes easier / unnecessary / safer]
## Negative Leverage
[What gets heavier, riskier, or more complex]
## Alternatives Considered
| Option | Pros | Cons | Decision |
## Process Cost / Automation Boundary
[If this adds process/artifacts/gates: who pays, who consumes, what should be automated]
## Non-goals
[What V1 deliberately excludes]
## File Changes
[Create / Generate / Edit โ specific file, specific change]
## Acceptance Criteria- [ ] [file + check + pass/fail]
## Known Debt
[What remains after this change]
## CDD Trace
| Step | Artifact | Skills loaded | Decision |
|------|----------|--------------|----------|
| 0 Observe | โ | โ | [observation inputs and selected signal] |
| 1 Select | โ | โ | [selected gap] |
| 4 Gap | this artifact | โ | [named incoherence] |
| 5 Mode | this artifact | [active skills] | [work shape, level if used, mode] |
| 6 Artifacts | [artifact name] | โ | [design/plan/tests/docs progress] |
3.2. Promotion
The ยง3.1 form is a working cell. It lives in the .cdd/ cycle record, the PR body, or the issue โ dotdirs and .github, which are exempt from the current-state rule. Git history preserves it.
When a design artifact is promoted to a canonical reader-surface document (docs/reference/**, docs/architecture/**), strip it to current state. The reader of a spec needs what the system is now, not the cycle that produced it.
Retain:
The governed header โ Version: / Status: / Doc-Class: where applicable
## Purpose
The spec body (the actual contract, types, interfaces, semantics)
## Alternatives / ## Migration / ## Non-goals
Fold genuine present-day limits into ## Limitations
Drop โ these are cycle apparatus; git history preserves them in the working cell:
Mode / Active Skills / Engineering Level
## Impact Graph
## File Changes
## Acceptance Criteria
## CDD Trace
โ Land the ยง3.1 artifact verbatim under docs/reference/ โ the promoted spec now carries Mode, an impact graph, and a CDD Trace the reader does not need
โ Promote the spec body under a governed header; the Mode / AC / CDD Trace stay in the cycle record, retrievable from git history
3.3. Keep the CDD Trace in the primary branch artifact
If this design artifact is the primary branch artifact for a substantial cycle, it must carry the CDD Trace.
โ Mode and active skills stated, but no trace of when or why they were chosen
โ The design artifact records observation, selected gap, mode, active skills, and artifact progress
If another artifact is the primary branch artifact, point to it explicitly.
3.4. Pre-Submission Checklist
Before requesting review:
Problem stated as named incoherence with evidence
Schema vs population distinguished (if data structures involved)
All failure modes enumerated (not just the first one found)
Constraints from existing contracts identified
Abstraction level of the solution matches the scope of the problem
Challenged architecture assumption named explicitly