From d3418be8baa5761f09804c310de3eff890e12f48 Mon Sep 17 00:00:00 2001 From: docushell-admin Date: Tue, 23 Jun 2026 21:14:30 +0530 Subject: [PATCH] Prepare patch 0.1.1 version surfaces Signed-off-by: docushell-admin --- ...ackage_publication_candidate_activation.py | 8 +++---- .github/scripts/smoke_release_cli_artifact.py | 2 +- ..._package_publication_activation_applied.py | 2 +- ...one_e_package_publication_approval_prep.py | 8 +++---- ...blication_candidate_activation_evidence.py | 4 ++-- ...e_publication_current_registry_assembly.py | 4 ++-- ..._e_package_publication_evidence_records.py | 2 +- ...publication_manifest_activation_applied.py | 2 +- ...age_publication_manifest_migration_prep.py | 2 +- ...cation_public_installation_availability.py | 13 ++++++++---- ...publication_real_version_selection_prep.py | 2 +- ...kage_publication_registry_assembly_prep.py | 2 +- ...package_publication_tag_binding_refresh.py | 2 +- ...e_package_publication_tag_creation_prep.py | 2 +- ..._package_publication_version_tag_policy.py | 2 +- ...tone_e_public_beta_source_only_approval.py | 2 +- ...ublic_evaluation_current_state_closeout.py | 4 ++-- .../test_npm_binary_package_scaffold.py | 2 +- .../test_npm_tarball_candidate_evidence.py | 21 ++++++++++++------- .../test_public_prealpha_wording_approval.py | 4 ++-- .../scripts/test_public_surface_posture.py | 8 +++---- .../scripts/test_python_public_api_policy.py | 4 ++-- .../test_release_artifact_workflow_prep.py | 6 +++--- CHANGELOG.md | 1 + Cargo.lock | 14 ++++++------- Cargo.toml | 8 +++---- README.md | 16 +++++++------- crates/ethos-cli/Cargo.toml | 6 +++--- docs/public-boundary-claims.json | 4 ++-- packages/npm/ethos-pdf/package.json | 2 +- pyproject.toml | 2 +- python/ethos_pdf/__init__.py | 2 +- 32 files changed, 87 insertions(+), 76 deletions(-) diff --git a/.github/scripts/package_publication_candidate_activation.py b/.github/scripts/package_publication_candidate_activation.py index 8fec255e..f1dc154f 100644 --- a/.github/scripts/package_publication_candidate_activation.py +++ b/.github/scripts/package_publication_candidate_activation.py @@ -29,7 +29,7 @@ ROOT = Path(__file__).resolve().parents[2] -VERSION = "0.1.0" +VERSION = "0.1.1" CORE_PACKAGE = "ethos-doc-core" CANDIDATE_PACKAGES = (CORE_PACKAGE, "ethos-verify", "ethos-pdf") CONSUMER_PACKAGE = "ethos-package-candidate-consumer" @@ -140,8 +140,8 @@ def materialize_candidate_workspace(workspace: Path) -> None: replace_once_if_needed( workspace / "Cargo.toml", - 'ethos-core = { path = "crates/ethos-core", version = "0.1.0", default-features = false }', - 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.0", default-features = false }', + 'ethos-core = { path = "crates/ethos-core", version = "0.1.1", default-features = false }', + 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.1", default-features = false }', ) root_manifest = workspace / "Cargo.toml" root_text = root_manifest.read_text(encoding="utf-8") @@ -544,7 +544,7 @@ def source_manifests_have_activation_shape() -> bool: lockfile = (ROOT / "Cargo.lock").read_text(encoding="utf-8") return all( [ - 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.0", default-features = false }' + 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.1", default-features = false }' in workspace, 'name = "ethos-doc-core"' in core, '[lib]\nname = "ethos_core"' in core, diff --git a/.github/scripts/smoke_release_cli_artifact.py b/.github/scripts/smoke_release_cli_artifact.py index 059e04e6..73f917f6 100644 --- a/.github/scripts/smoke_release_cli_artifact.py +++ b/.github/scripts/smoke_release_cli_artifact.py @@ -104,7 +104,7 @@ def smoke_artifact(artifact_dir: Path, expected_version: str, target: str) -> Di def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--artifact-dir", required=True) - parser.add_argument("--expected-version", default="ethos 0.1.0") + parser.add_argument("--expected-version", default="ethos 0.1.1") parser.add_argument("--target", required=True, choices=("macos-arm64", "linux-x64")) parser.add_argument("--out") args = parser.parse_args() diff --git a/.github/scripts/test_milestone_e_package_publication_activation_applied.py b/.github/scripts/test_milestone_e_package_publication_activation_applied.py index 229e3e37..4e6ec4e6 100644 --- a/.github/scripts/test_milestone_e_package_publication_activation_applied.py +++ b/.github/scripts/test_milestone_e_package_publication_activation_applied.py @@ -128,7 +128,7 @@ def test_candidate_manifests_are_activated_and_non_candidates_stay_blocked(self) pdf = read(ROOT / "crates/ethos-pdf/Cargo.toml") self.assertIn( 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", ' - 'version = "0.1.0", default-features = false }', + 'version = "0.1.1", default-features = false }', workspace, ) self.assertIn('name = "ethos-doc-core"', lockfile) diff --git a/.github/scripts/test_milestone_e_package_publication_approval_prep.py b/.github/scripts/test_milestone_e_package_publication_approval_prep.py index 5d18a71c..7b83e2c1 100644 --- a/.github/scripts/test_milestone_e_package_publication_approval_prep.py +++ b/.github/scripts/test_milestone_e_package_publication_approval_prep.py @@ -493,7 +493,7 @@ def test_candidate_crates_remain_publish_false_until_later_approval(self) -> Non self.assertNotIn("publish = false", verify) self.assertIn('name = "ethos-pdf"', pdf) self.assertNotIn("publish = false", pdf) - self.assertIn('version = "0.1.0"', read(ROOT / "Cargo.toml")) + self.assertIn('version = "0.1.1"', read(ROOT / "Cargo.toml")) def test_evidence_status_matches_decider_input(self) -> None: status = load_json(PREP)["evidence_review_status"] @@ -611,7 +611,7 @@ def test_semver_package_version_decision_prep_keeps_version_unselected(self) -> "semver_decision_inputs_recorded_version_unselected_publication_blocked", review["review_state"], ) - self.assertIn('version = "0.1.0"', cargo) + self.assertIn('version = "0.1.1"', cargo) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', core_manifest) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', verify_manifest) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', pdf_manifest) @@ -667,7 +667,7 @@ def test_combined_package_publication_decision_prep_bundle_blocks_all_actions(se self.assertIn('name = "ethos-doc-core"', core_manifest) self.assertIn('name = "ethos-verify"', verify_manifest) self.assertIn('name = "ethos-pdf"', pdf_manifest) - self.assertIn('version = "0.1.0"', cargo) + self.assertIn('version = "0.1.1"', cargo) def test_package_publication_approval_request_packet_keeps_all_actions_blocked(self) -> None: packet = load_json(PREP)["package_publication_approval_request_packet"] @@ -741,7 +741,7 @@ def test_package_publication_pre_approval_gap_ledger_keeps_resolution_inputs_exp self.assertIn('name = "ethos-doc-core"', core_manifest) self.assertIn('name = "ethos-verify"', verify_manifest) self.assertIn('name = "ethos-pdf"', pdf_manifest) - self.assertIn('version = "0.1.0"', cargo) + self.assertIn('version = "0.1.1"', cargo) def test_pdfium_boundary_keeps_ethos_pdf_held_until_confirmed(self) -> None: approved = load_json(PREP)["approved_package_publication_prep"] diff --git a/.github/scripts/test_milestone_e_package_publication_candidate_activation_evidence.py b/.github/scripts/test_milestone_e_package_publication_candidate_activation_evidence.py index 6bfe6d9c..1cd696e7 100644 --- a/.github/scripts/test_milestone_e_package_publication_candidate_activation_evidence.py +++ b/.github/scripts/test_milestone_e_package_publication_candidate_activation_evidence.py @@ -121,7 +121,7 @@ def test_candidate_activation_script_passes_with_registry_equivalent_consumer(se commands = [entry["command"] for entry in result["commands"]] self.assertEqual("pass", result["status"]) - self.assertEqual("0.1.0", result["candidate_version"]) + self.assertEqual("0.1.1", result["candidate_version"]) self.assertEqual(["ethos-doc-core", "ethos-verify", "ethos-pdf"], result["candidate_packages"]) self.assertEqual("pass", result["registry_equivalent_consumer_check"]) self.assertTrue(result["source_candidate_manifests_activated"]) @@ -151,7 +151,7 @@ def test_candidate_activation_preserves_import_and_dependency_shape(self) -> Non self.assertEqual({"ethos-doc-core", "ethos-verify", "ethos-pdf"}, set(artifacts)) for artifact in artifacts.values(): self.assertRegex(artifact["sha256"], r"^[0-9a-f]{64}$") - self.assertTrue(artifact["crate_file"].endswith("-0.1.0.crate")) + self.assertTrue(artifact["crate_file"].endswith("-0.1.1.crate")) def test_source_candidate_manifests_are_activated_and_profile_copy_is_in_sync(self) -> None: core_manifest = read(ROOT / "crates/ethos-core/Cargo.toml") diff --git a/.github/scripts/test_milestone_e_package_publication_current_registry_assembly.py b/.github/scripts/test_milestone_e_package_publication_current_registry_assembly.py index 6900a750..1a00f2e7 100644 --- a/.github/scripts/test_milestone_e_package_publication_current_registry_assembly.py +++ b/.github/scripts/test_milestone_e_package_publication_current_registry_assembly.py @@ -115,7 +115,7 @@ def test_current_registry_equivalent_assembly_passes_after_manifest_activation(s commands = [entry["command"] for entry in result["commands"]] self.assertEqual("pass", result["status"]) - self.assertEqual("0.1.0", result["candidate_version"]) + self.assertEqual("0.1.1", result["candidate_version"]) self.assertEqual(["ethos-doc-core", "ethos-verify", "ethos-pdf"], result["candidate_packages"]) self.assertEqual("pass", result["registry_equivalent_consumer_check"]) self.assertTrue(result["source_manifest_activation_applied"]) @@ -141,7 +141,7 @@ def test_artifacts_and_manifest_shape_are_current(self) -> None: self.assertEqual({"ethos-doc-core", "ethos-verify", "ethos-pdf"}, set(artifacts)) for artifact in artifacts.values(): self.assertRegex(artifact["sha256"], r"^[0-9a-f]{64}$") - self.assertTrue(artifact["crate_file"].endswith("-0.1.0.crate")) + self.assertTrue(artifact["crate_file"].endswith("-0.1.1.crate")) def test_source_candidate_manifests_are_activated_while_tags_and_registry_stay_absent(self) -> None: for manifest in ( diff --git a/.github/scripts/test_milestone_e_package_publication_evidence_records.py b/.github/scripts/test_milestone_e_package_publication_evidence_records.py index 77418de8..96eb5adc 100644 --- a/.github/scripts/test_milestone_e_package_publication_evidence_records.py +++ b/.github/scripts/test_milestone_e_package_publication_evidence_records.py @@ -176,7 +176,7 @@ def test_version_tag_policy_record_keeps_placeholder_and_workspace_versions_sepa record = normalized(record_path(RECORDS["version_tag_policy"])) root_manifest = read(ROOT / "Cargo.toml") - self.assertIn('version = "0.1.0"', root_manifest) + self.assertIn('version = "0.1.1"', root_manifest) self.assertIn("Workspace package version is `0.1.0`", record) self.assertIn("`0.0.0-reserved.0` placeholders", record) self.assertIn("`ethos-source-snapshot-660f268`", record) diff --git a/.github/scripts/test_milestone_e_package_publication_manifest_activation_applied.py b/.github/scripts/test_milestone_e_package_publication_manifest_activation_applied.py index 52ab0620..8a31210b 100644 --- a/.github/scripts/test_milestone_e_package_publication_manifest_activation_applied.py +++ b/.github/scripts/test_milestone_e_package_publication_manifest_activation_applied.py @@ -127,7 +127,7 @@ def test_source_manifests_have_activated_but_blocked_shape(self) -> None: self.assertIn( 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", ' - 'version = "0.1.0", default-features = false }', + 'version = "0.1.1", default-features = false }', workspace, ) self.assertIn('name = "ethos-doc-core"', core) diff --git a/.github/scripts/test_milestone_e_package_publication_manifest_migration_prep.py b/.github/scripts/test_milestone_e_package_publication_manifest_migration_prep.py index 48793042..d5ac6686 100644 --- a/.github/scripts/test_milestone_e_package_publication_manifest_migration_prep.py +++ b/.github/scripts/test_milestone_e_package_publication_manifest_migration_prep.py @@ -114,7 +114,7 @@ def test_current_manifests_remain_unmigrated_source_tree_manifests(self) -> None self.assertNotIn("publish = false", verify) self.assertNotIn("publish = false", pdf) self.assertIn( - 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.0", default-features = false }', + 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.1", default-features = false }', workspace, ) self.assertIn('ethos-core = { workspace = true, features = ["grounding", "verify-types"] }', verify) diff --git a/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py b/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py index 3b06b280..8d5b19fc 100644 --- a/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py +++ b/.github/scripts/test_milestone_e_package_publication_public_installation_availability.py @@ -59,8 +59,8 @@ "Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether " "AI citations are grounded in document evidence across native Ethos JSON and supported foreign " "parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are " - "available on crates.io at `0.1.0` for evaluation. The Python `ethos-pdf` wheel, npm " - "`@docushell/ethos-pdf@0.1.0` package, and macOS arm64/Linux x64 CLI artifacts are available " + "available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm " + "`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available " "for evaluation with caller-provided PDFium." ) BOUNDED_INSTALLATION_WORDING = ( @@ -87,6 +87,11 @@ "cargo add ethos-verify@0.1.0", "cargo add ethos-pdf@0.1.0", ) +CURRENT_INSTALL_COMMANDS = ( + "cargo add ethos-doc-core@0.1.1", + "cargo add ethos-verify@0.1.1", + "cargo add ethos-pdf@0.1.1", +) FORBIDDEN_SCOPE_EXPANSION = [ "public reports are approved", "public result wording approved", @@ -165,9 +170,9 @@ def test_readme_matches_bounded_public_wording(self) -> None: ) self.assertIn(CURRENT_README_WORDING, readme) - for command in INSTALL_COMMANDS: + for command in CURRENT_INSTALL_COMMANDS: self.assertIn(command, readme) - self.assertIn("npm install -g @docushell/ethos-pdf@0.1.0", readme) + self.assertIn("npm install -g @docushell/ethos-pdf@0.1.1", readme) self.assertIn("macOS arm64/Linux x64 CLI artifacts", readme) self.assertIn("Windows packaged artifacts", readme) self.assertIn("bundled project-maintained PDFium builds", readme) diff --git a/.github/scripts/test_milestone_e_package_publication_real_version_selection_prep.py b/.github/scripts/test_milestone_e_package_publication_real_version_selection_prep.py index 890e703b..fd6ea017 100644 --- a/.github/scripts/test_milestone_e_package_publication_real_version_selection_prep.py +++ b/.github/scripts/test_milestone_e_package_publication_real_version_selection_prep.py @@ -106,7 +106,7 @@ def test_current_versions_and_manifests_stay_source_tree_only(self) -> None: verify = read(ROOT / "crates/ethos-verify/Cargo.toml") pdf = read(ROOT / "crates/ethos-pdf/Cargo.toml") - self.assertIn('version = "0.1.0"', workspace) + self.assertIn('version = "0.1.1"', workspace) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', core) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', verify) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', pdf) diff --git a/.github/scripts/test_milestone_e_package_publication_registry_assembly_prep.py b/.github/scripts/test_milestone_e_package_publication_registry_assembly_prep.py index c443fca8..3d21c3e4 100644 --- a/.github/scripts/test_milestone_e_package_publication_registry_assembly_prep.py +++ b/.github/scripts/test_milestone_e_package_publication_registry_assembly_prep.py @@ -111,7 +111,7 @@ def test_current_manifests_stay_source_tree_only(self) -> None: self.assertNotIn("publish = false", verify) self.assertNotIn("publish = false", pdf) self.assertIn( - 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.0", default-features = false }', + 'ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.1", default-features = false }', workspace, ) self.assertIn('ethos-core = { workspace = true, features = ["grounding", "verify-types"] }', verify) diff --git a/.github/scripts/test_milestone_e_package_publication_tag_binding_refresh.py b/.github/scripts/test_milestone_e_package_publication_tag_binding_refresh.py index ec6897d5..b277f54f 100644 --- a/.github/scripts/test_milestone_e_package_publication_tag_binding_refresh.py +++ b/.github/scripts/test_milestone_e_package_publication_tag_binding_refresh.py @@ -138,7 +138,7 @@ def test_binding_points_at_activated_candidate_manifest_state(self) -> None: ) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', text, str(manifest)) - self.assertIn('version = "0.1.0"', read(ROOT / "Cargo.toml")) + self.assertIn('version = "0.1.1"', read(ROOT / "Cargo.toml")) for manifest in ( ROOT / "crates/ethos-cli/Cargo.toml", diff --git a/.github/scripts/test_milestone_e_package_publication_tag_creation_prep.py b/.github/scripts/test_milestone_e_package_publication_tag_creation_prep.py index d242a5f9..78d5647f 100644 --- a/.github/scripts/test_milestone_e_package_publication_tag_creation_prep.py +++ b/.github/scripts/test_milestone_e_package_publication_tag_creation_prep.py @@ -105,7 +105,7 @@ def test_current_manifests_and_versions_stay_unchanged(self) -> None: verify = read(ROOT / "crates/ethos-verify/Cargo.toml") pdf = read(ROOT / "crates/ethos-pdf/Cargo.toml") - self.assertIn('version = "0.1.0"', workspace) + self.assertIn('version = "0.1.1"', workspace) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', core) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', verify) self.assertIn('reserved_crates_io_version = "0.0.0-reserved.0"', pdf) diff --git a/.github/scripts/test_milestone_e_package_publication_version_tag_policy.py b/.github/scripts/test_milestone_e_package_publication_version_tag_policy.py index e1fd1ed8..12fdf1e7 100644 --- a/.github/scripts/test_milestone_e_package_publication_version_tag_policy.py +++ b/.github/scripts/test_milestone_e_package_publication_version_tag_policy.py @@ -101,7 +101,7 @@ def test_workspace_and_reserved_versions_stay_separate(self) -> None: adr = normalized(ROOT / "docs/decisions/ADR-0006-package-identifiers.md") record = normalized(RECORD) - self.assertIn('version = "0.1.0"', root_manifest) + self.assertIn('version = "0.1.1"', root_manifest) self.assertIn("0.0.0-reserved.0", adr) self.assertIn("Workspace package version `0.1.0` remains a source-tree version", record) self.assertIn("ADR-0006 crates.io reservations remain `0.0.0-reserved.0` placeholders", record) diff --git a/.github/scripts/test_milestone_e_public_beta_source_only_approval.py b/.github/scripts/test_milestone_e_public_beta_source_only_approval.py index 8ceffe59..922159ac 100644 --- a/.github/scripts/test_milestone_e_public_beta_source_only_approval.py +++ b/.github/scripts/test_milestone_e_public_beta_source_only_approval.py @@ -182,7 +182,7 @@ def test_public_surfaces_use_exact_approved_wording_and_exclusions(self) -> None self.assertIn("cargo build --locked -p ethos-cli", readme) self.assertIn("make verify-alpha", readme) self.assertIn("ETHOS_PDFIUM_LIBRARY_PATH", readme) - self.assertIn("npm `@docushell/ethos-pdf@0.1.0` package", normalized_readme) + self.assertIn("npm `@docushell/ethos-pdf@0.1.1` package", normalized_readme) self.assertIn("Windows packaged artifacts", normalized_readme) self.assertIn("bundled project-maintained PDFium builds", normalized_readme) self.assertIn("public benchmark reports", normalized_readme) diff --git a/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py b/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py index e6d74c23..2d606552 100644 --- a/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py +++ b/.github/scripts/test_milestone_e_public_evaluation_current_state_closeout.py @@ -53,8 +53,8 @@ "Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether " "AI citations are grounded in document evidence across native Ethos JSON and supported foreign " "parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are " - "available on crates.io at `0.1.0` for evaluation. The Python `ethos-pdf` wheel, npm " - "`@docushell/ethos-pdf@0.1.0` package, and macOS arm64/Linux x64 CLI artifacts are available " + "available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm " + "`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available " "for evaluation with caller-provided PDFium. Hosted surfaces, production positioning, Windows " "packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, " "public benchmark reports, public benchmark claims, and speed, footprint, parser-quality, " diff --git a/.github/scripts/test_npm_binary_package_scaffold.py b/.github/scripts/test_npm_binary_package_scaffold.py index fc140a9b..1ab21343 100644 --- a/.github/scripts/test_npm_binary_package_scaffold.py +++ b/.github/scripts/test_npm_binary_package_scaffold.py @@ -60,7 +60,7 @@ def test_package_metadata_is_bounded_to_supported_release_targets(self) -> None: package = json.loads(read(PACKAGE_JSON)) self.assertEqual("@docushell/ethos-pdf", package["name"]) - self.assertEqual("0.1.0", package["version"]) + self.assertEqual("0.1.1", package["version"]) self.assertEqual("Apache-2.0", package["license"]) self.assertEqual({"ethos": "./bin/ethos-pdf.js"}, package["bin"]) self.assertIn("vendor/", package["files"]) diff --git a/.github/scripts/test_npm_tarball_candidate_evidence.py b/.github/scripts/test_npm_tarball_candidate_evidence.py index e6e05f67..58c1dabe 100644 --- a/.github/scripts/test_npm_tarball_candidate_evidence.py +++ b/.github/scripts/test_npm_tarball_candidate_evidence.py @@ -29,7 +29,7 @@ ROOT = Path(__file__).resolve().parents[2] PACKAGE_DIR = ROOT / "packages/npm/ethos-pdf" -PACKAGE_TARBALL = PACKAGE_DIR / "docushell-ethos-pdf-0.1.0.tgz" +PACKAGE_TARBALL = PACKAGE_DIR / "docushell-ethos-pdf-0.1.1.tgz" RECORD = ROOT / "docs/validation/npm-tarball-candidate-evidence-validation-2026-06-23.md" VALIDATION_README = ROOT / "docs/validation/README.md" SOURCE_SHORT = "5a956a5" @@ -53,9 +53,14 @@ "vendor/ethos-linux-x64": "7ef796a6d1c86b7c3b5b1afe58dd9cc348b706cec441602833540d8a0c9260ac", "vendor/manifest.json": "0d03124957255dca55b7374e3318707da488f4b6648bfcec5e6e598079353b1f", } -EXPECTED_PACK_SHASUM = "17a053c5ccb802bca2a295e1b1d0e6106c6a3ca6" -EXPECTED_PACK_SHA256 = "8d0483d69a6de471dee52c8ef06d46712c06861682a0d7319ca573fdb1fe6376" +EXPECTED_PACK_SHASUM = "d60100a96a27094ee4b5007699be9235e63ba991" +EXPECTED_PACK_SHA256 = "1716bf6f0163672497aaa8d5d678759f251e07860f23fe1a3e04d85f6cc3052e" EXPECTED_PACK_INTEGRITY = ( + "sha512-kYTwuzx0nZTHekEFP8iRB4q4eIacDN/nuRPlB7d0v3hhtipHSxeenbonQ78kTJKDjzew6YKK8ix/Uk27tZ7KoQ==" +) +EVIDENCE_PACK_SHASUM = "17a053c5ccb802bca2a295e1b1d0e6106c6a3ca6" +EVIDENCE_PACK_SHA256 = "8d0483d69a6de471dee52c8ef06d46712c06861682a0d7319ca573fdb1fe6376" +EVIDENCE_PACK_INTEGRITY = ( "sha512-uWTHYd9Hfkm3nkahK2UchCMOVvYWe82z03jffZnX6aYPqYGd6LkuiEoTH5DjrXl+oA817EjlE88fIKBxZbhjMw==" ) EXPECTED_NODE_VERSION = "v23.11.1" @@ -103,8 +108,8 @@ def test_npm_pack_candidate_contents_and_checksums(self) -> None: files = {entry["path"]: entry for entry in pack["files"]} self.assertEqual("@docushell/ethos-pdf", pack["name"]) - self.assertEqual("0.1.0", pack["version"]) - self.assertEqual("docushell-ethos-pdf-0.1.0.tgz", pack["filename"]) + self.assertEqual("0.1.1", pack["version"]) + self.assertEqual("docushell-ethos-pdf-0.1.1.tgz", pack["filename"]) self.assertEqual(EXPECTED_FILES, set(files)) self.assertEqual(493, files["vendor/ethos-darwin-arm64"]["mode"]) self.assertEqual(493, files["vendor/ethos-linux-x64"]["mode"]) @@ -124,9 +129,9 @@ def test_candidate_evidence_record_is_source_bound_and_indexed(self) -> None: self.assertIn(f"Validated source HEAD before this record: `{SOURCE_SHORT}`", read(RECORD)) self.assertIn(f"npm tarball candidate source commit: `{SOURCE_COMMIT}`", record) self.assertIn(f"npm tarball candidate source tree: `{SOURCE_TREE}`", record) - self.assertIn(EXPECTED_PACK_SHASUM, record) - self.assertIn(EXPECTED_PACK_SHA256, record) - self.assertIn(EXPECTED_PACK_INTEGRITY, record) + self.assertIn(EVIDENCE_PACK_SHASUM, record) + self.assertIn(EVIDENCE_PACK_SHA256, record) + self.assertIn(EVIDENCE_PACK_INTEGRITY, record) self.assertIn(f"Node.js: `{EXPECTED_NODE_VERSION}`", record) self.assertIn(f"npm: `{EXPECTED_NPM_VERSION}`", record) self.assertIn("durable package-content provenance", record) diff --git a/.github/scripts/test_public_prealpha_wording_approval.py b/.github/scripts/test_public_prealpha_wording_approval.py index 2883afca..299adecb 100644 --- a/.github/scripts/test_public_prealpha_wording_approval.py +++ b/.github/scripts/test_public_prealpha_wording_approval.py @@ -41,8 +41,8 @@ "Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether " "AI citations are grounded in document evidence across native Ethos JSON and supported foreign " "parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are " - "available on crates.io at `0.1.0` for evaluation. The Python `ethos-pdf` wheel, npm " - "`@docushell/ethos-pdf@0.1.0` package, and macOS arm64/Linux x64 CLI artifacts are available " + "available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm " + "`@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available " "for evaluation with caller-provided PDFium. Hosted surfaces, production positioning, Windows " "packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, " "public benchmark reports, public benchmark claims, and speed, footprint, parser-quality, " diff --git a/.github/scripts/test_public_surface_posture.py b/.github/scripts/test_public_surface_posture.py index 65d5df77..f17081af 100644 --- a/.github/scripts/test_public_surface_posture.py +++ b/.github/scripts/test_public_surface_posture.py @@ -55,10 +55,10 @@ def test_readme_status_matches_public_beta_evaluation_scope(self) -> None: self.assertIn("public benchmark claims", text) self.assertIn("speed, footprint, parser-quality", text) self.assertIn("table-quality, or production claims remain blocked", normalized) - self.assertIn("cargo add ethos-doc-core@0.1.0", text) - self.assertIn("cargo add ethos-verify@0.1.0", text) - self.assertIn("cargo add ethos-pdf@0.1.0", text) - self.assertIn("npm install -g @docushell/ethos-pdf@0.1.0", text) + self.assertIn("cargo add ethos-doc-core@0.1.1", text) + self.assertIn("cargo add ethos-verify@0.1.1", text) + self.assertIn("cargo add ethos-pdf@0.1.1", text) + self.assertIn("npm install -g @docushell/ethos-pdf@0.1.1", text) self.assertNotIn("contracts phase", text) self.assertNotIn("has not run", text) diff --git a/.github/scripts/test_python_public_api_policy.py b/.github/scripts/test_python_public_api_policy.py index dda27ccd..45ca90b9 100644 --- a/.github/scripts/test_python_public_api_policy.py +++ b/.github/scripts/test_python_public_api_policy.py @@ -70,7 +70,7 @@ def test_package_metadata_declares_public_release_policy(self) -> None: text = pyproject_text() self.assertIn('name = "ethos-pdf"', text) - self.assertIn('version = "0.1.0"', text) + self.assertIn('version = "0.1.1"', text) self.assertIn('requires-python = ">=3.8"', text) self.assertIn('license = "Apache-2.0"', text) self.assertNotIn('license = { text = "Apache-2.0" }', text) @@ -81,7 +81,7 @@ def test_package_metadata_declares_public_release_policy(self) -> None: def test_public_module_version_and_all_match_metadata(self) -> None: assignments = parse_init_assignments() - self.assertEqual("0.1.0", assignments["__version__"]) + self.assertEqual("0.1.1", assignments["__version__"]) self.assertEqual(list(PUBLIC_API), assignments["__all__"]) def test_readme_documents_semver_and_exact_public_api_boundary(self) -> None: diff --git a/.github/scripts/test_release_artifact_workflow_prep.py b/.github/scripts/test_release_artifact_workflow_prep.py index c4e6f4ea..bbfb7967 100644 --- a/.github/scripts/test_release_artifact_workflow_prep.py +++ b/.github/scripts/test_release_artifact_workflow_prep.py @@ -121,7 +121,7 @@ def test_release_artifact_smoke_checks_version_help_and_missing_pdfium(self) -> """#!/usr/bin/env python3 import sys if sys.argv[1:] == ["--version"]: - print("ethos 0.1.0") + print("ethos 0.1.1") raise SystemExit(0) if sys.argv[1:] == ["--help"]: print("doc rag security verify fingerprint") @@ -148,7 +148,7 @@ def test_release_artifact_smoke_checks_version_help_and_missing_pdfium(self) -> "--artifact-dir", str(artifact), "--expected-version", - "ethos 0.1.0", + "ethos 0.1.1", "--target", "linux-x64", "--out", @@ -160,7 +160,7 @@ def test_release_artifact_smoke_checks_version_help_and_missing_pdfium(self) -> evidence = json.loads(smoke.read_text(encoding="utf-8")) self.assertEqual("ethos.release_artifact_smoke.v1", evidence["schema"]) self.assertEqual("linux-x64", evidence["target"]) - self.assertEqual("ethos 0.1.0", evidence["version_stdout"]) + self.assertEqual("ethos 0.1.1", evidence["version_stdout"]) self.assertEqual(12, evidence["missing_pdfium_exit_code"]) self.assertIn("ETHOS_PDFIUM_LIBRARY_PATH", evidence["missing_pdfium_message"]) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a6072d..4082eae5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- boundary-exception: prepare patch `0.1.1` workspace, Python, npm, CLI, and public install/version surfaces for review; no new hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, or `ethos-rag` boundary opens. - boundary-exception: add patch `0.1.1` readiness-prep record for review only; no version bump, release approval, artifact approval, package publication, or support-boundary change. - process-follow-up: record patch `0.1.1` readiness prep contents and retained blockers without approving release action or changing versions. - process-follow-up: keep validation-record integrity from treating decimal workflow run IDs as git refs. diff --git a/Cargo.lock b/Cargo.lock index 00692d45..04bc0a17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -193,7 +193,7 @@ dependencies = [ [[package]] name = "ethos-cli" -version = "0.1.0" +version = "0.1.1" dependencies = [ "clap", "ethos-doc-core", @@ -210,7 +210,7 @@ dependencies = [ [[package]] name = "ethos-doc-core" -version = "0.1.0" +version = "0.1.1" dependencies = [ "proptest", "serde", @@ -221,7 +221,7 @@ dependencies = [ [[package]] name = "ethos-grounding-opendataloader-json" -version = "0.1.0" +version = "0.1.1" dependencies = [ "ethos-doc-core", "serde", @@ -230,14 +230,14 @@ dependencies = [ [[package]] name = "ethos-layout" -version = "0.1.0" +version = "0.1.1" dependencies = [ "ethos-doc-core", ] [[package]] name = "ethos-pdf" -version = "0.1.0" +version = "0.1.1" dependencies = [ "ethos-doc-core", "serde", @@ -246,14 +246,14 @@ dependencies = [ [[package]] name = "ethos-tables" -version = "0.1.0" +version = "0.1.1" dependencies = [ "ethos-doc-core", ] [[package]] name = "ethos-verify" -version = "0.1.0" +version = "0.1.1" dependencies = [ "ethos-doc-core", "serde", diff --git a/Cargo.toml b/Cargo.toml index 4897b8f9..a6a64707 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ members = [ ] [workspace.package] -version = "0.1.0" +version = "0.1.1" edition = "2021" rust-version = "1.87" license = "Apache-2.0" @@ -36,9 +36,9 @@ tempfile = "3" proptest = "1" # internal -ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.0", default-features = false } -ethos-layout = { path = "crates/ethos-layout", version = "0.1.0" } -ethos-tables = { path = "crates/ethos-tables", version = "0.1.0" } +ethos-core = { package = "ethos-doc-core", path = "crates/ethos-core", version = "0.1.1", default-features = false } +ethos-layout = { path = "crates/ethos-layout", version = "0.1.1" } +ethos-tables = { path = "crates/ethos-tables", version = "0.1.1" } [profile.release] # Footprint discipline for the G2 gate (≤ 30 MB installed): strip + LTO + size-lean codegen. diff --git a/README.md b/README.md index 9222578d..f1ebe155 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ > Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation. It verifies whether > AI citations are grounded in document evidence across native Ethos JSON and supported foreign > parser outputs. Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` are -> available on crates.io at `0.1.0` for evaluation. The Python `ethos-pdf` wheel, npm -> `@docushell/ethos-pdf@0.1.0` package, and macOS arm64/Linux x64 CLI artifacts are available +> available on crates.io at `0.1.1` for evaluation. The Python `ethos-pdf` wheel, npm +> `@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available > for evaluation with caller-provided PDFium. Hosted surfaces, production positioning, Windows > packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, > public benchmark reports, public benchmark claims, and speed, footprint, parser-quality, @@ -125,15 +125,15 @@ ethos --help To add the currently approved Rust library crates to another Rust project: ```bash -cargo add ethos-doc-core@0.1.0 -cargo add ethos-verify@0.1.0 -cargo add ethos-pdf@0.1.0 +cargo add ethos-doc-core@0.1.1 +cargo add ethos-verify@0.1.1 +cargo add ethos-pdf@0.1.1 ``` To install the npm CLI package on a supported first-release platform: ```bash -npm install -g @docushell/ethos-pdf@0.1.0 +npm install -g @docushell/ethos-pdf@0.1.1 ethos --version ``` @@ -144,7 +144,7 @@ platforms fail before invoking a binary. PDFium-backed commands fail until Run `ethos doctor` for local setup diagnostics. Run `ethos doctor --require-pdfium` after setting `ETHOS_PDFIUM_LIBRARY_PATH` to check whether the configured PDFium is usable by Ethos. -GitHub Release `v0.1.0` also provides evaluation CLI archives for macOS arm64 and Linux x64. +GitHub Release `v0.1.1` also provides evaluation CLI archives for macOS arm64 and Linux x64. ## 2-minute PDF parse quickstart @@ -187,7 +187,7 @@ The command exits `0` and writes a verification report shaped like this: "grounding": { "parser": { "name": "ethos", - "version": "0.1.0" + "version": "0.1.1" } }, "checks": [ diff --git a/crates/ethos-cli/Cargo.toml b/crates/ethos-cli/Cargo.toml index d2991e0d..4329269a 100644 --- a/crates/ethos-cli/Cargo.toml +++ b/crates/ethos-cli/Cargo.toml @@ -17,9 +17,9 @@ path = "src/main.rs" ethos-core = { workspace = true, features = ["full", "crop-element"] } ethos-layout = { workspace = true } ethos-tables = { workspace = true } -ethos-pdf = { path = "../ethos-pdf", version = "0.1.0" } -ethos-verify = { path = "../ethos-verify", version = "0.1.0" } -ethos-grounding-opendataloader-json = { path = "../../adapters/grounding/opendataloader-json", version = "0.1.0" } +ethos-pdf = { path = "../ethos-pdf", version = "0.1.1" } +ethos-verify = { path = "../ethos-verify", version = "0.1.1" } +ethos-grounding-opendataloader-json = { path = "../../adapters/grounding/opendataloader-json", version = "0.1.1" } clap = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } diff --git a/docs/public-boundary-claims.json b/docs/public-boundary-claims.json index 8af921e5..e4756a18 100644 --- a/docs/public-boundary-claims.json +++ b/docs/public-boundary-claims.json @@ -5,12 +5,12 @@ "path": "README.md", "claims": [ "Ethos is public beta for source, Rust crate, Python wheel, macOS arm64 CLI artifact, Linux x64 CLI artifact, and npm `@docushell/ethos-pdf` evaluation.", - "The Python `ethos-pdf` wheel, npm `@docushell/ethos-pdf@0.1.0` package, and macOS arm64/Linux x64 CLI artifacts are available for evaluation with caller-provided PDFium.", + "The Python `ethos-pdf` wheel, npm `@docushell/ethos-pdf@0.1.1` package, and macOS arm64/Linux x64 CLI artifacts are available for evaluation with caller-provided PDFium.", "Hosted surfaces, production positioning, Windows packaged artifacts, bundled project-maintained PDFium builds, `ethos-doc`, `ethos-rag`, public benchmark reports, public benchmark claims, and speed, footprint, parser-quality, table-quality, or production claims remain blocked.", "PDFium-backed commands require caller-provided PDFium through `ETHOS_PDFIUM_LIBRARY_PATH`.", "The npm package vendors only the approved macOS arm64 and Linux x64 CLI binaries.", "Unsupported platforms fail before invoking a binary.", - "GitHub Release `v0.1.0` also provides evaluation CLI archives for macOS arm64 and Linux x64." + "GitHub Release `v0.1.1` also provides evaluation CLI archives for macOS arm64 and Linux x64." ] } } diff --git a/packages/npm/ethos-pdf/package.json b/packages/npm/ethos-pdf/package.json index e896b4cf..28490f3d 100644 --- a/packages/npm/ethos-pdf/package.json +++ b/packages/npm/ethos-pdf/package.json @@ -1,6 +1,6 @@ { "name": "@docushell/ethos-pdf", - "version": "0.1.0", + "version": "0.1.1", "description": "Ethos PDF CLI binary package for document evidence workflows.", "license": "Apache-2.0", "repository": { diff --git a/pyproject.toml b/pyproject.toml index 029a0b3f..57bc75bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "ethos-pdf" -version = "0.1.0" +version = "0.1.1" description = "Python wrapper for the Ethos document evidence CLI." readme = "python/README.md" requires-python = ">=3.8" diff --git a/python/ethos_pdf/__init__.py b/python/ethos_pdf/__init__.py index 6580f83a..cbfa2963 100644 --- a/python/ethos_pdf/__init__.py +++ b/python/ethos_pdf/__init__.py @@ -33,7 +33,7 @@ parse_pdf_text, ) -__version__ = "0.1.0" +__version__ = "0.1.1" __all__ = [ "EthosCli",