Skip to main content

Original Art Archive logo

Original Art Archive Validator

This repository contains the reference validator for the Original Art Archive (OAA) Format.

The validator checks whether an OAA archive is valid according to OAA 0.1 Draft archive/content requirements: package structure, required manifest fields, manifest shape, archive path safety, manifest-local-path rejection, reference integrity, extension block shape, external link shape, and resource limits.

The validator uses schema/oaa-manifest.schema.json through jsonschema for manifest-local JSON Schema validation, then applies custom checks for package structure, archive paths, cross-manifest references, embedded file resolution, resource limits, and other rules that cannot be validated from one manifest document alone.

It does not certify reader or writer implementation behavior. A writer can run its emitted archive through this validator to check whether the archive is valid, and a reader can use the validator as a preflight check before reading an archive. The validator does not extract archive contents to disk and does not open or render embedded media files.

The normative format specification is maintained in Original-Art-Archive/oaa-spec.

Installation

Install from PyPI:

python -m pip install oaa-validator

Install development dependencies from a source checkout:

python -m pip install -r requirements\dev-requirements.txt
python -m pip install -e .

Usage

Validate an .oaa archive:

oaa-validator validate path\to\archive.oaa

Validate an unpacked OAA directory layout before packaging:

oaa-validator validate-dir examples\minimal

Emit machine-readable output:

oaa-validator validate-dir examples\minimal --json --show-info

Exit codes:

Code Meaning
0 No fatal or error findings.
1 Fatal or error findings were reported, or warnings were promoted with --warnings-as-errors.
2 CLI usage error.

Closed Base Value Checks

The validator rejects unknown values in OAA closed base value sets:

  • Reject files[].file_kind values other than raw, derivative, and supporting.
  • Reject files[].image_role values other than raw_scan, raw_photo, corrected_scan, detail, verso, and reference when the field is present and not null.
  • Reject base public_metadata.publication_status values other than published_art and unpublished_art when the field is present and not null.

Display-oriented strings such as public_metadata.media, public_metadata.artwork_type, artist_credits[].role, public_metadata.for_sale_status, and files[].format are not treated as controlled OAA values.

Traceability

Validator findings include both rule_id and requirement_ids.

Requirement IDs are not embedded in the public specification. They live in requirements/oaa-0.1.yaml, and requirements/traceability.md is generated from the catalog, rule metadata, and fixture metadata.

Only archive-validity requirements may have automated validator rules. Reader, writer, round-trip, public-display, and implementation-behavior statements are excluded from automated validator scope unless they define a concrete archive/content condition.

Refresh the traceability matrix:

python requirements/generate_traceability.py

Check that it is current:

python requirements/generate_traceability.py --check

Publishing

This repository publishes the oaa-validator package to PyPI from .github/workflows/publish.yml.

Publishing uses PyPI Trusted Publishing through the pypi GitHub environment. No PyPI API token is stored in this repository.

Release files for oaa-validator 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oaa-validator 0.1.2
File Size Uploaded
oaa_validator-0.1.2.tar.gz 24.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oaa-validator 0.1.2
File Interpreter ABI Platform
oaa_validator-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 52.8 kB

Release files / oaa_validator-0.1.2.tar.gz

Download URL oaa_validator-0.1.2.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
78b63e130a825a5f3c5e9d3489cb0be36e2858cab40698b6042f368871a097bb
BLAKE2b-256 checksum
How to use checksums
56634310a32ef9ed9c78ebdb7de6a0211deea4e04e949fa983d77e4d96cecbf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 19, 2026.

Transparency log

Release files / oaa_validator-0.1.2-py3-none-any.whl

Download URL oaa_validator-0.1.2-py3-none-any.whl
Size 28.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bac77815e6527dea3b68cefae7cebd37cb2808728d808e3af8d0203be6f14d8d
BLAKE2b-256 checksum
How to use checksums
f12084cee507a6e3fa67bd7226b6e6796ff71e6fbc538fcbaf087cfcacd56fd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page