agentic-sdlc

Spec · CHG-2026-014911

Stage artifact from specs/CHG-2026-014911-cut-the-duplication.md, header and all.

View specs/CHG-2026-014911-cut-the-duplication.md on GitHub ↗
change_id: CHG-2026-014911
risk_class: R2
autonomy_tier: A2
controls: ['TRC-01', 'CHG-04', 'TPR-05']
data_classification: internal
originator: olaf@freundcloud.com
agent_identity: svc-agent-platform
model_route: gateway/tier-balanced
supersedes: None

Requirements

R1 — One scripts/demo/lib.sh, sourced by both demos

Colours, act, say, show, run, beat and a new closing move to a sourced file. Callers set DEMO_KIND (“Act”, “Pipeline”) before sourcing, which is the only thing that differed between the two copies.

R2 — One site/_includes/player.html

Pulled in by the layout where a page’s front matter sets casts: true, rather than pasted into every page that plays a recording.

R3 — Nothing declared that nothing reads

Cut Read by
contract: block in runtimes.yaml (18 lines) no code — moved into the file’s header comment, where it was already half-documented
context_file: × 4 runtimes nothing; the prompts name AGENTS.md directly
agent-task route output no workflow
theme_name in _config.yml no layout

R4 — Only recipes with no caller are removed

test, lint, gates and demo-live had zero external references. Removed, with a comment at check saying where they went so their absence reads as a decision.

Two findings were withdrawn. The audit proposed also cutting eval and negative as bare aliases. They are referenced by CONTRIBUTING.md, the pull request template and both shell hooks; and demo-fast is named in the verification sections of two chain artifacts, which are historical records. Cutting them would have broken live instructions to improve a line count.

That correction is worth recording: an audit that measures duplication without checking callers produces confident wrong advice, which is the same defect as a gate that passes without running.

Policy conflicts

None identified. Stated explicitly rather than omitted.

Verification

Requirement Verified by
R1 Both demos run; Act N FAILED / Pipeline N FAILED label correctly via DEMO_KIND
R2 Both pages still play their casts in a browser
R3 Stage 0’s context-plane check passes; make swap still reports a one-line diff
R4 just --list reads correctly; just ci resolves to the same four make calls
all make build test lint gates, make negative, make eval, make substitution unchanged