Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/scripts/test_app_answer_release_release_prep.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,13 @@ def test_prep_packet_does_not_itself_perform_release_actions(self) -> None:
]:
self.assertIn(required, record)

def test_current_public_install_surfaces_remain_on_published_baseline(self) -> None:
self.assertIn("cargo add ethos-doc-core@0.2.0", read(README))
self.assertIn("python3 -m pip install ethos-pdf==0.2.0", read(README))
self.assertIn("npm install -g @docushell/ethos-pdf@0.2.1", read(README))
self.assertNotIn("cargo add ethos-doc-core@0.3.0", read(README))
self.assertNotIn("python3 -m pip install ethos-pdf==0.3.0", read(README))
self.assertNotIn("npm install -g @docushell/ethos-pdf@0.3.0", read(README))
def test_prep_packet_does_not_itself_own_current_public_install_surfaces(self) -> None:
record = normalized(RECORD)

self.assertIn("This prep record does not approve installable `0.3.0` public wording.", record)
self.assertIn("cargo add ethos-doc-core@0.3.0", read(README))
self.assertIn("python3 -m pip install ethos-pdf==0.3.0", read(README))
self.assertIn("npm install -g @docushell/ethos-pdf@0.3.0", read(README))

def test_make_target_runs_scoped_release_prep_guard(self) -> None:
block = target_block("app-answer-release-release-prep")
Expand Down
19 changes: 8 additions & 11 deletions .github/scripts/test_execution_status.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,15 @@ def test_status_is_scoped_to_internal_continuation(self) -> None:
text,
)
self.assertIn(
"v0.2.0 remains the public CLI artifact baseline with GitHub Release `v0.2.0` "
"macOS arm64/Linux x64 artifacts, and npm remains `@docushell/ethos-pdf@0.2.1`",
"The exact v0.3.0 public install wording packet is approved and closed out",
text,
)
self.assertIn("Public `0.3.0` install wording", text)
self.assertIn("GitHub Release artifact upload", text)
self.assertIn("docs/validation/v0-3-0-public-install-wording-approval-decision-validation-2026-07-02.md", text)
self.assertIn("docs/validation/v0-3-0-public-install-wording-closeout-validation-2026-07-02.md", text)
self.assertIn("GitHub Release `v0.3.0`", text)
self.assertIn("npm `@docushell/ethos-pdf@0.3.0` is live on npm", text)
self.assertIn("v0.3.0 npm publication closeout", text)
self.assertIn("DocuShell integration remain blocked", text)
self.assertIn(
"npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI binaries",
text,
)
self.assertIn("Internal Milestone D source-only closeout remains complete", text)
self.assertIn(
"Ethos is pre-alpha. It verifies whether AI citations are grounded in document "
Expand Down Expand Up @@ -115,9 +111,10 @@ def test_public_posture_boundary_remains_explicit(self) -> None:
)
self.assertIn("the Python `ethos-pdf` wheel is live on PyPI", text)
self.assertIn("npm `@docushell/ethos-pdf@0.3.0` is live on npm", text)
self.assertIn("v0.2.0 remains the public CLI artifact baseline", text)
self.assertIn("npm remains `@docushell/ethos-pdf@0.2.1`", text)
self.assertIn("GitHub Release `v0.2.0` macOS arm64/Linux x64 artifacts", text)
self.assertIn("The exact v0.3.0 public install wording packet is approved and closed out", text)
self.assertIn("GitHub Release `v0.3.0`", text)
self.assertIn("macOS arm64/Linux x64 CLI artifacts", text)
self.assertIn("`@docushell/ethos-pdf@0.3.0`", text)
self.assertIn("docs/validation/v0-3-0-publication-closeout-validation-2026-07-01.md", text)
self.assertIn("ethos-doc-core", text)
self.assertIn("ethos-verify", text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,9 @@
"Ethos is a deterministic document evidence layer for source-grounded verification and "
"citation checking across native Ethos JSON and supported foreign parser outputs. The current "
"beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, "
"`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the "
"npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 "
"CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI "
"binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through "
"`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the "
"npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 "
"CLI artifacts. PDFium-backed commands use caller-provided PDFium through "
"`ETHOS_PDFIUM_LIBRARY_PATH`."
)
BOUNDED_INSTALLATION_WORDING = (
Expand Down Expand Up @@ -89,9 +88,9 @@
"cargo add ethos-pdf@0.1.0",
)
CURRENT_INSTALL_COMMANDS = (
"cargo add ethos-doc-core@0.2.0",
"cargo add ethos-verify@0.2.0",
"cargo add ethos-pdf@0.2.0",
"cargo add ethos-doc-core@0.3.0",
"cargo add ethos-verify@0.3.0",
"cargo add ethos-pdf@0.3.0",
)
FORBIDDEN_SCOPE_EXPANSION = [
"public reports are approved",
Expand Down Expand Up @@ -173,9 +172,9 @@ def test_readme_matches_bounded_public_wording(self) -> None:
self.assertIn(CURRENT_README_WORDING, readme)
for command in CURRENT_INSTALL_COMMANDS:
self.assertIn(command, readme)
self.assertIn("npm install -g @docushell/ethos-pdf@0.2.1", readme)
self.assertIn("python3 -m pip install ethos-pdf==0.2.0", readme)
self.assertIn("GitHub Release `v0.2.0`", readme)
self.assertIn("npm install -g @docushell/ethos-pdf@0.3.0", readme)
self.assertIn("python3 -m pip install ethos-pdf==0.3.0", readme)
self.assertIn("GitHub Release `v0.3.0`", readme)
self.assertIn("macOS arm64/Linux x64 CLI artifacts", readme)
self.assertIn("Windows packaged artifacts", readme)
self.assertIn("bundled project-maintained PDFium builds", readme)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,9 @@
"Ethos is a deterministic document evidence layer for source-grounded verification and "
"citation checking across native Ethos JSON and supported foreign parser outputs. The current "
"beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, "
"`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the "
"npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 "
"CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI "
"binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through "
"`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the "
"npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 "
"CLI artifacts. PDFium-backed commands use caller-provided PDFium through "
"`ETHOS_PDFIUM_LIBRARY_PATH`."
)
EXPECTED_SOURCE = {
Expand Down Expand Up @@ -186,8 +185,7 @@ def test_public_surfaces_use_exact_approved_wording_and_exclusions(self) -> None
self.assertIn("cargo build --locked -p ethos-cli", readme)
self.assertIn("make verify-alpha", readme)
self.assertIn("ETHOS_PDFIUM_LIBRARY_PATH", readme)
self.assertIn("npm `@docushell/ethos-pdf@0.2.1` package", normalized_readme)
self.assertIn("npm `@docushell/ethos-pdf@0.2.0` is deprecated", normalized_readme)
self.assertIn("npm `@docushell/ethos-pdf@0.3.0` package", normalized_readme)
self.assertIn("Windows packaged artifacts", normalized_readme)
self.assertIn("bundled project-maintained PDFium builds", normalized_readme)
self.assertIn("public benchmark reports", normalized_readme)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,9 @@
"Ethos is a deterministic document evidence layer for source-grounded verification and "
"citation checking across native Ethos JSON and supported foreign parser outputs. The current "
"beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, "
"`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the "
"npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 "
"CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI "
"binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through "
"`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the "
"npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 "
"CLI artifacts. PDFium-backed commands use caller-provided PDFium through "
"`ETHOS_PDFIUM_LIBRARY_PATH`."
)
APPROVED_SURFACE_LINES = (
Expand Down Expand Up @@ -151,13 +150,11 @@ def test_current_docs_use_current_public_wording(self) -> None:
str(EXECUTION_STATUS),
)
self.assertIn(
"v0.2.0 remains the public CLI artifact baseline with GitHub Release `v0.2.0` "
"macOS arm64/Linux x64 artifacts, and npm remains `@docushell/ethos-pdf@0.2.1`",
"The exact v0.3.0 public install wording packet is approved and closed out",
execution_status,
str(EXECUTION_STATUS),
)
self.assertIn("Public `0.3.0` install wording", execution_status, str(EXECUTION_STATUS))
self.assertIn("GitHub Release artifact upload", execution_status, str(EXECUTION_STATUS))
self.assertIn("GitHub Release `v0.3.0`", execution_status, str(EXECUTION_STATUS))
self.assertIn(
"npm `@docushell/ethos-pdf@0.3.0` is live on npm",
execution_status,
Expand All @@ -174,11 +171,6 @@ def test_current_docs_use_current_public_wording(self) -> None:
execution_status,
str(EXECUTION_STATUS),
)
self.assertIn(
"npm `@docushell/ethos-pdf@0.2.0` is deprecated",
execution_status,
str(EXECUTION_STATUS),
)

def test_docs_reference_current_state_and_retained_blockers(self) -> None:
for path in (PREP_SCOPE, ROADMAP, EXECUTION_STATUS, VALIDATION_README):
Expand Down
7 changes: 3 additions & 4 deletions .github/scripts/test_public_prealpha_wording_approval.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,9 @@
"Ethos is a deterministic document evidence layer for source-grounded verification and "
"citation checking across native Ethos JSON and supported foreign parser outputs. The current "
"beta includes the GitHub source repository, Rust library crates `ethos-doc-core`, "
"`ethos-verify`, and `ethos-pdf` at `0.2.0`, the Python `ethos-pdf` wheel at `0.2.0`, the "
"npm `@docushell/ethos-pdf@0.2.1` package, and GitHub Release `v0.2.0` macOS arm64/Linux x64 "
"CLI artifacts. npm `@docushell/ethos-pdf@0.2.0` is deprecated because it shipped stale CLI "
"binaries; use `0.2.1`. PDFium-backed commands use caller-provided PDFium through "
"`ethos-verify`, and `ethos-pdf` at `0.3.0`, the Python `ethos-pdf` wheel at `0.3.0`, the "
"npm `@docushell/ethos-pdf@0.3.0` package, and GitHub Release `v0.3.0` macOS arm64/Linux x64 "
"CLI artifacts. PDFium-backed commands use caller-provided PDFium through "
"`ETHOS_PDFIUM_LIBRARY_PATH`."
)

Expand Down
17 changes: 10 additions & 7 deletions .github/scripts/test_public_surface_posture.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,16 @@ def test_readme_status_matches_public_beta_evaluation_scope(self) -> None:
self.assertIn("Python `ethos-pdf` wheel", normalized)
self.assertIn("caller-provided PDFium", text)
self.assertIn("release-scope work", text)
self.assertIn("cargo add ethos-doc-core@0.2.0", text)
self.assertIn("cargo add ethos-verify@0.2.0", text)
self.assertIn("cargo add ethos-pdf@0.2.0", text)
self.assertIn("python3 -m pip install ethos-pdf==0.2.0", text)
self.assertIn("npm install -g @docushell/ethos-pdf@0.2.1", text)
self.assertIn("GitHub Release `v0.2.0`", text)
self.assertIn("@docushell/ethos-pdf@0.2.0` is deprecated", text)
self.assertIn("cargo add ethos-doc-core@0.3.0", text)
self.assertIn("cargo add ethos-verify@0.3.0", text)
self.assertIn("cargo add ethos-pdf@0.3.0", text)
self.assertIn("python3 -m pip install ethos-pdf==0.3.0", text)
self.assertIn("npm install -g @docushell/ethos-pdf@0.3.0", text)
self.assertIn("GitHub Release `v0.3.0`", text)
self.assertNotIn("cargo add ethos-doc-core@0.2.0", text)
self.assertNotIn("python3 -m pip install ethos-pdf==0.2.0", text)
self.assertNotIn("npm install -g @docushell/ethos-pdf@0.2.1", text)
self.assertNotIn("@docushell/ethos-pdf@0.2.0` is deprecated", text)
self.assertNotIn("not production-ready", text.lower())
self.assertNotIn("not stable production surfaces", text.lower())
self.assertNotIn("contracts phase", text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@
EXECUTION_STATUS = ROOT / "docs/execution-status.md"
PUBLIC_RELEASE_CHECKLIST = ROOT / "docs/public-release-checklist.md"
RELEASE_PREP = ROOT / "docs/v0-3-0-release-prep.md"
README = ROOT / "README.md"
CLAIMS = ROOT / "docs/public-boundary-claims.json"
CHANGELOG = ROOT / "CHANGELOG.md"

SOURCE_SHORT = "7ad3521"
Expand All @@ -57,14 +55,6 @@
GITHUB_RELEASE = (
"GitHub Release `v0.3.0` also provides evaluation CLI archives for macOS arm64 and Linux x64."
)
CURRENT_RUST_INSTALLS = (
"cargo add ethos-doc-core@0.2.0",
"cargo add ethos-verify@0.2.0",
"cargo add ethos-pdf@0.2.0",
)
CURRENT_PYTHON_INSTALL = "python3 -m pip install ethos-pdf==0.2.0"
CURRENT_NPM_INSTALL = "npm install -g @docushell/ethos-pdf@0.2.1"
CURRENT_RELEASE = "GitHub Release `v0.2.0` also provides evaluation CLI archives"
PRIVATE_PATH_MARKERS = (
"/" + "Users/",
"/" + "private/tmp",
Expand Down Expand Up @@ -95,14 +85,6 @@ def normalized(path: Path) -> str:
return re.sub(r"\s+", " ", read(path))


def normalized_public_readme() -> str:
return re.sub(
r"\s+",
" ",
" ".join(line.removeprefix("> ").strip() for line in read(README).splitlines()),
)


class V030PublicInstallWordingApprovalRequestTests(unittest.TestCase):
def test_request_record_is_source_bound(self) -> None:
raw = read(RECORD)
Expand Down Expand Up @@ -146,23 +128,18 @@ def test_request_captures_exact_proposed_wording_without_flipping_docs(self) ->
for phrase in FORBIDDEN:
self.assertNotIn(phrase, record.lower())

def test_current_public_readme_and_claims_remain_on_0_2_baseline(self) -> None:
readme = normalized(README)
public_status = normalized_public_readme()
claims = json.loads(read(CLAIMS))["surfaces"]["readme"]["claims"]

self.assertIn("Rust library crates `ethos-doc-core`, `ethos-verify`, and `ethos-pdf` at `0.2.0`", public_status)
self.assertIn("the Python `ethos-pdf` wheel at `0.2.0`", public_status)
self.assertIn("the npm `@docushell/ethos-pdf@0.2.1` package", public_status)
self.assertIn("GitHub Release `v0.2.0` macOS arm64/Linux x64 CLI artifacts", public_status)

for expected in (*CURRENT_RUST_INSTALLS, CURRENT_PYTHON_INSTALL, CURRENT_NPM_INSTALL, CURRENT_RELEASE):
self.assertIn(expected, readme)
self.assertTrue(any(expected in claim for claim in claims), expected)
def test_request_preserves_pre_decision_baseline_as_historical_context(self) -> None:
record = normalized(RECORD)

for proposed in (*RUST_INSTALLS, PYTHON_INSTALL, NPM_INSTALL, GITHUB_RELEASE):
self.assertNotIn(proposed, readme)
self.assertFalse(any(proposed in claim for claim in claims), proposed)
for expected in (
"Current `README.md` and `docs/public-boundary-claims.json` remain on the already-approved public install baseline while this request is under review",
"Rust install commands remain `0.2.0`.",
"Python install command remains `ethos-pdf==0.2.0`.",
"npm install command remains `@docushell/ethos-pdf@0.2.1`.",
"GitHub Release CLI artifact reference remains `v0.2.0`.",
"Public `0.3.0` install wording remains blocked until a separate approval decision and closeout pass.",
):
self.assertIn(expected, record)

def test_request_is_indexed_and_wired_into_status_docs(self) -> None:
for path in (
Expand All @@ -174,7 +151,7 @@ def test_request_is_indexed_and_wired_into_status_docs(self) -> None:
text = normalized(path)
self.assertIn(RECORD.name, text)
self.assertIn("v0.3.0 public install wording approval request", text.lower())
self.assertIn("wording remains blocked", text.lower())
self.assertIn("historical request stage", text.lower())
self.assertIn("0.3.0", text)
self.assertIn("DocuShell integration remain blocked", text)

Expand All @@ -189,12 +166,17 @@ def test_release_prep_target_runs_request_guard_after_npm_closeout(self) -> None
"$(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_approval_request.py"
)
public_surface_guard = "$(PYTHON) .github/scripts/test_public_surface_posture.py"
wording_closeout_guard = (
"$(PYTHON) .github/scripts/test_v0_3_0_public_install_wording_closeout.py"
)

self.assertIn(npm_closeout_guard, block)
self.assertIn(wording_request_guard, block)
self.assertIn(wording_closeout_guard, block)
self.assertEqual(1, block.count(wording_request_guard))
self.assertLess(block.index(npm_closeout_guard), block.index(wording_request_guard))
self.assertLess(block.index(wording_request_guard), block.index(public_surface_guard))
self.assertLess(block.index(wording_request_guard), block.index(wording_closeout_guard))
self.assertLess(block.index(wording_closeout_guard), block.index(public_surface_guard))


if __name__ == "__main__":
Expand Down
Loading
Loading