You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An audit used this repo as the reference template for release-readiness of another project. It's a strong template, but a few items of config drift and some gaps against a "gold standard" release bar surfaced. Filing them here to fix later.
Config drift (small, factual fixes)
Repo homepage points at the wrong slug: https://github.com/dean0x/mds#readme → should be …/mdscript#readme (the package manifests already use the correct URL).
.github/ISSUE_TEMPLATE/config.yml links to /discussions, but Discussions is disabled → enable Discussions or repoint the contact link.
SECURITY.md supported-versions table is stale (says 0.1.x; current release is v0.3.0) → replace the table with a rolling statement ("the latest 0.x release receives security fixes") so it can't rot again.
(a) Every public claim is CI-verified — declared MSRV is checked (✅ already done here), claimed commit conventions are enforced, docs can't silently drift from settings.
(b) Supply chain — all actions SHA-pinned with Dependabot keeping pins fresh; OIDC trusted publishing (no long-lived registry tokens); npm provenance; cargo-deny gating advisories/licenses.
(c) Release integrity — checksummed release artifacts + build-provenance attestations; a dry-run path exercising the full build matrix (✅ already done here); idempotent, safely re-runnable publish steps.
(d) Self-consistency — repo settings, templates, and health files agree with each other.
(e) Protection that doesn't fight automation — branch protection with the release path designed around it.
Against that bar:
Registry auth uses long-lived secrets (CARGO_REGISTRY_TOKEN, NPM_TOKEN); both crates.io and npm support OIDC trusted publishing — switch, then delete the tokens.
Only the composite action's internals are SHA-pinned; workflow-level actions float on major tags — pin all uses: to full SHAs (the github-actions Dependabot ecosystem is already configured, so pins stay fresh).
GitHub Releases carry no artifacts or checksums — attach a SHA256SUMS (and optionally the platform artifacts), and add build-provenance attestations (actions/attest-build-provenance).
No cargo-deny/cargo-audit gate in CI (already noted as a follow-up in Cargo.toml comments).
publish-crates waits on the index with sleep 30 between mds-core and mds-cli — replace with a poll of the crates.io index for the exact version.
Publish failures are downgraded to warnings ("may already exist") — replace with explicit idempotency checks (query the registry for the exact version; skip if present, hard-fail on anything else).
Conventional Commits are claimed in CONTRIBUTING and the PR template but not enforced — add a PR-title lint or soften the claim.
An audit used this repo as the reference template for release-readiness of another project. It's a strong template, but a few items of config drift and some gaps against a "gold standard" release bar surfaced. Filing them here to fix later.
Config drift (small, factual fixes)
https://github.com/dean0x/mds#readme→ should be…/mdscript#readme(the package manifests already use the correct URL)..github/ISSUE_TEMPLATE/config.ymllinks to/discussions, but Discussions is disabled → enable Discussions or repoint the contact link.SECURITY.mdsupported-versions table is stale (says0.1.x; current release is v0.3.0) → replace the table with a rolling statement ("the latest 0.x release receives security fixes") so it can't rot again.CODE_OF_CONDUCT.mdstill missing (tracked in Add CODE_OF_CONDUCT.md (Contributor Covenant 2.1) #38) — folded in here for visibility.workflow_dispatchrelease path is still broken against protectedmain(release: workflow_dispatch path fails GH006 on protected main (prepare can't push) #127) — consider deleting thepreparepush-to-main job in favor of a pure tag-driven flow (bump via PR, tag the merge commit), which designs the failure out instead of working around it.Gold-standard gaps
The bar used for the audit:
Against that bar:
CARGO_REGISTRY_TOKEN,NPM_TOKEN); both crates.io and npm support OIDC trusted publishing — switch, then delete the tokens.uses:to full SHAs (thegithub-actionsDependabot ecosystem is already configured, so pins stay fresh).SHA256SUMS(and optionally the platform artifacts), and add build-provenance attestations (actions/attest-build-provenance).cargo-deny/cargo-auditgate in CI (already noted as a follow-up in Cargo.toml comments).publish-crateswaits on the index withsleep 30betweenmds-coreandmds-cli— replace with a poll of the crates.io index for the exact version.