Artifact ownership, dependency lifecycle, observability design
Three new skills take the library from 20 to 23. Two of them close a gap the library's own waste scan had been pointing at: every skill up to now owned a decay axis that a change triggers, and nothing owned the two that decay with time, while the code stands still.
Skills
zero-copy-requirementsdecides where a fact belongs, so that no artifact exists whose content is fully reconstructable from another artifact already in the system. Four authorities carry the system — code and its tests, version-control history, the issue tracker, the requirement register — and everything else is a generated report, one of three bounded exceptions, or waste. Its Sweep mode finds the redundant documents in a tree rather than waiting to be handed one; aDUPLICATEverdict must name the artifact that already carries each claim, because redundant and unowned look identical from the outside and confusing them turns a documentation cleanup into data loss.dependency-lifecycledecides what to do about a dependency after adoption.bring-downchooses whether to depend on something external at all,defect-shift-leftplaces the advisory and license scans, and CI/CD decides whether a finding blocks — none of them answers what to do when the scan fires. The skill grades reachability first, then returns one of upgrade, pin, patch, isolate, replace, vendor, accept, or remove, each carrying a guard that ends it. An acceptance without an owner and an expiry is an undecided finding, not a decision. Four of its five triggers fire with no commit to attach them to.observability-designdecides what a change must emit to be detectable in production. It owns ranks 10 and 11 of the shift-left ladder — production runtime and post-incident — the most expensive ranks and the only ones that had no design-side owner. It consumes the residual risk left bytest-strategyrather than enumerating failure modes again, gives each one an actor and a first action, and reportsUNOBSERVEDwhen no affordable signal exists instead of closing the row.
Routing
alchemygains aliases and companion-routing bullets for all three. They are single-pass task-matched companions, not gates: aSKIPdispatch never suppresses them.- Both dispatch tables sent a "routine dependency bump" to
SKIPwith no rule separating routine from contract-changing, so a major bump that moved a default, raised a floor, or changed a serialized shape got no gate at all. Both rows now read "contract-preserving dependency bump", defined in section 5 ofdependency-lifecycle. zero-copy-requirementsrenamed its four artifact kinds from "primitives" to "authorities", becausealchemyalready owns that word for the four change primitives and two different "four primitives" is exactly the ambiguity the skill exists to remove.
Library enforcement
- Behavior scenarios:
.scenarios/holds 7 scenarios and 31 expectations, recorded through theclaudeCLI in a throwaway project that holds only this library. CI never calls a model — it fails when a transcript is missing or when the request, the fixture,CLAUDE.md, or a named skill changed after the transcript was recorded. - The mutation test is up to 45 deliberate violations, all caught.
- Size budgets:
CLAUDE.md1200 → 1300, the always-on description listing 13500 → 15000,dependency-lifecycleat 2000,observability-designat 1800.alchemyis unchanged at 4600.
Upgrading
The installer defaults to main, so curl … | bash already carries this. Pin this revision with L_GEVITY_SKILLS_REF=v3.4.0.
Release commit 38166b0, covering 1afe8f3, ab61fa7, 2a77ea5, and 877426d. Tags v3.0.0 through v3.3.0 were published without release notes; their commit messages carry the detail.