docs(013): add RFC 0001 for the skillrig mise backend plugin#27
Conversation
Review Summary by QodoRFC 0001 and research spike for skillrig mise backend plugin
WalkthroughsDescription• Adds RFC 0001 defining a skillrig mise backend plugin for co-installing multiple backing CLIs from one origin monorepo with independent versioning under strict-semver tag policy • Documents the origin-side contract ([[binaries]] block in .skillrig-origin.toml) that the plugin depends on, including stream selectors and asset templates • Explains why native mise cannot resolve build-metadata streams (v0.5.0+iii) due to SemVer precedence rules, making the plugin a capability requirement not just ergonomics • Includes comprehensive research spike validating that mise 2026.4.12 (PR #9093) fixes only the install scheduler layer, not version resolution layer • Corrects ARCHITECTURE-v0 §8b to clarify version_prefix vs non-existent tag_regex, and notes that build-metadata streams remain natively unresolvable • Specifies the three Lua hooks (BackendListVersions, BackendInstall, BackendExecEnv), auth token precedence, and v1 verification (checksum-only) Diagramflowchart LR
A["Origin Monorepo<br/>cmd/iii cmd/console<br/>build-metadata tags<br/>v0.5.0+iii v0.2.0+console"] -->|"[[binaries]] contract<br/>index.json"| B["skillrig Backend Plugin<br/>BackendListVersions<br/>BackendInstall<br/>BackendExecEnv"]
B -->|"skillrig:iii<br/>skillrig:console"| C["Consumer mise.toml<br/>independent versions<br/>per-stream resolution"]
D["mise 2026.4.12<br/>Layer A: scheduler dedup<br/>PR #9093"] -.->|"necessary but<br/>insufficient"| B
E["Native mise<br/>Layer B: version resolution<br/>SemVer precedence"] -.->|"cannot resolve<br/>build-metadata"| B
File Changes1. docs/ARCHITECTURE-v0.md
|
Code Review by Qodo
Context used✅ Compliance rules (platform):
152 rules 1. Stale tag_regex guidance
|
✅ The plugin this RFC proposes is now built, published, and validated end-to-endThe 👉 https://github.com/skillrig/mise-skillrig (public)It was built against a real origin ( mise settings experimental=true
mise plugin install skillrig https://github.com/skillrig/mise-skillrig
export MISE_GITHUB_TOKEN=$(gh auth token)
mise use skillrig:my-org/our-skills/jira@1.7.0
mise use skillrig:my-org/our-skills/tfc@latest # two tools, one repo, distinct versionsHow it works
Verification: 54 offline unit tests, How it addresses the two Qodo Review findingsQodo raised exactly two findings, both doc-consistency bugs. Building the plugin against a real origin produced the empirical ground truth that settles both — note these are edits owed in this repo's docs; the plugin repo itself is already consistent with the resolution. ① Stale The implementation makes this stronger than a terminology nit. The demo origin's own ② SLSA/GPG verification conflict ( Settled by what shipped: the plugin verifies checksum-only (sha256 vs Implementation ↔ RFC divergences worth folding back into this RFCBuilding against the real origin surfaced four places where reality differs from §5–§6. None block the plugin, but the RFC should be updated:
Happy to open follow-up PRs for the two doc reconciliations (§8b/ROADMAP 🤖 Posted on behalf of the implementation work; plugin built + tested with Claude Code. |
Adds a research spike and an RFC for a `skillrig` mise backend plugin that co-installs multiple backing CLIs from one origin monorepo (issue #23). Key finding: mise 2026.4.12 (PR #9093) fixes only the install-scheduler dedup (Layer A), not version resolution (Layer B). Under a strict-semver tag policy the origin must use build-metadata streams (v0.5.0+iii), which SemVer precedence collapses and version_prefix cannot select -- so native mise cannot give independent versioning + co-location together. A backend plugin whose BackendListVersions owns version listing is the only option that can, which is the capability justification for the plugin. - specledger/013-mise-backend/research: the spike (4 open questions answered) - docs/rfcs/0001: the RFC -- origin [[binaries]] contract, the three Lua hooks, auth, verification depth, template + CLI integration, phasing; bootstraps the separate skillrig/mise-skillrig repo - docs/ARCHITECTURE-v0 §8b: correction pointer (tag_regex -> version_prefix; #9093 is scheduler-only; build-metadata streams remain native-unresolvable)
The skillrig/mise-skillrig backend plugin RFC 0001 specifies is now built, published, and validated end-to-end. Fold the conclusion back into the docs and address the two Qodo review findings. Qodo findings resolved: - Stale tag_regex guidance: neutralize remaining tag_regex references in ARCHITECTURE §8b / open-Q15 / §13 vNext and ROADMAP vNext. tag_regex does not exist; stream selection is owned by the plugin's BackendListVersions (not version_prefix, which also cannot select build-metadata streams). - SLSA/GPG conflict: qualify the §8b claim as native-github-backend-only and aspirational; mise does NOT verify custom backends, so a skillrig: tool is checksum-only (sha256) in v1; SLSA is plugin-side v2. Merged the conclusion (plugin built) into: - RFC 0001: status -> Accepted/built; folded the four implementation divergences (no [[binaries]] required / convention-driven; address is skillrig:<owner>/<repo>/<bin>; tags 1.7.0+jira no leading v + per-tool <bin>_checksums.txt; origin field is an identity label, not the coordinate); reconciled hooks, verification, template, and phasing. - README: new "Backing CLIs (mise backend)" section linking the plugin + RFC. - ARCHITECTURE-v0 §8b/§13 and the spike: built-status notes. Roadmap (CLI next step) clearly defined: v1 "mise backend integration — CLI side" = RFC P1 ([[binaries]] block + index.json emission for metadata-driven resolution) + P3 (skillrig add auto-wiring of skillrig: entries).
ba21481 to
648847c
Compare
|
Folded everything into this PR — no separate follow-up PRs needed. Rebased onto Both Qodo findings resolved in-repo:
Conclusion merged (plugin built):
CLI roadmap (your requested next step), clearly defined in
Ready for re-review. Generated by Claude Code |
|
Post-merge follow-up from the automated review: this PR was merged before the contract-shape findings were addressed, so I’m recording them here as non-blocking follow-up work rather than trying to block the merged PR. Issues identified
Suggested fixes
I’m creating a tracking issue that links back to this comment so the merged docs can be corrected in a follow-up PR. |
What
Adds a research spike and an RFC for a
skillrigmise backend plugin that co-installs multiple backing CLIs from one origin monorepo, plus a correction toARCHITECTURE-v0§8b. Resolves the investigation in #23.The RFC is written to bootstrap a new, separate repo (
skillrig/mise-skillrig— the plugin is Lua, not Go, so it does not belong inskillrig/cli).The key finding (why this RFC matters)
#23 proposed the plugin to fix a multi-binary install collision. While researching open question #4, the premise shifted — and then a reviewer pushback sharpened it into the real justification:
github:org/repo@versiondeduped to one install) was a scheduler bug, fixed in mise 2026.4.12 (PR #9093). We require it, but it only fixes Layer A.iii-v0.1.0) and forces build-metadata streams (v0.5.0+iii). Per SemVer 2.0.0, build metadata is ignored for precedence, so those streams collapse to one version, andversion_prefix(a leading-prefix stripper; there is notag_regex) cannot select a+suffix.version_prefixskillrigbackend pluginOnly the plugin satisfies independent versioning + co-location + strict-semver together — because its
BackendListVersionshook owns version listing. That is a capability justification, not just ergonomics.Open questions answered (from #23)
skillrig/mise-skillrig, backend nameskillrig, independent release cadence.[[binaries]]block in.skillrig-origin.toml, mirrored intoindex.json(stream selector + asset template + checksums). Shared by plugin and CLI (AP-04).checksums.txt); treeSha/provenance parity is v2.Contents
specledger/013-mise-backend/research/2026-06-02-mise-backend-plugin.md— the spike (corrected after review).docs/rfcs/0001-mise-skillrig-backend.md— the RFC: how the origin template, mise + plugin, andskillrigCLI fit together; the[[binaries]]contract; the three Lua hooks (with snippets); auth (incl. the keyring-404 gotcha); verification depth; alternatives; phasing.docs/ARCHITECTURE-v0.md§8b — correction callout pointing to the RFC.Notes for reviewers
https://claude.ai/code/session_01Nr5ZxzqTGefujhtEVPzMeV
Generated by Claude Code