Public Claims Contract
Status: active
This contract applies to the public README, landing pages, release copy, social copy, screenshots, testimonials, and independent coverage lists. Public text may describe only behavior verified against the current implementation. Missing or stale evidence is unavailable, not proof that a claim is true.
Publication Rules
- Implementation claims require a verification date and current evidence. Missing evidence must fail closed.
- Host tier rows derive at build time from
hosts/registry.json; manifests cannot copy or override them. - Private archives may retain
verified,rejected, andunavailabletestimonial records. Public builds accept onlyverifiedrecords whoseaccess_statusisdirect_public. source_capture_refis a required retained full-source.png,.jpg, or.webpunder the evidence root.public_crop_refis optional and is the only image intended for public display.- Publication basis is controlled:
direct_public_sourceorminimal_attributed_quote. Quotes must be a single trimmed excerpt of at most 280 Unicode characters. - Independent coverage is stored and rendered separately from testimonials; an article about the project is not a user endorsement.
- Login-required or unavailable sources, invalid or indirect URLs, missing or invalid captures, oversized quotes, and quantified or absolute speed/safety claims in English or Japanese fail closed.
- Full-source captures stay in the private evidence archive. A public crop, when present, contains only the minimum source area needed for attribution and the quotation; unrelated replies, people, engagement counts, customer data, and authentication material are excluded.
The current executable gate is scripts/validate-publication-records.py --evidence-root <dir> <records.json>. It accepts testimonial or implementation-claim manifests; any ineligible record makes the whole build input exit nonzero. Independent coverage never enters either collection.
Machine-Readable Policy
Record Shape
Public testimonial input is actual JSON:
{
"schema_version": "publication-records.v1",
"collection": "testimonials",
"records": []
}Every record must contain only the required testimonial fields plus optional public_crop_ref. The validator resolves capture paths under the explicit --evidence-root, rejects traversal and missing files, and checks image magic instead of trusting a filename extension.
Retrieval proves only that the cited source was directly observable on that date. It does not validate unrelated technical claims inside the source. Rejected and unavailable records remain private audit data. Independent articles link to their original source under an independent coverage heading, never inside testimonial build input.