feat: publish PatchProof v0.1.0 #1
Workflow file for this run
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
| name: ci | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.11", "3.12"] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Compile package and scripts | |
| run: python -m compileall -q src tests skills | |
| - name: Run tests | |
| run: make test | |
| - name: Install build backend | |
| if: matrix.python-version == '3.12' | |
| run: python -m pip install "setuptools>=68" | |
| - name: Build wheel | |
| if: matrix.python-version == '3.12' | |
| run: python -m pip wheel . --no-deps --no-build-isolation --wheel-dir dist | |
| shadow-validation: | |
| runs-on: ubuntu-latest | |
| env: | |
| PATCHPROOF_IMAGE: python:3.12.10-slim@sha256:fd95fa221297a88e1cf49c55ec1828edd7c5a428187e67b5d1805692d11588db | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 | |
| with: | |
| python-version: "3.12" | |
| - name: Pull pinned validation image | |
| run: docker pull "$PATCHPROOF_IMAGE" | |
| - name: Run the real four-phase proof loop | |
| run: | | |
| run_dir="$(mktemp -d)" | |
| PYTHONPATH=src python -m patchproof propose \ | |
| --repo fixtures/calculator \ | |
| --diff fixtures/division-by-zero.diff \ | |
| --out "$run_dir/proposal.json" | |
| proposal_hash="$(python -c 'import json,sys; print(json.load(open(sys.argv[1]))["proposal_hash"])' "$run_dir/proposal.json")" | |
| PYTHONPATH=src python -m patchproof approve \ | |
| --proposal "$run_dir/proposal.json" \ | |
| --proposal-hash "$proposal_hash" \ | |
| --run-id ci-shadow \ | |
| --approved-by github-actions \ | |
| --out "$run_dir/approval.json" | |
| PYTHONPATH=src python -m patchproof validate \ | |
| --repo fixtures/calculator \ | |
| --proposal "$run_dir/proposal.json" \ | |
| --approval "$run_dir/approval.json" \ | |
| --reproduction-tests fixtures/reproduction \ | |
| --hidden-tests fixtures/hidden \ | |
| --audit-dir /tmp/patchproof-audit \ | |
| --docker-image "$PATCHPROOF_IMAGE" \ | |
| > "$run_dir/result.json" | |
| python -c 'import json,sys; result=json.load(open(sys.argv[1])); assert result["proof_grade"] is True' "$run_dir/result.json" | |
| - name: Upload proof artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: patchproof-shadow-validation | |
| path: /tmp/patchproof-audit/ | |
| if-no-files-found: error | |
| retention-days: 14 |