From 3ef8aac2e53b9aeca94a80eb2869b24c659689ce Mon Sep 17 00:00:00 2001 From: "Mr. Denman Mills" Date: Sun, 18 Oct 2026 19:57:55 -0500 Subject: [PATCH 1/2] test(visibility): protect deliberate public mise facade and internal implementation boundary --- tests/test_mise_visibility.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 tests/test_mise_visibility.py diff --git a/tests/test_mise_visibility.py b/tests/test_mise_visibility.py new file mode 100644 index 00000000..fbf4b29c --- /dev/null +++ b/tests/test_mise_visibility.py @@ -0,0 +1,19 @@ +import pathlib,re,unittest +ROOT=pathlib.Path(__file__).resolve().parents[1] +class MiseVisibilityTests(unittest.TestCase): + def test_only_wrapper_is_public_and_raw_module_is_private(self): + lib=(ROOT/"src/lib.rs").read_text() + self.assertRegex(lib,r'(?m)^mod mise_export_impl;$') + self.assertRegex(lib,r'(?m)^pub mod mise_export \{$') + self.assertNotRegex(lib,r'(?m)^pub mod mise_export_impl;') + for symbol in ("MiseExportAction","MiseExportMode","MiseExportReport","print_export"): + self.assertIn(symbol,lib) + def test_no_unreachable_pub_suppression_added(self): + lib=(ROOT/"src/lib.rs").read_text() + self.assertNotIn("allow(unreachable_pub)",lib) + self.assertNotIn("allow(warnings)",lib) + def test_project_lock_public_contract_does_not_disappear(self): + s=(ROOT/"src/project_lock.rs").read_text() + for symbol in ["pub struct OperationGuard","pub fn operation_lock_path","pub fn acquire","pub fn with_lock"]: + self.assertIn(symbol,s) +if __name__=="__main__":unittest.main() From 230f440951ba7d644b6a8bb79a203684b57bcde5 Mon Sep 17 00:00:00 2001 From: "Mr. Denman Mills" Date: Sun, 18 Oct 2026 20:00:31 -0500 Subject: [PATCH 2/2] ci: exact checked-out mise-public-facade regression evidence --- .../workflows/mise-public-facade-20261018.yml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/mise-public-facade-20261018.yml diff --git a/.github/workflows/mise-public-facade-20261018.yml b/.github/workflows/mise-public-facade-20261018.yml new file mode 100644 index 00000000..7c81d9e6 --- /dev/null +++ b/.github/workflows/mise-public-facade-20261018.yml @@ -0,0 +1,21 @@ +name: mise-public-facade exact-head conformance +on: + pull_request: + paths: + - 'tests/test_mise_visibility.py' + - '.github/workflows/mise-public-facade-20261018.yml' + workflow_dispatch: +permissions: + contents: read +jobs: + reference-check: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 + with: + persist-credentials: false + - name: Execute checked-out negative regressions + run: | + set -euo pipefail + python3 -m unittest discover -s tests -p test_mise_visibility.py -v