Website release integrity — canonical PROD + appendix rails
This page publishes canonical release pointers and trust anchors for verifying MVG verifier UI assets in an audit-ready way.
Single-source reviewer navigation. If any page text conflicts with a signed receipt, treat it as HOLD and follow the receipt.
/.well-known/mvg-prod.json (+ .asc) is the single signed production pointer.
Determine state from signature validity (fail‑closed):
missing ⇒ HOLD; invalid ⇒ FAIL; valid signature ⇒ proceed to verify referenced receipts offline.
site_release_verification_keyring_url = /trust/site-release/latest/pgp.asc
· security_contact_encryption_key_url = /pgp.asc
· security.txt
🔐 Production posture — offline keys, fail‑closed semantics
Production keys are kept offline. PROD publications are released via a controlled ceremony and include complete signature material. Deterministic output: public verifiers return PASS only when all required signatures and evidence are present and valid. If anything is missing, withheld, or unverifiable, the result is HOLD (fail‑closed). Candidate and demo compatibility remain appendix rails for ceremony review only.
🧭 Canonical public rail — run the PROD command
Use PROD for public verification. Compatibility and candidate rails remain below as appendix references only.
Appendix rails: compatibility rail · candidate ceremony
Enhanced verification (optional): anchors + witness threshold
# Site release (PROD) — enhanced modes: python3 public_verify_site_release_v50_4.py --site-root . --trust-mode prod --require-anchors --verbose python3 public_verify_site_release_v50_4.py --site-root . --trust-mode prod --require-anchors --require-witness-threshold 2 --verbose # Deployments (PROD) — enhanced modes: python3 downloads4/public_verify_deploy_txn_v51.py --site-root . --trust-mode prod --require-anchors --verbose python3 downloads4/public_verify_deploy_txn_v51.py --site-root . --trust-mode prod --require-anchors --require-witness-threshold 2 --verboseOptional flags only; default PROD is fail‑closed and returns PASS only when the signed receipts prove it.
🔎 Auditor quickstart — 5 canonical links
Prefer one page? Open Trust Center.
External audit can start here. Open these five URLs to reproduce trust posture and evidence (offline-verifiable, fail‑closed).
Identity receipts (detached signatures):
/.well-known/mvg-company.json.asc ·
/.well-known/mvg-governance.json.asc
— see signing & audit runbook.
Operations receipts (detached signatures):
/.well-known/mvg-aims.json.asc ·
/.well-known/mvg-safety-ir.json.asc
— see receipts signing ceremony.
Production pointer (receipt; detached signature):
/.well-known/mvg-prod.json ·
/.well-known/mvg-prod.json.asc
— missing or unverifiable signature MUST yield HOLD (fail‑closed).
Production anchor (timestamp proof; RFC3161; TSA CA chain via KYB packet):
/.well-known/mvg-prod.anchor.json ·
/.well-known/mvg-prod.receipt.sha256.tsr
— missing/placeholder anchor MUST yield HOLD (fail‑closed).
Production anchor #2 (optional; RFC3161; recommended: independent TSA operator):
/.well-known/mvg-prod.anchor2.json ·
/.well-known/mvg-prod.receipt.sha256.tsr2
— missing/placeholder anchor MUST yield HOLD when required.
Production witness ceremony evidence (public‑safe; roles only):
/.well-known/mvg-prod.ceremony.json ·
/.well-known/mvg-prod.ceremony.json.asc
— missing or unverifiable signature MUST yield HOLD when required.
🧾 Procurement 1‑pager — what to attach (30‑minute buyer‑run)
For Fortune 500 / Big Tech procurement & security: attach one signed URL (DSSE) and you can reproduce deterministic PASS/FAIL/HOLD offline. Missing/invalid signatures ⇒ HOLD (fail‑closed).
Packet sha256 is committed into the procurement transparency log leaf: inclusion proof.
Outputs (generated by the verifier kit): MVG_AuditSummary.pdf · MVG_CountersignedApproval.json · MVG_KitSupplyChainReceipt.json
Appendix — compatibility rail (demo mode)
For Microsoft / Big Tech reviewers: reproduce deterministic public verification end-to-end without MVG production keys.
- Download compatibility evidence bundle
- Download Procurement Ticket Pack (sample) (attach 1 zip)
- Unzip and run:
Verifier output is deterministic: PASS when signatures & evidence verify; otherwise HOLD (fail‑closed). Output includes reason codes.
Verify the signed status artifact (optional)
# Sample compatibility example (works from Evidence Bundle or full site root): gpg --import trust/site-release/demo/pgp.asc gpg --verify trust/site-release/demo/releases/MVG_SITE_RELEASE_STATUS_LATEST.json.asc \ trust/site-release/demo/releases/MVG_SITE_RELEASE_STATUS_LATEST.json
The website UI is display-only. Signed artifacts are authoritative.
Sample/demo keys only — not production trust.
🏛️ Production rail (PROD — authoritative)
Public PASS requires MVG operator-held production signatures. Unsigned or partial publication ⇒ HOLD.
- Download PROD Evidence Bundle
- Download Procurement Ticket Pack (PROD) (attach 1 zip)
- Unzip and run:
Output is deterministic: PASS only when production signatures are complete and valid; otherwise HOLD (fail‑closed). Candidate rail: candidate ceremony rail ⇒ HOLD (exit 2) by design.
Appendix — candidate ceremony rail
Pre‑ceremony candidate channel. Missing signing material is intentional to demonstrate fail‑closed governance: If it’s missing, it’s HOLD.
- Download current candidate bundle
- Unzip and run:
Expected: HOLD (exit 2) — by design (candidate).
Checklist + post‑publish verification (1 page)
Keys stay offline. Publication is atomic. And if anything is missing, the verifier must return HOLD (fail‑closed). This section is the operator template you asked for.
Signing ceremony checklist
- Roles: signer (key custodian), operator (publishes), witness (records hashes). Separate duties.
- Pinned inputs: fetch
pgp.asc+pgp.fingerprintand compare fingerprints before verifying anything else. - Offline signing: produce detached
.ascsignatures for the evidence bundle and release artifacts. - Atomic publish: upload artifacts + signatures in one deploy (no partial publishes).
- Record: bundle sha256 + signature sha256 + verifier output into the audit ticket.
- Ops evidence (post‑deploy): run the headers probe (/press/ops/security/headers/), attach
ops_headers_<UTC>.txt+ the deployed/_headerssnapshot (or platform config export). Recordops_headers_<UTC>.txt sha256:in the ticket. Missing attachment or missing sha256 ⇒ HOLD.
/trust/site-release/latest/*(DSSE, headchain, latest pointer, pinned key)/trust/site-release/<rail>/releases/*(feed, manifest, status)/.well-known/mvg-company.json.asc+/.well-known/mvg-governance.json.asc(identity receipts)
Post‑publish verification (offline)
This is the same check a Big Tech reviewer runs from a cold laptop.
# 1) Download the public verifier kit curl -fsSLO https://meridianverity.com/downloads/MVG_Public_SiteRelease_Verifier_v50.4.zip unzip -q MVG_Public_SiteRelease_Verifier_v50.4.zip # 2) Download the evidence bundle curl -fsSLO https://meridianverity.com/trust/site-release/latest/releases/MVG_SiteRelease_Evidence_Bundle_MVG-SITE-PROD-20260227.3.zip # 3) Verify python3 MVG_Public_SiteRelease_Verifier_v50.4/public_verify_site_release_v50_4.py MVG_SiteRelease_Evidence_Bundle_MVG-SITE-PROD-20260227.3.zip
ops_headers_<UTC>.txt + the deployed /_headers snapshot (or platform config export). Record ops_headers_<UTC>.txt sha256:. Missing attachment or missing sha256 ⇒ HOLD.Exact next-step ceremony (missing procurement signatures or demo contact quorum)
These commands are the deterministic remediation path when procurement pointer signatures are missing or a demo site-root verify returns HOLD. Do not change DSSE bytes unless you are also re-issuing the full proof chain.
# PROD procurement pointers (authoritative detached signatures)
export PROD_PROC_FPR="AEEDDA89423655600605CEE2C71186016DA8C25F"
mkdir -p .well-known/mvg-procurement-inputs.json.sig
mkdir -p .well-known/mvg-procurement-inputs.dsse.json.sig
mkdir -p .well-known/mvg-procurement-inputs.prod.dsse.json.sig
mkdir -p .well-known/mvg-procurement-ticket-pack.dsse.json.sig
mkdir -p .well-known/mvg-procurement-ticket-pack.prod.dsse.json.sig
gpg --batch --yes --armor --local-user "$PROD_PROC_FPR" --detach-sign --output ".well-known/mvg-procurement-inputs.json.sig/${PROD_PROC_FPR}.asc" ".well-known/mvg-procurement-inputs.json"
cp ".well-known/mvg-procurement-inputs.json.sig/${PROD_PROC_FPR}.asc" ".well-known/mvg-procurement-inputs.dsse.json.sig/${PROD_PROC_FPR}.asc"
cp ".well-known/mvg-procurement-inputs.json.sig/${PROD_PROC_FPR}.asc" ".well-known/mvg-procurement-inputs.prod.dsse.json.sig/${PROD_PROC_FPR}.asc"
gpg --batch --yes --armor --local-user "$PROD_PROC_FPR" --detach-sign --output ".well-known/mvg-procurement-ticket-pack.dsse.json.sig/${PROD_PROC_FPR}.asc" ".well-known/mvg-procurement-ticket-pack.dsse.json"
cp ".well-known/mvg-procurement-ticket-pack.dsse.json.sig/${PROD_PROC_FPR}.asc" ".well-known/mvg-procurement-ticket-pack.prod.dsse.json.sig/${PROD_PROC_FPR}.asc"
# Demo site-root HOLD remediation (contact descriptor needs 2-of-3 demo root signatures)
export DEMO_ROOT_FPR_1="5D53D7AC75A0256FF7782F49B4817940D0FBD02E"
export DEMO_ROOT_FPR_2="7CCA0672C9088C82CC0385F16391DA9D9A0CCD8D"
mkdir -p .well-known/mvg-contact.json.sig
gpg --batch --yes --armor --local-user "$DEMO_ROOT_FPR_1" --detach-sign --output ".well-known/mvg-contact.json.sig/${DEMO_ROOT_FPR_1}.asc" ".well-known/mvg-contact.json"
gpg --batch --yes --armor --local-user "$DEMO_ROOT_FPR_2" --detach-sign --output ".well-known/mvg-contact.json.sig/${DEMO_ROOT_FPR_2}.asc" ".well-known/mvg-contact.json"
# Re-verify after publishing
python3 public_verify_site_release_v50_4.py --site-root . --trust-mode prod --verbose
python3 public_verify_site_release_v50_4.py --site-root . --trust-mode prod --require-anchors --verbose
python3 public_verify_site_release_v50_4.py --site-root . --trust-mode prod --require-anchors --require-witness-threshold 2 --verbose
python3 downloads4/public_verify_deploy_txn_v51.py --site-root . --trust-mode prod --verbose
python3 downloads4/public_verify_deploy_txn_v51.py --site-root . --trust-mode prod --require-anchors --verbose
python3 downloads4/public_verify_deploy_txn_v51.py --site-root . --trust-mode prod --require-anchors --require-witness-threshold 2 --verbose
HOLD_PROCUREMENT_POINTER_UNSIGNED = detached procurement signatures missing. HOLD_DEMO_CONTACT_DESCRIPTOR_UNSIGNED = site-root demo lacks the required 2-of-3 contact descriptor quorum.Audit ticket template (copy/paste)
Title: MVG — Site release verification (post‑publish) Release evidence: - Evidence bundle: https://meridianverity.com/trust/site-release/latest/releases/MVG_SiteRelease_Evidence_Bundle_MVG-SITE-PROD-20260227.3.zip - Pinned signing key: https://meridianverity.com/trust/site-release/latest/pgp.asc - Pinned fingerprint: https://meridianverity.com/trust/site-release/latest/pgp.fingerprint Verification (offline): - python3 public_verify_site_release_v50_4.py MVG_SiteRelease_Evidence_Bundle_MVG-SITE-PROD-20260227.3.zip Expected: - Deterministic (PASS / HOLD / FAIL). Missing or placeholder signatures MUST be treated as HOLD. Observed: - [paste verifier output] Recorded hashes: - bundle sha256: [paste] - signature sha256 (if used): [paste] Ops evidence (post‑deploy): - Headers probe (curl): https://meridianverity.com/press/ops/security/headers/ (attach ops_headers_<UTC>.txt) - ops_headers_<UTC>.txt sha256: [paste] - Hosting headers policy snapshot: https://meridianverity.com/_headers (attach deployed copy or platform config export) Ops gate: - If either attachment is missing, or ops_headers sha256 is not recorded: HOLD (do not grant GO)
This page does not decide PASS/HOLD/FAIL. It displays the latest result from signed artifacts published on the trust rails.
If any signed artifact is missing or mismatched, the verifier returns HOLD (fail‑closed).
You do not need MVG private keys to verify; public PASS requires MVG-published signatures under the pinned fingerprint.
Unsigned/partial publication = HOLD.
Release Test Attestation (signed) is REQUIRED. If absent: HOLD.
Public verification (1 minute)
Download verifier kit: https://meridianverity.com/downloads2/MVG_Public_SiteRelease_Verifier_v50.4.zip See channel pages: • Production: /trust/site-release/latest/ • Demo: /trust/site-release/demo/ Each channel provides its own evidence bundle + verifier command (offline).
Outputs PASS / HOLD / FAIL and explains why. No private keys required.
Release authenticity could not be established (missing or placeholder signatures). Treat this publication as HOLD until the one-shot signing order completes under the pinned fingerprint.
Signing key fingerprint
Website release manifests are authenticated under the pinned fingerprint below. For trust, use the fingerprint pin and the published public key — do not rely on keyservers.
PROD: PASS only when all required detached signatures verify. Candidate rail: intentional HOLD.
MVG-SITE-PROD-20260227.3
Release manifest for critical assets (verifier UI, styles, and integrity bootstrap). This supports procurement review: “verify the verifier.”
Offline verification (example)
gpg --import trust/site-release/latest/pgp.asc gpg --verify MVG_SITE_RELEASE_MANIFEST_MVG-SITE-PROD-20260227.3.json.asc MVG_SITE_RELEASE_MANIFEST_MVG-SITE-PROD-20260227.3.json
If the fingerprint differs, treat the release as untrusted (HOLD) and use the air‑gapped verifier kit.
Canonical: https://meridianverity.com/.well-known/mvg-trust.json. Legacy alias: /trust.json (pointer-only).
MVG_SiteRelease_Evidence_Bundle_MVG-SITE-PROD-20260227.3.zip (recommended) MVG_SITE_RELEASE_MANIFEST_MVG-SITE-PROD-20260227.3.json (+ .asc) MVG_SITE_RELEASE_HEADCHAIN_MVG-SITE-PROD-20260227.3.json (+ .asc) mvg-trust.json (+ .asc / .dsse.json) mvg-contact.json (+ .asc / .dsse.json)
Signing order (normative)
- Generate the Site Release Manifest (hashes + SRI) and the unsigned trust descriptors (
mvg-trustandmvg-contact); do not publish yet. - Sign the manifest (
.asc) under the pinned site-release signing key. - Append a new head to the headchain referencing the manifest digest (and
prev_head_sha256), then updatemvg-trustpointers to the new release. - Sign + publish (one-shot) the headchain,
mvg-trust, andmvg-contactartifacts (ASC + DSSE) together. If integrity cannot be established, verifiers MUST fail‑closed to HOLD.
This order is designed for one-shot publish; partial publication MUST be treated as HOLD.
Append-only release heads (optional)
Release heads support monitoring and “no silent rewrite” posture. Heads MUST NOT override receipt pins.
For large-scale monitoring, MVG MAY publish a head chain for site releases. Verification MUST use the signed manifest and pinned fingerprint.