Python API measurements for 0.9

The published 0.8.0a1 wheel and installed 0.9.0a1/ABI 53 workstation wheel read the same schema-27 fixture: 5,000 assets and 1,050 revisions. Three fresh-process samples per successful path use Python 3.11.15 and tracemalloc on Linux. Inputs and raw samples preserve provenance. The schema-27 storage/history measurements remain the separate 0.8 baseline; this source redesign changes no format.

Path

Published 0.8 median

0.9 median

0.9 Python allocation peak

All assets, pages/scan of 100

1.007 s, manual pages

1.029 s, scan

780 KB

All revisions, pages/scan of 100

0.788 s, manual pages

0.799 s, scan

794 KB

Stage 1,000 metadata values

0.764 s, explicit types

0.762 s, native pairs/integers

719 KB

Resolve one asset 100 times

0.810 s

0.770 s

774 KB

Asset scan pages of 10, 100 and 1,000 peak at 733 KB, 780 KB and 1,244 KB respectively. The page size controls retained copied values; collecting the whole scan into a list deliberately forfeits that bound. The old eager asset collection rejects this fixture with its documented convenience-bound error. It supplies no comparable full-scan timing. Its manual pages still complete.

The workload-specific regression allowance is twice the corresponding 0.8 median for equivalent complete work. This leaves room for interpreter/trace overhead while detecting gross extra scans or per-value setup costs; all four paths pass. These measurements include open/validation and actual read/staging work, not isolated conversion microbenchmarks. Metadata staging rolls back.

Python allocation peaks exclude Rust/SQLite allocations. Raw process RSS also includes interpreter and loader costs and is not interchangeable with those peaks. The fixture establishes bounded behavior and comparable local costs; it does not establish a general speedup, production-media search latency or cross-platform performance.

Qualified 0.9 and revised ABI 57

The same schema-27 fixture was read with the preserved ABI-53 wheel and the ABI-57 wheel. Three fresh Python 3.11.15 processes per path use the same workstation while a host build runs. Inputs and hashes and individual samples under docs/evidence/release-0.9/abi57-measurements/ identify this scope.

Complete path

ABI 53 median

ABI 57 median

ABI 57 Python allocation peak

Scan 5,000 assets, pages of 100

0.994 s

0.972 s

775 KB

Scan 1,050 revisions, pages of 100

0.822 s

0.815 s

794 KB

Stage 1,000 native metadata values

0.753 s

0.785 s

715 KB

Resolve one asset 100 times

0.789 s

1.036 s

771 KB

All paths remain within twice the corresponding qualified 0.9 median, the same gross-regression allowance used above. Resolution now includes copied verified-selection bookkeeping; this measurement establishes an acceptable local cost, not a speedup. Metadata staging rolls back. The new conversion captures at most 4,096 members and rejects depth beyond 32 before staging; selection indexes required resources and adds no filesystem scan. Existing page bounds and the Python-allocation/RSS distinction remain unchanged.