git:20260828.d8eb9d8 to git:20260828.1cff50e

162 added, 215 removed. Audit A to A.

---
name: cp-skill-write-multistage
- description: Write or rebuild a KB artifact with source-first reconstruction, consolidated authorship, independent review, and guarded promotion. Use when claims need grounding, synthesis, or separation across multiple artifacts; avoid it for settled local edits.
+ description: Write or rebuild one unsettled KB artifact through source-first reconstruction, consolidated authorship, independent review, and guarded promotion. Use when claims need grounding or synthesis; avoid it for settled local edits.
type: kb/types/instruction.md
user-invocable: true
allowed-tools: Read, Edit, Write, Grep, Glob, Bash, Skill, Task
argument-hint: "[target path | collection/type/topic] [source paths or brief]"
context: fork
---
# cp-skill-write-multistage
- Produce one supported KB artifact without exposing source reconstruction to the incumbent or promoting bytes an independent reviewer did not accept.
+ Produce one supported KB artifact while preserving the user's contribution and
+ leaving evidence-dependent choices to fresh workers. The live target remains
+ untouched until an independent reviewer accepts its exact candidate bytes.
- ## EXECUTE NOW
+ ## Execute now
**Target and inputs: $ARGUMENTS**
- Use this when grounding, synthesis, or separation leaves claims, evidence, or artifact shape unsettled.
- Confirm before routing a settled edit to `cp-skill-write` or work without a library target to a workshop.
-
- The invoking agent is the **parent**. It owns admission, brief and evidence, run state, decisions,
- invalidation, grounding, scheduling, integration, live mutation, concurrency, promotion, validation,
- lineage, recovery, cleanup, and reporting. The target stays untouched until promotion; workflow state never enters its frontmatter.
-
- The universal writing path uses only three worker roles: isolated source reconstructor, consolidated
- candidate author, and fresh independent reviewer. Do not add a core planner, skeleton writer,
- draft-only writer, auditor, acceptor, or repairer. No core worker may delegate. A loaded conditional
- procedure may use only the workers, artifacts, and callee-internal calls it explicitly authorizes;
- the parent still schedules and integrates them, and no other delegation is allowed. If fresh contexts
- are unavailable, initialize the run and stop before reconstruction.
-
- ## 1. Admit and initialize
+ Use this workflow when the intended contribution is known but its claims,
+ evidence, or synthesis remain unsettled. Route a settled edit to
+ `cp-skill-write`. Keep work with no authorized library target in a workshop.
- Resolve one target, mode, collection, type, authority, and done state.
+ The invoking agent is the **parent**. It fixes the commission and authority
+ boundary, supplies privileged context, schedules workers, integrates returns,
+ owns all live mutations, and handles recovery. Workers choose investigative,
+ structural, and prose means inside their assigned result and evidence boundary.
- Resolve the target collection to a directory under `kb/`, require a local `COLLECTION.md`, and read
- that contract in full. Stop if the selected collection has no local contract.
+ Use three roles: a fresh source reconstructor, one fresh consolidated author,
+ and a fresh independent reviewer. Workers write only their run artifacts and
+ do not delegate. Conditional procedures may add roles only where they
+ explicitly say so. If the harness cannot provide the required fresh contexts,
+ initialize the run and stop before reconstruction.
- - **Edit:** require an existing Markdown target. Read its frontmatter type spec when present.
- Frontmatter without `type:` stops; no frontmatter means implicit `text`. Run one backlinks
- query. Before workers run, save byte-exact `original.md` and its lowercase SHA-256. The incumbent
- is a reconciliation input, drift baseline, and rollback source, never evidence for itself.
- - **New:** resolve the supplied collection, type, topic, or path. Default to `kb/notes/` and
- `kb/types/note.md`; an instruction without a collection goes to `kb/instructions/`. Reject
- `kb/work/`. Verify an explicit type path. Resolve shorthand across global and collection-local
- type specs and require exactly one matching `name:`; stop on zero or several. Explicit `text`
- means no frontmatter. Run one targeted near-duplicate search. Keep a valid user path fixed;
- otherwise use a provisional lowercase-hyphenated filename of at most 70 characters.
+ ## 1. Commission one artifact
- A filename may change later only for the same provisional new artifact. A change of identity, mode,
- collection, or type restarts setup. Never mutate a near duplicate or retarget without authority.
+ Resolve one target, mode, collection, type, and acceptance condition. Read the
+ target collection's `COLLECTION.md` and the applicable type contract in full.
+ Stop if the collection has no local contract or the target identity is
+ ambiguous.
- Create or resume
- `kb/work/multistage/multistage-write-<short-topic>-<YYYYMMDD>/` with an immutable run key. Resume
- one matching unfinished run; ask if several match. Add a suffix only after proving a collision is a
- different valid run. A matching or ambiguous directory without valid state is a recovery stop.
- Maintain its exact `kb/work/README.md` line without overwriting unrelated work; if overlap prevents
- that, record and report the pending index update.
+ - **Edit:** require an existing Markdown target. Frontmatter without `type:` is
+ invalid; no frontmatter means implicit `text`. Save byte-exact `original.md`,
+ its lowercase SHA-256, and one backlinks query before any worker runs. The
+ incumbent is a reconciliation and rollback input, never evidence for itself.
+ - **New:** resolve the requested collection and type. Default to `kb/notes/`
+ and `kb/types/note.md`; an instruction goes to `kb/instructions/`. Reject
+ `kb/work/` as a library target. Verify an explicit type path or resolve type
+ shorthand to exactly one type spec. Run a targeted near-duplicate search.
+ Preserve a valid user-supplied path; otherwise use a provisional filename.
- Keep a small run `README.md`: identity and contracts, sources, current step, one blocker, handoffs,
- grounding results, candidate/review digests, whether post-review reconciliation was used, and checks. Keep `brief.md`,
- `reconstruction.md`, `claim-disposition.md`, `candidate.md`, immutable review records, and
- edit-only `original.md`. Do not require claim architecture, skeleton, separate draft, mutable audit,
- separate acceptance, or copied sources; pin only for a concrete identity risk. Scratch is not run state.
+ A change of identity, mode, collection, or type restarts setup. A retitle,
+ replacement, fold, merge, retirement, or artifact-set change requires explicit
+ user authority; never infer it from a worker recommendation.
- ## 2. Freeze intent and evidence
+ Create or resume one
+ `kb/work/multistage/multistage-write-<short-topic>-<YYYYMMDD>/` run. An
+ ambiguous or malformed matching run is a recovery stop, not a reason to create
+ another. Maintain its exact `kb/work/README.md` entry without overwriting
+ unrelated edits.
- Write `brief.md` from current direction or named retained intent with an explicit authoritative or
- advisory role. Current direction prevails; conflict stops. Do not search raw interaction history,
- derive purpose from the incumbent, or let contracts choose the contribution. Label parent proposals.
+ Keep only durable run state:
- Record question, contribution, audience, scope, done state, acceptance, constraints, privileged facts,
- external commitments, coupling, target authority, evidence paths and roles, exclusions, and reserved
- choices. Acquire and verify every source needed for the governing question before reconstruction.
- When a required source lacks a readable authorized path, use the `cp-skill-ground` call and result
- contract in Section 5 with the tracked ingest or authorized canonical URL and the exact source-side
- question. Obtain user authority first for an agent-nominated untracked URL. Include substantive
- evidence produced here in the first reconstruction. For a blocker use `DECISION NEEDED: intended contribution (specification gap)`,
- `DECISION NEEDED: central contribution`, `EVIDENCE NEEDED`, or `DEFINE`; record owner and resume point, then stop.
+ - `README.md` — identity, contracts, current stage, blocker, handoffs, hashes,
+ grounding results, checks, and whether the repair allowance was used;
+ - `brief.md`, `reconstruction.md`, `claim-disposition.md`, `candidate.md`;
+ - immutable `review-01.md` and, if needed, `review-02.md`;
+ - `original.md` for edits.
- Only for an explicit external duplication, subsumption, or keep/rewrite/thin/merge/retire/cohort
- question, execute `assess-a-claim-bearing-artifact-against-external-literature.md` from
- `kb/instructions/` in the source checkout or `kb/commonplace/instructions/` when installed. It
- owns source candidacy, comparison, disposition, and calls to `cp-skill-ground`; do not duplicate it.
- Add its required assessment records to this run. When that procedure authorizes bilateral isolation,
- its fresh target worker, target-blind source/grounding worker, and isolated comparison worker may
- write `target-claim-inventory.md`, `source-reconstruction.md`, and `isolated-comparison.md`; this is
- the exact conditional exception to the three-role core. The multistage parent retains final
- authorship, review, promotion, and integration. Separate source-only records from incumbent-aware
- records when constructing later packets. Do not load it for ordinary grounding, synthesis, or
- revision. Stop on an interface or authority gap.
+ Scratch, copied sources, skeletons, and separate planning or acceptance files
+ are optional worker means, not workflow state.
- ## 3. Reconstruct in isolation
+ ## 2. Freeze intent and reconstruct sources
- Launch a fresh report-only worker with this complete packet:
+ Write `brief.md` from the user's current direction or named retained intent.
+ Record what workers cannot recover safely: the intended contribution, audience
+ and acceptance boundary, mutation authority, binding constraints and external
+ commitments, authorized sources and their roles, exclusions, and choices
+ reserved to the user or parent. Label parent proposals as advisory. Do not
+ derive the contribution from the incumbent or search raw interaction history.
+ Stop on conflicting authority or when several materially different central
+ contributions still fit.
- - **Result and constraints:** reconstruct enough authorized source evidence to answer `brief.md`.
- Separate support from inference; retain source roles, conflicts, scope, uncertainty, and proportional
- detail; invent no precision; do not delegate.
- - **Inputs and exclusions:** read only `brief.md`, its exact source-only paths, and named collection
- or type contracts. Exclude the target, `original.md`, incumbent-aware assessments, earlier
- reconstruction/disposition, planning or scratch, candidate, reviews, and incumbent-derived text.
- The brief must therefore contain no incumbent paraphrase.
- - **Output and coordination:** write only `reconstruction.md`; the parent alone schedules and
- integrates it, and no other writer touches it.
- - **Verification and stop:** record material facts, mechanisms, distinctions, quantities, definitions,
- evidence strength, conflicts, labeled inferences, gaps, and irrelevant detail with each material
- basis and boundary. Stop on a missing input or governing gap with `EVIDENCE NEEDED` or `DEFINE`.
+ Acquire every source needed for the governing question. If an external source
+ needs ingestion or retained quotations, use the grounding interface in section
+ 4 before treating it as available evidence.
- The parent verifies and freezes the output before incumbent-aware work. Never append reconciliation
- or review findings. Changed premises require a new fresh run of this role.
+ For an explicit external duplication, subsumption, keep/rewrite/thin,
+ merge/retire, or cohort question, run
+ `kb/instructions/assess-a-claim-bearing-artifact-against-external-literature.md`
+ (or its installed Commonplace path). That procedure owns source candidacy and
+ comparison. Its explicitly authorized bilateral-isolation workers are the only
+ exception to this workflow's three-role topology.
- ## 4. Author disposition and candidate
+ Launch a fresh source reconstructor. Give it `brief.md`, the authorized
+ source-only paths, and the exact collection/type contracts it needs. Do not
+ give it the target, `original.md`, incumbent-derived material, prior run
+ interpretations, candidates, or reviews. Its result is a source-faithful basis
+ for the commissioned artifact: distinguish support from inference, preserve
+ conflicts, scope, uncertainty, and source roles, and expose governing evidence
+ or definition gaps. It owns only `reconstruction.md`; its internal organization
+ and investigative sequence are its choice.
- Launch one author role with staged incumbent reveal and this complete packet:
+ The parent verifies that the reconstruction answers the brief from authorized
+ sources and then freezes it. A changed governing premise or substantive new
+ evidence invalidates this stage and every dependent stage.
- - **Result and constraints:** write a complete disposition, then exact target-compatible candidate
- bytes. Preserve evidence roles, scope, qualifiers, uncertainty, definitions, dependencies, simple
- wording, and target contracts. Add no undisposed claim; do not delegate or infer mutation authority.
- - **Output and coordination:** write only `claim-disposition.md` and `candidate.md`. The parent
- controls reveals, decisions, and feedback. The worker cannot mutate target, run state, sources,
- ingests, lineage, index, siblings, near duplicates, citers, or other artifacts.
+ ## 3. Give one author staged evidence
- **First reveal:** provide only brief, frozen reconstruction, exact target contracts, source-only
- literature records, and any bounded read-only duplicate/premise search whose scope and purpose the
- packet names and which excludes the target. Exclude original, target, incumbent-aware comparisons,
- prior dispositions, candidates, and reviews. The author writes only `## Source-first disposition`.
- For every material reconstructed commitment, record basis, scope, qualifiers, dependencies,
- definitions, unsupported status or gap, independent-claim boundary, and one treatment:
- central/type-required content, support/example/scope, cite existing, proposed fold, separate-artifact
- handoff, omit, or evidence/authority gap. Name the existing or proposed target and the useful
- citation or revision boundary when relevant. A claim-bearing note normally has one importable central
- proposition; `synthesis` requires the relation among citable components to be central; instructions
- and similar types may have their required multiple commitments.
+ Use one consolidated author so claim selection and prose remain one coherent
+ judgment. Its result is a complete target-compatible candidate whose material
+ commitments are accounted for. It owns only `claim-disposition.md` and
+ `candidate.md`; it cannot change the live target, sources, ingests, indexes,
+ lineage, siblings, or run control.
- The parent verifies and freezes that section. **Second reveal:** give the same role byte-exact
- `original.md` and named incumbent-aware assessments, or confirm new mode. It appends
- `## Incumbent reconciliation`, mapping each material incumbent commitment to keep/change/omit and
- making replacement, fold, retitle, merge, retirement, and artifact-set effects explicit. The
- incumbent supplies no warrant.
+ First give the author only `brief.md`, frozen `reconstruction.md`, exact target
+ contracts, source-only assessment records, and any explicitly bounded
+ duplicate or premise search. Exclude the target, `original.md`, incumbent-aware
+ comparisons, prior candidates, and reviews. The author records how every
+ material reconstructed commitment is treated, including its basis, scope,
+ qualifiers, dependencies, unsupported boundary, and destination. The author
+ chooses the disposition format.
- - **Stop:** before prose, return any user-owned central contribution or mutation choice and its resume
- point. Broader work is only a handoff.
- - **Complete and verify:** after gates clear, write `candidate.md`. The author chooses decomposition,
- order, paragraphs, examples, and wording. Preserve valid metadata and links unless authorized
- change requires otherwise; remove `user-verified` after substantive change unless a human verifies
- these bytes; resolve links from the final destination. A new commitment first updates disposition
- or returns upstream. The parent checks both disposition sections, claim coverage, contracts, and
- write scope.
+ After the parent verifies and freezes that source-first account, give the same
+ author `original.md` and any named incumbent-aware assessment, or confirm new
+ mode. It reconciles every material incumbent commitment and makes every
+ replacement, omission, fold, retitle, merge, retirement, or artifact-set
+ effect explicit. The incumbent supplies no warrant.
- Feedback returns through the parent. A premise change before any completed review invalidates the
- affected stages and repeats both reveals with a fresh author when source-first isolation was lost; it
- does not consume the post-review reconciliation allowance.
+ The author then writes exact candidate bytes. It chooses decomposition, order,
+ examples, and wording within the brief, evidence, and target contracts. It
+ preserves valid metadata and links unless an authorized change requires
+ otherwise, removes `user-verified` after substantive change unless a human
+ verifies these bytes, and resolves links from the final destination. A new
+ material commitment first returns to disposition; a user-owned contribution
+ or mutation choice returns to the user with the exact decision and resume
+ point.
- ## 5. Ground named source dependencies
+ ## 4. Ground named source dependencies
- Before review, identify each new or materially changed candidate claim that depends on a named external
- source; unchanged edit wording and passing mentions do not retrigger the gate. For an exact dependency
- already grounded by the external-literature procedure, consume and verify its current grounding
- result instead of calling the skill again. For each new or unresolved dependency, invoke
- `cp-skill-ground` with exactly:
+ Before review, identify each new or materially changed candidate claim that
+ depends on a named external source. For every dependency not already grounded
+ by the literature procedure, invoke `cp-skill-ground` with exactly:
```text
Target: <exact ingest path or authorized canonical source URL>
Claim needed: <source-side proposition or question>
```
- Never include target prose or target-specific transfer reasoning. Get user authority before passing
- an agent-nominated untracked URL because the callee may invoke `cp-skill-ingest`. The callee owns
- resolution, permitted ingest creation, and the only allowed reuse or append in an ingest's Quotes
- section; it validates or restores that mutation and never edits target or other ingest sections. This
- parent never edits or creates an ingest.
-
- For `quotes sufficient` or `quotes added`, read complete Quotes, use only its verbatim extracts,
- apply `semantic/grounding-alignment`, and use an unmarked ingest link; record path and returned
- appended text for `quotes added`. For `snapshot required`, follow the returned name-paired snapshot
- and gate requirements and retain the exact `(snapshot required)` marker. Any blocker, including the
- exact `re-ingest.md` route, stops the run; never bypass it or invoke `cp-skill-ingest` directly.
- Substantive new evidence invalidates reconstruction. Waiting is not completion.
-
- ## 6. Review and reconcile
-
- After grounding, hash exact candidate bytes. Launch a fresh reviewer who did not author or revise
- them; changed bytes require a different fresh reviewer. Its complete packet is:
+ Do not pass target prose or target-specific transfer reasoning. Obtain user
+ authority before using an agent-nominated untracked URL. The grounding skill
+ alone owns ingest resolution and permitted Quotes mutations.
- - **Result and constraints:** decide whether those exact bytes may be promoted. Use only authorized
- inputs; anchor findings; edit nothing; do not delegate; return exactly `accept` or `block`.
- - **Inputs and exclusions:** read candidate and full SHA-256, brief, reconstruction, disposition,
- edit-only original when present, exact target contracts, parent-supplied grounding results, and
- every authorized external-literature assessment record when that branch ran. Exclude target,
- parent conversation, scratch, prior reviews, and every unnamed path.
- - **Output and coordination:** write only immutable `review-01.md`, or `review-02.md` after
- reconciliation, naming the full digest. The parent verifies and acts; the reviewer neither contacts
- the author nor repairs.
- - **Verification and stop:** check candidate/incumbent delta against disposition, then intent and
- omissions, shape, evidence and grounding, specificity/audience/relevance, and compression/prose.
- Each finding gives anchor, basis, byte-change requirement, and a block's upstream return. End with
- a line containing only `accept` when no byte change is required, otherwise `block`; absent or
- mismatched input requires `block`.
+ - For `quotes sufficient` or `quotes added`, verify the ingest's complete
+ Quotes section, apply `semantic/grounding-alignment`, and record the result;
+ retain the appended text for `quotes added`.
+ - For `snapshot required`, follow the returned snapshot and gate requirements
+ and retain the exact `(snapshot required)` marker.
+ - Any blocker, including a `re-ingest.md` route, stops this run. Do not bypass
+ the result or invoke `cp-skill-ingest` directly.
- Recompute the digest after return. Acceptance applies only to matching unchanged bytes. Never mutate
- a review record. A malformed, missing, or unavailable review is a worker-failure stop; it neither
- authorizes promotion nor consumes semantic reconciliation. Every admitted run,
- including a no-change candidate, needs final `accept`.
+ Substantive evidence added here returns to reconstruction. Waiting for evidence
+ is not completion.
- The run has one post-review reconciliation allowance. Consume it the first time candidate bytes
- change after a well-formed completed review, whether that review returned `accept` or `block`.
- Missing evidence returns to evidence then reconstruction; missing authority returns to the user then
- disposition; a supported finding within settled claims returns to the author. Update upstream
- artifacts and rerun grounding. Changed bytes get a new digest and different fresh reviewer. A second
- `block`, or any further need to change candidate bytes after review, stops with records and workshop
- retained. Metadata, whitespace, links, validator repair, and rebase are byte changes.
+ ## 5. Review exact bytes and allow one repair
- Clear every dependent completion:
+ Hash `candidate.md`. Launch a fresh reviewer who did not author or revise it.
+ Give the reviewer the exact candidate and digest, brief, reconstruction,
+ disposition, edit-only original, target contracts, grounding results, and any
+ authorized literature-assessment records. Exclude the live target, parent
+ conversation, scratch, and prior reviews.
- | Change | Resume |
- |---|---|
- | Target identity, mode, collection, or type | Setup |
- | Question, result, audience-bearing acceptance, evidence, or substantive new evidence | Reconstruction |
- | Choice among reconstructed claims or authority for replacement, fold, retitle, merge, retirement, or artifact set | Disposition |
- | Disposition only | Candidate |
- | Candidate bytes | Fresh review |
- | Live-target drift | Stop for abandon/rebase; authorized unchanged-evidence rebase returns to disposition |
+ The reviewer decides whether those exact bytes may be promoted. It checks the
+ candidate/incumbent delta against disposition, then intent and omissions,
+ contract fit, evidence and grounding, specificity, relevance, and prose. Each
+ blocking finding names its anchor, basis, required byte change, and upstream
+ return. It writes only immutable `review-01.md` (or `review-02.md` after repair),
+ names the full digest, and ends with a line containing only `accept` or `block`.
+ It edits nothing and chooses no repair.
- ## 7. Promote and close
+ The parent verifies the output and recomputes the digest. Missing, malformed,
+ or mismatched review is a worker-failure stop. Every run, including a no-change
+ candidate, requires `accept` for unchanged bytes.
- Only the parent promotes. Require no blocker; grounding passed; candidate SHA-256 equals final
- `accept`; destination-relative frontmatter, required sections, and links pass preflight; and the
- live edit target still equals `original.md`, or the new target is absent. Never auto-overwrite or
- auto-rebase. A digest is not a lock; compare and write in one parent-controlled sequence.
+ One post-review repair is allowed. Any candidate-byte change after a
+ well-formed review consumes it, including metadata, whitespace, links,
+ validator repair, or rebase. Return missing evidence to reconstruction,
+ missing authority to the user and disposition, and a supported finding within
+ settled claims to the author. Rerun grounding and use a different fresh
+ reviewer. A second `block` or any further required byte change stops with the
+ workshop retained.
- An edit retitle needs explicit authority and stays separate from substantive replacement. Dry-run
- `commonplace-relocate-note <old-path> --to <final-path>`; require the destination absent and inspect
- every reported move, Markdown rewrite, and ProperDocs change. Stop if the report includes
- `original.md`, `candidate.md`, a frozen reconstruction/disposition, or an immutable review record.
- Before `--apply`, require mutation and separate-commit authority plus a concrete authorized recovery
- mechanism covering the move, destination absence, every reported Markdown file, and ProperDocs. If
- that complete recovery path is unavailable, stop after the dry run and report the retitle blocker.
+ When new evidence invalidates reconstruction after the author has seen the
+ incumbent, rerun reconstruction in a fresh source-only context and repeat both
+ reveals with a fresh author. Reconfirming byte-identical candidate content does
+ not spend another repair; any additional byte change does.
- Re-run the exact command with `--apply`. The command is non-transactional. On error, stop, inventory
- the actual state, execute only the preauthorized recovery, and verify every affected path before any
- other edit. On success, require the old path absent and destination present; require the diff to
- contain only the reported address-preserving mutations; re-hash candidate and accepting review
- against their pre-apply hashes; and validate the relocated target, every changed Markdown file, and
- the redirect map when ProperDocs changed. Any mismatch or invalid output stops and uses the recovery
- path. Keep a successful address-only relocation pure and separate under repository commit policy.
- Capture byte-exact `relocated-original.md` as the new drift and substantive rollback baseline;
- before replacement require it unchanged. Candidate title, frontmatter, and links must already fit
- the destination. The command does not change the title or frontmatter and does not preserve review
- freshness.
+ Invalidate only what the changed premise affects:
- Write only accepted candidate bytes, then run `commonplace-validate <target>`. On failure restore
- `original.md`, or `relocated-original.md` after relocation, byte for byte; remove a new target.
- Verify recovery, retain the workshop, and report failures. Never patch live bytes after acceptance;
- repair and fresh review are allowed only while the post-review reconciliation allowance is unused.
+ - identity, mode, collection, or type → setup;
+ - governing intent or substantive evidence → reconstruction;
+ - claim selection or mutation authority → disposition;
+ - candidate bytes → fresh review;
+ - live-target drift → stop for abandon or authorized rebase; a rebase may
+ return to disposition only while the repair allowance remains, otherwise a
+ new run is required.
- After target validation, add only authorized source-to-target lineage. Prevalidate and preserve each
- source, add its collection-authorized footer without a reverse edge merely for symmetry, and validate
- each changed source. On failure restore all sources and target to their pre-promotion substantive
- bytes and verify them. A prior address relocation remains separate; do not claim this reverses it.
+ ## 6. Promote and close
- Before cleanup assemble the final account: commission and decisions; replacement/fold/merge/
- retirement/retitle choices; grounding results including `quotes added` text; final candidate and
- review paths/digests; validation, promotion, relocation, lineage, and recovery; removed or retained
- paths; and handoffs. Extra artifacts or sibling changes converge only by explicit decline, user
- acceptance, or separate completion; never launch them automatically. A composition mismatch blocks
- promotion. `cp-skill-connect` is only an optional suggestion.
+ After final acceptance, read and execute
+ `references/promotion.md` beside this skill. It owns live-drift checks,
+ conditional retitle, atomic promotion, rollback, validation, lineage, the
+ closing account, and cleanup. Do not improvise a shorter mutation path.
- Remove only the exact workshop and index line after target and lineage validation, a complete closing
- account, no unexecuted authorized decision, and no retention reason. Retain blocked, failed,
- inspection, and experiment runs; report cleanup and pending index work.
+ Report the target or blocker, final candidate and review digests, validation,
+ any source mutation, whether repair or recovery ran, and whether the workshop
+ was removed or retained. Suggest `cp-skill-connect` only as optional follow-up;
+ do not launch sibling work automatically.