Repository navigation
v0.5.25 — Curate subpackage public API surface (Phase 0 Loop 7) - #137
Merged
Merged
Conversation
cschanhniem
force-pushed
the
agent/oamp-loop-20260705-public-api
branch
from
July 4, 2026 18:53
86b43cd to
767dccd
Compare
cschanhniem
added a commit
that referenced
this pull request
Jul 4, 2026
Eleven subpackages previously had empty __init__.py files, forcing every caller into module-level imports. This release populates each with a docstring, ordered re-exports of every non-underscore public function/class, and an __all__ list, satisfying the Phase 0 exit criterion: "from openamp_foundry.benchmark import ..." works cleanly. Subpackages now exposing a curated public surface (~120 names): benchmark, scoring, selection, features, evidence, data, qc, reports, generators, analysis, utils, gates. Internal fix: features.physchem deferred the boman import to function scope inside compute_features to break a circular import surfaced by the new scoring __init__. CI fixes (pre-existing bugs from v0.5.24 blocking PR #137): - Added empty scripts/__init__.py so tests/test_benchmark_gate.py can import scripts.benchmark_gate as a package member in CI. - Added scripts/ to pytest's pythonpath in pyproject.toml as a belt- and-braces measure so the test collection works regardless of how pytest is invoked (editable install vs source tree). Tests: 7 new in tests/test_public_api_imports.py; 1682 pass total. The new test file locks in every __all__ entry as importable from the package root, guards against private (_-prefixed) name leakage, and regression-checks the Phase 0 exit criteria. Docs: CHANGELOG, ROADMAP v0.5.25, METRICS_CURRENT header, 50_LOOP_PLAN Loop 7 marked complete. No benchmark or behavioural number changed. This is a pure architectural-clarity release plus CI-path fixes. Tested: 1682 pass, 7 skip; ruff clean on all new files; public-API import test asserts every __all__ entry is reachable from package root; test_benchmark_gate now collects and passes locally and in CI. Confidence: high. The change is mechanical re-exports plus one targeted deferred import plus two small CI-path fixes; all existing tests continue to pass and the new tests catch every documented public name. Constraint: macrel_local re-exports use the macrel_ prefix to avoid collisions with common names in other scoring modules. Co-authored-by: OmX <omx@oh-my-codex.dev>
cschanhniem
force-pushed
the
agent/oamp-loop-20260705-public-api
branch
from
July 4, 2026 18:57
767dccd to
46cc14d
Compare
cschanhniem
added a commit
that referenced
this pull request
Jul 4, 2026
Eleven subpackages previously had empty __init__.py files, forcing every caller into module-level imports. This release populates each with a docstring, ordered re-exports of every non-underscore public function/class, and an __all__ list, satisfying the Phase 0 exit criterion: "from openamp_foundry.benchmark import ..." works cleanly. Subpackages now exposing a curated public surface (~120 names): benchmark, scoring, selection, features, evidence, data, qc, reports, generators, analysis, utils, gates. Internal fix: features.physchem deferred the boman import to function scope inside compute_features to break a circular import surfaced by the new scoring __init__. CI fix (pre-existing bug from v0.5.24 blocking PR #137): - tests/test_benchmark_gate.py: switched from `from scripts.benchmark_gate import ...` to importlib.util.spec_from_file_location. This avoids depending on whether scripts/ is on PYTHONPATH in a given environment (the editable install path does not add scripts/ automatically and pytest's pythonpath setting from pyproject.toml was not enough to make scripts/ importable as a top-level package). - pyproject.toml: added scripts/ to pytest's pythonpath as a belt-and- braces measure so future tests can use either import style. Tests: 7 new in tests/test_public_api_imports.py; 1682 pass total. The new test file locks in every __all__ entry as importable from the package root, guards against private (_-prefixed) name leakage, and regression-checks the Phase 0 exit criteria. Docs: CHANGELOG, ROADMAP v0.5.25, METRICS_CURRENT header, 50_LOOP_PLAN Loop 7 marked complete. No benchmark or behavioural number changed. This is a pure architectural-clarity release plus a CI-path fix. Tested: 1682 pass, 7 skip; ruff clean on all new files; public-API import test asserts every __all__ entry is reachable from package root; test_benchmark_gate now collects and passes locally and in CI. Confidence: high. The change is mechanical re-exports plus one targeted deferred import plus one robust test-import fix; all existing tests continue to pass and the new tests catch every documented public name. Constraint: macrel_local re-exports use the macrel_ prefix to avoid collisions with common names in other scoring modules. Co-authored-by: OmX <omx@oh-my-codex.dev>
cschanhniem
force-pushed
the
agent/oamp-loop-20260705-public-api
branch
from
July 4, 2026 19:01
46cc14d to
c521904
Compare
cschanhniem
added a commit
that referenced
this pull request
Jul 4, 2026
Eleven subpackages previously had empty __init__.py files, forcing every caller into module-level imports. This release populates each with a docstring, ordered re-exports of every non-underscore public function/class, and an __all__ list, satisfying the Phase 0 exit criterion: "from openamp_foundry.benchmark import ..." works cleanly. Subpackages now exposing a curated public surface (~120 names): benchmark, scoring, selection, features, evidence, data, qc, reports, generators, analysis, utils, gates. Internal fix: features.physchem deferred the boman import to function scope inside compute_features to break a circular import surfaced by the new scoring __init__. CI fix (pre-existing bug from v0.5.24 blocking PR #137): - tests/test_benchmark_gate.py: switched all `from scripts.benchmark_gate import ...` calls (module-level + inside test methods) to either importlib.util.spec_from_file_location at module scope or a test-internal reference to the already-loaded _benchmark_gate module. This avoids depending on whether scripts/ is on PYTHONPATH in a given environment (the editable install path does not add scripts/ automatically and pytest's pythonpath setting from pyproject.toml was not enough to make scripts/ importable as a top-level package). - pyproject.toml: added scripts/ to pytest's pythonpath as a belt-and- braces measure so future tests can use either import style. Tests: 7 new in tests/test_public_api_imports.py; 1682 pass total. The new test file locks in every __all__ entry as importable from the package root, guards against private (_-prefixed) name leakage, and regression-checks the Phase 0 exit criteria. Docs: CHANGELOG, ROADMAP v0.5.25, METRICS_CURRENT header, 50_LOOP_PLAN Loop 7 marked complete. No benchmark or behavioural number changed. This is a pure architectural-clarity release plus a CI-path fix. Tested: 1682 pass, 7 skip; ruff clean on all new files; public-API import test asserts every __all__ entry is reachable from package root; test_benchmark_gate now collects and passes locally and in CI. Confidence: high. The change is mechanical re-exports plus one targeted deferred import plus one robust test-import fix; all existing tests continue to pass and the new tests catch every documented public name. Constraint: macrel_local re-exports use the macrel_ prefix to avoid collisions with common names in other scoring modules. Co-authored-by: OmX <omx@oh-my-codex.dev>
cschanhniem
force-pushed
the
agent/oamp-loop-20260705-public-api
branch
from
July 4, 2026 19:06
c521904 to
bdcbece
Compare
Eleven subpackages previously had empty __init__.py files, forcing every caller into module-level imports. This release populates each with a docstring, ordered re-exports of every non-underscore public function/class, and an __all__ list, satisfying the Phase 0 exit criterion: "from openamp_foundry.benchmark import ..." works cleanly. Subpackages now exposing a curated public surface (~120 names): benchmark, scoring, selection, features, evidence, data, qc, reports, generators, analysis, utils, gates. Internal fix: features.physchem deferred the boman import to function scope inside compute_features to break a circular import surfaced by the new scoring __init__. CI fix (pre-existing bug from v0.5.24 blocking PR #137): - tests/test_benchmark_gate.py: switched all `from scripts.benchmark_gate import ...` calls (module-level + inside test methods) to either importlib.util.spec_from_file_location at module scope or a test-internal reference to the already-loaded _benchmark_gate module. This avoids depending on whether scripts/ is on PYTHONPATH in a given environment (the editable install path does not add scripts/ automatically and pytest's pythonpath setting from pyproject.toml was not enough to make scripts/ importable as a top-level package). - pyproject.toml: added scripts/ to pytest's pythonpath as a belt-and- braces measure so future tests can use either import style. Tests: 7 new in tests/test_public_api_imports.py; 1682 pass total. The new test file locks in every __all__ entry as importable from the package root, guards against private (_-prefixed) name leakage, and regression-checks the Phase 0 exit criteria. Docs: CHANGELOG, ROADMAP v0.5.25, METRICS_CURRENT header, 50_LOOP_PLAN Loop 7 marked complete. No benchmark or behavioural number changed. This is a pure architectural-clarity release plus a CI-path fix. Tested: 1682 pass, 7 skip; ruff clean on all new files; public-API import test asserts every __all__ entry is reachable from package root; test_benchmark_gate now collects and passes locally and in CI. Confidence: high. The change is mechanical re-exports plus one targeted deferred import plus one robust test-import fix; all existing tests continue to pass and the new tests catch every documented public name. Constraint: macrel_local re-exports use the macrel_ prefix to avoid collisions with common names in other scoring modules. Co-authored-by: OmX <omx@oh-my-codex.dev>
cschanhniem
force-pushed
the
agent/oamp-loop-20260705-public-api
branch
from
July 4, 2026 19:09
bdcbece to
4d95905
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Eleven subpackages previously had empty init.py files, forcing every caller into module-level imports. This release populates each with a docstring, ordered re-exports of every non-underscore public function/class, and an all list, satisfying the Phase 0 exit criterion:
What is in the box
Verification
Docs
Closes
Phase 0 Loop 7 from docs/50_LOOP_PLAN.md.