Skip to content

Add mp-300k artifact gates#18

Merged
MaxGhenis merged 5 commits into
mainfrom
codex/mp-300k-release-loop
May 28, 2026
Merged

Add mp-300k artifact gates#18
MaxGhenis merged 5 commits into
mainfrom
codex/mp-300k-release-loop

Conversation

@MaxGhenis
Copy link
Copy Markdown
Contributor

@MaxGhenis MaxGhenis commented May 27, 2026

Summary

  • add a persistent mp-300k artifact-gate CLI that writes mp300k_artifact_gates.json
  • gate candidate existence, PolicyEngine H5 compatibility, artifact size, runtime smoke, eCPS comparison, and frozen benchmark-manifest evidence
  • add microplex-us-package-mp300k-gate-inputs so producer jobs can package artifact.tar.gz plus evidence JSONs as one Actions artifact
  • update the reusable GitHub Actions workflow to consume either URL inputs or a packaged gate_inputs_artifact

Producer handoff

A candidate-producing job can now do:

- run: |
    uv run microplex-us-package-mp300k-gate-inputs       --artifact-dir "$ARTIFACT_DIR"       --ecps-comparison-json "$ECPS_COMPARISON_JSON"       --runtime-smoke-json "$RUNTIME_SMOKE_JSON"       --benchmark-manifest "$BENCHMARK_MANIFEST_JSON"       --output-dir gate-inputs
- uses: actions/upload-artifact@v4
  with:
    name: mp300k-gate-inputs
    path: gate-inputs

Then call this workflow with:

uses: ./.github/workflows/mp300k-artifact-gates.yml
with:
  gate_inputs_artifact: mp300k-gate-inputs

Local artifact run

Ran the new package command on small-asec-acs40k-bea-lsr-v1 using its real L0 candidate H5, existing PE-native broad-loss scores, and runtime smoke evidence. Then extracted the generated /tmp/mp300k_gate_inputs_small_asec_acs40k/artifact.tar.gz and ran artifact gates from the packaged archive.

The packaged handoff report is at /tmp/mp300k_gate_inputs_small_asec_acs40k/mp300k_artifact_gates.json and correctly fails the candidate on artifact size, runtime smoke, and eCPS comparison while passing artifact existence and structural compatibility.

Key local result:

  • compatibility: pass, packaged candidate H5 found under the extracted archive
  • artifact size: fail, 2.0002x eCPS versus 2.0x threshold
  • runtime smoke: fail, 105.5x eCPS on entity-table loader smoke
  • eCPS comparison: fail, candidate broad loss 10.15 versus eCPS 0.17
  • benchmark manifest: unmeasured

Checks

  • uv run --python 3.13 --extra dev python -m pytest tests/pipelines/test_mp300k_artifact_gates.py tests/pipelines/test_mp300k_gate_inputs.py
  • uv run --python 3.13 --extra dev --with pydantic --with-editable ../microplex pytest -q tests/pipelines/test_mp300k_artifact_gates.py tests/pipelines/test_mp300k_gate_inputs.py
  • uv run --python 3.13 --extra dev ruff check pyproject.toml src/microplex_us/pipelines/mp300k_artifact_gates.py src/microplex_us/pipelines/mp300k_gate_inputs.py tests/pipelines/test_mp300k_artifact_gates.py tests/pipelines/test_mp300k_gate_inputs.py
  • uv run --python 3.13 --extra dev ruff format --check src/microplex_us/pipelines/mp300k_artifact_gates.py src/microplex_us/pipelines/mp300k_gate_inputs.py tests/pipelines/test_mp300k_artifact_gates.py tests/pipelines/test_mp300k_gate_inputs.py
  • git diff --check
  • workflow YAML parsed with Ruby YAML

Notes

uv lock --check --python 3.13 still wants to update the editable sibling ../microplex from v0.1.0 to v0.2.0. This PR keeps uv.lock scoped to the new direct h5py dependency instead of accepting unrelated local editable metadata churn.

@MaxGhenis MaxGhenis marked this pull request as ready for review May 28, 2026 07:44
@MaxGhenis MaxGhenis merged commit 9da1ab4 into main May 28, 2026
3 checks passed
@MaxGhenis MaxGhenis deleted the codex/mp-300k-release-loop branch May 28, 2026 07:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant