From 7f0883cf6f04555eec0b66a2ef1de7d2db493c8a Mon Sep 17 00:00:00 2001 From: docushell-admin Date: Thu, 2 Jul 2026 18:27:28 +0530 Subject: [PATCH] Close v0.3.0 public install wording Signed-off-by: docushell-admin --- .../test_app_answer_release_release_prep.py | 14 +- .github/scripts/test_execution_status.py | 19 +- ...cation_public_installation_availability.py | 19 +- ...tone_e_public_beta_source_only_approval.py | 10 +- ...ublic_evaluation_current_state_closeout.py | 18 +- .../test_public_prealpha_wording_approval.py | 7 +- .../scripts/test_public_surface_posture.py | 17 +- ...public_install_wording_approval_request.py | 54 ++-- ..._v0_3_0_public_install_wording_closeout.py | 233 ++++++++++++++++++ .../scripts/test_v0_3_0_version_activation.py | 31 +-- CHANGELOG.md | 8 + Makefile | 1 + README.md | 21 +- docs/execution-status.md | 26 +- docs/public-boundary-claims.json | 15 +- docs/public-release-checklist.md | 48 ++-- docs/v0-3-0-release-prep.md | 43 +++- docs/validation/README.md | 24 +- ...approval-decision-validation-2026-07-02.md | 94 +++++++ ...-wording-closeout-validation-2026-07-02.md | 111 +++++++++ 20 files changed, 649 insertions(+), 164 deletions(-) create mode 100644 .github/scripts/test_v0_3_0_public_install_wording_closeout.py create mode 100644 docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md create mode 100644 docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md diff --git a/.github/scripts/test_app_answer_release_release_prep.py b/.github/scripts/test_app_answer_release_release_prep.py index f6aa481..a20b45d 100644 --- a/.github/scripts/test_app_answer_release_release_prep.py +++ b/.github/scripts/test_app_answer_release_release_prep.py @@ -163,13 +163,13 @@ def test_prep_packet_does_not_itself_perform_release_actions(self) -> None: ]: self.assertIn(required, record) - def test_current_public_install_surfaces_remain_on_published_baseline(self) -> None: - self.assertIn("cargo add ethos-doc-core@0.2.0", read(README)) - self.assertIn("python3 -m pip install ethos-pdf==0.2.0", read(README)) - self.assertIn("npm install -g @docushell/ethos-pdf@0.2.1", read(README)) - self.assertNotIn("cargo add ethos-doc-core@0.3.0", read(README)) - self.assertNotIn("python3 -m pip install ethos-pdf==0.3.0", read(README)) - self.assertNotIn("npm install -g @docushell/ethos-pdf@0.3.0", read(README)) + def test_prep_packet_does_not_itself_own_current_public_install_surfaces(self) -> None: + record = normalized(RECORD) + + self.assertIn("This prep record does not approve installable `0.3.0` public wording.", record) + self.assertIn("cargo add ethos-doc-core@0.3.0", read(README)) + self.assertIn("python3 -m pip install ethos-pdf==0.3.0", read(README)) + self.assertIn("npm install -g @docushell/ethos-pdf@0.3.0", read(README)) def test_make_target_runs_scoped_release_prep_guard(self) -> None: block = target_block("app-answer-release-release-prep") diff --git a/.github/scripts/test_execution_status.py b/.github/scripts/test_execution_status.py index 96e047c..f697ca1 100644 --- a/.github/scripts/test_execution_status.py +++ b/.github/scripts/test_execution_status.py @@ -39,19 +39,15 @@ def test_status_is_scoped_to_internal_continuation(self) -> None: text, ) self.assertIn( - "v0.2.0 remains the public CLI artifact baseline with GitHub Release `v0.2.0` " - "macOS arm64/Linux x64 artifacts, and npm remains `@docushell/ethos-pdf@0.2.1`", + "The exact v0.3.0 public install wording packet is approved and closed out", text, ) - self.assertIn("Public `0.3.0` install wording", text) - self.assertIn("GitHub Release artifact upload", text) + self.assertIn("docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md", text) + self.assertIn("docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md", text) + self.assertIn("GitHub Release `v0.3.0`", text) self.assertIn("npm `@docushell/ethos-pdf@0.3.0` is live on npm", text) self.assertIn("v0.3.0 npm publication closeout", text) self.assertIn("DocuShell integration remain blocked", text) - self.assertIn( - "npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI binaries", - text, - ) self.assertIn("Internal Milestone D source-only closeout remains complete", text) self.assertIn( "Ethos is pre-alpha. It verifies whether AI citations are grounded in document " @@ -115,9 +111,10 @@ def test_public_posture_boundary_remains_explicit(self) -> None: ) self.assertIn("the Python `ethos-pdf` wheel is live on PyPI", text) self.assertIn("npm `@docushell/ethos-pdf@0.3.0` is live on npm", text) - self.assertIn("v0.2.0 remains the public CLI artifact baseline", text) - self.assertIn("npm remains `@docushell/ethos-pdf@0.2.1`", text) - self.assertIn("GitHub Release `v0.2.0` macOS arm64/Linux x64 artifacts", text) + self.assertIn("The exact v0.3.0 public install wording packet is approved and closed out", text) + self.assertIn("GitHub Release `v0.3.0`", text) + self.assertIn("macOS arm64/Linux x64 CLI artifacts", text) + self.assertIn("`@docushell/ethos-pdf@0.3.0`", text) self.assertIn("docs/validation/v0-3-0-publication-closeout-validation-2026-07-01.md", text) self.assertIn("ethos-doc-core", text) self.assertIn("ethos-verify", text) diff --git a/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py b/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py index bb7549a..0029f84 100644 --- a/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py +++ b/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py @@ -58,10 +58,9 @@ "Ethos is a deterministic document evidence layer for source-grounded verification and " "citation checking across native Ethos JSON and supported foreign parser outputs. The current " "beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, " - "`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the " - "npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 " - "CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI " - "binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through " + "`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the " + "npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 " + "CLI artifacts. PDFium-backed commands use caller-provided PDFium through " "`ETHOS_PDFIUM_LIBRARY_PATH`." ) BOUNDED_INSTALLATION_WORDING = ( @@ -89,9 +88,9 @@ "cargo add ethos-pdf@0.1.0", ) CURRENT_INSTALL_COMMANDS = ( - "cargo add ethos-doc-core@0.2.0", - "cargo add ethos-verify@0.2.0", - "cargo add ethos-pdf@0.2.0", + "cargo add ethos-doc-core@0.3.0", + "cargo add ethos-verify@0.3.0", + "cargo add ethos-pdf@0.3.0", ) FORBIDDEN_SCOPE_EXPANSION = [ "public reports are approved", @@ -173,9 +172,9 @@ def test_readme_matches_bounded_public_wording(self) -> None: self.assertIn(CURRENT_README_WORDING, readme) for command in CURRENT_INSTALL_COMMANDS: self.assertIn(command, readme) - self.assertIn("npm install -g @docushell/ethos-pdf@0.2.1", readme) - self.assertIn("python3 -m pip install ethos-pdf==0.2.0", readme) - self.assertIn("GitHub Release `v0.2.0`", readme) + self.assertIn("npm install -g @docushell/ethos-pdf@0.3.0", readme) + self.assertIn("python3 -m pip install ethos-pdf==0.3.0", readme) + self.assertIn("GitHub Release `v0.3.0`", readme) self.assertIn("macOS arm64/Linux x64 CLI artifacts", readme) self.assertIn("Windows packaged artifacts", readme) self.assertIn("bundled project-maintained PDFium builds", readme) diff --git a/.github/scripts/test_milestone_e_public_beta_source_only_approval.py b/.github/scripts/test_milestone_e_public_beta_source_only_approval.py index 167bec4..e5abb20 100644 --- a/.github/scripts/test_milestone_e_public_beta_source_only_approval.py +++ b/.github/scripts/test_milestone_e_public_beta_source_only_approval.py @@ -46,10 +46,9 @@ "Ethos is a deterministic document evidence layer for source-grounded verification and " "citation checking across native Ethos JSON and supported foreign parser outputs. The current " "beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, " - "`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the " - "npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 " - "CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI " - "binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through " + "`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the " + "npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 " + "CLI artifacts. PDFium-backed commands use caller-provided PDFium through " "`ETHOS_PDFIUM_LIBRARY_PATH`." ) EXPECTED_SOURCE = { @@ -186,8 +185,7 @@ def test_public_surfaces_use_exact_approved_wording_and_exclusions(self) -> None self.assertIn("cargo build --locked -p ethos-cli", readme) self.assertIn("make verify-alpha", readme) self.assertIn("ETHOS_PDFIUM_LIBRARY_PATH", readme) - self.assertIn("npm `@docushell/ethos-pdf@0.2.1` package", normalized_readme) - self.assertIn("npm `@docushell/ethos-pdf@0.2.0` is deprecated", normalized_readme) + self.assertIn("npm `@docushell/ethos-pdf@0.3.0` package", normalized_readme) self.assertIn("Windows packaged artifacts", normalized_readme) self.assertIn("bundled project-maintained PDFium builds", normalized_readme) self.assertIn("public benchmark reports", normalized_readme) diff --git a/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py b/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py index 6ea4dde..87b56e0 100644 --- a/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py +++ b/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py @@ -52,10 +52,9 @@ "Ethos is a deterministic document evidence layer for source-grounded verification and " "citation checking across native Ethos JSON and supported foreign parser outputs. The current " "beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, " - "`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the " - "npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 " - "CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI " - "binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through " + "`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the " + "npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 " + "CLI artifacts. PDFium-backed commands use caller-provided PDFium through " "`ETHOS_PDFIUM_LIBRARY_PATH`." ) APPROVED_SURFACE_LINES = ( @@ -151,13 +150,11 @@ def test_current_docs_use_current_public_wording(self) -> None: str(EXECUTION_STATUS), ) self.assertIn( - "v0.2.0 remains the public CLI artifact baseline with GitHub Release `v0.2.0` " - "macOS arm64/Linux x64 artifacts, and npm remains `@docushell/ethos-pdf@0.2.1`", + "The exact v0.3.0 public install wording packet is approved and closed out", execution_status, str(EXECUTION_STATUS), ) - self.assertIn("Public `0.3.0` install wording", execution_status, str(EXECUTION_STATUS)) - self.assertIn("GitHub Release artifact upload", execution_status, str(EXECUTION_STATUS)) + self.assertIn("GitHub Release `v0.3.0`", execution_status, str(EXECUTION_STATUS)) self.assertIn( "npm `@docushell/ethos-pdf@0.3.0` is live on npm", execution_status, @@ -174,11 +171,6 @@ def test_current_docs_use_current_public_wording(self) -> None: execution_status, str(EXECUTION_STATUS), ) - self.assertIn( - "npm `@docushell/ethos-pdf@0.2.0` is deprecated", - execution_status, - str(EXECUTION_STATUS), - ) def test_docs_reference_current_state_and_retained_blockers(self) -> None: for path in (PREP_SCOPE, ROADMAP, EXECUTION_STATUS, VALIDATION_README): diff --git a/.github/scripts/test_public_prealpha_wording_approval.py b/.github/scripts/test_public_prealpha_wording_approval.py index b5e5237..fb86444 100644 --- a/.github/scripts/test_public_prealpha_wording_approval.py +++ b/.github/scripts/test_public_prealpha_wording_approval.py @@ -40,10 +40,9 @@ "Ethos is a deterministic document evidence layer for source-grounded verification and " "citation checking across native Ethos JSON and supported foreign parser outputs. The current " "beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, " - "`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the " - "npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 " - "CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI " - "binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through " + "`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the " + "npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 " + "CLI artifacts. PDFium-backed commands use caller-provided PDFium through " "`ETHOS_PDFIUM_LIBRARY_PATH`." ) diff --git a/.github/scripts/test_public_surface_posture.py b/.github/scripts/test_public_surface_posture.py index b395ec7..9ae863e 100644 --- a/.github/scripts/test_public_surface_posture.py +++ b/.github/scripts/test_public_surface_posture.py @@ -51,13 +51,16 @@ def test_readme_status_matches_public_beta_evaluation_scope(self) -> None: self.assertIn("Python `ethos-pdf` wheel", normalized) self.assertIn("caller-provided PDFium", text) self.assertIn("release-scope work", text) - self.assertIn("cargo add ethos-doc-core@0.2.0", text) - self.assertIn("cargo add ethos-verify@0.2.0", text) - self.assertIn("cargo add ethos-pdf@0.2.0", text) - self.assertIn("python3 -m pip install ethos-pdf==0.2.0", text) - self.assertIn("npm install -g @docushell/ethos-pdf@0.2.1", text) - self.assertIn("GitHub Release `v0.2.0`", text) - self.assertIn("@docushell/ethos-pdf@0.2.0` is deprecated", text) + self.assertIn("cargo add ethos-doc-core@0.3.0", text) + self.assertIn("cargo add ethos-verify@0.3.0", text) + self.assertIn("cargo add ethos-pdf@0.3.0", text) + self.assertIn("python3 -m pip install ethos-pdf==0.3.0", text) + self.assertIn("npm install -g @docushell/ethos-pdf@0.3.0", text) + self.assertIn("GitHub Release `v0.3.0`", text) + self.assertNotIn("cargo add ethos-doc-core@0.2.0", text) + self.assertNotIn("python3 -m pip install ethos-pdf==0.2.0", text) + self.assertNotIn("npm install -g @docushell/ethos-pdf@0.2.1", text) + self.assertNotIn("@docushell/ethos-pdf@0.2.0` is deprecated", text) self.assertNotIn("not production-ready", text.lower()) self.assertNotIn("not stable production surfaces", text.lower()) self.assertNotIn("contracts phase", text) diff --git a/.github/scripts/test_v0_3_0_public_install_wording_approval_request.py b/.github/scripts/test_v0_3_0_public_install_wording_approval_request.py index 147c545..167fce3 100644 --- a/.github/scripts/test_v0_3_0_public_install_wording_approval_request.py +++ b/.github/scripts/test_v0_3_0_public_install_wording_approval_request.py @@ -31,8 +31,6 @@ EXECUTION_STATUS = ROOT / "docs/execution-status.md" PUBLIC_RELEASE_CHECKLIST = ROOT / "docs/public-release-checklist.md" RELEASE_PREP = ROOT / "docs/v0-3-0-release-prep.md" -README = ROOT / "README.md" -CLAIMS = ROOT / "docs/public-boundary-claims.json" CHANGELOG = ROOT / "CHANGELOG.md" SOURCE_SHORT = "7ad3521" @@ -57,14 +55,6 @@ GITHUB_RELEASE = ( "GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64." ) -CURRENT_RUST_INSTALLS = ( - "cargo add ethos-doc-core@0.2.0", - "cargo add ethos-verify@0.2.0", - "cargo add ethos-pdf@0.2.0", -) -CURRENT_PYTHON_INSTALL = "python3 -m pip install ethos-pdf==0.2.0" -CURRENT_NPM_INSTALL = "npm install -g @docushell/ethos-pdf@0.2.1" -CURRENT_RELEASE = "GitHub Release `v0.2.0` also provides evaluation CLI archives" PRIVATE_PATH_MARKERS = ( "/" + "Users/", "/" + "private/tmp", @@ -95,14 +85,6 @@ def normalized(path: Path) -> str: return re.sub(r"\s+", " ", read(path)) -def normalized_public_readme() -> str: - return re.sub( - r"\s+", - " ", - " ".join(line.removeprefix("> ").strip() for line in read(README).splitlines()), - ) - - class V030PublicInstallWordingApprovalRequestTests(unittest.TestCase): def test_request_record_is_source_bound(self) -> None: raw = read(RECORD) @@ -146,23 +128,18 @@ def test_request_captures_exact_proposed_wording_without_flipping_docs(self) -> for phrase in FORBIDDEN: self.assertNotIn(phrase, record.lower()) - def test_current_public_readme_and_claims_remain_on_0_2_baseline(self) -> None: - readme = normalized(README) - public_status = normalized_public_readme() - claims = json.loads(read(CLAIMS))["surfaces"]["readme"]["claims"] - - self.assertIn("Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.2.0`", public_status) - self.assertIn("the Python `ethos-pdf` wheel at `0.2.0`", public_status) - self.assertIn("the npm `@docushell/ethos-pdf@0.2.1` package", public_status) - self.assertIn("GitHub Release `v0.2.0` macOS arm64/Linux x64 CLI artifacts", public_status) - - for expected in (*CURRENT_RUST_INSTALLS, CURRENT_PYTHON_INSTALL, CURRENT_NPM_INSTALL, CURRENT_RELEASE): - self.assertIn(expected, readme) - self.assertTrue(any(expected in claim for claim in claims), expected) + def test_request_preserves_pre_decision_baseline_as_historical_context(self) -> None: + record = normalized(RECORD) - for proposed in (*RUST_INSTALLS, PYTHON_INSTALL, NPM_INSTALL, GITHUB_RELEASE): - self.assertNotIn(proposed, readme) - self.assertFalse(any(proposed in claim for claim in claims), proposed) + for expected in ( + "Current `README.md` and `docs/public-boundary-claims.json` remain on the already-approved public install baseline while this request is under review", + "Rust install commands remain `0.2.0`.", + "Python install command remains `ethos-pdf==0.2.0`.", + "npm install command remains `@docushell/ethos-pdf@0.2.1`.", + "GitHub Release CLI artifact reference remains `v0.2.0`.", + "Public `0.3.0` install wording remains blocked until a separate approval decision and closeout pass.", + ): + self.assertIn(expected, record) def test_request_is_indexed_and_wired_into_status_docs(self) -> None: for path in ( @@ -174,7 +151,7 @@ def test_request_is_indexed_and_wired_into_status_docs(self) -> None: text = normalized(path) self.assertIn(RECORD.name, text) self.assertIn("v0.3.0 public install wording approval request", text.lower()) - self.assertIn("wording remains blocked", text.lower()) + self.assertIn("historical request stage", text.lower()) self.assertIn("0.3.0", text) self.assertIn("DocuShell integration remain blocked", text) @@ -189,12 +166,17 @@ def test_release_prep_target_runs_request_guard_after_npm_closeout(self) -> None "$(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_approval_request.py" ) public_surface_guard = "$(PYTHON) .github/scripts/test_public_surface_posture.py" + wording_closeout_guard = ( + "$(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_closeout.py" + ) self.assertIn(npm_closeout_guard, block) self.assertIn(wording_request_guard, block) + self.assertIn(wording_closeout_guard, block) self.assertEqual(1, block.count(wording_request_guard)) self.assertLess(block.index(npm_closeout_guard), block.index(wording_request_guard)) - self.assertLess(block.index(wording_request_guard), block.index(public_surface_guard)) + self.assertLess(block.index(wording_request_guard), block.index(wording_closeout_guard)) + self.assertLess(block.index(wording_closeout_guard), block.index(public_surface_guard)) if __name__ == "__main__": diff --git a/.github/scripts/test_v0_3_0_public_install_wording_closeout.py b/.github/scripts/test_v0_3_0_public_install_wording_closeout.py new file mode 100644 index 0000000..dd26cae --- /dev/null +++ b/.github/scripts/test_v0_3_0_public_install_wording_closeout.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 +# +# Copyright 2026 The Ethos maintainers +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# + +from __future__ import annotations + +import json +import re +import unittest +from pathlib import Path + +from makefile_guard import target_block +from validation_record_source import assert_record_source_binding + + +ROOT = Path(__file__).resolve().parents[2] +DECISION_RECORD = ROOT / ( + "docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md" +) +CLOSEOUT_RECORD = ROOT / ( + "docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md" +) +REQUEST_RECORD = ROOT / ( + "docs/validation/v0-3-0-public-install-wording-approval-request-validation-2026-07-02.md" +) +VALIDATION_README = ROOT / "docs/validation/README.md" +EXECUTION_STATUS = ROOT / "docs/execution-status.md" +PUBLIC_RELEASE_CHECKLIST = ROOT / "docs/public-release-checklist.md" +RELEASE_PREP = ROOT / "docs/v0-3-0-release-prep.md" +README = ROOT / "README.md" +CLAIMS = ROOT / "docs/public-boundary-claims.json" +CHANGELOG = ROOT / "CHANGELOG.md" + +SOURCE_SHORT = "7502658" +SOURCE_COMMIT = "750265856f352b32378ab62c72a74dd6ca72646f" +SOURCE_TREE = "0c458a91f49267aadc4240e2981305338d4793ca" +PUBLIC_SENTENCE = ( + "Ethos is a deterministic document evidence layer for source-grounded verification and " + "citation checking across native Ethos JSON and supported foreign parser outputs. The current " + "beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, " + "`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the " + "npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 " + "CLI artifacts. PDFium-backed commands use caller-provided PDFium through " + "`ETHOS_PDFIUM_LIBRARY_PATH`." +) +RUST_INSTALLS = ( + "cargo add ethos-doc-core@0.3.0", + "cargo add ethos-verify@0.3.0", + "cargo add ethos-pdf@0.3.0", +) +PYTHON_INSTALL = "python3 -m pip install ethos-pdf==0.3.0" +NPM_INSTALL = "npm install -g @docushell/ethos-pdf@0.3.0" +GITHUB_RELEASE = ( + "GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64." +) +PYTHON_WRAPPER = ( + "The v0.3.0 Python wrapper includes JSON verification and evidence anchoring through that " + "caller-provided CLI" +) +OLD_INSTALLS = ( + "cargo add ethos-doc-core@0.2.0", + "python3 -m pip install ethos-pdf==0.2.0", + "npm install -g @docushell/ethos-pdf@0.2.1", + "GitHub Release `v0.2.0` also provides evaluation CLI archives", + "npm `@docushell/ethos-pdf@0.2.0` is deprecated", +) +PRIVATE_PATH_MARKERS = ( + "/" + "Users/", + "/" + "private/tmp", + "/" + "private/var", + "/" + "var/folders", + "saumil" + "diwaker", + "Desktop/" + "Stuff", + "project/repo/" + "ethos", +) +FORBIDDEN = ( + "hosted surfaces approved", + "production-ready", + "public benchmark claims approved", + "windows packaged artifacts approved", + "bundled pdfium approved", + "docushell integration approved", + "package tag creation approved", + "release tag creation approved", +) + + +def read(path: Path) -> str: + return path.read_text(encoding="utf-8") + + +def normalized(path: Path) -> str: + return re.sub(r"\s+", " ", read(path)) + + +def normalized_public_readme() -> str: + return re.sub( + r"\s+", + " ", + " ".join(line.removeprefix("> ").strip() for line in read(README).splitlines()), + ) + + +def claims() -> list[str]: + return json.loads(read(CLAIMS))["surfaces"]["readme"]["claims"] + + +class V030PublicInstallWordingCloseoutTests(unittest.TestCase): + def test_decision_and_closeout_records_are_source_bound(self) -> None: + for path, label in ( + (DECISION_RECORD, "v0.3.0 public install wording approval decision"), + (CLOSEOUT_RECORD, "v0.3.0 public install wording closeout"), + ): + raw = read(path) + record = normalized(path) + assert_record_source_binding( + self, + root=ROOT, + raw_record=raw, + normalized_record=record, + validated_head=SOURCE_SHORT, + source_label=label, + source_commit=SOURCE_COMMIT, + source_tree=SOURCE_TREE, + ) + + def test_decision_accepts_exact_wording_without_broadening_scope(self) -> None: + raw = read(DECISION_RECORD) + record = normalized(DECISION_RECORD) + + for expected in ( + "Decider decision supplied: **Approved**.", + REQUEST_RECORD.name, + PUBLIC_SENTENCE, + *RUST_INSTALLS, + PYTHON_INSTALL, + NPM_INSTALL, + GITHUB_RELEASE, + PYTHON_WRAPPER, + "This decision does not create package tags.", + "This decision does not create release tags.", + "This decision does not approve DocuShell integration.", + "This decision does not approve hosted surfaces.", + "This decision does not approve production positioning.", + "This decision does not approve public benchmark claims.", + ): + self.assertIn(expected, record) + + for marker in PRIVATE_PATH_MARKERS: + self.assertNotIn(marker, raw) + for phrase in FORBIDDEN: + self.assertNotIn(phrase, record.lower()) + + def test_closeout_updates_readme_and_claim_inventory_to_exact_0_3_wording(self) -> None: + readme = normalized_public_readme() + claim_text = " ".join(claims()) + + self.assertIn(PUBLIC_SENTENCE, readme) + for expected in (*RUST_INSTALLS, PYTHON_INSTALL, NPM_INSTALL, GITHUB_RELEASE, PYTHON_WRAPPER): + self.assertIn(expected, readme) + for expected in (*RUST_INSTALLS, PYTHON_INSTALL, NPM_INSTALL, GITHUB_RELEASE): + self.assertTrue(any(expected in claim for claim in claims()), expected) + self.assertIn("@docushell/ethos-pdf@0.3.0", claim_text) + self.assertIn("GitHub Release `v0.3.0` macOS arm64/Linux x64 CLI artifacts", claim_text) + + for old in OLD_INSTALLS: + self.assertNotIn(old, readme) + self.assertFalse(any(old in claim for claim in claims()), old) + + def test_closeout_record_is_indexed_and_status_docs_are_current(self) -> None: + for path in (VALIDATION_README, EXECUTION_STATUS, PUBLIC_RELEASE_CHECKLIST, RELEASE_PREP): + text = normalized(path) + self.assertIn(DECISION_RECORD.name, text, str(path)) + self.assertIn(CLOSEOUT_RECORD.name, text, str(path)) + self.assertIn("v0.3.0 public install wording closeout", text.lower(), str(path)) + self.assertIn("approved and closed out", text.lower(), str(path)) + self.assertIn("@docushell/ethos-pdf@0.3.0", text, str(path)) + self.assertIn("GitHub Release `v0.3.0`", text, str(path)) + self.assertIn("DocuShell integration remain blocked", text, str(path)) + + changelog = normalized(CHANGELOG) + self.assertIn("close exact public `0.3.0` install wording", changelog) + self.assertIn("approve exact public `0.3.0` install wording", changelog) + + def test_closeout_record_retains_blockers_and_path_hygiene(self) -> None: + raw = read(CLOSEOUT_RECORD) + record = normalized(CLOSEOUT_RECORD) + + for expected in ( + PUBLIC_SENTENCE, + *RUST_INSTALLS, + PYTHON_INSTALL, + NPM_INSTALL, + GITHUB_RELEASE, + PYTHON_WRAPPER, + "Package tag creation remains blocked.", + "Release tag creation remains blocked.", + "DocuShell integration remains blocked.", + "Hosted surfaces remain blocked.", + "Production positioning remains blocked.", + "Windows packaged artifacts remain blocked.", + "Bundled project-maintained PDFium builds remain blocked.", + "Public benchmark claims remain blocked.", + "`ethos-doc` remains blocked.", + "`ethos-rag` remains blocked.", + ): + self.assertIn(expected, record) + + for marker in PRIVATE_PATH_MARKERS: + self.assertNotIn(marker, raw) + for phrase in FORBIDDEN: + self.assertNotIn(phrase, record.lower()) + + def test_release_prep_target_runs_closeout_guard_after_request_before_public_surface(self) -> None: + block = target_block("v0-3-release-prep") + request_guard = ( + "$(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_approval_request.py" + ) + closeout_guard = "$(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_closeout.py" + public_surface_guard = "$(PYTHON) .github/scripts/test_public_surface_posture.py" + + self.assertIn(request_guard, block) + self.assertIn(closeout_guard, block) + self.assertEqual(1, block.count(closeout_guard)) + self.assertLess(block.index(request_guard), block.index(closeout_guard)) + self.assertLess(block.index(closeout_guard), block.index(public_surface_guard)) + + +if __name__ == "__main__": + unittest.main() diff --git a/.github/scripts/test_v0_3_0_version_activation.py b/.github/scripts/test_v0_3_0_version_activation.py index c3402cb..f5ccd69 100644 --- a/.github/scripts/test_v0_3_0_version_activation.py +++ b/.github/scripts/test_v0_3_0_version_activation.py @@ -25,17 +25,6 @@ MAKEFILE = ROOT / "Makefile" README = ROOT / "README.md" CLAIMS = ROOT / "docs/public-boundary-claims.json" -INSTALL_WORDING_SURFACES = ( - ROOT / "README.md", - ROOT / "python/README.md", - ROOT / "python/QUICKSTART.md", - ROOT / "packages/npm/ethos-pdf/README.md", - ROOT / "packages/npm/ethos-pdf/QUICKSTART.md", - ROOT / "crates/ethos-core/README.md", - ROOT / "crates/ethos-verify/README.md", - ROOT / "crates/ethos-pdf/README.md", - ROOT / "adapters/grounding/opendataloader-json/README.md", -) CARGO = ROOT / "Cargo.toml" CARGO_LOCK = ROOT / "Cargo.lock" CLI_CARGO = ROOT / "crates/ethos-cli/Cargo.toml" @@ -52,7 +41,7 @@ RELEASE_CANDIDATE_SENTENCE = ( "v0.3.0 source versions are activated for app-answer-release contract validation." ) -FORBIDDEN_INSTALL_WORDING = ( +CURRENT_INSTALL_WORDING = ( "cargo add ethos-doc-core@0.3.0", "cargo add ethos-verify@0.3.0", "cargo add ethos-pdf@0.3.0", @@ -122,26 +111,18 @@ def test_rust_and_python_versions_are_activated_with_public_npm_baseline_preserv self.assertIn(npm["version"], {NPM_PUBLIC_BASELINE, VERSION}) self.assertIn("npm remains at `0.2.1`", normalized(RECORD)) - def test_public_install_commands_remain_on_current_published_baseline(self) -> None: + def test_public_install_commands_now_follow_later_public_wording_closeout(self) -> None: readme = read(README) claims = json.loads(read(CLAIMS))["surfaces"]["readme"]["claims"] joined_claims = "\n".join(claims) - for expected in ( - f"cargo add ethos-doc-core@{RUST_PYTHON_PUBLIC_BASELINE}", - f"cargo add ethos-verify@{RUST_PYTHON_PUBLIC_BASELINE}", - f"cargo add ethos-pdf@{RUST_PYTHON_PUBLIC_BASELINE}", - f"python3 -m pip install ethos-pdf=={RUST_PYTHON_PUBLIC_BASELINE}", - f"npm install -g @docushell/ethos-pdf@{NPM_PUBLIC_BASELINE}", - ): + for expected in CURRENT_INSTALL_WORDING: self.assertIn(expected, readme) self.assertIn(expected, joined_claims) - for forbidden in FORBIDDEN_INSTALL_WORDING: - self.assertNotIn(forbidden, readme) - self.assertNotIn(forbidden, joined_claims) - for path in INSTALL_WORDING_SURFACES: - self.assertNotIn(forbidden, read(path), str(path)) + record = normalized(RECORD) + self.assertIn("public install commands remain on the current published `0.2.0`", record) + self.assertIn("No `0.3.0` registry install wording is approved", record) def test_activation_record_declares_release_candidate_wording_only(self) -> None: record = normalized(RECORD) diff --git a/CHANGELOG.md b/CHANGELOG.md index acf7483..f9df66a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## Unreleased +- boundary-exception: close exact public `0.3.0` install wording in README and public-boundary + claims across live Rust, Python, npm, and GitHub Release evaluation surfaces while keeping + release/package tags, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, + `ethos-rag`, and DocuShell integration blocked pending separate lanes. +- boundary-exception: approve exact public `0.3.0` install wording across live Rust, Python, npm, + and GitHub Release evaluation surfaces while keeping README/public-boundary closeout, tags, + hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, `ethos-rag`, and DocuShell + integration blocked until the bounded closeout record passes. - boundary-exception: request decider review for exact public `0.3.0` install wording across live Rust, Python, npm, and GitHub Release evaluation surfaces while keeping public docs, release/package tags, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, diff --git a/Makefile b/Makefile index 276a5f8..23a09bf 100644 --- a/Makefile +++ b/Makefile @@ -107,6 +107,7 @@ v0-3-release-prep: $(PYTHON) .github/scripts/test_v0_3_0_npm_publication_approval_decision.py $(PYTHON) .github/scripts/test_v0_3_0_npm_publication_closeout.py $(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_approval_request.py + $(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_closeout.py $(PYTHON) .github/scripts/test_public_surface_posture.py $(PYTHON) .github/scripts/claims_gate.py $(PYTHON) .github/scripts/public_boundary_claims_gate.py diff --git a/README.md b/README.md index aaddc40..8e557a6 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,9 @@ > Ethos is a deterministic document evidence layer for source-grounded verification and > citation checking across native Ethos JSON and supported foreign parser outputs. The current > beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, -> `ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the npm -> `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 CLI -> artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI -> binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through +> `ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the npm +> `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 CLI +> artifacts. PDFium-backed commands use caller-provided PDFium through > `ETHOS_PDFIUM_LIBRARY_PATH`. > Current execution status and release-scope notes live in `docs/execution-status.md`; > public-release hygiene gates live in `docs/public-release-checklist.md`. @@ -123,22 +122,22 @@ ethos --help To add the currently approved Rust library crates to another Rust project: ```bash -cargo add ethos-doc-core@0.2.0 -cargo add ethos-verify@0.2.0 -cargo add ethos-pdf@0.2.0 +cargo add ethos-doc-core@0.3.0 +cargo add ethos-verify@0.3.0 +cargo add ethos-pdf@0.3.0 ``` To install the Python wrapper from PyPI: ```bash -python3 -m pip install ethos-pdf==0.2.0 +python3 -m pip install ethos-pdf==0.3.0 ``` The Python wheel is a thin wrapper around a caller-provided local `ethos` CLI binary. It does not bundle the CLI or PDFium. Install or provide `ethos` separately, and keep `ETHOS_PDFIUM_LIBRARY_PATH` set for PDFium-backed commands. -The v0.2.0 Python wrapper includes JSON verification and evidence anchoring through that +The v0.3.0 Python wrapper includes JSON verification and evidence anchoring through that caller-provided CLI: ```python @@ -163,7 +162,7 @@ behavior. To install the npm CLI package on a supported first-release platform: ```bash -npm install -g @docushell/ethos-pdf@0.2.1 +npm install -g @docushell/ethos-pdf@0.3.0 ethos --version ``` @@ -174,7 +173,7 @@ platforms fail before invoking a binary. PDFium-backed commands fail until Run `ethos doctor` for local setup diagnostics. Run `ethos doctor --require-pdfium` after setting `ETHOS_PDFIUM_LIBRARY_PATH` to check whether the configured PDFium is usable by Ethos. -GitHub Release `v0.2.0` also provides evaluation CLI archives for macOS arm64 and Linux x64. +GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64. ## 2-minute PDF parse quickstart diff --git a/docs/execution-status.md b/docs/execution-status.md index bf42acf..b6bffcf 100644 --- a/docs/execution-status.md +++ b/docs/execution-status.md @@ -2,15 +2,35 @@ Date: 2026-07-02 Owner: product / decider -Status: v0.3.0 Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are live on crates.io, and the Python `ethos-pdf` wheel is live on PyPI. GitHub Release `v0.3.0` now contains closed-out macOS arm64/Linux x64 CLI artifacts for evaluation with caller-provided PDFium. npm `@docushell/ethos-pdf@0.3.0` is live on npm, and the v0.3.0 npm publication closeout is recorded. A v0.3.0 public install wording approval request is recorded, but `README.md` and public-boundary claims remain on the current `0.2.x` install baseline until a separate approval decision and closeout pass. v0.2.0 remains the public CLI artifact baseline with GitHub Release `v0.2.0` macOS arm64/Linux x64 artifacts, and npm remains `@docushell/ethos-pdf@0.2.1` for public install wording until that later wording closeout; npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI binaries that reported `ethos 0.1.2`. Public `0.3.0` install wording, package tags, release tags, and DocuShell integration remain blocked pending their separate tag, wording, and closeout records. The exact GitHub Release artifact closeout is limited to the approved `v0.3.0` release assets below, and the exact npm publication closeout is limited to `@docushell/ethos-pdf@0.3.0`. PDFium-backed commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. Hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, speed, footprint, parser-quality, table-quality, `ethos-doc`, and `ethos-rag` remain blocked. +Status: v0.3.0 Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are live on crates.io, and the Python `ethos-pdf` wheel is live on PyPI. GitHub Release `v0.3.0` contains closed-out macOS arm64/Linux x64 CLI artifacts for evaluation with caller-provided PDFium. npm `@docushell/ethos-pdf@0.3.0` is live on npm, and the v0.3.0 npm publication closeout is recorded. The exact v0.3.0 public install wording packet is approved and closed out: `README.md` and `docs/public-boundary-claims.json` now use the approved `0.3.0` public sentence, Rust crate install commands, Python wheel install command, npm install command, GitHub Release wording, and caller-provided PDFium boundary. Package tags, release tags, and DocuShell integration remain blocked pending separate evidence, approval, and closeout records. The exact GitHub Release artifact closeout is limited to the approved `v0.3.0` release assets below, the exact npm publication closeout is limited to `@docushell/ethos-pdf@0.3.0`, and the public install wording closeout is limited to the exact wording below. PDFium-backed commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. Hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, speed, footprint, parser-quality, table-quality, `ethos-doc`, and `ethos-rag` remain blocked. + +v0.3.0 public install wording closeout is recorded in +`docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md`. It updates +`README.md` and `docs/public-boundary-claims.json` to the exact approved public `0.3.0` wording: +Rust crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.3.0`; Python wheel +`ethos-pdf==0.3.0`; npm package `@docushell/ethos-pdf@0.3.0`; GitHub Release `v0.3.0` macOS +arm64/Linux x64 CLI artifacts; and caller-provided PDFium through +`ETHOS_PDFIUM_LIBRARY_PATH`. Package tag creation, release tag creation, and DocuShell integration +remain blocked pending separate evidence and closeout records. + +v0.3.0 public install wording approval decision is recorded in +`docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md`. It +accepts the exact public `0.3.0` install wording request packet for the already-live Rust crates, +Python wheel, npm package, and GitHub Release CLI artifacts. It authorizes only the bounded +README/public-boundary claims closeout captured above; package tag creation, release tag creation, +DocuShell integration, hosted surfaces, production positioning, Windows packaged artifacts, +bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, +`ethos-doc`, and `ethos-rag` remain blocked. v0.3.0 public install wording approval request is recorded in `docs/validation/v0-3-0-public-install-wording-approval-request-validation-2026-07-02.md`. It requests decider review for exact public `0.3.0` install wording across the already-live Rust crates, Python wheel, npm package, and GitHub Release CLI artifacts. It does not change `README.md` or `docs/public-boundary-claims.json`; public `0.3.0` install wording remains blocked -until a separate approval decision and closeout pass. Package tag creation, release tag creation, -and DocuShell integration remain blocked pending separate evidence and closeout records. +at that historical request stage. The approval decision and closeout records above supersede that +wording blocker only for the exact public `0.3.0` install wording packet. Package tag creation, +release tag creation, and DocuShell integration remain blocked pending separate evidence and +closeout records. v0.3.0 npm publication closeout is recorded in `docs/validation/v0-3-0-npm-publication-closeout-validation-2026-07-02.md`. It records live npm diff --git a/docs/public-boundary-claims.json b/docs/public-boundary-claims.json index 5986165..9a86910 100644 --- a/docs/public-boundary-claims.json +++ b/docs/public-boundary-claims.json @@ -5,21 +5,20 @@ "path": "README.md", "claims": [ "Ethos is a deterministic document evidence layer for source-grounded verification and citation checking across native Ethos JSON and supported foreign parser outputs.", - "The current beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 CLI artifacts.", - "npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI binaries; use `0.2.1`.", + "The current beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 CLI artifacts.", "PDFium-backed commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`.", "PDFium-backed commands require caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`.", - "cargo add ethos-doc-core@0.2.0", - "cargo add ethos-verify@0.2.0", - "cargo add ethos-pdf@0.2.0", - "python3 -m pip install ethos-pdf==0.2.0", + "cargo add ethos-doc-core@0.3.0", + "cargo add ethos-verify@0.3.0", + "cargo add ethos-pdf@0.3.0", + "python3 -m pip install ethos-pdf==0.3.0", "The Python wheel is a thin wrapper around a caller-provided local `ethos` CLI binary.", "It does not bundle the CLI or PDFium.", "The JSON verification and evidence-anchor wrapper calls use the caller-provided CLI and do not require PDFium unless the chosen command path invokes PDFium-backed parser, crop, or render behavior.", "The npm package vendors only the approved macOS arm64 and Linux x64 CLI binaries.", - "npm install -g @docushell/ethos-pdf@0.2.1", + "npm install -g @docushell/ethos-pdf@0.3.0", "Unsupported platforms fail before invoking a binary.", - "GitHub Release `v0.2.0` also provides evaluation CLI archives for macOS arm64 and Linux x64.", + "GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64.", "Windows packaged artifacts, bundled project-maintained PDFium builds, hosted surfaces, public benchmark reports, and launch announcements are tracked as separate release-scope work." ] } diff --git a/docs/public-release-checklist.md b/docs/public-release-checklist.md index b6945d0..e04de89 100644 --- a/docs/public-release-checklist.md +++ b/docs/public-release-checklist.md @@ -9,27 +9,45 @@ Ethos v0.3.0 Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pd crates.io, and the Python `ethos-pdf` wheel is live on PyPI. GitHub Release `v0.3.0` now contains closed-out macOS arm64/Linux x64 CLI artifacts for evaluation with caller-provided PDFium. npm `@docushell/ethos-pdf@0.3.0` is live on npm, and the v0.3.0 npm publication closeout is recorded. -A v0.3.0 public install wording approval request is recorded, but `README.md` and public-boundary -claims remain on the current `0.2.x` install baseline until a separate approval decision and -closeout pass. v0.2.0 remains the public CLI artifact baseline with GitHub Release `v0.2.0` macOS -arm64/Linux x64 artifacts, and npm remains `@docushell/ethos-pdf@0.2.1` for public install wording -until that later wording closeout; npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped -stale CLI binaries that reported `ethos 0.1.2`. Public `0.3.0` install wording, package tags, -release tags, and DocuShell integration remain blocked pending their separate tag, wording, and -closeout records. The exact GitHub Release artifact closeout is limited to the approved `v0.3.0` -release assets below, and the exact npm publication closeout is limited to -`@docushell/ethos-pdf@0.3.0`. Hosted -surfaces, production positioning, Windows packaged -artifacts, bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, speed, -footprint, parser-quality, table-quality, `ethos-doc`, and `ethos-rag` remain blocked. +The exact v0.3.0 public install wording packet is approved and closed out: `README.md` and +`docs/public-boundary-claims.json` now use the approved `0.3.0` public sentence, Rust crate install +commands, Python wheel install command, npm install command, GitHub Release wording, and +caller-provided PDFium boundary. Package tags, release tags, and DocuShell integration remain +blocked pending separate evidence, approval, and closeout records. The exact GitHub Release +artifact closeout is limited to the approved `v0.3.0` release assets below, the exact npm +publication closeout is limited to `@docushell/ethos-pdf@0.3.0`, and the public install wording +closeout is limited to the exact wording below. Hosted surfaces, production positioning, Windows +packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports, public +benchmark claims, speed, footprint, parser-quality, table-quality, `ethos-doc`, and `ethos-rag` +remain blocked. + +v0.3.0 public install wording closeout is recorded in +`docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md`. It updates +`README.md` and `docs/public-boundary-claims.json` to the exact approved public `0.3.0` wording: +Rust crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.3.0`; Python wheel +`ethos-pdf==0.3.0`; npm package `@docushell/ethos-pdf@0.3.0`; GitHub Release `v0.3.0` macOS +arm64/Linux x64 CLI artifacts; and caller-provided PDFium through +`ETHOS_PDFIUM_LIBRARY_PATH`. Package tag creation, release tag creation, and DocuShell integration +remain blocked pending separate evidence and closeout records. + +v0.3.0 public install wording approval decision is recorded in +`docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md`. It +accepts the exact public `0.3.0` install wording request packet for the already-live Rust crates, +Python wheel, npm package, and GitHub Release CLI artifacts. It authorizes only the bounded +README/public-boundary claims closeout captured above; package tag creation, release tag creation, +DocuShell integration, hosted surfaces, production positioning, Windows packaged artifacts, +bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, +`ethos-doc`, and `ethos-rag` remain blocked. v0.3.0 public install wording approval request is recorded in `docs/validation/v0-3-0-public-install-wording-approval-request-validation-2026-07-02.md`. It requests decider review for exact public `0.3.0` install wording across the already-live Rust crates, Python wheel, npm package, and GitHub Release CLI artifacts. It does not change `README.md` or `docs/public-boundary-claims.json`; public `0.3.0` install wording remains blocked -until a separate approval decision and closeout pass. Package tag creation, release tag creation, -and DocuShell integration remain blocked pending separate evidence and closeout records. +at that historical request stage. The approval decision and closeout records above supersede that +wording blocker only for the exact public `0.3.0` install wording packet. Package tag creation, +release tag creation, and DocuShell integration remain blocked pending separate evidence and +closeout records. v0.3.0 npm publication closeout is recorded in `docs/validation/v0-3-0-npm-publication-closeout-validation-2026-07-02.md`. It records live npm diff --git a/docs/v0-3-0-release-prep.md b/docs/v0-3-0-release-prep.md index de5a65b..6259924 100644 --- a/docs/v0-3-0-release-prep.md +++ b/docs/v0-3-0-release-prep.md @@ -2,9 +2,10 @@ Status: release-candidate source activation and closeout tracker. Rust crates, the Python wheel, the GitHub Release CLI artifacts, and npm `@docushell/ethos-pdf@0.3.0` are now published or -closed out for their exact approved surfaces. This document does not approve package tags, release -tags, DocuShell integration, hosted surfaces, production positioning, or public `0.3.0` -installability wording. +closed out for their exact approved surfaces. The exact public `0.3.0` install wording packet is +approved and closed out for `README.md` and `docs/public-boundary-claims.json`. This document does +not approve package tags, release tags, DocuShell integration, hosted surfaces, or production +positioning. Canonical preparation sentence: @@ -171,9 +172,39 @@ the decider to accept or reject only the exact public `0.3.0` install wording pa already-live Rust crates, Python wheel, npm package, and GitHub Release CLI artifacts. This request does not change `README.md` or `docs/public-boundary-claims.json`. Public `0.3.0` -install wording remains blocked until a separate approval decision and closeout pass. Package tag -creation, release tag creation, and DocuShell integration remain blocked until separate evidence -and closeout lanes pass. +install wording remains blocked at that historical request stage. The approval decision and +closeout records below supersede that wording blocker only for the exact public `0.3.0` install +wording packet. Package tag creation, release tag creation, and DocuShell integration remain +blocked until separate evidence and closeout lanes pass. + +### 3g. Approve Public Install Wording + +The v0.3.0 public install wording approval decision is recorded in +`docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md`. It +accepts the exact public `0.3.0` install wording request packet for the already-live Rust crates, +Python wheel, npm package, and GitHub Release CLI artifacts. + +This decision authorizes only the bounded README/public-boundary claims closeout below. Package tag +creation, release tag creation, DocuShell integration, hosted surfaces, production positioning, +Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports, +public benchmark claims, `ethos-doc`, and `ethos-rag` remain blocked until separate evidence and +closeout lanes pass. + +### 3h. Close Public Install Wording + +The v0.3.0 public install wording closeout is recorded in +`docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md`. It updates +`README.md` and `docs/public-boundary-claims.json` to the exact approved public `0.3.0` wording: + +- Rust crate install commands use `ethos-doc-core@0.3.0`, `ethos-verify@0.3.0`, and + `ethos-pdf@0.3.0`; +- Python install wording uses `ethos-pdf==0.3.0`; +- npm install wording uses `@docushell/ethos-pdf@0.3.0`; +- GitHub Release wording references `v0.3.0` macOS arm64 and Linux x64 CLI archives; +- PDFium remains caller-provided through `ETHOS_PDFIUM_LIBRARY_PATH`. + +This closeout supersedes the public install wording blocker only for the exact accepted wording +packet. Package tag creation, release tag creation, and DocuShell integration remain blocked. ### 4. Gather Package Evidence Before Any Publication Decision diff --git a/docs/validation/README.md b/docs/validation/README.md index 2d9cf1c..0ae908c 100644 --- a/docs/validation/README.md +++ b/docs/validation/README.md @@ -10,13 +10,33 @@ in `docs/public-release-checklist.md`. Records: +v0.3.0 public install wording closeout is recorded in +`v0-3-0-public-install-wording-closeout-validation-2026-07-02.md`. It updates `README.md` and +`docs/public-boundary-claims.json` to the exact approved public `0.3.0` wording across the +already-live Rust crates, Python wheel, npm package, and GitHub Release CLI artifacts. The exact +public `0.3.0` install wording packet is approved and closed out for those surfaces. It +supersedes the public install wording blocker only for that exact wording packet. Package tag +creation, release tag creation, DocuShell integration, hosted surfaces, production positioning, +Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports, +public benchmark claims, `ethos-doc`, and `ethos-rag` remain blocked pending separate lanes. + +v0.3.0 public install wording approval decision is recorded in +`v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md`. It accepts the exact +public `0.3.0` install wording request packet and authorizes only the bounded +README/public-boundary claims closeout above. Package tag creation, release tag creation, +DocuShell integration, hosted surfaces, production positioning, Windows packaged artifacts, +bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, +`ethos-doc`, and `ethos-rag` remain blocked pending separate lanes. + v0.3.0 public install wording approval request is recorded in `v0-3-0-public-install-wording-approval-request-validation-2026-07-02.md`. It requests decider review for exact public `0.3.0` install wording across the already-live Rust crates, Python wheel, npm package, and GitHub Release CLI artifacts. It does not change `README.md` or `docs/public-boundary-claims.json`; public `0.3.0` install wording remains blocked until a -separate approval decision and closeout pass. Package tag creation, release tag creation, -DocuShell integration, hosted surfaces, production positioning, Windows packaged artifacts, +separate approval decision and closeout pass at that historical request stage. The approval +decision and closeout records above supersede that wording blocker only for the exact public +`0.3.0` install wording packet. Package tag creation, release tag creation, DocuShell integration, +hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports, public benchmark claims, `ethos-doc`, and `ethos-rag` remain blocked pending separate lanes. diff --git a/docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md b/docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md new file mode 100644 index 0000000..3626518 --- /dev/null +++ b/docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md @@ -0,0 +1,94 @@ +# v0.3.0 Public Install Wording Approval Decision Validation - 2026-07-02 + +Validated source HEAD before this record: `7502658`. + +v0.3.0 public install wording approval decision source commit: +`750265856f352b32378ab62c72a74dd6ca72646f`. + +v0.3.0 public install wording approval decision source tree: +`0c458a91f49267aadc4240e2981305338d4793ca`. + +Status: **v0.3.0 public install wording approval decision recorded; wording closeout authorized** + +This record captures the decider approval for the exact public `0.3.0` install wording packet +requested in +`docs/validation/v0-3-0-public-install-wording-approval-request-validation-2026-07-02.md`. + +Decider decision supplied: **Approved**. The exact public `0.3.0` install wording packet below is +accepted for a bounded README and public-boundary claims closeout. + +## Accepted Public Status Sentence + +```text +Ethos is a deterministic document evidence layer for source-grounded verification and citation checking across native Ethos JSON and supported foreign parser outputs. The current beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 CLI artifacts. PDFium-backed commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. +``` + +## Accepted Install Commands + +Rust library crates: + +```bash +cargo add ethos-doc-core@0.3.0 +cargo add ethos-verify@0.3.0 +cargo add ethos-pdf@0.3.0 +``` + +Python wrapper: + +```bash +python3 -m pip install ethos-pdf==0.3.0 +``` + +npm CLI package: + +```bash +npm install -g @docushell/ethos-pdf@0.3.0 +ethos --version +``` + +GitHub Release CLI artifact wording: + +```text +GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64. +``` + +Python wrapper wording: + +```text +The v0.3.0 Python wrapper includes JSON verification and evidence anchoring through that caller-provided CLI. +``` + +## Scope Accepted By This Decision + +- Update `README.md` to the exact accepted public `0.3.0` status sentence and install wording. +- Update `docs/public-boundary-claims.json` so the public-boundary claims gate protects the exact + accepted `0.3.0` README wording. +- Keep PDFium-backed commands scoped to caller-provided PDFium through + `ETHOS_PDFIUM_LIBRARY_PATH`. +- Keep the Python wheel scoped to a thin wrapper around a caller-provided local `ethos` CLI binary. +- Keep the npm package scoped to the approved macOS arm64 and Linux x64 CLI binaries. + +## Non-Actions + +- This decision does not create package tags. +- This decision does not create release tags. +- This decision does not approve DocuShell integration. +- This decision does not approve hosted surfaces. +- This decision does not approve production positioning. +- This decision does not approve Windows packaged artifacts. +- This decision does not approve bundled project-maintained PDFium builds. +- This decision does not approve public benchmark reports. +- This decision does not approve public benchmark claims. +- This decision does not approve speed, footprint, parser-quality, table-quality, or production + claims. +- This decision does not approve `ethos-doc`. +- This decision does not approve `ethos-rag`. + +## Result + +The exact public `0.3.0` install wording packet is approved for a bounded README and +public-boundary claims closeout. Package tag creation, release tag creation, DocuShell +integration, hosted surfaces, production positioning, Windows packaged artifacts, bundled +project-maintained PDFium builds, public benchmark reports, public benchmark claims, speed, +footprint, parser-quality, table-quality, `ethos-doc`, and `ethos-rag` remain blocked pending +separate lanes. diff --git a/docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md b/docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md new file mode 100644 index 0000000..d640a47 --- /dev/null +++ b/docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md @@ -0,0 +1,111 @@ +# v0.3.0 Public Install Wording Closeout Validation - 2026-07-02 + +Validated source HEAD before this record: `7502658`. + +v0.3.0 public install wording closeout source commit: +`750265856f352b32378ab62c72a74dd6ca72646f`. + +v0.3.0 public install wording closeout source tree: +`0c458a91f49267aadc4240e2981305338d4793ca`. + +Status: **v0.3.0 public install wording closeout recorded** + +This record closes the approved public `0.3.0` install wording lane for `README.md` and +`docs/public-boundary-claims.json`. It is based on the approval request and decision records: + +- `docs/validation/v0-3-0-public-install-wording-approval-request-validation-2026-07-02.md` +- `docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md` + +## Public Status Sentence Applied + +```text +Ethos is a deterministic document evidence layer for source-grounded verification and citation checking across native Ethos JSON and supported foreign parser outputs. The current beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 CLI artifacts. PDFium-backed commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. +``` + +## Install Wording Applied + +Rust library crates: + +```bash +cargo add ethos-doc-core@0.3.0 +cargo add ethos-verify@0.3.0 +cargo add ethos-pdf@0.3.0 +``` + +Python wrapper: + +```bash +python3 -m pip install ethos-pdf==0.3.0 +``` + +npm CLI package: + +```bash +npm install -g @docushell/ethos-pdf@0.3.0 +ethos --version +``` + +GitHub Release CLI artifact wording: + +```text +GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64. +``` + +Python wrapper wording: + +```text +The v0.3.0 Python wrapper includes JSON verification and evidence anchoring through that caller-provided CLI. +``` + +## Files Updated + +- `README.md` +- `docs/public-boundary-claims.json` +- `docs/execution-status.md` +- `docs/public-release-checklist.md` +- `docs/v0-3-0-release-prep.md` +- `docs/validation/README.md` +- `CHANGELOG.md` + +## Retained Boundaries + +- PDFium-backed commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. +- The Python wheel remains a thin wrapper around a caller-provided local `ethos` CLI binary. +- The Python wheel does not bundle the CLI or PDFium. +- The npm package vendors only the approved macOS arm64 and Linux x64 CLI binaries. +- Unsupported npm platforms fail before invoking a binary. +- Windows packaged artifacts remain blocked. +- Hosted surfaces remain blocked. +- Production positioning remains blocked. +- Bundled project-maintained PDFium builds remain blocked. +- Public benchmark reports remain blocked. +- Public benchmark claims remain blocked. +- Parser-quality, table-quality, speed, footprint, and production claims remain blocked. +- `ethos-doc` remains blocked. +- `ethos-rag` remains blocked. +- DocuShell integration remains blocked. +- Package tag creation remains blocked. +- Release tag creation remains blocked. + +## Non-Actions + +- This closeout does not create package tags. +- This closeout does not create release tags. +- This closeout does not approve DocuShell integration. +- This closeout does not approve hosted surfaces. +- This closeout does not approve production positioning. +- This closeout does not approve Windows packaged artifacts. +- This closeout does not approve bundled project-maintained PDFium builds. +- This closeout does not approve public benchmark reports. +- This closeout does not approve public benchmark claims. +- This closeout does not approve `ethos-doc`. +- This closeout does not approve `ethos-rag`. + +## Result + +Public `0.3.0` install wording is closed out only for the exact accepted README and +public-boundary claims packet. Package tag creation, release tag creation, DocuShell integration, +hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained +PDFium builds, public benchmark reports, public benchmark claims, speed, footprint, +parser-quality, table-quality, `ethos-doc`, and `ethos-rag` remain blocked pending separate +lanes.