Skip to content

0.6.0 — plain links, citations on the wire, and an honest level

Choose a tag to compare

@vgururao vgururao released this 28 Sep 19:33
· 74 commits to main since this release

The three constructs protocol 0.3 records in its §16 as ruled but not yet built. The project's rule is that testing precedes prose, so this release is what lets that section become normative text rather than a promise. Protocol 0.3, level 2.

[[id]] — a plain internal link

Inline anywhere in a document, one ! away from the ![[id]] transclusion directive and a different act entirely: it resolves by the same order, renders as an ordinary anchor to the target's own page, and notifies nobody. No transclusions[] entry, no Webmention, no class on the wire. In a medium where every other way of citing tells the other side, this is the one that does not — which is the point of it. An unresolvable link fails the publish, like an unresolvable directive.

cited — a reference's human half, frozen

A reference carries identity and no words, so a reader whose target had disappeared was shown a 26-character id and nothing else. Now stub_of, each remote transclusions[] entry and forked_from may carry {source, author?, excerpt?, url, retrieved}, frozen at the moment the reference was made, on live and pinned documents.

It is additive and optional. Own-origin transclusions are byte-identical to before, so every 0.2 document is still a valid 0.3 document, and a client that ignores cited stays conformant. It is self-asserted and never authoritative: never read by mention verification, never rendered into content_html, never presented as the target's current state.

Two things came with it. The provenance byline under a baked remote quote used to be rendered from a live database join, so renaming a subscription silently rewrote what an already-published document said about its source — it now reads the frozen citation, because a citation that changes after publication was never a citation. And an imported document's own cited values are kept verbatim rather than recomposed from local guesses.

generator_url, and level 2

The manifest now carries one absolute URL to this client's source, derived from the same constant as generator. SHOULD, never MUST, and no reader may gate on it. It exists for a measured reason: five of the seven live client implementations in this ecosystem have no locatable repository, and the manifest is the one file the protocol requires to be public — so it is the only channel by which a directory could point an operator at a release page.

level moves from 1 to 2. Nodes were publishing 0.3 constructs while announcing level 1; §3 of 0.3 defines L2 as this specification. Readers may not gate on the level, so this is honesty rather than compatibility.

Migrations: none. Upgrading is a redeploy:

git pull
npm ci --legacy-peer-deps
npm run deploy

If your copy came from blygger-spec/worker/, see 0.4.1's notes — git pull will not reach this repo.

528 tests, tsc --noEmit clean. Reasoning in CHANGELOG.md.