# PanorAi 3.5.0 release checklist This minor release packages the current protected-main feature and documentation line after the GitHub-only `v3.4.0` publication attempt. It adds an evidence-backed relative-pose feature profile and Experimental resolution selection, descriptor-free spherical detection, coarse-to-fine proposals, tangent-patch descriptors and organized RGB+XYZ loading. Stable geometry-v1, projection, object-workflow and spherical-feature-core contracts remain compatible. ## Candidate identity - [ ] One exact reviewed protected-main commit contains every release input and has no uncommitted or untracked release changes. - [ ] `CHANGELOG.md`, the publisher workflow, Pages recovery default, setuptools-scm fallback, manifest, artifact policy and contract tests all identify exactly 3.5.0 / `v3.5.0`. - [ ] A fresh review checks the complete `v3.4.0..candidate` diff and confirms that every new surface is documented at its actual stability tier. - [ ] The immutable `v3.4.0` tag and GitHub Release remain unchanged. Read-back confirms that no 3.4.0 file reached TestPyPI or PyPI and that 3.3.1 remains the latest package-index version before this release. ## Public contract and compatibility - [ ] Stable geometry-v1, object-workflow, spherical-feature-core, blender and 3.x compatibility inventories pass without removed names. - [ ] `SphericalFeaturePipeline.for_relative_pose()` preserves general preset defaults while freezing only the documented reference profile. - [ ] `shadow_padded` distinguishes cropped and materialized scanner rasters; padding is idempotent and geometric support is not inferred from black RGB. - [ ] Resolution selection, direct/coarse spherical detection, tangent patches, descriptor v2 and downstream pose/reconstruction/SLAM/stereo surfaces remain explicitly Experimental. - [ ] Removal of project-specific source helpers changes no wheel/sdist member or Stable/Compatibility export promised by the published package. ## Feature and data validation - [ ] Direct spherical detector localization covers seam, high-latitude, mask/support, deterministic selection, scale and empty-input cases. - [ ] Coarse-to-fine proposals preserve source-ERP provenance and compose with descriptor-neutral tangent patches and SIFT/ORB adapters. - [ ] Tangent descriptor v2 verifies photometric normalization, effective support, scale/orientation hypotheses, ordering and parallel determinism. - [ ] The resolution-selection report distinguishes converged plateaus from highest-resolution fallback and never resizes caller data implicitly. - [ ] `XYZImageDataset` requires explicit frame/units, validates organized PLY shape, keeps Open3D optional and ships no dataset bytes. ## Documentation and media - [ ] The README, user guide, capability map, benchmark guide and API reference agree on sphere-native, projection-domain and hybrid routes. - [ ] Strict Sphinx builds with zero warnings from source and extracted sdist; all executable examples pass from the installed wheel where applicable. - [ ] Only checksum-pinned approved tutorial media appear in the sdist and no raster documentation media appear in wheels. - [ ] Benchmarks label source, development wheel and published-release evidence separately and make no promotion claim for Experimental APIs. ## Source, wheel and platform validation - [ ] Full warnings-as-errors tests pass on Python 3.11–3.14, including NumPy, Torch CPU/autograd, conformance/oracle, multimodal consumers and new feature and data suites. - [ ] Both first-party native extensions build and execute on Linux x86_64 and aarch64, macOS Intel and arm64, and Windows AMD64 for Python 3.11–3.14. - [ ] The hosted aggregate contains exactly 20 wheels and one normalized sdist; every file passes `twine check`, checksum, metadata, license, content and provenance audits. - [ ] Fresh installed-wheel smoke outside the checkout proves version 3.5.0, installed origin, native availability, canonical imports and the new public feature/data exports. - [ ] A distinct fresh review reproduces the exact artifact inventory and the release-required installed-package evidence. ## Publication sequence — separate authorization required 1. Merge the reviewed release PR only after every hosted job passes on its exact head and repeat the complete matrix on the protected-main merge. 2. Record `GO-CANDIDATE` only after the exact merged commit and hosted aggregate are independently reviewed. 3. After explicit publication authorization, change only the three protected environment tag selectors from `v3.4.0` to `v3.5.0`; preserve required reviewers, administrator enforcement, custom policies and Trusted Publishers. 4. Create one signed annotated `v3.5.0` tag on the exact GO-CANDIDATE commit and publish one GitHub Release, the sole trigger of `python-publish.yml`. 5. Verify TestPyPI serves the exact workflow-built files, then run installed smoke, conformance, oracle, Torch and documentation checks. 6. Allow the protected workflow to promote the same files to PyPI and deploy Pages; no manual upload may bypass a failed gate. 7. Install `panorai==3.5.0` from production PyPI in a fresh environment and verify version, native extensions, public exports and artifact identity. The `v3.4.0` tag must never be moved, deleted or recreated. Published index files are immutable and may not be replaced.