Metadata-Version: 2.5
Name: qig-geocoding
Version: 0.1.2
Summary: Our own 'transformers' — a from-scratch neural-network framework built on Fisher-Rao geometry (simplex attention, unbounded Fourier features, recursive Φ-integration) instead of Euclidean dot-products.
Author: Braden Lang
License: Proprietary
License-File: LICENSE
Keywords: attention,fisher-rao,geometry,qig,simplex,transformers
Requires-Python: >=3.11
Requires-Dist: qig-core>=2.15.3
Requires-Dist: torch>=2.2
Provides-Extra: dev
Requires-Dist: mypy>=1.11; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: qigkernels>=0.4.4; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Description-Content-Type: text/markdown

# qig-geocoding

Fisher-Rao attention, Fourier position features and recursive integration for geometric neural networks.
Install with `pip install qig-geocoding`; the Python import is `geocoding`.

## Compatibility and metric units

The attention metric retains **radius 2**, `2 * acos(BC)`, matching qigkernels 0.4.4. Current qig-core uses
**radius 1**, `acos(BC)`. Convert explicitly when comparing distances. Halving attention distance without
also halving its temperature changes the model, so this release preserves existing attention outputs.
The finite-gradient guards also differ near coincident and sparse points; they are not exactly the same
function throughout the domain. Both full and compute-skipping banded attention remain faithfulness-gated.

Scientific provenance: `qig_core.torch.geometry_simplex.fisher_rao_distance_simplex` in qig-core 2.15.3
records the PI ruling reconciling its import paths to radius 1. The qig-verification EXP-009 causal-sweep
results document the historical radius-2 convention. These are compatible unit conventions, not grounds
to rewrite frozen experiment results. Dense-point conversion, sparse-point error bounds and the live Duchi
simplex projection are tested separately. Current qig-core already handles coincidence gradients safely.

## Release changes

- Preserve development's D1 local-critical curvature and opt-in basis telemetry, D2 query-only inter-layer
  geodesic sync, D4 `basin_layer_drift` naming, and the D3 countersigned preregistration amendment.
- Correct the obsolete equal-radius compatibility assertion; preserve attention arithmetic.
- Reject non-callable curvature providers at construction rather than silently swallowing invalid wiring.
- Align the runtime version with package metadata; require the current validated qig-core dependency.
- Install qigkernels in development/release checks so compatibility cannot silently skip. Lint, types and
  all CPU tests gate release. Resolve published dependencies in standalone checkouts without a parent workspace.

D3 is a preregistration, not a completed empirical result. This release does not claim that its
order-preservation kill experiment has passed. Basis reductions remain opt-in; sync enables them explicitly.

## Verify and publish

Install CPU PyTorch, then `pip install -e '.[dev]'`. Run `ruff check src tests`, `mypy src`, and `pytest -q`.
The trusted-publishing workflow uses the existing `pypi` environment and OIDC. Publication currently
requires a version tag after promotion; merging alone does not trigger `release.yml`. Manual dispatch runs
checks/build only. Release operators must verify the wheel version and PyPI availability before declaring
publication complete.
