From 9d7dd7b0ef11dfcb22a06ddc8f624cf35533115d Mon Sep 17 00:00:00 2001 From: docushell-admin Date: Wed, 24 Jun 2026 19:47:06 +0530 Subject: [PATCH] Approve patch 0.1.2 artifact publication Signed-off-by: docushell-admin --- ..._artifact_publication_approval_decision.py | 202 ++++++++++++++++++ .../scripts/test_release_candidate_prep.py | 1 + CHANGELOG.md | 1 + Makefile | 1 + docs/execution-status.md | 2 + docs/public-release-checklist.md | 8 + docs/validation/README.md | 6 + ...approval-decision-validation-2026-06-24.md | 173 +++++++++++++++ 8 files changed, 394 insertions(+) create mode 100644 .github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py create mode 100644 docs/validation/patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md diff --git a/.github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py b/.github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py new file mode 100644 index 0000000..f5ab842 --- /dev/null +++ b/.github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py @@ -0,0 +1,202 @@ +#!/usr/bin/env python3 +# +# Copyright 2026 The Ethos maintainers +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from __future__ import annotations + +import re +import subprocess +import unittest +from pathlib import Path + +from makefile_guard import target_block + + +ROOT = Path(__file__).resolve().parents[2] +RECORD = ROOT / ( + "docs/validation/" + "patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md" +) +VALIDATION_README = ROOT / "docs/validation/README.md" +EXECUTION_STATUS = ROOT / "docs/execution-status.md" +PUBLIC_RELEASE_CHECKLIST = ROOT / "docs/public-release-checklist.md" + +SOURCE_SHORT = "94c2ea4" +SOURCE_COMMIT = "94c2ea490883a042ee026c9c3565e92121f16c3f" +SOURCE_TREE = "6016ad317aae4efe01eadcd1d643f9c2f0be2ee5" +ARTIFACT_SOURCE_SHORT = "09750a8" +ARTIFACT_SOURCE_COMMIT = "09750a81cb72cbc91f9e0c35e52ae2711c2ee7b7" +ARTIFACT_SOURCE_TREE = "7a7eeb7b3b258facd4f171ce00ed4df5533259b1" +RUN_URL = "https://github.com/docushell/ethos/actions/runs/28102259869" +WORKFLOW_HEAD = "2cb092b403eefe937e30c902fcebf7bb5754d590" +MACOS_SHA256 = "7da7da71fb0c21b25cd2ffc198480ee80bf9f0c9e70e461cffbdcbdda8d7023c" +LINUX_SHA256 = "4e260b464dc9557bc31c29fb1d1dfa75311fe12734bc79af4a31e1649797e456" + +APPROVED_WORDING = ( + "Ethos patch `0.1.2` CLI artifacts for macOS arm64 and Linux x64 are requested for public beta " + "evaluation with caller-provided PDFium. Rust crates, the Python wheel, npm package install " + "instructions, and public README installation examples remain on the published `0.1.1` baseline " + "until separate registry, npm vendor refresh, and public wording closeout records pass. 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." +) +FORBIDDEN_SCOPE_EXPANSION = ( + "registry publication approved", + "npm vendor refresh approved", + "npm publication approved", + "public installation wording approved", + "public install wording approved", + "vendor payload refreshed", + "hosted surfaces approved", + "production positioning approved", + "windows packaged artifacts approved", + "bundled pdfium approved", + "public benchmark claims approved", + "production-ready", + "benchmark-validated", +) +PRIVATE_PATH_MARKERS = ( + "/" + "Users/", + "/" + "private/tmp", + "/" + "private/var", + "/" + "var/folders", + "saumil" + "diwaker", + "Desktop/" + "Stuff", + "project/repo/" + "ethos", +) + + +def read(path: Path) -> str: + return path.read_text(encoding="utf-8") + + +def normalized(path: Path) -> str: + return re.sub(r"\s+", " ", read(path)) + + +def git(*args: str) -> str: + return subprocess.check_output( + ["git", *args], + cwd=ROOT, + encoding="utf-8", + stderr=subprocess.DEVNULL, + ).strip() + + +class Patch012ArtifactPublicationApprovalDecisionTests(unittest.TestCase): + def test_record_is_source_bound(self) -> None: + raw = read(RECORD) + text = normalized(RECORD) + + self.assertIn(f"Validated source HEAD before this record: `{SOURCE_SHORT}`", raw) + self.assertIn(f"Patch 0.1.2 artifact publication approval decision source commit: `{SOURCE_COMMIT}`", text) + self.assertIn(f"Patch 0.1.2 artifact publication approval decision source tree: `{SOURCE_TREE}`", text) + self.assertEqual(SOURCE_COMMIT, git("rev-parse", SOURCE_SHORT)) + self.assertEqual(SOURCE_TREE, git("rev-parse", f"{SOURCE_SHORT}^{{tree}}")) + + def test_decision_accepts_exact_release_assets_only(self) -> None: + text = normalized(RECORD) + + for expected in ( + "Decision: accept the exact patch `0.1.2` artifact publication request.", + "Exact GitHub Release tag accepted by this decision: `v0.1.2`", + "patch-0-1-2-artifact-publication-approval-request-validation-2026-06-24.md", + "patch-0-1-2-draft-artifact-evidence-validation-2026-06-24.md", + f"Exact artifact source commit accepted by this decision: `{ARTIFACT_SOURCE_COMMIT}`", + f"Exact artifact source tree accepted by this decision: `{ARTIFACT_SOURCE_TREE}`", + RUN_URL, + WORKFLOW_HEAD, + "ethos-macos-arm64.tar.gz", + "ethos-macos-arm64.tar.gz.sha256", + "ethos-macos-arm64.inventory.json", + "ethos-macos-arm64.smoke.json", + "ethos-linux-x64.tar.gz", + "ethos-linux-x64.tar.gz.sha256", + "ethos-linux-x64.inventory.json", + "ethos-linux-x64.smoke.json", + MACOS_SHA256, + LINUX_SHA256, + "Exact CLI smoke accepted by this decision: `ethos 0.1.2`", + "caller-provided PDFium only through `ETHOS_PDFIUM_LIBRARY_PATH`", + ): + self.assertIn(expected, text) + self.assertEqual(ARTIFACT_SOURCE_COMMIT, git("rev-parse", ARTIFACT_SOURCE_SHORT)) + self.assertEqual(ARTIFACT_SOURCE_TREE, git("rev-parse", f"{ARTIFACT_SOURCE_SHORT}^{{tree}}")) + + def test_decision_preserves_bounded_public_wording_and_install_baseline(self) -> None: + record = re.sub(r"\s+", " ", read(RECORD).replace("> ", "")) + + self.assertIn(APPROVED_WORDING, record) + self.assertIn("Any broader public wording requires a separate decider record.", record) + self.assertIn("public install baseline remains `0.1.1`", record) + self.assertIn("README installation examples remain unchanged", record) + + def test_decision_requires_later_operator_upload_and_closeout(self) -> None: + text = normalized(RECORD) + + self.assertIn("This decision does not itself upload artifacts.", text) + self.assertIn("Publication remains an explicit later operator action.", text) + self.assertIn("post-upload closeout evidence", text) + self.assertIn("python3 .github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py", text) + self.assertIn("make release-candidate-prep PYTHON=python3", text) + + def test_retains_unrelated_blockers_and_avoids_scope_expansion(self) -> None: + raw = read(RECORD) + lower = normalized(RECORD).lower() + + for blocker in ( + "`packages/npm/ethos-pdf/vendor/manifest.json` must not be refreshed", + "Registry publication remains blocked", + "npm vendor refresh remains blocked", + "npm publication remains blocked", + "Public installation wording remains blocked", + "Hosted surfaces remain blocked", + "Production positioning remains blocked", + "Windows packaged artifacts remain blocked", + "Bundled project-maintained PDFium builds remain blocked", + "Public benchmark reports remain blocked", + "Public benchmark claims remain blocked", + "`ethos-doc` remains blocked", + "`ethos-rag` remains blocked", + ): + self.assertIn(blocker, raw) + for phrase in FORBIDDEN_SCOPE_EXPANSION: + self.assertNotIn(phrase, lower) + for private in PRIVATE_PATH_MARKERS: + self.assertNotIn(private, raw) + + def test_record_is_indexed_statused_and_wired_into_release_candidate_prep(self) -> None: + readme = normalized(VALIDATION_README) + execution = normalized(EXECUTION_STATUS) + checklist = normalized(PUBLIC_RELEASE_CHECKLIST) + block = target_block("release-candidate-prep") + request_guard = "$(PYTHON) .github/scripts/test_patch_0_1_2_artifact_publication_approval_request.py" + decision_guard = "$(PYTHON) .github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py" + first_public_guard = "$(PYTHON) .github/scripts/test_first_public_release_artifact_evidence.py" + + self.assertIn(RECORD.name, readme) + self.assertIn("patch 0.1.2 artifact publication approval decision", readme.lower()) + self.assertIn(RECORD.name, execution) + self.assertIn(RECORD.name, checklist) + self.assertIn(decision_guard, block) + self.assertEqual(1, block.count(decision_guard)) + self.assertLess(block.index(request_guard), block.index(decision_guard)) + self.assertLess(block.index(decision_guard), block.index(first_public_guard)) + + +if __name__ == "__main__": + unittest.main() diff --git a/.github/scripts/test_release_candidate_prep.py b/.github/scripts/test_release_candidate_prep.py index 15e27f2..c8478f8 100644 --- a/.github/scripts/test_release_candidate_prep.py +++ b/.github/scripts/test_release_candidate_prep.py @@ -61,6 +61,7 @@ "$(PYTHON) .github/scripts/test_patch_0_1_2_artifact_package_evidence.py", "$(PYTHON) .github/scripts/test_patch_0_1_2_draft_artifact_evidence.py", "$(PYTHON) .github/scripts/test_patch_0_1_2_artifact_publication_approval_request.py", + "$(PYTHON) .github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py", "$(PYTHON) .github/scripts/test_first_public_release_artifact_evidence.py", "$(PYTHON) .github/scripts/test_first_public_release_final_decider.py", "$(PYTHON) .github/scripts/test_first_public_release_linux_x64_artifact_evidence.py", diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ae7d53..195db5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- boundary-exception: approve exact patch `0.1.2` macOS arm64 and Linux x64 GitHub Release CLI artifact publication for later operator upload while keeping upload, registry, npm vendor refresh, public install wording, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` surfaces blocked until separate closeout or approval records pass. - boundary-exception: request decider review for exact patch `0.1.2` macOS arm64 and Linux x64 GitHub Release CLI artifact publication while keeping publication, registry, npm vendor refresh, public install wording, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` surfaces blocked. - boundary-exception: record patch `0.1.2` draft CLI artifact evidence for macOS arm64 and Linux x64 while keeping GitHub Release publication, registry publication, npm vendor refresh, public install wording, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` surfaces blocked. - boundary-exception: record patch `0.1.2` artifact/package evidence prep and update draft CLI artifact smoke expectations to `ethos 0.1.2` while keeping npm, public install wording, registry publication, GitHub Release publication, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` surfaces blocked. diff --git a/Makefile b/Makefile index c4e0aba..236afac 100644 --- a/Makefile +++ b/Makefile @@ -312,6 +312,7 @@ release-candidate-prep: $(PYTHON) .github/scripts/test_patch_0_1_2_artifact_package_evidence.py $(PYTHON) .github/scripts/test_patch_0_1_2_draft_artifact_evidence.py $(PYTHON) .github/scripts/test_patch_0_1_2_artifact_publication_approval_request.py + $(PYTHON) .github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py $(PYTHON) .github/scripts/test_first_public_release_artifact_evidence.py $(PYTHON) .github/scripts/test_first_public_release_final_decider.py $(PYTHON) .github/scripts/test_first_public_release_linux_x64_artifact_evidence.py diff --git a/docs/execution-status.md b/docs/execution-status.md index 266f4d1..773f9df 100644 --- a/docs/execution-status.md +++ b/docs/execution-status.md @@ -278,6 +278,8 @@ The patch `0.1.2` draft artifact evidence record in `docs/validation/patch-0-1-2 The patch `0.1.2` artifact publication approval request in `docs/validation/patch-0-1-2-artifact-publication-approval-request-validation-2026-06-24.md` binds the exact macOS arm64/Linux x64 draft CLI artifact names, SHA256 values, source commit, workflow evidence, and requested bounded wording for decider review only. Publication remains blocked, the public install baseline remains `0.1.1`, registry publication remains blocked, npm vendor refresh remains blocked, and public installation wording remains blocked until a separate decision and operator evidence pass. +The patch `0.1.2` artifact publication approval decision in `docs/validation/patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md` accepts only the exact macOS arm64/Linux x64 CLI artifact names, SHA256 values, source binding, workflow evidence, and bounded wording for later operator upload to GitHub Release `v0.1.2`. Upload remains pending, the public install baseline remains `0.1.1`, registry publication remains blocked, npm vendor refresh remains blocked, and public installation wording remains blocked until post-upload closeout or separate approval records pass. + | Work item | Current status | Remaining blocker | | --- | --- | --- | | PDFium Phase 1 profile | Landed: pinned profile, V8/XFA-disabled state, platform hashes, runtime library hashes, and provenance are recorded | Phase 2 project-maintained builds still block Public Beta | diff --git a/docs/public-release-checklist.md b/docs/public-release-checklist.md index a445e23..c9cf119 100644 --- a/docs/public-release-checklist.md +++ b/docs/public-release-checklist.md @@ -60,6 +60,14 @@ baseline remains `0.1.1`, registry publication remains blocked, npm vendor refre and public installation wording remains blocked until a separate decision and operator evidence pass. +Patch `0.1.2` artifact publication approval decision is recorded in +`docs/validation/patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md` for +later operator upload only. It accepts the exact macOS arm64/Linux x64 CLI artifact names and +SHA256 values for GitHub Release `v0.1.2`, but upload remains pending, the public install baseline +remains `0.1.1`, registry publication remains blocked, npm vendor refresh remains blocked, and +public installation wording remains blocked until post-upload closeout or separate approval records +pass. + ## Required Before Public Push - Package-name and trademark decision is closed by accepted ADR-0006 in diff --git a/docs/validation/README.md b/docs/validation/README.md index 8d4669e..59bee22 100644 --- a/docs/validation/README.md +++ b/docs/validation/README.md @@ -677,6 +677,12 @@ recording the exact current-main source candidate and required follow-up evidenc for decider review while keeping publication, registry, npm vendor refresh, public install wording, hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` surfaces blocked. +- `patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md` - patch 0.1.2 + artifact publication approval decision accepts only the exact macOS arm64 and Linux x64 CLI + artifact names, SHA256 values, source binding, workflow evidence, and bounded wording for later + operator upload while keeping upload, registry, npm vendor refresh, public install wording, + hosted, production, Windows, bundled PDFium, benchmark, `ethos-doc`, and `ethos-rag` surfaces + blocked until separate closeout or approval records pass. - `milestone-e-validation-command-index-validation-2026-06-20.md` - internal Milestone E validation-command index validation passed through command-alignment checks, schema enum checks, row-record checks, public-surface posture checks, `make milestone-e-prep`, and diff hygiene; the diff --git a/docs/validation/patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md b/docs/validation/patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md new file mode 100644 index 0000000..9f5d2fc --- /dev/null +++ b/docs/validation/patch-0-1-2-artifact-publication-approval-decision-validation-2026-06-24.md @@ -0,0 +1,173 @@ +# Patch 0.1.2 Artifact Publication Approval Decision Validation - 2026-06-24 + +Validated source HEAD before this record: `94c2ea4`. + +Patch 0.1.2 artifact publication approval decision source commit: +`94c2ea490883a042ee026c9c3565e92121f16c3f`. + +Patch 0.1.2 artifact publication approval decision source tree: +`6016ad317aae4efe01eadcd1d643f9c2f0be2ee5`. + +Status: **patch 0.1.2 artifact publication approval decision recorded; operator upload remains pending** + +This record accepts the exact patch `0.1.2` GitHub Release artifact publication request after +decider approval. It approves only attaching the exact evidenced macOS arm64 and Linux x64 CLI +artifact assets below to GitHub Release tag `v0.1.2` for public beta evaluation. It does not upload +artifacts, publish registries, refresh npm vendor binaries, publish npm, change public installation +wording, change PDFium posture, approve hosted surfaces, approve production positioning, approve +Windows packaged artifacts, approve bundled project-maintained PDFium builds, approve `ethos-doc`, +approve `ethos-rag`, or approve public benchmark reports or claims. + +## Subject + +- Repository: `docushell/ethos` +- Lane: patch `0.1.2` GitHub Release artifact publication +- Approval owner: `docushell-admin` +- Approval request record: + `docs/validation/patch-0-1-2-artifact-publication-approval-request-validation-2026-06-24.md` +- Artifact evidence record: + `docs/validation/patch-0-1-2-draft-artifact-evidence-validation-2026-06-24.md` +- Release workflow run: `https://github.com/docushell/ethos/actions/runs/28102259869` + +## Exact Decision Fields + +- Decision: accept the exact patch `0.1.2` artifact publication request. +- Approver: `docushell-admin` acting as decider. +- Date: 2026-06-24. +- Exact GitHub Release tag accepted by this decision: `v0.1.2`. +- Exact artifact source commit accepted by this decision: + `09750a81cb72cbc91f9e0c35e52ae2711c2ee7b7`. +- Exact artifact source tree accepted by this decision: + `7a7eeb7b3b258facd4f171ce00ed4df5533259b1`. +- Exact workflow run accepted by this decision: + `https://github.com/docushell/ethos/actions/runs/28102259869`. +- Exact workflow head SHA accepted by this decision: + `2cb092b403eefe937e30c902fcebf7bb5754d590`. + +macOS arm64 assets accepted by this decision: + +- `ethos-macos-arm64.tar.gz` +- `ethos-macos-arm64.tar.gz.sha256` +- `ethos-macos-arm64.inventory.json` +- `ethos-macos-arm64.smoke.json` +- archive SHA256: + +```text +7da7da71fb0c21b25cd2ffc198480ee80bf9f0c9e70e461cffbdcbdda8d7023c +``` + +Linux x64 assets accepted by this decision: + +- `ethos-linux-x64.tar.gz` +- `ethos-linux-x64.tar.gz.sha256` +- `ethos-linux-x64.inventory.json` +- `ethos-linux-x64.smoke.json` +- archive SHA256: + +```text +4e260b464dc9557bc31c29fb1d1dfa75311fe12734bc79af4a31e1649797e456 +``` + +Exact CLI smoke accepted by this decision: `ethos 0.1.2` for both accepted platform artifacts. + +Exact PDFium boundary accepted by this decision: caller-provided PDFium only through +`ETHOS_PDFIUM_LIBRARY_PATH`; no bundled or project-maintained PDFium build is approved. + +## Approved Operator Action + +After this decision record is merged and the validation commands below pass on the merged source, +an operator may attach only the exact accepted asset names above to GitHub Release tag `v0.1.2`. + +This decision does not itself upload artifacts. Publication remains an explicit later operator +action. + +## Approved Public Wording + +After the exact assets above are attached to GitHub Release tag `v0.1.2`, the bounded public +release wording may remain: + +> Ethos patch `0.1.2` CLI artifacts for macOS arm64 and Linux x64 are requested for public beta +> evaluation with caller-provided PDFium. Rust crates, the Python wheel, npm package install +> instructions, and public README installation examples remain on the published `0.1.1` baseline +> until separate registry, npm vendor refresh, and public wording closeout records pass. 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. + +Any broader public wording requires a separate decider record. The public install baseline remains +`0.1.1`, and README installation examples remain unchanged. + +## Required Operator Pre-Upload Checks + +Before uploading, the operator must verify the downloaded workflow artifacts: + +```sh +shasum -a 256 ethos-macos-arm64.tar.gz +cat ethos-macos-arm64.tar.gz.sha256 +cat ethos-macos-arm64.inventory.json +cat ethos-macos-arm64.smoke.json +shasum -a 256 ethos-linux-x64.tar.gz +cat ethos-linux-x64.tar.gz.sha256 +cat ethos-linux-x64.inventory.json +cat ethos-linux-x64.smoke.json +python3 .github/scripts/test_patch_0_1_2_artifact_publication_approval_decision.py +make release-candidate-prep PYTHON=python3 +git diff --check +``` + +The operator must stop if artifact names, checksums, version output, inventory publication status, +PDFium posture, license and NOTICE inclusion, public install baseline, or approved public wording +differ from this decision record. + +## Retained Blockers + +- `packages/npm/ethos-pdf/vendor/manifest.json` must not be refreshed until after the approved + GitHub Release assets are attached and publication closeout evidence is recorded. +- Registry publication remains blocked. +- npm vendor refresh remains blocked. +- npm publication remains blocked. +- Public installation wording remains blocked. +- Hosted surfaces remain blocked. +- Production positioning remains blocked. +- Windows packaged artifacts remain blocked. +- Bundled project-maintained PDFium builds remain blocked. +- Public benchmark reports remain blocked. +- Public benchmark claims remain blocked. +- `ethos-doc` remains blocked. +- `ethos-rag` remains blocked. +- PDFium remains caller-provided through `ETHOS_PDFIUM_LIBRARY_PATH`. + +## Evidence Bound To This Decision + +- Decider decision supplied: Approved. +- Exact approval supplied by operator: + `Approve exact patch 0.1.2 GitHub Release artifact publication request for the listed macOS arm64 + and Linux x64 CLI artifacts, checksums, source binding, and bounded public wording.` +- `python3 .github/scripts/test_patch_0_1_2_artifact_publication_approval_request.py` passed on + merged `main`. +- `python3 .github/scripts/test_release_candidate_prep.py` passed on merged `main`. +- `make light-check PYTHON=python3` passed on merged `main`. +- `make release-candidate-prep PYTHON=python3` passed on merged `main`. + +## Non-Actions + +- This decision record does not upload GitHub Release assets. +- This decision record does not publish registries. +- This decision record does not refresh npm vendor binaries. +- This decision record does not publish npm. +- This decision record does not change public installation wording. +- This decision record does not change PDFium posture. +- This decision record does not approve hosted surfaces. +- This decision record does not approve production positioning. +- This decision record does not approve Windows packaged artifacts. +- This decision record does not approve bundled project-maintained PDFium builds. +- This decision record does not approve public benchmark reports. +- This decision record does not approve public benchmark claims. +- This decision record does not approve `ethos-doc`. +- This decision record does not approve `ethos-rag`. + +## Result + +The exact patch `0.1.2` GitHub Release artifact publication decision is accepted. Actual asset +upload remains a separate operator action requiring the exact bounded assets approved here, final +pre-upload checks, and post-upload closeout evidence.