diff --git a/.github/scripts/test_execution_status.py b/.github/scripts/test_execution_status.py index fbe71b6..9e9c874 100644 --- a/.github/scripts/test_execution_status.py +++ b/.github/scripts/test_execution_status.py @@ -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) 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 8d5b19f..28a6100 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 @@ -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 " @@ -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): 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 922159a..08615e8 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 @@ -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", @@ -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") 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 a6f77ca..853eaf2 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 @@ -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", diff --git a/.github/scripts/test_patch_0_1_2_readiness_prep.py b/.github/scripts/test_patch_0_1_2_readiness_prep.py new file mode 100644 index 0000000..f374400 --- /dev/null +++ b/.github/scripts/test_patch_0_1_2_readiness_prep.py @@ -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() diff --git a/.github/scripts/test_public_prealpha_wording_approval.py b/.github/scripts/test_public_prealpha_wording_approval.py index 299adec..d786b81 100644 --- a/.github/scripts/test_public_prealpha_wording_approval.py +++ b/.github/scripts/test_public_prealpha_wording_approval.py @@ -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 = [ diff --git a/.github/scripts/test_public_surface_posture.py b/.github/scripts/test_public_surface_posture.py index f17081a..bf1ba0a 100644 --- a/.github/scripts/test_public_surface_posture.py +++ b/.github/scripts/test_public_surface_posture.py @@ -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) diff --git a/.github/scripts/test_release_candidate_prep.py b/.github/scripts/test_release_candidate_prep.py index 614727b..9649fff 100644 --- a/.github/scripts/test_release_candidate_prep.py +++ b/.github/scripts/test_release_candidate_prep.py @@ -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", diff --git a/CHANGELOG.md b/CHANGELOG.md index 64e68d9..911a699 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/Makefile b/Makefile index 71ac323..4c10c41 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/README.md b/README.md index 8a94f71..636ba60 100644 --- a/README.md +++ b/README.md @@ -8,18 +8,14 @@ ![status: public beta](https://img.shields.io/badge/status-public--beta-blue) > **Status: public beta evaluation.** -> 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. -> Current execution status and blockers live in `docs/execution-status.md`; public-release -> hygiene gates live in `docs/public-release-checklist.md`. +> 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`. +> Current execution status and release-scope notes live in `docs/execution-status.md`; +> public-release hygiene gates live in `docs/public-release-checklist.md`. Ethos is a verification and grounding system for document evidence. It includes a deterministic PDF parser that turns born-digital PDFs into auditable grounding artifacts: JSON, Markdown, text, @@ -293,7 +289,7 @@ verify-alpha demo checks passed Generated reports and crop descriptors are written under `target/verify-alpha/`. -## What Ethos is not (honest scope) +## Scope and Boundaries - Ethos is **not an OCR engine** yet, and it does not claim to beat VLM parsers on complex scanned layouts. Scanned/image-only pages fail with a stable `ocr_required` error. @@ -303,9 +299,8 @@ Generated reports and crop descriptors are written under `target/verify-alpha/`. - Verification checks **evidence grounding** (the cited region exists, the text matches, the fingerprint is fresh). It is not a semantic correctness judgment of an answer. - Non-embedded CJK font fallback is out of Release 1 and warns explicitly. -- Public benchmark reports, Windows packaged artifacts, bundled project-maintained PDFium builds, - hosted surfaces, production positioning, and launch announcements remain blocked until a - dedicated approval record exists. +- Windows packaged artifacts, bundled project-maintained PDFium builds, hosted surfaces, public + benchmark reports, and launch announcements are tracked as separate release-scope work. It is built for teams that need trustworthy local document grounding, deterministic native parsing when they want it, and citation evidence that can be inspected instead of trusted blindly. @@ -436,8 +431,8 @@ Not in the base install. Scanned or image-only pages fail with `ocr_required`. The source-built CLI supports `--fail-on-ungrounded`, which exits `1` when verification completes but evidence is not fully grounded. Treat the current repo, approved Rust library crates, Python -wheel, npm package, and macOS arm64/Linux x64 CLI artifacts as public beta evaluation, not stable -production surfaces. +wheel, npm package, and macOS arm64/Linux x64 CLI artifacts as public beta evaluation surfaces. +Release scope and support boundaries are tracked in `docs/execution-status.md`. ### Where are benchmark results? diff --git a/docs/execution-status.md b/docs/execution-status.md index f62df7e..cdae262 100644 --- a/docs/execution-status.md +++ b/docs/execution-status.md @@ -2,7 +2,7 @@ Date: 2026-06-24 Owner: product / decider -Status: Public beta evaluation is approved for the GitHub source repository, the three bounded Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf`, the Python `ethos-pdf` wheel, the npm `@docushell/ethos-pdf` CLI package, the macOS arm64 CLI artifact, and the Linux x64 CLI artifact at `0.1.1`. Internal Milestone D source-only closeout remains complete, with Milestone E prep source-only closeout recorded for the internal prep boundary. Week 0 governance is accepted, WS-ENGINE Phase 1 has a real narrow PDFium path, WS-VERIFY-ALPHA has real deterministic evidence checks over native Ethos JSON and pinned OpenDataLoader output, WS-HARNESS has fail-closed readiness scaffolding, the Gate Zero corpus/hardware manifest and direct competitor lock are frozen/signed, ADR-0005 records an accepted `PROCEED` decision for internal Milestone B continuation, ADR-0006 closes package identifier/trademark validation, ADR-0007 locks the product direction, and patch `0.1.1` publication/install wording closeouts are recorded for the approved evaluation surfaces. The exact current public sentence approved for source, Rust crate, Python wheel, npm package, macOS arm64 CLI artifact, and Linux x64 CLI artifact evaluation surfaces is: "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." Milestone C has a source-tree internal artifact-validation closeout for the RAG chunk and security-report trust-loop checks. Milestone D has a source-tree internal source-only closeout recorded in `docs/validation/milestone-d-final-closeout-validation-2026-06-19.md`; the narrow `verify_citations` v1 contract in `docs/milestone-d-verify-citations-contract.md` remains carried by the existing `ethos verify` path and fixture-backed validation. The D `crop_element` v1 contract in `docs/milestone-d-crop-element-contract.md` is carried by the source-bound `ethos crop_element` CLI command plus existing `ethos verify --crop-dir` evidence artifacts; `ethos-core::crop_element` validates request identity, resolves one native document element, and emits descriptor/rendered crop metadata for that source-only contract when caller-provided source PDF bytes are bound. The `sandbox_subprocess` v1 contract in `docs/milestone-d-sandbox-subprocess-contract.md` classifies existing PDF worker-process timeout, memory-limit, stable-error, and diagnostics-gated stderr behavior without adding hardened sandbox rules. The first Milestone E prep boundary is recorded in `docs/milestone-e-prep-scope.md`, the internal fixture-candidate inventory is recorded in `docs/milestone-e-fixture-candidates.json`, internal fixture-promotion criteria are recorded in `docs/milestone-e-fixture-promotion-criteria.json`, the internal trust-loop walkthrough plan is recorded in `docs/milestone-e-internal-trust-loop-walkthrough.json`, the internal trust-loop use protocol is recorded in `docs/milestone-e-internal-trust-loop-use-protocol.json`, the internal trust-loop rehearsal/evidence matrix is recorded in `docs/milestone-e-internal-trust-loop-rehearsal-evidence-matrix.json`, and the internal trust-loop blocker ledger is recorded in `docs/milestone-e-internal-trust-loop-blocker-ledger.json`; these E prep JSON artifacts are schema-validated by `schemas/validate_examples.py` and only identify tracked trust-loop fixture candidates, internal promotion criteria, internal walkthrough sequencing, source-checkout rules for internal use, internal evidence-lane rehearsal planning, blocked-output alignment, evidence-lane alignment, diagnostic-boundary alignment, promotion-status alignment at `not_promoted_beyond_internal_fixture_planning`, source-status alignment at `source-only-pre-alpha-internal-milestone-e-prep`, applies-to binding alignment across current E source artifacts, required-before alignment for current readiness gates including `make milestone-e-prep remains green`, validation-record source-head alignment for each `Validated source HEAD before this record` line, and explicit blocker tracking that does not resolve or soften blockers. The Milestone E prep source-only closeout is recorded in `docs/validation/milestone-e-final-closeout-validation-2026-06-20.md` and does not resolve or soften blockers outside the approved public beta evaluation surfaces. Hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, public benchmark reports, public benchmark claims, and all speed/footprint/parser-quality/table-quality/production claims remain blocked. The controlled-run handoff remains `docs/gate-zero-evidence-runbook.md`; the accepted decision record is `docs/decisions/ADR-0005-gate-zero-decision.md`. +Status: Public beta evaluation is approved for the GitHub source repository, the three bounded Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf`, the Python `ethos-pdf` wheel, the npm `@docushell/ethos-pdf` CLI package, the macOS arm64 CLI artifact, and the Linux x64 CLI artifact at `0.1.1`. Internal Milestone D source-only closeout remains complete, with Milestone E prep source-only closeout recorded for the internal prep boundary. Week 0 governance is accepted, WS-ENGINE Phase 1 has a real narrow PDFium path, WS-VERIFY-ALPHA has real deterministic evidence checks over native Ethos JSON and pinned OpenDataLoader output, WS-HARNESS has fail-closed readiness scaffolding, the Gate Zero corpus/hardware manifest and direct competitor lock are frozen/signed, ADR-0005 records an accepted `PROCEED` decision for internal Milestone B continuation, ADR-0006 closes package identifier/trademark validation, ADR-0007 locks the product direction, and patch `0.1.1` publication/install wording closeouts are recorded for the approved evaluation surfaces. The exact current public sentence approved for source, Rust crate, Python wheel, npm package, macOS arm64 CLI artifact, and Linux x64 CLI artifact evaluation surfaces is: "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`." Milestone C has a source-tree internal artifact-validation closeout for the RAG chunk and security-report trust-loop checks. Milestone D has a source-tree internal source-only closeout recorded in `docs/validation/milestone-d-final-closeout-validation-2026-06-19.md`; the narrow `verify_citations` v1 contract in `docs/milestone-d-verify-citations-contract.md` remains carried by the existing `ethos verify` path and fixture-backed validation. The D `crop_element` v1 contract in `docs/milestone-d-crop-element-contract.md` is carried by the source-bound `ethos crop_element` CLI command plus existing `ethos verify --crop-dir` evidence artifacts; `ethos-core::crop_element` validates request identity, resolves one native document element, and emits descriptor/rendered crop metadata for that source-only contract when caller-provided source PDF bytes are bound. The `sandbox_subprocess` v1 contract in `docs/milestone-d-sandbox-subprocess-contract.md` classifies existing PDF worker-process timeout, memory-limit, stable-error, and diagnostics-gated stderr behavior without adding hardened sandbox rules. The first Milestone E prep boundary is recorded in `docs/milestone-e-prep-scope.md`, the internal fixture-candidate inventory is recorded in `docs/milestone-e-fixture-candidates.json`, internal fixture-promotion criteria are recorded in `docs/milestone-e-fixture-promotion-criteria.json`, the internal trust-loop walkthrough plan is recorded in `docs/milestone-e-internal-trust-loop-walkthrough.json`, the internal trust-loop use protocol is recorded in `docs/milestone-e-internal-trust-loop-use-protocol.json`, the internal trust-loop rehearsal/evidence matrix is recorded in `docs/milestone-e-internal-trust-loop-rehearsal-evidence-matrix.json`, and the internal trust-loop blocker ledger is recorded in `docs/milestone-e-internal-trust-loop-blocker-ledger.json`; these E prep JSON artifacts are schema-validated by `schemas/validate_examples.py` and only identify tracked trust-loop fixture candidates, internal promotion criteria, internal walkthrough sequencing, source-checkout rules for internal use, internal evidence-lane rehearsal planning, blocked-output alignment, evidence-lane alignment, diagnostic-boundary alignment, promotion-status alignment at `not_promoted_beyond_internal_fixture_planning`, source-status alignment at `source-only-pre-alpha-internal-milestone-e-prep`, applies-to binding alignment across current E source artifacts, required-before alignment for current readiness gates including `make milestone-e-prep remains green`, validation-record source-head alignment for each `Validated source HEAD before this record` line, and explicit blocker tracking that does not resolve or soften blockers. The Milestone E prep source-only closeout is recorded in `docs/validation/milestone-e-final-closeout-validation-2026-06-20.md` and does not resolve or soften blockers outside the approved public beta evaluation surfaces. Hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, public benchmark reports, public benchmark claims, and all speed/footprint/parser-quality/table-quality/production claims remain blocked. The controlled-run handoff remains `docs/gate-zero-evidence-runbook.md`; the accepted decision record is `docs/decisions/ADR-0005-gate-zero-decision.md`. Older Milestone E paragraphs below preserve historical review records and their blockers at the time they were written. Patch `0.1.1` closeout records supersede those historical blockers only for the approved source, Rust crate, Python wheel, npm package, macOS arm64 CLI artifact, and Linux x64 CLI artifact evaluation surfaces. @@ -268,6 +268,8 @@ The public evaluation current-state closeout record in `docs/validation/mileston The patch `0.1.1` readiness prep record in `docs/validation/patch-0-1-1-readiness-prep-validation-2026-06-23.md` records candidate onboarding contents after `ethos doctor`, synthetic fixture golden-change guarding, the 2-minute PDF parse quickstart, and improved missing/unusable PDFium guidance landed on `main`. This is a prep record only: it does not approve a release, tag, version bump, package publish, GitHub Release artifact, hosted surface, production positioning, Windows packaged artifact, bundled project-maintained PDFium build, public benchmark report, or public benchmark claim. The current public baseline remains `v0.1.0` until a separate release decision, version update, artifact build, smoke evidence, and operator action are completed. +The patch `0.1.2` readiness prep record in `docs/validation/patch-0-1-2-readiness-prep-validation-2026-06-24.md` records the narrow beta patch candidate boundary after `ethos evidence anchor`, the `evidence_anchor` v1 guard, and professional public README status wording landed on `main`. This is a prep record only: it does not approve a release, tag, version bump, package publish, GitHub Release artifact, hosted surface, production positioning, Windows packaged artifact, bundled project-maintained PDFium build, public benchmark report, or public benchmark claim. The current public install baseline remains `0.1.1` until a separate release decision, version update, artifact build, smoke evidence, registry/GitHub Release evidence, and operator action are completed. + | Work item | Current status | Remaining blocker | | --- | --- | --- | | PDFium Phase 1 profile | Landed: pinned profile, V8/XFA-disabled state, platform hashes, runtime library hashes, and provenance are recorded | Phase 2 project-maintained builds still block Public Beta | @@ -286,4 +288,4 @@ The patch `0.1.1` readiness prep record in `docs/validation/patch-0-1-1-readines ## PM Rule -Public language may use this exact approved sentence on the current source, Rust crate, Python wheel, npm package, macOS arm64 CLI artifact, and Linux x64 CLI artifact evaluation surfaces: "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." All wording beyond that sentence still requires claim-audit and decider review for the exact surface. Do not describe Ethos as having public benchmark validation, production readiness, broad parser completeness, speed, footprint, parser-quality, or table-quality claims. Hosted surfaces, Windows packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, and `ethos-rag` remain blocked. Internal parser work should proceed only when it supports accepted evidence paths or the trust layer; the product-differentiating path remains verification and grounding first, with parser expansion serving that path. +Public language may use this exact approved sentence on the current source, Rust crate, Python wheel, npm package, macOS arm64 CLI artifact, and Linux x64 CLI artifact evaluation surfaces: "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`." All wording beyond that sentence still requires claim-audit and decider review for the exact surface. Do not describe Ethos as having public benchmark validation, production readiness, broad parser completeness, speed, footprint, parser-quality, or table-quality claims. Hosted surfaces, Windows packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, and `ethos-rag` remain blocked. Internal parser work should proceed only when it supports accepted evidence paths or the trust layer; the product-differentiating path remains verification and grounding first, with parser expansion serving that path. diff --git a/docs/public-boundary-claims.json b/docs/public-boundary-claims.json index ded4e93..43a96c0 100644 --- a/docs/public-boundary-claims.json +++ b/docs/public-boundary-claims.json @@ -4,9 +4,9 @@ "readme": { "path": "README.md", "claims": [ - "Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` 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`.", "PDFium-backed commands require caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`.", "python3 -m pip install ethos-pdf==0.1.1", "The Python wheel is a thin wrapper around a caller-provided local `ethos` CLI binary.", @@ -14,7 +14,8 @@ "The npm package vendors only the approved macOS arm64 and Linux x64 CLI binaries.", "npm install -g @docushell/ethos-pdf@0.1.1", "Unsupported platforms fail before invoking a binary.", - "GitHub Release `v0.1.1` also provides evaluation CLI archives for macOS arm64 and Linux x64." + "GitHub Release `v0.1.1` 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 f810506..f23ccf7 100644 --- a/docs/public-release-checklist.md +++ b/docs/public-release-checklist.md @@ -19,6 +19,14 @@ does not approve a release, tag, version bump, package publish, GitHub Release a surface, production positioning, Windows packaged artifact, bundled project-maintained PDFium build, public benchmark report, or public benchmark claim. +Patch `0.1.2` readiness prep is recorded in +`docs/validation/patch-0-1-2-readiness-prep-validation-2026-06-24.md` for review only. It records +the narrow beta patch candidate boundary after `ethos evidence anchor`, the `evidence_anchor` v1 +guard, and professional public README status wording landed on `main`. It keeps the current public +install baseline at `0.1.1` and does not approve a release, tag, version bump, package publish, +GitHub Release artifact, hosted surface, production positioning, Windows packaged artifact, +bundled project-maintained PDFium build, public benchmark report, or public benchmark claim. + ## Required Before Public Push - Package-name and trademark decision is closed by accepted ADR-0006 in diff --git a/docs/validation/README.md b/docs/validation/README.md index ff87626..4fb0650 100644 --- a/docs/validation/README.md +++ b/docs/validation/README.md @@ -647,6 +647,12 @@ recording the exact current-main source candidate and required follow-up evidenc status refresh validation updates the current execution-status summary and PM rule for published evaluation surfaces while retaining hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` blockers. +- `patch-0-1-2-readiness-prep-validation-2026-06-24.md` - patch 0.1.2 readiness prep validation + records the narrow beta patch candidate boundary after `ethos evidence anchor`, the + `evidence_anchor` v1 guard, and professional public README status wording landed, while keeping + the current public install baseline at `0.1.1` and leaving release, tag, publication, GitHub + Release artifact, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and + `ethos-rag` surfaces unapproved. - `milestone-e-validation-command-index-validation-2026-06-20.md` - internal Milestone E validation-command index validation passed through command-alignment checks, schema enum checks, row-record checks, public-surface posture checks, `make milestone-e-prep`, and diff hygiene; the diff --git a/docs/validation/patch-0-1-2-readiness-prep-validation-2026-06-24.md b/docs/validation/patch-0-1-2-readiness-prep-validation-2026-06-24.md new file mode 100644 index 0000000..ec33b65 --- /dev/null +++ b/docs/validation/patch-0-1-2-readiness-prep-validation-2026-06-24.md @@ -0,0 +1,61 @@ +# Patch 0.1.2 Readiness Prep Validation - 2026-06-24 + +## Purpose + +Record the immediate candidate boundary for a possible patch `0.1.2` review after the +`ethos evidence anchor` command and the `evidence_anchor` v1 guard landed on `main`. + +Validated source HEAD before this record: `8926217`. +Patch-prep source commit: `89262171ee9fdd342c5bcc808d8c12d40a126337`. +Patch-prep source tree: `3e41ef063d7746de2a59486a2bacc2fdecb187f2`. + +## Candidate Contents + +The candidate patch contents are limited to a narrow beta patch: + +- `ethos evidence anchor` as a deterministic source-bound evidence-ref checking command. +- The `evidence_anchor` v1 guard, including schema/example validation and CI-enforced drift checks. +- Professional public README status wording that keeps `Status: public beta evaluation.` while + presenting Ethos as a source-grounded verification layer instead of a blocker ledger. +- Retained caller-provided PDFium boundary for PDFium-backed paths. + +## Boundary + +This prep record does not approve a release, does not approve a tag, does not approve package +publish, does not approve npm publish, does not approve PyPI publish, does not approve crates.io +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 speed, footprint, parser-quality, table-quality, +or production claims, does not approve `ethos-doc`, and does not approve `ethos-rag`. + +The current public install baseline remains `0.1.1` until a separate release decision, version +update, artifact build, smoke evidence, registry/GitHub Release evidence, and operator action are +completed. + +PDFium remains caller-provided through `ETHOS_PDFIUM_LIBRARY_PATH`. The setup checks only whether +the configured PDFium is usable by Ethos; they do not vet untrusted dynamic libraries. + +## Required Before Any Patch Release Action + +- Decide the exact `0.1.2` package and artifact surfaces in a separate decider step. +- Update package and CLI versions only after that decision. +- Build and smoke any proposed artifacts from the exact candidate commit. +- Re-run public posture, claims, source snapshot, license/NOTICE, and private-path checks after + any version or public-facing wording changes. +- Record manual operator evidence for any credentialed publish or GitHub Release action. + +## Validation Commands + +The prep lane should pass at least: + +```sh +python3 .github/scripts/test_patch_0_1_2_readiness_prep.py +python3 .github/scripts/test_public_surface_posture.py +python3 .github/scripts/test_public_prealpha_wording_approval.py +python3 .github/scripts/test_release_candidate_prep.py +python3 .github/scripts/claims_gate.py +python3 .github/scripts/public_boundary_claims_gate.py +make light-check PYTHON=python3 +git diff --check +```