From 4600ea08679b95b40edfb7a543dfcd4361824ab6 Mon Sep 17 00:00:00 2001 From: docushell-admin Date: Sun, 21 Jun 2026 16:31:00 +0530 Subject: [PATCH] Record package manifest activation diff review Signed-off-by: docushell-admin --- ...one_e_package_publication_approval_prep.py | 1 + ...ication_manifest_activation_diff_review.py | 187 ++++++++++++++++++ ...t_milestone_e_prep_guard_sequence_index.py | 1 + .../scripts/test_milestone_e_prep_scope.py | 1 + ...est_milestone_e_validation_record_index.py | 45 ++++- .github/workflows/ci.yml | 2 + Makefile | 1 + docs/execution-status.md | 2 + ...e-e-package-publication-approval-prep.json | 3 +- docs/milestone-e-prep-scope.md | 5 + docs/roadmap.md | 5 + docs/validation/README.md | 5 + ...ation-diff-review-validation-2026-06-21.md | 114 +++++++++++ ...kage-publication-approval-prep.schema.json | 6 +- 14 files changed, 375 insertions(+), 3 deletions(-) create mode 100644 .github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py create mode 100644 docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md 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 8e4cb0f..c0d973c 100644 --- a/.github/scripts/test_milestone_e_package_publication_approval_prep.py +++ b/.github/scripts/test_milestone_e_package_publication_approval_prep.py @@ -94,6 +94,7 @@ "package_pre_approval_gap_ledger": "docs/validation/milestone-e-package-publication-pre-approval-gap-ledger-validation-2026-06-21.md", "package_decision_input_packet": "docs/validation/milestone-e-package-publication-decision-input-packet-validation-2026-06-21.md", "package_approval_readiness_review": "docs/validation/milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md", + "package_manifest_activation_diff_review": "docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md", } EXPECTED_PUBLICATION_DECISION_INPUTS = { "decision_status": "not_approved_pending_exact_decision", diff --git a/.github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py b/.github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py new file mode 100644 index 0000000..b08d029 --- /dev/null +++ b/.github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py @@ -0,0 +1,187 @@ +#!/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 json +import re +import subprocess +import unittest +from pathlib import Path + +from makefile_guard import target_block + + +ROOT = Path(__file__).resolve().parents[2] +PREP = ROOT / "docs/milestone-e-package-publication-approval-prep.json" +RECORD = ( + ROOT + / "docs/validation/" + "milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md" +) +VALIDATION_README = ROOT / "docs/validation/README.md" +PREP_SCOPE = ROOT / "docs/milestone-e-prep-scope.md" +ROADMAP = ROOT / "docs/roadmap.md" +EXECUTION_STATUS = ROOT / "docs/execution-status.md" +CI_WORKFLOW = ROOT / ".github/workflows/ci.yml" + +SOURCE_COMMIT = "89d24c84614a7c961dcecdccf85a9e9eca235046" +SOURCE_SHORT = "89d24c8" +SOURCE_TREE = "21b263dca908ef7cc977e7669e40206096eef93e" +FORBIDDEN_SCOPE_EXPANSION = [ + "public reports are approved", + "public result wording approved", + "release-ready", + "release artifact approved", + "package-ready", + "package publication is approved", + "package publication approved", + "packages are published", + "published packages", + "production-ready", + "production positioning approved", + "benchmark-validated", + "public benchmark pass", + "speed validated", + "fastest", + "launch-ready", + "hosted surface approved", + "hosted demo approved", + "demo-ready", + "performance validated", + "quality validated", + "footprint validated", + "table-quality validated", + "parser-quality validated", +] + + +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 load_json(path: Path) -> dict: + return json.loads(path.read_text(encoding="utf-8")) + + +def git(*args: str) -> str: + return subprocess.check_output( + ["git", *args], + cwd=ROOT, + encoding="utf-8", + stderr=subprocess.DEVNULL, + ).strip() + + +class MilestoneEPackagePublicationManifestActivationDiffReviewTests(unittest.TestCase): + def test_diff_review_record_is_indexed_and_source_bound(self) -> None: + prep = load_json(PREP) + readme = read(VALIDATION_README) + record = normalized(RECORD) + + self.assertIn(RECORD.name, readme) + self.assertIn("package publication manifest-activation diff review validation", readme) + self.assertEqual( + "docs/validation/" + "milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md", + prep["follow_up_records"]["package_manifest_activation_diff_review"], + ) + self.assertIn(f"Validated source HEAD before this record: `{SOURCE_SHORT}`", read(RECORD)) + self.assertIn(f"Manifest activation diff review source commit: `{SOURCE_COMMIT}`", record) + self.assertIn(f"Manifest activation diff review source tree: `{SOURCE_TREE}`", record) + self.assertEqual(SOURCE_COMMIT, git("rev-parse", SOURCE_SHORT)) + self.assertEqual(SOURCE_TREE, git("rev-parse", f"{SOURCE_SHORT}^{{tree}}")) + + def test_record_carries_candidate_manifest_diff_without_activation(self) -> None: + packet = load_json(PREP)["package_publication_decision_input_packet"] + record = normalized(RECORD) + + for candidate_diff in packet["candidate_manifest_activation_diff"]: + self.assertIn(candidate_diff, record) + self.assertIn("Candidate manifest activation diff is recorded", record) + self.assertIn("No Cargo manifest was changed", record) + self.assertIn("No package tag was created", record) + self.assertIn("No registry-backed assembly was activated", record) + self.assertIn("Package publication and public installation remained blocked", record) + self.assertIn("registry-backed dependent package assembly evidence remains required", record) + self.assertIn("public-surface posture check after exact public installation wording changes remains required", record) + self.assertIn("claims gate after exact public installation wording changes remains required", record) + + def test_current_manifests_stay_unactivated(self) -> None: + packet = load_json(PREP)["package_publication_decision_input_packet"] + core_manifest = read(ROOT / "crates/ethos-core/Cargo.toml") + verify_manifest = read(ROOT / "crates/ethos-verify/Cargo.toml") + pdf_manifest = read(ROOT / "crates/ethos-pdf/Cargo.toml") + + for value in packet["candidate_package_tag_names"]: + tag = value.split(": ", maxsplit=1)[1].split(";", maxsplit=1)[0] + self.assertEqual("", git("tag", "--list", tag)) + self.assertIn('name = "ethos-core"', core_manifest) + self.assertIn('reserved_crates_io_name = "ethos-doc-core"', core_manifest) + self.assertIn("publish = false", core_manifest) + self.assertIn('name = "ethos-verify"', verify_manifest) + self.assertIn("publish = false", verify_manifest) + self.assertIn('name = "ethos-pdf"', pdf_manifest) + self.assertIn("publish = false", pdf_manifest) + self.assertNotIn('package = "ethos-doc-core"', verify_manifest) + self.assertNotIn('package = "ethos-doc-core"', pdf_manifest) + + def test_docs_reference_diff_review_and_retained_blockers(self) -> None: + for path in (PREP_SCOPE, ROADMAP, EXECUTION_STATUS, VALIDATION_README): + doc = normalized(path) + + self.assertIn(RECORD.name, doc, str(path)) + self.assertIn("manifest-activation diff review", doc.lower(), str(path)) + self.assertIn("package publication remains blocked", doc, str(path)) + self.assertIn("public installation remains blocked", doc, str(path)) + + def test_make_and_ci_run_diff_review_after_readiness_review(self) -> None: + make_block = target_block("milestone-e-prep") + ci = read(CI_WORKFLOW) + readiness_guard = "test_milestone_e_package_publication_approval_readiness_review.py" + diff_review_guard = "test_milestone_e_package_publication_manifest_activation_diff_review.py" + public_facing_guard = "test_milestone_e_public_facing_readiness_ledger.py" + + for text, prefix in ((make_block, "$(PYTHON) .github/scripts/"), (ci, "python3 .github/scripts/")): + self.assertIn(prefix + diff_review_guard, text) + self.assertEqual(1, text.count(prefix + diff_review_guard)) + self.assertLess(text.index(prefix + readiness_guard), text.index(prefix + diff_review_guard)) + self.assertLess(text.index(prefix + diff_review_guard), text.index(prefix + public_facing_guard)) + + def test_record_avoids_scope_expansion_language_or_private_paths(self) -> None: + lower = normalized(RECORD).lower() + raw = read(RECORD) + + for phrase in FORBIDDEN_SCOPE_EXPANSION: + self.assertNotIn(phrase, lower) + self.assertNotIn("/Users/", raw) + self.assertNotIn("/private/tmp", raw) + self.assertNotIn("/private/var", raw) + self.assertNotIn("/var/folders", raw) + self.assertNotIn("saumildiwaker", raw) + self.assertNotIn("Desktop/Stuff", raw) + self.assertNotIn("project/repo/ethos", raw) + self.assertNotIn("docs/.roadmap.md.swp", raw) + self.assertNotIn("web/", raw) + + +if __name__ == "__main__": + unittest.main() diff --git a/.github/scripts/test_milestone_e_prep_guard_sequence_index.py b/.github/scripts/test_milestone_e_prep_guard_sequence_index.py index 023e37e..375c292 100644 --- a/.github/scripts/test_milestone_e_prep_guard_sequence_index.py +++ b/.github/scripts/test_milestone_e_prep_guard_sequence_index.py @@ -109,6 +109,7 @@ "$(PYTHON) .github/scripts/test_milestone_e_package_publication_approval_resolution_plan.py", "$(PYTHON) .github/scripts/test_milestone_e_package_publication_decision_input_packet.py", "$(PYTHON) .github/scripts/test_milestone_e_package_publication_approval_readiness_review.py", + "$(PYTHON) .github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py", "$(PYTHON) .github/scripts/test_milestone_e_public_facing_readiness_ledger.py", "$(PYTHON) .github/scripts/test_milestone_e_public_beta_current_main_refresh_prep.py", "$(PYTHON) .github/scripts/test_milestone_e_public_beta_current_main_source_only_approval.py", diff --git a/.github/scripts/test_milestone_e_prep_scope.py b/.github/scripts/test_milestone_e_prep_scope.py index 0e4430c..93d307b 100644 --- a/.github/scripts/test_milestone_e_prep_scope.py +++ b/.github/scripts/test_milestone_e_prep_scope.py @@ -408,6 +408,7 @@ def test_make_target_is_narrow_and_guarded(self) -> None: "$(PYTHON) .github/scripts/test_milestone_e_package_publication_approval_resolution_plan.py", "$(PYTHON) .github/scripts/test_milestone_e_package_publication_decision_input_packet.py", "$(PYTHON) .github/scripts/test_milestone_e_package_publication_approval_readiness_review.py", + "$(PYTHON) .github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py", "$(PYTHON) .github/scripts/test_milestone_e_public_facing_readiness_ledger.py", "$(PYTHON) .github/scripts/test_milestone_e_public_beta_current_main_refresh_prep.py", "$(PYTHON) .github/scripts/test_milestone_e_public_beta_current_main_source_only_approval.py", diff --git a/.github/scripts/test_milestone_e_validation_record_index.py b/.github/scripts/test_milestone_e_validation_record_index.py index 0527501..6dec8af 100644 --- a/.github/scripts/test_milestone_e_validation_record_index.py +++ b/.github/scripts/test_milestone_e_validation_record_index.py @@ -270,6 +270,10 @@ class RecordCoverage: "milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md", "test_milestone_e_package_publication_approval_readiness_review.py", ), + RecordCoverage( + "milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md", + "test_milestone_e_package_publication_manifest_activation_diff_review.py", + ), RecordCoverage( "milestone-e-public-facing-readiness-ledger-validation-2026-06-21.md", "test_milestone_e_public_facing_readiness_ledger.py", @@ -381,6 +385,18 @@ def test_index_guards_run_after_row_and_schema_records(self) -> None: "test_milestone_e_package_publication_decision_bundle_validation_record.py" ) package_gap_ledger_guard = "test_milestone_e_package_publication_pre_approval_gap_ledger.py" + package_resolution_plan_guard = ( + "test_milestone_e_package_publication_approval_resolution_plan.py" + ) + package_decision_input_guard = ( + "test_milestone_e_package_publication_decision_input_packet.py" + ) + package_approval_readiness_guard = ( + "test_milestone_e_package_publication_approval_readiness_review.py" + ) + package_manifest_diff_review_guard = ( + "test_milestone_e_package_publication_manifest_activation_diff_review.py" + ) readiness_guard = "test_milestone_e_public_facing_readiness_ledger.py" beta_refresh_guard = "test_milestone_e_public_beta_current_main_refresh_prep.py" command_guard = "test_milestone_e_validation_command_index_validation_record.py" @@ -439,10 +455,37 @@ def test_index_guards_run_after_row_and_schema_records(self) -> None: text.index(prefix + package_decision_bundle_guard), text.index(prefix + package_gap_ledger_guard), ) - self.assertLess(text.index(prefix + package_gap_ledger_guard), text.index(prefix + readiness_guard)) + self.assertLess( + text.index(prefix + package_gap_ledger_guard), + text.index(prefix + package_resolution_plan_guard), + ) + self.assertLess( + text.index(prefix + package_resolution_plan_guard), + text.index(prefix + package_decision_input_guard), + ) + self.assertLess( + text.index(prefix + package_decision_input_guard), + text.index(prefix + package_approval_readiness_guard), + ) + self.assertLess( + text.index(prefix + package_approval_readiness_guard), + text.index(prefix + package_manifest_diff_review_guard), + ) + self.assertLess( + text.index(prefix + package_manifest_diff_review_guard), + text.index(prefix + readiness_guard), + ) self.assertLess(text.index(prefix + readiness_guard), text.index(prefix + beta_refresh_guard)) self.assertLess(text.index(prefix + beta_refresh_guard), text.index(prefix + command_guard)) self.assertLess(text.index(prefix + beta_refresh_guard), text.index(prefix + index_guard)) + self.assertLess( + text.index(prefix + package_manifest_diff_review_guard), + text.index(prefix + command_guard), + ) + self.assertLess( + text.index(prefix + package_manifest_diff_review_guard), + text.index(prefix + index_guard), + ) self.assertLess(text.index(prefix + package_manifest_activation_guard), text.index(prefix + command_guard)) self.assertLess(text.index(prefix + package_manifest_activation_guard), text.index(prefix + index_guard)) self.assertLess(text.index(prefix + package_tag_guard), text.index(prefix + command_guard)) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9611e65..a7184fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -232,6 +232,8 @@ jobs: run: python3 .github/scripts/test_milestone_e_package_publication_decision_input_packet.py - name: Milestone E package publication approval-readiness review tests run: python3 .github/scripts/test_milestone_e_package_publication_approval_readiness_review.py + - name: Milestone E package publication manifest-activation diff review tests + run: python3 .github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py - name: Milestone E public-facing readiness ledger tests run: python3 .github/scripts/test_milestone_e_public_facing_readiness_ledger.py - name: Milestone E public beta current-main refresh prep tests diff --git a/Makefile b/Makefile index 4f00c51..0bb49e3 100644 --- a/Makefile +++ b/Makefile @@ -223,6 +223,7 @@ milestone-e-prep: $(PYTHON) .github/scripts/test_milestone_e_package_publication_approval_resolution_plan.py $(PYTHON) .github/scripts/test_milestone_e_package_publication_decision_input_packet.py $(PYTHON) .github/scripts/test_milestone_e_package_publication_approval_readiness_review.py + $(PYTHON) .github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py $(PYTHON) .github/scripts/test_milestone_e_public_facing_readiness_ledger.py $(PYTHON) .github/scripts/test_milestone_e_public_beta_current_main_refresh_prep.py $(PYTHON) .github/scripts/test_milestone_e_public_beta_current_main_source_only_approval.py diff --git a/docs/execution-status.md b/docs/execution-status.md index e29cdba..5e56116 100644 --- a/docs/execution-status.md +++ b/docs/execution-status.md @@ -201,6 +201,8 @@ The package publication decision input packet in `docs/validation/milestone-e-pa The package publication approval readiness review in `docs/validation/milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md` records the current readiness status against source commit `9054f1c` / tree `3f8cb66249826d67ab6030032c7784a2a4ff411b`. Exact approval decision, signoff, manifest review, assembly evidence, and post-wording gates remain required while package publication remains blocked and public installation remains blocked. +The package publication manifest-activation diff review in `docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md` records the candidate manifest activation diff against source commit `89d24c8` / tree `21b263dca908ef7cc977e7669e40206096eef93e`. Current Cargo manifests remain unchanged, package publication remains blocked, and public installation remains blocked. + | 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/milestone-e-package-publication-approval-prep.json b/docs/milestone-e-package-publication-approval-prep.json index 132ee34..9c70369 100644 --- a/docs/milestone-e-package-publication-approval-prep.json +++ b/docs/milestone-e-package-publication-approval-prep.json @@ -81,7 +81,8 @@ "package_decision_bundle_validation": "docs/validation/milestone-e-package-publication-decision-bundle-validation-2026-06-21.md", "package_pre_approval_gap_ledger": "docs/validation/milestone-e-package-publication-pre-approval-gap-ledger-validation-2026-06-21.md", "package_decision_input_packet": "docs/validation/milestone-e-package-publication-decision-input-packet-validation-2026-06-21.md", - "package_approval_readiness_review": "docs/validation/milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md" + "package_approval_readiness_review": "docs/validation/milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md", + "package_manifest_activation_diff_review": "docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md" }, "publication_approval_decision_inputs": { "decision_status": "not_approved_pending_exact_decision", diff --git a/docs/milestone-e-prep-scope.md b/docs/milestone-e-prep-scope.md index e3daf37..68e06fc 100644 --- a/docs/milestone-e-prep-scope.md +++ b/docs/milestone-e-prep-scope.md @@ -122,6 +122,11 @@ The package publication approval readiness review is recorded in It records readiness status for source commit `9054f1c` / tree `3f8cb66249826d67ab6030032c7784a2a4ff411b` while package publication remains blocked and public installation remains blocked. +The package publication manifest-activation diff review is recorded in +`docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md`. +It records the candidate manifest activation diff for source commit `89d24c8` / tree +`21b263dca908ef7cc977e7669e40206096eef93e` while current Cargo manifests remain unchanged, +package publication remains blocked, and public installation remains blocked. The metadata-readiness follow-up record under `docs/validation/` covers README, NOTICE, manifest metadata, and include-list readiness for `ethos-core`, `ethos-verify`, and `ethos-pdf` only. `ethos-doc` and `ethos-rag` remain reserved placeholders without in-tree package manifests, and diff --git a/docs/roadmap.md b/docs/roadmap.md index b5caab8..a2cd08c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -174,6 +174,11 @@ The package publication approval readiness review is recorded in for source commit `9054f1c` / tree `3f8cb66249826d67ab6030032c7784a2a4ff411b`. Exact approval decision, signoff, manifest review, assembly evidence, and post-wording gates remain required while package publication remains blocked and public installation remains blocked. +The package publication manifest-activation diff review is recorded in +[`docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md`](validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md) +for source commit `89d24c8` / tree `21b263dca908ef7cc977e7669e40206096eef93e`. The candidate +manifest activation diff is reviewed while current Cargo manifests remain unchanged, package +publication remains blocked, and public installation remains blocked. This prep only identifies tracked trust-loop fixture candidates and guard wiring for internal continuation; blocked-output alignment keeps the current trust-loop protocol, rehearsal/evidence matrix, blocker ledger, and matching schemas on the same explicit blockers, while evidence-lane diff --git a/docs/validation/README.md b/docs/validation/README.md index e025e30..20217bd 100644 --- a/docs/validation/README.md +++ b/docs/validation/README.md @@ -346,6 +346,11 @@ recording the exact current-main source candidate and required follow-up evidenc review; the record summarizes present decision inputs and remaining approval blockers for source commit `9054f1c` / tree `3f8cb66249826d67ab6030032c7784a2a4ff411b` while package publication remains blocked and public installation remains blocked. +- `milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md` - + package publication manifest-activation diff review validation for the candidate manifest + activation diff; the record binds the reviewed diff inputs to source commit `89d24c8` / tree + `21b263dca908ef7cc977e7669e40206096eef93e` while package publication remains blocked and + public installation remains blocked. - `milestone-e-public-facing-readiness-ledger-validation-2026-06-21.md` - public-facing readiness ledger validation recorded `docs/milestone-e-public-facing-readiness-ledger.json` as a current-main refresh candidate and package-publication gap-retention artifact; current main diff --git a/docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md b/docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md new file mode 100644 index 0000000..1a95b67 --- /dev/null +++ b/docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md @@ -0,0 +1,114 @@ +# Milestone E Package Publication Manifest-Activation Diff Review Validation - 2026-06-21 + +## Purpose + +Record the candidate package manifest activation diff review for the package publication approval +lane without changing Cargo manifests, selecting a package publication version, creating package +tags, creating a registry, activating registry-backed dependent package assembly, inviting public +installation, or approving package publication. + +## Status + +Status: **pass for package manifest-activation diff review with publication blocked**. + +Decision: record candidate manifest activation diff review only. + +Ethos remains source-only pre-alpha outside the approved GitHub source-repository public beta +surface. Package publication remains blocked. Public installation remains blocked. + +## Subject + +- Repository: `docushell/ethos` +- Validated source HEAD before this record: `89d24c8` +- Manifest activation diff review source commit: `89d24c84614a7c961dcecdccf85a9e9eca235046` +- Manifest activation diff review source tree: `21b263dca908ef7cc977e7669e40206096eef93e` +- Lane: package publication +- Reviewed readiness record: `docs/validation/milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md` + +## Candidate Manifest Activation Diff + +- crates/ethos-core/Cargo.toml candidate package-name migration: package.name ethos-core -> + ethos-doc-core; current manifest remains unchanged +- crates/ethos-verify/Cargo.toml candidate dependency activation: ethos_core package alias points + at ethos-doc-core; current manifest remains unchanged +- crates/ethos-pdf/Cargo.toml candidate dependency activation: ethos_core package alias points at + ethos-doc-core; current manifest remains unchanged +- included candidate crates require later publish-flag activation only after dedicated approval; + current manifests remain publish=false + +## Evidence Review + +- The current `crates/ethos-core/Cargo.toml` package name remains `ethos-core`. +- The current `crates/ethos-core/Cargo.toml` package metadata retains + `reserved_crates_io_name = "ethos-doc-core"`. +- The current `crates/ethos-verify/Cargo.toml` manifest does not reference + `package = "ethos-doc-core"`. +- The current `crates/ethos-pdf/Cargo.toml` manifest does not reference + `package = "ethos-doc-core"`. +- The current `crates/ethos-core/Cargo.toml`, `crates/ethos-verify/Cargo.toml`, and + `crates/ethos-pdf/Cargo.toml` manifests remain `publish = false`. +- No candidate package tag is created for `ethos-doc-core`, `ethos-verify`, or `ethos-pdf`. +- Registry-backed dependent package assembly remains required after any later exact manifest + activation approval. + +## Approval Inputs Still Required + +- exact package publication approval decision record remains required +- decider signoff on the exact candidate version map remains required +- decider signoff on the exact package tag name set and source binding remains required +- registry-backed dependent package assembly evidence remains required +- public-surface posture check after exact public installation wording changes remains required +- claims gate after exact public installation wording changes remains required +- make milestone-e-prep after exact decision record remains required + +## Non-Approvals + +- this manifest activation diff review does not select a package publication version +- this manifest activation diff review does not create a package tag +- this manifest activation diff review does not change Cargo manifests +- this manifest activation diff review does not activate package dependency manifests +- this manifest activation diff review does not create a registry +- this manifest activation diff review does not activate registry-backed dependent package assembly +- this manifest activation diff review does not invite public installation +- this manifest activation diff review does not approve package publication + +## Retained Blockers + +- candidate package version map is recorded but no package publication version is selected +- candidate package tag names are recorded but no package tag is created +- candidate manifest activation diff is reviewed but no Cargo manifest is changed +- package dependency manifest activation remains blocked +- registry-backed dependent package assembly evidence remains required +- public installation remains blocked +- package publication remains blocked +- real-version cargo publish remains blocked +- Public reports remain blocked +- Public result wording remains blocked + +## Commands + +```sh +python3 .github/scripts/test_milestone_e_package_publication_approval_prep.py +python3 .github/scripts/test_milestone_e_package_publication_approval_readiness_review.py +python3 .github/scripts/test_milestone_e_package_publication_manifest_activation_diff_review.py +python3 .github/scripts/test_public_surface_posture.py +python3 .github/scripts/claims_gate.py +cargo build --locked -p ethos-cli +make milestone-e-prep PYTHON=/bin/python +git diff --check +``` + +## Result + +```text +Package publication manifest-activation diff review validation passed +Candidate manifest activation diff is recorded for ethos-doc-core, ethos-verify, and ethos-pdf +No package version was selected +No package tag was created +No Cargo manifest was changed +No registry-backed assembly was activated +Package publication and public installation remained blocked +Public-surface posture and claims gates passed +Milestone E prep target passed +git diff --check passed +``` diff --git a/schemas/ethos-milestone-e-package-publication-approval-prep.schema.json b/schemas/ethos-milestone-e-package-publication-approval-prep.schema.json index 9f6c539..01fc176 100644 --- a/schemas/ethos-milestone-e-package-publication-approval-prep.schema.json +++ b/schemas/ethos-milestone-e-package-publication-approval-prep.schema.json @@ -289,7 +289,8 @@ "package_decision_bundle_validation", "package_pre_approval_gap_ledger", "package_decision_input_packet", - "package_approval_readiness_review" + "package_approval_readiness_review", + "package_manifest_activation_diff_review" ], "additionalProperties": false, "properties": { @@ -337,6 +338,9 @@ }, "package_approval_readiness_review": { "const": "docs/validation/milestone-e-package-publication-approval-readiness-review-validation-2026-06-21.md" + }, + "package_manifest_activation_diff_review": { + "const": "docs/validation/milestone-e-package-publication-manifest-activation-diff-review-validation-2026-06-21.md" } } },