Files
paperspec/CHANGELOG.md
T
alexmandClaude 516148146f feat: publish the package from CI, and clean up its references
Publishing
- .gitea/workflows/publish.yml publishes paperspec to the instance's PyPI
  registry (/api/packages/infra/pypi) when a v* tag is pushed: it checks
  the repository, builds the sdist and wheel, refuses to upload unless the
  built version equals the tag, runs twine check --strict, and uploads
  with the secrets PACKAGE_USER and PACKAGE_TOKEN (--skip-existing, so a
  rerun on the same tag is safe). Run by hand, it refuses anything but a
  tag.
- pixi dev environment: twine >= 6.1 (the first that reads Metadata 2.4),
  and `dist` (sdist and wheel) replaces the `wheel` task.
- deploy/README.md: how to set up the secrets, release a version, and
  install from the registry with pixi, uv or pip, tying paperspec to the
  registry where the installer allows it.
- CONTRIBUTING.md "Releasing": a tag versions the package; a format
  change takes the new format version as the top CHANGELOG heading, and a
  code-only release takes the next patch as a subsection, as 0.1.1 does.
- pyproject: fallback_version 0+unknown for source trees without git; the
  license expression is Apache-2.0 AND CC0-1.0, for the code and the data
  the wheel carries.

Cleanup (from an audit of every reference to the package)
- spec/00 lists src/ (the package) and tools/ (how to run it), and no
  longer says the reference implementation is not a library.
- Stale explanations fixed in pixi.toml, .gitignore, the Caddyfile, the
  vectors, context, sql and tools READMEs, docs/examples.md, docs/faq.md,
  spec/01, docs/rationale.md and docs/comparison.md: the commands, what
  they need (the tools extra), the fixture folder hale2026harmonic-damb,
  and three lines that held two sentences.
- tools/README.md counts all six commands, says what needs which extra
  (package.validate and corrections.gate need [schema]), and that the
  vectors ship but the fixtures they name do not.
- The CLI's install and clone hints point at the registry instructions and
  an https clone URL; schema.py raises an ImportError naming
  paperspec[schema], as crypto.py does for [crypto].
- check's Unicode check now guards the package's pinned constant.
- site skips build/, dist/ and *.egg-info.
- CHANGELOG 0.1.1 describes the final state.

pixi run check passes (as `python -m paperspec check`); the rebuild is
byte-identical. pixi.lock needs `pixi lock` for twine before pushing: the
publish workflow installs with --locked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 09:41:26 -04:00

4.7 KiB

Changelog

A change to any computed value is a breaking change and needs a new major version of the format it touches; see spec/00-introduction.md.

0.1.0

The first release.

  • The specification, in chapters 0 to 23, covering every format: 32 formats, of which 19 are candidate and 13 provisional.
  • 42 JSON Schemas, using a keyword subset that independent validators read alike.
  • Tables for SQLite, Dolt and PostgreSQL, a team's store, and the SQLite bundle with full-text search.
  • The JSON-LD context for layers, and registries of formats, rules, download-stamp rules and default stage requirements.
  • Test vectors for every computed value, from canonical JSON to anchor resolution, grading and the target set of targeted F3.
  • Example packages (a converted chemistry paper with corrections and receipts, its checks-only export, an open-access paper, a Typst draft and a tiny document, also as a zip), a record of every other format, and 31 broken packages, each breaking one named rule.
  • Work keys minted from a Scholar-style citation key and a hash of the work's identity, with document keys for versions; tag: URIs for layers, annotations and documents.
  • Spot-check seeds as VRF proofs (RFC 9381), RFC 9162 inclusion and consistency proofs, a history root over every document's corrections, and a provisional transparency log with signed checkpoints.
  • Signed QA reports, a conformance checklist covered by a receipt, and a description annotation for the figure descriptions an accessible export needs.
  • ML-DSA-65 (FIPS 204) as a signature scheme, with a reference implementation checked against NIST's vectors; cose reserved; did:key identifiers for roster keys; the hash algorithm named in every document; model provenance by weights, prompt and parameters; witnesses and a static tile layout for the log; and the character data pinned to Unicode 16.0.
  • Guides for newcomers: an overview, the concepts, a walkthrough of the example paper, runnable examples, the rationale, a FAQ and a glossary.
  • Tools that build and check everything, validate packages and zipped packages and run proposed corrections through the gate, load packages into SQLite or a bundle, and stress the reference implementation with random inputs.
  • A pixi workspace pinned to Python 3.14, with tasks for checking, building, linting, validating and loading.

0.1.1

Packaging, commands and lazy imports only; the formats stay at 0.1.0, and no computed value, vector, fixture, schema or SQL file changed.

  • The oracle moves from tools/oracle/ to src/paperspec/ and installs as the Python package paperspec (pyproject.toml, setuptools), with schemas/, sql/ and vectors/ as the data subpackages paperspec.schemas, paperspec.sql and paperspec.vectors, so other repositories import the reference implementation instead of reimplementing it.
  • The package version comes from git tags through setuptools-scm.
  • The base package has no dependencies and requires Python 3.14, the only version with the Unicode 16.0 character data the specification pins, and refuses to import under any other Unicode version; the extras paperspec[schema] (jsonschema, referencing), paperspec[crypto] (cryptography) and paperspec[tools] (both) cover schema and the HKDF and Ed25519 functions of crypto, which now import their packages on first use.
  • paperspec.resources.path finds the schemas, SQL and vectors in an installed wheel and in an editable install alike.
  • The programs in tools/ become subcommands of one command, paperspec, in src/paperspec/cli/: paperspec validate, load, check, build, stress and site, which the pixi tasks and the workflows run, and which python -m paperspec also runs. The scripts tools/*.py are gone, so python3 tools/check.py and the like no longer work; tools/ keeps the page that documents the commands.
  • paperspec --help says which commands work anywhere and which need a checkout, each command's --help gives advice and examples, a misspelled command gets a suggestion, and paperspec --version prints the package version and the Unicode version it pins.
  • paperspec load refuses --built-from and --store without --bundle, where it used to ignore them.
  • src/ is Apache-2.0, as tools/ was, and the package metadata states Apache-2.0 AND CC0-1.0 for the code and the data it carries.
  • The pixi workspace installs the package editable, and a dev environment builds the sdist and the wheel with pixi run -e dev dist.
  • Pushing a version tag publishes the package to the Gitea package registry through .gitea/workflows/publish.yml (deploy/); a release tag versions the package, and CONTRIBUTING.md says how that relates to the format version.