Conversation
…ge 1/129 -> 51/129) Computes the flat `checksum` field (sha256, lowercase hex, no prefix) for every free registry entry that had none, downloading the exact tarball asset served at each entry's own `version` from the matching GitHub release tag and hashing the actual bytes (not the source tree, which would not verify what `nself plugin install` downloads). These are trust-on-first-use baselines recorded from the currently published release assets; they enable tamper detection from this point forward and do not attest the artifacts were unaltered before this measurement. From v1.0.1 the checksums are produced in the publish pipeline from the built tarball (plugins#83 build-and-upload-tarballs.sh). Excludes the 8 entries plugins#81 bumps to 1.0.1 with checksums (content-progress, cron, donorbox, maintenance, notifications, notify, search, storage) and merges after plugins#83 (which adds the flat `checksum` schema field + validator CHECK-15). 51 of 121 candidate entries got a real checksum. The other 70 have no tarball asset published for the version registry.json currently states for them -- 11 have no matching release tag at all, 59 have a release tag but no matching asset in it. These are pre-existing registry defects (broken install URLs), not something this change can fix without guessing at an unpublished version; left as-is with no checksum, per plugin, so a future release fixes them for real.
Contributor
Author
|
Closing in favour of #81, which now ships all 129 free plugins at 1.0.1 with pipeline-generated checksums (superseding these trust-on-first-use baselines). This PR's body stays as the record of the entries that resolved to 404 before the release: 72 of 129 against the worker's exact |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Populates the flat
checksumfield (sha256, lowercase hex, no prefix — the field the CLI installer actually reads and enforces, perinternal/plugin/registry_parse.go/installer_locked.go) for every free-registry entry that had none, sonself plugin installcan verify what it downloads.Coverage: 1/129 → 52/129 (the pre-existing
ollamaplaceholder had an empty""checksum; it now carries a real one, plus 51 newly-populated entries).These are trust-on-first-use (TOFU) baselines, not proof of prior integrity. A checksum computed from the asset currently served on the release matches that asset by construction — it does not attest the tarball was unaltered before this measurement. What it buys is tamper detection from this point forward: if the served asset ever changes without a matching registry update, installs will start failing the check. From v1.0.1 onward, checksums are produced in the publish pipeline directly from the freshly-built tarball (plugins#83's
build-and-upload-tarballs.sh), which is a stronger guarantee than this backfill.How
For each free entry lacking
checksum(excluding the 8 plugins#81 bumps to 1.0.1 — content-progress, cron, donorbox, maintenance, notifications, notify, search, storage): downloaded the exact tarball asset GitHub serves atreleases/download/v<version>/<name>-<version>.tar.gz, where<version>is that entry's ownregistry.jsonversion(not "latest" — a few plugins sit on older/newer tags than the bulk v1.0.0 set), and hashed the actual bytes served — not the source tree, which would not verify what the installer downloads. Reused the download+hash approach from plugins#83'sscripts/verify-published-checksums.sh(not vendored here; that script lands with #83).Missing assets — real registry defects, not fixed here
70 of 121 candidate entries have no tarball published for the version
registry.jsoncurrently states. I did not invent a checksum for these or substitute a different published version — that would attest to bytes a user installing at the stated version would never receive. Left with nochecksumfield, same as before this PR.ci@1.0.1,entitlements@1.2.0,family-gedcom@0.0.1,nself-cloud@0.1.0,nself-image@0.1.0,nself-pdf@0.1.0,nself-scan@0.1.0,plugin-clawde@0.1.0,plugin-gauth@0.1.0,plugin-llm-gateway@0.1.0,plugin-retrieval@0.1.0). Of these,ciandfamily-gedcomhave been published — just at other versions (v1.0.0, v1.1.0/1.1.1/1.1.2/1.1.5/1.1.6/1.1.7/1.1.9) — soregistry.json's stated version for those two is stale, not merely unpublished.<name>-<version>.tar.gzasset is in it (e.g. every*@1.1.2entry in the table below — checked against the full 29-asset manifest of the v1.1.2 release, which is actually a partial re-release of a different, mostly-1.0.0 plugin set, not these). Their publisheddownload_url/tarballlinks 404 today, independent of this PR.Full list:
70 plugins with no matching published asset (click to expand)
Merge order
Should merge after plugins#83 (adds the flat
checksumschema field + CHECK-15 validator this PR's data satisfies) and after the 8 entries plugins#81 bumps to 1.0.1 (untouched here). Ran plugins#83'sshared/validate-registry.shlocally against this branch'sregistry.json: 0 errors, 1 pre-existing warning (CHECK-8 sort order, present onorigin/mainbefore this change too, unrelated).Verify