feat: rename to paperspec and add the website

- Rename manuspec to paperspec everywhere outside pixi.toml: prose, the
  tools, provenance tool names and the fixture key derivations, so every
  fixture and vector is rebuilt.
- Move the namespace addresses under the site, mirroring the repository:
  schema $id https://paperspec.scient.ing/schemas/<file>, the JSON-LD
  context https://paperspec.scient.ing/context/scienting-1.jsonld, and
  term IRIs https://paperspec.scient.ing/vocab#<term>. Format
  identifiers (scienting-*) and URNs (urn:scienting:) are unchanged.
- tools/site.py (standard library only) builds _site/: every file of the
  repository at its own path, each Markdown file rendered as a page with
  sidebar navigation, heading anchors matching the forge's, folder
  listings, a vocabulary page for the context's IRIs, a heading search
  and a 404 page; light and dark themes.
- check.py builds the site and checks that every Markdown file has a
  page, every internal link and fragment resolves, no Markdown is left
  unrendered, and every $id, the context address and the vocabulary IRIs
  are files of the site.
- deploy/: a Caddyfile with the media types and CORS the data needs, and
  a guide; .gitea/workflows/site.yml builds on main and publishes with
  rsync when the SITE_* secrets are set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
alexmandClaude committed 2026-10-14 21:27:21 -04:00
1 parent ea0a7efa78
commit 76d76353d9
213 files changed
+1233 -386

No files matched your search

+7 -6
View File
@@ -19,16 +19,17 @@ Two tools that read the same context agree on what `target` or `status` means, e
`scienting-1.jsonld` is the context that makes every annotation layer valid JSON-LD, together with the W3C Web Annotation context.
The Web Annotation context supplies `Annotation`, `body`, `target` and `selector`.
This one supplies the terms the formats add.
Its address is `https://scient.ing/ns/scienting/1.jsonld`.
That address did not resolve when checked on 2026-10-14, so until it does, a JSON-LD processor needs the copy in this folder loaded in its place.
Its address is `https://paperspec.scient.ing/context/scienting-1.jsonld`, which is this file as the project's website serves it, with the media type `application/ld+json` and a header that lets a browser fetch it from any page.
The terms it maps are listed at `https://paperspec.scient.ing/vocab`, and each term's IRI is a fragment of that page.
A processor that cannot reach the site loads the copy in this folder in its place.
Every layer and every annotation lists both contexts, Web Annotation first:
```json
{"@context": ["http://www.w3.org/ns/anno.jsonld", "https://scient.ing/ns/scienting/1.jsonld"]}
{"@context": ["http://www.w3.org/ns/anno.jsonld", "https://paperspec.scient.ing/context/scienting-1.jsonld"]}
```
The `scienting-` prefix is the formats' namespace, as in `scienting-layer/1` and `scienting-anchor/1`.
The repository's name, manuspec, is a separate matter.
The repository's name, paperspec, is a separate matter.
## An example from the fixtures
@@ -37,7 +38,7 @@ The first is a `gloss`, an explanation for a novice, of the phrase "bond force c
Shortened, it reads:
```json
{"@context": ["http://www.w3.org/ns/anno.jsonld", "https://scient.ing/ns/scienting/1.jsonld"],
{"@context": ["http://www.w3.org/ns/anno.jsonld", "https://paperspec.scient.ing/context/scienting-1.jsonld"],
"type": "Annotation", "motivation": "describing", "status": "confirmed",
"body": {"type": "TextualBody", "kind": "gloss", "audience": "novice",
"value": "A *harmonic* term treats a bond like a spring: ..."},
@@ -57,7 +58,7 @@ This context defines `kind`, `status`, `audience`, `AnchorSelector` and `anchor`
## What it defines
The file defines 23 terms.
Twenty-two map to IRIs under `https://scient.ing/ns/scienting#`: `format`, `kind`, `status`, `receipt`, `layer`, `audience`, `visibility`, `purpose`, `project`, `docs`, `pin`, `role`, `symbol`, `verdict`, `reason`, `reference`, `for`, `generator`, `exercise`, `anchor`, `rights_use` and the class `AnchorSelector`.
Twenty-two map to IRIs under `https://paperspec.scient.ing/vocab#`: `format`, `kind`, `status`, `receipt`, `layer`, `audience`, `visibility`, `purpose`, `project`, `docs`, `pin`, `role`, `symbol`, `verdict`, `reason`, `reference`, `for`, `generator`, `exercise`, `anchor`, `rights_use` and the class `AnchorSelector`.
Three are renamed: `for` is `sct:questionFor`, `generator` is `sct:generatedBy`, and `rights_use` is `sct:rightsUse`.
The twenty-third, `total`, maps to `totalItems` in the ActivityStreams namespace.
Two terms carry a type rule.