From 16c740a98f58271fc7bb4c6df253b3813c4c1a3e Mon Sep 17 00:00:00 2001 From: nicweyand Date: Sun, 20 Sep 2026 11:57:47 -0400 Subject: [PATCH] Publish first signed Site Registry catalog trust --- README.md | 10 +-- docs/CONSUMERS.md | 19 +++--- docs/INDEX.md | 1 + docs/PUBLIC_CATALOG.md | 62 +++++++++++++++++++ trust/public-catalog-20260920/POLICY.md | 15 +++++ trust/public-catalog-20260920/policy.json | 23 +++++++ .../publisher-allowed-signers | 1 + .../reviewer-allowed-signers | 1 + 8 files changed, 120 insertions(+), 12 deletions(-) create mode 100644 docs/PUBLIC_CATALOG.md create mode 100644 trust/public-catalog-20260920/POLICY.md create mode 100644 trust/public-catalog-20260920/policy.json create mode 100644 trust/public-catalog-20260920/publisher-allowed-signers create mode 100644 trust/public-catalog-20260920/reviewer-allowed-signers diff --git a/README.md b/README.md index 37917aa..474e009 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,12 @@ facebook -> Facebook (Wikidata Q355) -> https://www.facebook.com/ public suffix: com ``` -The repository contains the library, CLI, schemas, migrations, and synthetic -fixtures. It does not contain a preapproved production dataset. A publisher must -import source evidence, collect signed reviews, and distribute a signed registry -generation. +The repository contains the library, CLI, schemas, migrations, synthetic +fixtures, and independently authenticated public trust roots. It does not place a +mutable production database in Git. Publishers import source evidence, collect +signed reviews, and distribute immutable signed registry generations. The first +public catalog generation is available as a release asset; see +[Public catalog](docs/PUBLIC_CATALOG.md). ## The basic idea diff --git a/docs/CONSUMERS.md b/docs/CONSUMERS.md index ad0c830..20ddad9 100644 --- a/docs/CONSUMERS.md +++ b/docs/CONSUMERS.md @@ -101,12 +101,15 @@ revocation history. Never mutate a complete generation to migrate it. See ## Argand integration `UPSTREAM.json` records the original Argand extraction baseline and file hashes. -The last recorded downstream integration replaced Argand's embedded crate with -signed v0.3.0 revision `ac8282093d8a815c6227cff86e1f40714d510bcd` at Argand -commit `d9dfd1585ce21d9c4136bcc24fa01fe3bfb8ed6e`. +Argand pins signed v0.5.0 revision +`3d3e08cdfd303df9fbd347a9bab2ba52ad575759`. The public beta uses Site Registry as +Navigate's authoritative auto-route catalog. Its native `navigation-catalog/v2` +file is only a collection- and content-policy-bound serving projection compiled +from one exact registry generation; it is not a second independently curated +destination catalog. -Version 0.5 is handed off as a signed standalone revision. Argand should update its -full Git `rev` in a separate coordinated source/build window, compare contract -changes, and rerun navigation compiler, native resolver, API, abstention, -revocation and clean-process gates. Changing the code dependency does not activate -a registry generation or approve a public destination. +Argand source commit `564ee5fc2fa0974a7b0557a914f274bbd4ab654c` records that boundary and the first +public-beta activation. Changing the code dependency alone still does not activate +a data generation or approve a destination. Every downstream must verify the +signed generation, preserve abstentions, apply its own safety policy, and bind any +serving projection to its own eligible corpus or directory policy. diff --git a/docs/INDEX.md b/docs/INDEX.md index 747ac35..d2f7fb7 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -8,6 +8,7 @@ - [Migrating to 0.4](MIGRATING-0.4.md): writer migration and trust transition. - [Source licenses](../crates/argand-site-registry/LICENSE_SOURCES.md): exact terms and attribution. - [Consumers](CONSUMERS.md): Rust, Python/CLI, data distribution and Argand transition. +- [Public catalog](PUBLIC_CATALOG.md): download, independent trust roots, verification, scope and refresh contract. - [Trust](TRUST.md): enforced checks and publisher/consumer responsibilities. - [Publishing](PUBLISHING.md): reviewer keys, candidate acceptance and activation. - [Evaluation](EVALUATION.md): bounded JSONL judgments and result interpretation. diff --git a/docs/PUBLIC_CATALOG.md b/docs/PUBLIC_CATALOG.md new file mode 100644 index 0000000..dbbdf89 --- /dev/null +++ b/docs/PUBLIC_CATALOG.md @@ -0,0 +1,62 @@ +# Public signed catalog + +The v0.5.0 Forgejo release publishes the first immutable data generation that any +Site Registry consumer can verify and resolve: + +- release: +- asset: `argand-site-registry-catalog-20260920-v1.tar.gz` +- asset SHA-256: + `d878fa057397effa5dc729d2fa3a689c8edd1f4112ef1326dd6131b3fdeab63e` +- generation pin: + `ede14746da8817aafdf705dd88cfeabbe8d23e1991e43a304acd8eca9249b18a` + +The release also carries a checksum file and an OpenSSH signature under namespace +`argand-site-registry-release`. Verify it against +[`trust/public-catalog-20260920/publisher-allowed-signers`](../trust/public-catalog-20260920/publisher-allowed-signers). +The signed Git history is the independent channel for the trust root; do not learn +the only trusted key from the archive it authenticates. + +```bash +sha256sum --check argand-site-registry-catalog-20260920-v1.tar.gz.sha256 +ssh-keygen -Y verify \ + -f trust/public-catalog-20260920/publisher-allowed-signers \ + -I argand-site-registry-publisher-v1 \ + -n argand-site-registry-release \ + -s argand-site-registry-catalog-20260920-v1.tar.gz.sig \ + < argand-site-registry-catalog-20260920-v1.tar.gz +``` + +After extraction, verify every member with `SHA256SUMS`, then authenticate the +generation and exact reviewer trust root: + +```bash +argand-site-registry activate \ + --generation public-release-v0.5.0/catalog \ + --current current.json \ + --allowed-signers trust/public-catalog-20260920/publisher-allowed-signers \ + --allowed-reviewers trust/public-catalog-20260920/reviewer-allowed-signers \ + --identity argand-site-registry-publisher-v1 + +argand-site-registry resolve \ + --generation public-release-v0.5.0/catalog \ + --pin ede14746da8817aafdf705dd88cfeabbe8d23e1991e43a304acd8eca9249b18a \ + --query "yahoo mail" +``` + +## Scope and trust + +This first catalog is deliberately small. Its disclosed policy uses one automated +evidence-gate reviewer group rather than claiming human-review quorum. Fresh exact +endpoint observations are required, and source conflicts or dangerous drift need +two groups, so the single automated reviewer must abstain on those risks. Sticky +revocations and publisher/reviewer key separation remain enabled. + +Consumers decide whether this policy is appropriate for their use. Preserve typed +abstentions, retain attribution, and apply independent malware and content policy. +Do not route to the first raw lookup result. High-risk or disputed catalogs should +use the unchanged two-human-reviewer reference policy. + +The generation's approvals expire. Installing an immutable archive is not a promise +that every decision stays valid forever: use the resolver's requested time, +consume cumulative signed revocation feeds when published, and move to a newly +signed full generation before relying on renewed decisions. diff --git a/trust/public-catalog-20260920/POLICY.md b/trust/public-catalog-20260920/POLICY.md new file mode 100644 index 0000000..3617480 --- /dev/null +++ b/trust/public-catalog-20260920/POLICY.md @@ -0,0 +1,15 @@ +# Argand automated high-confidence navigation policy + +This generation is a machine-reviewed public navigation directory. It does not +claim two independent human reviewers. The dedicated reviewer identity approves +only exact, unambiguous name and official-site assertions after source evidence +and a fresh bounded endpoint observation are present. + +The policy keeps sticky revocations, requires separate reviewer and publisher +keys, blocks source conflicts and dangerous drift, and gives those risk classes +a two-group threshold that this automated identity cannot satisfy. Ambiguous, +conflicting, stale, unobserved, expired, or revoked routes therefore abstain. + +Consumers choose whether to trust this publisher and policy. The stricter +two-human-reviewer reference policy remains unchanged and available for +high-risk, disputed, or manually governed catalogues. diff --git a/trust/public-catalog-20260920/policy.json b/trust/public-catalog-20260920/policy.json new file mode 100644 index 0000000..0b25b1a --- /dev/null +++ b/trust/public-catalog-20260920/policy.json @@ -0,0 +1,23 @@ +{ + "schema": "argand.site-policy/v1", + "name": "argand-automated-high-confidence-navigation-v1", + "names": { "approvals": 1, "groups": 1 }, + "edges": { "approvals": 1, "groups": 1 }, + "equivalences": { "approvals": 2, "groups": 2 }, + "sticky_revocations": true, + "publisher_reviewer_separation": true, + "require_name_votes": true, + "allow_legacy_reviews": false, + "maximum_approval_days": 30, + "require_edge_observation": true, + "maximum_observation_age_days": 7, + "block_source_conflicts": true, + "block_dangerous_drift": true, + "reviewer_groups": { + "argand-evidence-gate-v1": "argand-automated-evidence" + }, + "risk_thresholds": { + "source_conflict": { "approvals": 2, "groups": 2 }, + "dangerous_drift": { "approvals": 2, "groups": 2 } + } +} diff --git a/trust/public-catalog-20260920/publisher-allowed-signers b/trust/public-catalog-20260920/publisher-allowed-signers new file mode 100644 index 0000000..3d71ab0 --- /dev/null +++ b/trust/public-catalog-20260920/publisher-allowed-signers @@ -0,0 +1 @@ +argand-site-registry-publisher-v1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGfQ/Nk4eQsi7rwhlS3K9/P6vZ+6IZZka2V62iUfKOlB argand site registry publisher 2026-09-20 diff --git a/trust/public-catalog-20260920/reviewer-allowed-signers b/trust/public-catalog-20260920/reviewer-allowed-signers new file mode 100644 index 0000000..170977e --- /dev/null +++ b/trust/public-catalog-20260920/reviewer-allowed-signers @@ -0,0 +1 @@ +argand-evidence-gate-v1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICT/p/gmy3xn+X9H34+aDxW3ss725jn1Ugr+k9dAPMju argand automated evidence reviewer 2026-09-20