Metadata-Version: 2.4
Name: ordvec-manifest
Version: 0.5.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Rust
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE-APACHE-2.0
License-File: LICENSE-MIT
Summary: Python bindings for ordvec index manifest verification
Keywords: vector-search,manifest,provenance,verification,quantization
Author: Nelson Spence
License: MIT OR Apache-2.0
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/Project-Navi/ordvec
Project-URL: Issues, https://github.com/Project-Navi/ordvec/issues
Project-URL: Repository, https://github.com/Project-Navi/ordvec

# ordvec-manifest

Python bindings for the `ordvec-manifest` verifier.

Install from PyPI:

```bash
python -m pip install ordvec-manifest
```

Import as `ordvec_manifest`. The package exposes the Rust manifest verifier as
dict-returning Python functions:

```python
import ordvec_manifest

report = ordvec_manifest.verify_manifest("index.manifest.json")
if not report["ok"]:
    raise RuntimeError(report["errors"])
```

Create manifests with caller-owned sidecars by passing dictionaries with
`name`, `path`, and optional `required`:

```python
manifest = ordvec_manifest.create_manifest(
    "index.ovrq",
    "index.manifest.json",
    "bge-small-en-v1.5",
    row_id_is_identity=True,
    auxiliary_artifacts=[
        {"name": "app.ids", "path": "ids.bin"},
        {"name": "optional.stats", "path": "stats.json", "required": False},
    ],
)
plan = ordvec_manifest.verify_for_load("index.manifest.json")
```

A consuming database can keep `row_id_identity` for the ordvec row count and
declare its ID sidecar file as a required auxiliary artifact (e.g. `app.ids`).
Do not encode the ID sidecar as JSONL row identity; the v1 JSONL row-map contract is UUID-only.

The verifier checks manifest shape, declared artifact digests and sizes, probed
ordvec index metadata, row identity, auxiliary artifact state, optional
calibration profiles, optional encoder-distortion profiles, and attestation
shape metadata. It does not sign artifacts, manage keys, call networks, mutate
index files, or decide deployment policy.

