Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"name": "Roost, Tyler"
}
],
"description": "Release-candidate metadata for a verification-domain language and Python reference implementation that packages bounded computational claims with explicit evidence, checking mechanisms, limits, refutation conditions, provenance, and reproducibility information. It does not replace native domain verifiers or strengthen their results. Publication metadata is assigned only after the release exists.",
"description": "Version 1.2.0 of a verification-domain language and Python reference implementation that packages bounded computational claims with explicit evidence, checking mechanisms, limits, refutation conditions, provenance, and reproducibility information. It does not replace native domain verifiers or strengthen their results.",
"keywords": [
"verification",
"provenance",
Expand All @@ -17,6 +17,7 @@
"bounded claims"
],
"license": "Apache-2.0",
"publication_date": "2026-09-01",
"title": "Verifier Standard (VSTD): Bounded, Refutable Evidence for Computational Claims",
"version": "1.2.0",
"upload_type": "software"
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
> Coordinated Universal Time (UTC); Verifier Standard (VSTD); ZIP archive format (ZIP);
> zero-identity/zero-knowledge (ZIZK).

## 1.2.0 - UNRELEASED
## 1.2.0 - 2026-09-01

### Public surface and integrations

Expand Down
3 changes: 2 additions & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
cff-version: 1.2.0
message: "This describes the Verifier Standard (VSTD) 1.2.0 release candidate; cite the published release after it exists."
message: "If you use the Verifier Standard (VSTD) or its reference implementation, cite this release."
title: "Verifier Standard (VSTD): Bounded, Refutable Evidence for Computational Claims"
type: software
authors:
- name: "TimeLordRaps"
version: 1.2.0
date-released: 2026-09-01
license: Apache-2.0
repository-code: "https://github.com/TimeLordRaps/verifier"
keywords:
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,8 +213,8 @@ The distribution name is `verifier-standard`. The published base package has no
required third-party runtime dependencies.

```bash
python -m pip install verifier-standard # latest published release
python -m pip install . # current release-candidate checkout
python -m pip install "verifier-standard==1.2.0" # exact published release
python -m pip install . # current source checkout
python -m pip install ".[yaml]" # YAML Ain't Markup Language (YAML) manifests
python -m pip install ".[jsonschema]" # JSON Schema validation
python -m pip install ".[seal]" # optional Ed25519 artifact sealing
Expand Down Expand Up @@ -378,8 +378,8 @@ gh attestation verify PATH_TO_DOWNLOADED_ASSET --repo TimeLordRaps/verifier
```

Use [RELEASING.md](RELEASING.md) to verify the manifest, tag, artifact attestations,
package name, and historical compatibility. The current checkout is an unreleased
1.2.0 candidate; use the [latest release page](https://github.com/TimeLordRaps/verifier/releases/latest)
package name, and historical compatibility. Version 1.2.0 is the current release,
published on 2026-09-01; use its [versioned release page](https://github.com/TimeLordRaps/verifier/releases/tag/v1.2.0)
for published citation and artifact coordinates.

## Claims, security, and contribution
Expand Down
6 changes: 3 additions & 3 deletions docs/guides.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,10 @@ <h1>Find the exact boundary.</h1>
<p class="terms">Interoperability material below uses Supply Chain Integrity,
Transparency, and Trust (SCITT).</p>
<p class="release-coordinate"><strong>Documentation coordinate:</strong>
<code>verifier-standard 1.2.0</code> unreleased candidate. The assembled site also
<code>verifier-standard 1.2.0</code>, released 2026-09-01. The assembled site also
carries <a href="https://timelordraps.github.io/verifier/documentation-coordinate.json">machine-readable build metadata</a>;
published tags and <a href="https://github.com/TimeLordRaps/verifier/releases">release
artifacts</a> preserve historical coordinates. Normative ownership remains under
the <a href="https://github.com/TimeLordRaps/verifier/releases/tag/v1.2.0">versioned release
artifacts</a> preserve this historical coordinate. Normative ownership remains under
<code>standard/</code>.</p>
<div class="actions">
<a class="button primary" href="docs/QUICKSTART.html">Start with the quickstart</a>
Expand Down
8 changes: 4 additions & 4 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,10 @@ <h2>Useful without pretending to be total.</h2>
<h2>Current implementation status</h2>
<p class="status">VSTD is a maintainer-led alpha project specification. Compatibility VSTD-4 and Graph paths remain <code>NOT_ESTABLISHED</code> candidates. Separate evidence-bound VSTD-4, VSTD-5, Graph-profile, and assurance-event paths rerun exact registered mechanisms from embedded evidence; no real external witness is claimed by this repository. The project has no demonstrated external adoption, independent implementation, interoperability deployment, or third-party security review.</p>
<p class="status"><strong>Artifact-control boundary:</strong> freeze preserves exact bytes and sealing is not encryption. A thaw sidecar alone is unkeyed metadata and remains <code>NOT_ESTABLISHED</code>; clean or dirty status requires the actual supplied parent to verify as sealed with every recorded parent coordinate matching. This current comparison does not authenticate the historical copy operation or external continuity.</p>
<p class="release-coordinate"><strong>Release coordinate:</strong> this branch
documents <code>verifier-standard 1.2.0</code> as an unreleased candidate. Use
<a href="https://github.com/TimeLordRaps/verifier/releases">GitHub Releases</a> for
the latest published artifact.</p>
<p class="release-coordinate"><strong>Release coordinate:</strong>
<code>verifier-standard 1.2.0</code>, released 2026-09-01. Use the
<a href="https://github.com/TimeLordRaps/verifier/releases/tag/v1.2.0">versioned GitHub release</a>
for published artifacts and citation coordinates.</p>
<div class="actions">
<a class="button primary" href="https://github.com/TimeLordRaps/verifier#current-maturity">Review the maturity table</a>
<a class="button" href="https://github.com/TimeLordRaps/verifier/issues/new/choose">Report an ambiguity or counterexample</a>
Expand Down
13 changes: 10 additions & 3 deletions scripts/check_presentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ def check_versions(errors: list[str]) -> None:
re.MULTILINE,
)
zenodo = json.loads((ROOT / ".zenodo.json").read_text(encoding="utf-8"))
zenodo_date = zenodo.get("publication_date")
changelog = (ROOT / "CHANGELOG.md").read_text(encoding="utf-8")
found = {
"src/verifier/__init__.py": None if init_match is None else init_match.group(1),
Expand All @@ -297,8 +298,14 @@ def check_versions(errors: list[str]) -> None:
errors.append("unreleased CITATION.cff must not fabricate date-released")
if "release candidate" not in citation_text.lower():
errors.append("unreleased CITATION.cff must identify the release candidate")
elif citation_date is None or citation_date.group(1) != dated.group(1):
errors.append("CITATION.cff date-released must match the dated CHANGELOG heading")
if zenodo_date is not None:
errors.append("unreleased .zenodo.json must not fabricate publication_date")
else:
assert dated is not None
if citation_date is None or citation_date.group(1) != dated.group(1):
errors.append("CITATION.cff date-released must match the dated CHANGELOG heading")
if zenodo_date != dated.group(1):
errors.append(".zenodo.json publication_date must match the dated CHANGELOG heading")


def maturity_table_violations(readme: str) -> list[str]:
Expand Down Expand Up @@ -377,7 +384,7 @@ def check_claim_boundaries(errors: list[str]) -> None:
"VSTD evaluates bounded validity propositions about computational processes",
"RUST is the inverse-TRUST diagnostic mechanic",
"cryptographic zero knowledge can enclose",
"The current checkout is an unreleased",
"Version 1.2.0 is the current release",
)
for phrase in required_readme:
if phrase not in readme:
Expand Down
4 changes: 4 additions & 0 deletions scripts/check_release_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ def require_finalized(root: Path, version: str) -> None:
zenodo = json.loads((root / ".zenodo.json").read_text(encoding="utf-8"))
if zenodo.get("version") != version:
raise ValueError("Zenodo version does not match the release coordinate")
if zenodo.get("publication_date") != release_date:
raise ValueError(
"Zenodo publication_date must match the CHANGELOG release date"
)
description = str(zenodo.get("description", "")).lower()
if "release-candidate" in description or "after the release exists" in description:
raise ValueError("Zenodo metadata still describes an unpublished candidate")
Expand Down
6 changes: 5 additions & 1 deletion tests/test_presentation_surface.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,10 +236,14 @@ def test_pages_artifact_serves_every_canonical_schema_id(tmp_path: Path) -> None
"canonical_base_url": "https://timelordraps.github.io/verifier/",
"documentation_version": "1.2.0",
"normative_source": "standard/",
"release_state": "UNRELEASED_CANDIDATE",
"release_state": "RELEASED",
"schema_version": 1,
"source_ref": "test-commit",
}
for page in (output / "index.html", output / "guides.html"):
text = page.read_text(encoding="utf-8")
assert "released 2026-09-01" in text
assert "unreleased candidate" not in text.lower()
sources = sorted(
(
*ROOT.joinpath("receipts/schema").glob("*.json"),
Expand Down
20 changes: 18 additions & 2 deletions tests/test_release_artifacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,13 @@ def _write_final_release_metadata(root: Path) -> None:
encoding="utf-8",
)
(root / ".zenodo.json").write_text(
json.dumps({"version": "1.2.0", "description": "Final publication metadata."}),
json.dumps(
{
"version": "1.2.0",
"publication_date": "2026-08-26",
"description": "Final publication metadata.",
}
),
encoding="utf-8",
)

Expand All @@ -429,6 +435,7 @@ def _write_final_release_metadata(root: Path) -> None:
"mismatched_citation_date",
"candidate_citation",
"candidate_zenodo",
"mismatched_zenodo_date",
"package_version",
),
)
Expand All @@ -451,8 +458,17 @@ def test_release_metadata_gate_rejects_unfinalized_or_inconsistent_state(
elif fault == "candidate_zenodo":
path = tmp_path / ".zenodo.json"
path.write_text(
json.dumps({"version": "1.2.0", "description": "Release-candidate metadata."})
json.dumps(
{
"version": "1.2.0",
"publication_date": "2026-08-26",
"description": "Release-candidate metadata.",
}
)
)
elif fault == "mismatched_zenodo_date":
path = tmp_path / ".zenodo.json"
path.write_text(path.read_text().replace("2026-08-26", "2026-08-25"))
else:
path = tmp_path / "pyproject.toml"
path.write_text(path.read_text().replace("1.2.0", "1.1.3"))
Expand Down