at.happyproto.plugin.release
One version of a package. The record key is '<slug>:<version>'. A release at a given version is never modified: a registry that later sees a different CID at this key keeps the first and flags the conflict.
Details · record, key any
| Kind | record |
|---|---|
| Record key | any |
| Authority | plugin.happyproto.at |
| Indexed |
Record
record · key anyProperties
Keyed by NSID. MUST carry 'at.happyproto.plugin.releaseExtension', which is the manifest.
notes
stringWhat changed in this release, as Markdown. A client renders this to tell an operator what an upgrade brings, so it is publisher-supplied text shown to someone else: a renderer MUST NOT render embedded HTML, and MUST refuse a link scheme it does not recognise. Long enough for a changelog and no longer; `repo` is where the full history lives.
maxLength: 30000maxGraphemes: 3000
The profile's slug. MUST equal the pre-':' portion of the record key.
maxLength: 512
repo
string · uriSource repository for this release.
requires
unknownDependencies, as a map lexicons cannot type. Every key is 'env:happyview' or an 'at://<did>/at.happyproto.plugin.profile/<slug>' URI; every value is a semver range. Keyed by AT URI rather than by DID because identity here is (publisher, slug) and one publisher may hold many packages. Validated by the registry and the installer. An unrecognised 'env:' key counts as unfulfilled, which warns rather than refuses.
Semver 2.0 without build metadata, since '+' is not a legal record-key character. MUST equal the post-':' portion of the record key. Dropping build metadata also means it can never affect version precedence, which semver says it should not.
maxLength: 256
#artifact
objectThe installable WASM module. It must carry 'blob', 'url', or both; lexicons cannot express that, so publishing and indexing enforce it.
Properties
blob
blobThe module, stored as a blob in the publisher's PDS.
maxSize: 16777216accept: application/wasm
Lowercase base32 multibase-encoded multihash of the artifact bytes; sha2-256 (code 0x12) must be supported. For a blob it MUST equal the multihash inside blob.ref's CID. Where both sources are present, both must serve bytes matching it. A client rejects an unsupported hash function rather than skipping verification.
maxLength: 256
contentType
stringmaxLength: 128
url
string · uri#artifacts
objectMap of artifact type to artifact. 'package' is the installable module and is required; 'manifest' is its manifest.json, which is what says how to load a module published as a blob, since such a module has no directory beside it to hold a sibling file; the rest are presentation assets a browser renders from the index without fetching anything. A custom type takes an 'x-' prefix, so a type added here later cannot collide with someone's extension; such keys travel as extra properties and are validated out of band, as 'requires' is.
Properties
banner
reficon
refmanifest
refscreenshots
arraymaxLength: 8
#imageArtifact
objectA presentation asset. SVG is deliberately absent: it carries script and renders in an operator's dashboard.
#manifestArtifact
objectThe module's manifest.json. A module published as a blob has no directory beside it to hold a sibling file, so this is the only thing that says how to load it. It must carry 'blob', 'url', or both; lexicons cannot express that, so publishing and indexing enforce it.
Properties
blob
blobThe manifest, stored as a blob in the publisher's PDS.
maxSize: 1048576accept: application/json
As '#artifact.checksum': the multihash of the bytes, which whichever source serves them is verified against.
maxLength: 256
contentType
stringmaxLength: 128
url
string · uriSimilar lexicons
semantic matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
Plugin package release record. EXPERIMENTAL: this NSID is part of the experimental phase of the EmDash plugin registry. The stable namespace target is com.emdashcms.package.release.
-
at.happyproto.plugin.v1
objectA HappyView plugin, as one entry in a software.release.manifest's `artifacts`. It carries the module and its manifest.json as blobs, so they are verified by their CIDs, and the manifest's facts in the signed record, so a consent screen renders without downloading the module. Those facts are not trusted: the loader checks them against the module itself and refuses a plugin that misstates what it does. The registry refuses a manifest whose artifact breaks a rule stated here, including the ones a l
-
dev.knotless.release
recordOne version of a package a repository publishes: its files, and the commit they were built from.
-
codes.tcm.release
recordA release of a tcm package, announced on the AT Protocol by its author.
-
io.agent.release
recordA record representing a software release.