diff --git a/.gitea/workflows/site.yml b/.gitea/workflows/site.yml new file mode 100644 index 0000000..2fbbb1c --- /dev/null +++ b/.gitea/workflows/site.yml @@ -0,0 +1,33 @@ +# Builds the website on every push to main and publishes it when the SITE_* secrets are set; see deploy/README.md. +name: site +on: + push: + branches: [main] + workflow_dispatch: +jobs: + site: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: prefix-dev/setup-pixi@v0.9.4 + with: + pixi-version: v0.69.0 + - name: Build the site + run: pixi run python tools/site.py --out _site + - name: Publish the site + env: + SITE_HOST: ${{ secrets.SITE_HOST }} + SITE_USER: ${{ secrets.SITE_USER }} + SITE_PATH: ${{ secrets.SITE_PATH }} + SITE_SSH_KEY: ${{ secrets.SITE_SSH_KEY }} + run: | + if [ -z "$SITE_HOST" ]; then + echo "SITE_HOST is not set, so the site was built but not published." + exit 0 + fi + command -v rsync >/dev/null || (sudo apt-get update && sudo apt-get install -y rsync) + mkdir -p ~/.ssh + printf '%s\n' "$SITE_SSH_KEY" > ~/.ssh/site_key + chmod 600 ~/.ssh/site_key + ssh-keyscan -H "$SITE_HOST" >> ~/.ssh/known_hosts + rsync -az --delete -e "ssh -i ~/.ssh/site_key" _site/ "$SITE_USER@$SITE_HOST:$SITE_PATH/" diff --git a/.gitignore b/.gitignore index 134b993..7f31ab5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ __pycache__/ *.db *.db.assets/ +# the website, built by tools/site.py +/_site/ + # pixi environments .pixi/* !.pixi/config.toml diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc index d5c089b..f0cc062 100644 --- a/.markdownlint-cli2.jsonc +++ b/.markdownlint-cli2.jsonc @@ -1,5 +1,5 @@ { // Which files markdownlint-cli2 checks; the rules themselves are in .markdownlint.jsonc. "globs": ["**/*.md"], - "ignores": [".pixi/**", "node_modules/**"] + "ignores": [".pixi/**", "node_modules/**", "_site/**"] } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2ac2bf7..d3d2acb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ # Contributing This page is for anyone who wants to fix the specification, change a format or add an example. -Propose a change as a pull request on the repository at . +Propose a change as a pull request on the repository at . ## What a change needs @@ -40,7 +40,7 @@ Before tagging: 1. `pixi run check` passes on Linux and macOS, which the workflow in `.gitea/workflows/` runs on every push. The check also confirms that every count the prose states (formats, schemas, vectors, broken packages) matches the repository, and that `pixi.toml`, the registries and `tools/build.py` state the same version. 2. `python3 tools/stress.py` passes with its default seed, and with one or two others. -3. The JSON-LD context is served at `https://scient.ing/ns/scienting/1.jsonld` and every schema at its `$id` under `https://scient.ing/ns/schemas/`, both as static files; [context/README.md](context/README.md) records whether they resolved last time someone checked. +3. The website is published from the release ([deploy/](deploy/README.md)), and the JSON-LD context at `https://paperspec.scient.ing/context/scienting-1.jsonld` and a schema at its `$id` both answer with their media types. Layers claim to be W3C Web Annotations, and a JSON-LD processor that cannot fetch the context cannot read them. 4. The decisions that freeze on release are made: enumeration values and format identifiers never change meaning afterwards ([spec/22 §22.5](spec/22-conformance.md#225-stability)), so a name worth changing is changed now. 5. The CHANGELOG entry describes the release in the terms of the chapters it touches. diff --git a/README.md b/README.md index 6f50c0a..50835e9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# manuspec +# paperspec **The data formats for storing a team's scientific papers once, correcting them once, addressing them down to the sentence, and keeping them.** @@ -6,7 +6,7 @@ This page is for three readers. A newcomer should read straight through; each term is explained where it first appears. The tables below point an implementer, who will write a reader, writer, converter or checker, to the chapters, test vectors and fixtures that define exact behavior. The sections on status and on differences give an expert in the neighboring standards the version, the maturity of each format and the comparison. -The repository is at . +The documentation and every file of the specification are published at , and the repository is at . A research team usually cares about a few dozen papers it understands completely, not the world's literature. Those papers deserve better than a folder of PDFs. @@ -62,6 +62,7 @@ The address grammar is in [spec/06 §6.1](spec/06-anchors.md#61-addresses), and | [fixtures/](fixtures/README.md) | Example packages and records, deliberately broken packages, and the test keys that signed them. | | [tools/](tools/README.md) | The programs that build and check everything above. | | [docs/](docs/README.md) | Guides for people getting to know the project. | +| [deploy/](deploy/README.md) | How the website at is built and served. | ## Try it @@ -77,7 +78,8 @@ It recomputes every test vector, and it rebuilds everything and compares it byte Last, it loads every package into SQLite and back, and checks the prose and the links. Pixi lints the Markdown first. The run ends with `All checks pass.` -`pixi task list` shows the other tasks: `quick`, `build`, `lint`, `load` and `validate`. +`pixi task list` shows the other tasks: `quick`, `build`, `lint`, `load`, `validate` and `stress`. +`pixi run python tools/site.py` builds the website into `_site/` ([deploy/](deploy/README.md)). The tools need Python 3.14 and two packages, `jsonschema` and `cryptography`, which pixi installs along with markdownlint for the Markdown. Without pixi, install those two with pip and run `python3 tools/check.py`. @@ -93,7 +95,7 @@ pixi run load --sqlite lab.db fixtures/packages/hale2026harmonic Every format is named `scienting-/`, such as `scienting-doc/1` or `scienting-anchor/1`. The `scienting-` prefix is the formats' namespace, a separate matter from the repository's name. A format is named after what it holds, never after a product or a repository, and products can be renamed without touching data. -Schemas use the identifier base `https://scient.ing/ns/schemas/`. +Schemas use the identifier base `https://paperspec.scient.ing/schemas/`. [registry/formats.json](registry/formats.json) lists every format with its media type, schema, status and chapter. ## Status and limits diff --git a/context/README.md b/context/README.md index ffe8e3a..1e79be8 100644 --- a/context/README.md +++ b/context/README.md @@ -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. diff --git a/context/scienting-1.jsonld b/context/scienting-1.jsonld index 0afba81..3f2cafa 100644 --- a/context/scienting-1.jsonld +++ b/context/scienting-1.jsonld @@ -1,7 +1,7 @@ { "@context": { "@version": 1.1, - "sct": "https://scient.ing/ns/scienting#", + "sct": "https://paperspec.scient.ing/vocab#", "format": "sct:format", "kind": "sct:kind", "status": "sct:status", diff --git a/deploy/Caddyfile b/deploy/Caddyfile new file mode 100644 index 0000000..e40457c --- /dev/null +++ b/deploy/Caddyfile @@ -0,0 +1,34 @@ +# Serves the paperspec website built by `python3 tools/site.py` (the `_site/` folder), copied to /srv/paperspec. +# The site mirrors the repository, so every schema is served at its $id and the JSON-LD context at the address +# layers name; this file sets the media types those addresses need and lets any page fetch them. +paperspec.scient.ing { + root * /srv/paperspec + encode zstd gzip + + # Every file may be fetched from any origin: JSON-LD processors and schema validators in browsers need it. + header Access-Control-Allow-Origin "*" + header X-Content-Type-Options "nosniff" + + # file_server keeps a Content-Type that is already set, so these take precedence over its defaults. + @jsonld path *.jsonld + header @jsonld Content-Type "application/ld+json" + @schema path /schemas/*.schema.json + header @schema Content-Type "application/schema+json" + @jsonl path *.jsonl + header @jsonl Content-Type "application/jsonl; charset=utf-8" + @package path *.sct.zip + header @package Content-Type "application/vnd.scienting.doc+zip" + @text path *.md *.py *.sql *.csv *.hex *.toml *.lock *.txt + header @text Content-Type "text/plain; charset=utf-8" + + # Pages and the search index change with each release; data files are cached briefly too, since the + # addresses stay the same across releases while their contents may not. + header Cache-Control "public, max-age=300" + + file_server + + handle_errors { + rewrite * /404.html + file_server + } +} diff --git a/deploy/README.md b/deploy/README.md new file mode 100644 index 0000000..9a1ab56 --- /dev/null +++ b/deploy/README.md @@ -0,0 +1,53 @@ +# Deploying the website + +This folder holds what it takes to serve the paperspec website at . +The site is static: `tools/site.py` builds it into `_site/`, and any web server can serve that folder. + +## What the site serves + +The site mirrors the repository, so a file at `schemas/anchor.schema.json` in the repository is served at `https://paperspec.scient.ing/schemas/anchor.schema.json`. +Three addresses that the formats themselves name depend on that: + +| Address | What is there | +| --- | --- | +| `https://paperspec.scient.ing/schemas/` | Each JSON Schema, at the address in its `$id`. | +| `https://paperspec.scient.ing/context/scienting-1.jsonld` | The JSON-LD context every layer and annotation lists. | +| `https://paperspec.scient.ing/vocab` | The vocabulary page, whose fragments are the IRIs of the context's terms. | + +Beside every Markdown file the builder writes a rendered page: `README.md` becomes its folder's `index.html`, and `X.md` becomes `X.html`. +A folder without a README gets a listing page, so every fixture and vector can be browsed. +The pages need no server-side code; search runs in the browser over a small index of headings, `search.json`. + +## Build it + +```sh +pixi run python tools/site.py # writes _site/ +pixi run python tools/site.py --out /tmp/paperspec-site +``` + +`pixi run check` builds the site into a temporary folder and checks that every Markdown file has a page, that every internal link and fragment resolves, that no Markdown is left unrendered, and that each schema's `$id`, the context's address and the vocabulary's IRIs are files of the site. + +To look at it locally, serve the folder with any static server, for example: + +```sh +pixi run python -m http.server --directory _site 8000 +``` + +## Serve it with Caddy + +[Caddyfile](Caddyfile) serves `/srv/paperspec` at `paperspec.scient.ing`. +It sets the media types the data needs (`application/ld+json` for the context, `application/schema+json` for schemas, `application/jsonl` for vectors and package files), allows every file to be fetched from any origin, and serves `404.html` for missing paths. +Add it to the server's Caddy configuration, for example with an `import` line, and reload Caddy. + +## Publish from CI + +The workflow `.gitea/workflows/site.yml` builds the site on every push to `main`, and publishes it with `rsync` over SSH when four repository secrets are set: + +| Secret | Holds | +| --- | --- | +| `SITE_HOST` | The server's host name. | +| `SITE_USER` | The account that owns the site folder. | +| `SITE_PATH` | The folder Caddy serves, such as `/srv/paperspec`. | +| `SITE_SSH_KEY` | A private SSH key whose public half is in that account's `authorized_keys`, and that can do nothing else. | + +Without `SITE_HOST` the workflow still builds and checks the site, and says that it did not publish. diff --git a/docs/README.md b/docs/README.md index df4630c..6869737 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,18 +1,18 @@ # Guides -These guides explain manuspec to someone meeting it for the first time. +These guides explain paperspec to someone meeting it for the first time. They serve three readers: a newcomer who has not seen the problem before, an implementer who will write a reader, writer, converter or checker, and an expert who knows the neighboring standards. The [specification](../spec/README.md) says exactly what each format is. The guides say what each format is for, with examples drawn from the fixtures. | Guide | For | | --- | --- | -| [Overview](overview.md) | What manuspec is, who it serves, and how its parts fit together. | +| [Overview](overview.md) | What paperspec is, who it serves, and how its parts fit together. | | [Concepts](concepts.md) | The ideas behind the formats, one at a time, each with a real example. | | [Walkthrough](walkthrough.md) | One paper, from a flawed first reading to a corrected, reviewed and signed document. | | [Examples](examples.md) | Things to run: checking hashes by hand, reading a package with a few lines of Python, querying a database. | | [Rationale](rationale.md) | Why the formats look the way they do, and the questions they leave open. | -| [Comparison](comparison.md) | How manuspec compares with JATS, TEI, W3C Web Annotation and other schemas. | +| [Comparison](comparison.md) | How paperspec compares with JATS, TEI, W3C Web Annotation and other schemas. | | [*FAQ*](faq.md) | Short answers to the questions people ask first. | | [Glossary](glossary.md) | Every term, in a sentence. | @@ -27,7 +27,7 @@ Next, run the section "Test your implementation against a vector" in the example Check your work against the [vectors](../vectors/README.md) and the [fixtures](../fixtures/README.md). Chapter 22 of the specification defines conformance. -**Expert.** Read the overview for scope and for what manuspec is not, then the comparison for how it differs from existing standards. +**Expert.** Read the overview for scope and for what paperspec is not, then the comparison for how it differs from existing standards. After that, read the rationale for the reason behind each rule and the questions it leaves open. It ends with a list of limits. Section 0.4 of the specification and [registry/formats.json](../registry/formats.json) give the status of each format: the version is 0.1.0, and each format is `candidate` or `provisional`. diff --git a/docs/comparison.md b/docs/comparison.md index 5108ac9..3fc5907 100644 --- a/docs/comparison.md +++ b/docs/comparison.md @@ -1,16 +1,16 @@ -# How manuspec compares with other schemas and standards +# How paperspec compares with other schemas and standards A newcomer, such as a student who knows what a scientific paper and a citation are and has not met hashes, JSON-LD or annotation standards, can read each section's first paragraph and stop. An implementer, who will write a reader, writer, converter or checker, gets the chapter that defines each behavior and the places where the formats differ from a neighbor in ways that cause bugs. An expert, such as a researcher, standards author or reviewer who knows the neighboring standards, gets stated limits, the status of every format, and where the other standard is the better choice. -The repository is at . +The repository is at . This page was checked against the repository, at the version given under "Limits and status". Every statement about another standard links to the page it was read on, and those pages were read on 2026-10-12, so versions and dates are as of that day and may have moved. Where the checked sources say nothing, this page says "not seen", "not specified" or "not in scope", and each phrase keeps one meaning: "not in scope" means the standard's own stated purpose excludes the feature, "not seen" means it was not found in the pages read (which is not proof it is absent), and "not specified" means the page read does not define it. A note on names. -The project is called manuspec. +The project is called paperspec. Its formats are named `scienting-/`, for example `scienting-doc/1` and `scienting-anchor/1`. That prefix is the formats' namespace, and the repository's name is a separate matter; formats are named after what they hold, never after a product or a repository. The identifiers appear inside hashed data and test vectors, so they are not renamed. @@ -27,7 +27,7 @@ The pointer has four parts: - After `@`, the first six digits of the node's hash, `76e06b`, so the pointer names the sentence as it then read. - In brackets, the code-point range of the words inside the sentence, `[111:130]`. It also wants to know who compared a passage with the page image, and how far. -That is the problem manuspec's formats solve: they store a paper as a package of files in which every sentence, table cell and equation has a permanent address and every correction is recorded with its evidence. +That is the problem paperspec's formats solve: they store a paper as a package of files in which every sentence, table cell and equation has a permanent address and every correction is recorded with its evidence. Each level of checking is tied to the exact text it was checked against. Most of the standards below solve different problems, so this page compares by problem solved, not by rank. @@ -47,11 +47,11 @@ The next table maps each job to the standard to start with and the section that | Linking into a PDF, text or web page | RFC 8118, Media Fragments, RFC 5147, Text Fragments | [Fragment identifiers](#fragment-identifiers-and-pandoc) | | Exchanging text-mining annotations, bibliographies, books | BioC, CSL-JSON, EPUB 3 | [BioC, CSL-JSON and EPUB 3](#bioc-csl-json-and-epub-3) | -## What manuspec is, in the terms used below +## What paperspec is, in the terms used below A few terms recur. -A hash is a fixed-length fingerprint computed from content, so any change to the content changes the hash; manuspec uses SHA-256, written as 64 lowercase hexadecimal digits ([spec/01 §1.3](../spec/01-conventions.md#13-hashes)). -Canonical JSON is a rule for writing JSON so that equal data always gives identical bytes, which is what makes a hash of JSON repeatable; manuspec uses the JSON Canonicalization Scheme of RFC 8785 ([spec/01 §1.1](../spec/01-conventions.md#11-canonical-json)). +A hash is a fixed-length fingerprint computed from content, so any change to the content changes the hash; paperspec uses SHA-256, written as 64 lowercase hexadecimal digits ([spec/01 §1.3](../spec/01-conventions.md#13-hashes)). +Canonical JSON is a rule for writing JSON so that equal data always gives identical bytes, which is what makes a hash of JSON repeatable; paperspec uses the JSON Canonicalization Scheme of RFC 8785 ([spec/01 §1.1](../spec/01-conventions.md#11-canonical-json)). A witness is one file of a paper, such as the publisher's PDF or a JATS XML file, identified by the SHA-256 of its bytes; a document is the text established from one or more witnesses ([spec/02 §2.1](../spec/02-model.md#21-four-objects)). A package is a folder of canonical JSON files, or the same folder zipped as `.sct.zip`, with a manifest that lists every other file with its SHA-256 and size ([spec/12](../spec/12-package.md)). @@ -76,12 +76,12 @@ The design choices that matter for comparison: ## Summary table Each row summarizes the pages read for that standard. -Cells keep the wording of the verified source; the manuspec row is checked against the repository. +Cells keep the wording of the verified source; the paperspec row is checked against the repository. Maturity is left to the sections below, because a single word hides too much. | Standard | Sentence-level permanent IDs | Content hashes | Anchors or selectors | Correction history | Fidelity or signatures | Per-file rights | Numeric data anchors | Full-text structure | | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| **manuspec 0.1.0** | yes: 7-character IDs minted once, retired with a successor (spec/04) | yes: five SHA-256 values per node, plus keyed HMAC (hash-based message authentication code) forms (spec/05) | yes: ID, hash, quote, span, five outcomes with drift (spec/06) | yes: append-only, evidence-gated (spec/11) | yes: F0 to F3, signed receipts, spot-checks, error bounds (spec/08) | yes: per witness, with AI purpose and processor (spec/14) | yes: dataset values anchored to cells (spec/15; format `provisional`) | yes: sections to cells, equations, references (spec/03, 09) | +| **paperspec 0.1.0** | yes: 7-character IDs minted once, retired with a successor (spec/04) | yes: five SHA-256 values per node, plus keyed HMAC (hash-based message authentication code) forms (spec/05) | yes: ID, hash, quote, span, five outcomes with drift (spec/06) | yes: append-only, evidence-gated (spec/11) | yes: F0 to F3, signed receipts, spot-checks, error bounds (spec/08) | yes: per witness, with AI purpose and processor (spec/14) | yes: dataset values anchored to cells (spec/15; format `provisional`) | yes: sections to cells, equations, references (spec/03, 09) | | [JATS standard page](https://www.niso.org/publications/z3996-2024-jats) (Z39.96-2024, v1.4) | not seen: no sentence element in the list shown | not seen | not in scope as an annotation model | not seen | not seen | partly: `permissions` and `license` elements exist | not seen | yes | | [TEI P5](https://tei-c.org/guidelines/P5/) (v4.12.0) | partly: `` and author-assigned `xml:id` | not seen | partly: `xml:id` pointers, XPointer schemes | partly: ``, ``, `` | not seen | not seen | not seen | yes | | [GROBID TEI output](https://grobid.readthedocs.io/en/latest/Grobid-service/) | partly: optional sentence elements; IDs not described | not seen | partly: optional PDF coordinates | no | no; reports F1 figures | not in scope | not seen | partly: header, references, citation contexts, full text | @@ -126,12 +126,12 @@ JATS4R is a NISO working group that publishes tagging recommendations and a vali It models journal-article structure and metadata: sections, paragraphs, table wrappers and cells, reference lists, related articles, footnotes, display formulas, supplementary material, permissions and licenses ([1.4 tag library](https://jats.nlm.nih.gov/archiving/tag-library/1.4/)). Crossref's 5.4.0 deposit schema imports JATS ([Crossref](https://www.crossref.org/documentation/schema-library/metadata-deposit-schema-5-4-0/)), and a toolkit for S2ORC has a script for PMC JATS XML ([allenai/s2orc-doc2json](https://github.com/allenai/s2orc-doc2json)). -*How manuspec differs.* +*How paperspec differs.* JATS has `` and `` elements; where they may be placed was not verified, so no per-file rights comparison is made. *Where JATS is the better choice.* For publisher and archive exchange of journal content, and for the JATS4R recommendations on tagging consistency. -manuspec is not a publisher interchange format and does not replace JATS ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)). +paperspec is not a publisher interchange format and does not replace JATS ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)). *Interoperation.* JATS is an input. @@ -153,8 +153,8 @@ Pointers use `xml:id`, recommended "For durability in the presence of editing", GROBID extracts header metadata, references, citation contexts and full text with coordinates, and reports, in its own documentation's documentation, an F1 of about 0.87 for references on a PubMed Central set and 0.76 to 0.91 for citation contexts; it describes itself as production ready ([introduction](https://grobid.readthedocs.io/en/latest/Introduction/)). Its `segmentSentences` option splits paragraphs into sentence elements, and `teiCoordinates=s` adds a bounding box to each ([service documentation](https://grobid.readthedocs.io/en/latest/Grobid-service/)). -*How manuspec differs.* -TEI's `xml:id` is author-assigned and durable by recommendation ([TEI pointers chapter](https://tei-c.org/release/doc/tei-p5-doc/en/html/SA.html)); manuspec IDs are minted by a rule and retired by recorded successor. +*How paperspec differs.* +TEI's `xml:id` is author-assigned and durable by recommendation ([TEI pointers chapter](https://tei-c.org/release/doc/tei-p5-doc/en/html/SA.html)); paperspec IDs are minted by a rule and retired by recorded successor. GROBID's output is an automatic reading with the accuracy figures above, not a corrected, reviewed text ([introduction](https://grobid.readthedocs.io/en/latest/Introduction/)). *Where they are the better choice.* @@ -163,7 +163,7 @@ GROBID as a PDF-to-structure converter for the reference and citation-context ta *Interoperation.* TEI from GROBID could be one reading of a PDF. -manuspec has no `tei` witness kind, so that reading would be recorded as `xml` ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)). +paperspec has no `tei` witness kind, so that reading would be recorded as `xml` ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)). The mechanism for comparing that reading with another is sentence alignment, which pairs sentences, keeps the first reading's IDs for paired sentences, and turns every disagreement into a suspect for review ([spec/05 §5.6](../spec/05-hashes.md#56-alignment)). No TEI or GROBID mapping is defined in the repository. @@ -185,19 +185,19 @@ Targets are narrowed by selectors ([model](https://www.w3.org/TR/annotation-mode Hypothesis stores a range selector (XPaths plus offsets), a position selector and a quote selector with 32 characters of context, and reattaches in four steps: range, position, context-first fuzzy match, then selector-only fuzzy match ([post](https://web.hypothes.is/blog/fuzzy-anchoring/)). It identifies a PDF by an embedded fingerprint, which "persists across copies of the same document, but not across variants" ([Hypothesis help](https://web.hypothes.is/help/annotations-not-syncing-across-copies-of-a-pdf/)). -*How manuspec differs.* +*How paperspec differs.* Hypothesis's post lists its own limits: it assumes the system can tell two formats are the same document, mapping text to the DOM (the browser's tree of page elements) is slow on long documents, and mappings update only when Hypothesis itself changes the DOM ([post](https://web.hypothes.is/blog/fuzzy-anchoring/)). -manuspec defines exact resolution outcomes and a hash pin where Hypothesis uses fuzzy matching. +paperspec defines exact resolution outcomes and a hash pin where Hypothesis uses fuzzy matching. *Where they are the better choice.* The Web Annotation model and vocabulary for annotation in general, existing Web Annotation tools, and Hypothesis as a working annotation service on web pages and PDFs. *Interoperation.* -A manuspec layer is a set of W3C Web Annotations whose target lists a custom `AnchorSelector` carrying a `scienting-anchor/1` record, optionally followed by a standard `TextQuoteSelector` "for tools that do not know ours" ([spec/18 §18.3](../spec/18-layers.md#183-the-annotation)). +A paperspec layer is a set of W3C Web Annotations whose target lists a custom `AnchorSelector` carrying a `scienting-anchor/1` record, optionally followed by a standard `TextQuoteSelector` "for tools that do not know ours" ([spec/18 §18.3](../spec/18-layers.md#183-the-annotation)). The layers do not use `TextPositionSelector` or `FragmentSelector`. -The JSON-LD context (a file that maps the added terms to IRIs (internationalized web identifiers), so linked-data tools can read them) is at `https://scient.ing/ns/scienting/1.jsonld` ([context/README.md](../context/README.md)); whether that address resolves was not checked. +The JSON-LD context (a file that maps the added terms to IRIs (internationalized web identifiers), so linked-data tools can read them) is at `https://paperspec.scient.ing/context/scienting-1.jsonld` ([context/README.md](../context/README.md)); whether that address resolves was not checked. Whether a generic Web Annotation client displays an `AnchorSelector` was not verified. -Both Hypothesis and manuspec store a quote with 32 characters of prefix and suffix ([spec/06 §6.2](../spec/06-anchors.md#62-the-anchor)). +Both Hypothesis and paperspec store a quote with 32 characters of prefix and suffix ([spec/06 §6.2](../spec/06-anchors.md#62-the-anchor)). ## Docling, MinerU and Marker @@ -211,7 +211,7 @@ Docling's schema (version 1.10.0 on `main`) covers texts, pictures, tables, grou Docling uses AI models for layout analysis and table structure recognition and is reported integrated with LangChain, LlamaIndex and spaCy ([abstract](https://arxiv.org/abs/2501.17887)). MinerU describes locators of the form `doc:{id}/tier:{tier}/page:{n}/block:{n}/char:{offset}` ([MinerU](https://github.com/opendatalab/MinerU)); Marker's JSON is a tree of blocks with an `id`, a `section_hierarchy` and `images` ([Marker](https://github.com/datalab-to/marker)). -*How manuspec differs.* +*How paperspec differs.* The Docling `TextItem` field list has no per-item hash and its `label` enum has no sentence value, so items are block-grained ([schema](https://raw.githubusercontent.com/docling-project/docling-core/main/docs/DoclingDocument.json)). Identifiers in all three are positional: `self_ref` indexes into lists, Marker's example IDs embed a page number, and MinerU's locators embed page and block numbers. MinerU's guide says to preserve locators for citation. @@ -221,10 +221,10 @@ It is not a pinned, quote-verified anchor with resolution outcomes. *Where they are the better choice.* For converting PDFs and other formats, layout analysis, table structure recognition, integrations, and one-shot structured output. -manuspec does not read PDFs; extracting lines from a PDF is outside its text ([spec/07 §7.1](../spec/07-geometry.md#71-page-fingerprints)). +paperspec does not read PDFs; extracting lines from a PDF is outside its text ([spec/07 §7.1](../spec/07-geometry.md#71-page-fingerprints)). *Interoperation.* -These are converters, which manuspec treats as backends. +These are converters, which paperspec treats as backends. A backend declaration records the tool's code and weight licenses, and a stage may run only if they pass the gate ([spec/14 §14.4](../spec/14-rights.md#144-backends-and-profiles)); `provenance.json` records the backends and cached readings used ([spec/12 §12.4](../spec/12-package.md#124-provenance)). Docling appears in the repository only as data: an illustrative declaration, version `illustrative`, in `fixtures/records/backend-docling.json` and `vectors/rights.jsonl`. Their JSON output is not a named witness kind. @@ -242,17 +242,17 @@ Scale, and citation-mention linking across papers: the paper, an arXiv preprint, The schema classes include `Paper`, with `pdf_hash`, `metadata`, `body_text`, `bib_entries` and `ref_entries`, and `Paragraph`, with `cite_spans`, `ref_spans` and `eq_spans` given as `start`, `end` and `text` ([s2orc.py](https://raw.githubusercontent.com/allenai/s2orc-doc2json/master/doc2json/s2orc.py)). Sources are PDF via GROBID, PMC JATS XML and arXiv LaTeX ([doc2json](https://github.com/allenai/s2orc-doc2json)). -*How manuspec differs.* +*How paperspec differs.* Table cells are not nodes ([s2orc.py](https://raw.githubusercontent.com/allenai/s2orc-doc2json/master/doc2json/s2orc.py)). The paper states limitations, among them GROBID-derived inline-citation errors, linking that depends on titles, and LaTeX-derived metadata "worse than those extracted from PDF" ([arXiv:1911.02782](https://arxiv.org/pdf/1911.02782)). The release formats "have changed over time" ([doc2json](https://github.com/allenai/s2orc-doc2json)). *Where they are the better choice.* -Corpus-scale text mining and citation-graph work across the literature, which manuspec explicitly does not target. +Corpus-scale text mining and citation-graph work across the literature, which paperspec explicitly does not target. *Interoperation.* The purposes and scales differ. -S2ORC-style JSON could be a source of text readings. manuspec has no S2ORC witness kind. +S2ORC-style JSON could be a source of text readings. paperspec has no S2ORC witness kind. The `same_as` list takes `doi:`, `arxiv:`, `isbn:`, `pmid:`, `pmcid:` and `url:` among its prefixes and has no Semantic Scholar identifier ([spec/02 §2.1](../spec/02-model.md#21-four-objects)). ## Nanopublications and micropublications @@ -268,17 +268,17 @@ Micropublications are a semantic model for claims, evidence, arguments and annot A claim-sized unit with machine-readable provenance and publication metadata, with an integrity check on the unit. Micropublications add a claim, its supporting representations as a directed acyclic graph rooted at the claim, and challenges; the paper says they aim to present primary evidence while nanopublications "model only the indicated statement" ([paper](https://jbiomedsem.biomedcentral.com/articles/10.1186/2041-1480-5-28)). -*How manuspec differs.* +*How paperspec differs.* These models do not store the paper's text. The guidelines read do not describe pinning a passage, and they do not mention signatures; a Java library's README shows RSA public-key signing; the signature structure was not verified ([nanopub-java](https://github.com/Nanopublication/nanopub-java)). *Where they are the better choice.* Publishing a claim as a citable, hash-verifiable, linked-data object, and representing support and challenge among claims. -manuspec does not define claim semantics; a statement true independently of one paper belongs outside this repository, and a statement about reading the paper belongs in a layer ([spec/18 §18.1](../spec/18-layers.md#181-one-rule-decides-what-is-a-claim-and-what-is-a-layer)). +paperspec does not define claim semantics; a statement true independently of one paper belongs outside this repository, and a statement about reading the paper belongs in a layer ([spec/18 §18.1](../spec/18-layers.md#181-one-rule-decides-what-is-a-claim-and-what-is-a-layer)). *Interoperation.* A layer annotation can say that a span states, uses or disputes a claim kept elsewhere ([spec/18 §18.4](../spec/18-layers.md#184-bodies)). -A nanopublication's provenance could point at a manuspec address, since an address is a URL fragment (`…#node`, [spec/06 §6.1](../spec/06-anchors.md#61-addresses)); that is an inference, and no such mapping is defined in either project. +A nanopublication's provenance could point at a paperspec address, since an address is a URL fragment (`…#node`, [spec/06 §6.1](../spec/06-anchors.md#61-addresses)); that is an inference, and no such mapping is defined in either project. ## Packaging: Frictionless Data Package, RO-Crate and BagIt @@ -289,8 +289,8 @@ It is "a simple container format for describing a coherent collection of data in A resource's `hash` is MD5 by default, with other algorithms written as `algorithm:value` ([data resource](https://datapackage.org/standard/data-resource/)). It describes tabular files and their schemas portably. Not seen: hashing that covers descriptor and files in canonical form, per-value anchors to a source text, units and uncertainty. -It remains the right choice for the tabular container and its tooling, which manuspec adopts: a `scienting-dataset/1` is a Data Package plus units (strings a unit parser called Pint can read), uncertainty and an `origin`, with reported values anchored to the table cells or sentences that print them ([spec/15](../spec/15-datasets.md)). -The Data Package version manuspec uses is not stated in spec/15. +It remains the right choice for the tabular container and its tooling, which paperspec adopts: a `scienting-dataset/1` is a Data Package plus units (strings a unit parser called Pint can read), uncertainty and an `origin`, with reported values anchored to the table cells or sentences that print them ([spec/15](../spec/15-datasets.md)). +The Data Package version paperspec uses is not stated in spec/15. The dataset format is `provisional` ([registry/formats.json](../registry/formats.json)). *RO-Crate.* @@ -298,14 +298,14 @@ It is "a community effort to establish a lightweight approach to packaging resea Version 1.2 is a Recommendation published 2025-06-04, and the site calls 1.3 the newest ([1.2](https://www.researchobject.org/ro-crate/specification/1.2/index.html)). It describes a folder's contents in `ro-crate-metadata.json`, and file entities should include `contentSize` ([data entities](https://www.researchobject.org/ro-crate/specification/1.2/data-entities.html)). Use it for general research-object description and discovery with schema.org vocabularies. -A manuspec package folder could be described by an RO-Crate. +A paperspec package folder could be described by an RO-Crate. No such mapping exists in either project. *BagIt.* RFC 8493 defines a bag: `bagit.txt`, a `data/` payload of opaque octet streams, and at least one `manifest-.txt`; BagIt 1.0 tools must support SHA-256 and SHA-512 ([RFC 8493](https://www.rfc-editor.org/rfc/rfc8493)). The RFC says it "is not designed to be secure against active attacks", and it has no signatures, content-level structure or payload semantics. BagIt fits fixity and transfer of arbitrary payloads, archives and repositories. -manuspec's `MANIFEST.json` plays a similar fixity role, with a path, SHA-256 and size per file, and the hash of the manifest pins the package; the file layout differs ([spec/12 §12.3](../spec/12-package.md#123-the-manifest)). +paperspec's `MANIFEST.json` plays a similar fixity role, with a path, SHA-256 and size per file, and the hash of the manifest pins the package; the file layout differs ([spec/12 §12.3](../spec/12-package.md#123-the-manifest)). A package could be a bag's payload, since payload files are opaque (an inference). ## Metadata: schema.org, Crossref and DataCite @@ -320,14 +320,14 @@ Bibliographic and identification metadata. schema.org's `CreativeWork` has `text`, `citation`, `hasPart`, `version`, `license` and a `correction` property ([CreativeWork](https://schema.org/CreativeWork)), and `MediaObject` has `sha256` ([MediaObject](https://schema.org/MediaObject)). Crossref's Crossmark lets publishers show whether an item was corrected, retracted or updated, including to readers holding an older download ([Crossmark](https://www.crossref.org/documentation/crossmark/)). -*How manuspec differs.* +*How paperspec differs.* These are record-level. A correction is flagged on the work, not on a sentence with evidence for each changed digit; the body has no node hashes; there are no fidelity levels or signed receipts; and rights are license-level information about the work, not per-file use grants with an AI purpose and processor. None of the schema pages read describes body text, and the extent of Crossref's license and text-mining fields was not verified ([Crossref 5.4.0](https://www.crossref.org/documentation/schema-library/metadata-deposit-schema-5-4-0/)). *Where they are the better choice.* Identifying and describing works and datasets with DOIs (digital object identifiers), discovery, registering corrections and retractions at the work level, and structured data on web pages. -manuspec is not a citation index and imports from Crossref, OpenAlex, PubMed Central and arXiv and never depends on them ([docs/overview.md](../docs/overview.md#what-it-is-not)). +paperspec is not a citation index and imports from Crossref, OpenAlex, PubMed Central and arXiv and never depends on them ([docs/overview.md](../docs/overview.md#what-it-is-not)). *Interoperation.* The document's `meta` is a CSL-JSON item and `same_as` holds a DOI. @@ -339,24 +339,24 @@ No mapping from `meta` to Crossref, DataCite or schema.org is defined. *PROV-O.* It is a W3C Recommendation of 30 April 2013 that expresses the PROV Data Model in OWL2, with the classes Entity, Activity and Agent and properties such as `wasGeneratedBy`, `wasDerivedFrom` and `wasInvalidatedBy` ([PROV-O Recommendation](https://www.w3.org/TR/prov-o/)). It is a general vocabulary and defines no node hashes, anchor resolution, corrections or receipts. -manuspec does not use it: provenance is a file, `provenance.json`, defined in the repository ([spec/12 §12.4](../spec/12-package.md#124-provenance)). +paperspec does not use it: provenance is a file, `provenance.json`, defined in the repository ([spec/12 §12.4](../spec/12-package.md#124-provenance)). PROV-O is the better choice for linked-data provenance that other systems can query generically. A mapping of stages and corrections to Activity and Entity is possible. Nothing in either project defines one. *RFC 8785 (JSON Canonicalization Scheme).* Published June 2020 as an Informational RFC, it sorts object properties recursively in UTF-16 code unit order, keeps array order, writes numbers by ECMAScript rules, uses no whitespace, outputs UTF-8, and does not normalize Unicode strings ([RFC 8785](https://www.rfc-editor.org/rfc/rfc8785)). -It is a building block that defines no document model, and manuspec uses it: every hash of JSON is over RFC 8785 output. -manuspec adds rules on top: a decimal that carries meaning is a string, so `310.0` and `1.5260` keep their printed digits, and a document with a lone surrogate, `NaN` or an infinity has no canonical form and is invalid ([spec/01 §1.1 and §1.2](../spec/01-conventions.md#11-canonical-json)). +It is a building block that defines no document model, and paperspec uses it: every hash of JSON is over RFC 8785 output. +paperspec adds rules on top: a decimal that carries meaning is a string, so `310.0` and `1.5260` keep their printed digits, and a document with a lone surrogate, `NaN` or an infinity has no canonical form and is invalid ([spec/01 §1.1 and §1.2](../spec/01-conventions.md#11-canonical-json)). *RFC 6962 and RFC 9162 (Merkle trees).* A Merkle tree hashes items pairwise up to one root, so one short value commits to all of them. RFC 6962 (Certificate Transparency, June 2013, Experimental) is obsolete; RFC 9162 (Certificate Transparency Version 2.0, published December 9, 2021, Experimental) "obsoletes RFC 6962" ([RFC 6962](https://www.rfc-editor.org/rfc/rfc6962), [RFC 9162](https://www.rfc-editor.org/rfc/rfc9162)). Both give the same Merkle Tree Hash: a leaf is `HASH(0x00 || d)`, an interior node is `HASH(0x01 || left || right)`, and a list splits at the largest power of two smaller than n. -manuspec's receipts use this construction with SHA-256 and cite RFC 6962 ([spec/08 §8.5](../spec/08-fidelity.md#85-merkle-roots)). -They differ in one rule: a receipt with no items is invalid in manuspec, while the RFC defines the hash of an empty list. +paperspec's receipts use this construction with SHA-256 and cite RFC 6962 ([spec/08 §8.5](../spec/08-fidelity.md#85-merkle-roots)). +They differ in one rule: a receipt with no items is invalid in paperspec, while the RFC defines the hash of an empty list. The citation is to the obsolete RFC; the tree it defines is the one RFC 9162 also defines. -manuspec's `node_hash` is not this construction (see "Limits and status" below). +paperspec's `node_hash` is not this construction (see "Limits and status" below). ## Content addressing: IPFS CIDs and SWHIDs @@ -366,7 +366,7 @@ It gives verifiable, location-independent identity to immutable data. A CID covers the root block of a DAG (directed acyclic graph), "not a direct hash of the file's bytes", so chunk size, layout, codec, version and hash all change the CID for the same file. Identity and content are the same thing, so an edit makes a new identifier; the page describes no ID that survives edits, no sentence granularity, corrections or fidelity. Keep using CIDs for storage and distribution of immutable blobs. -manuspec's asset store names files by SHA-256, not CID ([spec/12 §12.6](../spec/12-package.md#126-assets)). +paperspec's asset store names files by SHA-256, not CID ([spec/12 §12.6](../spec/12-package.md#126-assets)). *Software Heritage SWHID.* ISO/IEC 18670:2025 specifies the SoftWare Hash IDentifier, version 1.2, published April 2025 ([ISO catalog page](https://www.iso.org/standard/89985.html); [swhid.org](https://www.swhid.org/specification/v1.2/)). @@ -376,8 +376,8 @@ Keep using SWHIDs for persistent, content-derived identification and archiving o *The contrast.* A CID or SWHID is a function of content at all times. -A manuspec node ID is derived from content once, at minting, and then frozen; the content hashes live separately in `node_hash`, so the pair of ID and hash tells whether the text has changed ([spec/04 §4.2 and §4.3](../spec/04-identity.md#42-minting-node-ids), [spec/05 §5.1](../spec/05-hashes.md#51-the-five-values)). -manuspec's hashes are SHA-256 ([spec/01 §1.3](../spec/01-conventions.md#13-hashes)). +A paperspec node ID is derived from content once, at minting, and then frozen; the content hashes live separately in `node_hash`, so the pair of ID and hash tells whether the text has changed ([spec/04 §4.2 and §4.3](../spec/04-identity.md#42-minting-node-ids), [spec/05 §5.1](../spec/05-hashes.md#51-the-five-values)). +paperspec's hashes are SHA-256 ([spec/01 §1.3](../spec/01-conventions.md#13-hashes)). The cost of the choice: because the ID is minted from the text hash, two independent conversions that read a sentence differently by one character mint different IDs for it. ## Fragment identifiers and Pandoc @@ -386,7 +386,7 @@ A fragment identifier is the part of a URL after `#` that says where to look ins - **PDF fragments (RFC 8118):** Informational, March 2017. Parameters include `page`, `nameddest`, `structelem`, `zoom`, `viewrect`, `highlight` and `search`; none selects text by character offset, `search` "selects the first matching word in the document", and `highlight` takes rectangle coordinates ([RFC 8118](https://www.rfc-editor.org/rfc/rfc8118)). - Keep using it to open a PDF at a page, destination or region. manuspec's `locations.jsonl` stores per-node page boxes as `[x0, y0, x1, y1]` in PDF points against page fingerprints ([spec/07 §7.4](../spec/07-geometry.md#74-locationsjsonl)), so a tool could build an RFC 8118 link; the repository does not define that. + Keep using it to open a PDF at a page, destination or region. paperspec's `locations.jsonl` stores per-node page boxes as `[x0, y0, x1, y1]` in PDF points against page fingerprints ([spec/07 §7.4](../spec/07-geometry.md#74-locationsjsonl)), so a tool could build an RFC 8118 link; the repository does not define that. - **Media Fragments URI 1.0:** A W3C Recommendation of 25 September 2012 that defines time (`t=`) and spatial (`xywh=`) fragments for audio, video and images, and says nothing about text ([Media Fragments](https://www.w3.org/TR/media-frags/)). It is a weak fit for text passages. - **RFC 5147 (text/plain):** A Proposed Standard of April 2008 with `char=` and `line=` positions counted from zero and integrity checks `length=` and `md5=`, "to detect whether the resource has changed" ([RFC 5147](https://www.rfc-editor.org/rfc/rfc5147)). @@ -394,11 +394,11 @@ A fragment identifier is the part of a URL after `#` that says where to look ins - **Text Fragments:** A WICG Draft Community Group Report, not a W3C standard; the version read is dated 13 December 2023 and may not be the latest. The syntax is `#:~:text=[prefix-,]start[,end][,-suffix]`, it matches the first exact occurrence, and it is restricted to top-level navigations ([WICG draft report](https://wicg.github.io/scroll-to-text-fragment/)). - **DOM and XPath approaches:** W3C `XPathSelector` and `RangeSelector` ([model](https://www.w3.org/TR/annotation-model/)), TEI's `xpath()` scheme ([TEI pointers chapter](https://tei-c.org/release/doc/tei-p5-doc/en/html/SA.html)) and Hypothesis's first strategy, which "fails if the XPath expressions can no longer be applied" ([post](https://web.hypothes.is/blog/fuzzy-anchoring/)). - Path addressing breaks when structure changes; manuspec's display paths are never stored or cited ([spec/04 §4.3](../spec/04-identity.md#43-permanence-retirement-and-aliases)). + Path addressing breaks when structure changes; paperspec's display paths are never stored or cited ([spec/04 §4.3](../spec/04-identity.md#43-permanence-retirement-and-aliases)). - **Pandoc:** The pandoc-types library defines the `Pandoc` document type with modules for building, walking and JSON conversion; the latest on Hackage is 1.23.1, uploaded 2023-08-06 ([Hackage](https://hackage.haskell.org/package/pandoc-types)). - Its Block and Inline types and its treatment of identifiers were not verified. `latex` is a manuspec witness kind ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)); Pandoc is not mentioned in the repository. + Its Block and Inline types and its treatment of identifiers were not verified. `latex` is a paperspec witness kind ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)); Pandoc is not mentioned in the repository. -On the web, a manuspec node ID is the URL fragment, so `…#k3m9q2a` lands on the sentence ([spec/06 §6.1](../spec/06-anchors.md#61-addresses)). +On the web, a paperspec node ID is the URL fragment, so `…#k3m9q2a` lands on the sentence ([spec/06 §6.1](../spec/06-anchors.md#61-addresses)). This is a plain HTML fragment, not a registered fragment scheme; the chapters define no fragment syntax for the package media type. ## BioC, CSL-JSON and EPUB 3 @@ -408,20 +408,20 @@ BioC is a simple extensible XML format for sharing text documents and annotation Its model has collection, source, document, passage, optional sentence, annotation and relation, with `infon` key-value pairs, and an annotation's location is an offset and length relative to the whole document. Its authors state that it "targets tool developers and not end users" and "focuses on text data rather than other media". Keep using it to exchange text-mining annotations among biomedical natural-language-processing (NLP) tools. -Offsets would need conversion, since manuspec counts Unicode code points ([spec/01 §1.5](../spec/01-conventions.md#15-character-offsets)) and the length unit in BioC was taken from a page summary and not confirmed. +Offsets would need conversion, since paperspec counts Unicode code points ([spec/01 §1.5](../spec/01-conventions.md#15-character-offsets)) and the length unit in BioC was taken from a page summary and not confirmed. No BioC mapping is defined. *CSL-JSON.* It is a JSON format for bibliographic items consumed by Citation Style Language (CSL) processors; items require `id` and `type`, `author` is an array of name objects, and `issued` uses `date-parts` or `raw` ([markup page of the CSL-JSON documentation](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html)). Its schema is described as "not yet fully normative" ([CSL schema](https://github.com/citation-style-language/schema)). Keep using it for bibliographic interchange with citation processors and reference managers. -manuspec embeds CSL-JSON as the document's `meta` and as the optional parsed `csl` of each reference ([spec/02 §2.2](../spec/02-model.md#22-documentjson), [spec/10](../spec/10-references.md)). +paperspec embeds CSL-JSON as the document's `meta` and as the optional parsed `csl` of each reference ([spec/02 §2.2](../spec/02-model.md#22-documentjson), [spec/10](../spec/10-references.md)). *EPUB 3.* EPUB 3.3 is a W3C Recommendation, "a distribution and interchange format for digital publications and documents": a ZIP container with a package document listing a manifest and a spine, and XHTML or SVG content documents ([EPUB 3.3](https://www.w3.org/TR/epub-33/)). It suits reflowable publications. Keep using it as a reading and distribution format. -`epub` is a manuspec witness kind ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)), and the zip package rules (UTF-8 names, one top-level folder, no symlinks) are the package's own ([spec/12 §12.2](../spec/12-package.md#122-paths)). +`epub` is a paperspec witness kind ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)), and the zip package rules (UTF-8 names, one top-level folder, no symlinks) are the package's own ([spec/12 §12.2](../spec/12-package.md#122-paths)). ## Limits and status @@ -437,9 +437,9 @@ The repository names no outside adopter and no independent implementation, and t *Scope of this comparison.* The pages read cover no ORKG, DocBook, PubAnnotation, OpenAlex or PMC OA XML material, so those are not compared. -A statement that no single comparator combines manuspec's features describes the pages read and surveys no other systems. +A statement that no single comparator combines paperspec's features describes the pages read and surveys no other systems. -*What manuspec does not do.* +*What paperspec does not do.* - It is not a publisher interchange format; it ingests JATS and other formats as witnesses and does not replace them ([spec/02 §2.3](../spec/02-model.md#23-witnessesjson)). - It is not a search engine, a citation index, a recommendation feed or a chat-with-a-PDF tool ([docs/overview.md](../docs/overview.md#what-it-is-not)). @@ -474,7 +474,7 @@ These are the places where the guides and the specification differ, and this pag Of the 29 formats, 11 are `provisional`, including `scienting-dataset/1`, which the datasets paragraphs in `docs/concepts.md` present without that qualifier. *The distinguishing combination, and what it costs.* -manuspec puts in one package permanent sentence- and cell-level IDs, five hashes per node, anchors with explicit resolution outcomes and drift, append-only evidence-gated corrections, signed fidelity receipts with spot-check bounds, per-witness rights with AI-use axes, and value-to-cell anchors. +paperspec puts in one package permanent sentence- and cell-level IDs, five hashes per node, anchors with explicit resolution outcomes and drift, append-only evidence-gated corrections, signed fidelity receipts with spot-check bounds, per-witness rights with AI-use axes, and value-to-cell anchors. Individual pieces have precedents in the comparators: TEI correction markup, Web Annotation selectors, RFC 5147 integrity checks, RFC 6962 Merkle trees, BagIt manifests and Frictionless packaging. No single comparator in the pages read combines them. The price is weight: five hashes per node, a gate on corrections, signed records and a custom selector type. diff --git a/docs/concepts.md b/docs/concepts.md index be78377..31d5d2c 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -16,8 +16,8 @@ It defines 29 formats, 18 of them `candidate` and 11 `provisional`, as [registry The provisional ones are the project, bundle, dataset, digitization, view, snapshot, draft-ids, exercise, submission, grade and checklist formats; the sections below say so where they describe them. Format identifiers such as `scienting-anchor/1` and `scienting-correction/1` begin with `scienting-`, which is the formats' namespace. -The repository's name, manuspec, is a separate matter, and the formats are named after what they hold. -The repository is at . +The repository's name, paperspec, is a separate matter, and the formats are named after what they hold. +The repository is at . ## Hashes and canonical JSON @@ -89,7 +89,7 @@ Page breaks, running heads and columns are not nodes; they are geometry ([chapte See [chapter 3](../spec/03-nodes.md). Close relatives: [JATS 1.4](https://www.niso.org/publications/z3996-2024-jats) is an XML format in which publishers and archives exchange journal content, and TEI is a set of guidelines for encoding scholarly text. -Each is the better choice for its own job, and the manuspec formats do not replace them; a JATS file can be one witness of a document. +Each is the better choice for its own job, and the paperspec formats do not replace them; a JATS file can be one witness of a document. The element list in the [JATS 1.4 archiving tag library](https://jats.nlm.nih.gov/archiving/tag-library/1.4/) shows sections, paragraphs, table wrappers and cells and has no sentence element, while [TEI has an `` element](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-s.html). Here the sentence is the unit that gets an ID and hashes. See [the comparison page](comparison.md). diff --git a/docs/examples.md b/docs/examples.md index cdd0dc1..4fb735c 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -7,7 +7,7 @@ The last sections point implementers (anyone writing a reader, writer, converter This page makes no comparison with the neighboring standards. The formats are version 0.1.0, and each is `candidate` or `provisional` in `registry/formats.json`. -Run every command from the root of the repository, . +Run every command from the root of the repository, . With [pixi](https://pixi.sh), `pixi run ` sets up the environment first. Every command also works without pixi, with Python 3.14 and two packages, `jsonschema` and `cryptography` installed and standard command-line tools (the `sed` command in the last section is the GNU version of `sed`). diff --git a/docs/faq.md b/docs/faq.md index c9bdf60..ca7b4a1 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,9 +1,9 @@ # FAQ -This page answers questions about manuspec, a set of file formats that give every sentence and table cell of a scientific paper a permanent address. +This page answers questions about paperspec, a set of file formats that give every sentence and table cell of a scientific paper a permanent address. Newcomers, implementers of a reader, writer, converter or checker, and experts who know JATS (Journal Article Tag Suite), TEI (Text Encoding Initiative) or W3C Web Annotations can all use it. Each answer gives the plain statement first, then the precise one, then the chapter that defines it. -The repository is , and the formats are at version 0.1.0. +The repository is , and the formats are at version 0.1.0. ## Can I read these files without special software? @@ -82,13 +82,13 @@ Whether a team may share notes on a paper this way is a question for its own cou They overlap in subject, not in job. -JATS, the [Journal Article Tag Suite](https://www.niso.org/publications/z3996-2024-jats) (ANSI/NISO Z39.96-2024), is an XML format for publishers and archives to exchange journal content. manuspec does not replace it. +JATS, the [Journal Article Tag Suite](https://www.niso.org/publications/z3996-2024-jats) (ANSI/NISO Z39.96-2024), is an XML format for publishers and archives to exchange journal content. paperspec does not replace it. A JATS file is one kind of witness (a source file), an input from which a document is established. None of the 312 elements in the [JATS 1.4 Archiving tag library](https://jats.nlm.nih.gov/archiving/tag-library/1.4/) marks a sentence; its smallest text unit is the paragraph, `

`. TEI, the Text Encoding Initiative, has a sentence-like [`` element](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-s.html) and keeps both readings of a corrected passage with [`` and ``](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-corr.html). The encoder assigns its `xml:id`, and the guidelines [recommend it for durability](https://tei-c.org/release/doc/tei-p5-doc/en/html/SA.html). -manuspec mints and retires IDs by rule, keeps corrections as separate records with evidence, and hashes each node. +paperspec mints and retires IDs by rule, keeps corrections as separate records with evidence, and hashes each node. Keep JATS for publisher and archive exchange and TEI for general scholarly text encoding. A TEI file is a witness of kind `xml` ([spec/02 §2.3](../spec/02-model.md)). diff --git a/docs/glossary.md b/docs/glossary.md index 33703f4..76fed59 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -1,6 +1,6 @@ # Glossary -A scientific paper changes after it is published: errata appear, readings get corrected, annotations pile up. manuspec is a set of file formats for scientific papers that keeps each sentence findable through those changes (repository: ). +A scientific paper changes after it is published: errata appear, readings get corrected, annotations pile up. paperspec is a set of file formats for scientific papers that keeps each sentence findable through those changes (repository: ). This glossary defines its terms for readers from newcomer to expert, implementers included. Each entry gives the plain meaning, then the precise one, then the chapter that defines it. @@ -59,7 +59,7 @@ Fidelity level JATS : Outside term. Journal Article Tag Suite, ANSI/NISO Z39.96-2024, an XML format in which publishers and archives exchange journal content ([the NISO page](https://www.niso.org/publications/z3996-2024-jats)). -In manuspec, `jats` is a witness kind: the fixture `okafor2025open` was established from a JATS file and a PDF that agree. +In paperspec, `jats` is a witness kind: the fixture `okafor2025open` was established from a JATS file and a PDF that agree. The formats ingest JATS and do not replace it. ([2.3](../spec/02-model.md#23-witnessesjson)) Keyed hash diff --git a/docs/overview.md b/docs/overview.md index e5dde15..512ecc7 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -1,4 +1,4 @@ -# The manuspec formats +# The paperspec formats This page serves three readers. A student new to the problem will find each term defined where it first appears. @@ -15,7 +15,7 @@ Scientists who rely on a paper keep asking two questions. Where did this number come from, and how far was it checked? A force constant in a table, a value read off a plot, a parameter in a model: each should lead back to the cell or sentence it came from, with a record of who compared it with the page. Most tools for scientific literature aggregate. -They index hundreds of millions of papers and answer questions over all of them, shallowly. manuspec does the opposite. +They index hundreds of millions of papers and answer questions over all of them, shallowly. paperspec does the opposite. A team working on a focused question cares more about fifty papers it understands completely than about the world's literature. Those fifty papers deserve to be converted once, corrected once, split down to the sentence, annotated by the people who know them, linked to checked claims, and kept. @@ -24,8 +24,8 @@ A model can summarize a paper. It cannot give you a signed statement that a named person checked a passage, IDs that never move, or a store its owner controls. The formats supply those three, and they are worth most at the scale of one team. -manuspec is a set of file formats for scientific papers that have been converted, split into addressable pieces and checked. -The repository is at . +paperspec is a set of file formats for scientific papers that have been converted, split into addressable pieces and checked. +The repository is at . It is version 0.1.0 and defines 29 formats; in [registry/formats.json](../registry/formats.json), 18 are `candidate` and 11 are `provisional`. ## Who it is for @@ -130,12 +130,12 @@ The [specification's reading paths](../spec/README.md) say which chapters each r ## How it compares -manuspec adds to existing standards and replaces none of them. [The comparison page](comparison.md) has the full account; five points follow. +paperspec adds to existing standards and replaces none of them. [The comparison page](comparison.md) has the full account; five points follow. - JATS is the NISO standard by which [publishers and archives exchange journal content](https://www.niso.org/publications/z3996-2024-jats). Its [version 1.4 element list](https://jats.nlm.nih.gov/archiving/tag-library/1.4/) shows no sentence element. A JATS file is an input here (witness kind `jats`). -- TEI has a [sentence-like element](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-s.html) and [markup that keeps both readings of a correction](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-corr.html), and recommends `xml:id` pointers ["for durability in the presence of editing"](https://tei-c.org/release/doc/tei-p5-doc/en/html/SA.html). manuspec mints and retires IDs by rule and keeps corrections as a separate, evidence-gated record. +- TEI has a [sentence-like element](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-s.html) and [markup that keeps both readings of a correction](https://tei-c.org/release/doc/tei-p5-doc/en/html/ref-corr.html), and recommends `xml:id` pointers ["for durability in the presence of editing"](https://tei-c.org/release/doc/tei-p5-doc/en/html/SA.html). paperspec mints and retires IDs by rule and keeps corrections as a separate, evidence-gated record. TEI is built for encoding scholarly text in general, including correction markup within a text. - GROBID [converts PDFs to TEI](https://grobid.readthedocs.io/en/latest/Introduction/) and [reports F1 scores](https://grobid.readthedocs.io/en/latest/Introduction/) for its automatic reading. Its output can be held as one reading, under witness kind `xml`. @@ -144,7 +144,7 @@ manuspec adds to existing standards and replaces none of them. [The comparison p The W3C model calls the `TextPositionSelector` ["very brittle"](https://www.w3.org/TR/annotation-model/) against changes to the resource, and the anchors here pin a hash instead. For annotation in general, use the W3C model. - Docling's [document schema](https://raw.githubusercontent.com/docling-project/docling-core/main/docs/DoclingDocument.json) refers to items by position (`#/texts/12`) and lists no per-item hash field. - Docling is a conversion toolkit that, [by its own abstract](https://arxiv.org/abs/2501.17887), uses AI models for layout analysis and table structure recognition. manuspec defines no converter. + Docling is a conversion toolkit that, [by its own abstract](https://arxiv.org/abs/2501.17887), uses AI models for layout analysis and table structure recognition. paperspec defines no converter. The formats are at version 0.1.0, the repository names no outside adopter, and the reference tools belong to the same repository. The formats do not replace publisher interchange formats. diff --git a/docs/rationale.md b/docs/rationale.md index 4c5667d..b93c6ac 100644 --- a/docs/rationale.md +++ b/docs/rationale.md @@ -10,7 +10,7 @@ Experts find the cost of each choice and, where a neighboring standard chose dif The formats are at version 0.1.0. Of the 29 in `registry/formats.json`, 18 are `candidate` and 11 are `provisional`, and the provisional ones are named where they appear. -The repository is manuspec, at . +The repository is paperspec, at . The `scienting-` prefix in format names such as `scienting-anchor/1` is the formats' namespace, separate from the repository's name. ## Identity diff --git a/docs/walkthrough.md b/docs/walkthrough.md index 8471300..43df112 100644 --- a/docs/walkthrough.md +++ b/docs/walkthrough.md @@ -7,7 +7,7 @@ Its problems are modeled on the failures that the specification's rules address. Three readers can use the guide, and each gets something different. A newcomer knows what a paper and a citation are, not hashes or JSON, so every term is defined where it first appears. An implementer who will write a reader, writer, converter or checker gets the chapter and test vector for each step. -An expert gets the status: [manuspec](https://git.scient.ing/infra/manuspec) is at version 0.1.0, and each format is `candidate` or `provisional` in [`registry/formats.json`](../registry/formats.json) (18 candidate, 11 provisional). +An expert gets the status: [paperspec](https://git.scient.ing/infra/paperspec) is at version 0.1.0, and each format is `candidate` or `provisional` in [`registry/formats.json`](../registry/formats.json) (18 candidate, 11 provisional). The `scienting-` prefix on format names, as in `scienting-doc/1`, is the formats' namespace. It has nothing to do with the repository's name. @@ -132,7 +132,7 @@ The table shows how each anchor resolves at revision 12 ([vectors/resolve.jsonl] A reader shows each note by its result. A checker of exact words accepts only `current`, `moved` and `reattached`. -The [W3C Web Annotation Data Model](https://www.w3.org/TR/annotation-model/) is the general W3C Recommendation for annotating web resources. manuspec's annotation layers build on it, with a custom `AnchorSelector` followed by a standard `TextQuoteSelector` as a fallback. +The [W3C Web Annotation Data Model](https://www.w3.org/TR/annotation-model/) is the general W3C Recommendation for annotating web resources. paperspec's annotation layers build on it, with a custom `AnchorSelector` followed by a standard `TextQuoteSelector` as a fallback. It has no permanent IDs for sentences inside the source, no hashes of the target text, and no results such as `moved` or drift. See [comparison.md](comparison.md). diff --git a/fixtures/README.md b/fixtures/README.md index 343d777..e40204e 100644 --- a/fixtures/README.md +++ b/fixtures/README.md @@ -1,7 +1,7 @@ # Fixtures A reader, writer, converter or checker of stored papers needs files to test against, and a newcomer needs examples of what a stored paper looks like. -This folder holds that example data of manuspec (), version 0.1.0. +This folder holds that example data of paperspec (), version 0.1.0. All text is synthetic, written for these files and dedicated CC0; license fields inside the fixtures describe fictional works. Three readers use these files. diff --git a/fixtures/invalid/alias-dangling/package/MANIFEST.json b/fixtures/invalid/alias-dangling/package/MANIFEST.json index ebcc286..4f80071 100644 --- a/fixtures/invalid/alias-dangling/package/MANIFEST.json +++ b/fixtures/invalid/alias-dangling/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"ids.jsonl","sha256":"1eb53589cd394214dd4ee15be98a3dfbacec5e585a1e655fe2dfeff71a07e19e","size":61},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"ids.jsonl","sha256":"1eb53589cd394214dd4ee15be98a3dfbacec5e585a1e655fe2dfeff71a07e19e","size":61},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/alias-dangling/package/provenance.json b/fixtures/invalid/alias-dangling/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/alias-dangling/package/provenance.json +++ b/fixtures/invalid/alias-dangling/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/alias-dangling/package/receipts.jsonl b/fixtures/invalid/alias-dangling/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/alias-dangling/package/receipts.jsonl +++ b/fixtures/invalid/alias-dangling/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/alias-dangling/package/roster.json b/fixtures/invalid/alias-dangling/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/alias-dangling/package/roster.json +++ b/fixtures/invalid/alias-dangling/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/bad-id/package/MANIFEST.json b/fixtures/invalid/bad-id/package/MANIFEST.json index f3435b1..ef713da 100644 --- a/fixtures/invalid/bad-id/package/MANIFEST.json +++ b/fixtures/invalid/bad-id/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"7f531bc7549887e8d18a0b31a91752912f2c20b26521cf3d8d97180019773324","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"7f531bc7549887e8d18a0b31a91752912f2c20b26521cf3d8d97180019773324","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/bad-id/package/provenance.json b/fixtures/invalid/bad-id/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/bad-id/package/provenance.json +++ b/fixtures/invalid/bad-id/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/bad-id/package/receipts.jsonl b/fixtures/invalid/bad-id/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/bad-id/package/receipts.jsonl +++ b/fixtures/invalid/bad-id/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/bad-id/package/roster.json b/fixtures/invalid/bad-id/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/bad-id/package/roster.json +++ b/fixtures/invalid/bad-id/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/checks-only-plain/package/MANIFEST.json b/fixtures/invalid/checks-only-plain/package/MANIFEST.json index c322ddd..f8e6e58 100644 --- a/fixtures/invalid/checks-only-plain/package/MANIFEST.json +++ b/fixtures/invalid/checks-only-plain/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"8b74d834e39d7180321ca103af1ed778954ddf6c8ed1dd29e5c7c41e551f46d4","size":562},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"8b74d834e39d7180321ca103af1ed778954ddf6c8ed1dd29e5c7c41e551f46d4","size":562},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/checks-only-plain/package/provenance.json b/fixtures/invalid/checks-only-plain/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/checks-only-plain/package/provenance.json +++ b/fixtures/invalid/checks-only-plain/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/checks-only-plain/package/receipts.jsonl b/fixtures/invalid/checks-only-plain/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/checks-only-plain/package/receipts.jsonl +++ b/fixtures/invalid/checks-only-plain/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/checks-only-plain/package/roster.json b/fixtures/invalid/checks-only-plain/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/checks-only-plain/package/roster.json +++ b/fixtures/invalid/checks-only-plain/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/cite-not-reference/package/MANIFEST.json b/fixtures/invalid/cite-not-reference/package/MANIFEST.json index 084e0ed..29f5cc2 100644 --- a/fixtures/invalid/cite-not-reference/package/MANIFEST.json +++ b/fixtures/invalid/cite-not-reference/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"f685b39051b28677fc0829e7811fdcf65ef4a5801e3af23d55178a8af30aed48","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"f685b39051b28677fc0829e7811fdcf65ef4a5801e3af23d55178a8af30aed48","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/cite-not-reference/package/provenance.json b/fixtures/invalid/cite-not-reference/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/cite-not-reference/package/provenance.json +++ b/fixtures/invalid/cite-not-reference/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/cite-not-reference/package/receipts.jsonl b/fixtures/invalid/cite-not-reference/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/cite-not-reference/package/receipts.jsonl +++ b/fixtures/invalid/cite-not-reference/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/cite-not-reference/package/roster.json b/fixtures/invalid/cite-not-reference/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/cite-not-reference/package/roster.json +++ b/fixtures/invalid/cite-not-reference/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/counts-wrong/package/MANIFEST.json b/fixtures/invalid/counts-wrong/package/MANIFEST.json index 59e0b6d..aa38515 100644 --- a/fixtures/invalid/counts-wrong/package/MANIFEST.json +++ b/fixtures/invalid/counts-wrong/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"9ffb946536af0b4697a2ab118967b3d36adf2bdcfa7e8d597f99828e79f632a4","size":553},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"9ffb946536af0b4697a2ab118967b3d36adf2bdcfa7e8d597f99828e79f632a4","size":553},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/counts-wrong/package/provenance.json b/fixtures/invalid/counts-wrong/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/counts-wrong/package/provenance.json +++ b/fixtures/invalid/counts-wrong/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/counts-wrong/package/receipts.jsonl b/fixtures/invalid/counts-wrong/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/counts-wrong/package/receipts.jsonl +++ b/fixtures/invalid/counts-wrong/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/counts-wrong/package/roster.json b/fixtures/invalid/counts-wrong/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/counts-wrong/package/roster.json +++ b/fixtures/invalid/counts-wrong/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/crlf/package/MANIFEST.json b/fixtures/invalid/crlf/package/MANIFEST.json index 37c11f4..f12f56f 100644 --- a/fixtures/invalid/crlf/package/MANIFEST.json +++ b/fixtures/invalid/crlf/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"f620de9790dcd0c1215f87ce9054a611ce5fcdf9431cd6c9b587e2c25b5c76ee","size":225},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"fcbae067529e8476e0fbace4ed94cbb174c31b943fb4f26dc63b316f5dc46b9c","size":227},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/crlf/package/provenance.json b/fixtures/invalid/crlf/package/provenance.json index 192bd50..58e43f4 100644 --- a/fixtures/invalid/crlf/package/provenance.json +++ b/fixtures/invalid/crlf/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/crlf/package/receipts.jsonl b/fixtures/invalid/crlf/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/crlf/package/receipts.jsonl +++ b/fixtures/invalid/crlf/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/crlf/package/roster.json b/fixtures/invalid/crlf/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/crlf/package/roster.json +++ b/fixtures/invalid/crlf/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/empty-optional-file/package/MANIFEST.json b/fixtures/invalid/empty-optional-file/package/MANIFEST.json index f1debf3..e49dd5c 100644 --- a/fixtures/invalid/empty-optional-file/package/MANIFEST.json +++ b/fixtures/invalid/empty-optional-file/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"suspects.jsonl","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","size":0},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"suspects.jsonl","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","size":0},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/empty-optional-file/package/provenance.json b/fixtures/invalid/empty-optional-file/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/empty-optional-file/package/provenance.json +++ b/fixtures/invalid/empty-optional-file/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/empty-optional-file/package/receipts.jsonl b/fixtures/invalid/empty-optional-file/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/empty-optional-file/package/receipts.jsonl +++ b/fixtures/invalid/empty-optional-file/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/empty-optional-file/package/roster.json b/fixtures/invalid/empty-optional-file/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/empty-optional-file/package/roster.json +++ b/fixtures/invalid/empty-optional-file/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/hash-mismatch/package/MANIFEST.json b/fixtures/invalid/hash-mismatch/package/MANIFEST.json index 3b69871..9395608 100644 --- a/fixtures/invalid/hash-mismatch/package/MANIFEST.json +++ b/fixtures/invalid/hash-mismatch/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"d9b0514d8cc6988ad7dadfc1992dbca4c19843079dd8ca6b7edbe520635d2929","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"d9b0514d8cc6988ad7dadfc1992dbca4c19843079dd8ca6b7edbe520635d2929","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/hash-mismatch/package/provenance.json b/fixtures/invalid/hash-mismatch/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/hash-mismatch/package/provenance.json +++ b/fixtures/invalid/hash-mismatch/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/hash-mismatch/package/receipts.jsonl b/fixtures/invalid/hash-mismatch/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/hash-mismatch/package/receipts.jsonl +++ b/fixtures/invalid/hash-mismatch/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/hash-mismatch/package/roster.json b/fixtures/invalid/hash-mismatch/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/hash-mismatch/package/roster.json +++ b/fixtures/invalid/hash-mismatch/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/heading-not-first/package/MANIFEST.json b/fixtures/invalid/heading-not-first/package/MANIFEST.json index c37e6d1..b6f1cf3 100644 --- a/fixtures/invalid/heading-not-first/package/MANIFEST.json +++ b/fixtures/invalid/heading-not-first/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"3145ecabdd0b6d2014e200616bbac7b8f3904fbea53d3665e9dba27714422223","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"3145ecabdd0b6d2014e200616bbac7b8f3904fbea53d3665e9dba27714422223","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/heading-not-first/package/provenance.json b/fixtures/invalid/heading-not-first/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/heading-not-first/package/provenance.json +++ b/fixtures/invalid/heading-not-first/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/heading-not-first/package/receipts.jsonl b/fixtures/invalid/heading-not-first/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/heading-not-first/package/receipts.jsonl +++ b/fixtures/invalid/heading-not-first/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/heading-not-first/package/roster.json b/fixtures/invalid/heading-not-first/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/heading-not-first/package/roster.json +++ b/fixtures/invalid/heading-not-first/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/location-unknown-page/package/MANIFEST.json b/fixtures/invalid/location-unknown-page/package/MANIFEST.json index 282eb4a..cee634e 100644 --- a/fixtures/invalid/location-unknown-page/package/MANIFEST.json +++ b/fixtures/invalid/location-unknown-page/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"locations.jsonl","sha256":"5c893b791f364ff5b4f7388bd2c8f0e7162bd6d8118914e10d752b703ef01037","size":130},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"locations.jsonl","sha256":"5c893b791f364ff5b4f7388bd2c8f0e7162bd6d8118914e10d752b703ef01037","size":130},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/location-unknown-page/package/provenance.json b/fixtures/invalid/location-unknown-page/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/location-unknown-page/package/provenance.json +++ b/fixtures/invalid/location-unknown-page/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/location-unknown-page/package/receipts.jsonl b/fixtures/invalid/location-unknown-page/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/location-unknown-page/package/receipts.jsonl +++ b/fixtures/invalid/location-unknown-page/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/location-unknown-page/package/roster.json b/fixtures/invalid/location-unknown-page/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/location-unknown-page/package/roster.json +++ b/fixtures/invalid/location-unknown-page/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/manifest-hash/package/MANIFEST.json b/fixtures/invalid/manifest-hash/package/MANIFEST.json index d5a1465..6e98899 100644 --- a/fixtures/invalid/manifest-hash/package/MANIFEST.json +++ b/fixtures/invalid/manifest-hash/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/manifest-hash/package/provenance.json b/fixtures/invalid/manifest-hash/package/provenance.json index 04a32de..e23c307 100644 --- a/fixtures/invalid/manifest-hash/package/provenance.json +++ b/fixtures/invalid/manifest-hash/package/provenance.json @@ -1,2 +1,2 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} \ No newline at end of file diff --git a/fixtures/invalid/manifest-hash/package/receipts.jsonl b/fixtures/invalid/manifest-hash/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/manifest-hash/package/receipts.jsonl +++ b/fixtures/invalid/manifest-hash/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/manifest-hash/package/roster.json b/fixtures/invalid/manifest-hash/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/manifest-hash/package/roster.json +++ b/fixtures/invalid/manifest-hash/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/manifest-key/package/MANIFEST.json b/fixtures/invalid/manifest-key/package/MANIFEST.json index 96bf1e8..eb646db 100644 --- a/fixtures/invalid/manifest-key/package/MANIFEST.json +++ b/fixtures/invalid/manifest-key/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"other2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"other2026example"} diff --git a/fixtures/invalid/manifest-key/package/provenance.json b/fixtures/invalid/manifest-key/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/manifest-key/package/provenance.json +++ b/fixtures/invalid/manifest-key/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/manifest-key/package/receipts.jsonl b/fixtures/invalid/manifest-key/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/manifest-key/package/receipts.jsonl +++ b/fixtures/invalid/manifest-key/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/manifest-key/package/roster.json b/fixtures/invalid/manifest-key/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/manifest-key/package/roster.json +++ b/fixtures/invalid/manifest-key/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/missing-required-file/package/MANIFEST.json b/fixtures/invalid/missing-required-file/package/MANIFEST.json index 0e4d4be..6c65ae6 100644 --- a/fixtures/invalid/missing-required-file/package/MANIFEST.json +++ b/fixtures/invalid/missing-required-file/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/missing-required-file/package/receipts.jsonl b/fixtures/invalid/missing-required-file/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/missing-required-file/package/receipts.jsonl +++ b/fixtures/invalid/missing-required-file/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/missing-required-file/package/roster.json b/fixtures/invalid/missing-required-file/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/missing-required-file/package/roster.json +++ b/fixtures/invalid/missing-required-file/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/not-canonical/package/MANIFEST.json b/fixtures/invalid/not-canonical/package/MANIFEST.json index 0599fa5..8b7ec3c 100644 --- a/fixtures/invalid/not-canonical/package/MANIFEST.json +++ b/fixtures/invalid/not-canonical/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"9ed0d41facc80ee7213d3d29b17756c9f26780eb3c154680c6f7d7101435f3d8","size":11312},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"9ed0d41facc80ee7213d3d29b17756c9f26780eb3c154680c6f7d7101435f3d8","size":11312},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/not-canonical/package/provenance.json b/fixtures/invalid/not-canonical/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/not-canonical/package/provenance.json +++ b/fixtures/invalid/not-canonical/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/not-canonical/package/receipts.jsonl b/fixtures/invalid/not-canonical/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/not-canonical/package/receipts.jsonl +++ b/fixtures/invalid/not-canonical/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/not-canonical/package/roster.json b/fixtures/invalid/not-canonical/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/not-canonical/package/roster.json +++ b/fixtures/invalid/not-canonical/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/receipt-root/package/MANIFEST.json b/fixtures/invalid/receipt-root/package/MANIFEST.json index 6832082..e8c8052 100644 --- a/fixtures/invalid/receipt-root/package/MANIFEST.json +++ b/fixtures/invalid/receipt-root/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"781da9a1c774b789aae28c3eab9187925619ea5a397a238b1a19f416b5c4fd88","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"db006d27aae2afdd68895607d67cd3569b82e227f69317a04e8fffcbc400e8bf","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/receipt-root/package/provenance.json b/fixtures/invalid/receipt-root/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/receipt-root/package/provenance.json +++ b/fixtures/invalid/receipt-root/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/receipt-root/package/receipts.jsonl b/fixtures/invalid/receipt-root/package/receipts.jsonl index 236d9fc..2fa56f6 100644 --- a/fixtures/invalid/receipt-root/package/receipts.jsonl +++ b/fixtures/invalid/receipt-root/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"2222222222222222222222222222222222222222222222222222222222222222","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"2222222222222222222222222222222222222222222222222222222222222222","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/receipt-root/package/roster.json b/fixtures/invalid/receipt-root/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/receipt-root/package/roster.json +++ b/fixtures/invalid/receipt-root/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/receipt-signature/package/MANIFEST.json b/fixtures/invalid/receipt-signature/package/MANIFEST.json index d53ce8a..b999928 100644 --- a/fixtures/invalid/receipt-signature/package/MANIFEST.json +++ b/fixtures/invalid/receipt-signature/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"8d1a52600c06b988080c7b3f5f0fa9eddb348c923d529d9d5470ff165ef8cc69","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"a69d68d566b81ce7c3cb7b4b8b5762362feb71cc283991a9d292e1e0780f8125","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/receipt-signature/package/provenance.json b/fixtures/invalid/receipt-signature/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/receipt-signature/package/provenance.json +++ b/fixtures/invalid/receipt-signature/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/receipt-signature/package/receipts.jsonl b/fixtures/invalid/receipt-signature/package/receipts.jsonl index 966cbbe..9410f7a 100644 --- a/fixtures/invalid/receipt-signature/package/receipts.jsonl +++ b/fixtures/invalid/receipt-signature/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:01Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:01Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/receipt-signature/package/roster.json b/fixtures/invalid/receipt-signature/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/receipt-signature/package/roster.json +++ b/fixtures/invalid/receipt-signature/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/receipt-unsorted-nodes/package/MANIFEST.json b/fixtures/invalid/receipt-unsorted-nodes/package/MANIFEST.json index 52c7bd8..293d6c6 100644 --- a/fixtures/invalid/receipt-unsorted-nodes/package/MANIFEST.json +++ b/fixtures/invalid/receipt-unsorted-nodes/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"827f5be5faf37fa31727142fd1f6c72bb2137ba26f25765a3f3817cf0dd1a77f","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"7b6ce76ebd78c0bcb5612a9f6e0f56bc10e0e47e7778ba56cdae959a92f311e5","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/receipt-unsorted-nodes/package/provenance.json b/fixtures/invalid/receipt-unsorted-nodes/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/receipt-unsorted-nodes/package/provenance.json +++ b/fixtures/invalid/receipt-unsorted-nodes/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/receipt-unsorted-nodes/package/receipts.jsonl b/fixtures/invalid/receipt-unsorted-nodes/package/receipts.jsonl index 3fc71ed..a098252 100644 --- a/fixtures/invalid/receipt-unsorted-nodes/package/receipts.jsonl +++ b/fixtures/invalid/receipt-unsorted-nodes/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/receipt-unsorted-nodes/package/roster.json b/fixtures/invalid/receipt-unsorted-nodes/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/receipt-unsorted-nodes/package/roster.json +++ b/fixtures/invalid/receipt-unsorted-nodes/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/retired-live/package/MANIFEST.json b/fixtures/invalid/retired-live/package/MANIFEST.json index ed07b08..6b82414 100644 --- a/fixtures/invalid/retired-live/package/MANIFEST.json +++ b/fixtures/invalid/retired-live/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"ids.jsonl","sha256":"3015a6bc9fc6666c07bdc8a7b285ebb031677d2356bfe02c13d6801f9cf7a1f1","size":82},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"ids.jsonl","sha256":"3015a6bc9fc6666c07bdc8a7b285ebb031677d2356bfe02c13d6801f9cf7a1f1","size":82},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/retired-live/package/provenance.json b/fixtures/invalid/retired-live/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/retired-live/package/provenance.json +++ b/fixtures/invalid/retired-live/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/retired-live/package/receipts.jsonl b/fixtures/invalid/retired-live/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/retired-live/package/receipts.jsonl +++ b/fixtures/invalid/retired-live/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/retired-live/package/roster.json b/fixtures/invalid/retired-live/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/retired-live/package/roster.json +++ b/fixtures/invalid/retired-live/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/rev-without-corrections/package/MANIFEST.json b/fixtures/invalid/rev-without-corrections/package/MANIFEST.json index 98a04f1..a8e4863 100644 --- a/fixtures/invalid/rev-without-corrections/package/MANIFEST.json +++ b/fixtures/invalid/rev-without-corrections/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"69312273e492fce15bcd575865ad2d2ef123f28a2deed4e061954ee8ed908411","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"69312273e492fce15bcd575865ad2d2ef123f28a2deed4e061954ee8ed908411","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/rev-without-corrections/package/provenance.json b/fixtures/invalid/rev-without-corrections/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/rev-without-corrections/package/provenance.json +++ b/fixtures/invalid/rev-without-corrections/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/rev-without-corrections/package/receipts.jsonl b/fixtures/invalid/rev-without-corrections/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/rev-without-corrections/package/receipts.jsonl +++ b/fixtures/invalid/rev-without-corrections/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/rev-without-corrections/package/roster.json b/fixtures/invalid/rev-without-corrections/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/rev-without-corrections/package/roster.json +++ b/fixtures/invalid/rev-without-corrections/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/root-mismatch/package/MANIFEST.json b/fixtures/invalid/root-mismatch/package/MANIFEST.json index f22f4c9..3bed471 100644 --- a/fixtures/invalid/root-mismatch/package/MANIFEST.json +++ b/fixtures/invalid/root-mismatch/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"a829a88ea1c7f269d76fea3e7b3f97e63a836c4c92bbb95ec78f14b2c19e29e6","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"a829a88ea1c7f269d76fea3e7b3f97e63a836c4c92bbb95ec78f14b2c19e29e6","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/root-mismatch/package/provenance.json b/fixtures/invalid/root-mismatch/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/root-mismatch/package/provenance.json +++ b/fixtures/invalid/root-mismatch/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/root-mismatch/package/receipts.jsonl b/fixtures/invalid/root-mismatch/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/root-mismatch/package/receipts.jsonl +++ b/fixtures/invalid/root-mismatch/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/root-mismatch/package/roster.json b/fixtures/invalid/root-mismatch/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/root-mismatch/package/roster.json +++ b/fixtures/invalid/root-mismatch/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/signer-mismatch/package/MANIFEST.json b/fixtures/invalid/signer-mismatch/package/MANIFEST.json index 7bf1e07..318fd76 100644 --- a/fixtures/invalid/signer-mismatch/package/MANIFEST.json +++ b/fixtures/invalid/signer-mismatch/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"0ba2a4673f17558bc096103ded76a773adb4b08eeb7d14aa621204619eb748d7","size":2181},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"a95aa81bd99e2c5e1e6452b45ccf97b3ba50ff0a191fdb2050cedd7f8a0400e7","size":2181},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/signer-mismatch/package/provenance.json b/fixtures/invalid/signer-mismatch/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/signer-mismatch/package/provenance.json +++ b/fixtures/invalid/signer-mismatch/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/signer-mismatch/package/receipts.jsonl b/fixtures/invalid/signer-mismatch/package/receipts.jsonl index 4a876eb..dce3e2f 100644 --- a/fixtures/invalid/signer-mismatch/package/receipts.jsonl +++ b/fixtures/invalid/signer-mismatch/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"cara","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"hqa6fmesrtnzq","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"UljVWpRveKg5rtqNbnqVLADMEN4n6YjSc+gZbNK9v7udPGn+C0Zm6PriO8OSUOZx2L0E9jOnfa3e7mz09+asAg=="}} +{"at":"2026-10-11T12:00:00Z","by":"cara","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"hqa6fmesrtnzq","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Fi6InUE9YBxj/PSXwBIIG4cItELVtHZFBVpH3+lo/Gi0qkCGNBbzqmaazSj0kumyHmrQgHeuGx43IwrcKAiUBw=="}} diff --git a/fixtures/invalid/signer-mismatch/package/roster.json b/fixtures/invalid/signer-mismatch/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/signer-mismatch/package/roster.json +++ b/fixtures/invalid/signer-mismatch/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/style-sup-sub/package/MANIFEST.json b/fixtures/invalid/style-sup-sub/package/MANIFEST.json index 38be7ae..8623b17 100644 --- a/fixtures/invalid/style-sup-sub/package/MANIFEST.json +++ b/fixtures/invalid/style-sup-sub/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"5309752c863a0827a5d41e6cd6b766e3fc01ad70b76d19a8e3444c05442c4f71","size":11317},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"5309752c863a0827a5d41e6cd6b766e3fc01ad70b76d19a8e3444c05442c4f71","size":11317},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/style-sup-sub/package/provenance.json b/fixtures/invalid/style-sup-sub/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/style-sup-sub/package/provenance.json +++ b/fixtures/invalid/style-sup-sub/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/style-sup-sub/package/receipts.jsonl b/fixtures/invalid/style-sup-sub/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/style-sup-sub/package/receipts.jsonl +++ b/fixtures/invalid/style-sup-sub/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/style-sup-sub/package/roster.json b/fixtures/invalid/style-sup-sub/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/style-sup-sub/package/roster.json +++ b/fixtures/invalid/style-sup-sub/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/text-edited/package/MANIFEST.json b/fixtures/invalid/text-edited/package/MANIFEST.json index 1e65256..52a551e 100644 --- a/fixtures/invalid/text-edited/package/MANIFEST.json +++ b/fixtures/invalid/text-edited/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"00f14e40fce80930e91d1ac01e97c5ec793f477f7dc93e65b49cda8e54bc547d","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"00f14e40fce80930e91d1ac01e97c5ec793f477f7dc93e65b49cda8e54bc547d","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/text-edited/package/provenance.json b/fixtures/invalid/text-edited/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/text-edited/package/provenance.json +++ b/fixtures/invalid/text-edited/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/text-edited/package/receipts.jsonl b/fixtures/invalid/text-edited/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/text-edited/package/receipts.jsonl +++ b/fixtures/invalid/text-edited/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/text-edited/package/roster.json b/fixtures/invalid/text-edited/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/text-edited/package/roster.json +++ b/fixtures/invalid/text-edited/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/unknown-kind/package/MANIFEST.json b/fixtures/invalid/unknown-kind/package/MANIFEST.json index 00887e3..392f2a8 100644 --- a/fixtures/invalid/unknown-kind/package/MANIFEST.json +++ b/fixtures/invalid/unknown-kind/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"797937baef9d68ae3cafe26d9d99412c53bf4ebdfdc6b2c6ccbbf2ce752fad30","size":11291},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"797937baef9d68ae3cafe26d9d99412c53bf4ebdfdc6b2c6ccbbf2ce752fad30","size":11291},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/unknown-kind/package/provenance.json b/fixtures/invalid/unknown-kind/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/unknown-kind/package/provenance.json +++ b/fixtures/invalid/unknown-kind/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/unknown-kind/package/receipts.jsonl b/fixtures/invalid/unknown-kind/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/unknown-kind/package/receipts.jsonl +++ b/fixtures/invalid/unknown-kind/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/unknown-kind/package/roster.json b/fixtures/invalid/unknown-kind/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/unknown-kind/package/roster.json +++ b/fixtures/invalid/unknown-kind/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/unlisted-file/package/MANIFEST.json b/fixtures/invalid/unlisted-file/package/MANIFEST.json index d5a1465..6e98899 100644 --- a/fixtures/invalid/unlisted-file/package/MANIFEST.json +++ b/fixtures/invalid/unlisted-file/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/unlisted-file/package/provenance.json b/fixtures/invalid/unlisted-file/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/unlisted-file/package/provenance.json +++ b/fixtures/invalid/unlisted-file/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/unlisted-file/package/receipts.jsonl b/fixtures/invalid/unlisted-file/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/unlisted-file/package/receipts.jsonl +++ b/fixtures/invalid/unlisted-file/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/unlisted-file/package/roster.json b/fixtures/invalid/unlisted-file/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/unlisted-file/package/roster.json +++ b/fixtures/invalid/unlisted-file/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/unsafe-path/package/MANIFEST.json b/fixtures/invalid/unsafe-path/package/MANIFEST.json index 8ccd927..f3d4385 100644 --- a/fixtures/invalid/unsafe-path/package/MANIFEST.json +++ b/fixtures/invalid/unsafe-path/package/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"../escape.txt","sha256":"0000000000000000000000000000000000000000000000000000000000000000","size":1},{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"../escape.txt","sha256":"0000000000000000000000000000000000000000000000000000000000000000","size":1},{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/invalid/unsafe-path/package/provenance.json b/fixtures/invalid/unsafe-path/package/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/invalid/unsafe-path/package/provenance.json +++ b/fixtures/invalid/unsafe-path/package/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/invalid/unsafe-path/package/receipts.jsonl b/fixtures/invalid/unsafe-path/package/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/invalid/unsafe-path/package/receipts.jsonl +++ b/fixtures/invalid/unsafe-path/package/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/invalid/unsafe-path/package/roster.json b/fixtures/invalid/unsafe-path/package/roster.json index 9437521..7886e39 100644 --- a/fixtures/invalid/unsafe-path/package/roster.json +++ b/fixtures/invalid/unsafe-path/package/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/invalid/zip-symlink/package.sct.zip b/fixtures/invalid/zip-symlink/package.sct.zip index 1999e9d..87ad121 100644 Binary files a/fixtures/invalid/zip-symlink/package.sct.zip and b/fixtures/invalid/zip-symlink/package.sct.zip differ diff --git a/fixtures/invalid/zip-traversal/package.sct.zip b/fixtures/invalid/zip-traversal/package.sct.zip index 4e170cb..d6061a7 100644 Binary files a/fixtures/invalid/zip-traversal/package.sct.zip and b/fixtures/invalid/zip-traversal/package.sct.zip differ diff --git a/fixtures/keys/ana.ed25519.hex b/fixtures/keys/ana.ed25519.hex index b191fe5..f53ba8f 100644 --- a/fixtures/keys/ana.ed25519.hex +++ b/fixtures/keys/ana.ed25519.hex @@ -1 +1 @@ -8fd78e53d1406b51996283ace45333384ba18e34f2a68746d856eab3b4b39781 +ed15ad1824fbb03ff808e8d7efde8494e43b89d7db6828019d0bd533827de0ea diff --git a/fixtures/keys/ben-spot.ed25519.hex b/fixtures/keys/ben-spot.ed25519.hex index 17578ac..e7faaf1 100644 --- a/fixtures/keys/ben-spot.ed25519.hex +++ b/fixtures/keys/ben-spot.ed25519.hex @@ -1 +1 @@ -41192e7ad222118b90d8ffa8a0d5a224d5615d962346d6d3307bc3441c2d3308 +235bbb5dba203a3304f4946308f1e1b0ea196256c30883ba9dcecbebf48c9308 diff --git a/fixtures/keys/ben.ed25519.hex b/fixtures/keys/ben.ed25519.hex index e782372..5bfebc2 100644 --- a/fixtures/keys/ben.ed25519.hex +++ b/fixtures/keys/ben.ed25519.hex @@ -1 +1 @@ -623149a77114655fc0ea3d92f5a5fcf8144dc52d65839bf16008aacf002226be +da2b6906caf18b5bcc01e246c289a0314c33a52df11b568e0e09a25003f15c3a diff --git a/fixtures/keys/cara.ed25519.hex b/fixtures/keys/cara.ed25519.hex index 35d6451..9b9496f 100644 --- a/fixtures/keys/cara.ed25519.hex +++ b/fixtures/keys/cara.ed25519.hex @@ -1 +1 @@ -8b9ecbc490e236b6915d663a822e306ba81e61fc4a771b94ea4b7fa803dcb3ef +792b2ff45a7d18b96781fc65ef48529adcc786308710bdf34f0c4f7400a392c9 diff --git a/fixtures/keys/smithlab-team-secret.hex b/fixtures/keys/smithlab-team-secret.hex index 0c264be..21e4e5a 100644 --- a/fixtures/keys/smithlab-team-secret.hex +++ b/fixtures/keys/smithlab-team-secret.hex @@ -1 +1 @@ -daddc3c4ce6c4d2b4e1af90bfaf463550133ea8cb50a0687986fdd2f80acfd57 +30fe6ec81905c8e0412719dd02bebe483c72ecd867332c76a35c67654ad5db18 diff --git a/fixtures/packages/hale2026harmonic.checks-only/MANIFEST.json b/fixtures/packages/hale2026harmonic.checks-only/MANIFEST.json index 1b1e70e..44e604f 100644 --- a/fixtures/packages/hale2026harmonic.checks-only/MANIFEST.json +++ b/fixtures/packages/hale2026harmonic.checks-only/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"assets/586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f.png","present":false,"sha256":"586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f","size":18213},{"path":"assets/a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75.png","sha256":"a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75","size":73},{"path":"document.json","sha256":"158e72b3c95617b49b4e0297f01067d8841913349cbe8fc3ec0c35d878b39f4d","size":1018},{"path":"ids.jsonl","sha256":"665b127abf3d7ad20631aa2281d66cea0076cd68e77fc8a5921bc310d295a489","size":852},{"path":"locations.jsonl","sha256":"2c085435b753f9f586d29790d65cc9e61470f0ae661591480f528193dcd91a04","size":7396},{"path":"nodes.jsonl","sha256":"f3464c19215b521c44660d38cd1d9270c740d485eb96af8162922c3e9c41b858","size":41653},{"path":"pages.jsonl","sha256":"948177c6b7e5e361ac1da0ecff6b52406d3513f14d58cd27cd84f17e6f1c054e","size":438},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"references.jsonl","sha256":"59c7120991928517607521a43a76482370b984c48cf1e74550209dbf607707ef","size":148},{"path":"witnesses.json","sha256":"99ae654df4fb461a424bb51edd476a89041182c7df9c98653a81b78031f92ada","size":1006}],"format":"scienting-package/1","key":"hale2026harmonic"} +{"doc":"scienting-doc/1","files":[{"path":"assets/586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f.png","present":false,"sha256":"586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f","size":18213},{"path":"assets/a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75.png","sha256":"a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75","size":73},{"path":"document.json","sha256":"2ab42740537773f878b406cb0c4ca20e0e39f25a04969bea35f613bd9453dd4b","size":1018},{"path":"ids.jsonl","sha256":"665b127abf3d7ad20631aa2281d66cea0076cd68e77fc8a5921bc310d295a489","size":852},{"path":"locations.jsonl","sha256":"2c085435b753f9f586d29790d65cc9e61470f0ae661591480f528193dcd91a04","size":7396},{"path":"nodes.jsonl","sha256":"cd986490fb92065c3a612ccf6addbce5cdfe56bd4c90628dca97c4c1f920e90c","size":41653},{"path":"pages.jsonl","sha256":"948177c6b7e5e361ac1da0ecff6b52406d3513f14d58cd27cd84f17e6f1c054e","size":438},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"references.jsonl","sha256":"59c7120991928517607521a43a76482370b984c48cf1e74550209dbf607707ef","size":148},{"path":"witnesses.json","sha256":"99ae654df4fb461a424bb51edd476a89041182c7df9c98653a81b78031f92ada","size":1006}],"format":"scienting-package/1","key":"hale2026harmonic"} diff --git a/fixtures/packages/hale2026harmonic.checks-only/document.json b/fixtures/packages/hale2026harmonic.checks-only/document.json index d179d06..036583d 100644 --- a/fixtures/packages/hale2026harmonic.checks-only/document.json +++ b/fixtures/packages/hale2026harmonic.checks-only/document.json @@ -1 +1 @@ -{"counts":{"leaves":45,"nodes":75},"fidelity":{"counts":{"F0":1,"F1":4,"F2":13,"F3":27},"lowest":"F0"},"format":"scienting-doc/1","hashing":{"key_id":"ba87f5b02064d529","scheme":"hmac-team"},"key":"hale2026harmonic","kind":"article","language":"en","license":{"text":"All rights reserved by the publisher (fictional)."},"meta":{"DOI":"10.5555/example.hale.2026","author":[{"family":"Hale","given":"R."},{"family":"Osei","given":"M."}],"container-title":"Journal of Example Chemistry","issued":{"date-parts":[[2026,3,2]]},"page":"101-109","title":"Harmonic bond parameters for small organic molecules from a two-step fit","type":"article-journal","volume":"14"},"meta_hash":"831ac4c47c87df2bc0d761e169f3aefb3b2e64404a2d2b157a692262a956301f","policy":"checks-only","relations":[],"rev":12,"root":"1fd39f356fbbdbe306b68ed01d71ce1acf9a46310658f430b0e6c5581f5fce6b","store":"smithlab","version":{"date":"2026-03-02","type":"version-of-record"},"work":{"key":"hale2026harmonic","same_as":["doi:10.5555/example.hale.2026"]}} +{"counts":{"leaves":45,"nodes":75},"fidelity":{"counts":{"F0":1,"F1":4,"F2":13,"F3":27},"lowest":"F0"},"format":"scienting-doc/1","hashing":{"key_id":"dc3a5e64b55a972b","scheme":"hmac-team"},"key":"hale2026harmonic","kind":"article","language":"en","license":{"text":"All rights reserved by the publisher (fictional)."},"meta":{"DOI":"10.5555/example.hale.2026","author":[{"family":"Hale","given":"R."},{"family":"Osei","given":"M."}],"container-title":"Journal of Example Chemistry","issued":{"date-parts":[[2026,3,2]]},"page":"101-109","title":"Harmonic bond parameters for small organic molecules from a two-step fit","type":"article-journal","volume":"14"},"meta_hash":"c74d73e3503619324cdd716399970b84f612496547da16f2713a7f789215dd27","policy":"checks-only","relations":[],"rev":12,"root":"1a0ae11b02b2f49ebbbf856bb09fe80731514bbeaad50cbb973ba0389b8ed7b2","store":"smithlab","version":{"date":"2026-03-02","type":"version-of-record"},"work":{"key":"hale2026harmonic","same_as":["doi:10.5555/example.hale.2026"]}} diff --git a/fixtures/packages/hale2026harmonic.checks-only/nodes.jsonl b/fixtures/packages/hale2026harmonic.checks-only/nodes.jsonl index 706e2cb..cffac25 100644 --- a/fixtures/packages/hale2026harmonic.checks-only/nodes.jsonl +++ b/fixtures/packages/hale2026harmonic.checks-only/nodes.jsonl @@ -1,75 +1,75 @@ -{"align_key":"f6249a649aae80462bdf6abe66bca249e808c8013a14a1e2c29b19ada27bd803","id":"ya7x597","kind":"document","match_hash":"618f65471a12cd28cc3062332332f0b7925f1bfc4011bbae62bf2c875e46fb6f","node_hash":"1fd39f356fbbdbe306b68ed01d71ce1acf9a46310658f430b0e6c5581f5fce6b","ord":0,"own_hash":"1950d4c78b017d9d6a4591945197d46d313e1b69a21fba483676efb35d1d8955","parent":null,"text_hash":"5333a95920673affba858d7446d4677e7f1e4981e7da0b2cc236b18f18d20efa"} -{"align_key":"651b80d2d4f929cf1fdc3dcc411eb7e2060e62201f45f76636fd6ddc54b2eeca","id":"x1wez17","kind":"front","match_hash":"e7ca92b35e2a9c0a8230b6c6b24da3589794008c06608c1ad97d176031f7fc81","node_hash":"537bbbbb1c46d411ff6aa4a1875626d94efb797be190d542c33e739bec71a0d1","ord":0,"own_hash":"5584ffbe4a1d25cbd94c8334b9aab443000e4b7b0eef2a16a830df5620f12c9d","parent":"ya7x597","text_hash":"e7ca92b35e2a9c0a8230b6c6b24da3589794008c06608c1ad97d176031f7fc81"} -{"align_key":"20906b2e43fcf4ae740d469daf539096f7c91e9d16caa6f5e00ce55578bba872","id":"krf8jz8","kind":"title","match_hash":"9da5d542ec3b205046658fb3099df856b9ec83f55d81df38fa489c9c31130986","node_hash":"fbb5da1a41cf121fb6ffd5b66c498a131aed3fb39827a6e24ef5996dc2995fad","ord":0,"own_hash":"a076b4cfd175dee09229bcd5c01229b6154e9ed608c2dc6e5a5c63d066be774b","parent":"x1wez17","text_hash":"9da5d542ec3b205046658fb3099df856b9ec83f55d81df38fa489c9c31130986"} -{"align_key":"20906b2e43fcf4ae740d469daf539096f7c91e9d16caa6f5e00ce55578bba872","fidelity":"F2","id":"kq18996","kind":"sentence","match_hash":"9da5d542ec3b205046658fb3099df856b9ec83f55d81df38fa489c9c31130986","node_hash":"3f955bd35cd4a39305038e31da3f4dc47a2548a004a79a876907e7ee9ce36971","ord":0,"own_hash":"01153ca21d9b4fc1e46c8d71e3290f5c2076549d37397939ecdf0d3d94c8073e","parent":"krf8jz8","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"9da5d542ec3b205046658fb3099df856b9ec83f55d81df38fa489c9c31130986","withheld":true} -{"align_key":"64c298bea06c8e18f5c9ece4a7770cddfc699802d758d97f228df43f043c6c05","fidelity":"F2","id":"xvjhbee","kind":"authors","match_hash":"d24b716a9fdd69c4d44cbfa8e2283cc72035ca12d545381021eace23f61c47ea","node_hash":"3217594ac8a7a613395483d0189e0733a737a2456196a275d5685b8ef3701b4a","ord":1,"own_hash":"65f1a8fa578b20623dff2ac9124d5f2c61211124d00e4ead0cbfd844b7ddfcea","parent":"x1wez17","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"d24b716a9fdd69c4d44cbfa8e2283cc72035ca12d545381021eace23f61c47ea","withheld":true} -{"align_key":"07b34c4bb8902a26d6f0205b844a3753c4c9d73c464ed313f4a1fa918e0164c1","id":"r94wmsf","kind":"abstract","match_hash":"e5ea430b7a8b7bdf9b499968369b0496dea50fe76c0fc7e2e0dc240f643b30f5","node_hash":"3adfe597d89e61aa7cb33e2d65f4e643f63b5b2cfa3ca8a3de3447c8e53de16d","ord":2,"own_hash":"bf6ae9bfd07de49858f870fe1a240a0c3a7b54d58dc1a049ca6ba55382362c80","parent":"x1wez17","text_hash":"e5ea430b7a8b7bdf9b499968369b0496dea50fe76c0fc7e2e0dc240f643b30f5"} -{"align_key":"07b34c4bb8902a26d6f0205b844a3753c4c9d73c464ed313f4a1fa918e0164c1","id":"qe2yth0","kind":"paragraph","match_hash":"e5ea430b7a8b7bdf9b499968369b0496dea50fe76c0fc7e2e0dc240f643b30f5","node_hash":"98209968004e5f0e87f1406b5cbd713a2805cf77b57c149e7bb6fb5b97837d31","ord":0,"own_hash":"a7d63addd525417d43e69057d801e973e7f199e3c5874207d72eda685bb25d28","parent":"r94wmsf","text_hash":"e5ea430b7a8b7bdf9b499968369b0496dea50fe76c0fc7e2e0dc240f643b30f5"} -{"align_key":"b8bfff842d4cbe10745ab9e62a480d65c33f7751ea136e5830c57be900f03033","fidelity":"F2","id":"ehd3zbe","kind":"sentence","match_hash":"bf1b49a9fb7c569cc9a40e07ffd7d2faa6ed241a7b9af5836f831cece00293c5","node_hash":"d75f5441990b0566ec990ca4f4ceeed691b47cbd8271cbe8c4d97c7b503c8084","ord":0,"own_hash":"9350027c24a9c2eb773336796ccdfa4b03f0d77f1f7fe7f40cefa7b33d08280e","parent":"qe2yth0","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"bf1b49a9fb7c569cc9a40e07ffd7d2faa6ed241a7b9af5836f831cece00293c5","withheld":true} -{"align_key":"dd69d0ac77069bb5651e98cc521a6e3a9ea7540e5a9a99506e25059d0d204950","fidelity":"F2","id":"j06tfhn","kind":"sentence","match_hash":"3feb8e6f8538f417a96980ecb43af4f5ac1d6bed7f674bc0926cfaf6be1dfc8a","node_hash":"35fdb987683aa97f1d51cdab0b8063ff0c98a5b0fc44412de55b162c9401d936","ord":1,"own_hash":"8ac22e6bb4a3d48081a15fffa1097766feab81fa716f0e880aa31293c070902c","parent":"qe2yth0","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"3feb8e6f8538f417a96980ecb43af4f5ac1d6bed7f674bc0926cfaf6be1dfc8a","withheld":true} -{"align_key":"6f44f506c9fe97ef5896e7946a5fe58b2971c48d813d69d17fc9df6368ae8132","attrs":{"level":1},"id":"bzqvbhd","kind":"section","label":"1","match_hash":"4dcf7e1ad323e21601b30f258663a669e3149b9af4f02abd6a753176f7656e03","node_hash":"58e483dba2b1042fb092206033ebc835a668093b523481be1c7526ee44206172","ord":1,"own_hash":"f950fde98930832d193bfffce2e34eaf1db59cbec5e34140a1d26d8b02e85e4d","parent":"ya7x597","text_hash":"05f6e006613dfa33b37bd4d099d8945e293f3e84162be4257f16cb99b08171f5"} -{"align_key":"880881801c8870c78eca6cc8805dff313579cc096459e525c9f65ea862c742ca","id":"sb0g5gh","kind":"heading","match_hash":"1ecf8db901fe8594a8b4fa9422c7094367fa4b4732906962d1d2d8e72420005e","node_hash":"81919d4a07fff34c0c347d72d88da2d2ec3dd19513e2b44443862e544647c6df","ord":0,"own_hash":"a55e8cf3647b0c79fb77043b7dd79bdbf583ad55326f3da5a4eacccc0bc858bc","parent":"bzqvbhd","text_hash":"1ecf8db901fe8594a8b4fa9422c7094367fa4b4732906962d1d2d8e72420005e"} -{"align_key":"880881801c8870c78eca6cc8805dff313579cc096459e525c9f65ea862c742ca","fidelity":"F2","id":"dmgqhd0","kind":"sentence","match_hash":"1ecf8db901fe8594a8b4fa9422c7094367fa4b4732906962d1d2d8e72420005e","node_hash":"a885e110da0ae4bb90b3798aab976169a44051161ee120abd9e5f1c8fe63f550","ord":0,"own_hash":"0917b7d6e6be42ffcbff5f1db598cd9fa689c5d8a82d33ecf1a49fabfa53dbe6","parent":"sb0g5gh","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"1ecf8db901fe8594a8b4fa9422c7094367fa4b4732906962d1d2d8e72420005e","withheld":true} -{"align_key":"90da8d8cc4be83fcc0f3d4f8fe95ccab4b215586bdba40d9db665a6acdddb68a","id":"pnkah9n","kind":"paragraph","match_hash":"8302ec641cc724b9327d4651694aa1caf58c9cc4102dc5cba10101fe6b235713","node_hash":"91a93fe98462c1338dd48fd669214ef89d8538961242143a3bd04dce98d1f40f","ord":1,"own_hash":"a7d63addd525417d43e69057d801e973e7f199e3c5874207d72eda685bb25d28","parent":"bzqvbhd","text_hash":"2ee3470cff7aaff1ae52eb2d00437dbc794b99fdd096a47cb91fbd9d175736aa"} -{"align_key":"b23b8332f65fda9d762239d025deae224e5067116ecf06cc65a86de3d15795de","fidelity":"F2","id":"mbtjsqv","kind":"sentence","match_hash":"3596a8d7d77ceb0b9dbdf1f90c77d10c6de1cb25fc983189509fca15b2aef3db","node_hash":"5ac9222f044f86fe1f310d798fbd742820ed3e45b07f0573f6a9db44e43fce6c","ord":0,"own_hash":"d25ead1e62aa0ddcd74b3cf3f417106b274629f6e4bcf8799fdf7bfa7774bf87","parent":"pnkah9n","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"062a4f0f52ae6dec0de0cde208a5261df49ad899e878fead627acca2e0b27adb","withheld":true} -{"align_key":"0f3726114451bb66ef19fedad4e8d581c79d2d86094c59ffa811f50599933412","fidelity":"F2","id":"sxgcc9h","kind":"sentence","match_hash":"d2e0d5c442a4fa751c433f9e2259043f19b82d9755f0cd2d09466eff87c9a067","node_hash":"22b449c9eb0f0b7583049fdb428c5d60116441aa7499a1fcbcece3e6791be9b6","ord":1,"own_hash":"7fac4e105a7739fa2b89d257124a060142e96520c5a3729fb391862e86c01bac","parent":"pnkah9n","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"0d87f1c47c5cb2e241b8417ad8d4970c56e482ccac6fafdab4d7a12dc44f9f63","withheld":true} -{"align_key":"e3dc46a99ff2c070de8238f18eca9fd1e459bef70ad01e72564177ecaeb76ebc","fidelity":"F1","id":"qn08tj9","kind":"equation","label":"(1)","match_hash":"e3dc46a99ff2c070de8238f18eca9fd1e459bef70ad01e72564177ecaeb76ebc","node_hash":"fe8dbf61007065088ad408d9e0d22ae6ff0b1a4a6f9bbe16cfabb0c518869fe9","ord":0,"own_hash":"8b22b42a01ac72fe70ee12f1f2f836df3bbb52211bf427a0e74392a080ef5044","parent":"sxgcc9h","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"411a5b2c76c8cb3d36dec4592b2a35bfca62418668d3a5a4dd1c15b10f17bec8","withheld":true} -{"align_key":"c7bc115d57e15c1a41fdbba7066f5d6bdf2ef23ed5d9a5bd547eff5a8f3eb9ea","fidelity":"F2","id":"f929eq9","kind":"sentence","match_hash":"bc10dc9754d66a296b2989e1369167be2467535b016ed62149b1d98dbf032db5","node_hash":"5539f31b9c1858fb3bcac1bbf96babef7d74ae3d651bc39c7e82466e0c62db7c","ord":2,"own_hash":"28daaf6bcd3174f873a7dbfd954bef9284cf1f3919d2bd36414d24dc1b2a741a","parent":"pnkah9n","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"1725644127087e98c0cb830d032b210b781fb6bfecd3687ad382171d3d71cf15","withheld":true} -{"align_key":"c7c33cfa438de334eaeacc8b30d79c1cb1aabe5e4a045ccc6db8c913abdfe06a","id":"z77pzan","kind":"paragraph","match_hash":"7c2342ad928efe9ecd98f06bafe2b69cefcf73a5583fe7cb37a9de14b4ed165e","node_hash":"59e29bee0c29e45d0a62803facb9a1a48fde710ef425ce17545db27c1d792d52","ord":2,"own_hash":"a7d63addd525417d43e69057d801e973e7f199e3c5874207d72eda685bb25d28","parent":"bzqvbhd","text_hash":"40b3663cd5902e7c0159a200cff297486d8a986323e7b7d20dfe56087832bfd1"} -{"align_key":"b8a418991ab08004a94a7c65c9395018135e6f722f18a963a647949bcd76bcc8","fidelity":"F1","id":"e4fkseg","kind":"sentence","match_hash":"3bae6b077c4ba533e0838ceca13868f4ee433f1a9867b9a965b5e17240ce4d22","node_hash":"c69a4578b8f1487996aa315eb6caf51484882480207d4868d7b01bd228fe662b","ord":0,"own_hash":"a1698a6988869afdc69fa74173debda0f2ac871914ba8dacb1807d9b753af232","parent":"z77pzan","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"f319d88223565e038a11f1da584f4e726e4da671bf43d0124fbab2466687ed74","withheld":true} -{"align_key":"20f461eb5db41aa25e8aa5e5a099cb0ca021011b51477e26b10fabb671e34285","fidelity":"F0","id":"r1gacps","kind":"sentence","match_hash":"ec27cab8b71ebe46a0e62bf3b1322a5e3212e744aa225bac6a1d84d604cad3db","node_hash":"1c98260eb2154fab1917dfb03b097e8ca561cffd89fce8804865c1ca3d8f9a46","ord":1,"own_hash":"e77f2ecd2cdb504cf9c8bf00f3e0746afd2ca2c4f15b9e194a0a0042574a6baf","parent":"z77pzan","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"57e744993094d35498fba34a8c316245c328994329175011bc9e33cb327a4ee4","withheld":true} -{"align_key":"e435f1a8cb129b1fcb0447d20b850766612afd8e48cc86913698788270f10d62","attrs":{"level":1},"id":"f0tj6ca","kind":"section","label":"2","match_hash":"c95f9c34f96940b53c60c29875826e90027c9fb664fd91d8f8031c4e1aa1769e","node_hash":"0adab66f7cc5f3d8996c8dfc1312192b16eff00a274c363e494aa709df11adf4","ord":2,"own_hash":"52f17213030adb8197064e746dd8b875a1e65a33cb158a1643a9af13b6071919","parent":"ya7x597","text_hash":"5223b2670495fdef47f10b9929e7e9f0cdb395126f1f73ae926daa4d9d7e3502"} -{"align_key":"69cc19d4fed31a90c7d087e06d279ab0daa5e10a64e8d07107eb16564c547fc7","id":"y52zyge","kind":"heading","match_hash":"cd1388cb3374c6106c80f8631cc323a7c3e798b34060454ddf235c9e8e605c8c","node_hash":"d0756df19f03d9f803decc2857a6ae81472c653b0e82648943d0f8668b595558","ord":0,"own_hash":"a55e8cf3647b0c79fb77043b7dd79bdbf583ad55326f3da5a4eacccc0bc858bc","parent":"f0tj6ca","text_hash":"cd1388cb3374c6106c80f8631cc323a7c3e798b34060454ddf235c9e8e605c8c"} -{"align_key":"69cc19d4fed31a90c7d087e06d279ab0daa5e10a64e8d07107eb16564c547fc7","fidelity":"F2","id":"rcz9hta","kind":"sentence","match_hash":"cd1388cb3374c6106c80f8631cc323a7c3e798b34060454ddf235c9e8e605c8c","node_hash":"f29b5c72b0d2d6c97d51acb8de687f4ddb64e28409a7b334f8217823f3abf0f5","ord":0,"own_hash":"2d50d4342264165ced1605eeda5b3724c3b1e51b7779c749e4d637a72d86eed7","parent":"y52zyge","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"cd1388cb3374c6106c80f8631cc323a7c3e798b34060454ddf235c9e8e605c8c","withheld":true} -{"align_key":"73a3e13af606b04d15074f6a0b4075ca19cf5b80e0b65dcdcdd73b5438667211","id":"zyqr0yc","kind":"paragraph","match_hash":"81253e7ea68fda744f6040db2f77cfd64f299f22979a75e3338b9a9c7ea19e44","node_hash":"6753b7c1ae44dc25276d3231ed88705e3bb32bea44b5f0697ae75eff69af5c24","ord":1,"own_hash":"a7d63addd525417d43e69057d801e973e7f199e3c5874207d72eda685bb25d28","parent":"f0tj6ca","text_hash":"ddae4ea19ad790fe1281f17e4408a30b2d1a14f952c02e8c3d15460856674e36"} -{"align_key":"74e18b70c45819eabf842a4ed6c536f88b855a64a2feae8d027e0605e8f56184","fidelity":"F0","id":"eajq93t","kind":"sentence","match_hash":"bf76b7b3518852a20c99409426bf5be1df5fa27f8bf97ebdc11b5a0621eda982","node_hash":"282a3b53d69637ff660144eb74b9cef660b2122f85296e749a5d363b71946fc4","ord":0,"own_hash":"87a2cfb7f1ea85ff4dd750cc492bc8bcb6b503bb688f31e0284303b30a9f73c1","parent":"zyqr0yc","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"bf76b7b3518852a20c99409426bf5be1df5fa27f8bf97ebdc11b5a0621eda982","withheld":true} -{"align_key":"1887ea4673f1a102479e01ea6ce6cc2679c609d61964200a49bd8abb046dcfe6","fidelity":"F2","id":"ntr324r","kind":"sentence","match_hash":"98ba8f8e303b0341d583e3f2bb1d7a2c6cc88bd972be1c83e11258677a2e09eb","node_hash":"9d67b389875dd8caaac418c9b2b5e927df68c8cbb83e4d40249cb1d1b3940bae","ord":1,"own_hash":"9e4c0b44e7e741ab0c0651d7f22f51954354bf94656f0a84386242115ef1b935","parent":"zyqr0yc","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"474c1d4f38e238e24aae3775e478ccbce229166af6fcafa5fb71b29d0e7764fe","withheld":true} -{"align_key":"ae9e67e9f600b2332a8846ecdc96fe26ae827060eb13170b50fe4df15346e70a","id":"vsrzypn","kind":"footnote","label":"a","match_hash":"cfa586695536fe896123b78ea00b7e35c935a6f0832dda1c258a7696b4adabfa","node_hash":"8a67818489378b57a0736e4699b3213d85eb76c12983cc53bc6ffab32ad9a4f4","ord":2,"own_hash":"eab078ebf2eef44ba1957328916734f1a44c0a056f6a45d0841840c0e422206e","parent":"f0tj6ca","text_hash":"cfa586695536fe896123b78ea00b7e35c935a6f0832dda1c258a7696b4adabfa"} -{"align_key":"ae9e67e9f600b2332a8846ecdc96fe26ae827060eb13170b50fe4df15346e70a","fidelity":"F2","id":"gqs1dcb","kind":"sentence","match_hash":"cfa586695536fe896123b78ea00b7e35c935a6f0832dda1c258a7696b4adabfa","node_hash":"02ff2539d6cadb735120efacf670323872afa12362123b512f2df511552ff474","ord":0,"own_hash":"0a37cccee060bed57b557c0b846361540dde1f36c7ea0cacbd3fe12534708b66","parent":"vsrzypn","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"cfa586695536fe896123b78ea00b7e35c935a6f0832dda1c258a7696b4adabfa","withheld":true} -{"align_key":"88f2ab42e2e81f8f62723874659da2b35b3f218eb9384e40aeec7da27c781411","id":"ajfvq4s","kind":"figure","label":"Figure 1","match_hash":"835515a575ebc277e2d65fa64cf6f088d40cb07800cb7645269c2a848a2cd116","node_hash":"5e31fff2388ddbcb28fcab7e2f759676a1659055403bb730b295a8d91fa17cf3","ord":3,"own_hash":"76152b4f7c7a5c46618bd1d72e4f1024af7678a755b36db37fa86b9d2b0bddc2","parent":"f0tj6ca","text_hash":"835515a575ebc277e2d65fa64cf6f088d40cb07800cb7645269c2a848a2cd116"} -{"align_key":"74bbb221712f83e7cbba80af2d123c3a02ae833660233f65fa3b51555ae30a1f","attrs":{"crop":{"dpi":300,"media_type":"image/png","sha256":"586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f"},"image":{"media_type":"image/png","native":true,"sha256":"a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75"}},"id":"b2wgyq2","kind":"panel","label":"a","match_hash":"74bbb221712f83e7cbba80af2d123c3a02ae833660233f65fa3b51555ae30a1f","node_hash":"9f54c53e16d1c1841f451ae6099a204c31c53a341b3b3a0efe3b6b700e0a79ac","ord":0,"own_hash":"20c4d93d30892f16a5c2573353bdabe8cffae44a3685e7965064015ebec65445","parent":"ajfvq4s","text_hash":"74bbb221712f83e7cbba80af2d123c3a02ae833660233f65fa3b51555ae30a1f"} -{"align_key":"74bbb221712f83e7cbba80af2d123c3a02ae833660233f65fa3b51555ae30a1f","id":"wtgh2xp","kind":"panel","label":"b","match_hash":"74bbb221712f83e7cbba80af2d123c3a02ae833660233f65fa3b51555ae30a1f","node_hash":"019ba7cf3a7c3cdfdc51fd2111b55ba91a10301100420993535118becb0e51cb","ord":1,"own_hash":"11be97180ff1901097bace95eff4d98989bad802f01c655ed0bd9a2a17962c39","parent":"ajfvq4s","text_hash":"74bbb221712f83e7cbba80af2d123c3a02ae833660233f65fa3b51555ae30a1f"} -{"align_key":"88f2ab42e2e81f8f62723874659da2b35b3f218eb9384e40aeec7da27c781411","id":"xmwf2ex","kind":"caption","match_hash":"835515a575ebc277e2d65fa64cf6f088d40cb07800cb7645269c2a848a2cd116","node_hash":"6d9a3721ec1ba37dbac7f2ceeb4581888b2d5bc84eae25410409aa5456f698ae","ord":2,"own_hash":"238d53313bdfcf9bd74cc8d94311eab770271d2aa8ca11ac86f4303eb031b09e","parent":"ajfvq4s","text_hash":"835515a575ebc277e2d65fa64cf6f088d40cb07800cb7645269c2a848a2cd116"} -{"align_key":"9c99b1b2767b699a8742d08baf60567f96e6fa13545b6a0e8c840c4994847c6c","fidelity":"F2","id":"yq0agq9","kind":"sentence","match_hash":"0d8712dc2c473b66e3a4e3677150fae593e22bd782acaf77d40e59e4d8489e76","node_hash":"e98838d4c13878a68e2a06f1924af2d4bf066bd6d7b3346959be71f2b29686b0","ord":0,"own_hash":"1c8f48d8e323d79084f255c4dea08f6d64ce9e4e9069c999d3fd7d13217248f6","parent":"xmwf2ex","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"0d8712dc2c473b66e3a4e3677150fae593e22bd782acaf77d40e59e4d8489e76","withheld":true} -{"align_key":"531c05fb313f66c5e120b6b347191544ee659bc78f501b75ac9c8555919b831e","fidelity":"F2","id":"nmm4md0","kind":"sentence","match_hash":"9e631b403a5858d7c8190946981b00fae176ef2e738cc2eac032dcfc57f2c566","node_hash":"d423a0abfd8b02dd5643b692ac69edde01287d75494fd9edefc3ac9dbacb2e88","ord":1,"own_hash":"9be40b7cb64e0408c1362576561d797d2d6840519987931908e1196954a84a7d","parent":"xmwf2ex","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"9e631b403a5858d7c8190946981b00fae176ef2e738cc2eac032dcfc57f2c566","withheld":true} -{"align_key":"6b4dbffb62a479fa4665e1bbf88773d0e1ab4ddf5010b21fc2d80c4dc6af2ba6","fidelity":"F2","id":"ed602fy","kind":"sentence","match_hash":"2b3d9dff6fdcf33a39ab61f8b21faa96708ba9e74b766d045c2cb60759a27ce6","node_hash":"5b46d85aa73fab3e761972e2ab8f7bef52dc472d7be939e9451e9e16104e686b","ord":2,"own_hash":"a27377088670976b951f1ab0aab20c35926e30ae1119f3c74b5568be8be04281","parent":"xmwf2ex","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"2b3d9dff6fdcf33a39ab61f8b21faa96708ba9e74b766d045c2cb60759a27ce6","withheld":true} -{"align_key":"362dc2f1682d038b8a51958724ff722f6afc46022174c70ce4565909b19b46b3","attrs":{"columns":[{"header_path":["e4z9fr6"],"id":"vphmyzz"},{"header_path":["cwhj4gp","sam8g7e"],"id":"kp6grmd"},{"header_path":["cwhj4gp","cq77erb"],"id":"z16p4vm"},{"header_path":["vtszvw9","h5psthj"],"id":"egq2j2a"},{"header_path":["vtszvw9","j3d4w5v"],"id":"my9ahda"}]},"id":"gm5z4rx","kind":"table","label":"Table 1","match_hash":"555c746572f6e8dd2212e8bcaf01d2b5f483194424b364a4fd8219b22db4106f","node_hash":"bae19fbd23a0a5ea690388410512b4dca2e0e2a57869ed93262d5714cac026a9","ord":4,"own_hash":"b1adf0bd8d999c819a3b5c403bf73481d003301c42ec2391b56f8aa77ab62cea","parent":"f0tj6ca","text_hash":"2860e52b2b617ccfcfd752ff2b33ae2814cf905a1e926aafd390d1cef2e40a72"} -{"align_key":"f496e7c3a31e179d77ef22d953db7360a9fa3b13c3045e6e2e8dddc206b2de28","id":"fzz8ndw","kind":"caption","match_hash":"57c7cba44240b47983a535ab45934e5251f6d01941481e1f59a32b51459aecb2","node_hash":"b9e32761048882141631179aa0cc9952ae9bd9f331b20169b710bbed0ef2e0ac","ord":0,"own_hash":"238d53313bdfcf9bd74cc8d94311eab770271d2aa8ca11ac86f4303eb031b09e","parent":"gm5z4rx","text_hash":"57c7cba44240b47983a535ab45934e5251f6d01941481e1f59a32b51459aecb2"} -{"align_key":"f496e7c3a31e179d77ef22d953db7360a9fa3b13c3045e6e2e8dddc206b2de28","fidelity":"F2","id":"beayvd3","kind":"sentence","match_hash":"57c7cba44240b47983a535ab45934e5251f6d01941481e1f59a32b51459aecb2","node_hash":"43a3e2dac7b7ad56728c04a80e46eb8f041a7d237b25118eaa4dad4e8c950d85","ord":0,"own_hash":"d6e06a261c89976524358c3773f778d261c13b4d2da6e677e3207e5e6bbb2c84","parent":"fzz8ndw","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"57c7cba44240b47983a535ab45934e5251f6d01941481e1f59a32b51459aecb2","withheld":true} -{"align_key":"3c231cb1c152a003b1b04ace59c5f37d57e846469806fbf328069d0b3d2db9a5","id":"bapa0zm","kind":"table-head","match_hash":"3f032ed4635c461171c0c1ca8de7935ee16b9bbb268549c50a99a12a797d4e97","node_hash":"3a71339dc8d54faa6e212ac33d7e9b1aec7fec58b78277e0cacd3013c1b6a34a","ord":1,"own_hash":"88c478073e8b7db692561da10a2d9dbbb54c2e2f783cf3e8c9e86f19e3e559fe","parent":"gm5z4rx","text_hash":"08b51d939b7a2bcc9a5d82fd45b5f96ddd9eb3f3711e7770f164aee4fa1ff7a5"} -{"align_key":"855add55714f31dc19ff008e5de111b893f7bb65ac58f25ab43dda5f3a03a590","id":"btf2r9v","kind":"row","match_hash":"b0549f065e87e37fc544e4b90d9480c1a58ea166c83b4a2d9fdefd0454e1b646","node_hash":"2c5913d138bcd663adc5a4a085c60af78a5db167cb97821b274afe3869763a8a","ord":0,"own_hash":"f26284d984d4bbaef09c7a4a9267fa2402dc01247d73197c795b037d92f7a810","parent":"bapa0zm","text_hash":"b0549f065e87e37fc544e4b90d9480c1a58ea166c83b4a2d9fdefd0454e1b646"} -{"align_key":"ec150320044440239c96bdb0e6565d0db7209727817a7fe73f1dfd7b2396d84d","attrs":{"colspan":1,"column":"vphmyzz","role":"column-header","rowspan":2},"fidelity":"F1","id":"e4z9fr6","kind":"cell","match_hash":"2bdea4575f743bab794b406c6964418b7d42b655902539795fc023b4fcf8fcb8","node_hash":"b18b1b469d207d17735f0ac056b9ba24bcb94391b7523ddfa55b83b911afad0e","ord":0,"own_hash":"c026bb38c6ba42d634585957fa9c944e8ffc3a4c17097c3123bac8f5c4affea5","parent":"btf2r9v","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"2bdea4575f743bab794b406c6964418b7d42b655902539795fc023b4fcf8fcb8","withheld":true} -{"align_key":"562c56f11976d6823ee3e11df0629611798f7d809df7a3143eb55e4f8e5b1a09","attrs":{"colspan":2,"column":"kp6grmd","role":"column-header","rowspan":1},"fidelity":"F1","id":"cwhj4gp","kind":"cell","match_hash":"305781c8163c5a10761dae76f7863eb5b651b3f87666ac596224b24672f919a2","node_hash":"024ec0e6a2b7e3246d082433597798987389d141ddf5f8c3ace16c25eed82b84","ord":1,"own_hash":"5632a035151214bd794aef3a2c02524e5a235167591133ebdbee0d26329fdc40","parent":"btf2r9v","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"305781c8163c5a10761dae76f7863eb5b651b3f87666ac596224b24672f919a2","withheld":true} -{"align_key":"c014554d7c2162421b43f7c3aa8342a8df12992b34d44c5930b213b79527896f","attrs":{"colspan":2,"column":"egq2j2a","role":"column-header","rowspan":1},"fidelity":"F1","id":"vtszvw9","kind":"cell","match_hash":"7f70dad0ee03481642e086706b6a79fdd1718b90f129f419535252112108a20a","node_hash":"33b92e609f7f5c73035d5cbbfbf18a6744abeec69ddd9bf4c8ad653feff4c0a9","ord":2,"own_hash":"011fca627b7b6829b4fa68298078619fa552645d8e396f3a50cac9f1f4766ce4","parent":"btf2r9v","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"7f70dad0ee03481642e086706b6a79fdd1718b90f129f419535252112108a20a","withheld":true} -{"align_key":"db874c6fd2317793f8cc19ecb3b91a94670d134770529034919e573215dffe15","id":"qxm90ek","kind":"row","match_hash":"5dc9c27d257b4b70ad4d7c260e3eaa9d08c9089bf89e8d9819589d5478bdd7cd","node_hash":"b4db23a343dcbe928ff201bd06ebc2843a71560fb6fdb41e0d6d3e4c05c5355e","ord":1,"own_hash":"f26284d984d4bbaef09c7a4a9267fa2402dc01247d73197c795b037d92f7a810","parent":"bapa0zm","text_hash":"3c097075ecc1a1136212713397911ceb783b995a7147d518a111289877408ece"} -{"align_key":"34372001c998d95dc26dd0cfbb172658242d7164fcc58480b342301a44e7d883","attrs":{"colspan":1,"column":"kp6grmd","role":"column-header","rowspan":1},"fidelity":"F1","id":"sam8g7e","kind":"cell","match_hash":"8ec98085745ca91c6dc473ffb883e313ecad6397eed28b8c0c08f01cece17c56","node_hash":"323ea85e72f03a2d7d04a8d5e94866d9c6398c5c2300f6bd9e53995594c89091","ord":0,"own_hash":"de0c34108bc3ad16f25618e2cf971c1e1929db6c8242fed8ef649ebbcd80abfe","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"5aa647ced7565426a03fe41761242cbb38aa2fd250db5882e4a98c743ead0e38","withheld":true} -{"align_key":"ac59de9254852505faab41dffb8e09b14516266241dd6d8092c88a3398e47df5","attrs":{"colspan":1,"column":"z16p4vm","role":"column-header","rowspan":1},"fidelity":"F1","id":"cq77erb","kind":"cell","match_hash":"29f86e01ff28b22c3e55fc55c48e3902efde9296c70ea694e0138a9c1fd1a8fa","node_hash":"acc76a4f7402fa04e04f0faf1561b7b5ef83299b4f3e3998e650a9163283734e","ord":1,"own_hash":"e54ffc90772a7b16db6db238625c6b5c7bec9ac96c73abef87bedc6f122b515c","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"77acf1a3235ee6fc108d905ca7effb590acded8370779580652abd53229c7b64","withheld":true} -{"align_key":"34372001c998d95dc26dd0cfbb172658242d7164fcc58480b342301a44e7d883","attrs":{"colspan":1,"column":"egq2j2a","role":"column-header","rowspan":1},"fidelity":"F1","id":"h5psthj","kind":"cell","match_hash":"8ec98085745ca91c6dc473ffb883e313ecad6397eed28b8c0c08f01cece17c56","node_hash":"30cf0517e4c5f3c7869e430adc446f1146a46372fa1e7ea712b64926ef56a11d","ord":2,"own_hash":"baae32ee8b67fa56c65657a5fe4d0ca7f840c119b42f5770c3233ffdf9829022","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"5aa647ced7565426a03fe41761242cbb38aa2fd250db5882e4a98c743ead0e38","withheld":true} -{"align_key":"ac59de9254852505faab41dffb8e09b14516266241dd6d8092c88a3398e47df5","attrs":{"colspan":1,"column":"my9ahda","role":"column-header","rowspan":1},"fidelity":"F1","id":"j3d4w5v","kind":"cell","match_hash":"29f86e01ff28b22c3e55fc55c48e3902efde9296c70ea694e0138a9c1fd1a8fa","node_hash":"e8318843f4667899668d9f07dfbbfc2f2fea63a0fd007e6b7b852f9961f26a36","ord":3,"own_hash":"d44d921a1eb945f727ab6915ed187fdebd218b18856c1829832eeac636c4b188","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"77acf1a3235ee6fc108d905ca7effb590acded8370779580652abd53229c7b64","withheld":true} -{"align_key":"2caed5456f2f96c00ee8d5f3a1a4dd5131567dc9aade007cf2c6ec3725a8bdfc","id":"tk5p46c","kind":"table-body","match_hash":"ebe6936a81a5313e3dbbedaa2bb7fe58167e8225d2b038caad76312a42e912f3","node_hash":"9d697e2553e0047d630ecfbd0f7a1b72cbbd040c800ce7d3356291f121e76ac1","ord":2,"own_hash":"d2073d8673d4ecdbe9eb9e97d43204b03ccb7549e84413aa47edcfbb3817ec39","parent":"gm5z4rx","text_hash":"ebe6936a81a5313e3dbbedaa2bb7fe58167e8225d2b038caad76312a42e912f3"} -{"align_key":"2e125166152ea6a59f4b4bbeb1a6622a087e3b8bf8e44b79db0337246e5c57e7","id":"y7pmzed","kind":"row","match_hash":"394b2bb3b95420d29121839f4723f392f7a5870256e510523913ba4157a20428","node_hash":"56cf47f979da6178fc5a7c488003390c91cfee43a30ec0e9453853ff1794fe1a","ord":0,"own_hash":"f26284d984d4bbaef09c7a4a9267fa2402dc01247d73197c795b037d92f7a810","parent":"tk5p46c","text_hash":"394b2bb3b95420d29121839f4723f392f7a5870256e510523913ba4157a20428"} -{"align_key":"2e125166152ea6a59f4b4bbeb1a6622a087e3b8bf8e44b79db0337246e5c57e7","attrs":{"colspan":5,"column":"vphmyzz","role":"row-group-header","rowspan":1},"fidelity":"F1","id":"hwxm8de","kind":"cell","match_hash":"394b2bb3b95420d29121839f4723f392f7a5870256e510523913ba4157a20428","node_hash":"cf6f817f801481cfeac3aef2f05a8e6d0c4b84dc13654fbb920ff526305db572","ord":0,"own_hash":"87cf8671111ff0c328daa30e55aa167d2a294d3cfaf2b3f6b63b78438a7846f4","parent":"y7pmzed","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"394b2bb3b95420d29121839f4723f392f7a5870256e510523913ba4157a20428","withheld":true} -{"align_key":"a36b7fd307e3ae8555a343a8874c9b62bcd2ab92b7eb861663003c9e9259ab08","attrs":{"header_path":["hwxm8de","k3fqnvy"]},"id":"zhe4g0k","kind":"row","match_hash":"ece9601c4383e8e9da97a6489b736840c3cfc4a1f69a5893b10584dea85587c5","node_hash":"69df4d7c8d5ecd59a90b7a3d01be2a749cc6234b18e7aae62b6bbd17f330dd8b","ord":1,"own_hash":"f26284d984d4bbaef09c7a4a9267fa2402dc01247d73197c795b037d92f7a810","parent":"tk5p46c","text_hash":"ece9601c4383e8e9da97a6489b736840c3cfc4a1f69a5893b10584dea85587c5"} -{"align_key":"5e0848f295ff70468b97d564357bd92702e520ac176cf773762cc761cb2b7cf8","attrs":{"colspan":1,"column":"vphmyzz","role":"row-header","rowspan":1},"fidelity":"F1","id":"k3fqnvy","kind":"cell","match_hash":"d9ed5b189a19d5beda634884d22d739c4248efe1ceac55a516e1d22744890cbf","node_hash":"8c698bfd8eb4d741ce83f8a65ed42c167bb55beab5929a98815921dd80919ecf","ord":0,"own_hash":"d99494fb9c07423ce0831a5b163b454afade38eb8fef1a861c76383eaeee313d","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"d9ed5b189a19d5beda634884d22d739c4248efe1ceac55a516e1d22744890cbf","withheld":true} -{"align_key":"afcd9e073adf3fa07d076ab56b60565d8ac859efc7d86af8e86a4f53ffe93b5f","attrs":{"colspan":1,"column":"kp6grmd","role":"data","rowspan":1},"fidelity":"F1","id":"nkm3xn5","kind":"cell","match_hash":"afcd9e073adf3fa07d076ab56b60565d8ac859efc7d86af8e86a4f53ffe93b5f","node_hash":"a8651a4ba56e15688a9147def6127ebd82deeb86c80792b8a133f60d6c1b6673","ord":1,"own_hash":"94aa65965423cde64d220448b628ec4208d8a046421c71987d0bbf6ff4401f20","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"afcd9e073adf3fa07d076ab56b60565d8ac859efc7d86af8e86a4f53ffe93b5f","withheld":true} -{"align_key":"4c325c2762b83a06c9ee7b11e010b3fc8f6145a921d337bc1a16305ad9521d1e","attrs":{"colspan":1,"column":"z16p4vm","role":"data","rowspan":1},"fidelity":"F1","id":"kpk13yn","kind":"cell","match_hash":"4c325c2762b83a06c9ee7b11e010b3fc8f6145a921d337bc1a16305ad9521d1e","node_hash":"d5ad31e4560959e29212b037871c34c6693854173e9f08317eaf636eefd1356c","ord":2,"own_hash":"3ef99efd4168b7afa2a90f16cb23e54b4cfa7b4f730ca5fd94436a8314e3b3c2","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"4c325c2762b83a06c9ee7b11e010b3fc8f6145a921d337bc1a16305ad9521d1e","withheld":true} -{"align_key":"f7075b487e278d7fb976b0e863f9359e78745a25cfdec18e69234d9c53bbde41","attrs":{"colspan":1,"column":"egq2j2a","role":"data","rowspan":1},"fidelity":"F1","id":"hw8fx4r","kind":"cell","match_hash":"f7075b487e278d7fb976b0e863f9359e78745a25cfdec18e69234d9c53bbde41","node_hash":"7f8fa0b799619070e123d335bbed16b5aa17401a19f7ca7a0b1a2442078c5182","ord":3,"own_hash":"a661e58f6264eb4bb72da3122a4d5261ed400ddedb95c7158ffd3d67aaf18fdd","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"f7075b487e278d7fb976b0e863f9359e78745a25cfdec18e69234d9c53bbde41","withheld":true} -{"align_key":"5610e4a5383e8634d5bc05602cea1a3a238170ced063e84159178d1714f0aa2d","attrs":{"colspan":1,"column":"my9ahda","role":"data","rowspan":1},"fidelity":"F1","id":"rr9wvsy","kind":"cell","match_hash":"5610e4a5383e8634d5bc05602cea1a3a238170ced063e84159178d1714f0aa2d","node_hash":"51e417ae443aee640a205252a45becf3dd6d902d79d90caa998b499b5d8a92d1","ord":4,"own_hash":"ce741f782ffbf58b93daaeb2344942f27f1d305d190fccacbf86d5a5fb4c5f47","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"5610e4a5383e8634d5bc05602cea1a3a238170ced063e84159178d1714f0aa2d","withheld":true} -{"align_key":"8672a6bd7de244d5c38990908e859f8b547839813b21f7ee048782878b4d2c3e","attrs":{"header_path":["hwxm8de","t6gjpee"]},"id":"fbg2mwq","kind":"row","match_hash":"b6ed03153bf050dc60219c9b2571c89c46c5b366dfa523e453baa1e8cc072b3b","node_hash":"5a6c78526201d8047efc36ecbd4488c4903a9fdcd6d9080789697ea88d06660b","ord":2,"own_hash":"f26284d984d4bbaef09c7a4a9267fa2402dc01247d73197c795b037d92f7a810","parent":"tk5p46c","text_hash":"b6ed03153bf050dc60219c9b2571c89c46c5b366dfa523e453baa1e8cc072b3b"} -{"align_key":"d66e8e1b20030845c99b91a000f3ef91f223312a6afb10112b68071f35f2bee9","attrs":{"colspan":1,"column":"vphmyzz","role":"row-header","rowspan":1},"fidelity":"F1","id":"t6gjpee","kind":"cell","match_hash":"74162c843df5fa40689cb5599ab482952404c785093721b17382346841a662ce","node_hash":"2550498433ca4ef456d556404e006727ed099da3d86ad56967232e7741f2b7f2","ord":0,"own_hash":"65288ae7deea12a6202f782dcf946baba20da1d3bb4b5f6ee9508be0b4780946","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"74162c843df5fa40689cb5599ab482952404c785093721b17382346841a662ce","withheld":true} -{"align_key":"d5698a30e2be836399cd4731f57f7136d40d11dcc61f47ceaf1cba0b9732855d","attrs":{"colspan":1,"column":"kp6grmd","role":"data","rowspan":1},"fidelity":"F1","id":"kw2fb3v","kind":"cell","match_hash":"d5698a30e2be836399cd4731f57f7136d40d11dcc61f47ceaf1cba0b9732855d","node_hash":"c954a81e51e28c32e81389adf191c671b648f6d492688d2752e54a4dbbb25d97","ord":1,"own_hash":"1f16208594b74ff882da71fa8dc964cc7011d66d4a720aef9db8ea3c9ecbfc6a","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"d5698a30e2be836399cd4731f57f7136d40d11dcc61f47ceaf1cba0b9732855d","withheld":true} -{"align_key":"379237827965e566f947ab2ff4df0353b97ecbf07ba0621d46c04898d1694f2c","attrs":{"colspan":1,"column":"z16p4vm","role":"data","rowspan":1},"fidelity":"F1","id":"e0n07n0","kind":"cell","match_hash":"379237827965e566f947ab2ff4df0353b97ecbf07ba0621d46c04898d1694f2c","node_hash":"3d0fa14e7eea5773c48b7f2bf3fdea40d62ec4f4dce03c178e020db94dcc7f7d","ord":2,"own_hash":"0d5477a68e67b092016c34b3883d6ab79b9f203f23b0a6a0a075bed1135fe19d","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"379237827965e566f947ab2ff4df0353b97ecbf07ba0621d46c04898d1694f2c","withheld":true} -{"align_key":"a3991c3d7b0204d37cfcfd5a53c30280be324878818447d2b3604a3c7fd6e6ab","attrs":{"colspan":1,"column":"egq2j2a","role":"data","rowspan":1},"fidelity":"F1","id":"gy4avx6","kind":"cell","match_hash":"a3991c3d7b0204d37cfcfd5a53c30280be324878818447d2b3604a3c7fd6e6ab","node_hash":"98902004851b0ecf60b7a856cc0f4ac560cf768f294d8a6c37353c87f3470989","ord":3,"own_hash":"e55220e3deb2043d8ee2fda9ff519bf2d2f81b9998415996d38d4f24fdb69f7a","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"a3991c3d7b0204d37cfcfd5a53c30280be324878818447d2b3604a3c7fd6e6ab","withheld":true} -{"align_key":"abfb5929fe46c4a5b54e33b2368f1defb23bd69381cc5d68c454618b52fa6def","attrs":{"colspan":1,"column":"my9ahda","role":"data","rowspan":1},"fidelity":"F1","id":"ezb1n33","kind":"cell","match_hash":"abfb5929fe46c4a5b54e33b2368f1defb23bd69381cc5d68c454618b52fa6def","node_hash":"e6e5c51cbd331294ef30ef9b588987d414921b4a975f76d3e142590077e0b7aa","ord":4,"own_hash":"75db4f05f952edbb0fcc45f15436217565542f60c78b01c55395c9d294b057cb","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"abfb5929fe46c4a5b54e33b2368f1defb23bd69381cc5d68c454618b52fa6def","withheld":true} -{"align_key":"e82552fd2078fb21e1022054943a20cf3a82857e75246ec6f62e72edccb62c69","attrs":{"header_path":["hwxm8de","j67ec9p"]},"id":"j0x5twd","kind":"row","match_hash":"e2ad8a5cc7f96bdbe2cffc2b9b8e8cda1c499e3f45a25533704b89120fa8b7de","node_hash":"b959a9e8e794b04006a213ecf40f37310f36dfb7092a635275aceefa93c737d0","ord":3,"own_hash":"f26284d984d4bbaef09c7a4a9267fa2402dc01247d73197c795b037d92f7a810","parent":"tk5p46c","text_hash":"e2ad8a5cc7f96bdbe2cffc2b9b8e8cda1c499e3f45a25533704b89120fa8b7de"} -{"align_key":"ab2897875472e86a4381fef10dce765aaa78f2c58b599fbdc162bc0a9cd521c5","attrs":{"colspan":1,"column":"vphmyzz","role":"row-header","rowspan":1},"fidelity":"F1","id":"j67ec9p","kind":"cell","match_hash":"171524e969d824e86630970280ffde34270b511f6464a4d04b2c8ab4efeaab40","node_hash":"930a3864a576bdb55dcdef1424eb5384bc9e78cee634d784842e9138a0f30af1","ord":0,"own_hash":"d50e3ed8650ddbe4c9cb20719aed45129ff454dd72cb82ff11ca12a8eb821d29","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"171524e969d824e86630970280ffde34270b511f6464a4d04b2c8ab4efeaab40","withheld":true} -{"align_key":"b7f89ec216e00d2143e096ae9a447f4d3c350470862369616f0115342a2392b6","attrs":{"colspan":1,"column":"kp6grmd","role":"data","rowspan":1},"fidelity":"F1","id":"dm452cm","kind":"cell","match_hash":"b7f89ec216e00d2143e096ae9a447f4d3c350470862369616f0115342a2392b6","node_hash":"411a8c926c06ba5d76365f82d68e594f9b6cd16e3d3ddc3b99bcf60092125a18","ord":1,"own_hash":"7c67a7f041576e811df42150f2a338956f8a90c018c98de00932b048bc66b5b3","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"b7f89ec216e00d2143e096ae9a447f4d3c350470862369616f0115342a2392b6","withheld":true} -{"align_key":"9dd333199248322d0f67e2e40954934e9924ffa51e02f7e3635ae2d63b2e27d5","attrs":{"colspan":1,"column":"z16p4vm","role":"data","rowspan":1},"fidelity":"F1","id":"t3dsc22","kind":"cell","match_hash":"9dd333199248322d0f67e2e40954934e9924ffa51e02f7e3635ae2d63b2e27d5","node_hash":"53627f231e70eaa4a54bd59593e83f9bde93966cda7533d07d0250095bda6601","ord":2,"own_hash":"baeeceac3234bf5028b7ae06aceb18745e38a49d27600f6ce715568e1dad7424","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"9dd333199248322d0f67e2e40954934e9924ffa51e02f7e3635ae2d63b2e27d5","withheld":true} -{"align_key":"073a5155ab7d016d0b111e9222e354db3f66f1128e0b0c31bebf5d0c763fcfc3","attrs":{"colspan":1,"column":"egq2j2a","role":"data","rowspan":1},"fidelity":"F1","id":"mkakqg3","kind":"cell","match_hash":"073a5155ab7d016d0b111e9222e354db3f66f1128e0b0c31bebf5d0c763fcfc3","node_hash":"d23822141b22eff98b3dc0b5bcdd776a542e91a64b809c1f93642a7c8ab8b626","ord":3,"own_hash":"d8bc86f95171a8c2c180e9b0ffd3da21ff74388e4108cd2f57677fc271a714ab","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"073a5155ab7d016d0b111e9222e354db3f66f1128e0b0c31bebf5d0c763fcfc3","withheld":true} -{"align_key":"993583750d6468ca7dc10e051599f14a3acbb4624f7b901481c29cfe3a1564a5","attrs":{"colspan":1,"column":"my9ahda","role":"data","rowspan":1},"fidelity":"F1","id":"ba6xp29","kind":"cell","match_hash":"993583750d6468ca7dc10e051599f14a3acbb4624f7b901481c29cfe3a1564a5","node_hash":"d4c31650c55cfc16403ba1d96eed11de068bdd95790242f871357253770f2532","ord":4,"own_hash":"1efe03e8a7a9fd828e186260735576dc8d6aa86ff856054e2433e01a9fddeeae","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"993583750d6468ca7dc10e051599f14a3acbb4624f7b901481c29cfe3a1564a5","withheld":true} -{"align_key":"a3e639c5819223b2ad7499beeec3450bc878eb8c4dfac6a11dec164d938063ed","id":"ahxcgqa","kind":"table-note","match_hash":"07d621769ff2cf006510a37045554733b7b028d35d3a3580498a549dd1e54d01","node_hash":"a2d4471a9cd7f9c0154dabcb7c206c37c91289a1b041a9973fd7979840585421","ord":3,"own_hash":"85c78acb2f43130626624a22f8a50b47d7b71386ff6aad9a00f195687fb796cc","parent":"gm5z4rx","text_hash":"07d621769ff2cf006510a37045554733b7b028d35d3a3580498a549dd1e54d01"} -{"align_key":"a3e639c5819223b2ad7499beeec3450bc878eb8c4dfac6a11dec164d938063ed","fidelity":"F2","id":"bn2ef3e","kind":"sentence","match_hash":"07d621769ff2cf006510a37045554733b7b028d35d3a3580498a549dd1e54d01","node_hash":"e22d60daefc9aa09e7b6c162d917a1fabf20b9909a6b8c724c2d84a20f2bdd3d","ord":0,"own_hash":"52d2d9831d5e19ad7cf0ce145e2f6298608e84f44b674631e6cafe32a1eba0c5","parent":"ahxcgqa","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"07d621769ff2cf006510a37045554733b7b028d35d3a3580498a549dd1e54d01","withheld":true} -{"align_key":"3986c855546767b485024b5f58c57f75497cc9f56a5fb3d7aafa35a5f4956efe","id":"jmdabra","kind":"back","match_hash":"ea20e804497216ffb992eef2b50f66472fbac776a1d1dc07f206d575a0bb1a99","node_hash":"f5b820a6895245e65364f5bbff527aff20a989bc5c6a7b7f90c24cb55c6eea95","ord":3,"own_hash":"175ec22e9a82b2cc92886601623d762e0fb554c854379eac47d1303c3b73f9da","parent":"ya7x597","text_hash":"d023ed34480f9007773791c53e67b886f52a96d703d3ee5e743a481c57de95a1"} -{"align_key":"3986c855546767b485024b5f58c57f75497cc9f56a5fb3d7aafa35a5f4956efe","id":"m9ywq9e","kind":"references","match_hash":"ea20e804497216ffb992eef2b50f66472fbac776a1d1dc07f206d575a0bb1a99","node_hash":"1caa6e9a8e7c1e475a1021ef993828f6b0009efa455497b95b6342c67d949b9e","ord":0,"own_hash":"1942256fc13b12767e9b0c6a7226dca6f2c2f2a86c21c7498d550c9937ecefe7","parent":"jmdabra","text_hash":"d023ed34480f9007773791c53e67b886f52a96d703d3ee5e743a481c57de95a1"} -{"align_key":"187150b62171f3ac1379ee2b26b96cc418d1eb9ea7a033a28909b273e1c879da","fidelity":"F2","id":"zmyqtxs","kind":"reference","label":"1","match_hash":"a02fcb8214b4e41e350b39b6c7cc456e89af6a19accae09ae06982f8e11d344c","node_hash":"dec6e9bc7d67a79a31231a55485d884c59e4a7622771beaddee54a2dd58750a5","ord":0,"own_hash":"3a2f1187a9b41dfa9cc6481de70f54a2c92f4a62b7df257293a87c88e8e343af","parent":"m9ywq9e","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"797782c9ddfcc5a924ad6d377331e0543609e7ed2cab5dcd0a47ef91482ef85f","withheld":true} -{"align_key":"49ca994a005d61ca1bfd7190b0ca385914ab2298117be7ad24f857d3f84822e2","fidelity":"F2","id":"b3g86a4","kind":"reference","label":"2","match_hash":"8a93139aa3bbaf488cd8138d2fdeae683ed11d3ae5a6be801097100226f0f416","node_hash":"c7067ccd781f7e29508d04686282b63d25f794ede1209923569bb5bccdbed21c","ord":1,"own_hash":"61ec3f92f4cdcf3f4669ad8cfb2aef7e9604627b8fc32dc82edb984fb98c9764","parent":"m9ywq9e","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"8b21e8d32981b99d22c9eacb4ea625b8e2dab8f8558375a6e8988bd81f6c80bc","withheld":true} +{"align_key":"73e1dcf3ecf4c2646dcda07bc6cd0737e53d558673446d5008a050ab55e34f51","id":"ya7x597","kind":"document","match_hash":"b10e788d778e93d11fcd5b7afe480c744ddadc5756059a2907b10e42fe150f3a","node_hash":"1a0ae11b02b2f49ebbbf856bb09fe80731514bbeaad50cbb973ba0389b8ed7b2","ord":0,"own_hash":"1e1c0a042df01d115ebd6ad7a11767de2203f8ce28d99dca0962a0386679ccc9","parent":null,"text_hash":"0a51cd3b3a2eec1768706c11c74a00f5ddacb26cbfdfeb0c2ae74ed5fb3a1aee"} +{"align_key":"740b904666b6b804ecc509a156d97599256c6e122fce798296b10f23135fd2d8","id":"x1wez17","kind":"front","match_hash":"9723d605ea537dd125808f4554a0fc7e9d88acb24dde0d69f728f76d462a7512","node_hash":"7bf80c1e21781846947dc2820af3dfe28d5bfcea3c6becfb15c277cecc9b67e1","ord":0,"own_hash":"76184bd872d41b4a1e7144cd938ff98e726f624161a0e048298d2462f4fbcebd","parent":"ya7x597","text_hash":"9723d605ea537dd125808f4554a0fc7e9d88acb24dde0d69f728f76d462a7512"} +{"align_key":"85822515b8d30d8e7d6856677292c6d52ac01408a1f4a77fcfd768ab353569fd","id":"krf8jz8","kind":"title","match_hash":"ea1bbfcaf7fe35e0e55b33eb4d034a5c7f2450c79b4d4808bc1e68c6883aa0d9","node_hash":"b83340764d0b14a97f560351d7707fcafe5ef88e29a990d45f5dad9d7ac56890","ord":0,"own_hash":"6662b63efd4c8fa2292f869d74f4621c43deb986b77cede381bf54bc753427d6","parent":"x1wez17","text_hash":"ea1bbfcaf7fe35e0e55b33eb4d034a5c7f2450c79b4d4808bc1e68c6883aa0d9"} +{"align_key":"85822515b8d30d8e7d6856677292c6d52ac01408a1f4a77fcfd768ab353569fd","fidelity":"F2","id":"kq18996","kind":"sentence","match_hash":"ea1bbfcaf7fe35e0e55b33eb4d034a5c7f2450c79b4d4808bc1e68c6883aa0d9","node_hash":"063511b457939fc79103b0c92bcd869e9e60d0d79e5f4ff53e1eb8bae321bee8","ord":0,"own_hash":"0e97e19eae4aacf7b6b61a1140afea1c728b2b21799f9157a47e18fbf73097d6","parent":"krf8jz8","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"ea1bbfcaf7fe35e0e55b33eb4d034a5c7f2450c79b4d4808bc1e68c6883aa0d9","withheld":true} +{"align_key":"ce8e2360807a66a2747c20b68e31078383c6f4c30cbed1fa9936f94c6838da10","fidelity":"F2","id":"xvjhbee","kind":"authors","match_hash":"8082ef3352a42a4e7c1c4635982c16bb9b2411775855dcdb0660bcee9bc16dc3","node_hash":"2c72165f1eae4d7469dc45e7eccd3090bd3e436e3fe18e2465ad85ae284cb0b0","ord":1,"own_hash":"f70286aad77f371f1d916a2edeb90ed5c61aa9eec3606da07823df62fdf71649","parent":"x1wez17","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"8082ef3352a42a4e7c1c4635982c16bb9b2411775855dcdb0660bcee9bc16dc3","withheld":true} +{"align_key":"a51d90fcfedd34dc094dd4ca6f2fba7b0924ce03edb3d87ea4ba238c69022140","id":"r94wmsf","kind":"abstract","match_hash":"415a8e815243b76fd0ef1accc4631ddd089b7cb893a9e79f63c75e8378f2d10c","node_hash":"e117bb73af3aeb9bcc824fa13b0b9206aae26d2ded1ca8083d834c38101f2954","ord":2,"own_hash":"ae5c9c076b138544e4f8921da1f5838c1a5d04783911c5b98f084032e2237a1a","parent":"x1wez17","text_hash":"415a8e815243b76fd0ef1accc4631ddd089b7cb893a9e79f63c75e8378f2d10c"} +{"align_key":"a51d90fcfedd34dc094dd4ca6f2fba7b0924ce03edb3d87ea4ba238c69022140","id":"qe2yth0","kind":"paragraph","match_hash":"415a8e815243b76fd0ef1accc4631ddd089b7cb893a9e79f63c75e8378f2d10c","node_hash":"1ce3545316f51522d8e4ce579d88f6d727e0c3ef1e89bd0c088ad13ba581a1b8","ord":0,"own_hash":"103a1fafd6650afad54130d0fb721a3587d6904efcf738f606313c32f6ea8406","parent":"r94wmsf","text_hash":"415a8e815243b76fd0ef1accc4631ddd089b7cb893a9e79f63c75e8378f2d10c"} +{"align_key":"2446b40b59e305558df1e96a2999ae7661ee2a093a2271919b80bcfecd27ef4a","fidelity":"F2","id":"ehd3zbe","kind":"sentence","match_hash":"3f2f4d29ebacc0fd2539d6e8d74ce91988a28eed786f236296cfcb1d3e3160d8","node_hash":"fa1ab60ed7cf75096a4b578111cf134f25bb6f79d3a6bdbfd50a681c11aef001","ord":0,"own_hash":"0f7bcb166b066ff55461fbafb8c80c7ee99a007814a47dbb5f1a997dd6af146a","parent":"qe2yth0","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"3f2f4d29ebacc0fd2539d6e8d74ce91988a28eed786f236296cfcb1d3e3160d8","withheld":true} +{"align_key":"4c4b2441a5f5ce14fd1a22bac71a5ca164572fec67e6f5306a5fb041f8651de8","fidelity":"F2","id":"j06tfhn","kind":"sentence","match_hash":"2c842774bf2f0cf35874c21a39b3c8e37aed60f69c78ab7548bb8118e4f0ff35","node_hash":"ad20d9fc4440d88f815b3ed8ffc9a02da727edde2f916a560859303b682cb7e4","ord":1,"own_hash":"2210c4a6b9bde5b514a89ff45ea75031a05940de245857816fbf8cc25a8a0f85","parent":"qe2yth0","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"2c842774bf2f0cf35874c21a39b3c8e37aed60f69c78ab7548bb8118e4f0ff35","withheld":true} +{"align_key":"fb4cfa363b0cbacbae23a9eee5f90d564f13d66deb1669cef22399f26ad4c908","attrs":{"level":1},"id":"bzqvbhd","kind":"section","label":"1","match_hash":"ee5737e1a7383abbc83279a6c2904a1865355ea37e3b8e0dc286c66bf2c9289f","node_hash":"d735657394dbd8725ad5312af2eec2a2eef28f782839cf1fea2115d5c9d312dc","ord":1,"own_hash":"d6987fcfcc59e3c840e38f69cd8b0f19f12a05098b5c2826a77087a230743ade","parent":"ya7x597","text_hash":"c4cd1d13b4f0d02c3298406187ee0141094a96ff16331c21163a557507158492"} +{"align_key":"ccdb89934b47e8b8bbbc65b3860a3158608252d5f108c0885b40d7726994aa81","id":"sb0g5gh","kind":"heading","match_hash":"0e20a78430a5d2996a268cd27076e70ef4e92d5496363dbf0bb8d9a0bdd1fe98","node_hash":"a885b81ff8e37fabab03cd3c2735f291e9ad80459ac7667f4477c0b6064c433b","ord":0,"own_hash":"0cce5ff8d380dedec933eb3aaaedf29d79dabca723dbe279240f83bbc75d7b3a","parent":"bzqvbhd","text_hash":"0e20a78430a5d2996a268cd27076e70ef4e92d5496363dbf0bb8d9a0bdd1fe98"} +{"align_key":"ccdb89934b47e8b8bbbc65b3860a3158608252d5f108c0885b40d7726994aa81","fidelity":"F2","id":"dmgqhd0","kind":"sentence","match_hash":"0e20a78430a5d2996a268cd27076e70ef4e92d5496363dbf0bb8d9a0bdd1fe98","node_hash":"63434ad314933ba962e9d55e61b6938a4f340e8ed6655d00a00d38ca90778fba","ord":0,"own_hash":"4b4748ebfc7e82f326995058ee270a53a95ef32fde0b16b6575ff174f50c5377","parent":"sb0g5gh","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"0e20a78430a5d2996a268cd27076e70ef4e92d5496363dbf0bb8d9a0bdd1fe98","withheld":true} +{"align_key":"20c362585be6e33d555703bd098e38e3009fd07430f8784949cd30d16c1c280f","id":"pnkah9n","kind":"paragraph","match_hash":"5d385c8da69c51f88db862f9f8990f4b400da92c0f717eacc1554daafbf88240","node_hash":"e616f009103834590b5ebcc2bcb15c980856fd854cdbc22cb3f4c688d98d8a02","ord":1,"own_hash":"103a1fafd6650afad54130d0fb721a3587d6904efcf738f606313c32f6ea8406","parent":"bzqvbhd","text_hash":"d70638159e2bc6647273fc19abc2dde7907b1764339c91a9a3acdeec48cc9d2b"} +{"align_key":"534ed962405d1953e0fff6d3f2be3f8a107802d4b675d49b097db4d86a6895fd","fidelity":"F2","id":"mbtjsqv","kind":"sentence","match_hash":"44433a74cb8a8ac14bc432c73d8214467d592451c867e8366c8078e31d147c20","node_hash":"4f1e4c246308103b3c489dbda7363a8e68f57406f59ea653493da9e2ba4256d8","ord":0,"own_hash":"0dac9d2ddbc664134875c68b5612645aa1a64774e0d75ccb86234706a4883f09","parent":"pnkah9n","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"d26d51b8125eb7eaeb4ca33e6b23a428ea7191121b3da2d5484d0669b1ae7e2e","withheld":true} +{"align_key":"ca0d330d37d08e676a14c3aa1b30316392edc2baef7140e3f5340b9c47c17bd1","fidelity":"F2","id":"sxgcc9h","kind":"sentence","match_hash":"db463b068510be091c368023e6c8c914c676194ab1ce4610058c5512ad509697","node_hash":"deeac72321b47dcbc96ac0ccd417266b434aafd6ac243f8c6fc9fec85009b9d3","ord":1,"own_hash":"fa8d493788899a9726f7e405b2343010d1f08472a30adf46ecc0adee40ebdaba","parent":"pnkah9n","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"81e3eba9fa3eb5d919aba915ac8d5971b2463d1e9157d929b33782e305f7af41","withheld":true} +{"align_key":"3b70b2ee313f4b81169167f9b94274cd9a5caa328b6e4d6b3604f96c08a0f38f","fidelity":"F1","id":"qn08tj9","kind":"equation","label":"(1)","match_hash":"3b70b2ee313f4b81169167f9b94274cd9a5caa328b6e4d6b3604f96c08a0f38f","node_hash":"2edb62dcc7bfd51c37db068ee66efe945e5bc60719ec8990c563a66039ef390e","ord":0,"own_hash":"9c5ee44736a367e95e71131ab7d7a0ce45416dc2386a092f4387372e1bb5b950","parent":"sxgcc9h","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"f5f6ab94585adb5a9adb51cbaf12347418703cb6e976c792da4cf1706a904b86","withheld":true} +{"align_key":"108a3f1c7ba588a3817db5fc9339bb337c13adb485070abe949c80ebf8decaf9","fidelity":"F2","id":"f929eq9","kind":"sentence","match_hash":"8083cb37b9021c86bd6b109054b2a403aad1834df62e419dc87b65a4a524f86c","node_hash":"3ffcd24bbd3fc2c278e6195414868a02c4b0ef054e1b1da7cfa1aa3558fa5cda","ord":2,"own_hash":"6bf234fe31fd7eb798fcdd2b3607c0ddf09f3acb5305b28a84721e7fdd6e1ac4","parent":"pnkah9n","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"f2c5d2ef44c075bfc34e63066294f0ae8717097bc40ae36fc6ab71a42740ddd6","withheld":true} +{"align_key":"29f2758dbcb716be40546c66991156ed71ad75e18d58c7eb2ead0a974c024d98","id":"z77pzan","kind":"paragraph","match_hash":"5dbddace07737f8eaf137d377f9cae81fad7960826fb0c4cda22e05da131c3ae","node_hash":"567a72c9a24cf2846dae5f8fb64a73b3ad6b62188f4e8fee4ea9bb4e2945d9a1","ord":2,"own_hash":"103a1fafd6650afad54130d0fb721a3587d6904efcf738f606313c32f6ea8406","parent":"bzqvbhd","text_hash":"e4e3d35002830eaca719b1daffe6f69e1178ae4d0d0d63cb48583381b30fd994"} +{"align_key":"18bbc434b98cf635f227acf5a3ec4d2e18814313689cb400de2e84815d1fb05b","fidelity":"F1","id":"e4fkseg","kind":"sentence","match_hash":"b72b77abb5003dcf58a07d14c469224ca5a4c2d869aa0f9636f405d34276bee8","node_hash":"2294e0dce748acf61dadf4cc39fccb20e7c2498ee13983ccad992cc569f93792","ord":0,"own_hash":"61db158a8480075191b42d17cf79729aa1707dff0a959ec2982d3fcdbf51736f","parent":"z77pzan","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"fb34c55630da4a53640ea45cb8ae6ff7203f717089c6d124a594793a4bbdf052","withheld":true} +{"align_key":"8a358d2aa5d3c292972d57bafca52ec38d39ec7a94e9f1e8d313bb40f84c6d18","fidelity":"F0","id":"r1gacps","kind":"sentence","match_hash":"f9433133fa445421b20872ade78f026037c5f196517c919d9a7898ab6fb34f70","node_hash":"c2c3e1f85f64b0d00bc3def783b097ecb7e59fa93585d1eb56db61deb7d7ad50","ord":1,"own_hash":"c1ca7337f5a9955d7465d8810ff462dbc1c4f1d2bddc56d496245448220a1c5c","parent":"z77pzan","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"de3da699a85726c8d4d5422b41e2f2463205bdec38cf16c7a9bdd1678861df49","withheld":true} +{"align_key":"f900c547e8971f0ac6d1f62dae772455eccc51566f1d6d6b3b26d6b3ddea5986","attrs":{"level":1},"id":"f0tj6ca","kind":"section","label":"2","match_hash":"f4eff397b084f1e571c0e008d3818fb0c121b9d5fa82e8c9128fd8a11175da57","node_hash":"bba2b3c38ce7208c58467d783bc54eededd7e653cb63c2a4576ed1e1b798f7f9","ord":2,"own_hash":"f628f52a30833081ec4c96ce11e7a5962fdd92b197447d870868e8023921a7e7","parent":"ya7x597","text_hash":"d87ad0a243fd855b8cad50aba311f5af9bbcf583ed9c71b2f822e2abf9be5993"} +{"align_key":"9acd205a8daba021ac1f790cf1f00333b3eb28b8079c37749a0d89601858d22b","id":"y52zyge","kind":"heading","match_hash":"49856b3c5eecfd363da5adfc43334836922679ceee9a03184f32da2970216c8f","node_hash":"6ec3ca5769457a8725e46ea86285357a3f56f39eaa5c2b1aefa7c1cb0abc73db","ord":0,"own_hash":"0cce5ff8d380dedec933eb3aaaedf29d79dabca723dbe279240f83bbc75d7b3a","parent":"f0tj6ca","text_hash":"49856b3c5eecfd363da5adfc43334836922679ceee9a03184f32da2970216c8f"} +{"align_key":"9acd205a8daba021ac1f790cf1f00333b3eb28b8079c37749a0d89601858d22b","fidelity":"F2","id":"rcz9hta","kind":"sentence","match_hash":"49856b3c5eecfd363da5adfc43334836922679ceee9a03184f32da2970216c8f","node_hash":"e31a9c1ac2955ddf7239d75d2f631547c74d144f99aa8ebc99e5ca7c7ed9085e","ord":0,"own_hash":"d4382327152c5c23f3c93dfe55758d65d07130ff123c2de78723956d94b53539","parent":"y52zyge","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"49856b3c5eecfd363da5adfc43334836922679ceee9a03184f32da2970216c8f","withheld":true} +{"align_key":"88965d90b8b00097c7aaaa42cb5fe2436be95ec0762a9434050fb980750acb49","id":"zyqr0yc","kind":"paragraph","match_hash":"4c06718e151db68f23388da5aebaca05166e362886e386647866b93707570042","node_hash":"236ae3b82c476d9ce06c3090204564976f0297c9e943be8c3a4579fe1494f5ef","ord":1,"own_hash":"103a1fafd6650afad54130d0fb721a3587d6904efcf738f606313c32f6ea8406","parent":"f0tj6ca","text_hash":"295bdc8f7e2f6a68819f9ef405c31bf9a4a4fd66f5e82d9fdaaf1d8258000dc5"} +{"align_key":"6b41e63d7dc3261437a2a67ca5f644ce5c17f7e9f16fde2babb76ea297e0cc26","fidelity":"F0","id":"eajq93t","kind":"sentence","match_hash":"967dee63417f16d4fb8e9fc9188b78afcec932e18f869985edcf5bd4e6a3ae8c","node_hash":"632f2deb0eaf30efa19ec17c0047b4f62527fe7aae6576de2450a341840aff90","ord":0,"own_hash":"9bb78576a640cd5ba64ab31d3d04a6444944392ec30ed14d2a4aaf9a380b6bad","parent":"zyqr0yc","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"967dee63417f16d4fb8e9fc9188b78afcec932e18f869985edcf5bd4e6a3ae8c","withheld":true} +{"align_key":"0fa5dd094b4445e742120e267a80c83284bee7a8530e4ad0ca1c303ba503dfb6","fidelity":"F2","id":"ntr324r","kind":"sentence","match_hash":"e9a6aa86ac9d3a5cfbabf1d1a7336162092c09be275de3423cad1f3f7d807160","node_hash":"d3b48d5f98f0c195804526ab8a5793d0cc9f0dcd76d23c8ee9d68885136c3b4a","ord":1,"own_hash":"60789956bb32837d5df0f88e2da60e39738e05cc9d68d0d7858c82a1adce0581","parent":"zyqr0yc","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"a2d885008f91838ed75044a7eb9baca8ac9a2b42c700f7c9034f781cbeab553f","withheld":true} +{"align_key":"f853fa1c2805901aaa4b5bee777ca968d9973fb864075a0702728ccaa52b2c91","id":"vsrzypn","kind":"footnote","label":"a","match_hash":"3803689753b6e310fefeae28060af0b7cbac0084795f2288786dd046ac2edc1d","node_hash":"98d19cb4044f3e7998c5d554f10039e93271671fa7c70e1544256d59512aaa57","ord":2,"own_hash":"42106f1ead27d8af253acb8a50899e48bc15f0a543ef68dccc071de641eee54b","parent":"f0tj6ca","text_hash":"3803689753b6e310fefeae28060af0b7cbac0084795f2288786dd046ac2edc1d"} +{"align_key":"f853fa1c2805901aaa4b5bee777ca968d9973fb864075a0702728ccaa52b2c91","fidelity":"F2","id":"gqs1dcb","kind":"sentence","match_hash":"3803689753b6e310fefeae28060af0b7cbac0084795f2288786dd046ac2edc1d","node_hash":"73767e47fe372357ee61915a799313a03890356e510c3d42f3e6edff3b2de47c","ord":0,"own_hash":"54998e6f01f44d6d23a6a8d6cc50ff73cbd1cf488e642971d4e89cfe10f29f25","parent":"vsrzypn","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"3803689753b6e310fefeae28060af0b7cbac0084795f2288786dd046ac2edc1d","withheld":true} +{"align_key":"e922516f638d9f0755514963ebeba48976a888b6e1f0ab5d8204b8f973c1a020","id":"ajfvq4s","kind":"figure","label":"Figure 1","match_hash":"3f3274a1dbdabb2be5b9e3aaf882267f40ee5998f586b12ba6d9d86e29a48989","node_hash":"27b1442761a566fdc9cd11eecf5610bce8712d7e8ee039d18e9d96f12fb3744b","ord":3,"own_hash":"37d060f9e33e44399b2083366c5653e5d4cee0bc87965f6fdbeef219b459404a","parent":"f0tj6ca","text_hash":"3f3274a1dbdabb2be5b9e3aaf882267f40ee5998f586b12ba6d9d86e29a48989"} +{"align_key":"342411e519a65ad5e3f1dff4b87e9bec2f3117b514a3cb969ab970db7ab2304c","attrs":{"crop":{"dpi":300,"media_type":"image/png","sha256":"586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f"},"image":{"media_type":"image/png","native":true,"sha256":"a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75"}},"id":"b2wgyq2","kind":"panel","label":"a","match_hash":"342411e519a65ad5e3f1dff4b87e9bec2f3117b514a3cb969ab970db7ab2304c","node_hash":"bc2cd137483278fad8ec6d39dbd63713acc0bcc7dafef7007d74986a3f3df4ce","ord":0,"own_hash":"9ea47ecefb7570b6d53009000759433924cf6aef57060ad592ba55c6e6a9fd29","parent":"ajfvq4s","text_hash":"342411e519a65ad5e3f1dff4b87e9bec2f3117b514a3cb969ab970db7ab2304c"} +{"align_key":"342411e519a65ad5e3f1dff4b87e9bec2f3117b514a3cb969ab970db7ab2304c","id":"wtgh2xp","kind":"panel","label":"b","match_hash":"342411e519a65ad5e3f1dff4b87e9bec2f3117b514a3cb969ab970db7ab2304c","node_hash":"408840125a11826b3926a1bd74873badcacc36ff5d04965bf7552e86643767ba","ord":1,"own_hash":"4042a6c64ebff7453faf9d1b836529382f4e708c552ceb8ba8804184375ad57a","parent":"ajfvq4s","text_hash":"342411e519a65ad5e3f1dff4b87e9bec2f3117b514a3cb969ab970db7ab2304c"} +{"align_key":"e922516f638d9f0755514963ebeba48976a888b6e1f0ab5d8204b8f973c1a020","id":"xmwf2ex","kind":"caption","match_hash":"3f3274a1dbdabb2be5b9e3aaf882267f40ee5998f586b12ba6d9d86e29a48989","node_hash":"86e87c68050a9ae0669d618196d215935d9f20349ecf3d48e8e754fd0367a864","ord":2,"own_hash":"2aa668b20e140fe0e196cf24db7a541a84794050efa6ba0f59c7036b9048d26c","parent":"ajfvq4s","text_hash":"3f3274a1dbdabb2be5b9e3aaf882267f40ee5998f586b12ba6d9d86e29a48989"} +{"align_key":"db7fd2fe721a77655d9f3d0bd688e7421eec8ebf34894bc77c50c77440058375","fidelity":"F2","id":"yq0agq9","kind":"sentence","match_hash":"2395607722d0d2f7b667002a16e259ca91b11b121c525a468fefa4c7885f414e","node_hash":"615a6342f9a89fbafeba6965a8d7377b69a1a5bb1ba7b63b4afacf79eb648409","ord":0,"own_hash":"c19a1b9f03c1f8418ae02f1c38038b7efabdd1bcad7af0b2ae82403871c2f9b2","parent":"xmwf2ex","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"2395607722d0d2f7b667002a16e259ca91b11b121c525a468fefa4c7885f414e","withheld":true} +{"align_key":"c6b029913d981eba480dbe333618ecef777e6fc8cfccafe55543438306d22b7d","fidelity":"F2","id":"nmm4md0","kind":"sentence","match_hash":"39757eaa1ded3669c58bd8422a2e62a169732d594d6127b9a2d918fca83b788b","node_hash":"7f5463906446805d9125371ff32346ecce5bad029a13cc3da486a1daaf90c568","ord":1,"own_hash":"8c56a488c88cb66e6185df550c96d089519fe4051d72e943bd6b8652673c81e1","parent":"xmwf2ex","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"39757eaa1ded3669c58bd8422a2e62a169732d594d6127b9a2d918fca83b788b","withheld":true} +{"align_key":"427202114fb14f7d74101f408c06fce2dcc4945668d18cc16ae6d9f53ae8a78f","fidelity":"F2","id":"ed602fy","kind":"sentence","match_hash":"7e35eccee50fabecd210f1b3066b2de569ac2d01f90df03a91f7ae1dcfc239a3","node_hash":"7269e72e010dd5e99473aced819415fde7e5dc773fc56e83b7838695370b60d4","ord":2,"own_hash":"688c65e32ceb4d47401408c9170e31ade5d95500add8c852a0f366b15fe8661c","parent":"xmwf2ex","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"7e35eccee50fabecd210f1b3066b2de569ac2d01f90df03a91f7ae1dcfc239a3","withheld":true} +{"align_key":"c71fe08f63da9864148d4eefc1560988ca34a139dc1c7d13b852462bade1fe10","attrs":{"columns":[{"header_path":["e4z9fr6"],"id":"vphmyzz"},{"header_path":["cwhj4gp","sam8g7e"],"id":"kp6grmd"},{"header_path":["cwhj4gp","cq77erb"],"id":"z16p4vm"},{"header_path":["vtszvw9","h5psthj"],"id":"egq2j2a"},{"header_path":["vtszvw9","j3d4w5v"],"id":"my9ahda"}]},"id":"gm5z4rx","kind":"table","label":"Table 1","match_hash":"a1f271f528fad641e05a8fb47b8a1177589f07762a89f56da4b7fd5ac3a70afe","node_hash":"245e7dd7fa70b06aae7f517f859f30fbc9f24f053d3446be3eee1f9f9a84d0db","ord":4,"own_hash":"ec5a9ab9bdc46c5d5e943eb6501cc3d0d9d5ea1f33f8846da947141ffa746548","parent":"f0tj6ca","text_hash":"63991cfc76be1a3c8e2c94a9e553afca00fd9c5363b574a63f37bfe848457b33"} +{"align_key":"9425ebf2474288aa3ba3fcc0cc809c89daa9f43a07925752d32a470c8fb18e61","id":"fzz8ndw","kind":"caption","match_hash":"7c94e294ed39e5a6b59aa07680278c1fe63a3ee202b8f1fba1e33864e3291b27","node_hash":"6cffafe17480657a4866349593c0bdb1cb226e8df86b8070ec008b3c40ca6cfa","ord":0,"own_hash":"2aa668b20e140fe0e196cf24db7a541a84794050efa6ba0f59c7036b9048d26c","parent":"gm5z4rx","text_hash":"7c94e294ed39e5a6b59aa07680278c1fe63a3ee202b8f1fba1e33864e3291b27"} +{"align_key":"9425ebf2474288aa3ba3fcc0cc809c89daa9f43a07925752d32a470c8fb18e61","fidelity":"F2","id":"beayvd3","kind":"sentence","match_hash":"7c94e294ed39e5a6b59aa07680278c1fe63a3ee202b8f1fba1e33864e3291b27","node_hash":"5165816c9b697c21600c7bcf0dcebc28112f55b89ad726876a2a0b8b5a04bc26","ord":0,"own_hash":"e9428353bb1af8b78212a4d4d9875e796dee13ef7459890b4d3785673e7131e1","parent":"fzz8ndw","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"7c94e294ed39e5a6b59aa07680278c1fe63a3ee202b8f1fba1e33864e3291b27","withheld":true} +{"align_key":"407230a97eee045d8c55dc144e768cf16ffad1225c90dbeebea0698e7cc45530","id":"bapa0zm","kind":"table-head","match_hash":"cab6284a87e0b1042f060896b205429c6d6ea1f10e048cae0999e77a2a2b919a","node_hash":"0cfed09b8d2c30cb78ae5523918c1a8270f9f016ad953c20ccbf19faaffd33aa","ord":1,"own_hash":"c6def727a6807f1d6414d60635eeedefaeee93aac7c14f8a5d5d1b79566ac000","parent":"gm5z4rx","text_hash":"cc3477b6261ecc70b0e58395612c9d2783f0a5c7ccf541004630239696af5d9b"} +{"align_key":"14331d699bee2bb04ddc82202600f2ebea53dbf0f92991eb43311ef0fcc5b678","id":"btf2r9v","kind":"row","match_hash":"823699ccad7f80a19843c855a20a04b64463733202306d7c65ca8896b99062ba","node_hash":"0788135f2182d82d9fe836f26829ddb5cecc19864692ca5071951e5b4209549d","ord":0,"own_hash":"c14e86865b4d8b396d94c6b195daf29936dc6a7f6c243eda677b64ea3f9e070a","parent":"bapa0zm","text_hash":"823699ccad7f80a19843c855a20a04b64463733202306d7c65ca8896b99062ba"} +{"align_key":"8abb77e8d7225aac2dfa04d8b4d07b1c5dac9bae11887108b6e662197ca6fab7","attrs":{"colspan":1,"column":"vphmyzz","role":"column-header","rowspan":2},"fidelity":"F1","id":"e4z9fr6","kind":"cell","match_hash":"42c4f8f5ff77f36a537e727e485fee068c229e6b739cd042b465cd91ee37ba12","node_hash":"9ad77fc18fa92efe36edb7a2925f39adf2533ce68e40316ee390887c2d38adb6","ord":0,"own_hash":"65730b167d6a8c16fb721304477ea057789edc4db4b0d75e5f39011c58a3c3c7","parent":"btf2r9v","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"42c4f8f5ff77f36a537e727e485fee068c229e6b739cd042b465cd91ee37ba12","withheld":true} +{"align_key":"b65b164330b4a893b44d15a62db3f1445f5b7ebec58d82976343d050e91bb9d2","attrs":{"colspan":2,"column":"kp6grmd","role":"column-header","rowspan":1},"fidelity":"F1","id":"cwhj4gp","kind":"cell","match_hash":"09f4a80580115fe6532dea0b16a682b55c38e4c5ad1d4fd8602797b904e956d6","node_hash":"434122c6c28aac26419b3e9afaf8a1386d8f1d07f303e14b2bb26774e3a60860","ord":1,"own_hash":"e013b24a9357a732646df2b665906e3a780f33727ff47d4aa4dee97539e94fd9","parent":"btf2r9v","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"09f4a80580115fe6532dea0b16a682b55c38e4c5ad1d4fd8602797b904e956d6","withheld":true} +{"align_key":"b9b486fb8f7fbbf9f67e963c8560c610fa4ea57fe65d85b4ccfbc1cbd3aa7dd9","attrs":{"colspan":2,"column":"egq2j2a","role":"column-header","rowspan":1},"fidelity":"F1","id":"vtszvw9","kind":"cell","match_hash":"3509a66b57462a5c2829ba8ce34ffad83417cf626f228c7da1271418be00e10a","node_hash":"bd2a692bf9492a5d2cc4889024c211f753404019bdb3973d595cf02f8e8908a6","ord":2,"own_hash":"5ff29916c801f09a062717c0fe30be28460581c87d6928300cc9e00b16c69c27","parent":"btf2r9v","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"3509a66b57462a5c2829ba8ce34ffad83417cf626f228c7da1271418be00e10a","withheld":true} +{"align_key":"6386e9549a1b5b9fd530b855569e2bb2dc6e2448f80b0517e7d9269a15bb830d","id":"qxm90ek","kind":"row","match_hash":"c6dce3fbfb3282f72800ff7cc949b0efe1d0071dee5de39b585fe0b2152d4572","node_hash":"b1e8525752cd7d7c42aaf16c857a0f0a494745ea0bdd84483ec8917ec6d24973","ord":1,"own_hash":"c14e86865b4d8b396d94c6b195daf29936dc6a7f6c243eda677b64ea3f9e070a","parent":"bapa0zm","text_hash":"abe75539244158ab0f8981ed6a698775b2f5465c53fc7958356f0388e71e8cd0"} +{"align_key":"10f170f47cf82f8db4cd4cf059aafee7f88d0f8a3962b423bd853bfc9cd411af","attrs":{"colspan":1,"column":"kp6grmd","role":"column-header","rowspan":1},"fidelity":"F1","id":"sam8g7e","kind":"cell","match_hash":"300d5edc7b0b54189f26bf496f79bef269290c14a884f067f1e92e94a6a15816","node_hash":"fe6cd5054e0dfa4efb76da8f7f8f6bcaee6aa86c57c5938525a58d31a10e38a9","ord":0,"own_hash":"de93e32e89277b54125b08ba98dcf0b4c42461d1afc2da44f0794f3bbda58863","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"0412d2f6ed80f8b34dff64f2060cfd8425475e29463ac93364922608bfd3e485","withheld":true} +{"align_key":"93c8465fedad3bae9fbd481d2f84c6f0f15d43dd9ef34ee5d02fcff154cc3f5f","attrs":{"colspan":1,"column":"z16p4vm","role":"column-header","rowspan":1},"fidelity":"F1","id":"cq77erb","kind":"cell","match_hash":"0ebcbae54182a7ace5434c531ca4e8ae6eb0e43bfac9826e72fc8597ac5d86c8","node_hash":"83b1f1179de7c2cf0ee6194c9f84c856ee859f4c5159016b38dfeff4458125b3","ord":1,"own_hash":"16b149a83e6b5c87026608b3d91f2f2ba4f4ca768b0746e16e44dbad0a9add01","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"4d99d81040101a0d6c3adb1a1be8679e5a92805556fef417490b67222d7ae6d2","withheld":true} +{"align_key":"10f170f47cf82f8db4cd4cf059aafee7f88d0f8a3962b423bd853bfc9cd411af","attrs":{"colspan":1,"column":"egq2j2a","role":"column-header","rowspan":1},"fidelity":"F1","id":"h5psthj","kind":"cell","match_hash":"300d5edc7b0b54189f26bf496f79bef269290c14a884f067f1e92e94a6a15816","node_hash":"5396b3a4a773363b4e7c92b077d82049866919e052e69e11b19915c432600287","ord":2,"own_hash":"40196f66830f854c34bc3a778bc9fc6539076aa5d1b681b838d2607710a11fc6","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"0412d2f6ed80f8b34dff64f2060cfd8425475e29463ac93364922608bfd3e485","withheld":true} +{"align_key":"93c8465fedad3bae9fbd481d2f84c6f0f15d43dd9ef34ee5d02fcff154cc3f5f","attrs":{"colspan":1,"column":"my9ahda","role":"column-header","rowspan":1},"fidelity":"F1","id":"j3d4w5v","kind":"cell","match_hash":"0ebcbae54182a7ace5434c531ca4e8ae6eb0e43bfac9826e72fc8597ac5d86c8","node_hash":"ef3ca971bf2b1ee1f9fc07cc9b4871e5a2ba3a62b86b04150d97121f4a0c1725","ord":3,"own_hash":"d19046c3da142d11cc26b7f8b06209ed6b83880a7ebe49a6b18914126659476d","parent":"qxm90ek","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"4d99d81040101a0d6c3adb1a1be8679e5a92805556fef417490b67222d7ae6d2","withheld":true} +{"align_key":"87cb6b8f8be2d6bff665a5981e9c86cd24764fe836f85f5b34e9dfbd1f96581b","id":"tk5p46c","kind":"table-body","match_hash":"cca0a627a4f90bd941adf546af165fdadec89e2ea369b43afa6ee47aa3ed8d15","node_hash":"37b4d5612eb53b5e90a8fab06b91889f0bbda230a9c3316c490754acac8972d0","ord":2,"own_hash":"bf77bb0a83f9ab4f0e4b567071e4c6bddc0b955a63c1c60198a354c5165395c4","parent":"gm5z4rx","text_hash":"cca0a627a4f90bd941adf546af165fdadec89e2ea369b43afa6ee47aa3ed8d15"} +{"align_key":"1830ea7c02f1384dd6e5aa1ade14435955d21e06908d6bf106773c8d213a866d","id":"y7pmzed","kind":"row","match_hash":"0d491bd777b4bc314525a57a6d8fe2a6d8984013b065dade76365bc869fab740","node_hash":"01d2228b636769a927ac299951b5492425c4fb529b8070a48021005114169dd8","ord":0,"own_hash":"c14e86865b4d8b396d94c6b195daf29936dc6a7f6c243eda677b64ea3f9e070a","parent":"tk5p46c","text_hash":"0d491bd777b4bc314525a57a6d8fe2a6d8984013b065dade76365bc869fab740"} +{"align_key":"1830ea7c02f1384dd6e5aa1ade14435955d21e06908d6bf106773c8d213a866d","attrs":{"colspan":5,"column":"vphmyzz","role":"row-group-header","rowspan":1},"fidelity":"F1","id":"hwxm8de","kind":"cell","match_hash":"0d491bd777b4bc314525a57a6d8fe2a6d8984013b065dade76365bc869fab740","node_hash":"32bdd8918398aaf3d423c760751e27fbe4bf2a4d6560d2f4f31fe5cf0e13a87a","ord":0,"own_hash":"f3a78a2b5f987f1913d1c93b9ee4c47790dc1c806bf736bda19f2b68597b54c7","parent":"y7pmzed","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"0d491bd777b4bc314525a57a6d8fe2a6d8984013b065dade76365bc869fab740","withheld":true} +{"align_key":"67610b86cb00e1ce4b20310fed50032876a624a2288b7f0b6c481d1f3d7a5ba1","attrs":{"header_path":["hwxm8de","k3fqnvy"]},"id":"zhe4g0k","kind":"row","match_hash":"f6551181a0c1d137f7f99d8a2a514610e1c48e98914690e059b288fc5d467aa6","node_hash":"485f7d8a47a27b4912746d7418e3eaf9affc41bae318879cd2c986fcb17be808","ord":1,"own_hash":"c14e86865b4d8b396d94c6b195daf29936dc6a7f6c243eda677b64ea3f9e070a","parent":"tk5p46c","text_hash":"f6551181a0c1d137f7f99d8a2a514610e1c48e98914690e059b288fc5d467aa6"} +{"align_key":"7c35b37e66e8e0b71831776db71655f2deca87096cda2341a527b53fa07b8768","attrs":{"colspan":1,"column":"vphmyzz","role":"row-header","rowspan":1},"fidelity":"F1","id":"k3fqnvy","kind":"cell","match_hash":"dfef88eae90d650b6002b3e5f2a9e931a8cce1910c225884a601f7ec3c9eca84","node_hash":"3735b552e025d99b0e7e823d2fe30b0147c9c0aafcf8ea9492c4d0cc4dd4790b","ord":0,"own_hash":"f387c46ba05ad04e8c64d6edf85d10f389e8782fdb6f2f25537594e35e0188bd","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"dfef88eae90d650b6002b3e5f2a9e931a8cce1910c225884a601f7ec3c9eca84","withheld":true} +{"align_key":"9df4869eb9769862199036065318395ff4a2b2bc6fb1ff9592bea75fce1fe05f","attrs":{"colspan":1,"column":"kp6grmd","role":"data","rowspan":1},"fidelity":"F1","id":"nkm3xn5","kind":"cell","match_hash":"9df4869eb9769862199036065318395ff4a2b2bc6fb1ff9592bea75fce1fe05f","node_hash":"66f41c78da96951b3faeb07b14bd7fc1e474a21649992e919370e30db37eb85a","ord":1,"own_hash":"52d774eda83979792d536d86aacff66593986c16c38a7c78b1bbcb92693e08ac","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"9df4869eb9769862199036065318395ff4a2b2bc6fb1ff9592bea75fce1fe05f","withheld":true} +{"align_key":"277fc47aa73ebeddb378e0fcc71fa771dad884f5859d18848f383e25bf0c692b","attrs":{"colspan":1,"column":"z16p4vm","role":"data","rowspan":1},"fidelity":"F1","id":"kpk13yn","kind":"cell","match_hash":"277fc47aa73ebeddb378e0fcc71fa771dad884f5859d18848f383e25bf0c692b","node_hash":"6638c020e7b6be3738823e2889a4e63d5b0be4968e6482328c1e6964905c0739","ord":2,"own_hash":"34cb7ba7deb3104d7a154ddf51fdfebbb54b8cf5664547f113c700996d9b1d50","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"277fc47aa73ebeddb378e0fcc71fa771dad884f5859d18848f383e25bf0c692b","withheld":true} +{"align_key":"082ddf5b66d3e2cc3f699c7a5de6a6c447ebc5bf1ac851a5c7ac021957b92a26","attrs":{"colspan":1,"column":"egq2j2a","role":"data","rowspan":1},"fidelity":"F1","id":"hw8fx4r","kind":"cell","match_hash":"082ddf5b66d3e2cc3f699c7a5de6a6c447ebc5bf1ac851a5c7ac021957b92a26","node_hash":"69e81bb634e2b6a039a6dbbe681f847c8bb0202675bd7f3bf1c5ee418297b712","ord":3,"own_hash":"010e3845df5ffc2c236fb48251a1564e0449ed9a1006199d2c619b55f83226a7","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"082ddf5b66d3e2cc3f699c7a5de6a6c447ebc5bf1ac851a5c7ac021957b92a26","withheld":true} +{"align_key":"cbcb31f00106d632d678f653d2befc6ada85a099891a8abe28b3a88d04fa8dcb","attrs":{"colspan":1,"column":"my9ahda","role":"data","rowspan":1},"fidelity":"F1","id":"rr9wvsy","kind":"cell","match_hash":"cbcb31f00106d632d678f653d2befc6ada85a099891a8abe28b3a88d04fa8dcb","node_hash":"b6795d41e26086f9c93c3b89185fe24f79895f49ffc35c62c6ec9a04743f4d73","ord":4,"own_hash":"a0475a22e2bf1629bfa1e497a8e9e219820ea94a3b83aa46a2a7a518cd2002a4","parent":"zhe4g0k","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"cbcb31f00106d632d678f653d2befc6ada85a099891a8abe28b3a88d04fa8dcb","withheld":true} +{"align_key":"2ae24e81d93421f14986b4784ba49d86fb12510de0b27e96eea9b590074329ce","attrs":{"header_path":["hwxm8de","t6gjpee"]},"id":"fbg2mwq","kind":"row","match_hash":"91236b2e4d26eed27e3c517a153887c32f321c8da636c47a24841690fd070ec4","node_hash":"9c670772237754ac8251f61443b8f7262d50392e46ed0edebc80452acc783410","ord":2,"own_hash":"c14e86865b4d8b396d94c6b195daf29936dc6a7f6c243eda677b64ea3f9e070a","parent":"tk5p46c","text_hash":"91236b2e4d26eed27e3c517a153887c32f321c8da636c47a24841690fd070ec4"} +{"align_key":"974f2a3d89c8ed1c268639ae351f4347e9c9fa6b5c1aed0ade0589dd869fc801","attrs":{"colspan":1,"column":"vphmyzz","role":"row-header","rowspan":1},"fidelity":"F1","id":"t6gjpee","kind":"cell","match_hash":"55a2e817c13ed9765b396def6fd9ca1096323fb3b5bc0c444e37bbdb915a079f","node_hash":"3249d995d2413a5bf68d99c50dcf48df9c85c32fdb4e237f85ff6a1a102b5d51","ord":0,"own_hash":"28b82b588e06f177447ccf5de085d1afe382c0025f4beefb21ddf1660502e883","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"55a2e817c13ed9765b396def6fd9ca1096323fb3b5bc0c444e37bbdb915a079f","withheld":true} +{"align_key":"99baed178e147af160906d3277e2573a7c20d0deb0faf6ac09a996e0f9c43379","attrs":{"colspan":1,"column":"kp6grmd","role":"data","rowspan":1},"fidelity":"F1","id":"kw2fb3v","kind":"cell","match_hash":"99baed178e147af160906d3277e2573a7c20d0deb0faf6ac09a996e0f9c43379","node_hash":"d0cc08acba3e5f73451d4bdbc52a9e56359dc3593ac45fc2849bf35470b22cf3","ord":1,"own_hash":"512a1a33fab79d8bbaab0e42da88cefd6b59790f8c7328ed4c7ea535e9c60646","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"99baed178e147af160906d3277e2573a7c20d0deb0faf6ac09a996e0f9c43379","withheld":true} +{"align_key":"7d1b43e12c7f140959922e1eec95e8c5827632a6e67d73c4cfcdbf505ca95c0c","attrs":{"colspan":1,"column":"z16p4vm","role":"data","rowspan":1},"fidelity":"F1","id":"e0n07n0","kind":"cell","match_hash":"7d1b43e12c7f140959922e1eec95e8c5827632a6e67d73c4cfcdbf505ca95c0c","node_hash":"faef10dbe10eb9a022112b1e8ecaaaad5060fc984e6680ac79e137a96450e6e4","ord":2,"own_hash":"16630d1d02811f3e277ec7bb2c66d8b992711bed437f4d1fbc0f86513ac342f7","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"7d1b43e12c7f140959922e1eec95e8c5827632a6e67d73c4cfcdbf505ca95c0c","withheld":true} +{"align_key":"826676b6dfae525b01e453d01b5f93e4923db49a2628a433e0a484a378fd411e","attrs":{"colspan":1,"column":"egq2j2a","role":"data","rowspan":1},"fidelity":"F1","id":"gy4avx6","kind":"cell","match_hash":"826676b6dfae525b01e453d01b5f93e4923db49a2628a433e0a484a378fd411e","node_hash":"484c9763daf0d5e316a632dbe691433fba9d333ff8f0a329910060760e94bb3d","ord":3,"own_hash":"024e463f8903d3b98d1c16c41ed425f623c7b61d6b3883d5b58ad0cace469711","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"826676b6dfae525b01e453d01b5f93e4923db49a2628a433e0a484a378fd411e","withheld":true} +{"align_key":"86a322f595c37c519980a38471c7cd9f56945d6216a918440650edad83e1a241","attrs":{"colspan":1,"column":"my9ahda","role":"data","rowspan":1},"fidelity":"F1","id":"ezb1n33","kind":"cell","match_hash":"86a322f595c37c519980a38471c7cd9f56945d6216a918440650edad83e1a241","node_hash":"6dc247dd4c348b60a5cfa4d2b47a986a8042726f101a9b10bb25e1a8dd35f158","ord":4,"own_hash":"58aede3217b01ed496c63a56d42902cf20438e45be3681f85fe9a4bae63da9ab","parent":"fbg2mwq","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"86a322f595c37c519980a38471c7cd9f56945d6216a918440650edad83e1a241","withheld":true} +{"align_key":"c38dd8bec28759d5335b21144e911a28d2f55b6385b2cd42054a2ba2f75eda8e","attrs":{"header_path":["hwxm8de","j67ec9p"]},"id":"j0x5twd","kind":"row","match_hash":"de98690f51e23b74adc25f0b45dc3cce01dbf1e9f1764f3ba14910890e33d9df","node_hash":"884b5b6b1d118fc7788d99390e790faf4f0020f75fb6a639319aacaf2ed3be39","ord":3,"own_hash":"c14e86865b4d8b396d94c6b195daf29936dc6a7f6c243eda677b64ea3f9e070a","parent":"tk5p46c","text_hash":"de98690f51e23b74adc25f0b45dc3cce01dbf1e9f1764f3ba14910890e33d9df"} +{"align_key":"34f35723ac187b148f88cf7632eea4b2cd4285ff94aad8dda1d442c5e5ee237f","attrs":{"colspan":1,"column":"vphmyzz","role":"row-header","rowspan":1},"fidelity":"F1","id":"j67ec9p","kind":"cell","match_hash":"b92adb81e3b67ad07c476de82e9378cf41a8fba1442fa8b893962b117ac2e058","node_hash":"2553ee5c7793b7051495139c5cba08d15bef52d9e5b913ed3781e65ca8abd831","ord":0,"own_hash":"3e4fcce7186998b8e4e28998b0458e018f55a5ca7073df183f8388107df5817d","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"b92adb81e3b67ad07c476de82e9378cf41a8fba1442fa8b893962b117ac2e058","withheld":true} +{"align_key":"137fe6261d4ef4eae4bb97ecdfa829a6887bd67747f2838b8b120dc80efa7dc8","attrs":{"colspan":1,"column":"kp6grmd","role":"data","rowspan":1},"fidelity":"F1","id":"dm452cm","kind":"cell","match_hash":"137fe6261d4ef4eae4bb97ecdfa829a6887bd67747f2838b8b120dc80efa7dc8","node_hash":"4a46374be2a99647945499edb105c4588b7e7a2c88242c3da05d9f8f22930e8f","ord":1,"own_hash":"4f525268f21cfed438bbd5320a9b26b549fde7e10227f40e76645080d034d288","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"137fe6261d4ef4eae4bb97ecdfa829a6887bd67747f2838b8b120dc80efa7dc8","withheld":true} +{"align_key":"43fd2f1c22b3dfc7e3b540a202f52df9c26dd75459b8f9dfe5dd7d74c03fe03a","attrs":{"colspan":1,"column":"z16p4vm","role":"data","rowspan":1},"fidelity":"F1","id":"t3dsc22","kind":"cell","match_hash":"43fd2f1c22b3dfc7e3b540a202f52df9c26dd75459b8f9dfe5dd7d74c03fe03a","node_hash":"2dfff060af856bf8d834a2b1fc6483536eecdd2e27a569fe2916b450ee2201e6","ord":2,"own_hash":"4454bdf48f43e8331c25b6b89eef8927a3ec7fea91153ef2095e8d5b8e822aa2","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"43fd2f1c22b3dfc7e3b540a202f52df9c26dd75459b8f9dfe5dd7d74c03fe03a","withheld":true} +{"align_key":"51596c6b3a0ef682aa95d6a624e81ea347c77ec9b02a502c35e71c5c2d7b20bb","attrs":{"colspan":1,"column":"egq2j2a","role":"data","rowspan":1},"fidelity":"F1","id":"mkakqg3","kind":"cell","match_hash":"51596c6b3a0ef682aa95d6a624e81ea347c77ec9b02a502c35e71c5c2d7b20bb","node_hash":"c8788bfc7c805e90a6592426c68411be57374a30e34d2d26dc8f7d62c5b472f2","ord":3,"own_hash":"b7897229f83fee9174a6dbd64810ed544e120b4c37ce94a0efbb976d46494fc0","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"51596c6b3a0ef682aa95d6a624e81ea347c77ec9b02a502c35e71c5c2d7b20bb","withheld":true} +{"align_key":"e3981b5b196b0b58dca390b46698520f1ba2210b3070e6c2efe2a718db1fb710","attrs":{"colspan":1,"column":"my9ahda","role":"data","rowspan":1},"fidelity":"F1","id":"ba6xp29","kind":"cell","match_hash":"e3981b5b196b0b58dca390b46698520f1ba2210b3070e6c2efe2a718db1fb710","node_hash":"7ac8dc2920a0dfa9fa6226b3e09f1f3d12daeb69b8c1dfab511d54d49f11c4d9","ord":4,"own_hash":"5f6539afd9d23073b2ea0c5f801ca9fc71fbe88c0b673aaa49a2709a501386d7","parent":"j0x5twd","prov":{"backend":"docling (illustrative)","witnesses":["qptsanv"]},"text_hash":"e3981b5b196b0b58dca390b46698520f1ba2210b3070e6c2efe2a718db1fb710","withheld":true} +{"align_key":"35e9f434665be894a225284b4d0d885654d25aedf08294825d1b76907b75a672","id":"ahxcgqa","kind":"table-note","match_hash":"a900cf7167a2ad6d9e2f58c7570ec8511d4c1492d4c7d0eda9bddb9ee0201d18","node_hash":"603da0a3034de1fb124c9964e1c85ec08f1000e96b20c3897dfb7370ad16c0b4","ord":3,"own_hash":"13c64919791af4c88c246e5c9b6e2d4e08a3439f2b148a5b4a256b42cc2dc89d","parent":"gm5z4rx","text_hash":"a900cf7167a2ad6d9e2f58c7570ec8511d4c1492d4c7d0eda9bddb9ee0201d18"} +{"align_key":"35e9f434665be894a225284b4d0d885654d25aedf08294825d1b76907b75a672","fidelity":"F2","id":"bn2ef3e","kind":"sentence","match_hash":"a900cf7167a2ad6d9e2f58c7570ec8511d4c1492d4c7d0eda9bddb9ee0201d18","node_hash":"c56f3db4fc673c7ebfdf91732fd34fe10a6b366f7ee7b5f3055d414fffd4a0ae","ord":0,"own_hash":"6cc40c400bf1e9021de44df93d2625bd58919cf4bd73d92e46a545fa0efae4a2","parent":"ahxcgqa","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"a900cf7167a2ad6d9e2f58c7570ec8511d4c1492d4c7d0eda9bddb9ee0201d18","withheld":true} +{"align_key":"7ec1584c022460adc4cd678911d05215d17eb903cec99bbaa3017b6d1cf39065","id":"jmdabra","kind":"back","match_hash":"1d9bd9c89067494eca69286aca7deaa413a2717fa706d34c90e7eaef11fb8bf5","node_hash":"e2615256a87805b000c61f60e8e72010cf6f34619845c43479d5f106c3d95f75","ord":3,"own_hash":"3563f8a3c3f6f2f6e63d39877ef5ea64e2a597f719fbcab5abab127a1655d133","parent":"ya7x597","text_hash":"558a318476c516b1dc400894cc8be6e112b174063eaffb3e23fa8cad73543512"} +{"align_key":"7ec1584c022460adc4cd678911d05215d17eb903cec99bbaa3017b6d1cf39065","id":"m9ywq9e","kind":"references","match_hash":"1d9bd9c89067494eca69286aca7deaa413a2717fa706d34c90e7eaef11fb8bf5","node_hash":"552d6c412bdc29d3103cea74439b5668a5736f0d5ad1be92d3b576f95984620d","ord":0,"own_hash":"b1cda0e3e3e4a636ce64cc68401738a66304e4f7e9bdf98549d8a7b926ce635d","parent":"jmdabra","text_hash":"558a318476c516b1dc400894cc8be6e112b174063eaffb3e23fa8cad73543512"} +{"align_key":"54e1fa11397e8dbf6bb06d6321142db9e8f2a9c7357666545a8ffa1940396a5c","fidelity":"F2","id":"zmyqtxs","kind":"reference","label":"1","match_hash":"c8d11b02f745adb0f3fb4dd7343487c4b00cac7ff93bb250f6923919bc826366","node_hash":"6a85c1af0830b0fd5a50c1974029bd738cfbb0a408362e4f16774a9620d5a976","ord":0,"own_hash":"4404e35914088b5a08f94137aa6fc4a9d7fb5ee60266b8ad3a6426738211f5e9","parent":"m9ywq9e","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"4ca0d559ff4af786781bb66a0d0fd7fd6258733cba67eba25e1d952ea305b795","withheld":true} +{"align_key":"57d76803ae8032cdbcc1af328e8e7828be0544c0c6a16fa3a5d189ad35bdc5ee","fidelity":"F2","id":"b3g86a4","kind":"reference","label":"2","match_hash":"2946d22dfab55f8c9b9873e969f854aeb971d4fb86d44307f7a0a0a5b145aae8","node_hash":"2284a1f49e8fb21920dfe9e4f9aac853bb1bf23a4a646294e0b9a21398057cbf","ord":1,"own_hash":"57d8136e4c75c5de396fcca60fb33867b521ca0446f39a5e3f013d6c1400cfe7","parent":"m9ywq9e","prov":{"backend":"docling (illustrative)","corroborated_by":["qptsanv"],"witnesses":["qptsanv"]},"text_hash":"4fa42dcdde3e18856234dea703a429adb87ba449bae3250eeb49efea59d43935","withheld":true} diff --git a/fixtures/packages/hale2026harmonic.checks-only/provenance.json b/fixtures/packages/hale2026harmonic.checks-only/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/packages/hale2026harmonic.checks-only/provenance.json +++ b/fixtures/packages/hale2026harmonic.checks-only/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/packages/hale2026harmonic/MANIFEST.json b/fixtures/packages/hale2026harmonic/MANIFEST.json index bf1da05..b5a59d9 100644 --- a/fixtures/packages/hale2026harmonic/MANIFEST.json +++ b/fixtures/packages/hale2026harmonic/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"assets/586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f.png","present":false,"sha256":"586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f","size":18213},{"path":"assets/a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75.png","sha256":"a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75","size":73},{"path":"corrections.jsonl","sha256":"6d72d6629c7da952c17af944a90e266f5be1d0540f2c82c207fea57244aa3bee","size":8310},{"path":"datasets/ds-hale-bond-params/anchors.jsonl","sha256":"f45d4dd993aeaa741d7d6a12eb1817e5c975ccec2a1527da13457b4fec0bf1cc","size":5986},{"path":"datasets/ds-hale-bond-params/data.csv","sha256":"dbde72e4526e469e1535b87272eb50683160b2fe7c40b7f064e6592341f754a8","size":206},{"path":"datasets/ds-hale-bond-params/datapackage.json","sha256":"d8bbf8bd7c1b0207ada817d10580e835bda3a8691ad3e14fc1910519f4341974","size":574},{"path":"derived/mathml.jsonl","sha256":"a1aa1bad2eeea181f85670ad12aff89f95b703b6d28c092e2aad4c74e3d3b597","size":348},{"path":"document.json","sha256":"db825f861803d1c475e49978c95e98aa11a8085e47371348e9e88969f612e025","size":979},{"path":"ids.jsonl","sha256":"665b127abf3d7ad20631aa2281d66cea0076cd68e77fc8a5921bc310d295a489","size":852},{"path":"locations.jsonl","sha256":"2c085435b753f9f586d29790d65cc9e61470f0ae661591480f528193dcd91a04","size":7396},{"path":"nodes.jsonl","sha256":"26f94d985bf65825c33cef53a3952b4177de203f6829073e76eea19ee3d0d37c","size":45649},{"path":"pages.jsonl","sha256":"948177c6b7e5e361ac1da0ecff6b52406d3513f14d58cd27cd84f17e6f1c054e","size":438},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"2d4e11512d055abbd6953a803f6498ffd3a0bfdde3fad8f9e97e700f4c6d8ef4","size":13075},{"path":"references.jsonl","sha256":"09875f7f7205036b2cf4fb5a889dcecc686faf4b1dc2c4e129b7017abbc9ce3d","size":567},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"99ae654df4fb461a424bb51edd476a89041182c7df9c98653a81b78031f92ada","size":1006}],"format":"scienting-package/1","key":"hale2026harmonic"} +{"doc":"scienting-doc/1","files":[{"path":"assets/586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f.png","present":false,"sha256":"586f92512b294a1c325bfc16207771fb9acc7bb67bb206f25a429a055134056f","size":18213},{"path":"assets/a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75.png","sha256":"a18e1eb7f434c85ee180399dc55d2ee78c5ceb915c4a004c5dd0e490399d4c75","size":73},{"path":"corrections.jsonl","sha256":"6d72d6629c7da952c17af944a90e266f5be1d0540f2c82c207fea57244aa3bee","size":8310},{"path":"datasets/ds-hale-bond-params/anchors.jsonl","sha256":"f45d4dd993aeaa741d7d6a12eb1817e5c975ccec2a1527da13457b4fec0bf1cc","size":5986},{"path":"datasets/ds-hale-bond-params/data.csv","sha256":"dbde72e4526e469e1535b87272eb50683160b2fe7c40b7f064e6592341f754a8","size":206},{"path":"datasets/ds-hale-bond-params/datapackage.json","sha256":"d8bbf8bd7c1b0207ada817d10580e835bda3a8691ad3e14fc1910519f4341974","size":574},{"path":"derived/mathml.jsonl","sha256":"a1aa1bad2eeea181f85670ad12aff89f95b703b6d28c092e2aad4c74e3d3b597","size":348},{"path":"document.json","sha256":"db825f861803d1c475e49978c95e98aa11a8085e47371348e9e88969f612e025","size":979},{"path":"ids.jsonl","sha256":"665b127abf3d7ad20631aa2281d66cea0076cd68e77fc8a5921bc310d295a489","size":852},{"path":"locations.jsonl","sha256":"2c085435b753f9f586d29790d65cc9e61470f0ae661591480f528193dcd91a04","size":7396},{"path":"nodes.jsonl","sha256":"26f94d985bf65825c33cef53a3952b4177de203f6829073e76eea19ee3d0d37c","size":45649},{"path":"pages.jsonl","sha256":"948177c6b7e5e361ac1da0ecff6b52406d3513f14d58cd27cd84f17e6f1c054e","size":438},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"7aef8be974b28b1fd67af19929b51c0cbcca7fb0a68489de13d3272133e2e09a","size":13075},{"path":"references.jsonl","sha256":"09875f7f7205036b2cf4fb5a889dcecc686faf4b1dc2c4e129b7017abbc9ce3d","size":567},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"99ae654df4fb461a424bb51edd476a89041182c7df9c98653a81b78031f92ada","size":1006}],"format":"scienting-package/1","key":"hale2026harmonic"} diff --git a/fixtures/packages/hale2026harmonic/provenance.json b/fixtures/packages/hale2026harmonic/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/packages/hale2026harmonic/provenance.json +++ b/fixtures/packages/hale2026harmonic/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/packages/hale2026harmonic/receipts.jsonl b/fixtures/packages/hale2026harmonic/receipts.jsonl index def49dc..d16cb08 100644 --- a/fixtures/packages/hale2026harmonic/receipts.jsonl +++ b/fixtures/packages/hale2026harmonic/receipts.jsonl @@ -1,8 +1,8 @@ -{"at":"2026-10-01T16:00:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"c5cx7n4tga6y9","level":"F3","nodes":[["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["nkm3xn5","2fd1e9e445ae29e3a35d032a41561cc164003fc3d146d93812da10e5f4022f86"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"]],"rev":0,"root":"aed196d7a35a72c8bf7d998b18604a476fc52115f54620f5bc3799953facc9a0","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"85Yj61LRnPchGhd9dOnVhKpKvSDuUjPDKtMd5vkfNIbz9KjOTqTweKMEBeoitw55Te0WQSxa2+Pvv4H6EllMCA=="}} -{"at":"2026-10-11T15:02:11Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"dm452cm","sha256":"a6c7fc9f20c6a78160e77e2ab0154a64bec4d903b5fd1d2d99b5880591903872"},{"kind":"crop","node":"e0n07n0","sha256":"ae161916f2ff84503386df9733a7c878fe84015c17cfd36d5f9bce3539fb849b"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"ezb1n33","sha256":"638e1b8704af8aa5dfe1839c853a8f7ba0d8fa97fd2fdcbce2212f08bbdc0a91"},{"kind":"crop","node":"f929eq9","sha256":"cd6aaea1755038f67b5c0ccbdd962defba1eb35105cceb602b5cdbc3c215f7f2"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"h5psthj","sha256":"15efd08d97b3179177450b8dcbe3a5f409ab2b69264feaf4e683ecedb5f190b9"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"mkakqg3","sha256":"711a38b76111a51d10dfa95540ec9d532af4f747c579e0ce334ddb9f2dd6245e"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"},{"kind":"crop","node":"t6gjpee","sha256":"9947acdb70078a8d1fdf2ce9b654cce2eb5d20745f35370985b809e1b931de44"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"eqgbbpwb6725v","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["dm452cm","3bf0f8ecfaeabf8546ecfac5ff88a5083d40b39fbc9b7d23c57070a15276631e"],["e0n07n0","6ebc7eb98564471c9fabacf60e15bbc03ee019fa3a806731b8502db326a24f6c"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["ezb1n33","bc58a669d6c2dd62e34a8067482e99274365b7a9b640feb4e40f049cd4aa65f2"],["f929eq9","cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["h5psthj","3ef4e8338041687f926025a210859cf7f1686ace4b92bc4b5a1f96e03b55fb03"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["mkakqg3","3174ecb5b11912a58c22f7069747d93753fdf0c88684ee7264dc2c0cf2ab8fe5"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"],["t6gjpee","c63c1c3c34edbed309ddb56ded1c9dd788c5c49946e8af97b102a25ef1d96018"]],"rev":12,"root":"d2a524dee5ef347b313f1714a47f7bafd83f554266596e1ed4b3e52093642216","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"uNAcpyRK7e/7y6YIqBRxFQmpJ00WfFJKwSziKbuGrmR4y5t/H4l0C0X5ATVkySSwJ8gc6b0XIJ/BIgN+1ZJ1AA=="}} -{"at":"2026-10-11T16:30:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"mbtjsqv","sha256":"d0174df8972e94270655ef43c0eb55f5ebca505d76a750954c4ab5497c9d5972"},{"kind":"crop","node":"r1gacps","sha256":"f0a0b62d5ac7389403117b3bb43afe86b667ab5da752ed5ba567d6afe8c1ed6c"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"zaxky8c1y12tc","level":"F3","nodes":[["mbtjsqv","97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc"],["r1gacps","9eb77a1bebf1b2752a14c38cc8de8fe1113a6ccfd8ba77fa26d8818289867027"]],"rev":12,"root":"23e790eb479ec58ff09dd9089fd40105a96b0133f11f0742007f94c4aea49dbd","scope":"section:bzqvbhd","signature":{"key":"ana","scheme":"ed25519","value":"1nXqGKkthg2P5UPDQjRwc3ydhiwqCqmxjszc/SmOSEM2LDCpKLzGTsI5zyeXkjwreKmxVt3Tu7DTtzJYviU0DA=="}} -{"at":"2026-10-11T17:00:00Z","by":"cara","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"eajq93t","sha256":"a6785ec0618d88b9f8110c20baee0082552bdfe426c553061516e3731e93a4f6"},{"kind":"crop","node":"gqs1dcb","sha256":"309d699fd95e58c1141753dc5dec012b7f2edb008e4dad7784901ca59da07e2b"},{"kind":"crop","node":"ntr324r","sha256":"37975c8851ae00b0b943238e82e03f645d2611540ab918abc3deff186d1a952c"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"adtrpq41np7sd","level":"F3","nodes":[["eajq93t","42b1de7852cdc68730984fff789fe248ecd5b43198c0e7d671931ff3fe561dc3"],["gqs1dcb","5e7362eb5c7cd2db425e557982083a51c2607521b6b1f73d79d98956616965df"],["ntr324r","cda412d48dbcf59eaaa41c8698571f5d1809a7332195d3879da139cedcd007d9"]],"rev":12,"root":"34b3c1e0ac2db1b406fad92b43385dd4423abf456a8af62da2b0feff355cf482","scope":"page:2","signature":{"key":"cara","scheme":"ed25519","value":"emXi/sSfJEGBXALZfc9tBmnwPAQSvZzjmmGf0f4dL1S/qP+QKlWXhrqwwxFb8T3LpfFC6yf/OXR/bEksaYidAA=="}} -{"at":"2026-10-11T17:20:00Z","by":"cara","format":"scienting-revocation/1","id":"q0yg0w6ygwwxh","reason":"Signed against the crops of another paper.","receipt":"adtrpq41np7sd","signature":{"key":"cara","scheme":"ed25519","value":"/Rv3aa+l3yksk4RE1t3uw8g9586/fsQr4x52fPF5ZoYw9V+2HOYLc2jtjok50pQW1unWdmnWLnIJrMnYkhO/Dw=="}} -{"at":"2026-10-11T18:00:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ed602fy","sha256":"7fa2a1c84040091116eedf97e40a0ea98021274acce50aca56948bb72ec9f03e"},{"kind":"crop","node":"nmm4md0","sha256":"522532291b05cb572194f2b2988b2787ea079a47d797b231d67f79c8144679f1"},{"kind":"crop","node":"yq0agq9","sha256":"ea20517517c397b7b414915f215576341c9e86815de4c9f6bd16e2a06185376a"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"gena76nkb6cnc","level":"F3","nodes":[["ed602fy","e2f0b1d093c2f38f329c16edae255aed6e913d489e730a9d4857a3c3b5040f63"],["nmm4md0","9f9c9a412cd08d0634daa3f23c63f5125c1270c13834c45c045c1a9a7452af86"],["yq0agq9","9a1c438b0f413d63b7e9f1ed7037cc6ad1665efd335baee2ef31d3d232c79552"]],"rev":12,"root":"309a04ca2376ef8d9da64e1f309dcb160fb44dc8f0233cbce3af96bf67a38fff","scope":"targeted:captions","signature":{"key":"ana","scheme":"ed25519","value":"ASR5VE0EhbSBnN/SX1/DNKlVF3IkkrHSBHryFodpRjc2ZTOJZFuiYlPSPc0Agfw0oeoREtpbMjZl6iLmHKzvCA=="}} -{"at":"2026-10-12T09:00:00Z","by":"ben","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"}],"format":"scienting-receipt/1","id":"h6yr2ddx6d3ef","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"]],"qa":{"errors":[],"key":"ben-spot","minimum":10,"of":"eqgbbpwb6725v","rate":"0.05","sample":["ba6xp29","cq77erb","hw8fx4r","j3d4w5v","k3fqnvy","kw2fb3v","nkm3xn5","qn08tj9","sam8g7e","t3dsc22"],"seed":"7+dEvJY3lv+/v1h9qA91BrylG8gg4zOUygf5rAic7w1qSCzdbsugd8DjnzeuHr9JXlWC76FxqGhrGPW+IaKsAA=="},"rev":12,"root":"14f2bf5b48b5f2a666ed9e0c46f40365a6e10c7b3df76509ab8412a5e6843662","scope":"qa:eqgbbpwb6725v","signature":{"key":"ben","scheme":"ed25519","value":"XAfqb2UVmcfD4ni2cU3FJjJap/nKTyggVZ9Bl6hI9cB7JHGE1ZwgYVCTsMKdqFSVcNiraHvEINQFlmVP8w0YDw=="}} -{"at":"2026-10-12T09:30:00Z","by":"ben","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ed602fy","sha256":"7fa2a1c84040091116eedf97e40a0ea98021274acce50aca56948bb72ec9f03e"},{"kind":"crop","node":"nmm4md0","sha256":"522532291b05cb572194f2b2988b2787ea079a47d797b231d67f79c8144679f1"},{"kind":"crop","node":"yq0agq9","sha256":"ea20517517c397b7b414915f215576341c9e86815de4c9f6bd16e2a06185376a"}],"format":"scienting-receipt/1","id":"tejzs01eqn2ym","level":"F3","nodes":[["ed602fy","e2f0b1d093c2f38f329c16edae255aed6e913d489e730a9d4857a3c3b5040f63"],["nmm4md0","9f9c9a412cd08d0634daa3f23c63f5125c1270c13834c45c045c1a9a7452af86"],["yq0agq9","9a1c438b0f413d63b7e9f1ed7037cc6ad1665efd335baee2ef31d3d232c79552"]],"qa":{"errors":[{"kind":"word","node":"nmm4md0","note":"The page prints a period the reading lacks."}],"key":"ben-spot","minimum":10,"of":"gena76nkb6cnc","rate":"0.05","sample":["ed602fy","nmm4md0","yq0agq9"],"seed":"LOD/8zgbnSwaRjGzV4IFoaGrtJwp82sBg6ajU4MKC3zxIsjJSypSkci75dTKYMKmVEwvLVQDDEudSF6rvzB9Ag=="},"rev":12,"root":"309a04ca2376ef8d9da64e1f309dcb160fb44dc8f0233cbce3af96bf67a38fff","scope":"qa:gena76nkb6cnc","signature":{"key":"ben","scheme":"ed25519","value":"PIoW2ttEG+ikjX+3/lsIGj1FBp0HSZmeqkvwRMfqFoxvJLmlRmUP3A3EQ0XQ7RdiSHw89xlu52KK4EyE7shvDg=="}} +{"at":"2026-10-01T16:00:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"c5cx7n4tga6y9","level":"F3","nodes":[["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["nkm3xn5","2fd1e9e445ae29e3a35d032a41561cc164003fc3d146d93812da10e5f4022f86"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"]],"rev":0,"root":"aed196d7a35a72c8bf7d998b18604a476fc52115f54620f5bc3799953facc9a0","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"PqqRphkADgQoEUNBRxkRSuJHRByzpHDEbPQAsus/wjKyhu2iHGEIYxNPUbSm9A4xHEbAgxM1Y7y6VaMmJ6ynBg=="}} +{"at":"2026-10-11T15:02:11Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"dm452cm","sha256":"a6c7fc9f20c6a78160e77e2ab0154a64bec4d903b5fd1d2d99b5880591903872"},{"kind":"crop","node":"e0n07n0","sha256":"ae161916f2ff84503386df9733a7c878fe84015c17cfd36d5f9bce3539fb849b"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"ezb1n33","sha256":"638e1b8704af8aa5dfe1839c853a8f7ba0d8fa97fd2fdcbce2212f08bbdc0a91"},{"kind":"crop","node":"f929eq9","sha256":"cd6aaea1755038f67b5c0ccbdd962defba1eb35105cceb602b5cdbc3c215f7f2"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"h5psthj","sha256":"15efd08d97b3179177450b8dcbe3a5f409ab2b69264feaf4e683ecedb5f190b9"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"mkakqg3","sha256":"711a38b76111a51d10dfa95540ec9d532af4f747c579e0ce334ddb9f2dd6245e"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"},{"kind":"crop","node":"t6gjpee","sha256":"9947acdb70078a8d1fdf2ce9b654cce2eb5d20745f35370985b809e1b931de44"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"eqgbbpwb6725v","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["dm452cm","3bf0f8ecfaeabf8546ecfac5ff88a5083d40b39fbc9b7d23c57070a15276631e"],["e0n07n0","6ebc7eb98564471c9fabacf60e15bbc03ee019fa3a806731b8502db326a24f6c"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["ezb1n33","bc58a669d6c2dd62e34a8067482e99274365b7a9b640feb4e40f049cd4aa65f2"],["f929eq9","cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["h5psthj","3ef4e8338041687f926025a210859cf7f1686ace4b92bc4b5a1f96e03b55fb03"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["mkakqg3","3174ecb5b11912a58c22f7069747d93753fdf0c88684ee7264dc2c0cf2ab8fe5"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"],["t6gjpee","c63c1c3c34edbed309ddb56ded1c9dd788c5c49946e8af97b102a25ef1d96018"]],"rev":12,"root":"d2a524dee5ef347b313f1714a47f7bafd83f554266596e1ed4b3e52093642216","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"+skdLwMCrv5nRTZnnDnTRiOIfInXBSwR0AnF1OmrrJ9ULkEFOY1T0xKPdusxOejLWSKUY+bBXu7+sOgIpHqtBA=="}} +{"at":"2026-10-11T16:30:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"mbtjsqv","sha256":"d0174df8972e94270655ef43c0eb55f5ebca505d76a750954c4ab5497c9d5972"},{"kind":"crop","node":"r1gacps","sha256":"f0a0b62d5ac7389403117b3bb43afe86b667ab5da752ed5ba567d6afe8c1ed6c"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"zaxky8c1y12tc","level":"F3","nodes":[["mbtjsqv","97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc"],["r1gacps","9eb77a1bebf1b2752a14c38cc8de8fe1113a6ccfd8ba77fa26d8818289867027"]],"rev":12,"root":"23e790eb479ec58ff09dd9089fd40105a96b0133f11f0742007f94c4aea49dbd","scope":"section:bzqvbhd","signature":{"key":"ana","scheme":"ed25519","value":"rP4FjP8o/LAi/f2fJRnwx9UgHphRk1z0BTsh06KMh+3GhNEcAeu+AEO+fcXRYuA2NVNOBUmujECcCoABFFGMCQ=="}} +{"at":"2026-10-11T17:00:00Z","by":"cara","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"eajq93t","sha256":"a6785ec0618d88b9f8110c20baee0082552bdfe426c553061516e3731e93a4f6"},{"kind":"crop","node":"gqs1dcb","sha256":"309d699fd95e58c1141753dc5dec012b7f2edb008e4dad7784901ca59da07e2b"},{"kind":"crop","node":"ntr324r","sha256":"37975c8851ae00b0b943238e82e03f645d2611540ab918abc3deff186d1a952c"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"adtrpq41np7sd","level":"F3","nodes":[["eajq93t","42b1de7852cdc68730984fff789fe248ecd5b43198c0e7d671931ff3fe561dc3"],["gqs1dcb","5e7362eb5c7cd2db425e557982083a51c2607521b6b1f73d79d98956616965df"],["ntr324r","cda412d48dbcf59eaaa41c8698571f5d1809a7332195d3879da139cedcd007d9"]],"rev":12,"root":"34b3c1e0ac2db1b406fad92b43385dd4423abf456a8af62da2b0feff355cf482","scope":"page:2","signature":{"key":"cara","scheme":"ed25519","value":"9HAwIUsdhZMe40wn3VKDgAEW49i80soIIue4J8TYCscef7GbMyHnn75kMyfybHtmy2njArDWaYIx6grD3wcWBg=="}} +{"at":"2026-10-11T17:20:00Z","by":"cara","format":"scienting-revocation/1","id":"q0yg0w6ygwwxh","reason":"Signed against the crops of another paper.","receipt":"adtrpq41np7sd","signature":{"key":"cara","scheme":"ed25519","value":"aOaXGvyl5WFT4dRLgmk6zVPiGYf67EzlzPfPhf4rpnzGGHRYNsrOQLmwH8CcFEDq5GOU7YOOzbreOAGcAkMcAw=="}} +{"at":"2026-10-11T18:00:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ed602fy","sha256":"7fa2a1c84040091116eedf97e40a0ea98021274acce50aca56948bb72ec9f03e"},{"kind":"crop","node":"nmm4md0","sha256":"522532291b05cb572194f2b2988b2787ea079a47d797b231d67f79c8144679f1"},{"kind":"crop","node":"yq0agq9","sha256":"ea20517517c397b7b414915f215576341c9e86815de4c9f6bd16e2a06185376a"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"gena76nkb6cnc","level":"F3","nodes":[["ed602fy","e2f0b1d093c2f38f329c16edae255aed6e913d489e730a9d4857a3c3b5040f63"],["nmm4md0","9f9c9a412cd08d0634daa3f23c63f5125c1270c13834c45c045c1a9a7452af86"],["yq0agq9","9a1c438b0f413d63b7e9f1ed7037cc6ad1665efd335baee2ef31d3d232c79552"]],"rev":12,"root":"309a04ca2376ef8d9da64e1f309dcb160fb44dc8f0233cbce3af96bf67a38fff","scope":"targeted:captions","signature":{"key":"ana","scheme":"ed25519","value":"t7IDzsqtndRgtMscfM2mpeDhVlNgc2vtZ8W8U8ULSJm22yoPyeZZrQppzqUvPnrsdzqTTaV8G3oQ/Ue+NFkMDQ=="}} +{"at":"2026-10-12T09:00:00Z","by":"ben","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"}],"format":"scienting-receipt/1","id":"fpq398ykw33jb","level":"F3","nodes":[["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"]],"qa":{"errors":[],"key":"ben-spot","minimum":10,"of":"eqgbbpwb6725v","rate":"0.05","sample":["cq77erb","e4fkseg","gy4avx6","j3d4w5v","j67ec9p","kpk13yn","nkm3xn5","rr9wvsy","sxgcc9h","t3dsc22"],"seed":"KdGMzgR7BtW5a69nqxUeKMgO6qZvqU2oBW1XLx5JqgK0670rnefve0VsqX6kbmvgSmHk04yCj5IVtbCvhjz0CQ=="},"rev":12,"root":"d5a3a45aec6fed17de12a1f03b232d8b29fb9f0a59e4e34d51da6f02b80ae63f","scope":"qa:eqgbbpwb6725v","signature":{"key":"ben","scheme":"ed25519","value":"ApXetM86Jfm02Yga4elCYwhOQaVs8XzDVZTSY6QORsIIwBexNM51szEq8vKDozOesEXbJw1B6rxJwgvH0PduAg=="}} +{"at":"2026-10-12T09:30:00Z","by":"ben","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ed602fy","sha256":"7fa2a1c84040091116eedf97e40a0ea98021274acce50aca56948bb72ec9f03e"},{"kind":"crop","node":"nmm4md0","sha256":"522532291b05cb572194f2b2988b2787ea079a47d797b231d67f79c8144679f1"},{"kind":"crop","node":"yq0agq9","sha256":"ea20517517c397b7b414915f215576341c9e86815de4c9f6bd16e2a06185376a"}],"format":"scienting-receipt/1","id":"ag2hfvjt2ck0w","level":"F3","nodes":[["ed602fy","e2f0b1d093c2f38f329c16edae255aed6e913d489e730a9d4857a3c3b5040f63"],["nmm4md0","9f9c9a412cd08d0634daa3f23c63f5125c1270c13834c45c045c1a9a7452af86"],["yq0agq9","9a1c438b0f413d63b7e9f1ed7037cc6ad1665efd335baee2ef31d3d232c79552"]],"qa":{"errors":[{"kind":"word","node":"nmm4md0","note":"The page prints a period the reading lacks."}],"key":"ben-spot","minimum":10,"of":"gena76nkb6cnc","rate":"0.05","sample":["ed602fy","nmm4md0","yq0agq9"],"seed":"fSGnwRHY4L1kstWBqx6EARpOcXLmowTi8ynX+ZlVMMtJ+4qbEooCNOcuLTqzZ0q2wuJeLWAEKVv1OmdUdNYkBQ=="},"rev":12,"root":"309a04ca2376ef8d9da64e1f309dcb160fb44dc8f0233cbce3af96bf67a38fff","scope":"qa:gena76nkb6cnc","signature":{"key":"ben","scheme":"ed25519","value":"YeMN+CGDBwiAeV+qfwnENs2rCmWApWkZnKLCTwiE7jQyMCw5qGx1JaxWTL1BoKodXCrp01R//bBoeT41XcNmBA=="}} diff --git a/fixtures/packages/hale2026harmonic/roster.json b/fixtures/packages/hale2026harmonic/roster.json index 9437521..7886e39 100644 --- a/fixtures/packages/hale2026harmonic/roster.json +++ b/fixtures/packages/hale2026harmonic/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/packages/okafor2025open/MANIFEST.json b/fixtures/packages/okafor2025open/MANIFEST.json index 097e0c5..f9f3b4c 100644 --- a/fixtures/packages/okafor2025open/MANIFEST.json +++ b/fixtures/packages/okafor2025open/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"e2188bfff9eded02b17ddc4f90ffb56c3f8fc5f1be2d38a03d7ae1c85cb39128","size":935},{"path":"locations.jsonl","sha256":"ce16ce5996a9e9fe9f1024ebc9d8cda5328c041ae214b3c626da10472ae3de10","size":1161},{"path":"nodes.jsonl","sha256":"0fccd6492121fb91ebd1d32487e23ca5b30ad92627e7d3a0801d77549e1a2f94","size":8669},{"path":"pages.jsonl","sha256":"d356f4a78bd2427e750943648c9d37977ac0144ff85bedc013b60d934b1501cf","size":170},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"references.jsonl","sha256":"e7ddfb86d4a079d8a8ad51fc16f1933ef64f5d6ac4244959efa9d06419f1d7d7","size":332},{"path":"witnesses.json","sha256":"7bb40440b8b04d5193600f04ba6452cb4062046652f0f924d60d6b0c5aa86876","size":1901}],"format":"scienting-package/1","key":"okafor2025open"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"e2188bfff9eded02b17ddc4f90ffb56c3f8fc5f1be2d38a03d7ae1c85cb39128","size":935},{"path":"locations.jsonl","sha256":"ce16ce5996a9e9fe9f1024ebc9d8cda5328c041ae214b3c626da10472ae3de10","size":1161},{"path":"nodes.jsonl","sha256":"0fccd6492121fb91ebd1d32487e23ca5b30ad92627e7d3a0801d77549e1a2f94","size":8669},{"path":"pages.jsonl","sha256":"d356f4a78bd2427e750943648c9d37977ac0144ff85bedc013b60d934b1501cf","size":170},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"references.jsonl","sha256":"e7ddfb86d4a079d8a8ad51fc16f1933ef64f5d6ac4244959efa9d06419f1d7d7","size":332},{"path":"witnesses.json","sha256":"7bb40440b8b04d5193600f04ba6452cb4062046652f0f924d60d6b0c5aa86876","size":1901}],"format":"scienting-package/1","key":"okafor2025open"} diff --git a/fixtures/packages/okafor2025open/provenance.json b/fixtures/packages/okafor2025open/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/packages/okafor2025open/provenance.json +++ b/fixtures/packages/okafor2025open/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/packages/smithlab2027charges/MANIFEST.json b/fixtures/packages/smithlab2027charges/MANIFEST.json index 4df663a..5542668 100644 --- a/fixtures/packages/smithlab2027charges/MANIFEST.json +++ b/fixtures/packages/smithlab2027charges/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"ca802f491901cb6c0ea6206b5ab61e05c06524def0182cff0478893823b25acc","size":665},{"path":"nodes.jsonl","sha256":"fd3f856a5dc20e7e6d5114da38d2cfffa35487d856d5221bf00c19195438de2c","size":8290},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"references.jsonl","sha256":"41551252af7b5fef0ba2a22dcc1f4a9512911803f0eda9d5e7c5a9f223fa48c7","size":339},{"path":"witnesses.json","sha256":"badd17f82e6cc4aa8d116d2056d10b868fbf6978fa47947d89404c458b6a532c","size":766}],"format":"scienting-package/1","key":"smithlab2027charges"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"ca802f491901cb6c0ea6206b5ab61e05c06524def0182cff0478893823b25acc","size":665},{"path":"nodes.jsonl","sha256":"fd3f856a5dc20e7e6d5114da38d2cfffa35487d856d5221bf00c19195438de2c","size":8290},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"references.jsonl","sha256":"41551252af7b5fef0ba2a22dcc1f4a9512911803f0eda9d5e7c5a9f223fa48c7","size":339},{"path":"witnesses.json","sha256":"badd17f82e6cc4aa8d116d2056d10b868fbf6978fa47947d89404c458b6a532c","size":766}],"format":"scienting-package/1","key":"smithlab2027charges"} diff --git a/fixtures/packages/smithlab2027charges/provenance.json b/fixtures/packages/smithlab2027charges/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/packages/smithlab2027charges/provenance.json +++ b/fixtures/packages/smithlab2027charges/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/packages/tiny2026example/MANIFEST.json b/fixtures/packages/tiny2026example/MANIFEST.json index d5a1465..6e98899 100644 --- a/fixtures/packages/tiny2026example/MANIFEST.json +++ b/fixtures/packages/tiny2026example/MANIFEST.json @@ -1 +1 @@ -{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"b1af404b3a07d4b102f0a45237285315dc1ff60f243636c22aef3e1c20b46912","size":224},{"path":"receipts.jsonl","sha256":"e6be2c6ff4d1444e2faf75c8c4d03482ceaf49746ea390592928b2b5e3b22237","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"7ee0c38fb4fdfc15d4ffa8139a239c23082dc69f8147c5920a39e8361cc7bbeb","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} +{"doc":"scienting-doc/1","files":[{"path":"document.json","sha256":"20a7d6ba83bf42a87e44f3b3f96bfb16ff545b199d82e54d3c17989e465281df","size":555},{"path":"nodes.jsonl","sha256":"ffeffbf15cc9fe8182a31ef0bac32c1aef8c7a119706ac1e8a55aad218d0622c","size":11295},{"path":"provenance.json","sha256":"4bc7649bf6d3113f6c72b4016713654f57c8f03069632eabd1e6025c05cb9dac","size":226},{"path":"receipts.jsonl","sha256":"3f610039a8f883356201b63c9ad31afee630ebcbc0cc33bfb989a55716db85f0","size":2180},{"path":"references.jsonl","sha256":"bb5445037c28bf5fde215b4b831c29327dec6dd88259e2d53aabb995f2fdb98f","size":60},{"path":"roster.json","sha256":"4a6d29e8968143a4e19f485741c513245df1de77eec4ef9b3047c71db45cda22","size":924},{"path":"witnesses.json","sha256":"83ac4411c2efe65e0f7fc4c9336abbef6977cd32b0f90de029a7f8516afc3e97","size":750}],"format":"scienting-package/1","key":"tiny2026example"} diff --git a/fixtures/packages/tiny2026example/provenance.json b/fixtures/packages/tiny2026example/provenance.json index 08036e4..961e28b 100644 --- a/fixtures/packages/tiny2026example/provenance.json +++ b/fixtures/packages/tiny2026example/provenance.json @@ -1 +1 @@ -{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"manuspec tools/build.py"}],"tools":[{"name":"manuspec tools/build.py","version":"0.1.0"}]} +{"note":"Built by hand for the conformance suite; every reading is synthetic.","stages":[{"processor":"local","stage":"hand","tool":"paperspec tools/build.py"}],"tools":[{"name":"paperspec tools/build.py","version":"0.1.0"}]} diff --git a/fixtures/packages/tiny2026example/receipts.jsonl b/fixtures/packages/tiny2026example/receipts.jsonl index dc3505f..c458530 100644 --- a/fixtures/packages/tiny2026example/receipts.jsonl +++ b/fixtures/packages/tiny2026example/receipts.jsonl @@ -1 +1 @@ -{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"wPOEH5RpoWW9fkNCLWFt6iYfliHMf40SwbQN5kgtGuBBImylXvx1rhFp/jUGJaQj3QjToR/uy8u3a9v3iu5jCA=="}} +{"at":"2026-10-11T12:00:00Z","by":"ana","doc":"tiny2026example","evidence":[{"kind":"crop","node":"cjkdv61","sha256":"6e12bbc22302e7b635b18df516ad91e1a3ba23cc98e303cffd9f04925ca4e21c"},{"kind":"crop","node":"jss11hp","sha256":"09a6be7a365bc435b545392abd5cd35d3d4cfb1954cb8a72e357c2a349b4c7c9"},{"kind":"crop","node":"k69qp1x","sha256":"e136e117a2cceaff1b8133b8d5c9cf079eb902c8adf0de1585bfe1d040bd39f3"},{"kind":"crop","node":"pd32xxr","sha256":"27b56093c27a4356ff2d21dd0e3d944f9ffef1dcec1e9b536341e5a1e67c9965"},{"kind":"crop","node":"qrvfgfb","sha256":"1b702389a8acd28e0a691a1d12f0cfff18cfdc25338018e9d45e670ec7280a39"},{"kind":"crop","node":"tn1vrf0","sha256":"e80437c7d4dd642527dbffd5f221a0b5d3e4fded4f02d901aafb6a77e782ce2c"},{"kind":"crop","node":"v43b2r1","sha256":"3039d88c2df8d0a934de6818297f9f0e3da8b1ab2a20204d77050543ee82a5a7"},{"kind":"crop","node":"w1dkdqd","sha256":"7650611ebd6f085066b2d9c2556faa33cc1389d7fb9ec762d909d3db588eacbf"},{"kind":"crop","node":"whq15cf","sha256":"7e136414636ea5bffe8958b5cf895fb52defa77050e0e444d45bbb0ecbcd84f5"},{"kind":"witness","sha256":"fda3f1e9bb3538cd85dcc42281e00fd045f726652664439ce5a15d8489425b21"}],"format":"scienting-receipt/1","id":"kmxw2ekgx2ek4","level":"F3","nodes":[["cjkdv61","e5934b14bfa48e6849f2902d59934dfa81e86a9866f656a0270d9df2d6226078"],["jss11hp","ec5d51bd0027283d3a6f32dce37228ac9290eba1eae32b12c0d148ae247fbb78"],["k69qp1x","413dfb455f4b2940f62e25f18b4dbafb1ea0dd2378b20b33d3ac18e3221245bf"],["pd32xxr","443539440dca73149ca75276492334ce9a5a6c50070137e8dc7bf414b75a27ab"],["qrvfgfb","a1cc3f2e8226fd3036f8d3d93b810dd6606e1b59f1b0383e8f9f4cdc9b173f56"],["tn1vrf0","ef0f58e83c4f36c7eca0b3380e3f520bb6684a182045296691af46980a3951f6"],["v43b2r1","f5761f338b2878dff39a6ee724a75b13626dd625a0df96cf1cc6f9e8258cb7cc"],["w1dkdqd","71b1af6dd6a56f24cb3b338e0fe99df06b9154ecdf4b391b00b7a7e61e23a8ed"],["whq15cf","caeb3ae57d0821b8ac961c9507debbcda2b118b16cdc010b83a143a782058d57"]],"rev":0,"root":"c8716a570ed36851723b0a8f4caf35e05adce12314315a40355eb5dbded00cc2","scope":"all","signature":{"key":"ana","scheme":"ed25519","value":"Dqfu2XGWhjV7Kfbiuawto7uczFAGERAH7viCOtkYT0+mh2VWI5CgLCcK8athzf/ps4cr++z/Ue1BC9rHn27PDA=="}} diff --git a/fixtures/packages/tiny2026example/roster.json b/fixtures/packages/tiny2026example/roster.json index 9437521..7886e39 100644 --- a/fixtures/packages/tiny2026example/roster.json +++ b/fixtures/packages/tiny2026example/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/records/checklist/receipt.json b/fixtures/records/checklist/receipt.json index 4aa5ba9..6723940 100644 --- a/fixtures/records/checklist/receipt.json +++ b/fixtures/records/checklist/receipt.json @@ -1 +1 @@ -{"at":"2026-10-12T11:30:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"source-file","note":"The exported HTML.","sha256":"abfea8185834a5da9aeeb19a530e3444092c5d7887306dad93168609f848d1c0"}],"format":"scienting-receipt/1","id":"jv2mdcw0kvs29","level":"F3","nodes":[],"records":[["checklist","svbx4658yvm4c","0fdafa43151edd08cb470e3db528e134850d342c5e071e6d17bc9a41f5898345"]],"rev":12,"root":"e882efbe76a7e35938f0f8e087b9a1cf544f5151b7abafc67e85dbf155329cd4","scope":"targeted:checklist","signature":{"key":"ana","scheme":"ed25519","value":"bZ8LY9BzrImifD4Q5F6fUYooMs8229gDNhtVy/JNilnrRr6Wmx86TbuBMQ53aIe1q85NR75LQxkEdT190AVrBw=="}} +{"at":"2026-10-12T11:30:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"source-file","note":"The exported HTML.","sha256":"abfea8185834a5da9aeeb19a530e3444092c5d7887306dad93168609f848d1c0"}],"format":"scienting-receipt/1","id":"jv2mdcw0kvs29","level":"F3","nodes":[],"records":[["checklist","svbx4658yvm4c","0fdafa43151edd08cb470e3db528e134850d342c5e071e6d17bc9a41f5898345"]],"rev":12,"root":"e882efbe76a7e35938f0f8e087b9a1cf544f5151b7abafc67e85dbf155329cd4","scope":"targeted:checklist","signature":{"key":"ana","scheme":"ed25519","value":"Xnt7xmt2Xy1xtCn55/IvAfWvIM+NygQY1YDqGAP+APPrzjIym9ddsFWqECw7N9mJIYR2bmJuXlVqdpydnr8CAA=="}} diff --git a/fixtures/records/digitization-confirmation.json b/fixtures/records/digitization-confirmation.json index bbdd87f..48b3762 100644 --- a/fixtures/records/digitization-confirmation.json +++ b/fixtures/records/digitization-confirmation.json @@ -1 +1 @@ -{"at":"2026-10-11T20:00:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"b2wgyq2","sha256":"41859f0385275a8386eef230d92fc34a379549dd475f27396dc6e8a94ca0fc54"}],"format":"scienting-receipt/1","id":"zkebjgvzja0x1","level":"F3","nodes":[],"records":[["digitization","qrqsy3x6bznxw","9892eb87d908f81475fab42150e0bd84dbfbf0b2cbfe399fbcb39458791cac92"]],"rev":12,"root":"08849d6580a6c8eeec5d10026b2dbdf9ed64a40fe03cfe16849f846fbf49fabb","scope":"targeted:digitization","signature":{"key":"ana","scheme":"ed25519","value":"+Y5rhheeqzOHgrMQ5TPRuYh4qWLrVjuHFrnbjqmindYoP/Y9/+wDO1ydrEDPGg7LuDykblgxjcqEeWJUhMbZBA=="}} +{"at":"2026-10-11T20:00:00Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"b2wgyq2","sha256":"41859f0385275a8386eef230d92fc34a379549dd475f27396dc6e8a94ca0fc54"}],"format":"scienting-receipt/1","id":"zkebjgvzja0x1","level":"F3","nodes":[],"records":[["digitization","qrqsy3x6bznxw","9892eb87d908f81475fab42150e0bd84dbfbf0b2cbfe399fbcb39458791cac92"]],"rev":12,"root":"08849d6580a6c8eeec5d10026b2dbdf9ed64a40fe03cfe16849f846fbf49fabb","scope":"targeted:digitization","signature":{"key":"ana","scheme":"ed25519","value":"tzrVLqyutIThRlraYBE8+FQR7gAOupeOFaN++lV6DhY6akEy8aeaU/mzU2U4yJhOLN8NFqXLVM3EsUc0ucf6BA=="}} diff --git a/fixtures/records/grades/anchor-hit.json b/fixtures/records/grades/anchor-hit.json index 765d61f..75c9e77 100644 --- a/fixtures/records/grades/anchor-hit.json +++ b/fixtures/records/grades/anchor-hit.json @@ -1 +1 @@ -{"exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"That is the cell.","max":"1","points":"1"}],"max":"1","score":"1","submission":"h4camq2b6fa0e"} +{"exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"That is the cell.","max":"1","points":"1"}],"max":"1","score":"1","submission":"b479pkvhyafdh"} diff --git a/fixtures/records/grades/anchor-miss.json b/fixtures/records/grades/anchor-miss.json index beacf5e..edf29d2 100644 --- a/fixtures/records/grades/anchor-miss.json +++ b/fixtures/records/grades/anchor-miss.json @@ -1 +1 @@ -{"exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"Look in Table 1, row CT–CT.","max":"1","points":"0"}],"max":"1","score":"0","submission":"bjgg8jyxh42w9"} +{"exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"Look in Table 1, row CT–CT.","max":"1","points":"0"}],"max":"1","score":"0","submission":"zw21e9386dtp2"} diff --git a/fixtures/records/grades/check-overlap.json b/fixtures/records/grades/check-overlap.json index 3fbe002..e8b49f4 100644 --- a/fixtures/records/grades/check-overlap.json +++ b/fixtures/records/grades/check-overlap.json @@ -1 +1 @@ -{"exercise":"urn:scienting:annotation:smithlab/y228zv031s285","format":"scienting-grade/1","items":[{"element":"verdict","feedback":"","max":"1","points":"1"},{"element":"element:0","feedback":"","max":"1","points":"1"}],"max":"2","score":"2","submission":"ncf5gq0x1xny5"} +{"exercise":"urn:scienting:annotation:smithlab/shn6geqn0rhvs","format":"scienting-grade/1","items":[{"element":"verdict","feedback":"","max":"1","points":"1"},{"element":"element:0","feedback":"","max":"1","points":"1"}],"max":"2","score":"2","submission":"mk28stafpq7sp"} diff --git a/fixtures/records/layer/annotations.jsonl b/fixtures/records/layer/annotations.jsonl index 9e38d63..abf8172 100644 --- a/fixtures/records/layer/annotations.jsonl +++ b/fixtures/records/layer/annotations.jsonl @@ -1,10 +1,10 @@ -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"audience":"novice","format":"text/markdown","kind":"gloss","language":"en","type":"TextualBody","value":"A *harmonic* term treats a bond like a spring: the energy grows with the square of the stretch."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/x0abag88jjq4t","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"describing","receipt":"q1mqaaps430at","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"sxgcc9h","node_hash":"76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7","own_hash":"2d7df7b8b233eab6f96d5db0d29c99062aaa94b55cf4e388c49b9995ce7548d5","quote":{"exact":"bond force constant","prefix":"rm{eq}})^2$$ where $K_r$ is the ","suffix":" and $r_\\mathrm{eq}$ the equilib"},"rev":12,"span":[111,130],"store":"smithlab"},"type":"AnchorSelector"},{"exact":"bond force constant","prefix":"rm{eq}})^2$$ where $K_r$ is the ","suffix":" and $r_\\mathrm{eq}$ the equilib","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"kind":"claim-link","pin":"illustrative-pin","role":"states","source":"lode:amber/k-bond","type":"SpecificResource"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/xbwf8p70398mp","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"linking","receipt":"q1mqaaps430at","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"sxgcc9h","node_hash":"76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7","own_hash":"2d7df7b8b233eab6f96d5db0d29c99062aaa94b55cf4e388c49b9995ce7548d5","quote":{"exact":"The bond energy is given by $$E_{\\mathrm{bond}} = \\frac{1}{2} K_r (r - r_{\\mathrm{eq}})^2$$ where $K_r$ is the bond force constant and $r_\\mathrm{eq}$ the equilibrium bond length."},"rev":12,"store":"smithlab"},"type":"AnchorSelector"},{"exact":"The bond energy is given by $$E_{\\mathrm{bond}} = \\frac{1}{2} K_r (r - r_{\\mathrm{eq}})^2$$ where $K_r$ is the bond force constant and $r_\\mathrm{eq}$ the equilibrium bond length.","prefix":"","suffix":"","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"kind":"comment","type":"TextualBody","value":"The step size matters more than the text admits."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/psdmtnbz2q7v0","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"commenting","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"eajq93t","node_hash":"42b1de7852cdc68730984fff789fe248ecd5b43198c0e7d671931ff3fe561dc3","own_hash":"4dc28d1ad57c74d044f87264dfbc744ae9d5e9644638db976dbc346361442486","quote":{"exact":"steps of 0.01","prefix":"Each bond was scanned in ","suffix":" Å around its minimum, and the e"},"rev":12,"span":[25,38],"store":"smithlab"},"type":"AnchorSelector"},{"exact":"steps of 0.01","prefix":"Each bond was scanned in ","suffix":" Å around its minimum, and the e","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"for":"group","kind":"question","type":"TextualBody","value":"Why fit to a scan first and to frequencies second?"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/e5g07csx02bfg","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"questioning","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"section","node":"f0tj6ca","node_hash":"8acfa263e93dcee504efbfcd328fb69b81f4d71e97b921fa8da664a541e722ff","own_hash":"c3d50f266b05d7889c001aef16662cecd4e99ac4a2747ec331c1044e6adc8e3e","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"kind":"citation-context","reason":"value","reference":"b3g86a4","type":"TextualBody","value":"Cited for the band position; the reference is not in the library.","verdict":"cannot-tell"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/b1ge58mqmp2xy","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"assessing","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"f929eq9","node_hash":"cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369","own_hash":"d5b2ebdc96010fd8fc83abcbec9e5c2340bf766997a485f11f2dae49d0d2dd4c","quote":{"exact":"1595","prefix":" case, with a bending band near ","suffix":" cm⁻¹.2"},"rev":12,"span":[71,75],"store":"smithlab"},"type":"AnchorSelector"},{"exact":"1595","prefix":" case, with a bending band near ","suffix":" cm⁻¹.2","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"generator":{"model":"example-model","run":"illustrative-run-1"},"kind":"generated","type":"TextualBody","value":"Two panels: an energy scan and its fit residual."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:software:example-model","name":"A model (illustrative)","type":"Software"},"id":"urn:scienting:annotation:smithlab/yc4zpbf0b780r","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"describing","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"figure","node":"ajfvq4s","node_hash":"f76864779843485fa9e2f3cc3cd1c76ad222e1649c56f4cface33bf20b8f33b6","own_hash":"a1e46cb40201a17903dfd6f128db1e707b0e9f5bf45fcc32ec7ca772011edeae","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"exercise":{"exercise":"anchor","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}],"feedback":{"hit":"That is the cell.","miss":"Look in Table 1, row CT–CT."},"points":"1"}]},"prompt":"Find the table cell that gives the Set A bond constant for the CT–CT bond.","rule":{"match":"same-node"}},"kind":"exercise","type":"TextualBody","value":"Find the table cell that gives the Set A bond constant for the CT–CT bond."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"assessing","receipt":"q1mqaaps430at","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"table","node":"gm5z4rx","node_hash":"999777484c58cf3646eabb6df3e559369a1b081ec4f337d621dade1bf241f339","own_hash":"b56ce0ab4b480c4c43b11ca2eaca410c60fed73341d53896d509e30eabf54477","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"exercise":{"exercise":"check","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"the most common description","prefix":"Harmonic bond terms remain ","suffix":" of covalent stretching in class"},"rev":12,"span":[27,54],"store":"smithlab"}],"points":"1"}],"verdict":{"points":"1","value":"supports"}},"prompt":"Does the cited passage support the claim that harmonic terms are the most common choice?","rule":{"match":"overlap","min_overlap":"0.5"}},"kind":"exercise","type":"TextualBody","value":"Does the cited passage support the claim that harmonic terms are the most common choice?"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/y228zv031s285","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"assessing","receipt":"q1mqaaps430at","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"Harmonic bond terms remain the most common description of covalent stretching in classical force fields.1"},"rev":12,"store":"smithlab"},"type":"AnchorSelector"},{"exact":"Harmonic bond terms remain the most common description of covalent stretching in classical force fields.1","prefix":"","suffix":"","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"kind":"description","language":"en","role":"alt","type":"TextualBody","value":"Energy along the C–C bond stretch (panel a) and the fit residual (panel b)."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/dz7b0r84n38wp","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"describing","receipt":"q1mqaaps430at","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"figure","node":"ajfvq4s","node_hash":"f76864779843485fa9e2f3cc3cd1c76ad222e1649c56f4cface33bf20b8f33b6","own_hash":"a1e46cb40201a17903dfd6f128db1e707b0e9f5bf45fcc32ec7ca772011edeae","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"body":{"kind":"comment","type":"TextualBody","value":"Agreed; see the residual panel."},"created":"2026-10-11T19:05:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/r05bc2v6ve63x","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"replying","status":"proposed","target":{"source":"urn:scienting:annotation:smithlab/psdmtnbz2q7v0","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"audience":"novice","format":"text/markdown","kind":"gloss","language":"en","type":"TextualBody","value":"A *harmonic* term treats a bond like a spring: the energy grows with the square of the stretch."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/jgk1n6dcvwbvw","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"describing","receipt":"pgtc2enctchze","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"sxgcc9h","node_hash":"76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7","own_hash":"2d7df7b8b233eab6f96d5db0d29c99062aaa94b55cf4e388c49b9995ce7548d5","quote":{"exact":"bond force constant","prefix":"rm{eq}})^2$$ where $K_r$ is the ","suffix":" and $r_\\mathrm{eq}$ the equilib"},"rev":12,"span":[111,130],"store":"smithlab"},"type":"AnchorSelector"},{"exact":"bond force constant","prefix":"rm{eq}})^2$$ where $K_r$ is the ","suffix":" and $r_\\mathrm{eq}$ the equilib","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"kind":"claim-link","pin":"illustrative-pin","role":"states","source":"lode:amber/k-bond","type":"SpecificResource"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/c9herrt41fcpr","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"linking","receipt":"pgtc2enctchze","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"sxgcc9h","node_hash":"76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7","own_hash":"2d7df7b8b233eab6f96d5db0d29c99062aaa94b55cf4e388c49b9995ce7548d5","quote":{"exact":"The bond energy is given by $$E_{\\mathrm{bond}} = \\frac{1}{2} K_r (r - r_{\\mathrm{eq}})^2$$ where $K_r$ is the bond force constant and $r_\\mathrm{eq}$ the equilibrium bond length."},"rev":12,"store":"smithlab"},"type":"AnchorSelector"},{"exact":"The bond energy is given by $$E_{\\mathrm{bond}} = \\frac{1}{2} K_r (r - r_{\\mathrm{eq}})^2$$ where $K_r$ is the bond force constant and $r_\\mathrm{eq}$ the equilibrium bond length.","prefix":"","suffix":"","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"kind":"comment","type":"TextualBody","value":"The step size matters more than the text admits."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/cr683cx7pq7fd","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"commenting","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"eajq93t","node_hash":"42b1de7852cdc68730984fff789fe248ecd5b43198c0e7d671931ff3fe561dc3","own_hash":"4dc28d1ad57c74d044f87264dfbc744ae9d5e9644638db976dbc346361442486","quote":{"exact":"steps of 0.01","prefix":"Each bond was scanned in ","suffix":" Å around its minimum, and the e"},"rev":12,"span":[25,38],"store":"smithlab"},"type":"AnchorSelector"},{"exact":"steps of 0.01","prefix":"Each bond was scanned in ","suffix":" Å around its minimum, and the e","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"for":"group","kind":"question","type":"TextualBody","value":"Why fit to a scan first and to frequencies second?"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/a0g73q52t6h2t","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"questioning","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"section","node":"f0tj6ca","node_hash":"8acfa263e93dcee504efbfcd328fb69b81f4d71e97b921fa8da664a541e722ff","own_hash":"c3d50f266b05d7889c001aef16662cecd4e99ac4a2747ec331c1044e6adc8e3e","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"kind":"citation-context","reason":"value","reference":"b3g86a4","type":"TextualBody","value":"Cited for the band position; the reference is not in the library.","verdict":"cannot-tell"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/yaewet6dypvbk","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"assessing","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"f929eq9","node_hash":"cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369","own_hash":"d5b2ebdc96010fd8fc83abcbec9e5c2340bf766997a485f11f2dae49d0d2dd4c","quote":{"exact":"1595","prefix":" case, with a bending band near ","suffix":" cm⁻¹.2"},"rev":12,"span":[71,75],"store":"smithlab"},"type":"AnchorSelector"},{"exact":"1595","prefix":" case, with a bending band near ","suffix":" cm⁻¹.2","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"generator":{"model":"example-model","run":"illustrative-run-1"},"kind":"generated","type":"TextualBody","value":"Two panels: an energy scan and its fit residual."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:software:example-model","name":"A model (illustrative)","type":"Software"},"id":"urn:scienting:annotation:smithlab/zyjypkh70f089","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"describing","status":"proposed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"figure","node":"ajfvq4s","node_hash":"f76864779843485fa9e2f3cc3cd1c76ad222e1649c56f4cface33bf20b8f33b6","own_hash":"a1e46cb40201a17903dfd6f128db1e707b0e9f5bf45fcc32ec7ca772011edeae","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"exercise":{"exercise":"anchor","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}],"feedback":{"hit":"That is the cell.","miss":"Look in Table 1, row CT–CT."},"points":"1"}]},"prompt":"Find the table cell that gives the Set A bond constant for the CT–CT bond.","rule":{"match":"same-node"}},"kind":"exercise","type":"TextualBody","value":"Find the table cell that gives the Set A bond constant for the CT–CT bond."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/tj573y8mhap0f","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"assessing","receipt":"pgtc2enctchze","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"table","node":"gm5z4rx","node_hash":"999777484c58cf3646eabb6df3e559369a1b081ec4f337d621dade1bf241f339","own_hash":"b56ce0ab4b480c4c43b11ca2eaca410c60fed73341d53896d509e30eabf54477","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"exercise":{"exercise":"check","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"the most common description","prefix":"Harmonic bond terms remain ","suffix":" of covalent stretching in class"},"rev":12,"span":[27,54],"store":"smithlab"}],"points":"1"}],"verdict":{"points":"1","value":"supports"}},"prompt":"Does the cited passage support the claim that harmonic terms are the most common choice?","rule":{"match":"overlap","min_overlap":"0.5"}},"kind":"exercise","type":"TextualBody","value":"Does the cited passage support the claim that harmonic terms are the most common choice?"},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/shn6geqn0rhvs","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"assessing","receipt":"pgtc2enctchze","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"Harmonic bond terms remain the most common description of covalent stretching in classical force fields.1"},"rev":12,"store":"smithlab"},"type":"AnchorSelector"},{"exact":"Harmonic bond terms remain the most common description of covalent stretching in classical force fields.1","prefix":"","suffix":"","type":"TextQuoteSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"kind":"description","language":"en","role":"alt","type":"TextualBody","value":"Energy along the C–C bond stretch (panel a) and the fit residual (panel b)."},"created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/v5pk0zcbsxa4b","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"describing","receipt":"pgtc2enctchze","status":"confirmed","target":{"selector":[{"anchor":{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"figure","node":"ajfvq4s","node_hash":"f76864779843485fa9e2f3cc3cd1c76ad222e1649c56f4cface33bf20b8f33b6","own_hash":"a1e46cb40201a17903dfd6f128db1e707b0e9f5bf45fcc32ec7ca772011edeae","rev":12,"store":"smithlab"},"type":"AnchorSelector"}],"source":"urn:scienting:doc:smithlab/hale2026harmonic","type":"SpecificResource"},"type":"Annotation"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"body":{"kind":"comment","type":"TextualBody","value":"Agreed; see the residual panel."},"created":"2026-10-11T19:05:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"id":"urn:scienting:annotation:smithlab/sfatrthbcfv8a","layer":"urn:scienting:layer:smithlab/kp4m2x7q","motivation":"replying","status":"proposed","target":{"source":"urn:scienting:annotation:smithlab/cr683cx7pq7fd","type":"SpecificResource"},"type":"Annotation"} diff --git a/fixtures/records/layer/layer.json b/fixtures/records/layer/layer.json index 27458e6..9a23a16 100644 --- a/fixtures/records/layer/layer.json +++ b/fixtures/records/layer/layer.json @@ -1 +1 @@ -{"@context":["http://www.w3.org/ns/anno.jsonld","https://scient.ing/ns/scienting/1.jsonld"],"audience":"student","created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"docs":["smithlab/hale2026harmonic"],"format":"scienting-layer/1","id":"urn:scienting:layer:smithlab/kp4m2x7q","label":"Smith lab reading of Hale and Osei","license":{"spdx":"CC-BY-4.0"},"project":"smithlab-charges","purpose":"Glosses, claim links and exercises for new students.","total":10,"type":"AnnotationCollection","visibility":"team"} +{"@context":["http://www.w3.org/ns/anno.jsonld","https://paperspec.scient.ing/context/scienting-1.jsonld"],"audience":"student","created":"2026-10-11T19:00:00Z","creator":{"id":"urn:scienting:key:ana","name":"Ana Example","type":"Person"},"docs":["smithlab/hale2026harmonic"],"format":"scienting-layer/1","id":"urn:scienting:layer:smithlab/kp4m2x7q","label":"Smith lab reading of Hale and Osei","license":{"spdx":"CC-BY-4.0"},"project":"smithlab-charges","purpose":"Glosses, claim links and exercises for new students.","total":10,"type":"AnnotationCollection","visibility":"team"} diff --git a/fixtures/records/layer/receipt.json b/fixtures/records/layer/receipt.json index 6655995..0dac292 100644 --- a/fixtures/records/layer/receipt.json +++ b/fixtures/records/layer/receipt.json @@ -1 +1 @@ -{"at":"2026-10-11T19:30:00Z","by":"ana","doc":"hale2026harmonic","evidence":[],"format":"scienting-receipt/1","id":"q1mqaaps430at","level":"F3","nodes":[],"records":[["annotation","dz7b0r84n38wp","f7a5af8530468fe4dc54dcca3f2f0cfbfe69db1a77855febdd1a2f3c69d46cfa"],["annotation","h6s98vg6qcyjp","3cbe10d4ecdff3089a25f1b5ca5061e02201243e1bc4ccbe68a92e34a6b18b56"],["annotation","x0abag88jjq4t","7cbc20c779f95e25b2342a316ddf68750110782c0894e00d50dc3073ed5c980e"],["annotation","xbwf8p70398mp","1b0581890cdc337c30feb66baa7691ef2a599888b3df3c348d750e4072dbabd5"],["annotation","y228zv031s285","0eccd844df132a805887437e555e05428424fafa9eb3b2644a7f49a096442a09"]],"rev":12,"root":"72e9d4780a5d61c54e54933e4c576d69f3f079de9901526554a2d381845e437c","scope":"targeted:layer","signature":{"key":"ana","scheme":"ed25519","value":"+foYjFFLJQDJe5a58u8eIEU9e8OCHa2YwOT2xxcwCOUhTXXIPbYGL3GrFhzi5XeftXab7AoKzs4jVNQcSrW4Bw=="}} +{"at":"2026-10-11T19:30:00Z","by":"ana","doc":"hale2026harmonic","evidence":[],"format":"scienting-receipt/1","id":"pgtc2enctchze","level":"F3","nodes":[],"records":[["annotation","c9herrt41fcpr","4c25a14e30ef552a5993aeed3a818db3f67bb5e6422ce27c110862d485664fbd"],["annotation","jgk1n6dcvwbvw","2bc845ce83be9f19580310fbc974fc4b916ea75933996096c7bb72d5c76a44cb"],["annotation","shn6geqn0rhvs","9af1f3a2d2a97ce871337d87a397746b3010a2391917053deb3162e7533baf01"],["annotation","tj573y8mhap0f","0e70a9b6a05e16dc6c55ac27c963ae1820d39387521dd2ee1d0e77be683b85a5"],["annotation","v5pk0zcbsxa4b","78873fd145b89faa9bcda800fce9d0f5a057ce10fc0f94d95141d3d9fba85636"]],"rev":12,"root":"1d172f9491c225044a3b9bf42c2c4524a24e587562fa455941d80221b425d02e","scope":"targeted:layer","signature":{"key":"ana","scheme":"ed25519","value":"fEH0tDCkbVeRsjBgKS+ZphoZYaltQ0l53XgWrH/aWCOnl0P4diRFzcj1rheqW7Tck+gSmlLl0xtLmYDtjCPaAw=="}} diff --git a/fixtures/records/policy.json b/fixtures/records/policy.json index 2b80547..ac75df6 100644 --- a/fixtures/records/policy.json +++ b/fixtures/records/policy.json @@ -1 +1 @@ -{"applies_to":{"basis":["subscription"],"doi_prefixes":["10.5555/"]},"at":"2026-10-05T09:00:00Z","by":"ana","format":"scienting-policy/1","id":"g6r348z7ckp4q","project":"smithlab-charges","signature":{"key":"ana","scheme":"ed25519","value":"fQpa0K8NvBNatxnI/NWXXY2Cnkk5ibcXt3wEteM6K6EKhMB1cruazG9jpX7z2zbbxVvFyh6fgB9jJ1dItHfKDg=="},"statement":"Our institutional agreement covers internal AI use in our own cloud account for these papers (fictional).","uses":{"ai":{"internal/tenancy":true}},"valid_until":"2027-08-31T23:59:59Z"} +{"applies_to":{"basis":["subscription"],"doi_prefixes":["10.5555/"]},"at":"2026-10-05T09:00:00Z","by":"ana","format":"scienting-policy/1","id":"g6r348z7ckp4q","project":"smithlab-charges","signature":{"key":"ana","scheme":"ed25519","value":"FLg+kUV7cf0v+t8tGkYEtKdEazsqBb7X2LTqRHmMXH3h3ue/SXiegRBFxgIKff28elJSFv5EG7dK9LqvOs+PAA=="},"statement":"Our institutional agreement covers internal AI use in our own cloud account for these papers (fictional).","uses":{"ai":{"internal/tenancy":true}},"valid_until":"2027-08-31T23:59:59Z"} diff --git a/fixtures/records/qa-report.json b/fixtures/records/qa-report.json index 9168832..a2075de 100644 --- a/fixtures/records/qa-report.json +++ b/fixtures/records/qa-report.json @@ -1 +1 @@ -{"at":"2026-10-12T10:00:00Z","by":"ana","delivery":"smithlab evidence pilot (fictional)","docs":["smithlab/hale2026harmonic"],"format":"scienting-qa-report/1","id":"a5bjeh6psabm9","receipts":["eqgbbpwb6725v","gena76nkb6cnc"],"reviewers":[{"bound":"0.316340","confidence":"0.95","errors":1,"key":"ana","method":"clopper-pearson","sampled":13}],"signature":{"key":"ana","scheme":"ed25519","value":"yPHZH2t0ugji1HQcuSOlVwEJA0hWw7Y9mEr4LISi7AcGlM0mEmSm6YtrDnQ8CgkWSQ3gdwEB6HwalV0talSHDg=="}} +{"at":"2026-10-12T10:00:00Z","by":"ana","delivery":"smithlab evidence pilot (fictional)","docs":["smithlab/hale2026harmonic"],"format":"scienting-qa-report/1","id":"a5bjeh6psabm9","receipts":["eqgbbpwb6725v","gena76nkb6cnc"],"reviewers":[{"bound":"0.316340","confidence":"0.95","errors":1,"key":"ana","method":"clopper-pearson","sampled":13}],"signature":{"key":"ana","scheme":"ed25519","value":"bZkWcu2XLTeWXyZSygCDeB31qLfpdT8B3CuRzEy6GVxDplSOoQXRPlEU6nIwdPkiZhLjFCRw3Hn6nJIxkMAcCg=="}} diff --git a/fixtures/records/roster.json b/fixtures/records/roster.json index 9437521..7886e39 100644 --- a/fixtures/records/roster.json +++ b/fixtures/records/roster.json @@ -1 +1 @@ -{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"FTgWcu94E4B07ky4Sd2W6VcMzamQgx8G7v++3Y/jvfY=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"J8HPVPYtxYbKQZLMnlvND2FeGrhHj/RN8fLQ0MeyKCc=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} +{"format":"scienting-roster/1","keys":[{"id":"ana","person":{"name":"Ana Example"},"public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"owner","scheme":"ed25519"},{"id":"ben","person":{"name":"Ben Example"},"public":"L4WMLs7xLjBLRsxS/EYpD194puMBpADybcfFEWxBkWk=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"ben-spot","person":{"name":"Ben Example"},"public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","purposes":["spot-check"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"editor","scheme":"ed25519"},{"id":"cara","person":{"name":"Cara Example"},"public":"I7J1GqG5CHOc0LHYZPNNto1Me2lJUzBVn2A7GrUGbZ4=","purposes":["sign"],"registered_at":"2026-09-01T00:00:00Z","revoked_at":null,"role":"reader","scheme":"ed25519"}],"store":"smithlab"} diff --git a/fixtures/records/submissions/anchor-hit.json b/fixtures/records/submissions/anchor-hit.json index 6bde905..76364c2 100644 --- a/fixtures/records/submissions/anchor-hit.json +++ b/fixtures/records/submissions/anchor-hit.json @@ -1 +1 @@ -{"answers":{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-submission/1","id":"h4camq2b6fa0e","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:00:00Z"} +{"answers":{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-submission/1","id":"b479pkvhyafdh","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:00:00Z"} diff --git a/fixtures/records/submissions/anchor-miss.json b/fixtures/records/submissions/anchor-miss.json index c939a12..949510d 100644 --- a/fixtures/records/submissions/anchor-miss.json +++ b/fixtures/records/submissions/anchor-miss.json @@ -1 +1 @@ -{"answers":{"anchors":[{"context":{"column_path":["Set B","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"hw8fx4r","node_hash":"e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8","own_hash":"6356e0e8a0c4c9911e9657be9ee00e47fbe2ee6c54928d2b3d126266b19fa1e3","quote":{"exact":"305.2"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-submission/1","id":"bjgg8jyxh42w9","rev":12,"student":"s-9q4p","submitted_at":"2026-10-20T10:00:00Z"} +{"answers":{"anchors":[{"context":{"column_path":["Set B","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"hw8fx4r","node_hash":"e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8","own_hash":"6356e0e8a0c4c9911e9657be9ee00e47fbe2ee6c54928d2b3d126266b19fa1e3","quote":{"exact":"305.2"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-submission/1","id":"zw21e9386dtp2","rev":12,"student":"s-9q4p","submitted_at":"2026-10-20T10:00:00Z"} diff --git a/fixtures/records/submissions/check-overlap.json b/fixtures/records/submissions/check-overlap.json index 8385b96..655a4d0 100644 --- a/fixtures/records/submissions/check-overlap.json +++ b/fixtures/records/submissions/check-overlap.json @@ -1 +1 @@ -{"answers":{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"most common description of covalent","prefix":"Harmonic bond terms remain the ","suffix":" stretching in classical force f"},"rev":12,"span":[31,66],"store":"smithlab"}],"verdict":"supports"},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/y228zv031s285","format":"scienting-submission/1","id":"ncf5gq0x1xny5","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:05:00Z"} +{"answers":{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"most common description of covalent","prefix":"Harmonic bond terms remain the ","suffix":" stretching in classical force f"},"rev":12,"span":[31,66],"store":"smithlab"}],"verdict":"supports"},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/shn6geqn0rhvs","format":"scienting-submission/1","id":"mk28stafpq7sp","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:05:00Z"} diff --git a/pixi.toml b/pixi.toml index 9940379..3f1a76c 100644 --- a/pixi.toml +++ b/pixi.toml @@ -28,3 +28,4 @@ build = { cmd = "python tools/build.py", description = "Rebuild fixtures/ and ve lint = { cmd = "markdownlint-cli2", description = "Lint every Markdown file with markdownlint" } load = { cmd = "python tools/load.py", description = "Load packages into SQLite: pixi run load --sqlite lab.db PACKAGE..." } validate = { cmd = "python tools/validate.py", description = "Validate packages, or run proposed corrections through the gate" } +stress = { cmd = "python tools/stress.py", description = "Stress the oracle with random inputs: pixi run stress -- --seed N" } diff --git a/schemas/README.md b/schemas/README.md index ca67900..e8b730a 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -1,12 +1,12 @@ # Schemas -This folder holds the JSON (JavaScript Object Notation) Schemas (draft 2020-12) for every file and record that the manuspec formats (manuspec is the specification this repository holds) define: 39 schema files. +This folder holds the JSON (JavaScript Object Notation) Schemas (draft 2020-12) for every file and record that the paperspec formats (paperspec is the specification this repository holds) define: 39 schema files. A JSON Schema is a file, itself written in JSON, that states what a valid JSON file looks like. Newcomers can read it as a form: it lists the fields a record must have and what kind of value each field takes. Implementers will find the loading recipe and the traps under "Validating" and "Writing schemas". Experts will find the chapter and status of each format under "Which schema for which file" and "What a schema does not check". -Each schema's `$id`, its own address as a name, is `https://scient.ing/ns/schemas/`. +Each schema's `$id`, its own address as a name, is `https://paperspec.scient.ing/schemas/`. Schemas refer to each other by those names, and a validator (a program that checks a file against a schema) that loads the whole folder resolves every reference. The `$id` base is normative and stays as it is. The `scienting-` prefix on format identifiers such as `scienting-anchor/1` is the formats' namespace, a separate matter from the repository's name. @@ -57,7 +57,7 @@ validator.validate(json.load(open("fixtures/records/anchor-span.json"))) It raises no error when run from the repository root, since `anchor-span.json` is a valid anchor. A schema refers to another by a relative name, and the `Registry` object resolves it. -Here `anchor.schema.json` points to `common.schema.json#/$defs/key`, which a validator resolves against the `$id` above into `https://scient.ing/ns/schemas/common.schema.json`. +Here `anchor.schema.json` points to `common.schema.json#/$defs/key`, which a validator resolves against the `$id` above into `https://paperspec.scient.ing/schemas/common.schema.json`. The `Registry` maps that name to the file's contents, so nothing is fetched over the network. `Draft202012Validator(schemas["anchor.schema.json"])` fails with `Unresolvable: common.schema.json#/$defs/key` when the `Registry` is missing. Never load a schema alone. diff --git a/schemas/anchor.schema.json b/schemas/anchor.schema.json index e8a0af7..7c54361 100644 --- a/schemas/anchor.schema.json +++ b/schemas/anchor.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/anchor.schema.json", + "$id": "https://paperspec.scient.ing/schemas/anchor.schema.json", "title": "Anchor", "description": "scienting-anchor/1: a pinned address with context; spec/06-anchors.md.", "type": "object", diff --git a/schemas/annotation.schema.json b/schemas/annotation.schema.json index 3bccb38..4f83bc3 100644 --- a/schemas/annotation.schema.json +++ b/schemas/annotation.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/annotation.schema.json", + "$id": "https://paperspec.scient.ing/schemas/annotation.schema.json", "title": "Annotation", "description": "One line of annotations.jsonl in scienting-layer/1: a W3C Web Annotation; spec/18-layers.md.", "type": "object", diff --git a/schemas/backend.schema.json b/schemas/backend.schema.json index 2205e11..85cb5b6 100644 --- a/schemas/backend.schema.json +++ b/schemas/backend.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/backend.schema.json", + "$id": "https://paperspec.scient.ing/schemas/backend.schema.json", "title": "Backend declaration", "description": "scienting-backend/1: a tool's code and weight licenses and their conditions; spec/14-rights.md.", "type": "object", diff --git a/schemas/checklist.schema.json b/schemas/checklist.schema.json index d4fff4b..bc13370 100644 --- a/schemas/checklist.schema.json +++ b/schemas/checklist.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/checklist.schema.json", + "$id": "https://paperspec.scient.ing/schemas/checklist.schema.json", "title": "Conformance checklist", "description": "scienting-checklist/1: a check of an export against a named standard, covered by a receipt; spec/08-fidelity.md §8.11.", "type": "object", diff --git a/schemas/common.schema.json b/schemas/common.schema.json index 50742d4..b30b17b 100644 --- a/schemas/common.schema.json +++ b/schemas/common.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/common.schema.json", + "$id": "https://paperspec.scient.ing/schemas/common.schema.json", "title": "Shared definitions", "description": "Definitions every scienting schema shares; spec/01-conventions.md.", "$defs": { diff --git a/schemas/correction.schema.json b/schemas/correction.schema.json index c24ec28..a54486d 100644 --- a/schemas/correction.schema.json +++ b/schemas/correction.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/correction.schema.json", + "$id": "https://paperspec.scient.ing/schemas/correction.schema.json", "title": "Correction", "description": "scienting-correction/1: a line of corrections.jsonl, or a proposal; spec/11-corrections.md.", "type": "object", diff --git a/schemas/dataset.schema.json b/schemas/dataset.schema.json index 43aac9d..36f7392 100644 --- a/schemas/dataset.schema.json +++ b/schemas/dataset.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/dataset.schema.json", + "$id": "https://paperspec.scient.ing/schemas/dataset.schema.json", "title": "Dataset", "description": "datapackage.json of scienting-dataset/1: a Frictionless Data Package with units, uncertainty and origin; spec/15-datasets.md.", "type": "object", diff --git a/schemas/digitization.schema.json b/schemas/digitization.schema.json index af16ce9..b107563 100644 --- a/schemas/digitization.schema.json +++ b/schemas/digitization.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/digitization.schema.json", + "$id": "https://paperspec.scient.ing/schemas/digitization.schema.json", "title": "Digitization", "description": "scienting-digitization/1: how values were read off a figure panel; spec/16-digitization.md.", "type": "object", diff --git a/schemas/document.schema.json b/schemas/document.schema.json index 8ca0cce..68ba50c 100644 --- a/schemas/document.schema.json +++ b/schemas/document.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/document.schema.json", + "$id": "https://paperspec.scient.ing/schemas/document.schema.json", "title": "Document", "description": "document.json of a scienting-doc/1 package; spec/02-model.md and spec/12-package.md.", "type": "object", diff --git a/schemas/draft-ids.schema.json b/schemas/draft-ids.schema.json index 643ec69..3ca8ead 100644 --- a/schemas/draft-ids.schema.json +++ b/schemas/draft-ids.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/draft-ids.schema.json", + "$id": "https://paperspec.scient.ing/schemas/draft-ids.schema.json", "title": "Draft sentence IDs", "description": "One line of a Typst project's ids.jsonl: scienting-draft-ids/1; spec/21-drafts.md.", "type": "object", diff --git a/schemas/exercise.schema.json b/schemas/exercise.schema.json index ddbcb4d..1e60408 100644 --- a/schemas/exercise.schema.json +++ b/schemas/exercise.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/exercise.schema.json", + "$id": "https://paperspec.scient.ing/schemas/exercise.schema.json", "title": "Exercise", "description": "scienting-exercise/1: the body of an exercise annotation; spec/19-exercises.md.", "type": "object", diff --git a/schemas/grade.schema.json b/schemas/grade.schema.json index b1e23c2..15f3e29 100644 --- a/schemas/grade.schema.json +++ b/schemas/grade.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/grade.schema.json", + "$id": "https://paperspec.scient.ing/schemas/grade.schema.json", "title": "Grade", "description": "scienting-grade/1: the grader's result for one submission; spec/19-exercises.md.", "type": "object", diff --git a/schemas/id-entry.schema.json b/schemas/id-entry.schema.json index b1160a0..cca2c96 100644 --- a/schemas/id-entry.schema.json +++ b/schemas/id-entry.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/id-entry.schema.json", + "$id": "https://paperspec.scient.ing/schemas/id-entry.schema.json", "title": "ID table entry", "description": "One line of ids.jsonl; spec/04-identity.md.", "type": "object", diff --git a/schemas/layer.schema.json b/schemas/layer.schema.json index c13bba0..bd3abcf 100644 --- a/schemas/layer.schema.json +++ b/schemas/layer.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/layer.schema.json", + "$id": "https://paperspec.scient.ing/schemas/layer.schema.json", "title": "Layer", "description": "layer.json of scienting-layer/1: a W3C AnnotationCollection; spec/18-layers.md.", "type": "object", diff --git a/schemas/location.schema.json b/schemas/location.schema.json index cd9eede..a270218 100644 --- a/schemas/location.schema.json +++ b/schemas/location.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/location.schema.json", + "$id": "https://paperspec.scient.ing/schemas/location.schema.json", "title": "Location", "description": "One line of locations.jsonl; spec/07-geometry.md.", "type": "object", diff --git a/schemas/manifest.schema.json b/schemas/manifest.schema.json index 08dcf8a..6cdc417 100644 --- a/schemas/manifest.schema.json +++ b/schemas/manifest.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/manifest.schema.json", + "$id": "https://paperspec.scient.ing/schemas/manifest.schema.json", "title": "Package manifest", "description": "MANIFEST.json, scienting-package/1; spec/12-package.md.", "type": "object", diff --git a/schemas/mathml.schema.json b/schemas/mathml.schema.json index 890b440..215c172 100644 --- a/schemas/mathml.schema.json +++ b/schemas/mathml.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/mathml.schema.json", + "$id": "https://paperspec.scient.ing/schemas/mathml.schema.json", "title": "Derived MathML", "description": "One line of derived/mathml.jsonl: MathML made by a pinned tool; never authoritative; spec/12-package.md.", "type": "object", diff --git a/schemas/node.schema.json b/schemas/node.schema.json index 8e0122f..3a5aa92 100644 --- a/schemas/node.schema.json +++ b/schemas/node.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/node.schema.json", + "$id": "https://paperspec.scient.ing/schemas/node.schema.json", "title": "Node", "description": "One line of nodes.jsonl; spec/03-nodes.md.", "type": "object", diff --git a/schemas/page.schema.json b/schemas/page.schema.json index 8190fee..4dcc78d 100644 --- a/schemas/page.schema.json +++ b/schemas/page.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/page.schema.json", + "$id": "https://paperspec.scient.ing/schemas/page.schema.json", "title": "Page", "description": "One line of pages.jsonl; spec/07-geometry.md.", "type": "object", diff --git a/schemas/policy.schema.json b/schemas/policy.schema.json index 8ab6d25..2dfc968 100644 --- a/schemas/policy.schema.json +++ b/schemas/policy.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/policy.schema.json", + "$id": "https://paperspec.scient.ing/schemas/policy.schema.json", "title": "Team rights policy", "description": "scienting-policy/1: a signed decision that resolves unknown uses; spec/14-rights.md.", "type": "object", diff --git a/schemas/profile.schema.json b/schemas/profile.schema.json index 545b107..0b14b29 100644 --- a/schemas/profile.schema.json +++ b/schemas/profile.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/profile.schema.json", + "$id": "https://paperspec.scient.ing/schemas/profile.schema.json", "title": "Team profile", "description": "scienting-profile/1: what backend conditions ask about a team; spec/14-rights.md.", "type": "object", diff --git a/schemas/project.schema.json b/schemas/project.schema.json index 8e06711..cd219f7 100644 --- a/schemas/project.schema.json +++ b/schemas/project.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/project.schema.json", + "$id": "https://paperspec.scient.ing/schemas/project.schema.json", "title": "Project", "description": "scienting-project/1: a team's curated set of documents and people; spec/20-projects.md.", "type": "object", diff --git a/schemas/provenance.schema.json b/schemas/provenance.schema.json index f28b2f1..ed5ad2a 100644 --- a/schemas/provenance.schema.json +++ b/schemas/provenance.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/provenance.schema.json", + "$id": "https://paperspec.scient.ing/schemas/provenance.schema.json", "title": "Provenance", "description": "provenance.json of a package; spec/12-package.md.", "type": "object", diff --git a/schemas/qa-report.schema.json b/schemas/qa-report.schema.json index 8952233..a17988d 100644 --- a/schemas/qa-report.schema.json +++ b/schemas/qa-report.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/qa-report.schema.json", + "$id": "https://paperspec.scient.ing/schemas/qa-report.schema.json", "title": "QA report", "description": "scienting-qa-report/1: reviewer error bounds for a delivery; spec/08-fidelity.md.", "type": "object", diff --git a/schemas/receipt.schema.json b/schemas/receipt.schema.json index 515e7e8..7f8e5ec 100644 --- a/schemas/receipt.schema.json +++ b/schemas/receipt.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/receipt.schema.json", + "$id": "https://paperspec.scient.ing/schemas/receipt.schema.json", "title": "Review receipt", "description": "scienting-receipt/1; spec/08-fidelity.md.", "type": "object", diff --git a/schemas/reference.schema.json b/schemas/reference.schema.json index 4ba1e34..7c0812c 100644 --- a/schemas/reference.schema.json +++ b/schemas/reference.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/reference.schema.json", + "$id": "https://paperspec.scient.ing/schemas/reference.schema.json", "title": "Reference record", "description": "One line of references.jsonl; spec/10-references.md.", "type": "object", diff --git a/schemas/revocation.schema.json b/schemas/revocation.schema.json index d8b188e..a42634e 100644 --- a/schemas/revocation.schema.json +++ b/schemas/revocation.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/revocation.schema.json", + "$id": "https://paperspec.scient.ing/schemas/revocation.schema.json", "title": "Revocation", "description": "scienting-revocation/1; spec/08-fidelity.md.", "type": "object", diff --git a/schemas/rights.schema.json b/schemas/rights.schema.json index 2fbe552..eef5a21 100644 --- a/schemas/rights.schema.json +++ b/schemas/rights.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/rights.schema.json", + "$id": "https://paperspec.scient.ing/schemas/rights.schema.json", "title": "Rights record", "description": "scienting-rights/1: a witness's license, basis and uses; spec/14-rights.md.", "type": "object", diff --git a/schemas/roster.schema.json b/schemas/roster.schema.json index 76a1148..22fb20f 100644 --- a/schemas/roster.schema.json +++ b/schemas/roster.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/roster.schema.json", + "$id": "https://paperspec.scient.ing/schemas/roster.schema.json", "title": "Roster", "description": "scienting-roster/1: the keys that may sign; spec/08-fidelity.md.", "type": "object", diff --git a/schemas/runs.schema.json b/schemas/runs.schema.json index 30568ff..836cf96 100644 --- a/schemas/runs.schema.json +++ b/schemas/runs.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/runs.schema.json", + "$id": "https://paperspec.scient.ing/schemas/runs.schema.json", "title": "Inline runs", "description": "The runs of a sentence, cell, reference, authors or keywords node; spec/03-nodes.md.", "type": "array", diff --git a/schemas/snapshot.schema.json b/schemas/snapshot.schema.json index 079f17d..f19c269 100644 --- a/schemas/snapshot.schema.json +++ b/schemas/snapshot.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/snapshot.schema.json", + "$id": "https://paperspec.scient.ing/schemas/snapshot.schema.json", "title": "Draft snapshot", "description": "scienting-snapshot/1: the pinned claims, quotations and datasets a draft cites; spec/21-drafts.md.", "type": "object", diff --git a/schemas/spot-check.schema.json b/schemas/spot-check.schema.json index 7219a63..128d9ed 100644 --- a/schemas/spot-check.schema.json +++ b/schemas/spot-check.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/spot-check.schema.json", + "$id": "https://paperspec.scient.ing/schemas/spot-check.schema.json", "title": "Spot-check seed payload", "description": "scienting-spot-check/1: the payload a spot-check key signs to seed a sample; it names a receipt by its record hash and is never a file of its own; spec/08-fidelity.md §8.8.", "type": "object", diff --git a/schemas/stages.schema.json b/schemas/stages.schema.json index 36e3abc..5272eb1 100644 --- a/schemas/stages.schema.json +++ b/schemas/stages.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/stages.schema.json", + "$id": "https://paperspec.scient.ing/schemas/stages.schema.json", "title": "Stage requirements", "description": "scienting-stages/1: the uses each stage needs; configuration, not code; spec/14-rights.md.", "type": "object", diff --git a/schemas/stamps.schema.json b/schemas/stamps.schema.json index 87ae401..3f02e84 100644 --- a/schemas/stamps.schema.json +++ b/schemas/stamps.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/stamps.schema.json", + "$id": "https://paperspec.scient.ing/schemas/stamps.schema.json", "title": "Stamp rules", "description": "scienting-stamps/1: download-stamp line rules for page fingerprints; spec/07-geometry.md.", "type": "object", diff --git a/schemas/submission.schema.json b/schemas/submission.schema.json index c5b1c18..90999b6 100644 --- a/schemas/submission.schema.json +++ b/schemas/submission.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/submission.schema.json", + "$id": "https://paperspec.scient.ing/schemas/submission.schema.json", "title": "Submission", "description": "scienting-submission/1: a student's answer, under a pseudonym; spec/19-exercises.md.", "type": "object", diff --git a/schemas/suspect.schema.json b/schemas/suspect.schema.json index c3a909e..8612b76 100644 --- a/schemas/suspect.schema.json +++ b/schemas/suspect.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/suspect.schema.json", + "$id": "https://paperspec.scient.ing/schemas/suspect.schema.json", "title": "Suspect", "description": "scienting-suspect/1: a doubtful reading for review; spec/05-hashes.md.", "type": "object", diff --git a/schemas/value-anchor.schema.json b/schemas/value-anchor.schema.json index c322252..74feed4 100644 --- a/schemas/value-anchor.schema.json +++ b/schemas/value-anchor.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/value-anchor.schema.json", + "$id": "https://paperspec.scient.ing/schemas/value-anchor.schema.json", "title": "Value anchor", "description": "One line of a dataset's anchors.jsonl: where one value came from; spec/15-datasets.md.", "type": "object", diff --git a/schemas/view.schema.json b/schemas/view.schema.json index 839d801..4d7269f 100644 --- a/schemas/view.schema.json +++ b/schemas/view.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/view.schema.json", + "$id": "https://paperspec.scient.ing/schemas/view.schema.json", "title": "View", "description": "A Vega-Lite specification whose usermeta.scienting pins its data: scienting-view/1; spec/17-views.md.", "type": "object", diff --git a/schemas/witnesses.schema.json b/schemas/witnesses.schema.json index bd5936f..695687d 100644 --- a/schemas/witnesses.schema.json +++ b/schemas/witnesses.schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://scient.ing/ns/schemas/witnesses.schema.json", + "$id": "https://paperspec.scient.ing/schemas/witnesses.schema.json", "title": "Witnesses", "description": "witnesses.json of a package; spec/02-model.md.", "type": "object", diff --git a/spec/00-introduction.md b/spec/00-introduction.md index c4dd809..a743cce 100644 --- a/spec/00-introduction.md +++ b/spec/00-introduction.md @@ -41,7 +41,7 @@ An implementation states, for each format, which versions it reads and writes. Every format has an identifier of the form `scienting-/`, such as `scienting-doc/1`. The identifier tells a reader which rules apply to a file. The prefix `scienting-` is the namespace of the formats. -The namespace is not the name of this repository, manuspec, and formats are named after what they hold. +The namespace is not the name of this repository, paperspec, and formats are named after what they hold. A file or record that can travel on its own carries its identifier in a `format` property. The anchor in `fixtures/records/anchor-leaf.json` begins `{"doc":"hale2026harmonic","format":"scienting-anchor/1", ...`. diff --git a/spec/18-layers.md b/spec/18-layers.md index 673f4ba..5fb12e6 100644 --- a/spec/18-layers.md +++ b/spec/18-layers.md @@ -2,7 +2,7 @@ Everything people and models add to a document is an annotation, and annotations are grouped in layers. `scienting-layer/1` is the W3C Web Annotation Data Model with the anchor as a selector, so any Web Annotation tool can read it. -The JSON-LD context is [context/scienting-1.jsonld](../context/scienting-1.jsonld), published at `https://scient.ing/ns/scienting/1.jsonld`. +The JSON-LD context is [context/scienting-1.jsonld](../context/scienting-1.jsonld), published at `https://paperspec.scient.ing/context/scienting-1.jsonld`. ## 18.1 One rule decides what is a claim and what is a layer @@ -21,7 +21,7 @@ Each line of `annotations.jsonl` is a W3C `Annotation`: | Property | Holds | | --- | --- | -| `@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"]`. | | `id` | `urn:scienting:annotation:/` ([4.6](04-identity.md#46-record-ids)). | | `type`, `layer` | `Annotation`, and the layer's ID. | | `motivation` | A W3C motivation: `commenting`, `describing`, `linking`, `questioning`, `assessing`, `replying` and the others. | diff --git a/spec/README.md b/spec/README.md index d9fb48b..932be16 100644 --- a/spec/README.md +++ b/spec/README.md @@ -1,8 +1,8 @@ -# The manuspec specification +# The paperspec specification -This specification states exactly what each manuspec file holds and how every value in it is computed. +This specification states exactly what each paperspec file holds and how every value in it is computed. The schemas, SQL, JSON-LD context, registries, vectors and fixtures are normative too, and each chapter says which of them it relies on. -A chapter and a vector that disagree signal a bug, so please report it in the repository, . +A chapter and a vector that disagree signal a bug, so please report it in the repository, . Two readers will get the most from it: implementers who build a reader, writer, converter or checker, and experts who want the precise rules. Newcomers should start with the [guides](../docs/README.md), which explain what the formats are for. diff --git a/tools/README.md b/tools/README.md index 674b428..e3c6ec5 100644 --- a/tools/README.md +++ b/tools/README.md @@ -19,6 +19,7 @@ A fixture is an example file or package under `fixtures/`. | `build.py` | Builds `fixtures/` and `vectors/` from the hand-written sources in `fixtures/src/` and the cases it defines. `--out DIR` builds into another folder. | | `validate.py` | Validates packages, as folders or as zipped packages (`.sct.zip`, unpacked under the rules of [spec/12 §12.2](../spec/12-package.md#122-paths)): `python3 tools/validate.py PACKAGE [PACKAGE ...]`. With `--correction PROPOSALS` it runs proposed corrections through the gate against one package's current state, and prints the record each would append or the rule it breaks, without writing anything ([spec/11 §11.4](../spec/11-corrections.md#114-the-gate)). | | `load.py` | Validates packages, folders or zipped, then loads them into a SQLite database with the tables of `sql/`: `python3 tools/load.py --sqlite lab.db PACKAGE [PACKAGE ...]`. With `--bundle --built-from REV` it builds a new bundle instead, with the full-text search index ([spec/13 §13.5](../spec/13-database.md#135-the-bundle)). | +| `site.py` | Builds the website into `_site/`: every file of the repository at its own path, and each Markdown file rendered as a page beside it, with a vocabulary page, folder listings and a search index. It uses only the standard library. `pixi run check` builds it into a temporary folder and checks every link ([deploy/](../deploy/README.md)). | | `stress.py` | Stresses the oracle with random inputs from a seeded generator: `python3 tools/stress.py [--seed N] [--rounds N]`. It checks the invariants the chapters state rather than the vectors' values, such as canonical JSON round trips, corrections keeping the five values consistent with a full recomputation, anchors always resolving to one of the five outcomes, the zip reader never writing outside its folder, and a mutated package always being refused. | | `oracle/` | A compact implementation of every rule. `build.py` uses it to compute expected values, and `check.py` uses it to recompute them. | diff --git a/tools/build.py b/tools/build.py index 330b410..dcb0971 100644 --- a/tools/build.py +++ b/tools/build.py @@ -43,7 +43,7 @@ def H(s): def secret(name): - return hashlib.sha256(("manuspec fixture key: " + name).encode()).digest() + return hashlib.sha256(("paperspec fixture key: " + name).encode()).digest() KEYS = { @@ -52,7 +52,7 @@ KEYS = { "ben-spot": {"name": "Ben Example", "role": "editor", "purposes": ["spot-check"]}, "cara": {"name": "Cara Example", "role": "reader", "purposes": ["sign"]}, } -TEAM_SECRET = hashlib.sha256(b"manuspec fixture team secret: smithlab").digest() +TEAM_SECRET = hashlib.sha256(b"paperspec fixture team secret: smithlab").digest() def roster(): @@ -517,8 +517,8 @@ def package_files(src, key, names, side, final, records, receipts=None, roster_r files["roster.json"] = (jcs.dumps(roster_rec) + "\n").encode() files["witnesses.json"] = (jcs.dumps({"witnesses": witnesses}) + "\n").encode() files["provenance.json"] = (jcs.dumps({ - "tools": [{"name": "manuspec tools/build.py", "version": VERSION}], - "stages": [{"stage": "hand", "processor": "local", "tool": "manuspec tools/build.py"}], + "tools": [{"name": "paperspec tools/build.py", "version": VERSION}], + "stages": [{"stage": "hand", "processor": "local", "tool": "paperspec tools/build.py"}], "note": "Built by hand for the conformance suite; every reading is synthetic."}) + "\n").encode() levels = RC.effective_levels(nodes, vals, receipts or [], ROSTER_BY_ID if roster_rec else {}) d = dict(src["document"]) @@ -1127,7 +1127,7 @@ def wr(out, rel, rec): f.write((jcs.dumps(rec) + "\n").encode() if not isinstance(rec, bytes) else rec) -CTX = ["http://www.w3.org/ns/anno.jsonld", "https://scient.ing/ns/scienting/1.jsonld"] +CTX = ["http://www.w3.org/ns/anno.jsonld", "https://paperspec.scient.ing/context/scienting-1.jsonld"] def ann_hash(a): diff --git a/tools/check.py b/tools/check.py index 8887fea..207906a 100644 --- a/tools/check.py +++ b/tools/check.py @@ -37,7 +37,7 @@ from tools.oracle.tree import Refusal # noqa: E402 FAILS = [] # Folders that are not part of the repository: version control, environments and caches. -SKIP_DIRS = {".git", ".pixi", "node_modules", "__pycache__"} +SKIP_DIRS = {".git", ".pixi", "node_modules", "__pycache__", "_site", ".claude"} COUNTS = {} @@ -852,7 +852,7 @@ COUNT_PATTERNS = [ (NUM + r" cases in all\b", "cases"), ] # Where the prose names the specification's own version; other standards' versions are not checked. -VERSION_PATTERN = r"\b(?:manuspec|the formats are|the specification is at|this is|it is|is at|at) version (\d+\.\d+\.\d+)\b|\bmanuspec (\d+\.\d+\.\d+)\b" +VERSION_PATTERN = r"\b(?:paperspec|the formats are|the specification is at|this is|it is|is at|at) version (\d+\.\d+\.\d+)\b|\bpaperspec (\d+\.\d+\.\d+)\b" def check_counts(): @@ -907,6 +907,88 @@ def check_counts(): % (rel, i, word, what, have[what])) +def check_site(): + """The website builds, every Markdown file has a page, every internal link and fragment resolves, no Markdown + is left unrendered, and the namespace addresses the formats name are files the site serves.""" + from html.parser import HTMLParser + from tools import site + + class Page(HTMLParser): + def __init__(self): + super().__init__(convert_charrefs=True) + self.ids, self.links, self.text, self.skip = set(), [], [], 0 + + def handle_starttag(self, tag, attrs): + a = dict(attrs) + if "id" in a: + self.ids.add(a["id"]) + for k in ("href", "src"): + if a.get(k): + self.links.append(a[k]) + if tag in ("code", "pre", "script", "style"): + self.skip += 1 + + def handle_endtag(self, tag): + if tag in ("code", "pre", "script", "style"): + self.skip -= 1 + + def handle_data(self, data): + if not self.skip: + self.text.append(data) + + with tempfile.TemporaryDirectory() as tmp: + out = os.path.join(tmp, "site") + site.build(out) + pages = {} + for d, _, fs in os.walk(out): + for f in fs: + if f.endswith(".html"): + pg = Page() + with open(os.path.join(d, f), encoding="utf-8") as fh: + pg.feed(fh.read()) + pages[os.path.relpath(os.path.join(d, f), out)] = pg + for d, dirs, fs in os.walk(ROOT): + dirs[:] = [x for x in dirs if x not in SKIP_DIRS] + for f in fs: + if f.endswith(".md"): + md = os.path.relpath(os.path.join(d, f), ROOT) + ok("site", site.page_path(md) in pages, "%s has no page" % md) + for name, pg in sorted(pages.items()): + if name == "404.html": + continue + # Markdown syntax left in a single text node means a construct the renderer did not recognize. + bad = [m.group(0) for chunk in pg.text + for m in re.finditer(r"\]\(|\*\*|`|\n *(?:\||: |#{1,6} |[-*] |\d+\. )", chunk)] + ok("site", not bad, "%s: unrendered Markdown %r" % (name, sorted(set(bad))[:3])) + for link in pg.links: + if re.match(r"^[a-z][a-z0-9+.-]*:", link) or link.startswith("//"): + continue + path, _, frag = link.partition("#") + target = os.path.normpath(os.path.join(os.path.dirname(name), path)) if path else name + full = os.path.join(out, target) + if os.path.isdir(full): + target = os.path.join(target, "index.html") + full = os.path.join(out, target) + ok("site", os.path.exists(full), "%s: link to a missing file %s" % (name, link)) + if frag and target in pages: + ok("site", frag in pages[target].ids, "%s: no #%s in %s" % (name, frag, target)) + # The addresses the formats name are files of the site. + for f in SCHEMA_FILES: + sid = STORE.load(f)["$id"] + ok("site", sid.startswith(site.BASE_URL + "/") and + os.path.exists(os.path.join(out, sid[len(site.BASE_URL) + 1:])), "%s is not served at its $id" % f) + ctx_url = jl(os.path.join(p("fixtures", "records", "layer"), "annotations.jsonl"))[0]["@context"][1] + ok("site", ctx_url.startswith(site.BASE_URL + "/") and + os.path.exists(os.path.join(out, ctx_url[len(site.BASE_URL) + 1:])), "the context is not served at %s" % ctx_url) + vocab = js(p("context", "scienting-1.jsonld"))["@context"]["sct"] + ok("site", vocab == site.BASE_URL + "/vocab#", "the vocabulary IRI %s is not the site's vocab page" % vocab) + terms = [v if isinstance(v, str) else v["@id"] for k, v in js(p("context", "scienting-1.jsonld"))["@context"].items() + if not k.startswith("@")] + for t in terms: + if t.startswith("sct:"): + ok("site", t[4:] in pages["vocab/index.html"].ids, "the vocabulary page has no #%s" % t[4:]) + + def main(): import argparse ap = argparse.ArgumentParser( @@ -932,6 +1014,7 @@ def main(): check_counts() check_prose() check_links() + check_site() for k in sorted(COUNTS): print("%-17s %5d checks" % (k, COUNTS[k])) if FAILS: diff --git a/tools/oracle/__init__.py b/tools/oracle/__init__.py index 3f92eab..9288a99 100644 --- a/tools/oracle/__init__.py +++ b/tools/oracle/__init__.py @@ -4,10 +4,10 @@ import importlib.util import sys if sys.version_info < (3, 14): - sys.exit("The manuspec tools need Python 3.14 or later; this is Python %d.%d." % sys.version_info[:2]) + sys.exit("The paperspec tools need Python 3.14 or later; this is Python %d.%d." % sys.version_info[:2]) _missing = [m for m in ("cryptography", "jsonschema") if importlib.util.find_spec(m) is None] if _missing: - sys.exit("The manuspec tools need %s %s; run them through pixi, or install %s with pip." + sys.exit("The paperspec tools need %s %s; run them through pixi, or install %s with pip." % ("the package" if len(_missing) == 1 else "the packages", " and ".join(_missing), "it" if len(_missing) == 1 else "them")) diff --git a/tools/site.py b/tools/site.py new file mode 100644 index 0000000..841ee00 --- /dev/null +++ b/tools/site.py @@ -0,0 +1,636 @@ +#!/usr/bin/env python3 +"""Build the paperspec website: every file of the repository, and its Markdown rendered as documentation. + +Non-normative tooling, standard library only. +Usage: python3 tools/site.py [--out DIR] [--base-url URL] +The output folder (default `_site/`) mirrors the repository, so each file is served at its own path: a schema at +the URL in its `$id`, the JSON-LD context at the address layers name, and every vector, fixture and table as it is. +Beside each Markdown file the builder writes a page, `README.md` becoming its folder's `index.html` and `X.md` +becoming `X.html`; a folder with no README gets a listing. It also writes the vocabulary page that the context's +term IRIs point at, a search index, a 404 page and one stylesheet. Links between Markdown files are rewritten to +the pages, so the site works from any host, and `deploy/Caddyfile` serves it with the right media types. +""" + +import argparse +import html +import json +import os +import re +import shutil +import sys + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +SKIP_DIRS = {".git", ".pixi", ".claude", "_site", "__pycache__", "node_modules", ".gitea", ".vscode", ".idea"} +SKIP_FILES = {".DS_Store"} +NAME = "paperspec" +REPO = "https://git.scient.ing/infra/paperspec" +BASE_URL = "https://paperspec.scient.ing" + + +def version(): + with open(os.path.join(ROOT, "CHANGELOG.md"), encoding="utf-8") as f: + m = re.search(r"^## (\S+)", f.read(), re.M) + return m.group(1) if m else "unreleased" + + +# --- inline Markdown ------------------------------------------------------------------------------------------ + +def slug(heading): + """A heading's anchor as GitHub, Gitea and Forgejo compute it (the same rule tools/check.py uses).""" + t = re.sub(r"[`*]", "", heading.strip().lower()) + t = "".join(ch for ch in t if ch.isalnum() or ch in " -_") + return t.replace(" ", "-") + + +def rewrite_href(target): + """A Markdown link target as a site link: `X.md` becomes `X.html`, `README.md` its folder.""" + if re.match(r"^[a-z][a-z0-9+.-]*:", target) or target.startswith(("/", "#")): + return target + path, hashmark, frag = target.partition("#") + if path.endswith(".md"): + head, base = os.path.split(path) + if base == "README.md": + path = (head + "/") if head else "./" + else: + path = path[:-3] + ".html" + return path + hashmark + frag + + +def inline(text): + """Render the inline Markdown the documentation uses: code spans, autolinks, links, strong and emphasis.""" + stash = [] + + def keep(s): + stash.append(s) + return "\x00%d\x00" % (len(stash) - 1) + + text = re.sub(r"(`+)(.+?)\1", lambda m: keep("%s" % html.escape(m.group(2).strip(), quote=False)), text) + text = re.sub(r"<(https?://[^>\s]+)>", + lambda m: keep('%s' % (html.escape(m.group(1)), html.escape(m.group(1)))), text) + text = html.escape(text, quote=False) + + def link(m): + label, target = m.group(1), html.unescape(m.group(2)) + return keep('%s' % (html.escape(rewrite_href(target)), emphasis(label))) + + text = re.sub(r"\[([^\]]+)\]\(([^)\s]+)\)", link, text) + text = emphasis(text) + while "\x00" in text: + text = re.sub(r"\x00(\d+)\x00", lambda m: stash[int(m.group(1))], text) + return text + + +def emphasis(text): + text = re.sub(r"\*\*(?=\S)(.+?)(?<=\S)\*\*", r"\1", text) + return re.sub(r"(?\1", text) + + +def plain(text): + """Inline Markdown as plain text, for titles and the search index.""" + text = re.sub(r"`+([^`]+)`+", r"\1", text) + text = re.sub(r"\[([^\]]+)\]\([^)]+\)", r"\1", text) + return re.sub(r"\*+([^*]+)\*+", r"\1", text).strip() + + +# --- block Markdown ------------------------------------------------------------------------------------------- + +LIST_RE = re.compile(r"^( *)([-*]|\d+\.)(?: +(.*)|$)") +FENCE_RE = re.compile(r"^( *)```(\S*)\s*$") +HEADING_RE = re.compile(r"^(#{1,6}) +(.*?)\s*#*\s*$") + + +def indent_of(line): + return len(line) - len(line.lstrip(" ")) + + +def starts_block(line): + return bool(HEADING_RE.match(line) or FENCE_RE.match(line) or LIST_RE.match(line) or line.startswith("|") + or line.startswith(": ")) + + +class Renderer: + def __init__(self): + self.ids = {} + self.headings = [] + self.title = None + + def heading_id(self, text): + base = slug(text) + n = self.ids.get(base, 0) + self.ids[base] = n + 1 + return base if n == 0 else "%s-%d" % (base, n) + + def blocks(self, lines): + out, i = [], 0 + while i < len(lines): + line = lines[i] + if not line.strip(): + i += 1 + continue + m = FENCE_RE.match(line) + if m: + pad = len(m.group(1)) + body, i = [], i + 1 + while i < len(lines) and not re.match(r"^ *```\s*$", lines[i]): + body.append(lines[i][pad:] if lines[i][:pad].strip() == "" else lines[i]) + i += 1 + lang = m.group(2) + cls = ' class="language-%s"' % html.escape(lang) if lang else "" + out.append("

%s
" % (cls, html.escape("\n".join(body), quote=False))) + i += 1 + continue + m = HEADING_RE.match(line) + if m: + level, text = len(m.group(1)), m.group(2) + hid = self.heading_id(text) + if level == 1 and self.title is None: + self.title = plain(text) + self.headings.append({"level": level, "text": plain(text), "id": hid}) + anchor = '#' % hid if level > 1 else "" + out.append('%s%s' % (level, hid, inline(text), anchor, level)) + i += 1 + continue + if line.startswith("|"): + rows = [] + while i < len(lines) and lines[i].startswith("|"): + rows.append(lines[i]) + i += 1 + out.append(self.table(rows)) + continue + if i + 1 < len(lines) and lines[i + 1].startswith(": ") and not starts_block(line): + items = [] + while i + 1 < len(lines) and lines[i].strip() and lines[i + 1].startswith(": "): + term, i = lines[i], i + 1 + desc = [] + while i < len(lines) and lines[i].strip(): + desc.append(lines[i][4:] if lines[i].startswith(": ") else lines[i].strip()) + i += 1 + items.append("
%s
%s
" % (inline(term.strip()), inline("\n".join(desc)))) + while i < len(lines) and not lines[i].strip(): + i += 1 + out.append("
%s
" % "".join(items)) + continue + m = LIST_RE.match(line) + if m: + html_list, i = self.list(lines, i) + out.append(html_list) + continue + para = [] + while i < len(lines) and lines[i].strip() and not (para and starts_block(lines[i])): + para.append(lines[i].strip()) + i += 1 + out.append("

%s

" % inline("\n".join(para))) + return "\n".join(out) + + def list(self, lines, i): + first = LIST_RE.match(lines[i]) + base = len(first.group(1)) + ordered = first.group(2)[0].isdigit() + items = [] + while i < len(lines): + m = LIST_RE.match(lines[i]) + if not m or len(m.group(1)) != base or m.group(2)[0].isdigit() != ordered: + break + content_col = base + len(m.group(2)) + 1 + body = [m.group(3) or ""] if m.group(3) else [] + i += 1 + while i < len(lines): + ln = lines[i] + if not ln.strip(): + nxt = next((x for x in lines[i + 1:] if x.strip()), None) + if nxt is not None and indent_of(nxt) >= content_col - 1 and indent_of(nxt) > base: + body.append("") + i += 1 + continue + break + if indent_of(ln) > base: + body.append(ln[min(indent_of(ln), content_col):]) + i += 1 + continue + if body and not starts_block(ln): + body.append(ln.strip()) # a lazy continuation of the item's paragraph + i += 1 + continue + break + inner = self.blocks(body) + if inner.startswith("

") and inner.count("

") == 1 and inner.endswith("

"): + inner = inner[3:-4] + items.append("
  • %s
  • " % inner) + while i < len(lines) and not lines[i].strip(): + nxt = next((x for x in lines[i:] if x.strip()), None) + m2 = LIST_RE.match(nxt) if nxt else None + if m2 and len(m2.group(1)) == base: + i += 1 + else: + break + tag = "ol" if ordered else "ul" + start = int(first.group(2)[:-1]) if ordered else 1 + attr = ' start="%d"' % start if start != 1 else "" + return "<%s%s>%s" % (tag, attr, "".join(items), tag), i + + def table(self, rows): + def cells(row): + row = row.strip() + if row.startswith("|"): + row = row[1:] + if row.endswith("|"): + row = row[:-1] + out, cur, tick = [], "", False + for ch in row: + if ch == "`": + tick = not tick + if ch == "|" and not tick: + out.append(cur.strip()) + cur = "" + else: + cur += ch + out.append(cur.strip()) + return out + + head = cells(rows[0]) + body = [cells(r) for r in rows[2:]] if len(rows) > 1 and re.match(r"^\|[\s:|-]+\|?$", rows[1]) else \ + [cells(r) for r in rows[1:]] + thead = "%s" % "".join("%s" % inline(c) for c in head) + tbody = "".join("%s" % "".join("%s" % inline(c) for c in r) for r in body) + return '
    %s%s
    ' % (thead, tbody) + + +def render_markdown(text): + r = Renderer() + body = r.blocks(text.split("\n")) + return body, r + + +# --- pages ---------------------------------------------------------------------------------------------------- + +NAV = [ + ("Start", [("README.md", "Home"), ("docs/overview.md", "Overview"), ("docs/concepts.md", "Concepts"), + ("docs/walkthrough.md", "Walkthrough"), ("docs/examples.md", "Examples"), ("docs/faq.md", "FAQ"), + ("docs/glossary.md", "Glossary"), ("docs/rationale.md", "Rationale"), + ("docs/comparison.md", "Comparison")]), + ("Specification", None), + ("Reference", [("schemas/README.md", "Schemas"), ("registry/README.md", "Registry"), + ("vectors/README.md", "Test vectors"), ("fixtures/README.md", "Fixtures"), + ("sql/README.md", "SQL"), ("context/README.md", "JSON-LD context"), ("vocab", "Vocabulary"), + ("tools/README.md", "Tools")]), + ("Project", [("CHANGELOG.md", "Changelog"), ("CONTRIBUTING.md", "Contributing"), ("LICENSE.md", "Licenses")]), +] + + +def page_path(md_rel): + """Where the page for a Markdown file goes, relative to the site root.""" + head, base = os.path.split(md_rel) + if base == "README.md": + return os.path.join(head, "index.html") + return md_rel[:-3] + ".html" + + +def page_url(md_rel): + if md_rel == "vocab": + return "vocab/" + p = page_path(md_rel) + return p[:-len("index.html")] if p.endswith("index.html") else p + + +def rel(from_page, to_url): + """A relative link from the page at `from_page` to the site URL `to_url` (both relative to the root).""" + start = os.path.dirname(from_page) or "." + target = to_url or "./" + trailing = target.endswith("/") + r = os.path.relpath(target.rstrip("/") or ".", start) + if r == ".": + return "./" + return r + "/" if trailing else r + + +def spec_nav(): + out = [] + for f in sorted(os.listdir(os.path.join(ROOT, "spec"))): + if re.match(r"\d\d-.*\.md$", f): + with open(os.path.join(ROOT, "spec", f), encoding="utf-8") as fh: + m = re.search(r"^# (.*)$", fh.read(), re.M) + out.append(("spec/" + f, plain(m.group(1)) if m else f)) + return [("spec/README.md", "Contents")] + out + + +def nav_html(page, here_md): + """The sidebar for the page at `page`, marking `here_md` (a Markdown path, `vocab`, or None) as current.""" + current = page_url(here_md) if here_md else None + parts = [] + for group, entries in NAV: + entries = spec_nav() if entries is None else entries + links = [] + for md, label in entries: + url = page_url(md) + cur = ' aria-current="page"' if current == url else "" + links.append('
  • %s
  • ' % (html.escape(rel(page, url)), cur, html.escape(label))) + parts.append('

    %s

      %s
    ' % (html.escape(group), "".join(links))) + return "".join(parts) + + +CSS = """\ +:root { + --bg: #fbfaf8; --surface: #f2efea; --text: #1d1c1a; --muted: #5d5a54; --rule: #dedad3; + --accent: #1f5f8b; --accent-soft: #e3edf4; --code-bg: #efece6; --mark: #fff3c4; + --sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; + --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace; +} +@media (prefers-color-scheme: dark) { + :root:not([data-theme="light"]) { + --bg: #161615; --surface: #1f1f1d; --text: #e9e6e0; --muted: #a6a29a; --rule: #34332f; + --accent: #7fb6dc; --accent-soft: #1d2c36; --code-bg: #24231f; --mark: #4a3f12; + } +} +:root[data-theme="dark"] { + --bg: #161615; --surface: #1f1f1d; --text: #e9e6e0; --muted: #a6a29a; --rule: #34332f; + --accent: #7fb6dc; --accent-soft: #1d2c36; --code-bg: #24231f; --mark: #4a3f12; +} +* { box-sizing: border-box; } +html { -webkit-text-size-adjust: 100%; } +body { margin: 0; background: var(--bg); color: var(--text); font: 16px/1.6 var(--sans); } +a { color: var(--accent); text-underline-offset: 2px; } +header.top { position: sticky; top: 0; z-index: 2; display: flex; gap: 1rem; align-items: center; + padding: .6rem 1rem; background: var(--bg); border-bottom: 1px solid var(--rule); } +header.top .brand { font-weight: 650; color: var(--text); text-decoration: none; letter-spacing: -.01em; } +header.top .version { color: var(--muted); font-size: .85rem; } +header.top .spacer { flex: 1; } +header.top input { width: min(18rem, 40vw); padding: .35rem .6rem; border: 1px solid var(--rule); border-radius: 6px; + background: var(--surface); color: var(--text); font: inherit; font-size: .9rem; } +.results { position: absolute; right: 1rem; top: 3rem; width: min(28rem, calc(100vw - 2rem)); max-height: 60vh; + overflow: auto; background: var(--bg); border: 1px solid var(--rule); border-radius: 8px; padding: .3rem 0; + box-shadow: 0 8px 24px rgba(0,0,0,.12); } +.results a { display: block; padding: .35rem .8rem; text-decoration: none; color: var(--text); } +.results a:hover, .results a:focus { background: var(--accent-soft); outline: none; } +.results small { display: block; color: var(--muted); } +.layout { display: grid; grid-template-columns: 16rem minmax(0, 1fr); max-width: 76rem; margin: 0 auto; } +nav.side { position: sticky; top: 3.2rem; align-self: start; max-height: calc(100vh - 3.2rem); overflow: auto; + padding: 1.2rem 1rem 2rem; font-size: .9rem; border-right: 1px solid var(--rule); } +nav.side h2 { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); + margin: 1.2rem 0 .3rem; } +nav.side ul { list-style: none; margin: 0; padding: 0; } +nav.side a { display: block; padding: .15rem .4rem; border-radius: 4px; text-decoration: none; color: var(--text); } +nav.side a:hover { background: var(--surface); } +nav.side a[aria-current] { background: var(--accent-soft); color: var(--accent); font-weight: 600; } +main { padding: 1.5rem 2.5rem 4rem; min-width: 0; } +article { max-width: 48rem; } +h1, h2, h3, h4 { line-height: 1.25; letter-spacing: -.01em; } +h1 { font-size: 2rem; margin: .2rem 0 1rem; } +h2 { font-size: 1.4rem; margin: 2.2rem 0 .6rem; padding-top: .4rem; border-top: 1px solid var(--rule); } +h3 { font-size: 1.12rem; margin: 1.6rem 0 .4rem; } +h1, h2, h3, h4, h5, h6 { scroll-margin-top: 4rem; } +.anchor { margin-left: .4rem; color: var(--muted); text-decoration: none; opacity: 0; font-weight: 400; } +h2:hover .anchor, h3:hover .anchor, h4:hover .anchor, .anchor:focus { opacity: 1; } +:target { background: var(--mark); } +p, ul, ol, dl, pre, .table-wrap { margin: 0 0 1rem; } +li + li { margin-top: .25rem; } +code { font: .88em/1.4 var(--mono); background: var(--code-bg); padding: .1em .3em; border-radius: 4px; + overflow-wrap: anywhere; } +pre { background: var(--code-bg); padding: .8rem 1rem; border-radius: 6px; overflow-x: auto; } +pre code { background: none; padding: 0; font-size: .85rem; overflow-wrap: normal; } +.table-wrap { overflow-x: auto; } +table { border-collapse: collapse; font-size: .92rem; min-width: 60%; } +th, td { text-align: left; vertical-align: top; padding: .45rem .7rem; border-bottom: 1px solid var(--rule); } +th { background: var(--surface); font-weight: 600; } +dt { font-weight: 650; margin-top: 1rem; } +dd { margin: .2rem 0 0 1.2rem; } +.meta { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--rule); color: var(--muted); font-size: .85rem; } +.meta a { color: var(--muted); } +.listing td:last-child { text-align: right; color: var(--muted); font-variant-numeric: tabular-nums; } +.crumbs { color: var(--muted); font-size: .9rem; margin-bottom: .5rem; } +details.menu { display: none; } +@media (max-width: 52rem) { + .layout { display: block; } + nav.side { display: none; } + details.menu { display: block; padding: .5rem 16px; border-bottom: 1px solid var(--rule); } + details.menu summary { cursor: pointer; font-weight: 600; } + details.menu nav.side { display: block; position: static; max-height: none; border: 0; padding: .5rem 0; } + main { padding: 1rem 16px 3rem; } + header.top { padding: .5rem 16px; } + header.top input { width: 9rem; } + h1 { font-size: 1.6rem; } +} +""" + +SEARCH_JS = """\ +(function () { + var input = document.getElementById("search"), box = document.getElementById("results"), index = null; + if (!input) return; + var root = document.documentElement.getAttribute("data-root") || ""; + function load(cb) { + if (index) return cb(); + fetch(root + "search.json").then(function (r) { return r.json(); }).then(function (j) { index = j; cb(); }) + .catch(function () { index = []; cb(); }); + } + function esc(s) { return s.replace(/[&<>"]/g, function (c) { return {"&": "&", "<": "<", ">": ">", '"': """}[c]; }); } + function show() { + var q = input.value.trim().toLowerCase(); + if (q.length < 2) { box.hidden = true; return; } + var hits = []; + index.forEach(function (p) { + if (p.title.toLowerCase().indexOf(q) >= 0) hits.push({url: p.url, text: p.title, page: ""}); + p.headings.forEach(function (h) { + if (h.text.toLowerCase().indexOf(q) >= 0) hits.push({url: p.url + "#" + h.id, text: h.text, page: p.title}); + }); + }); + hits = hits.slice(0, 25); + box.innerHTML = hits.length ? hits.map(function (h) { + return '' + esc(h.text) + (h.page ? "" + esc(h.page) + "" : "") + ""; + }).join("") : 'No matching heading'; + box.hidden = false; + } + input.addEventListener("input", function () { load(show); }); + input.addEventListener("keydown", function (e) { + if (e.key === "Escape") { box.hidden = true; input.blur(); } + if (e.key === "Enter") { var a = box.querySelector("a[href]"); if (a) location.href = a.href; } + }); + document.addEventListener("click", function (e) { if (!box.contains(e.target) && e.target !== input) box.hidden = true; }); + document.addEventListener("keydown", function (e) { + if (e.key === "/" && document.activeElement !== input) { e.preventDefault(); input.focus(); } + }); +})(); +""" + + +def layout(page, here_md, title, body, source=None, base_url=BASE_URL): + """A full page. `page` is the output path relative to the site root; `here_md` the Markdown it renders.""" + root = rel(page, "") + root = "" if root == "./" else root + ("" if root.endswith("/") else "/") + if page == "404.html": + root = "/" # served at whatever path was missing, so its links start from the site root + canonical = base_url.rstrip("/") + "/" + (page[:-len("index.html")] if page.endswith("index.html") else page) + nav = nav_html(page, here_md) + meta = "" + if source: + meta = ('

    Source: %s · raw

    ' + % (REPO, html.escape(source), html.escape(source), root, html.escape(source))) + return """ + + + + +{title} + + + + + +
    +{name}{version} + + + +
    + +
    + +
    +{body} +{meta} +
    +
    + + + +""".format(root=root, root_or_dot=root or "./", title=html.escape(title), canonical=html.escape(canonical), + name=NAME, version=html.escape(version()), nav=nav, body=body, meta=meta) + + +def size_text(n): + for unit in ("B", "KB", "MB"): + if n < 1024 or unit == "MB": + return ("%d %s" % (n, unit)) if unit == "B" else ("%.1f %s" % (n, unit)) + n /= 1024.0 + + +def listing(out, d, base_url): + """A page listing the files and folders of `d` (relative to the site root), for folders with no README.""" + full = os.path.join(out, d) + entries = sorted(os.listdir(full)) + rows = [] + if d: + rows.append('../') + for e in entries: + if e == "index.html": + continue + p = os.path.join(full, e) + if os.path.isdir(p): + rows.append('%s/' % (html.escape(e), html.escape(e))) + elif not (e.endswith(".html") and os.path.exists(os.path.join(full, e[:-5] + ".md"))): + rows.append('%s%s' + % (html.escape(e), html.escape(e), size_text(os.path.getsize(p)))) + crumbs = ['%s' % (rel(os.path.join(d, "index.html"), ""), NAME)] + parts = d.split("/") if d else [] + for i, part in enumerate(parts): + crumbs.append('%s' % (rel(os.path.join(d, "index.html"), "/".join(parts[:i + 1]) + "/"), + html.escape(part))) + body = ('

    %s

    %s/

    ' + '%s
    NameSize
    ' + % (" / ".join(crumbs), html.escape(d or NAME), "".join(rows))) + with open(os.path.join(full, "index.html"), "w", encoding="utf-8") as f: + f.write(layout(os.path.join(d, "index.html"), None, (d or NAME) + "/ · " + NAME, body, base_url=base_url)) + + +def vocab_page(out, base_url): + """The page the context's term IRIs point at: one entry per IRI fragment of the `sct` namespace.""" + with open(os.path.join(ROOT, "context", "scienting-1.jsonld"), encoding="utf-8") as f: + ctx = json.load(f)["@context"] + prefix = ctx.get("sct", "") + rows = [] + for term, value in ctx.items(): + if term.startswith("@") or term in ("sct", "as"): + continue + iri = value if isinstance(value, str) else value.get("@id", "") + if not iri.startswith("sct:"): + continue + local = iri[4:] + notes = [] + if isinstance(value, dict): + if value.get("@type") == "@id": + notes.append("an IRI") + if value.get("@type") == "@json": + notes.append("a JSON literal, kept intact") + if value.get("@container"): + notes.append("a set") + rows.append('%s%s%s%s' + % (html.escape(local), html.escape(term), html.escape(prefix), html.escape(local), + html.escape(", ".join(notes)))) + body = ("

    Vocabulary

    The terms the JSON-LD context " + 'scienting-1.jsonld adds to the W3C Web ' + 'Annotation vocabulary. Each term's IRI is a fragment of this page; ' + 'the context's guide explains how layers use them.

    ' + '
    %s' + "
    TermIRIValue
    " % "".join(rows)) + os.makedirs(os.path.join(out, "vocab"), exist_ok=True) + with open(os.path.join(out, "vocab", "index.html"), "w", encoding="utf-8") as f: + f.write(layout("vocab/index.html", "vocab", "Vocabulary · " + NAME, body, base_url=base_url)) + return {"title": "Vocabulary", "url": "vocab/", "headings": []} + + +def build(out, base_url=BASE_URL): + if os.path.exists(out): + shutil.rmtree(out) + os.makedirs(out) + mds = [] + for d, dirs, fs in os.walk(ROOT): + dirs[:] = sorted(x for x in dirs if x not in SKIP_DIRS and not (x.startswith(".") and x != ".well-known")) + reld = os.path.relpath(d, ROOT) + reld = "" if reld == "." else reld.replace(os.sep, "/") + if os.path.abspath(d) == os.path.abspath(out): + continue + for f in sorted(fs): + if f in SKIP_FILES or f.startswith("."): + continue + src = os.path.join(d, f) + if os.path.islink(src): + continue + dst = os.path.join(out, reld, f) + os.makedirs(os.path.dirname(dst), exist_ok=True) + shutil.copyfile(src, dst) + if f.endswith(".md"): + mds.append((reld + "/" + f) if reld else f) + index = [] + for md in mds: + with open(os.path.join(ROOT, md), encoding="utf-8") as f: + body, r = render_markdown(f.read()) + title = r.title or md + page = page_path(md) + full_title = (title + " · " + NAME) if md != "README.md" else NAME + " · " + title + with open(os.path.join(out, page), "w", encoding="utf-8") as f: + f.write(layout(page, md, full_title, body, source=md, base_url=base_url)) + index.append({"title": title, "url": page_url(md), + "headings": [{"text": h["text"], "id": h["id"]} for h in r.headings if h["level"] > 1]}) + index.append(vocab_page(out, base_url)) + for d, dirs, fs in os.walk(out): + reld = os.path.relpath(d, out) + reld = "" if reld == "." else reld.replace(os.sep, "/") + if "index.html" not in fs: + listing(out, reld, base_url) + with open(os.path.join(out, "404.html"), "w", encoding="utf-8") as f: + f.write(layout("404.html", None, "Not found · " + NAME, + '

    Not found

    No file of the specification has this address. ' + 'Start from the home page or search the headings above.

    ' + % html.escape(base_url.rstrip("/")), base_url=base_url)) + with open(os.path.join(out, "site.css"), "w", encoding="utf-8") as f: + f.write(CSS) + with open(os.path.join(out, "search.js"), "w", encoding="utf-8") as f: + f.write(SEARCH_JS) + with open(os.path.join(out, "search.json"), "w", encoding="utf-8") as f: + json.dump(sorted(index, key=lambda p: p["url"]), f, ensure_ascii=False, separators=(",", ":")) + f.write("\n") + return len(mds) + + +def main(): + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + ap.add_argument("--out", default=os.path.join(ROOT, "_site"), help="the output folder (default _site/)") + ap.add_argument("--base-url", default=BASE_URL, help="the site's address, for canonical links (default %s)" % BASE_URL) + a = ap.parse_args() + out = os.path.abspath(a.out) + if out == ROOT or ROOT.startswith(out + os.sep): + ap.error("the output folder must not be the repository or contain it") + n = build(out, a.base_url) + print("Wrote %d pages and every file of the repository to %s" % (n, out)) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/vectors/grading.jsonl b/vectors/grading.jsonl index 70adde2..5231602 100644 --- a/vectors/grading.jsonl +++ b/vectors/grading.jsonl @@ -1,3 +1,3 @@ -{"exercise":{"exercise":"anchor","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}],"feedback":{"hit":"That is the cell.","miss":"Look in Table 1, row CT–CT."},"points":"1"}]},"prompt":"Find the table cell that gives the Set A bond constant for the CT–CT bond.","rule":{"match":"same-node"}},"expect":{"exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"That is the cell.","max":"1","points":"1"}],"max":"1","score":"1","submission":"h4camq2b6fa0e"},"id":"anchor-hit","package":"fixtures/packages/hale2026harmonic","submission":{"answers":{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-submission/1","id":"h4camq2b6fa0e","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:00:00Z"}} -{"exercise":{"exercise":"anchor","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}],"feedback":{"hit":"That is the cell.","miss":"Look in Table 1, row CT–CT."},"points":"1"}]},"prompt":"Find the table cell that gives the Set A bond constant for the CT–CT bond.","rule":{"match":"same-node"}},"expect":{"exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"Look in Table 1, row CT–CT.","max":"1","points":"0"}],"max":"1","score":"0","submission":"bjgg8jyxh42w9"},"id":"anchor-miss","package":"fixtures/packages/hale2026harmonic","submission":{"answers":{"anchors":[{"context":{"column_path":["Set B","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"hw8fx4r","node_hash":"e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8","own_hash":"6356e0e8a0c4c9911e9657be9ee00e47fbe2ee6c54928d2b3d126266b19fa1e3","quote":{"exact":"305.2"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/h6s98vg6qcyjp","format":"scienting-submission/1","id":"bjgg8jyxh42w9","rev":12,"student":"s-9q4p","submitted_at":"2026-10-20T10:00:00Z"}} -{"exercise":{"exercise":"check","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"the most common description","prefix":"Harmonic bond terms remain ","suffix":" of covalent stretching in class"},"rev":12,"span":[27,54],"store":"smithlab"}],"points":"1"}],"verdict":{"points":"1","value":"supports"}},"prompt":"Does the cited passage support the claim that harmonic terms are the most common choice?","rule":{"match":"overlap","min_overlap":"0.5"}},"expect":{"exercise":"urn:scienting:annotation:smithlab/y228zv031s285","format":"scienting-grade/1","items":[{"element":"verdict","feedback":"","max":"1","points":"1"},{"element":"element:0","feedback":"","max":"1","points":"1"}],"max":"2","score":"2","submission":"ncf5gq0x1xny5"},"id":"check-overlap","package":"fixtures/packages/hale2026harmonic","submission":{"answers":{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"most common description of covalent","prefix":"Harmonic bond terms remain the ","suffix":" stretching in classical force f"},"rev":12,"span":[31,66],"store":"smithlab"}],"verdict":"supports"},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/y228zv031s285","format":"scienting-submission/1","id":"ncf5gq0x1xny5","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:05:00Z"}} +{"exercise":{"exercise":"anchor","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}],"feedback":{"hit":"That is the cell.","miss":"Look in Table 1, row CT–CT."},"points":"1"}]},"prompt":"Find the table cell that gives the Set A bond constant for the CT–CT bond.","rule":{"match":"same-node"}},"expect":{"exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"That is the cell.","max":"1","points":"1"}],"max":"1","score":"1","submission":"b479pkvhyafdh"},"id":"anchor-hit","package":"fixtures/packages/hale2026harmonic","submission":{"answers":{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-submission/1","id":"b479pkvhyafdh","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:00:00Z"}} +{"exercise":{"exercise":"anchor","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"context":{"column_path":["Set A","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"nkm3xn5","node_hash":"21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5","own_hash":"2937e2a6f14cfebd4ffd20e3d514e5cbbf0626a5c0089b7cbea817ef20782b3d","quote":{"exact":"310.0"},"rev":12,"store":"smithlab"}],"feedback":{"hit":"That is the cell.","miss":"Look in Table 1, row CT–CT."},"points":"1"}]},"prompt":"Find the table cell that gives the Set A bond constant for the CT–CT bond.","rule":{"match":"same-node"}},"expect":{"exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-grade/1","items":[{"element":"element:0","feedback":"Look in Table 1, row CT–CT.","max":"1","points":"0"}],"max":"1","score":"0","submission":"zw21e9386dtp2"},"id":"anchor-miss","package":"fixtures/packages/hale2026harmonic","submission":{"answers":{"anchors":[{"context":{"column_path":["Set B","$K_r$ (kcal mol⁻¹ Å⁻²)"],"row_path":["Bond parameters","CT–CT"],"table_label":"Table 1"},"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"cell","node":"hw8fx4r","node_hash":"e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8","own_hash":"6356e0e8a0c4c9911e9657be9ee00e47fbe2ee6c54928d2b3d126266b19fa1e3","quote":{"exact":"305.2"},"rev":12,"store":"smithlab"}]},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/tj573y8mhap0f","format":"scienting-submission/1","id":"zw21e9386dtp2","rev":12,"student":"s-9q4p","submitted_at":"2026-10-20T10:00:00Z"}} +{"exercise":{"exercise":"check","format":"scienting-exercise/1","key":{"elements":[{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"the most common description","prefix":"Harmonic bond terms remain ","suffix":" of covalent stretching in class"},"rev":12,"span":[27,54],"store":"smithlab"}],"points":"1"}],"verdict":{"points":"1","value":"supports"}},"prompt":"Does the cited passage support the claim that harmonic terms are the most common choice?","rule":{"match":"overlap","min_overlap":"0.5"}},"expect":{"exercise":"urn:scienting:annotation:smithlab/shn6geqn0rhvs","format":"scienting-grade/1","items":[{"element":"verdict","feedback":"","max":"1","points":"1"},{"element":"element:0","feedback":"","max":"1","points":"1"}],"max":"2","score":"2","submission":"mk28stafpq7sp"},"id":"check-overlap","package":"fixtures/packages/hale2026harmonic","submission":{"answers":{"anchors":[{"doc":"hale2026harmonic","format":"scienting-anchor/1","kind":"sentence","node":"mbtjsqv","node_hash":"97c328c2e2efedd931292eeda806d3e4bad14d67cfcc324537c0d993068cfbfc","own_hash":"c1c6019d21c26d790304f7f7a080e93cf507d0e22ebeec6bf2e7df19a1820b3b","quote":{"exact":"most common description of covalent","prefix":"Harmonic bond terms remain the ","suffix":" stretching in classical force f"},"rev":12,"span":[31,66],"store":"smithlab"}],"verdict":"supports"},"doc":"smithlab/hale2026harmonic","exercise":"urn:scienting:annotation:smithlab/shn6geqn0rhvs","format":"scienting-submission/1","id":"mk28stafpq7sp","rev":12,"student":"s-7k2m","submitted_at":"2026-10-20T10:05:00Z"}} diff --git a/vectors/keyed.jsonl b/vectors/keyed.jsonl index a063350..cb1ab04 100644 --- a/vectors/keyed.jsonl +++ b/vectors/keyed.jsonl @@ -1,5 +1,5 @@ -{"id":"team-key","key":"3360481dd1ccb82bd5a92c19dd34d47852240560db2e8b876ef1affa73cebe64","key_id":"ba87f5b02064d529","secret":"daddc3c4ce6c4d2b4e1af90bfaf463550133ea8cb50a0687986fdd2f80acfd57"} -{"id":"team-hmac-text","key":"3360481dd1ccb82bd5a92c19dd34d47852240560db2e8b876ef1affa73cebe64","text":"310.0","text_hash_keyed":"afcd9e073adf3fa07d076ab56b60565d8ac859efc7d86af8e86a4f53ffe93b5f","text_hash_plain":"b478fdfee29a549693a103681b3ad91c628d0f16ad0a7b2c5b089fe8ecd1f6ca"} +{"id":"team-key","key":"18bbe0daeb812b646577a77fe05e8a8ff77695b8a5121ab859e051812cafb66d","key_id":"dc3a5e64b55a972b","secret":"30fe6ec81905c8e0412719dd02bebe483c72ecd867332c76a35c67654ad5db18"} +{"id":"team-hmac-text","key":"18bbe0daeb812b646577a77fe05e8a8ff77695b8a5121ab859e051812cafb66d","text":"310.0","text_hash_keyed":"9df4869eb9769862199036065318395ff4a2b2bc6fb1ff9592bea75fce1fe05f","text_hash_plain":"b478fdfee29a549693a103681b3ad91c628d0f16ad0a7b2c5b089fe8ecd1f6ca"} {"id":"page-hashes","page_fps":["6272e6f3f4c1372f81ebcd20b813b836c62a1d683151cf135fc13900136213af","128d5f76c2c78ee9410c2ab4dda8abaee279db0caeec8a1cc019c3b1bd04ba60"],"page_hashes":["9dd865c7a19b44dc97a5d236859ed79174b25b72a5781d8df4f091d096de8908","1feb6882031349ca5eee822557bab0b6b0436a2d132ae8ca03babac2ff1948b8"]} {"context":"layer:smithlab/kp4m2x7q","id":"page-key","key":"9261e87d2bc1d4b20467346c447b3966c90497d846b04d3ce35fd4155719e925","page_fps":["6272e6f3f4c1372f81ebcd20b813b836c62a1d683151cf135fc13900136213af","128d5f76c2c78ee9410c2ab4dda8abaee279db0caeec8a1cc019c3b1bd04ba60"],"quote":"310.0","quote_mac":"0d8d4fcd55f1a4cfd7f254d597b7a5777b8865eb371283c03527ac8195ebb5ac"} {"guess":"310.0","guess_sha256":"b478fdfee29a549693a103681b3ad91c628d0f16ad0a7b2c5b089fe8ecd1f6ca","id":"non-holder","note":"Without the pages, a guess hashes to the plain value, which the export never carries; with one page changed, the key differs.","quote_mac":"0d8d4fcd55f1a4cfd7f254d597b7a5777b8865eb371283c03527ac8195ebb5ac","wrong_key":"759a346f4816f2f5777b4122bd65134d0abcc263eab24298040644a12b6491b2","wrong_page_fps":["6272e6f3f4c1372f81ebcd20b813b836c62a1d683151cf135fc13900136213af","59705a341da66488fe33522f8aa4d5f4fbb7438c790804a3dc35890ac46e3515"]} diff --git a/vectors/rights.jsonl b/vectors/rights.jsonl index 74c590a..2e90d3f 100644 --- a/vectors/rights.jsonl +++ b/vectors/rights.jsonl @@ -1,9 +1,9 @@ {"expect":{"allowed":true,"expired":false,"lacking":[]},"id":"convert-local","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"local","requires":{"ai":{"purpose":"internal"},"note":"Conversion by any model, local or outside.","uses":["tdm"]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"convert-model","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} {"expect":{"allowed":false,"expired":false,"lacking":["ai/internal/outside"]},"id":"convert-outside","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"outside","requires":{"ai":{"purpose":"internal"},"note":"Conversion by any model, local or outside.","uses":["tdm"]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"convert-model","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} {"expect":{"allowed":false,"expired":false,"lacking":["ai/internal/tenancy?"]},"id":"review-tenancy-unknown","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"tenancy","requires":{"ai":{"purpose":"internal"},"note":"Model review of suspects, in a job zip or the direct API mode.","uses":[]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"review-model","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} -{"expect":{"allowed":true,"expired":false,"lacking":[]},"id":"review-tenancy-policy","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[{"applies_to":{"basis":["subscription"],"doi_prefixes":["10.5555/"]},"at":"2026-10-05T09:00:00Z","by":"ana","format":"scienting-policy/1","id":"g6r348z7ckp4q","project":"smithlab-charges","signature":{"key":"ana","scheme":"ed25519","value":"fQpa0K8NvBNatxnI/NWXXY2Cnkk5ibcXt3wEteM6K6EKhMB1cruazG9jpX7z2zbbxVvFyh6fgB9jJ1dItHfKDg=="},"statement":"Our institutional agreement covers internal AI use in our own cloud account for these papers (fictional).","uses":{"ai":{"internal/tenancy":true}},"valid_until":"2027-08-31T23:59:59Z"}],"processor":"tenancy","requires":{"ai":{"purpose":"internal"},"note":"Model review of suspects, in a job zip or the direct API mode.","uses":[]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"review-model","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} +{"expect":{"allowed":true,"expired":false,"lacking":[]},"id":"review-tenancy-policy","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[{"applies_to":{"basis":["subscription"],"doi_prefixes":["10.5555/"]},"at":"2026-10-05T09:00:00Z","by":"ana","format":"scienting-policy/1","id":"g6r348z7ckp4q","project":"smithlab-charges","signature":{"key":"ana","scheme":"ed25519","value":"FLg+kUV7cf0v+t8tGkYEtKdEazsqBb7X2LTqRHmMXH3h3ue/SXiegRBFxgIKff28elJSFv5EG7dK9LqvOs+PAA=="},"statement":"Our institutional agreement covers internal AI use in our own cloud account for these papers (fictional).","uses":{"ai":{"internal/tenancy":true}},"valid_until":"2027-08-31T23:59:59Z"}],"processor":"tenancy","requires":{"ai":{"purpose":"internal"},"note":"Model review of suspects, in a job zip or the direct API mode.","uses":[]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"review-model","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} {"expect":{"allowed":true,"expired":false,"lacking":[]},"id":"index","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"local","requires":{"note":"The full-text index.","uses":["tdm"]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"index","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} -{"expect":{"allowed":false,"expired":false,"lacking":["processor:outside-no-retention","ai/internal/outside-no-retention?"]},"id":"embed-outside-refused","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[{"applies_to":{"basis":["subscription"],"doi_prefixes":["10.5555/"]},"at":"2026-10-05T09:00:00Z","by":"ana","format":"scienting-policy/1","id":"g6r348z7ckp4q","project":"smithlab-charges","signature":{"key":"ana","scheme":"ed25519","value":"fQpa0K8NvBNatxnI/NWXXY2Cnkk5ibcXt3wEteM6K6EKhMB1cruazG9jpX7z2zbbxVvFyh6fgB9jJ1dItHfKDg=="},"statement":"Our institutional agreement covers internal AI use in our own cloud account for these papers (fictional).","uses":{"ai":{"internal/tenancy":true}},"valid_until":"2027-08-31T23:59:59Z"}],"processor":"outside-no-retention","requires":{"ai":{"processors":["local","tenancy"],"purpose":"internal"},"note":"Embeddings for search.","uses":[]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"embed","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} +{"expect":{"allowed":false,"expired":false,"lacking":["processor:outside-no-retention","ai/internal/outside-no-retention?"]},"id":"embed-outside-refused","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[{"applies_to":{"basis":["subscription"],"doi_prefixes":["10.5555/"]},"at":"2026-10-05T09:00:00Z","by":"ana","format":"scienting-policy/1","id":"g6r348z7ckp4q","project":"smithlab-charges","signature":{"key":"ana","scheme":"ed25519","value":"FLg+kUV7cf0v+t8tGkYEtKdEazsqBb7X2LTqRHmMXH3h3ue/SXiegRBFxgIKff28elJSFv5EG7dK9LqvOs+PAA=="},"statement":"Our institutional agreement covers internal AI use in our own cloud account for these papers (fictional).","uses":{"ai":{"internal/tenancy":true}},"valid_until":"2027-08-31T23:59:59Z"}],"processor":"outside-no-retention","requires":{"ai":{"processors":["local","tenancy"],"purpose":"internal"},"note":"Embeddings for search.","uses":[]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"embed","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} {"expect":{"allowed":false,"expired":false,"lacking":["quote-public"]},"id":"publish-quotes","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"local","requires":{"note":"Publishing anything with quotations.","uses":["quote-public"]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"publish-quotes","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} {"expect":{"allowed":false,"expired":true,"lacking":["read"]},"id":"read-expired","now":"2027-09-01T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"local","requires":{"note":"Reading in the reader.","uses":["read"]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"read","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} {"expect":{"allowed":false,"expired":false,"lacking":["accessible-copy?"]},"id":"accessible-copy-unknown","now":"2026-10-11T00:00:00Z","origin":{"doi":"10.5555/example.hale.2026","retrieved_at":"2026-10-01T08:00:00Z","source":"publisher"},"policies":[],"processor":"local","requires":{"note":"An accessible copy for a user with a disability.","uses":["accessible-copy"]},"rights":{"asserted_by":{"by":"ana","evidence":[{"kind":"statement","note":"The library's subscription terms, as the team read them (fictional)."}]},"at":"2026-09-15T12:00:00Z","basis":"subscription","format":"scienting-rights/1","license":{"text":"Publisher's subscription terms (fictional)."},"uses":{"accessible-copy":"unknown","ai":{"external/local":false,"external/outside":false,"external/outside-no-retention":false,"external/tenancy":false,"internal/local":true,"internal/outside":false,"internal/outside-no-retention":"unknown","internal/tenancy":"unknown"},"quote-public":false,"read":true,"redistribute":false,"tdm":true},"valid_until":"2027-08-31T23:59:59Z"},"stage":"accessible-copy","witness_sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"} diff --git a/vectors/signatures.jsonl b/vectors/signatures.jsonl index e7bb14e..f2b65f8 100644 --- a/vectors/signatures.jsonl +++ b/vectors/signatures.jsonl @@ -1,2 +1,2 @@ {"id":"rfc8032-test-1","message":"","public":"d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a","secret":"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60","signature":"e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b"} -{"id":"receipt-r1","payload":"{\"format\":\"scienting-receipt/1\",\"hash\":\"72bc16bb7166388bb7ae132b838eb19c1477400b8b5d4354fa35a2a111a2b180\"}","public":"KaptcVSRRjQ1EaRm7sWY+ExKeNtrQ5Xny7G0sOQq1Rc=","receipt":{"at":"2026-10-11T15:02:11Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"dm452cm","sha256":"a6c7fc9f20c6a78160e77e2ab0154a64bec4d903b5fd1d2d99b5880591903872"},{"kind":"crop","node":"e0n07n0","sha256":"ae161916f2ff84503386df9733a7c878fe84015c17cfd36d5f9bce3539fb849b"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"ezb1n33","sha256":"638e1b8704af8aa5dfe1839c853a8f7ba0d8fa97fd2fdcbce2212f08bbdc0a91"},{"kind":"crop","node":"f929eq9","sha256":"cd6aaea1755038f67b5c0ccbdd962defba1eb35105cceb602b5cdbc3c215f7f2"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"h5psthj","sha256":"15efd08d97b3179177450b8dcbe3a5f409ab2b69264feaf4e683ecedb5f190b9"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"mkakqg3","sha256":"711a38b76111a51d10dfa95540ec9d532af4f747c579e0ce334ddb9f2dd6245e"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"},{"kind":"crop","node":"t6gjpee","sha256":"9947acdb70078a8d1fdf2ce9b654cce2eb5d20745f35370985b809e1b931de44"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"eqgbbpwb6725v","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["dm452cm","3bf0f8ecfaeabf8546ecfac5ff88a5083d40b39fbc9b7d23c57070a15276631e"],["e0n07n0","6ebc7eb98564471c9fabacf60e15bbc03ee019fa3a806731b8502db326a24f6c"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["ezb1n33","bc58a669d6c2dd62e34a8067482e99274365b7a9b640feb4e40f049cd4aa65f2"],["f929eq9","cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["h5psthj","3ef4e8338041687f926025a210859cf7f1686ace4b92bc4b5a1f96e03b55fb03"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["mkakqg3","3174ecb5b11912a58c22f7069747d93753fdf0c88684ee7264dc2c0cf2ab8fe5"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"],["t6gjpee","c63c1c3c34edbed309ddb56ded1c9dd788c5c49946e8af97b102a25ef1d96018"]],"rev":12,"root":"d2a524dee5ef347b313f1714a47f7bafd83f554266596e1ed4b3e52093642216","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"uNAcpyRK7e/7y6YIqBRxFQmpJ00WfFJKwSziKbuGrmR4y5t/H4l0C0X5ATVkySSwJ8gc6b0XIJ/BIgN+1ZJ1AA=="}},"record_hash":"72bc16bb7166388bb7ae132b838eb19c1477400b8b5d4354fa35a2a111a2b180","record_id":"eqgbbpwb6725v"} +{"id":"receipt-r1","payload":"{\"format\":\"scienting-receipt/1\",\"hash\":\"72bc16bb7166388bb7ae132b838eb19c1477400b8b5d4354fa35a2a111a2b180\"}","public":"RUiz5j+y0QwgOtsQpqXrlq+gy3c/JFnkxwvlWUNX4Ao=","receipt":{"at":"2026-10-11T15:02:11Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"dm452cm","sha256":"a6c7fc9f20c6a78160e77e2ab0154a64bec4d903b5fd1d2d99b5880591903872"},{"kind":"crop","node":"e0n07n0","sha256":"ae161916f2ff84503386df9733a7c878fe84015c17cfd36d5f9bce3539fb849b"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"ezb1n33","sha256":"638e1b8704af8aa5dfe1839c853a8f7ba0d8fa97fd2fdcbce2212f08bbdc0a91"},{"kind":"crop","node":"f929eq9","sha256":"cd6aaea1755038f67b5c0ccbdd962defba1eb35105cceb602b5cdbc3c215f7f2"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"h5psthj","sha256":"15efd08d97b3179177450b8dcbe3a5f409ab2b69264feaf4e683ecedb5f190b9"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"mkakqg3","sha256":"711a38b76111a51d10dfa95540ec9d532af4f747c579e0ce334ddb9f2dd6245e"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"},{"kind":"crop","node":"t6gjpee","sha256":"9947acdb70078a8d1fdf2ce9b654cce2eb5d20745f35370985b809e1b931de44"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"eqgbbpwb6725v","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["dm452cm","3bf0f8ecfaeabf8546ecfac5ff88a5083d40b39fbc9b7d23c57070a15276631e"],["e0n07n0","6ebc7eb98564471c9fabacf60e15bbc03ee019fa3a806731b8502db326a24f6c"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["ezb1n33","bc58a669d6c2dd62e34a8067482e99274365b7a9b640feb4e40f049cd4aa65f2"],["f929eq9","cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["h5psthj","3ef4e8338041687f926025a210859cf7f1686ace4b92bc4b5a1f96e03b55fb03"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["mkakqg3","3174ecb5b11912a58c22f7069747d93753fdf0c88684ee7264dc2c0cf2ab8fe5"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"],["t6gjpee","c63c1c3c34edbed309ddb56ded1c9dd788c5c49946e8af97b102a25ef1d96018"]],"rev":12,"root":"d2a524dee5ef347b313f1714a47f7bafd83f554266596e1ed4b3e52093642216","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"+skdLwMCrv5nRTZnnDnTRiOIfInXBSwR0AnF1OmrrJ9ULkEFOY1T0xKPdusxOejLWSKUY+bBXu7+sOgIpHqtBA=="}},"record_hash":"72bc16bb7166388bb7ae132b838eb19c1477400b8b5d4354fa35a2a111a2b180","record_id":"eqgbbpwb6725v"} diff --git a/vectors/spotcheck.jsonl b/vectors/spotcheck.jsonl index 0714aca..02138fc 100644 --- a/vectors/spotcheck.jsonl +++ b/vectors/spotcheck.jsonl @@ -1,4 +1,4 @@ -{"checker_public":"Z9Kcdd6RARODR/eUTI0yTXQkue0/K6ehrInEtAfGrzI=","id":"q1","minimum":10,"n":23,"rate":"0.05","receipt":{"at":"2026-10-11T15:02:11Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"dm452cm","sha256":"a6c7fc9f20c6a78160e77e2ab0154a64bec4d903b5fd1d2d99b5880591903872"},{"kind":"crop","node":"e0n07n0","sha256":"ae161916f2ff84503386df9733a7c878fe84015c17cfd36d5f9bce3539fb849b"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"ezb1n33","sha256":"638e1b8704af8aa5dfe1839c853a8f7ba0d8fa97fd2fdcbce2212f08bbdc0a91"},{"kind":"crop","node":"f929eq9","sha256":"cd6aaea1755038f67b5c0ccbdd962defba1eb35105cceb602b5cdbc3c215f7f2"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"h5psthj","sha256":"15efd08d97b3179177450b8dcbe3a5f409ab2b69264feaf4e683ecedb5f190b9"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"mkakqg3","sha256":"711a38b76111a51d10dfa95540ec9d532af4f747c579e0ce334ddb9f2dd6245e"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"},{"kind":"crop","node":"t6gjpee","sha256":"9947acdb70078a8d1fdf2ce9b654cce2eb5d20745f35370985b809e1b931de44"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"eqgbbpwb6725v","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["dm452cm","3bf0f8ecfaeabf8546ecfac5ff88a5083d40b39fbc9b7d23c57070a15276631e"],["e0n07n0","6ebc7eb98564471c9fabacf60e15bbc03ee019fa3a806731b8502db326a24f6c"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["ezb1n33","bc58a669d6c2dd62e34a8067482e99274365b7a9b640feb4e40f049cd4aa65f2"],["f929eq9","cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["h5psthj","3ef4e8338041687f926025a210859cf7f1686ace4b92bc4b5a1f96e03b55fb03"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["mkakqg3","3174ecb5b11912a58c22f7069747d93753fdf0c88684ee7264dc2c0cf2ab8fe5"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"],["t6gjpee","c63c1c3c34edbed309ddb56ded1c9dd788c5c49946e8af97b102a25ef1d96018"]],"rev":12,"root":"d2a524dee5ef347b313f1714a47f7bafd83f554266596e1ed4b3e52093642216","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"uNAcpyRK7e/7y6YIqBRxFQmpJ00WfFJKwSziKbuGrmR4y5t/H4l0C0X5ATVkySSwJ8gc6b0XIJ/BIgN+1ZJ1AA=="}},"sample":["ba6xp29","cq77erb","hw8fx4r","j3d4w5v","k3fqnvy","kw2fb3v","nkm3xn5","qn08tj9","sam8g7e","t3dsc22"],"seed":"7+dEvJY3lv+/v1h9qA91BrylG8gg4zOUygf5rAic7w1qSCzdbsugd8DjnzeuHr9JXlWC76FxqGhrGPW+IaKsAA==","seed_payload":"{\"format\":\"scienting-spot-check/1\",\"receipt\":\"72bc16bb7166388bb7ae132b838eb19c1477400b8b5d4354fa35a2a111a2b180\"}","size":10} +{"checker_public":"rkzxigjCXg869PGSFAVr4EDXXRmwk+S/+wJ93lrG4dc=","id":"q1","minimum":10,"n":23,"rate":"0.05","receipt":{"at":"2026-10-11T15:02:11Z","by":"ana","doc":"hale2026harmonic","evidence":[{"kind":"crop","node":"ba6xp29","sha256":"f8da39772d0f11f2ef05be9e9f26f8d5c8ef60a6c4fdd81d1e08b5f8dfa89943"},{"kind":"crop","node":"cq77erb","sha256":"414d9c94f57ac7039517d81bd915abe3d59711bb0aa8ca49e7b93b656d613b24"},{"kind":"crop","node":"dm452cm","sha256":"a6c7fc9f20c6a78160e77e2ab0154a64bec4d903b5fd1d2d99b5880591903872"},{"kind":"crop","node":"e0n07n0","sha256":"ae161916f2ff84503386df9733a7c878fe84015c17cfd36d5f9bce3539fb849b"},{"kind":"crop","node":"e4fkseg","sha256":"ab6ae30528212e54c2a74d8ed67631ff65f74055505dbe8af44d92a29bde0840"},{"kind":"crop","node":"ezb1n33","sha256":"638e1b8704af8aa5dfe1839c853a8f7ba0d8fa97fd2fdcbce2212f08bbdc0a91"},{"kind":"crop","node":"f929eq9","sha256":"cd6aaea1755038f67b5c0ccbdd962defba1eb35105cceb602b5cdbc3c215f7f2"},{"kind":"crop","node":"gy4avx6","sha256":"92248b149d2c3ec39ceeff1d3373f031f6a70cd1949c6f8122fdd6ebcd62b51c"},{"kind":"crop","node":"h5psthj","sha256":"15efd08d97b3179177450b8dcbe3a5f409ab2b69264feaf4e683ecedb5f190b9"},{"kind":"crop","node":"hw8fx4r","sha256":"91fe488a266419894e767e3cc454289006c60396d89ceae4874ba26615066e5d"},{"kind":"crop","node":"j3d4w5v","sha256":"ed0e073495b767d7f9fad42a4fb4a1cff766ef03b453269783fe374a813d226d"},{"kind":"crop","node":"j67ec9p","sha256":"ef98568b73187f04020315ab16047b8c736455c521cf67ec8c2c844ddbc03535"},{"kind":"crop","node":"k3fqnvy","sha256":"ea7890608de0285ed1b0d93383d60aa88e9c9b4fe33e4cf08715202bccc3696a"},{"kind":"crop","node":"kpk13yn","sha256":"a1ce0163f0916515deed37d4b345187528305507fbd847f68b92af0a7147af29"},{"kind":"crop","node":"kw2fb3v","sha256":"cd112f1274cc1350acc0f0b7f5fb6a7e69992277320eefd7a89177e3b818ba0a"},{"kind":"crop","node":"mkakqg3","sha256":"711a38b76111a51d10dfa95540ec9d532af4f747c579e0ce334ddb9f2dd6245e"},{"kind":"crop","node":"nkm3xn5","sha256":"9b6fe65013a5231ebfda702637f2fa7c47155f2a2dc35d93fd9e0097ec4f7af9"},{"kind":"crop","node":"qn08tj9","sha256":"3a959cece8b823dd6125490270d75ba3a8126710e11fef7746c30d294ba06b16"},{"kind":"crop","node":"rr9wvsy","sha256":"2009aedf8b2e7f5d17018e81633a9f594039dc03b199f447df0708d39f33e3c3"},{"kind":"crop","node":"sam8g7e","sha256":"69c110b291213b16b2825f6c9804a47f9da2f9537cb23d5c77ec22ca03c8b02b"},{"kind":"crop","node":"sxgcc9h","sha256":"3d7197ebb9d3256b54d773a0ed940a60c023e78a324649908f02682a3bdc66fa"},{"kind":"crop","node":"t3dsc22","sha256":"6a9991fdd7c4beac2e4396e9160305e819dbe1303487dc9777da3a022cdb7a4e"},{"kind":"crop","node":"t6gjpee","sha256":"9947acdb70078a8d1fdf2ce9b654cce2eb5d20745f35370985b809e1b931de44"},{"kind":"witness","sha256":"23b6b2aaece9cb0a828a2f0265539500fcf34d5195bf720b934b8bfdeccb9834"}],"format":"scienting-receipt/1","id":"eqgbbpwb6725v","level":"F3","nodes":[["ba6xp29","c0fe6b3090e024652f05c04c236932e6e0675efdc7bd4eab880fbc609b87abb8"],["cq77erb","f9a5df8760b27e0be045ca8fac31c6f810925a1c6f5f1adbf4d57c074e0ef7b7"],["dm452cm","3bf0f8ecfaeabf8546ecfac5ff88a5083d40b39fbc9b7d23c57070a15276631e"],["e0n07n0","6ebc7eb98564471c9fabacf60e15bbc03ee019fa3a806731b8502db326a24f6c"],["e4fkseg","5421e9cf0ef3a995792963d0371b79e11a8efad519b02efb5cb88311a896d0cc"],["ezb1n33","bc58a669d6c2dd62e34a8067482e99274365b7a9b640feb4e40f049cd4aa65f2"],["f929eq9","cd6cdb032e9b8ab712790b7181f794f6e363b7c4c96888049b59c671c1596369"],["gy4avx6","52404bd0f3b95103a0f46b59d3b6af851bcde8548fae6d349e82bc25d23a3b7e"],["h5psthj","3ef4e8338041687f926025a210859cf7f1686ace4b92bc4b5a1f96e03b55fb03"],["hw8fx4r","e554e4381827c90595a9083fd3a16e6cc72d0b14e52b3d86104c4b42a9f101b8"],["j3d4w5v","e1984eeb82451ef60cb4079dbe0c3f5f0cbd4fb359dc0a758da42f958013cb48"],["j67ec9p","b95706fc7f64b589532af7687297469d7fd2f48443190111c6361af96b578558"],["k3fqnvy","3667b6fda5e0fc2e714a303f597938e4a84a1c5786b7c233af323cba905dd745"],["kpk13yn","6e366c4aea409d36e918ad1bb71b1ec39c4203a5a0793bd66fc347c99b717760"],["kw2fb3v","dd26b057d6391ab1966fc1a6c49798e7a8e925f9c23a09812eb2758104cb6f36"],["mkakqg3","3174ecb5b11912a58c22f7069747d93753fdf0c88684ee7264dc2c0cf2ab8fe5"],["nkm3xn5","21f13b21948078f64c564334e5bb180b4495edb25a79ae32aa967986a626f3d5"],["qn08tj9","cc0bf73dd84e298da0d36c4b363c8d2bdc9b6d5738d1923d14c4a9028dca08d6"],["rr9wvsy","4a37ffce2a07de7a6fcbf4a63b0679945c79ac8db9d2ec492e0fb1ff5072540d"],["sam8g7e","9e2f3bd947511657e48b54d1fa44645b24217e10390215fb2086ea2e4f2031a9"],["sxgcc9h","76e06b4811a688357ac4b912172283463cfaf1b7a1f0795d274fc733a2309ba7"],["t3dsc22","5b180503866108fc210b788554bfdf02570e82a9f87754cd6e2293106d592158"],["t6gjpee","c63c1c3c34edbed309ddb56ded1c9dd788c5c49946e8af97b102a25ef1d96018"]],"rev":12,"root":"d2a524dee5ef347b313f1714a47f7bafd83f554266596e1ed4b3e52093642216","scope":"targeted:lode","signature":{"key":"ana","scheme":"ed25519","value":"+skdLwMCrv5nRTZnnDnTRiOIfInXBSwR0AnF1OmrrJ9ULkEFOY1T0xKPdusxOejLWSKUY+bBXu7+sOgIpHqtBA=="}},"sample":["cq77erb","e4fkseg","gy4avx6","j3d4w5v","j67ec9p","kpk13yn","nkm3xn5","rr9wvsy","sxgcc9h","t3dsc22"],"seed":"KdGMzgR7BtW5a69nqxUeKMgO6qZvqU2oBW1XLx5JqgK0670rnefve0VsqX6kbmvgSmHk04yCj5IVtbCvhjz0CQ==","seed_payload":"{\"format\":\"scienting-spot-check/1\",\"receipt\":\"72bc16bb7166388bb7ae132b838eb19c1477400b8b5d4354fa35a2a111a2b180\"}","size":10} {"id":"size-3","minimum":10,"n":3,"rate":"0.05","size":3} {"id":"size-10","minimum":10,"n":10,"rate":"0.05","size":10} {"id":"size-199","minimum":10,"n":199,"rate":"0.05","size":10}