feat: establish standalone Argand Site Registry

This commit is contained in:
Nic Weyand 2026-09-12 21:38:59 -04:00
commit 2a0fe1714b
Signed by: nicweyand
SSH key fingerprint: SHA256:2te+ycJIQON/Wo/dH6+ZkFSQ4HnHWpetV2azx9E65dQ
60 changed files with 10494 additions and 0 deletions

57
docs/CONSUMERS.md Normal file
View file

@ -0,0 +1,57 @@
# Consumer and compatibility contract
## Rust library
Use `argand_site_registry::query::Registry::open(generation, trusted_pin)` once per
immutable generation and reuse the reader. `lookup(query, limit)` returns evidence
and complete ambiguity counts; `resolve(query, locale, country, now)` returns an
optional reviewed candidate. Check the compiled example and API docs for exact
types. `selection_context` binds the full alternative set for downstream query
review. Preserve the returned provenance, scopes, counts and attribution.
For local integration, point a Cargo dependency at
`crates/argand-site-registry` inside an extracted standalone source tree. Once an
upstream repository is published, use its actual Git URL and a full reviewed `rev`
pin. Do not invent a crates.io version or track a mutable branch in production.
Both crates remain in this workspace; the atomic helper is a relative dependency.
## CLI and other languages
`lookup`, `resolve`, `verify` and the other commands emit JSON. The Python example
passes arguments directly to the native executable, preserving query text and the
entire response. A nonzero exit is an error. `destination: null` is a successful
abstention, not a request to pick the first lookup candidate. Render source names
as untrusted text and satisfy their source-specific attribution requirements.
Use a bounded process or service wrapper appropriate to your workload. The Python
example has a 60-second timeout and invokes a fresh reader per request; for repeated
low-latency queries, use the reusable Rust reader. No hosted API or Python package
registry publication is claimed by this repository.
## SQLite, JSONL and license scope
Distribute `registry.sqlite`, `COMPLETE.json`, `LICENSE_SOURCES.md` and
`ATTRIBUTION.json` together, plus the publisher signature when applicable. The
database contains audit records and source descriptions. Default JSONL export
omits descriptions and includes fact provenance plus an attribution envelope.
It is an assertion export, not a self-contained signed list of admitted routes.
Raw SQL inspection is useful for audit; it does not implement resolution policy.
Code version 0.1.0 is an initial interface. Schema/rule contracts are versioned
independently in receipts. Unsupported contracts fail closed. Pin source releases,
compile consumers and replay fixed fixtures before upgrades. Preserve import and
review history; never mutate complete generations to migrate them.
## Argand transition
UPSTREAM.json pins the exact Argand source baseline, including the beta agent's
selection-context API. The first standalone extraction preserves runtime Rust and
migration bytes. Argand currently consumes its embedded workspace crate; this
package does not silently redirect that dependency.
At cutover, coordinate with the Argand source/build owner, compare both trees with
the recorded baseline, carry any subsequent fixes forward, replace the embedded
dependency with a reviewed standalone revision, and run Argand's complete engine
and navigation-compiler gates. Preserve existing registry receipts and public
navigation admission. After cutover, develop the library upstream and update
Argand through explicit pinned dependency changes, avoiding permanent dual copies.