Skip to content

pulseengine-claude skills: integrate varve (the toolchain layer manager) — it's absent from the roster and every skill #161

Description

@avrabe

What varve is now

pulseengine/varve — the toolchain layer manager born from #157 — is no longer a design. As of today it is 14 shipped releases (v0.1.0 → v0.12.1), dogfooded: the PulseEngine toolchain ships as signed OCI layers on ghcr.io/pulseengine/varve/layers (layer 2026.08.2 carries rivet, synth, loom, meld, spar, witness, kilnd, wsc), pinned per-project via varve.toml, verified offline (DSSE against a trust root), anti-rollback-protected (SUIT/Uptane counters), dispatched through PATH shims (cd switches toolchains), self-updating (old-verifies-new), with parallel trust universes (realms), and consumed by Bazel via a module extension (pulseengine/rules_wasm_component#606). rivet graph: 20+ requirements verified, mutation gate + claim-check + verification-evidence gating CI.

The problem: varve is completely absent from pulseengine-toolchain.md (the single roster every skill references) and from all 16 skills — yet varve changes how the toolchain the skills orchestrate is delivered and identified. The skills currently assume tools are "just on PATH"; varve is what makes that PATH pinned, verified, and reproducible.

Proposed skill/memory improvements

1. pulseengine-toolchain.md (memory) — add varve to the roster

It's missing. Suggested entry:

varve — toolchain layer manager. Distributes the whole tool set as one signed, dated, digest-pinned OCI layer (YYYY.MM.P); per-project varve.toml pin, offline DSSE verification against the trust root, anti-rollback counters, content-addressed core, PATH shims (cd-switches), self-update (old-verifies-new), realms (parallel trust universes), deposit/export-bazel for CI. Sits outside the layer it installs (it must exist before any layer does). The answer to "which toolchain produced this artifact?" and to the stale-tool phantom-capability failure. Native Rust CLI — witness MC/DC and scry are N/A to varve itself (they target the wasm the layers carry).

2. release-artifact-pipeline — layers are a distribution track

Track B (distribution) lists crates.io + npm. Add varve layers as the canonical org-internal distribution: a tool's signed release becomes a layer entry via varve deposit; consumers pin a layer, not N independent tool versions. And varve export-bazel makes the checksum-registry hashes signature-anchored instead of TOFU (relevant to the Track E rivet-extraction story). The deposit workflow also became an org release-standard enforcer — it fail-closed-excludes tools whose releases lack cosign-signed sums (this is how ordeal's unsigned releases got caught and fixed same-day).

3. pulseengine-feature-loop — run the loop under a pinned layer

The compose loop (spar→WIT→rivet→code→witness→sigil→smithy) silently assumes whatever tools are on PATH. Add a step-0 note: resolve the loop's tools through varve so every build runs against a pinned, verified, single toolchain — this closes the mixed-toolchain hazard (a pipeline running half on one tool version and half on another) by construction, and stamps the layer identity into artifact provenance so the loop's outputs are traceable to the exact toolchain.

4. report-tool-friction — varve is on the roster now

Its step-2b version-currency check is exactly varve's domain (varve status surfaces staleness/known-problems); the friction-filing target list should include varve.

5. repo-hygiene / issue-hunt — varve is a repo to sweep

Add it to the standing rotation.

6. A note on independence (cross-cutting)

varve's own audit (2026-08-08) surfaced the one gap automation can't self-close: an autonomous author self-assigning verified status. varve is adopting adversarial clean-room review as a release gate (REQ-INDEP-001) — a fresh-context reviewer re-derives every verdict, recorded per artifact. Worth generalizing into clean-room-verification / release-execution as a standing expectation for solo-agent-authored repos, not just an on-demand check.

Offer

varve's repo has the concrete artifacts (rivet requirements, the deposit + export-bazel workflows, the Bazel extension) if useful as the reference when updating the skills. Happy to open the skill PRs against whichever repo hosts the plugin source.

🤖 Filed from a varve session, per the "how does this compose with the skills" question.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions