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
16 changes: 6 additions & 10 deletions .github/scripts/test_execution_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,12 @@ def test_public_posture_boundary_remains_explicit(self) -> None:
text,
)
self.assertIn(
"Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, "
"Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether "
"AI citations are grounded in document evidence across native Ethos JSON and supported "
"foreign parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and "
"`ethos-pdf` are available on crates.io at `0.1.1` for evaluation. The Python "
"`ethos-pdf` wheel, npm `@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 "
"CLI artifacts are available for evaluation with caller-provided PDFium. Hosted "
"surfaces, production positioning, Windows packaged artifacts, bundled project-maintained "
"PDFium builds, `ethos-doc`, `ethos-rag`, public benchmark reports, public benchmark "
"claims, and speed, footprint, parser-quality, table-quality, or production claims remain blocked.",
"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.1.1`, the Python `ethos-pdf` wheel, the npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts. PDFium-backed "
"commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`.",
text,
)
self.assertIn("ethos-doc-core", text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,12 @@
"benchmark claims remain blocked."
)
CURRENT_README_WORDING = (
"Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, "
"Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether "
"AI citations are grounded in document evidence across native Ethos JSON and supported foreign "
"parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are "
"available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available "
"for evaluation with caller-provided PDFium."
"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.1.1`, the Python `ethos-pdf` wheel, the npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts. PDFium-backed "
"commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`."
)
BOUNDED_INSTALLATION_WORDING = (
"Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are available on "
Expand Down Expand Up @@ -176,9 +175,10 @@ def test_readme_matches_bounded_public_wording(self) -> None:
self.assertIn("macOS arm64/Linux x64 CLI artifacts", readme)
self.assertIn("Windows packaged artifacts", readme)
self.assertIn("bundled project-maintained PDFium builds", readme)
self.assertIn("`ethos-doc`, `ethos-rag`", readme)
self.assertIn("ethos-doc", readme)
self.assertIn("ethos-rag", readme)
self.assertIn("public benchmark reports", readme)
self.assertIn("public benchmark claims", readme)
self.assertIn("release-scope work", readme)

def test_docs_reference_availability_and_retained_blockers(self) -> None:
for path in (PREP_SCOPE, ROADMAP, EXECUTION_STATUS, VALIDATION_README):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,12 @@
"remain blocked."
)
CURRENT_README_WORDING = (
"Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, "
"Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether "
"AI citations are grounded in document evidence across native Ethos JSON and supported foreign "
"parser outputs."
"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.1.1`, the Python `ethos-pdf` wheel, the npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts. PDFium-backed "
"commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`."
)
EXPECTED_SOURCE = {
"surface": "GitHub source repository docushell/ethos source-only evaluation",
Expand Down Expand Up @@ -186,7 +188,7 @@ def test_public_surfaces_use_exact_approved_wording_and_exclusions(self) -> None
self.assertIn("Windows packaged artifacts", normalized_readme)
self.assertIn("bundled project-maintained PDFium builds", normalized_readme)
self.assertIn("public benchmark reports", normalized_readme)
self.assertIn("public benchmark claims", normalized_readme)
self.assertIn("release-scope work", normalized_readme)

def test_make_target_and_ci_run_approval_after_required_evidence(self) -> None:
block = target_block("milestone-e-prep")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,12 @@
"benchmark claims remain blocked."
)
CURRENT_README_WORDING = (
"Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, "
"Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether "
"AI citations are grounded in document evidence across native Ethos JSON and supported foreign "
"parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are "
"available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available "
"for evaluation with caller-provided PDFium. Hosted surfaces, production positioning, Windows "
"packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, "
"public benchmark reports, public benchmark claims, and speed, footprint, parser-quality, "
"table-quality, or production claims remain blocked."
"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.1.1`, the Python `ethos-pdf` wheel, the npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts. PDFium-backed "
"commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`."
)
APPROVED_SURFACE_LINES = (
"GitHub source repository",
Expand Down
151 changes: 151 additions & 0 deletions .github/scripts/test_patch_0_1_2_readiness_prep.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
#!/usr/bin/env python3
#
# Copyright 2026 The Ethos maintainers
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

from __future__ import annotations

import re
import unittest
from pathlib import Path


ROOT = Path(__file__).resolve().parents[2]
RECORD = ROOT / "docs/validation/patch-0-1-2-readiness-prep-validation-2026-06-24.md"
VALIDATION_README = ROOT / "docs/validation/README.md"
EXECUTION_STATUS = ROOT / "docs/execution-status.md"
PUBLIC_RELEASE_CHECKLIST = ROOT / "docs/public-release-checklist.md"
README = ROOT / "README.md"
WORKSPACE_CARGO = ROOT / "Cargo.toml"
PYPROJECT = ROOT / "pyproject.toml"
NPM_PACKAGE = ROOT / "packages/npm/ethos-pdf/package.json"
PYTHON_INIT = ROOT / "python/ethos_pdf/__init__.py"

SOURCE_SHORT = "8926217"
SOURCE_COMMIT = "89262171ee9fdd342c5bcc808d8c12d40a126337"
SOURCE_TREE = "3e41ef063d7746de2a59486a2bacc2fdecb187f2"

PREP_CONTENTS = (
"0.1.2",
"narrow beta patch",
"ethos evidence anchor",
"`evidence_anchor` v1 guard",
"Professional public README status wording",
"caller-provided PDFium",
)

FORBIDDEN_RELEASE_CLAIMS = (
"0.1.2 is approved",
"v0.1.2 is approved",
"0.1.2 is released",
"v0.1.2 is released",
"publish 0.1.2",
"tag v0.1.2",
"npm install -g @docushell/ethos-pdf@0.1.2",
"python3 -m pip install ethos-pdf==0.1.2",
"cargo add ethos-doc-core@0.1.2",
"cargo add ethos-verify@0.1.2",
"cargo add ethos-pdf@0.1.2",
)


def read(path: Path) -> str:
return path.read_text(encoding="utf-8")


def normalized(path: Path) -> str:
return re.sub(r"\s+", " ", read(path))


class Patch012ReadinessPrepTests(unittest.TestCase):
def test_record_binds_source_and_prep_contents(self) -> None:
text = normalized(RECORD)
raw = read(RECORD)

self.assertIn(f"Validated source HEAD before this record: `{SOURCE_SHORT}`", raw)
self.assertIn(f"Patch-prep source commit: `{SOURCE_COMMIT}`", text)
self.assertIn(f"Patch-prep source tree: `{SOURCE_TREE}`", text)
for item in PREP_CONTENTS:
self.assertIn(item, text)

def test_record_keeps_publication_and_support_boundaries_closed(self) -> None:
text = normalized(RECORD)
lower = text.lower()

for phrase in (
"does not approve a release",
"does not approve a tag",
"does not approve package publish",
"does not approve a GitHub Release artifact",
"does not approve hosted surfaces",
"does not approve production positioning",
"does not approve Windows packaged artifacts",
"does not approve bundled project-maintained PDFium builds",
"does not approve public benchmark reports",
"does not approve public benchmark claims",
"does not approve `ethos-doc`",
"does not approve `ethos-rag`",
):
self.assertIn(phrase, text)
for phrase in FORBIDDEN_RELEASE_CLAIMS:
self.assertNotIn(phrase, lower)
self.assertIn("current public install baseline remains `0.1.1`", text)

def test_public_readme_uses_professional_beta_wording_without_version_drift(self) -> None:
text = read(README)
lower = text.lower()

self.assertIn("Status: public beta evaluation.", text)
self.assertIn("deterministic document evidence layer", text)
self.assertIn("source-grounded verification", text)
self.assertIn("ETHOS_PDFIUM_LIBRARY_PATH", text)
self.assertIn("cargo add ethos-doc-core@0.1.1", text)
self.assertIn("python3 -m pip install ethos-pdf==0.1.1", text)
self.assertIn("npm install -g @docushell/ethos-pdf@0.1.1", text)
self.assertNotIn("not production-ready", lower)
self.assertNotIn("not stable production surfaces", lower)
for phrase in FORBIDDEN_RELEASE_CLAIMS:
self.assertNotIn(phrase, lower)

def test_package_manifests_remain_on_published_baseline(self) -> None:
self.assertIn('version = "0.1.1"', read(WORKSPACE_CARGO))
self.assertIn('version = "0.1.1"', read(PYPROJECT))
self.assertIn('__version__ = "0.1.1"', read(PYTHON_INIT))
self.assertIn('"version": "0.1.1"', read(NPM_PACKAGE))

def test_record_is_indexed_and_status_docs_reference_it(self) -> None:
record_name = RECORD.name

self.assertIn(record_name, read(VALIDATION_README))
self.assertIn(record_name, read(EXECUTION_STATUS))
self.assertIn(record_name, read(PUBLIC_RELEASE_CHECKLIST))

def test_record_avoids_local_private_paths(self) -> None:
text = read(RECORD)

for private in (
"/" + "Users/",
"/" + "private/tmp",
"/" + "private/var",
"/" + "var/folders",
"saumil" + "diwaker",
"Desktop/" + "Stuff",
"project/repo/" + "ethos",
):
self.assertNotIn(private, text)


if __name__ == "__main__":
unittest.main()
16 changes: 6 additions & 10 deletions .github/scripts/test_public_prealpha_wording_approval.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,12 @@
"across native Ethos JSON and supported foreign parser outputs."
)
APPROVED_PUBLIC_BETA_SENTENCE = (
"Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, "
"Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether "
"AI citations are grounded in document evidence across native Ethos JSON and supported foreign "
"parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are "
"available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available "
"for evaluation with caller-provided PDFium. Hosted surfaces, production positioning, Windows "
"packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, "
"public benchmark reports, public benchmark claims, and speed, footprint, parser-quality, "
"table-quality, or production claims remain blocked."
"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.1.1`, the Python `ethos-pdf` wheel, the npm "
"`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts. PDFium-backed "
"commands use caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`."
)

FORBIDDEN_APPROVAL_WORDING = [
Expand Down
12 changes: 5 additions & 7 deletions .github/scripts/test_public_surface_posture.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,17 @@ def test_readme_status_matches_public_beta_evaluation_scope(self) -> None:
self.assertIn("public beta evaluation", text)
for claim in readme_boundary_claims():
self.assertIn(claim, normalized)
self.assertIn("Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf`", text)
self.assertIn("deterministic document evidence layer", text)
self.assertIn("Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf`", normalized)
self.assertIn("Python `ethos-pdf` wheel", normalized)
self.assertIn("caller-provided PDFium", text)
self.assertIn("Windows packaged artifacts", text)
self.assertIn("project-maintained PDFium builds", text)
self.assertIn("public benchmark reports", text)
self.assertIn("public benchmark claims", text)
self.assertIn("speed, footprint, parser-quality", text)
self.assertIn("table-quality, or production claims remain blocked", normalized)
self.assertIn("release-scope work", text)
self.assertIn("cargo add ethos-doc-core@0.1.1", text)
self.assertIn("cargo add ethos-verify@0.1.1", text)
self.assertIn("cargo add ethos-pdf@0.1.1", text)
self.assertIn("npm install -g @docushell/ethos-pdf@0.1.1", text)
self.assertNotIn("not production-ready", text.lower())
self.assertNotIn("not stable production surfaces", text.lower())
self.assertNotIn("contracts phase", text)
self.assertNotIn("has not run", text)

Expand Down
1 change: 1 addition & 0 deletions .github/scripts/test_release_candidate_prep.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
"$(PYTHON) .github/scripts/test_release_candidate_prep.py",
"$(PYTHON) .github/scripts/test_release_reproducibility_scaffold.py",
"$(PYTHON) .github/scripts/test_launch_copy_approval_scaffold.py",
"$(PYTHON) .github/scripts/test_patch_0_1_2_readiness_prep.py",
"$(PYTHON) .github/scripts/test_first_public_release_artifact_evidence.py",
"$(PYTHON) .github/scripts/test_first_public_release_final_decider.py",
"$(PYTHON) .github/scripts/test_first_public_release_linux_x64_artifact_evidence.py",
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Unreleased

- boundary-exception: record narrow patch `0.1.2` readiness prep and professional public README beta wording while retaining `0.1.1` install baselines; no release, tag, package publication, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, or `ethos-rag` boundary change.
- boundary-exception: add an `evidence_anchor` v1 guard target, CI guard step, and schema-bound inventory for the merged source-only command; no hosted, production, Windows, bundled PDFium, benchmark, parser-quality, table-quality, or release-posture boundary change.
- boundary-exception: add source-only `ethos evidence anchor` schema and CLI surface for deterministic evidence refs; no hosted, production, Windows, bundled PDFium, benchmark, parser-quality, table-quality, or release-posture boundary change.
- boundary-exception: refresh patch `0.1.1` execution status for published evaluation surfaces while retaining hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` blockers.
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ release-candidate-prep:
$(PYTHON) .github/scripts/test_release_candidate_prep.py
$(PYTHON) .github/scripts/test_release_reproducibility_scaffold.py
$(PYTHON) .github/scripts/test_launch_copy_approval_scaffold.py
$(PYTHON) .github/scripts/test_patch_0_1_2_readiness_prep.py
$(PYTHON) .github/scripts/test_first_public_release_artifact_evidence.py
$(PYTHON) .github/scripts/test_first_public_release_final_decider.py
$(PYTHON) .github/scripts/test_first_public_release_linux_x64_artifact_evidence.py
Expand Down
Loading
Loading