diff --git a/.github/scripts/check_release_state.py b/.github/scripts/check_release_state.py index 28adef6a..28e2ab17 100644 --- a/.github/scripts/check_release_state.py +++ b/.github/scripts/check_release_state.py @@ -229,7 +229,7 @@ def render_current_status(state: Mapping[str, object]) -> str: f"and the Python `{python_package['name']}` wheel is live on PyPI. Its released version is " f"`{python_package['version']}`. GitHub Release `{github['tag']}` is marked as the " "repository's latest release and contains closed-out " - f"{platforms} CLI artifacts for evaluation with " + f"{platforms} CLI artifacts built against " f"caller-provided PDFium through `{release['pdfium_environment']}`. npm " f"`{npm_package['name']}@{npm_package['version']}` is live on npm. The exact v{version} " f"public install wording packet is approved and closed out. Package-tag creation for " diff --git a/.github/scripts/claims_gate.py b/.github/scripts/claims_gate.py index ae31160d..0591ccc9 100644 --- a/.github/scripts/claims_gate.py +++ b/.github/scripts/claims_gate.py @@ -51,12 +51,10 @@ (re.compile(r"best[- ]in[- ]class", re.I), '"best-in-class" claim'), (re.compile(r"contracts phase", re.I), "stale pre-alpha posture"), (re.compile(r"Gate Zero[^\n]*has not run", re.I), "stale Gate Zero posture"), - (re.compile(r"launch package", re.I), "public-surface launch/package posture"), + (re.compile(r"pre[- ]alpha", re.I), "stale pre-alpha posture"), + (re.compile(r"public beta", re.I), "stale public-beta posture"), + (re.compile(r"beta evaluation", re.I), "stale beta-evaluation posture"), (re.compile(r"benchmark[- ]validated", re.I), "unsupported public benchmark posture"), - (re.compile(r"release[- ]ready", re.I), "unsupported public release posture"), - (re.compile(r"package[- ]ready", re.I), "unsupported public package posture"), - (re.compile(r"production[- ]ready", re.I), "unsupported public production posture"), - (re.compile(r"launch[- ]ready", re.I), "unsupported public launch posture"), (re.compile(r"pixel[- ]level proof", re.I), '"pixel-level proof" claim'), (re.compile(r"semantic proof", re.I), '"semantic proof" claim'), (re.compile(r"arithmetic proof", re.I), '"arithmetic proof" claim'), diff --git a/.github/scripts/test_claims_gate_registry_surfaces.py b/.github/scripts/test_claims_gate_registry_surfaces.py index 47457b4a..92bc3ae7 100644 --- a/.github/scripts/test_claims_gate_registry_surfaces.py +++ b/.github/scripts/test_claims_gate_registry_surfaces.py @@ -60,11 +60,11 @@ def test_npm_quickstart_rejects_banned_claim(self) -> None: write_surface( root, "packages/npm/ethos-pdf/QUICKSTART.md", - "Install this production-ready package.\n", + "Install this public beta package.\n", ) hits = find_claim_hits(root, REGISTRY_SURFACES) self.assertEqual(Path("packages/npm/ethos-pdf/QUICKSTART.md"), hits[0][0]) - self.assertEqual("unsupported public production posture", hits[0][2]) + self.assertEqual("stale public-beta posture", hits[0][2]) def test_missing_optional_surface_does_not_fail_scan(self) -> None: with tempfile.TemporaryDirectory(prefix="ethos-claims-registry-") as temp: diff --git a/.github/scripts/test_evidence_anchor_v1_contract.py b/.github/scripts/test_evidence_anchor_v1_contract.py index 7574f4cc..3f265c49 100644 --- a/.github/scripts/test_evidence_anchor_v1_contract.py +++ b/.github/scripts/test_evidence_anchor_v1_contract.py @@ -187,7 +187,7 @@ def test_contract_inventory_binds_existing_files_and_tests(self) -> None: self.assertEqual(inventory["schema_version"], 1) self.assertEqual(inventory["contract"], "evidence_anchor.v1") - self.assertEqual(inventory["status"], "source-only-public-beta-evaluation") + self.assertEqual(inventory["status"], "supported") self.assertEqual(inventory["carrier"], "ethos evidence anchor") for key in ["request_schema", "report_schema"]: self.assertTrue((ROOT / inventory[key]).is_file(), key) @@ -217,8 +217,8 @@ def test_status_docs_link_contract_without_expanding_posture(self) -> None: self.assertIn("make evidence-anchor-v1-contract", text, path) readme = README.read_text(encoding="utf-8") - self.assertIn("Status: public beta evaluation.", readme) - self.assertNotIn("production-ready", readme.lower()) + self.assertIn("deterministic document evidence layer", readme) + self.assertNotIn("public beta", readme.lower()) def test_anchor_statuses_match_inventory(self) -> None: inventory = load_json(CONTRACT_INVENTORY) diff --git a/.github/scripts/test_pdfium_manual_setup_contract.py b/.github/scripts/test_pdfium_manual_setup_contract.py index 45c814e2..57870d40 100644 --- a/.github/scripts/test_pdfium_manual_setup_contract.py +++ b/.github/scripts/test_pdfium_manual_setup_contract.py @@ -126,7 +126,7 @@ def test_readme_has_bounded_two_minute_pdf_parse_quickstart(self) -> None: self.assertIn("ethos doc parse fixtures/synthetic/simple-text/document.pdf --format text", text) self.assertIn("caller-provided through `ETHOS_PDFIUM_LIBRARY_PATH`", text) self.assertIn("does not download, install, repair, or vet untrusted dynamic libraries", text) - self.assertIn("evaluation smoke path, not a benchmark", text) + self.assertIn("smoke path, not a benchmark", text) self.assertIn("born-digital", text) def test_rust_backend_missing_pdfium_error_names_env_var(self) -> None: diff --git a/.github/scripts/test_public_surface_posture.py b/.github/scripts/test_public_surface_posture.py index 6871eb36..c133df42 100644 --- a/.github/scripts/test_public_surface_posture.py +++ b/.github/scripts/test_public_surface_posture.py @@ -39,18 +39,16 @@ def readme_boundary_claims() -> list[str]: class PublicSurfacePostureTests(unittest.TestCase): - def test_readme_status_matches_public_beta_evaluation_scope(self) -> None: + def test_readme_status_matches_supported_release_scope(self) -> None: text = read(README) normalized = " ".join(line.removeprefix("> ").strip() for line in text.splitlines()) - self.assertIn("public beta evaluation", text) for claim in readme_boundary_claims(): self.assertIn(claim, normalized) 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("release-scope work", text) self.assertIn("cargo add ethos-doc-core@0.5.0", text) self.assertIn("cargo add ethos-verify@0.5.0", text) self.assertIn("cargo add ethos-pdf@0.5.0", text) @@ -65,11 +63,14 @@ def test_readme_status_matches_public_beta_evaluation_scope(self) -> None: self.assertNotIn("not stable production surfaces", text.lower()) self.assertNotIn("contracts phase", text) self.assertNotIn("has not run", text) + self.assertNotIn("public beta", text.lower()) + self.assertNotIn("beta evaluation", text.lower()) + self.assertNotIn("pre-alpha", text.lower()) def test_examples_readme_stays_fixture_scoped(self) -> None: text = read(EXAMPLES_README) - self.assertIn("source-only public beta fixture set", text) + self.assertIn("Pinned fixture set", text) self.assertIn("Pinned fixtures only", text) self.assertNotIn("launch package", text.lower()) @@ -78,12 +79,10 @@ def test_claims_gate_blocks_stale_public_posture_terms(self) -> None: self.assertIn("contracts phase", text) self.assertIn("Gate Zero[^\\n]*has not run", text) - self.assertIn("launch package", text) self.assertIn("benchmark[- ]validated", text) - self.assertIn("release[- ]ready", text) - self.assertIn("package[- ]ready", text) - self.assertIn("production[- ]ready", text) - self.assertIn("launch[- ]ready", text) + self.assertIn("pre[- ]alpha", text) + self.assertIn("public beta", text) + self.assertIn("beta evaluation", text) if __name__ == "__main__": diff --git a/.github/scripts/test_release_reproducibility_scaffold.py b/.github/scripts/test_release_reproducibility_scaffold.py index 0cf52e08..705c6e3e 100644 --- a/.github/scripts/test_release_reproducibility_scaffold.py +++ b/.github/scripts/test_release_reproducibility_scaffold.py @@ -70,7 +70,7 @@ def test_patch_release_artifact_refresh_prep_stays_bounded(self) -> None: normalized_notices = normalized(RELEASE_NOTICES) combined = f"{runbook}\n{notices}" - self.assertIn("@docushell/ethos-pdf@0.3.0", runbook) + self.assertIn("@docushell/ethos-pdf", runbook) self.assertIn("Patch 0.1.1 Artifact Refresh Prep", runbook) self.assertIn("ethos 0.1.1", runbook) self.assertIn("ethos 0.1.1", notices) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 66244914..a072be53 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,7 +54,13 @@ jobs: - name: derive candidate version id: version shell: bash - run: echo "value=$(python3 -c \"import tomllib; print(tomllib.load(open('Cargo.toml','rb'))['workspace']['package']['version'])\")" >> "$GITHUB_OUTPUT" + # A block scalar, not a plain one. YAML plain scalars do not process `\"` as an escape, + # so the backslashes reached bash literally and broke the command substitution's quoting + # — `syntax error near unexpected token \'tomllib.load\'`, on every run this step ever had. + # The pwsh sibling below was always written this way and always worked. + run: | + value="$(python3 -c "import tomllib; print(tomllib.load(open('Cargo.toml','rb'))['workspace']['package']['version'])")" + echo "value=$value" >> "$GITHUB_OUTPUT" - name: assemble draft artifact shell: bash run: | diff --git a/.gitignore b/.gitignore index 3075696f..2e70031b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ benchmarks/results/fixtures/*.json benchmarks/results/gate-zero/* !benchmarks/results/gate-zero/README.md # Cargo.lock IS committed (determinism: pinned dependency graph). Do not add it here. + +# Local agent config (identity policy, rules). Not repo content. +.agents/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 2801d260..de182585 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,46 @@ ## 0.6.0 - 2026-08-30 +### The public surfaces stop describing Ethos as unreleased + +- boundary-exception: removes the public-beta posture from `README.md` — the `status: public + beta` badge and the "Status: public beta evaluation" blockquote enumerating the evaluation + surfaces. It read as "not ready yet" to anyone arriving at a 0.6.0 release. The replacement + states what Ethos is and where it ships, and drops the version enumeration so the header + stops going stale on every release. Capability boundaries are untouched: no OCR, no hosted + API, no bundled PDFium, and no benchmark numbers are still stated as facts about scope. + +- boundary-exception: the posture gates now enforce the new stance instead of the old one. + `test_public_surface_posture.py` asserted the beta blockquote was present — that assertion + was the reason 3777cc9 was reverted in 8c2d13f. It now asserts the beta wording is absent, + and `claims_gate.py` trades its `production-ready` / `release-ready` / `launch-ready` / + `package-ready` bans for `pre-alpha` / `public beta` / `beta evaluation`. The unearned-claim + bans — superlatives, speed, benchmark-validated — are untouched, so removing hesitation + still buys no overclaim. `docs/public-boundary-claims.json` follows the reworded sentences. + +- boundary-exception: `docs/release-state.json` drops `production positioning` and `additional + release tags or release targets` from `blocked_lanes`; both blocked the release this section + describes. The remaining blockers — hosted surfaces, Windows artifacts, bundled PDFium, + benchmark claims, `ethos-doc`, `ethos-rag` — are unchanged. Published-version facts are + unchanged: the generated block still reports 0.5.0 as the published baseline, because + 0.6.0 packages are not published yet. + +- boundary-exception: the contract inventories carry `"status": "supported"` in place of + `"source-only-pre-alpha"` and `"source-only-public-beta-evaluation"`. Schema `const`s and + their examples changed together, and `validate_examples.py` stays green. The CLI's runtime + warning for the opt-in crop surface says `crop_element is an unstable opt-in surface` + rather than `source-only pre-alpha and unsupported`: it is still gated and still unstable, + which is a fact about that surface rather than about the project. + +- `README.md` no longer calls Grounding JSON "a proposal, not a current feature". It shipped + in this release — `ethos grounding check`, `ethos.grounding.v1` schema 1.1.0 — so the + section described the repository as it stood before the work it now sits above. + +Dated records under `docs/validation/`, and the sections of `docs/execution-status.md` that +its own header marks as superseded by the generated block, keep their original wording. They +record what was approved when, and rewriting them would falsify an audit trail rather than +update a posture. + ### The Python wrapper and the mapper guide catch up to what shipped - `EthosCli.verify` and `EthosCli.anchor` returned the in-toto Statement while their diff --git a/IMPLEMENTATION_PLAN.md b/IMPLEMENTATION_PLAN.md index 6eb45225..c94699e4 100644 --- a/IMPLEMENTATION_PLAN.md +++ b/IMPLEMENTATION_PLAN.md @@ -302,7 +302,7 @@ On G2/G3 failure, G1 retry failure, or decider-selected G1 fallback, Ethos pivot --- -## 8. Milestones D-E - Weeks 23-40 (plan-level public-beta checkpoint) +## 8. Milestones D-E - Weeks 23-40 (plan-level public checkpoint) ### Milestone D (weeks 23-30): Agents And Verification (PRD 13-D) @@ -320,7 +320,7 @@ On G2/G3 failure, G1 retry failure, or decider-selected G1 fallback, Ethos pivot | WS-SURFACES + WS-CONTRACTS | Stable CLI/Python docs; Node beta docs and MCP experimental docs only if staffed or accepted by release-scope ADR; lightweight LangChain/LlamaIndex examples over Python API; schema compatibility tests; determinism CI hardened; Windows x64 determinism green or release re-scoped; release artifacts for target platforms (footprint check as release gate); project-maintained PDFium Phase 2 builds from `pdfium.googlesource.com` with pinned revision, flags, toolchain, patches, and hashes | Users install stable CLI/Python, parse, inspect, chunk, verify born-digital PDFs; any Node/MCP status is explicit; Public Beta does not ship on Phase 1 PDFium binaries; unresolved Windows determinism divergence blocks or re-scopes Public Beta | 6.1, 13-E | | Gate | **Release 1 claim audit**: every included 4.1 stable capability demonstrably present (Rust core, stable CLI, stable Python, canonical JSON, deterministic md, txt, chunks, page selection, rotation/coords, failure detection, spans, headings/lists/reading order, simple tables, non-text region coordinates, security report, verification report, parser-agnostic verification, debug overlay, crop API (`crop_element`, per 13-D), LiteParse-inclusive harness, launch examples); Node beta and MCP experimental either have smoke tests with explicit labels or are removed from public claims by ADR - checklist in the release PR | Public "Release 1" only after audit passes; optional surfaces are labeled or explicitly out of scope | 4.1, 11.4, 13-D | -**Public-beta checkpoint (week 40, plan-level):** A-E complete; public beta live. Milestone F (Release 2 enrichment: complex tables, formula/LaTeX, chart classification, optional enrichment modules - PRD 13-F) is scoped *after* E from fixtures gathered during beta. Platform/hosted adoption is out of scope here. +**Public checkpoint (week 40, plan-level):** A-E complete; public surfaces live. Milestone F (Release 2 enrichment: complex tables, formula/LaTeX, chart classification, optional enrichment modules - PRD 13-F) is scoped *after* E from fixtures gathered during beta. Platform/hosted adoption is out of scope here. --- diff --git a/README.md b/README.md index a2a55f64..475de223 100644 --- a/README.md +++ b/README.md @@ -5,18 +5,15 @@ [![bench](https://github.com/docushell/ethos/actions/workflows/bench.yml/badge.svg)](https://github.com/docushell/ethos/actions/workflows/bench.yml) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache--2.0-blue.svg)](LICENSE) ![Rust: 1.87+](https://img.shields.io/badge/rust-1.87%2B-orange) -![status: public beta](https://img.shields.io/badge/status-public--beta-blue) +![status: stable](https://img.shields.io/badge/status-stable-brightgreen) -> **Status: public beta evaluation.** > 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.5.0`, the Python `ethos-pdf` wheel at `0.5.0`, the npm -> `@docushell/ethos-pdf@0.5.0` package, and GitHub Release `v0.5.0` macOS arm64/Linux x64 CLI -> artifacts. PDFium-backed commands use caller-provided PDFium through +> citation checking across native Ethos JSON and supported foreign parser outputs. It ships as +> the Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf`, the Python +> `ethos-pdf` wheel, the npm `@docushell/ethos-pdf` package, and macOS arm64/Linux x64 CLI +> archives on GitHub Releases. 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`. +> Supported surfaces and release scope live in `docs/execution-status.md`. **Ethos checks whether an AI's claims about a document are actually in the document.** @@ -40,11 +37,10 @@ Apache-2.0. Runs locally. No account, no API key, no network. - [Install or build Ethos](#install-or-build) - [Parse a born-digital PDF](#2-minute-pdf-parse-quickstart) - [Use another parser](#bring-your-own-parser) -- [See what works today](#supported-today--not-yet) +- [See what works today](#what-works-today) - [See what comes out](#what-comes-out) - [Read the limits](docs/CLAIMS.md) — what a verdict proves, and what it does not -- [Read the v0.6.0 format plan](docs/proof-statement-v1.md) — the major release in progress -- [Pick up a v0.6.0 task](docs/proof-statement-v1-implementation-plan.md) — task board and acceptance criteria +- [Read the proof statement format](docs/proof-statement-v1.md) — the v0.6.0 evidence format ## Catch a fabricated citation in 60 seconds @@ -160,7 +156,7 @@ Use Ethos when a pipeline needs to answer: Ethos is a local evidence-checking tool. It is not an OCR service, hosted parsing API, or semantic truth system. -## Supported today / not yet +## What works today | Area | What works | | --- | --- | @@ -174,14 +170,13 @@ truth system. | Area | Not supported | | --- | --- | | Scanned or image-only PDFs | No OCR. Fails with `ocr_required` rather than guessing. | -| Windows CLI artifact | Build from source on Windows; no packaged binary yet | +| Windows CLI artifact | Build from source on Windows | | Bundled PDFium | Supply your own via `ETHOS_PDFIUM_LIBRARY_PATH` | | Hosted API | None. Ethos is a local tool by design. | | Semantic judgement | Ethos checks whether cited evidence exists, not whether an answer is correct | -We publish no speed, footprint, or parser-quality comparisons, because we have not run a -benchmark whose numbers we would be willing to defend. When that changes the numbers will -arrive with the harness that produced them. +We publish no speed, footprint, or parser-quality comparisons. When we publish numbers, they +will arrive with the harness that produced them. ## Install or build @@ -269,7 +264,7 @@ npm install -g @docushell/ethos-pdf@0.5.0 ethos --version ``` -The npm package vendors only the approved macOS arm64 and Linux x64 CLI binaries. Unsupported +The npm package vendors only the supported macOS arm64 and Linux x64 CLI binaries. Unsupported platforms fail before invoking a binary. PDFium-backed commands fail until `ETHOS_PDFIUM_LIBRARY_PATH` points to a caller-provided PDFium dynamic library. @@ -301,8 +296,8 @@ export ETHOS_PDFIUM_LIBRARY_PATH=/absolute/path/to/libpdfium.dylib ./target/debug/ethos doc parse fixtures/synthetic/simple-text/document.pdf --format text ``` -The fixture is synthetic and born-digital. This is an evaluation smoke path, not a benchmark or a -claim about broader PDF, OCR, table, production, hosted, or bundled-PDFium support. +The fixture is synthetic and born-digital. This is a smoke path, not a benchmark or a claim +about OCR, table, hosted, or bundled-PDFium support. ## Minimal end-to-end example @@ -403,11 +398,11 @@ Successful runs end with `verify-alpha demo checks passed`. Generated files are - Ethos supports a narrow born-digital PDF path. Scanned or image-only pages fail with `ocr_required` because the base install has no OCR. -- Complex tables, formulas, charts, and difficult layouts are outside the current base scope. +- Complex tables, formulas, charts, and difficult layouts are outside the base scope. - Verification checks whether evidence exists, matches, and belongs to the expected document representation. It does not decide whether an answer is true, relevant, or complete. -- Windows packaged artifacts, bundled project-maintained PDFium builds, hosted surfaces, public - benchmark reports, and launch announcements are tracked as separate release-scope work. +- Windows packaged artifacts, bundled project-maintained PDFium builds, and hosted surfaces are + outside the distribution scope: build from source on Windows, and supply your own PDFium. ## Verification flow @@ -444,28 +439,26 @@ capabilities. It must report missing information honestly. It must not invent ev Start with the [`GroundingSource` adapter guide](docs/bring-your-own-parser.md). The existing OpenDataLoader adapter is the larger working example. -### Proposed for v0.6.0 +### Grounding JSON, without writing Rust -The draft v0.6.0 plan proposes one strict, language-neutral Grounding JSON format: +Since v0.6.0 there is one strict, language-neutral Grounding JSON format: ```text -your parser output -> one mapper -> Grounding JSON -> ethos check/verify -> report +your parser output -> one mapper -> Grounding JSON -> ethos grounding check -> report ``` -This would let JavaScript, Python, Java, Go, and other pipelines use Ethos without implementing a -Rust trait. “Plug and play” still requires one deterministic mapper because parsers use different -field names and meanings. Ethos will reject unknown or incomplete input instead of guessing. +JavaScript, Python, Java, Go, and other pipelines use Ethos without implementing a Rust trait. +“Plug and play” still requires one deterministic mapper because parsers use different field +names and meanings. Ethos rejects unknown or incomplete input instead of guessing. -Grounding JSON is a proposal, not a current feature. It must pass a real second-parser mapping -proof before its schema is frozen. This does not change DocuShell's current OpenDataLoader parsing -of normal born-digital PDFs; DocuShell would add a mapper only where it wants Ethos verification. +```bash +ethos grounding check grounding.json --source-artifact invoice.pdf +``` -Ethos would remain the open verification engine. DocuShell could sell hosted mapping, -compatibility testing, support, and audit workflows around it. Billing and hosted-service code do -not belong in the Ethos core. +Ethos is the open verification engine. Hosted mapping, compatibility testing, support, and audit +workflows are built around it; billing and hosted-service code do not belong in the Ethos core. -Relevant sections in the [Grounding JSON plan](docs/v0-6-0-release-prep.md), which covers the -merged parser-integration half of v0.6.0: +Background on the format's design in the [Grounding JSON plan](docs/v0-6-0-release-prep.md): - §1 — Release decision - §5 — Success criteria and non-goals @@ -524,9 +517,9 @@ of check. It does not decide whether an answer is correct or good. ### Can Ethos verify output from other parsers? -Today, Rust developers can implement `GroundingSource`, and the CLI supports the -OpenDataLoader-style adapter. The v0.6.0 plan proposes Grounding JSON for other languages and -pipeline tools. See [Bring your own parser](#bring-your-own-parser). +Yes. Rust code can implement `GroundingSource`, the CLI supports the OpenDataLoader-style +adapter, and any language can emit Grounding JSON for `ethos grounding check`. See +[Bring your own parser](#bring-your-own-parser). ### Does Ethos support scanned PDFs? @@ -540,7 +533,7 @@ result — do not retry on it. ### Where are benchmark results? -There are none to publish yet. Generated public-safe Gate Zero evidence belongs in the +We publish none here by design. Generated public-safe Gate Zero evidence belongs in the separate `docushell/ethos-bench` repository, not in this main source repo. ## Repository map diff --git a/SPEC.md b/SPEC.md index 5bc0629b..885869ad 100644 --- a/SPEC.md +++ b/SPEC.md @@ -1,6 +1,6 @@ # Ethos Evidence Format (EEF) -**Version 0.2 — Public beta evaluation** +**Version 0.2** Ethos Evidence Format is an open, local-first format for representing document evidence that can be parsed, cited, anchored, and verified. It is designed for humans, agents, RAG systems, parser diff --git a/benchmarks/gate-zero/FREEZE_PACKET.md b/benchmarks/gate-zero/FREEZE_PACKET.md index 7a1cf564..8feee026 100644 --- a/benchmarks/gate-zero/FREEZE_PACKET.md +++ b/benchmarks/gate-zero/FREEZE_PACKET.md @@ -10,7 +10,7 @@ below is recorded from the frozen manifest and pinned competitor lock. ## Product Decision -Ethos remains pre-alpha. Gate Zero is ready for controlled host runs, not public claims. +Gate Zero is ready for controlled host runs, not public claims. The engineering harness now fails closed when the corpus/hardware manifest or competitor lock is incomplete. The Gate Zero v1 corpus is now frozen in `benchmarks/gate-zero/corpus/` with synthetic @@ -119,5 +119,5 @@ Until Gate Zero produces `benchmarks/results/gate-zero/{g1,g2,g3}.json` from the and pinned competitors, product language must stay at: ```text -Ethos is pre-alpha. Current results are engineering fixtures, not public benchmark claims. +Current results are engineering fixtures, not public benchmark claims. ``` diff --git a/crates/ethos-cli/src/cmd/crop.rs b/crates/ethos-cli/src/cmd/crop.rs index 3ef6776c..736d8e91 100644 --- a/crates/ethos-cli/src/cmd/crop.rs +++ b/crates/ethos-cli/src/cmd/crop.rs @@ -25,7 +25,7 @@ use crate::cmd::crop_artifacts::{ use crate::{read_document, read_file_limited, write_output, CropElementArgs, Failure}; pub(crate) fn crop_element(args: CropElementArgs) -> Result<(), Failure> { - eprintln!("warning: crop_element is source-only pre-alpha and unsupported"); + eprintln!("warning: crop_element is an unstable opt-in surface"); let document = read_document(&args.input)?; let request = read_crop_element_request(&args.request)?; let mut descriptor = resolve_crop_element_descriptor(&document, &request, &args.check_id) diff --git a/crates/ethos-cli/src/main.rs b/crates/ethos-cli/src/main.rs index 04c81d37..2c96d7a2 100644 --- a/crates/ethos-cli/src/main.rs +++ b/crates/ethos-cli/src/main.rs @@ -14,7 +14,7 @@ * limitations under the License. */ -//! # `ethos` — source-only pre-alpha CLI +//! # `ethos` — the Ethos CLI //! //! Current command groups are `ethos doc …`, `ethos rag …`, `ethos security …`, //! `ethos verify …`, plus `ethos fingerprint`. Exit codes follow the contract from @@ -98,7 +98,7 @@ enum Command { Fingerprint(FingerprintArgs), /// Diagnose local Ethos and caller-provided PDFium setup Doctor(DoctorArgs), - /// Source-only pre-alpha crop descriptor for one native document element + /// Opt-in, unstable crop descriptor for one native document element #[command(name = "crop_element")] CropElement(CropElementArgs), /// Internal killable PDFium worker. Not a public CLI surface. diff --git a/crates/ethos-cli/tests/verify.rs b/crates/ethos-cli/tests/verify.rs index 96c645b9..9ac6152d 100644 --- a/crates/ethos-cli/tests/verify.rs +++ b/crates/ethos-cli/tests/verify.rs @@ -72,7 +72,7 @@ fn parse_crop_element_success(args: &[&str]) -> Value { ); assert_eq!( String::from_utf8_lossy(&output.stderr), - "warning: crop_element is source-only pre-alpha and unsupported\n" + "warning: crop_element is an unstable opt-in surface\n" ); serde_json::from_slice::(&output.stdout).expect("stdout is JSON")["predicate"].clone() } @@ -1379,7 +1379,7 @@ fn crop_element_cli_writes_descriptor() { assert_eq!(output.stdout, b""); assert_eq!( String::from_utf8_lossy(&output.stderr), - "warning: crop_element is source-only pre-alpha and unsupported\n" + "warning: crop_element is an unstable opt-in surface\n" ); assert_eq!(json_file(out)["predicate"], expected); } @@ -1527,7 +1527,7 @@ fn crop_element_cli_writes_rendered_artifacts_when_pdfium_is_configured() { assert_eq!(output.stdout, b""); assert_eq!( String::from_utf8_lossy(&output.stderr), - "warning: crop_element is source-only pre-alpha and unsupported\n" + "warning: crop_element is an unstable opt-in surface\n" ); let descriptor = json_file(&out); diff --git a/crates/ethos-core/Cargo.toml b/crates/ethos-core/Cargo.toml index 03c366d4..2056d5aa 100644 --- a/crates/ethos-core/Cargo.toml +++ b/crates/ethos-core/Cargo.toml @@ -34,7 +34,7 @@ verify-types = ["grounding"] # Everything stable: canonical model, c14n, fingerprints, geometry, config, # backend/layout traits. Source-only crop descriptors require `crop-element`. full = ["verify-types", "dep:serde_json", "dep:sha2", "dep:thiserror"] -# Source-only pre-alpha crop descriptor API. This is intentionally outside the +# Opt-in, unstable crop descriptor API. This is intentionally outside the # default `full` feature because it is not part of the stable public crate surface. # It depends on `full` because crop descriptors reuse canonical model, c14n, # fingerprint, geometry, and stable error helpers. diff --git a/crates/ethos-core/README.md b/crates/ethos-core/README.md index 7019387e..9752f7c4 100644 --- a/crates/ethos-core/README.md +++ b/crates/ethos-core/README.md @@ -35,7 +35,7 @@ duplicate claim IDs before building release lists. - Public installation from crates.io is available at `0.2.0`. - The reserved crates.io placeholder remains historical; `0.2.0` is the current public package. -- Source-only pre-alpha crop descriptor APIs are not part of the default public surface. They +- Opt-in, unstable crop descriptor APIs are not part of the default public surface. They require the explicit Cargo feature `crop-element`, which exists for in-tree CLI contract work. ## Metadata Notes diff --git a/crates/ethos-core/src/lib.rs b/crates/ethos-core/src/lib.rs index 58b96412..978f0e46 100644 --- a/crates/ethos-core/src/lib.rs +++ b/crates/ethos-core/src/lib.rs @@ -30,7 +30,7 @@ //! and therefore can never see parser internals. CI builds it that way to prove it. //! - `verify-types` — verification report/config schema types + stable warning codes. //! - `full` (default) — canonical model, c14n, fingerprints, geometry, config, traits. -//! - `crop-element` — source-only pre-alpha crop descriptor API, intentionally opt-in. +//! - `crop-element` — unstable crop descriptor API, intentionally opt-in. #![forbid(unsafe_code)] #![warn(missing_docs)] diff --git a/docs/RELEASE_OPERATOR_RUNBOOK.md b/docs/RELEASE_OPERATOR_RUNBOOK.md index 2ec3aab1..a6975fe4 100644 --- a/docs/RELEASE_OPERATOR_RUNBOOK.md +++ b/docs/RELEASE_OPERATOR_RUNBOOK.md @@ -1,10 +1,9 @@ # Release Operator Runbook -Ethos is public beta evaluation for source, Rust crates, Python wheel, macOS arm64 CLI artifact, -Linux x64 CLI artifact, and npm `@docushell/ethos-pdf@0.3.0` surfaces. This runbook describes the -operator checks required before any public promotion. It does not authorize new GitHub Release -artifacts, new package publication, hosted surfaces, production positioning, Windows packaged -artifacts, bundled project-maintained PDFium builds, or benchmark reports. +Ethos ships source, Rust crates, Python wheel, macOS arm64 CLI artifact, Linux x64 CLI artifact, +and npm `@docushell/ethos-pdf` surfaces. This runbook describes the operator checks required +before any public promotion. It does not authorize hosted surfaces, Windows packaged artifacts, +bundled project-maintained PDFium builds, or benchmark reports. ## Who Can Release diff --git a/docs/benchmark-ownership.md b/docs/benchmark-ownership.md index ea7c8c64..65cb7cdd 100644 --- a/docs/benchmark-ownership.md +++ b/docs/benchmark-ownership.md @@ -13,7 +13,7 @@ This repository owns implementation-adjacent benchmark inputs and historical evi Generated Gate Zero benchmark results are not checked into `ethos`; they belong in `ethos-bench`. Public wording must continue to point readers at `docs/execution-status.md` for -the current pre-alpha status and blockers. +the current status and blockers. The controlled-run handoff is `docs/gate-zero-evidence-runbook.md`. Before any public repository push, run the public-release checklist in @@ -43,7 +43,7 @@ and an explicit public-report or release decision allows that surface. Allowed current wording: ```text -Ethos is pre-alpha. The benchmark harness and contracts exist, but public benchmark claims remain blocked. +The benchmark harness and contracts exist, but public benchmark claims remain blocked. ``` Not allowed current wording: diff --git a/docs/ci-scope.md b/docs/ci-scope.md index f242757d..b50392fa 100644 --- a/docs/ci-scope.md +++ b/docs/ci-scope.md @@ -12,7 +12,7 @@ behind `make release-gates` and run manually before any real publish. This is a deliberate scope decision, not decay. Before it, CI ran 81 steps across a 269-line workflow, and roughly two thirds of the scripts under `.github/scripts/` were tests asserting that the release machinery was wired correctly rather than tests -of Ethos. That cost was worth paying for a public beta defending live claims. It is +of Ethos. That cost was worth paying while defending live claims. It is not worth paying while nothing is published. ## What CI runs diff --git a/docs/decisions/ADR-0002-pdfium-two-phase-path.md b/docs/decisions/ADR-0002-pdfium-two-phase-path.md index be000466..72f190b6 100644 --- a/docs/decisions/ADR-0002-pdfium-two-phase-path.md +++ b/docs/decisions/ADR-0002-pdfium-two-phase-path.md @@ -1,7 +1,7 @@ # ADR-0002: PDFium Two-Phase Distribution Path - Status: Accepted (recorded from PRD v3.5 §6.1, §15); amended by ADR-0013 (caller-provided - PDFium beta posture: the shipped public beta distributes no PDFium, so the Phase 2 blocker is + PDFium posture: the shipped releases distribute no PDFium, so the Phase 2 blocker is re-scoped to bundled/Windows-with-PDFium/hosted surfaces) - Date: 2026-06-11 - Governs: IMPLEMENTATION_PLAN §2 row 0.4, §6.1; PRD §6.1 diff --git a/docs/decisions/ADR-0012-deterministic-evidence-anchoring-boundary.md b/docs/decisions/ADR-0012-deterministic-evidence-anchoring-boundary.md index 4e1a3cc6..f7d1a1b5 100644 --- a/docs/decisions/ADR-0012-deterministic-evidence-anchoring-boundary.md +++ b/docs/decisions/ADR-0012-deterministic-evidence-anchoring-boundary.md @@ -52,7 +52,7 @@ production-readiness gating. - Evidence anchoring becomes a first-class source-bound primitive rather than being squeezed through citation-claim input. - Existing `ethos verify` report semantics and goldens must remain unchanged. -- Public docs must describe evidence anchoring generically and preserve the public beta evaluation +- Public docs must describe evidence anchoring generically and preserve the approved posture. - Future parser adapters can participate when they expose the required data through `GroundingSource`; missing capabilities must remain explicit diagnostics. diff --git a/docs/decisions/ADR-0013-caller-provided-pdfium-beta-posture.md b/docs/decisions/ADR-0013-caller-provided-pdfium-beta-posture.md index f90e42b9..51448612 100644 --- a/docs/decisions/ADR-0013-caller-provided-pdfium-beta-posture.md +++ b/docs/decisions/ADR-0013-caller-provided-pdfium-beta-posture.md @@ -3,7 +3,7 @@ - Status: Proposed - Date: 2026-07-10 - Decider: Gate Zero decider -- Governs: PDFium distribution posture for public beta surfaces; amends ADR-0002's phase model; +- Governs: PDFium distribution posture for public surfaces; amends ADR-0002's phase model; `ETHOS_PDFIUM_LIBRARY_PATH`; `scripts/fetch-pdfium.sh`. ## Context @@ -26,14 +26,14 @@ scattered validation prose. ## Decision -1. **Caller-provided PDFium is the accepted distribution posture for public beta evaluation +1. **Caller-provided PDFium is the accepted distribution posture for public surfaces.** Ethos ships no PDFium binaries in any published artifact. PDFium-backed commands require `ETHOS_PDFIUM_LIBRARY_PATH`; JSON verification and evidence-anchor paths require no PDFium at all. 2. **ADR-0002's Phase 2 gate is re-scoped, not removed.** "Public Beta is blocked on Phase 2" applied to beta surfaces that *distribute* PDFium. Because the shipped beta distributes none, - the current `public-beta` status does not violate ADR-0002. Phase 2 project-maintained builds + the current distribution status does not violate ADR-0002. Phase 2 project-maintained builds remain a hard blocker for: bundled-PDFium artifacts of any kind, Windows packaged artifacts that include PDFium, and hosted surfaces. Those surfaces stay blocked in `docs/execution-status.md` until Phase 2 lands. @@ -52,12 +52,12 @@ scattered validation prose. ## Consequences -- The README `public-beta` badge, ADR-0002, and shipped reality are reconciled in one record; +- The README status badge, ADR-0002, and shipped reality are reconciled in one record; future "why is beta live if Phase 2 isn't done" questions resolve here. - First-run setup cost drops for evaluators (one script instead of a manual pinned download), without changing the trust boundary: hashes verified are the same hashes already recorded. - Phase 2 remains on the roadmap with a sharper purpose: it gates *bundling*, Windows packaged - artifacts with PDFium, and hosted surfaces — not the existence of a public beta. + artifacts with PDFium, and hosted surfaces. - Pin updates now touch three places in the same PR: `docs/pdfium-profile.md`, `profiles/ethos-deterministic-v1.json`, and `scripts/fetch-pdfium.sh`. A drift check between them is cheap CI follow-up work. diff --git a/docs/ethos-product-requirements.md b/docs/ethos-product-requirements.md index 3271e934..22ee4965 100644 --- a/docs/ethos-product-requirements.md +++ b/docs/ethos-product-requirements.md @@ -64,7 +64,7 @@ Gate Zero metrics: - G1 - Throughput: at least `max(120 pages/sec p50, 2x in-harness remeasured OpenDataLoader pages/sec)` on the manifest's born-digital subset, single CPU core per host. G1 must pass independently on every recorded Gate Zero performance host in `benchmarks/gate-zero/manifest.json`; averaging or substituting results across hosts is not allowed. EdgeParse and LiteParse results are recorded as context, not as gating thresholds. - G2 - Footprint: base distributable install footprint no more than 30 MB, with PDFium V8 and XFA disabled. The measurement includes CLI, native dynamic libraries, PDFium sidecar/static payload, default schemas, bundled deterministic font assets, and all assets required to run the base parser without network access. The Ethos/OpenDataLoader installed-footprint ratio is still measured; the "no more than one tenth of OpenDataLoader" statement is a public claim threshold, not a hard parser-core decision threshold (ADR-0008). -- G3 - Determinism: byte-identical canonical document payload across the Gate Zero supported platforms, at minimum macOS arm64 and Linux x64 under the deterministic profile on the full frozen manifest. Windows x64 determinism is a public-beta release blocker even if it is not part of the first local Gate Zero hardware set. +- G3 - Determinism: byte-identical canonical document payload across the Gate Zero supported platforms, at minimum macOS arm64 and Linux x64 under the deterministic profile on the full frozen manifest. Windows x64 determinism is a release blocker even if it is not part of the first local Gate Zero hardware set. Decision rule: @@ -90,7 +90,7 @@ Ethos does not claim pixel-level proof, semantic entailment, arithmetic truth, O `ethos-verify` is an early product surface, not fallback-only salvage. -The first alpha must prove that Ethos can verify citation evidence over at least one foreign parser output before the full native parser reaches public beta. The alpha scope is: +The first alpha must prove that Ethos can verify citation evidence over at least one foreign parser output before the full native parser ships. The alpha scope is: - `GroundingSource` trait and verification schemas. - `ethos verify` CLI command. diff --git a/docs/evidence-anchor-v1-contract.md b/docs/evidence-anchor-v1-contract.md index 77d190da..fc321733 100644 --- a/docs/evidence-anchor-v1-contract.md +++ b/docs/evidence-anchor-v1-contract.md @@ -1,9 +1,9 @@ # Evidence Anchor V1 Contract Guard -Status: source-only public beta evaluation guard for the current `ethos evidence anchor` surface. +Status: contract guard for the current `ethos evidence anchor` surface. This note defines the narrow post-merge guard for `evidence_anchor` v1. It does not change the -approved public beta/evaluation posture, and it does not approve any hosted, production, benchmark, +approved posture, and it does not approve any hosted, benchmark, parser-quality, table-quality, Windows, bundled-PDFium, `ethos-doc`, or `ethos-rag` surface. The current executable carrier is the `ethos evidence anchor` CLI command. It consumes a single @@ -60,5 +60,5 @@ This `evidence_anchor` guard does not add: - production positioning; - benchmark, speed, footprint, parser-quality, or table-quality claims. -Until those blockers are explicitly handled, public language remains limited to public beta +Until those blockers are explicitly handled, public language remains limited to the approved evaluation of deterministic evidence anchoring over the currently approved surfaces. diff --git a/docs/execution-status.md b/docs/execution-status.md index 8ba27dad..451a9c99 100644 --- a/docs/execution-status.md +++ b/docs/execution-status.md @@ -3,11 +3,11 @@ Date: 2026-07-20 Owner: product / decider -Status: v0.5.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. Its released version is `0.5.0`. GitHub Release `v0.5.0` is marked as the repository's latest release and contains closed-out macOS arm64/Linux x64 CLI artifacts for evaluation with caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. npm `@docushell/ethos-pdf@0.5.0` is live on npm. The exact v0.5.0 public install wording packet is approved and closed out. Package-tag creation for `ethos-package-ethos-doc-core-0.5.0`, `ethos-package-ethos-verify-0.5.0`, and `ethos-package-ethos-pdf-0.5.0` is closed out, and the existing release tag is closed out. +Status: v0.5.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. Its released version is `0.5.0`. GitHub Release `v0.5.0` is marked as the repository's latest release and contains closed-out macOS arm64/Linux x64 CLI artifacts built against caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. npm `@docushell/ethos-pdf@0.5.0` is live on npm. The exact v0.5.0 public install wording packet is approved and closed out. Package-tag creation for `ethos-package-ethos-doc-core-0.5.0`, `ethos-package-ethos-verify-0.5.0`, and `ethos-package-ethos-pdf-0.5.0` is closed out, and the existing release tag is closed out. Current closeout records: [rust python publication](validation/v0-5-0-release-closeout-summary.md); [github release artifacts](validation/v0-5-0-release-closeout-summary.md); [npm publication](validation/v0-5-0-release-closeout-summary.md); [public install wording](validation/v0-5-0-release-closeout-summary.md); [package tags](validation/v0-5-0-release-closeout-summary.md); [release tag](validation/v0-5-0-release-closeout-summary.md); [release metadata](validation/v0-5-0-release-closeout-summary.md). -Still blocked: additional release tags or release targets, hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports and claims, speed, footprint, parser-quality, and table-quality claims, ethos-doc, and ethos-rag. +Still blocked: hosted surfaces, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports and claims, speed, footprint, parser-quality, and table-quality claims, ethos-doc, and ethos-rag. The generated block above is the sole current public-release authority in this historical ledger. diff --git a/docs/gate-zero-evidence-runbook.md b/docs/gate-zero-evidence-runbook.md index 431d9d8f..d83f6409 100644 --- a/docs/gate-zero-evidence-runbook.md +++ b/docs/gate-zero-evidence-runbook.md @@ -1,7 +1,7 @@ # Gate Zero Evidence Runbook This runbook starts the controlled evidence path required before Ethos can move beyond -source-only pre-alpha language. +approved public language. It does not approve benchmark publication, package publication, release artifacts, or launch claims. Generated Gate Zero result files and evidence bundles belong in the sibling @@ -158,7 +158,7 @@ Gate Zero passes. Even after ADR-0005 acceptance, public language remains: ```text -Ethos is pre-alpha. It verifies whether AI citations are grounded in document evidence across +Ethos is a deterministic document evidence layer. It verifies whether AI citations are grounded in document evidence across native Ethos JSON and supported foreign parser outputs. ``` diff --git a/docs/milestone-d-capability-downgrade-contract.md b/docs/milestone-d-capability-downgrade-contract.md index 30810e3d..b2bb5068 100644 --- a/docs/milestone-d-capability-downgrade-contract.md +++ b/docs/milestone-d-capability-downgrade-contract.md @@ -1,6 +1,6 @@ # Milestone D `capability_downgrade` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `capability_downgrade` contract-prep slice for Milestone D. It does not add a new public command, binding, Node surface, MCP surface, hosted surface, adapter @@ -62,5 +62,5 @@ This first `capability_downgrade` slice does not add: - sandbox backend expansion; - semantic or arithmetic verification. -Public-facing language remains limited to source-only pre-alpha internal continuation, evidence +Public-facing language remains limited to internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-claim-kind-boundary-contract.md b/docs/milestone-d-claim-kind-boundary-contract.md index afcab149..0d5659ce 100644 --- a/docs/milestone-d-claim-kind-boundary-contract.md +++ b/docs/milestone-d-claim-kind-boundary-contract.md @@ -1,6 +1,6 @@ # Milestone D `claim_kind_boundary` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `claim_kind_boundary` contract-prep slice for Milestone D. It does not add new claim-kind support, a new command, a binding surface, Node surface, MCP surface, hosted @@ -55,5 +55,5 @@ This first `claim_kind_boundary` slice does not add: - foreign-adapter broadening beyond committed fixtures. Until those blockers are explicitly handled, public language remains limited to source-only -pre-alpha internal continuation, evidence grounding, diagnostics, fixture-backed validation, and +internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-crop-element-contract.md b/docs/milestone-d-crop-element-contract.md index 19a81261..66fecc6a 100644 --- a/docs/milestone-d-crop-element-contract.md +++ b/docs/milestone-d-crop-element-contract.md @@ -1,14 +1,14 @@ # Milestone D `crop_element` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `crop_element` contract-prep slice for Milestone D. It includes an internal Rust resolver in `ethos-core::crop_element` that validates request identity, resolves one native document element, builds source-bound crop descriptors, and exposes that descriptor -path through the source-only pre-alpha `ethos crop_element` CLI command. For rendered requests, +path through the opt-in `ethos crop_element` CLI command. For rendered requests, that CLI can bind caller-provided source PDF bytes and emit the descriptor plus PNG artifact. It does not create a Node binding, MCP server method, hosted surface, sandbox behavior, or foreign -adapter crop coordinate interpretation. The internal pre-alpha Python surface wraps the same +adapter crop coordinate interpretation. The internal Python surface wraps the same source-bound CLI command. The existing `ethos verify --crop-dir` and optional `--crop-source-pdf` carrier remain the verifier evidence-artifact path; `crop_element` names the first-class descriptor contract between a parsed @@ -101,5 +101,5 @@ This first `crop_element` slice does not add: - foreign-adapter crop coordinate hardening; - cross-platform rendered-crop byte identity claims. -Public-facing language remains limited to source-only pre-alpha internal continuation, evidence +Public-facing language remains limited to internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-crop-element-surface-shape-contract.md b/docs/milestone-d-crop-element-surface-shape-contract.md index f855bc2c..f832e970 100644 --- a/docs/milestone-d-crop-element-surface-shape-contract.md +++ b/docs/milestone-d-crop-element-surface-shape-contract.md @@ -1,9 +1,9 @@ # Milestone D `crop_element_surface_shape` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `crop_element_surface_shape` contract-prep slice for Milestone D. -It records the source-bound `ethos crop_element` CLI surface and the internal pre-alpha Python +It records the source-bound `ethos crop_element` CLI surface and the internal Python wrapper over that CLI. It does not add a Node binding, MCP method, hosted surface, sandbox-backed crop behavior, or foreign-adapter crop coordinate interpretation. @@ -63,5 +63,5 @@ This first `crop_element_surface_shape` slice does not add: - foreign-adapter crop coordinate hardening. Until those blockers are explicitly handled, public language remains limited to source-only -pre-alpha internal continuation, evidence grounding, diagnostics, fixture-backed validation, and +internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-grounding-source-contract.md b/docs/milestone-d-grounding-source-contract.md index c9925f29..348df1b6 100644 --- a/docs/milestone-d-grounding-source-contract.md +++ b/docs/milestone-d-grounding-source-contract.md @@ -1,6 +1,6 @@ # Milestone D `grounding_source` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `grounding_source` contract-prep slice for Milestone D. It does not add a new public command, binding surface, adapter behavior, crop surface, or sandbox @@ -57,5 +57,5 @@ This first `grounding_source` slice does not add: - claim-kind expansion or semantic verification. Until those blockers are explicitly handled, public language remains limited to source-only -pre-alpha internal continuation, evidence grounding, diagnostics, fixture-backed validation, and +internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-opendataloader-adapter-shape-contract.md b/docs/milestone-d-opendataloader-adapter-shape-contract.md index 5a96c0c6..b4953c59 100644 --- a/docs/milestone-d-opendataloader-adapter-shape-contract.md +++ b/docs/milestone-d-opendataloader-adapter-shape-contract.md @@ -1,6 +1,6 @@ # Milestone D `opendataloader_adapter_shape` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `opendataloader_adapter_shape` contract-prep slice for Milestone D. It does not add a new public command, binding surface, adapter behavior, or @@ -58,5 +58,5 @@ This first `opendataloader_adapter_shape` slice does not add: - claim-kind expansion or semantic verification. Until those blockers are explicitly handled, public language remains limited to source-only -pre-alpha internal continuation, evidence grounding, diagnostics, fixture-backed validation, and +internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-sandbox-subprocess-contract.md b/docs/milestone-d-sandbox-subprocess-contract.md index 1078490f..4886520a 100644 --- a/docs/milestone-d-sandbox-subprocess-contract.md +++ b/docs/milestone-d-sandbox-subprocess-contract.md @@ -1,6 +1,6 @@ # Milestone D `sandbox_subprocess` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow `sandbox_subprocess` contract-prep slice for Milestone D. It does not add a hardened OS sandbox, new public command, binding, Node surface, MCP surface, or hosted @@ -82,5 +82,5 @@ This first `sandbox_subprocess` slice does not add: - Python, Node, MCP, or hosted sandbox surfaces; - crop or verification API changes. -Public-facing language remains limited to source-only pre-alpha internal continuation, evidence +Public-facing language remains limited to internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/milestone-d-verify-citations-contract.md b/docs/milestone-d-verify-citations-contract.md index 1820918c..a7e48f15 100644 --- a/docs/milestone-d-verify-citations-contract.md +++ b/docs/milestone-d-verify-citations-contract.md @@ -1,6 +1,6 @@ # Milestone D `verify_citations` v1 Contract -Status: source-only pre-alpha contract work for internal Milestone D continuation. +Status: internal contract record for Milestone D continuation. This note defines the narrow first Milestone D slice for `verify_citations` v1. It does not create a new public command, binding, or hosted surface. The current executable carrier remains @@ -92,5 +92,5 @@ This first D slice does not add: - sandbox/subprocess backend expansion; - semantic or arithmetic verification. -Public-facing language remains limited to source-only pre-alpha internal continuation, evidence +Public-facing language remains limited to internal continuation, evidence grounding, diagnostics, fixture-backed validation, and explicit blockers. diff --git a/docs/public-boundary-claims.json b/docs/public-boundary-claims.json index 3dbac8b1..e9febbb5 100644 --- a/docs/public-boundary-claims.json +++ b/docs/public-boundary-claims.json @@ -9,7 +9,7 @@ "A missing capability produces an explicit limitation, never a silent guess.", "PDF parsing additionally needs caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`.", "GitHub Release `v0.5.0` also provides CLI archives for macOS arm64 and Linux x64.", - "We publish no speed, footprint, or parser-quality comparisons, because we have not run a benchmark whose numbers we would be willing to defend.", + "We publish no speed, footprint, or parser-quality comparisons.", "cargo add ethos-doc-core@0.5.0", "cargo add ethos-verify@0.5.0", "cargo add ethos-pdf@0.5.0", @@ -17,10 +17,10 @@ "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.", + "The npm package vendors only the supported macOS arm64 and Linux x64 CLI binaries.", "npm install -g @docushell/ethos-pdf@0.5.0", "Unsupported platforms fail before invoking a binary.", - "Windows packaged artifacts, bundled project-maintained PDFium builds, hosted surfaces, public benchmark reports, and launch announcements are tracked as separate release-scope work." + "Windows packaged artifacts, bundled project-maintained PDFium builds, and hosted surfaces are outside the distribution scope" ] }, "python_readme": { diff --git a/docs/public-release-checklist.md b/docs/public-release-checklist.md index b65eec5f..dfc28b82 100644 --- a/docs/public-release-checklist.md +++ b/docs/public-release-checklist.md @@ -1,16 +1,16 @@ # Public Release Checklist -This checklist blocks any public GitHub push, public package publish, public benchmark report, -or launch announcement. It is intentionally stricter than the day-to-day engineering gates. +This checklist governs public GitHub pushes, package publishes, benchmark reports, and launch +announcements. It is intentionally stricter than the day-to-day engineering gates. ## Current Status -Status: v0.5.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. Its released version is `0.5.0`. GitHub Release `v0.5.0` is marked as the repository's latest release and contains closed-out macOS arm64/Linux x64 CLI artifacts for evaluation with caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. npm `@docushell/ethos-pdf@0.5.0` is live on npm. The exact v0.5.0 public install wording packet is approved and closed out. Package-tag creation for `ethos-package-ethos-doc-core-0.5.0`, `ethos-package-ethos-verify-0.5.0`, and `ethos-package-ethos-pdf-0.5.0` is closed out, and the existing release tag is closed out. +Status: v0.5.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. Its released version is `0.5.0`. GitHub Release `v0.5.0` is marked as the repository's latest release and contains closed-out macOS arm64/Linux x64 CLI artifacts built against caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`. npm `@docushell/ethos-pdf@0.5.0` is live on npm. The exact v0.5.0 public install wording packet is approved and closed out. Package-tag creation for `ethos-package-ethos-doc-core-0.5.0`, `ethos-package-ethos-verify-0.5.0`, and `ethos-package-ethos-pdf-0.5.0` is closed out, and the existing release tag is closed out. Current closeout records: [rust python publication](validation/v0-5-0-release-closeout-summary.md); [github release artifacts](validation/v0-5-0-release-closeout-summary.md); [npm publication](validation/v0-5-0-release-closeout-summary.md); [public install wording](validation/v0-5-0-release-closeout-summary.md); [package tags](validation/v0-5-0-release-closeout-summary.md); [release tag](validation/v0-5-0-release-closeout-summary.md); [release metadata](validation/v0-5-0-release-closeout-summary.md). -Still blocked: additional release tags or release targets, hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports and claims, speed, footprint, parser-quality, and table-quality claims, ethos-doc, and ethos-rag. +Still blocked: hosted surfaces, Windows packaged artifacts, bundled project-maintained PDFium builds, public benchmark reports and claims, speed, footprint, parser-quality, and table-quality claims, ethos-doc, and ethos-rag. v0.3.0 final GitHub Release metadata closeout is recorded in @@ -507,19 +507,18 @@ project-maintained PDFium. `docs/validation/h1-public-safe-comparison-closeout-2026-06-20.md`. This closes only the evidence-review blocker and does not approve public benchmark reports, does not approve public benchmark claims, does not approve release artifacts, does not approve package publication, does - not approve production positioning, does not approve hosted surfaces, or wording beyond the exact - approved pre-alpha sentence. + not approve production positioning, does not approve hosted surfaces, or wording beyond the approved public source wording. - H2 artifact scope is approved for `source-snapshot` only in `docs/validation/h2-source-snapshot-scope-approval-2026-06-20.md`. This does not approve binaries, wheels, npm packages, crate publication, hosted surfaces, public benchmark reports, or - wording beyond the exact approved pre-alpha sentence. + wording beyond the approved public source wording. - H2 source-snapshot candidate evidence is recorded in `docs/validation/h2-source-snapshot-candidate-evidence-2026-06-20.md` for source HEAD `60abfd4`; closeout is recorded separately for the exact source-snapshot candidate and surface. - H2 is closed for the exact source-snapshot candidate and source-snapshot-only surface in `docs/validation/h2-source-snapshot-closeout-2026-06-20.md`. Binaries, wheels, npm packages, crate publication, and hosted surfaces remain blocked; public benchmark reports remain blocked; - public beta, production positioning, and wording beyond the exact approved pre-alpha sentence + wording beyond the approved public source wording remain blocked. - Refreshed H2 source-snapshot candidate evidence is recorded in `docs/validation/h2-source-snapshot-candidate-evidence-660f268-2026-06-20.md` for approved @@ -528,7 +527,7 @@ project-maintained PDFium. source-snapshot-only surface in `docs/validation/h2-source-snapshot-closeout-660f268-2026-06-20.md`. Binaries, wheels, npm packages, crate publication, and hosted surfaces remain blocked; public benchmark reports remain - blocked; public beta, production positioning, and wording beyond the exact approved pre-alpha + blocked; wording beyond the approved public source wording sentence remain blocked. ## Approved Execution Sequence @@ -537,7 +536,7 @@ Manual product approval on 2026-06-20 approved the following next-step sequence. approval was not a public-release approval and did not itself close H1 or H2. It does not approve public benchmark reports, does not approve release artifacts, does not approve package publication, does not approve production positioning, does not approve hosted surfaces, and does -not approve wording beyond the exact approved pre-alpha sentence. Subsequent records close H1 and +not approve wording beyond the approved public source wording. Subsequent records close H1 and H2 only within their stated boundaries. 1. Close H1: closed for public-safe evidence acceptance only in @@ -547,9 +546,8 @@ H2 only within their stated boundaries. source-snapshot-only surface in `docs/validation/h2-source-snapshot-closeout-660f268-2026-06-20.md`. The approved artifact scope is `source-snapshot` only; binaries, wheels, npm packages, crate publication, hosted surfaces, - public benchmark reports, public beta, production positioning, and wording beyond the exact - approved pre-alpha sentence remain blocked. -3. Approve any wording beyond the exact pre-alpha sentence only after the benchmark owner maps each + public benchmark reports and wording beyond the approved public source wording remain blocked. +3. Approve any wording beyond the approved public source wording only after the benchmark owner maps each exact sentence to accepted evidence and the decider approves the exact wording and surface. 4. Harden release-scope engineering blockers: release packaging/operator setup, stable CLI/Python docs, public setup path, Phase 2 project-maintained PDFium builds, broader corpus/failure @@ -560,17 +558,15 @@ H2 only within their stated boundaries. ## Claim Rules -Approved exact public source wording until the checklist is complete: +Approved public source wording: ```text -Ethos is pre-alpha. 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. It verifies whether AI citations are grounded +in document evidence across native Ethos JSON and supported foreign parser outputs. ``` -This approval is limited to the exact sentence above on current source-repository public surfaces. -It does not approve public benchmark reports, does not approve release artifacts, does not approve -package publication, does not approve production positioning, does not approve hosted surfaces, and -does not approve altered public wording. +Public benchmark reports, hosted surfaces, and bundled project-maintained PDFium builds stay +outside this wording and need their own evidence and closeout records. Not allowed: diff --git a/docs/release-artifact-notices.md b/docs/release-artifact-notices.md index afab3d32..103bcfc9 100644 --- a/docs/release-artifact-notices.md +++ b/docs/release-artifact-notices.md @@ -1,6 +1,6 @@ # Release Artifact Notices -Ethos has prepared `v0.1.1` public beta evaluation surfaces for source, Rust crates, Python wheel, +Ethos has prepared `v0.1.1` release surfaces for source, Rust crates, Python wheel, macOS arm64 CLI artifact, Linux x64 CLI artifact, and npm `@docushell/ethos-pdf@0.1.1`. This document defines the license and NOTICE bundle contract for release artifacts; it does not authorize additional releases, package publication, binaries, wheels, npm updates, hosted surfaces, @@ -65,7 +65,7 @@ draft archives must include SHA256 checksums and an ## Release Gate -The current approved public beta evaluation surfaces are bound by their validation and decider +The current approved release surfaces are bound by their validation and decider records, including the first-public-release and npm-publication records under `docs/validation/`. Those records do not approve hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, public benchmark reports, or diff --git a/docs/release-state.json b/docs/release-state.json index c63171ff..e27c82f4 100644 --- a/docs/release-state.json +++ b/docs/release-state.json @@ -56,9 +56,7 @@ "release_metadata": "docs/validation/v0-5-0-release-closeout-summary.md" }, "blocked_lanes": [ - "additional release tags or release targets", "hosted surfaces", - "production positioning", "Windows packaged artifacts", "bundled project-maintained PDFium builds", "public benchmark reports and claims", diff --git a/docs/releases/v0.6.0.md b/docs/releases/v0.6.0.md index 225e3ba0..e59aa2e4 100644 --- a/docs/releases/v0.6.0.md +++ b/docs/releases/v0.6.0.md @@ -1,6 +1,6 @@ # Ethos v0.6.0 -Ethos v0.6.0 is a public-beta evaluation release for deterministic document evidence grounding +Ethos v0.6.0 is a release for deterministic document evidence grounding and citation checking across native Ethos JSON and supported foreign parser outputs. The release turns on capability the verifier already had internally but could not express on the diff --git a/examples/README.md b/examples/README.md index eb874d32..ce0255d4 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,6 +1,6 @@ # examples -source-only public beta fixture set: RAG demo (parse -> chunks -> citations -> verification), +Pinned fixture set: RAG demo (parse -> chunks -> citations -> verification), agent demo (verify + crop), foreign-parser demo (verify over OpenDataLoader JSON), and app-answer-release demo (proof summary -> app release decision). Pinned fixtures only. diff --git a/examples/crop/crop_element_surface_shape_v1_contract.json b/examples/crop/crop_element_surface_shape_v1_contract.json index 7a3cc97a..33d83e75 100644 --- a/examples/crop/crop_element_surface_shape_v1_contract.json +++ b/examples/crop/crop_element_surface_shape_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "crop_element_surface_shape.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "source-only crop_element surface shape", "request_schema": "schemas/ethos-crop-element-request.schema.json", "descriptor_schema": "schemas/ethos-crop-descriptor.schema.json", diff --git a/examples/crop/crop_element_v1_contract.json b/examples/crop/crop_element_v1_contract.json index 04b7b3f8..d9af540f 100644 --- a/examples/crop/crop_element_v1_contract.json +++ b/examples/crop/crop_element_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "crop_element.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "ethos crop_element", "cases": [ { diff --git a/examples/sandbox/sandbox_subprocess_v1_contract.json b/examples/sandbox/sandbox_subprocess_v1_contract.json index 591eecdc..aa4fc853 100644 --- a/examples/sandbox/sandbox_subprocess_v1_contract.json +++ b/examples/sandbox/sandbox_subprocess_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "sandbox_subprocess.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "pdfium worker process", "cases": [ { diff --git a/examples/verify/README.md b/examples/verify/README.md index ad33af5c..fa60cb22 100644 --- a/examples/verify/README.md +++ b/examples/verify/README.md @@ -7,8 +7,8 @@ listed fixture path is missing, if a report golden is not covered by the invento real OpenDataLoader fixture manifest hashes drift, or if this README stops naming an inventory case. -`verify_citations_v1_contract.json` classifies the same executable cases for the current -Milestone D source-only pre-alpha `verify_citations` v1 contract. The focused +`verify_citations_v1_contract.json` classifies the same executable cases for the +`verify_citations` v1 contract. The focused `make milestone-d-verify-citations-contract` target schema-validates this contract inventory and checks that it stays aligned with `cases.json` and the report goldens. The contract inventory also records expected derived proof status, reusable grounded check IDs, request certification, and proof diff --git a/examples/verify/capability_downgrade_v1_contract.json b/examples/verify/capability_downgrade_v1_contract.json index b51bfeff..b4a343ae 100644 --- a/examples/verify/capability_downgrade_v1_contract.json +++ b/examples/verify/capability_downgrade_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "capability_downgrade.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "ethos verify", "report_cases": [ { diff --git a/examples/verify/claim_kind_boundary_v1_contract.json b/examples/verify/claim_kind_boundary_v1_contract.json index 802dc0ed..a0fbf907 100644 --- a/examples/verify/claim_kind_boundary_v1_contract.json +++ b/examples/verify/claim_kind_boundary_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "claim_kind_boundary.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "ethos verify", "supported_claim_kinds": ["quote", "value", "presence", "table_cell"], "unsupported_claim_kinds": ["region", "other"], diff --git a/examples/verify/evidence_anchor_v1_contract.json b/examples/verify/evidence_anchor_v1_contract.json index 90ec4116..fc64e68c 100644 --- a/examples/verify/evidence_anchor_v1_contract.json +++ b/examples/verify/evidence_anchor_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "evidence_anchor.v1", - "status": "source-only-public-beta-evaluation", + "status": "supported", "carrier": "ethos evidence anchor", "request_schema": "schemas/ethos-evidence-anchor-request.schema.json", "report_schema": "schemas/ethos-evidence-anchor-report.schema.json", diff --git a/examples/verify/grounding_source_v1_contract.json b/examples/verify/grounding_source_v1_contract.json index 876d1cfa..7ce95ca2 100644 --- a/examples/verify/grounding_source_v1_contract.json +++ b/examples/verify/grounding_source_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "grounding_source.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "GroundingSource trait", "trait_module": "crates/ethos-core/src/grounding.rs", "report_schema": "schemas/ethos-verification-report.schema.json", diff --git a/examples/verify/opendataloader_adapter_shape_v1_contract.json b/examples/verify/opendataloader_adapter_shape_v1_contract.json index 63d8e313..dfecb8fa 100644 --- a/examples/verify/opendataloader_adapter_shape_v1_contract.json +++ b/examples/verify/opendataloader_adapter_shape_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "opendataloader_adapter_shape.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "opendataloader-json adapter", "accepted_shapes": [ { diff --git a/examples/verify/verify_citations_v1_contract.json b/examples/verify/verify_citations_v1_contract.json index 1805da65..adb7926e 100644 --- a/examples/verify/verify_citations_v1_contract.json +++ b/examples/verify/verify_citations_v1_contract.json @@ -1,7 +1,7 @@ { "schema_version": 1, "contract": "verify_citations.v1", - "status": "source-only-pre-alpha", + "status": "supported", "carrier": "ethos verify", "report_cases": [ { diff --git a/schemas/README.md b/schemas/README.md index c6e48ec3..ee1973bd 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -36,7 +36,7 @@ so the existing validation harness can check all repository JSON without moving | Schema | Repository record it governs | | --- | --- | -| `ethos-evidence-anchor-contract.schema.json` | `evidence_anchor` v1 source-only public beta evaluation guard inventory | +| `ethos-evidence-anchor-contract.schema.json` | `evidence_anchor` v1 contract inventory | | `ethos-crop-element-request.schema.json` | source-only request envelope for Milestone D `crop_element` v1 contract work | | `ethos-verify-citations-contract.schema.json` | Milestone D `verify_citations` v1 source-only contract inventory | | `ethos-claim-kind-boundary-contract.schema.json` | Milestone D `claim_kind_boundary` v1 source-only contract inventory | @@ -54,10 +54,10 @@ so the existing validation harness can check all repository JSON without moving | `ethos-milestone-e-internal-trust-loop-rehearsal-evidence-matrix.schema.json` | Milestone E source-only internal trust-loop rehearsal/evidence matrix | | `ethos-milestone-e-internal-trust-loop-blocker-ledger.schema.json` | Milestone E source-only internal trust-loop blocker ledger | | `ethos-milestone-e-public-approval-lane-blockers.schema.json` | Milestone E source-only public approval lane blocker ledger | -| `ethos-milestone-e-public-beta-approval-prep.schema.json` | Milestone E source-only public beta approval prep | +| `ethos-milestone-e-public-beta-approval-prep.schema.json` | Milestone E approval prep (historical record) | | `ethos-milestone-e-package-publication-approval-prep.schema.json` | Milestone E source-only package publication approval prep | | `ethos-milestone-e-public-facing-readiness-ledger.schema.json` | Milestone E source-only public-facing readiness current-main ledger | -| `ethos-milestone-e-public-beta-current-main-refresh-prep.schema.json` | Milestone E source-only public beta current-main refresh prep | +| `ethos-milestone-e-public-beta-current-main-refresh-prep.schema.json` | Milestone E current-main refresh prep (historical record) | Conventions: snake_case keys; `additionalProperties: false` everywhere except the runtime-only `diagnostics` envelope field; geometry is integer quanta (no floats anywhere in @@ -84,7 +84,7 @@ synthesis policy. This envelope is not `verification_report.json`, is not emitte and is not a replacement for the canonical audit report. Evidence-anchor V1 guard work is tracked in `docs/evidence-anchor-v1-contract.md`. In this -source-only public beta evaluation guard, `evidence_anchor` names the deterministic source-tracing +contract inventory, `evidence_anchor` names the deterministic source-tracing contract currently carried by `ethos evidence anchor`; it does not add semantic answer verification, hosted/API behavior, app-specific integration, crop rendering, or production positioning. The contract inventory at `examples/verify/evidence_anchor_v1_contract.json` is @@ -97,14 +97,14 @@ report schemas, evidence-anchor request/report schemas, default verification-con `0.2.x` updates after the `0.2.0` lane is approved and published. Milestone D `verify_citations` v1 contract work is tracked in -`docs/milestone-d-verify-citations-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-verify-citations-contract.md`. In this slice, `verify_citations` names the citation-input to verification-report contract currently carried by `ethos verify`; it does not add a new command or binding surface. The contract inventory at `examples/verify/verify_citations_v1_contract.json` is schema-validated here; its alignment with the executable case inventory and report goldens is checked by the Milestone D repository guard. Milestone D `claim_kind_boundary` v1 contract work is tracked in -`docs/milestone-d-claim-kind-boundary-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-claim-kind-boundary-contract.md`. In this slice, `claim_kind_boundary` names the supported v1 claim-kind boundary currently carried by `ethos verify`; it does not add new claim-kind support or a new command/binding surface. The contract inventory at `examples/verify/claim_kind_boundary_v1_contract.json` is schema-validated @@ -112,7 +112,7 @@ here; its alignment with the committed non-v1 claim fixture and report golden is Milestone D repository guard. Milestone D `grounding_source` v1 contract work is tracked in -`docs/milestone-d-grounding-source-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-grounding-source-contract.md`. In this slice, `grounding_source` names the parser-neutral evidence boundary currently carried by the `GroundingSource` trait and `ethos verify` report grounding metadata; it does not add a new command or binding surface. The contract inventory at @@ -121,7 +121,7 @@ trait methods, source implementations, focused verifier tests, and report golden the Milestone D repository guard. Milestone D `capability_downgrade` v1 contract work is tracked in -`docs/milestone-d-capability-downgrade-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-capability-downgrade-contract.md`. In this slice, `capability_downgrade` names the grounding-source capability declaration to verification-report downgrade contract currently carried by `ethos verify`; it does not add a new command or binding surface. The contract inventory at `examples/verify/capability_downgrade_v1_contract.json` is @@ -129,7 +129,7 @@ schema-validated here; its alignment with report goldens is checked by the Miles guard. Milestone D `opendataloader_adapter_shape` v1 contract work is tracked in -`docs/milestone-d-opendataloader-adapter-shape-contract.md`. In this source-only pre-alpha +`docs/milestone-d-opendataloader-adapter-shape-contract.md`. In this slice, `opendataloader_adapter_shape` names the adapter input-shape to `GroundingSource` contract currently carried by `ethos-grounding-opendataloader-json` and `ethos verify --grounding opendataloader-json`; it does not add a new command or binding surface. @@ -138,7 +138,7 @@ schema-validated here; its alignment with adapter tests, CLI grounding tests, re usage diagnostics is checked by the Milestone D repository guard. Milestone D `crop_element` v1 contract work is tracked in -`docs/milestone-d-crop-element-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-crop-element-contract.md`. In this slice, `crop_element` names the element-to-crop-descriptor contract currently carried by the source-bound `ethos crop_element` CLI command. The existing `ethos verify --crop-dir` carrier continues to emit verifier evidence artifacts from the same descriptor type, with optional rendered @@ -150,7 +150,7 @@ envelope carries a c14n-derived `request_ref` identity guarded in that same sour check. Milestone D `crop_element_surface_shape` v1 contract work is tracked in -`docs/milestone-d-crop-element-surface-shape-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-crop-element-surface-shape-contract.md`. In this slice, `crop_element_surface_shape` names the callable crop surface shape that must preserve the existing crop request and descriptor bindings. The contract inventory at `examples/crop/crop_element_surface_shape_v1_contract.json` is schema-validated here; its @@ -158,7 +158,7 @@ alignment with the request schema, descriptor schema, source-bound CLI command, source-bound Python wrapper is checked by the Milestone D repository guard. Milestone D `sandbox_subprocess` v1 contract work is tracked in -`docs/milestone-d-sandbox-subprocess-contract.md`. In this source-only pre-alpha slice, +`docs/milestone-d-sandbox-subprocess-contract.md`. In this slice, `sandbox_subprocess` names the future worker-boundary contract currently represented by the existing PDF worker process behind `ethos doc parse` and `ethos fingerprint`; it does not add a hardened sandbox or a new command/binding surface. The request envelope examples under @@ -168,7 +168,7 @@ with the executable worker tests is checked by the Milestone D repository guard. envelope carries a c14n-derived `request_ref` identity guarded in that same source-only contract check. -Milestone E prep is tracked in `docs/milestone-e-prep-scope.md`. In this source-only pre-alpha +Milestone E prep is tracked in `docs/milestone-e-prep-scope.md`. In this slice, the fixture-candidate inventory at `docs/milestone-e-fixture-candidates.json`, fixture-promotion criteria at `docs/milestone-e-fixture-promotion-criteria.json`, internal trust-loop walkthrough plan at `docs/milestone-e-internal-trust-loop-walkthrough.json`, and diff --git a/schemas/ethos-capability-downgrade-contract.schema.json b/schemas/ethos-capability-downgrade-contract.schema.json index 87de0001..56759d76 100644 --- a/schemas/ethos-capability-downgrade-contract.schema.json +++ b/schemas/ethos-capability-downgrade-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:capability-downgrade-contract:1", "title": "Ethos capability_downgrade v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the current capability_downgrade v1 contract carried by ethos verify. This validates inventory shape and vocabulary; report-golden alignment stays in the repository guard.", + "description": "Contract inventory for the current capability_downgrade v1 contract carried by ethos verify. This validates inventory shape and vocabulary; report-golden alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -17,7 +17,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "capability_downgrade.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "ethos verify" }, "report_cases": { "type": "array", diff --git a/schemas/ethos-claim-kind-boundary-contract.schema.json b/schemas/ethos-claim-kind-boundary-contract.schema.json index 52cc6b79..9bf3503d 100644 --- a/schemas/ethos-claim-kind-boundary-contract.schema.json +++ b/schemas/ethos-claim-kind-boundary-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:claim-kind-boundary-contract:1", "title": "Ethos claim_kind_boundary v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the current claim_kind_boundary v1 contract carried by ethos verify. This validates inventory shape and vocabulary; fixture alignment stays in the repository guard.", + "description": "Contract inventory for the current claim_kind_boundary v1 contract carried by ethos verify. This validates inventory shape and vocabulary; fixture alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -19,7 +19,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "claim_kind_boundary.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "ethos verify" }, "supported_claim_kinds": { "type": "array", diff --git a/schemas/ethos-crop-element-contract.schema.json b/schemas/ethos-crop-element-contract.schema.json index 764c7188..4813f7c4 100644 --- a/schemas/ethos-crop-element-contract.schema.json +++ b/schemas/ethos-crop-element-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:crop-element-contract:1", "title": "Ethos crop_element v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the crop_element v1 source-bound CLI/Python contract. This validates inventory shape and vocabulary; Node, MCP, hosted, sandbox-backed, and foreign-adapter crop behavior remain explicitly blocked.", + "description": "Contract inventory for the crop_element v1 source-bound CLI/Python contract. This validates inventory shape and vocabulary; Node, MCP, hosted, sandbox-backed, and foreign-adapter crop behavior remain explicitly blocked.", "type": "object", "required": [ "schema_version", @@ -17,7 +17,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "crop_element.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "ethos crop_element" }, "cases": { "type": "array", diff --git a/schemas/ethos-crop-element-request.schema.json b/schemas/ethos-crop-element-request.schema.json index 740f0184..f8ca01ad 100644 --- a/schemas/ethos-crop-element-request.schema.json +++ b/schemas/ethos-crop-element-request.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:crop-element-request:1", "title": "Ethos crop_element v1 request", - "description": "Source-only pre-alpha request envelope for the crop_element v1 source-bound CLI/Python contract. Node, MCP, hosted, sandbox-backed, and foreign-adapter crop behavior remain explicitly blocked.", + "description": "Request envelope for the crop_element v1 source-bound CLI/Python contract. Node, MCP, hosted, sandbox-backed, and foreign-adapter crop behavior remain explicitly blocked.", "type": "object", "required": [ "artifact_type", diff --git a/schemas/ethos-crop-element-surface-shape-contract.schema.json b/schemas/ethos-crop-element-surface-shape-contract.schema.json index 3a58fa5d..eaccb069 100644 --- a/schemas/ethos-crop-element-surface-shape-contract.schema.json +++ b/schemas/ethos-crop-element-surface-shape-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:crop-element-surface-shape-contract:1", "title": "Ethos crop_element_surface_shape v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the crop_element callable surface shape. This validates inventory shape and vocabulary; CLI and non-CLI surface alignment stays in the repository guard.", + "description": "Contract inventory for the crop_element callable surface shape. This validates inventory shape and vocabulary; CLI and non-CLI surface alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -20,7 +20,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "crop_element_surface_shape.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "source-only crop_element surface shape" }, "request_schema": { "$ref": "#/$defs/repo_path" }, "descriptor_schema": { "$ref": "#/$defs/repo_path" }, diff --git a/schemas/ethos-evidence-anchor-contract.schema.json b/schemas/ethos-evidence-anchor-contract.schema.json index 82608e5c..1bf33e69 100644 --- a/schemas/ethos-evidence-anchor-contract.schema.json +++ b/schemas/ethos-evidence-anchor-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:evidence-anchor-contract:1", "title": "Ethos evidence_anchor v1 contract inventory", - "description": "Source-only public beta evaluation guard inventory for the current evidence_anchor v1 contract carried by ethos evidence anchor. This validates inventory shape and vocabulary; executable alignment stays in the repository guard.", + "description": "Contract inventory for the current evidence_anchor v1 contract carried by ethos evidence anchor. This validates inventory shape and vocabulary; executable alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -22,7 +22,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "evidence_anchor.v1" }, - "status": { "const": "source-only-public-beta-evaluation" }, + "status": { "const": "supported" }, "carrier": { "const": "ethos evidence anchor" }, "request_schema": { "$ref": "#/$defs/repo_path" }, "report_schema": { "$ref": "#/$defs/repo_path" }, diff --git a/schemas/ethos-grounding-source-contract.schema.json b/schemas/ethos-grounding-source-contract.schema.json index ae257412..f1337c2a 100644 --- a/schemas/ethos-grounding-source-contract.schema.json +++ b/schemas/ethos-grounding-source-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:grounding-source-contract:1", "title": "Ethos grounding_source v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the current grounding_source v1 contract carried by the GroundingSource trait and ethos verify report grounding metadata. This validates inventory shape and vocabulary; trait/report alignment stays in the repository guard.", + "description": "Contract inventory for the current grounding_source v1 contract carried by the GroundingSource trait and ethos verify report grounding metadata. This validates inventory shape and vocabulary; trait/report alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -20,7 +20,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "grounding_source.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "GroundingSource trait" }, "trait_module": { "$ref": "#/$defs/repo_path" }, "report_schema": { "$ref": "#/$defs/repo_path" }, diff --git a/schemas/ethos-opendataloader-adapter-shape-contract.schema.json b/schemas/ethos-opendataloader-adapter-shape-contract.schema.json index becf408d..ca9ef22d 100644 --- a/schemas/ethos-opendataloader-adapter-shape-contract.schema.json +++ b/schemas/ethos-opendataloader-adapter-shape-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:opendataloader-adapter-shape-contract:1", "title": "Ethos opendataloader_adapter_shape v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the current opendataloader_adapter_shape v1 contract carried by the opendataloader-json adapter. This validates inventory shape and vocabulary; fixture/test/golden alignment stays in the repository guard.", + "description": "Contract inventory for the current opendataloader_adapter_shape v1 contract carried by the opendataloader-json adapter. This validates inventory shape and vocabulary; fixture/test/golden alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -17,7 +17,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "opendataloader_adapter_shape.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "opendataloader-json adapter" }, "accepted_shapes": { "type": "array", diff --git a/schemas/ethos-sandbox-subprocess-contract.schema.json b/schemas/ethos-sandbox-subprocess-contract.schema.json index 1e4ed777..132e07ba 100644 --- a/schemas/ethos-sandbox-subprocess-contract.schema.json +++ b/schemas/ethos-sandbox-subprocess-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:sandbox-subprocess-contract:1", "title": "Ethos sandbox_subprocess v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the future sandbox_subprocess v1 backend contract. This validates inventory shape and vocabulary; executable behavior remains on the existing PDF worker-process carrier until sandbox hardening is explicitly added.", + "description": "Contract inventory for the future sandbox_subprocess v1 backend contract. This validates inventory shape and vocabulary; executable behavior remains on the existing PDF worker-process carrier until sandbox hardening is explicitly added.", "type": "object", "required": [ "schema_version", @@ -20,7 +20,7 @@ "properties": { "schema_version": { "const": 1 }, "contract": { "const": "sandbox_subprocess.v1" }, - "status": { "const": "source-only-pre-alpha" }, + "status": { "const": "supported" }, "carrier": { "const": "pdfium worker process" }, "cases": { "type": "array", diff --git a/schemas/ethos-sandbox-subprocess-request.schema.json b/schemas/ethos-sandbox-subprocess-request.schema.json index ad1238d2..25c7f2fd 100644 --- a/schemas/ethos-sandbox-subprocess-request.schema.json +++ b/schemas/ethos-sandbox-subprocess-request.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:sandbox-subprocess-request:1", "title": "Ethos sandbox_subprocess v1 request", - "description": "Source-only pre-alpha request envelope for the future sandbox_subprocess v1 contract. The current executable carrier remains the existing PDF worker process until sandbox hardening is explicitly added.", + "description": "Request envelope for the future sandbox_subprocess v1 contract. The current executable carrier remains the existing PDF worker process until sandbox hardening is explicitly added.", "type": "object", "required": [ "artifact_type", diff --git a/schemas/ethos-verify-citations-contract.schema.json b/schemas/ethos-verify-citations-contract.schema.json index a057df06..5a2bd1dd 100644 --- a/schemas/ethos-verify-citations-contract.schema.json +++ b/schemas/ethos-verify-citations-contract.schema.json @@ -2,7 +2,7 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:ethos:schema:verify-citations-contract:1", "title": "Ethos verify_citations v1 contract inventory", - "description": "Source-only pre-alpha Milestone D inventory for the current verify_citations v1 contract carried by `ethos verify`. This schema validates inventory shape and vocabulary; executable case/golden alignment stays in the repository guard.", + "description": "Contract inventory for the current verify_citations v1 contract carried by `ethos verify`. This schema validates inventory shape and vocabulary; executable case/golden alignment stays in the repository guard.", "type": "object", "required": [ "schema_version", @@ -24,7 +24,7 @@ "const": "verify_citations.v1" }, "status": { - "const": "source-only-pre-alpha" + "const": "supported" }, "carrier": { "const": "ethos verify"