Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,18 @@ concurrency:
cancel-in-progress: true

jobs:
installed-examples:
published-examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Build and install MateProbe wheels outside the source tree
run: |
python -m pip install build
python -m build --wheel --outdir /tmp/mateprobe-wheels
python -m build --wheel packages/pytest-mateprobe --outdir /tmp/mateprobe-wheels
python -m pip install /tmp/mateprobe-wheels/*.whl -r requirements-integrations.txt
- name: Install the published MateProbe alpha from PyPI
run: >-
python -m pip install --index-url https://pypi.org/simple
mateprobe==0.1.0a4 pytest-mateprobe==0.1.0a4
-r requirements-integrations.txt
- run: python scripts/check_alpha_install.py --output /tmp/published-docs-evidence
- run: python scripts/check_launch_package.py --output /tmp/launch-evidence
- uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -87,7 +86,7 @@ jobs:

deploy:
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
needs: [build, installed-examples, historical-a2-trial, historical-a3-trial]
needs: [build, published-examples, historical-a2-trial, historical-a3-trial]
runs-on: ubuntu-latest
permissions:
pages: write
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,9 @@ See [choosing an evaluation method](docs/choosing-an-evaluator.md).

## Install the current alpha

Install the pinned alpha from PyPI with:
Both [mateprobe](https://pypi.org/project/mateprobe/0.1.0a4/) and
[pytest-mateprobe](https://pypi.org/project/pytest-mateprobe/0.1.0a4/) are published
and verified. Install the pinned alpha with:

```sh
python -m pip install mateprobe==0.1.0a4 pytest-mateprobe==0.1.0a4
Expand Down
231 changes: 231 additions & 0 deletions docs/pypi-a4-verification.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
{
"version": "0.1.0a4",
"source_commit": "e842d66faa5d2dd6d8cc9a7dd8abd7e31bc49078",
"status": "passed",
"files": [
{
"project": "mateprobe",
"filename": "mateprobe-0.1.0a4-py3-none-any.whl",
"sha256": "462419a35c7f3cdecfde6609748331aaaaf77aeaca7836bb2db89a01ea79f1ca",
"matches_release": true
},
{
"project": "mateprobe",
"filename": "mateprobe-0.1.0a4.tar.gz",
"sha256": "b7af4085f13cf96ebca572d844ff8fe1a68afacc5666783dc456a9ea16238924",
"matches_release": true
},
{
"project": "pytest-mateprobe",
"filename": "pytest_mateprobe-0.1.0a4-py3-none-any.whl",
"sha256": "7dfab82a48c27224c9e2b30f705530c9cde13dabb0891322ba772a5ca0cc1fef",
"matches_release": true
},
{
"project": "pytest-mateprobe",
"filename": "pytest_mateprobe-0.1.0a4.tar.gz",
"sha256": "4c57f2ed9e0385413681199e641e0a3b825d15a7f91e581bbb004a0a9b578746",
"matches_release": true
}
],
"installed_checks": {
"status": "passed",
"library_version": "0.1.0a4",
"policy_regression": {
"total": 3,
"counts": {
"detected": 2,
"preserved": 1
},
"eligible_faults": 2,
"detected_faults": 2,
"detection_score": 1.0,
"eligible_controls": 1,
"preserved_controls": 1,
"preservation_rate": 1.0,
"obligations": [
{
"id": "refund-policy",
"description": "Refunds must be USD and no greater than the limit.",
"scope": "contract",
"assessment": "no_failures_observed",
"has_known_gaps": false,
"has_incomplete_evidence": false,
"has_fault_tests": true,
"has_controls": true,
"has_exclusions": false,
"counts": {
"detected": 2,
"preserved": 1
},
"case_ids": [
"over-limit",
"unsupported-currency",
"at-limit-usd"
]
}
]
},
"checks": [
"installed paths and versions",
"consumer docs",
"CLI",
"pytest plugin",
"policy regression",
"refund demo",
"JSON Schema and Pydantic trials"
],
"scope": "Installed artifact checks; not independent adoption or semantic accuracy."
},
"consumer_checks": {
"status": "passed",
"versions": {
"mateprobe": "0.1.0a4",
"pytest-mateprobe": "0.1.0a4",
"pytest": "9.1.1",
"pydantic": "2.13.5"
},
"python": "3.12.13",
"markdown_tests": 2,
"recorded_evaluations": 4,
"examples": [
"examples/five_minute_demo.py",
"examples/mutation_audit.py",
"examples/pydantic_reply.py"
],
"cli": "passed",
"source_sha256": {
"docs/quickstart.md": "9f2dcc6487bdfb189d6b79229c7f5cf594c9c881a476d9325d0f79de3ffff661",
"docs/agent-guide.md": "2dc449d4ee6bd7bd5801574355b71bee1dcabf9f1856de35d98e9c1c80629b5b",
"examples/five_minute_demo.py": "63f17e361c7e75fba177a9c353fd43c86eb040c8c91db0e8e5192bf3e2cb65d5",
"examples/mutation_audit.py": "7d3dba138fceb7c7589f9fbfad4396bad42998292baa8e0759184b3e191a9dac",
"examples/pydantic_reply.py": "623e036801408d7144084bba9977beba66ca5967af92abe3401fe0f26fcfe692"
},
"scope": "Consumer example compatibility; not agent discovery or semantic accuracy."
},
"launch_checks": {
"status": "passed",
"versions": {
"mateprobe": "0.1.0a4",
"pytest-mateprobe": "0.1.0a4"
},
"python": "3.12.13",
"source_sha256": "66001adf0170f3deb038317dea4ee2471f505e74d7f2a1658e96ca776b57683a",
"corpus_digest": "04ab14ea8030e5082a4db05179573481f10d9a3691155d305ce67f95de2d815a",
"before": {
"total": 4,
"counts": {
"preserved": 1,
"survived": 3
},
"eligible_faults": 3,
"detected_faults": 0,
"detection_score": 0.0,
"eligible_controls": 1,
"preserved_controls": 1,
"preservation_rate": 1.0,
"obligations": [
{
"id": "completion",
"description": "A completion claim needs a completed receipt for this request.",
"scope": "contract",
"assessment": "known_gaps",
"has_known_gaps": true,
"has_incomplete_evidence": false,
"has_fault_tests": true,
"has_controls": true,
"has_exclusions": false,
"counts": {
"preserved": 1,
"survived": 2
},
"case_ids": [
"missing-receipt",
"wrong-request",
"honest-pending"
]
},
{
"id": "prose",
"description": "The prose must agree with the evidence.",
"scope": "challenge",
"assessment": "known_gaps",
"has_known_gaps": true,
"has_incomplete_evidence": false,
"has_fault_tests": true,
"has_controls": false,
"has_exclusions": false,
"counts": {
"survived": 1
},
"case_ids": [
"prose-only"
]
}
]
},
"after": {
"total": 4,
"counts": {
"detected": 2,
"preserved": 1,
"survived": 1
},
"eligible_faults": 3,
"detected_faults": 2,
"detection_score": 0.6666666666666666,
"eligible_controls": 1,
"preserved_controls": 1,
"preservation_rate": 1.0,
"obligations": [
{
"id": "completion",
"description": "A completion claim needs a completed receipt for this request.",
"scope": "contract",
"assessment": "no_failures_observed",
"has_known_gaps": false,
"has_incomplete_evidence": false,
"has_fault_tests": true,
"has_controls": true,
"has_exclusions": false,
"counts": {
"detected": 2,
"preserved": 1
},
"case_ids": [
"missing-receipt",
"wrong-request",
"honest-pending"
]
},
{
"id": "prose",
"description": "The prose must agree with the evidence.",
"scope": "challenge",
"assessment": "known_gaps",
"has_known_gaps": true,
"has_incomplete_evidence": false,
"has_fault_tests": true,
"has_controls": false,
"has_exclusions": false,
"counts": {
"survived": 1
},
"case_ids": [
"prose-only"
]
}
]
},
"pytest_checks": {
"fixed": "passed",
"removed_fix": "failed as expected; JSON retained",
"reject_all": "failed as expected; JSON retained"
},
"scope": "Authored demo compatibility and regression behavior, not independent adoption."
},
"publication_runs": {
"core": "https://github.com/Mate4b/mateprobe/actions/runs/36640476132",
"plugin": "https://github.com/Mate4b/mateprobe/actions/runs/36640621431"
}
}
20 changes: 17 additions & 3 deletions docs/pypi-publishing.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,23 @@ The project is now **MateProbe by Mate4B**. The renamed distributions are
The [GitHub alpha release](https://github.com/Mate4b/mateprobe/releases/tag/v0.1.0a4)
contains wheels and source distributions built from commit
`e842d66faa5d2dd6d8cc9a7dd8abd7e31bc49078`. The [artifact manifest](../scripts/release-a4.json)
pins their SHA-256 hashes. Publication under the new PyPI names is pending;
use the release wheels in the meantime. The historical verification records below
apply to their original distributions.
pins their SHA-256 hashes. Both packages are published on PyPI:
[mateprobe](https://pypi.org/project/mateprobe/0.1.0a4/) and
[pytest-mateprobe](https://pypi.org/project/pytest-mateprobe/0.1.0a4/).

```sh
python -m pip install mateprobe==0.1.0a4 pytest-mateprobe==0.1.0a4
```

All four downloaded PyPI wheel/sdist hashes match the GitHub release. A clean
Python 3.12 environment installed both packages from PyPI and passed the consumer
docs, CLI, pytest, policy-regression, integration and launch checks. Removing the
demo fix and rejecting every input both fail while retaining their JSON reports.
See [machine-readable verification](pypi-a4-verification.json),
[core publication](https://github.com/Mate4b/mateprobe/actions/runs/36640476132) and
[plugin publication](https://github.com/Mate4b/mateprobe/actions/runs/36640621431).

The historical verification records below apply to their original distributions.


## Historical release: Narrative Contracts 0.1.0a3
Expand Down
2 changes: 1 addition & 1 deletion docs/validator-audit.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Audit your existing validator

Requires `mateprobe==0.1.0a4`. These APIs are not available in a2.
After publication, install the core and optional pytest plugin from PyPI; see the
Install the core and optional pytest plugin from PyPI; see the
[migration guide](migration-mateprobe.md). An editable checkout is only needed for development.

Use `audit_validator` when you already have a validator and want to test its
Expand Down
Loading