mintmark 0.3.0__tar.gz → 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mintmark-0.3.0 → mintmark-0.3.2}/CHANGELOG.md +26 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/PKG-INFO +3 -3
- {mintmark-0.3.0 → mintmark-0.3.2}/README.md +2 -2
- {mintmark-0.3.0 → mintmark-0.3.2}/pyproject.toml +1 -1
- {mintmark-0.3.0 → mintmark-0.3.2}/schemas/manifest.schema.json +2 -2
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/version.py +1 -1
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/test_numeric_resource_limits.py +22 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_workflows.py +11 -1
- {mintmark-0.3.0 → mintmark-0.3.2}/.gitignore +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/LICENSE +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/NOTICE +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/brand/mintmark-logo.png +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/brand/mintmark-logo.svg +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/denylist/institutions-tr.txt +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/readme/family-topology.png +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/readme/family-topology.svg +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/readme/mint-pipeline.png +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/readme/mint-pipeline.svg +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/tables/CHECKSUMS +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/tables/balances.json +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/assets/tables/txn_amounts.json +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/packs/example/README.md +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/packs/example/fields/customer.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/packs/example/fields/transaction.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/packs/example/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/packs/example/recipes/demo.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/packs/example/templates/txn_descriptions/set.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/schemas/pack.schema.json +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/annotate/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/annotate/render.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/annotate/sidecar.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/annotate/spans.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/annotate/taxonomy.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/api.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/cli.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/emit/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/emit/canonical.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/emit/csv_writer.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/emit/writer.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/draws.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/fold.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/prng.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/records.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/streams.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/tables.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/engine/templates.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/email.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/iban.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/pan.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/phone.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/policy.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/tckn.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/identifiers/vkn.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/data/given_names_tr.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/data/occupations_tr.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/data/provinces_tr.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/data/special_descriptors.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/data/street_parts_tr.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/data/surnames_tr.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/lexicons/denylist.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/manifest/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/manifest/document.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/manifest/io.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/manifest/safety.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/manifest/sums.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/manifest/verify.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/mint.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/packs/__init__.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/packs/digest.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/packs/loader.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/packs/model.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/packs/semver.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/src/mintmark/py.typed +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/alias/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/anchor/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/bad-name-pattern/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/duplicate-key/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/empty-file/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/float-weight/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/merge-key/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/missing-schema-version/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/multiple-documents/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/non-mapping-root/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/open-ended-requires-core/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/tab-indentation/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/unknown-field/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/valid/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/wrong-locale/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/test_pack_rejection.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/test_tamper_detection.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/test_template_grammar.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/account.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/card.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/complaint_ticket.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/customer.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/kyc_note.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/support_transcript.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/fields/transaction.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/lexicons/ratings.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/pack.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/recipes/full.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/templates/complaints/set.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/templates/kyc_notes/set.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/pack/templates/transcripts/set.yaml +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conformance/test_contract_coverage.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/conftest.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/golden/demo-run/DIGESTS.json +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/golden/demo-run/customer.jsonl +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/golden/demo-run/transaction.jsonl +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/golden/demo-run/transaction.labels.jsonl +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/golden/prng_vectors.json +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/golden/test_golden_bytes.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/property/test_draws.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/property/test_fold_and_email.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/property/test_records.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/property/test_render.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/property/test_safe_mode_purity.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/property/test_span_alignment.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_canary.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_cli.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_community_mirrors.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_declared_controls.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_denylist.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_emit.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_mint_invariants.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_module_boundaries.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_no_libm.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_pack_digest.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_packaging.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_prng.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_prose_lint.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_readme_mirror.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_repository_inventory.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_special_descriptors.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_streams.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_tables.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_taxonomy.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tests/unit/test_toolchain.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tools/canary.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tools/gen_tables.py +0 -0
- {mintmark-0.3.0 → mintmark-0.3.2}/tools/mdlint.py +0 -0
|
@@ -11,6 +11,32 @@ output for a fixed set of inputs. A change that alters emitted bytes for a fixed
|
|
|
11
11
|
seed is a major version event even when no signature changed, because it breaks
|
|
12
12
|
the reproducibility of every published manifest.
|
|
13
13
|
|
|
14
|
+
## 0.3.2 - 2026-08-23
|
|
15
|
+
|
|
16
|
+
### Security
|
|
17
|
+
|
|
18
|
+
- Release checksums and GitHub build-provenance attestations now cover the
|
|
19
|
+
CycloneDX SBOM alongside the wheel and source distribution.
|
|
20
|
+
- Artifact upload and download steps use immutable, Node 24-compatible action
|
|
21
|
+
revisions.
|
|
22
|
+
|
|
23
|
+
Generated record and label files do not change for the same inputs. Manifests
|
|
24
|
+
record the patch engine version.
|
|
25
|
+
|
|
26
|
+
## 0.3.1 - 2026-08-23
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- The manifest schema now uses the same 1,000,000-record per-type budget as pack
|
|
31
|
+
loading, minting, and streaming verification. The stale 50,000-record schema
|
|
32
|
+
ceiling made the published HR and banking reference shapes producible but
|
|
33
|
+
unverifiable.
|
|
34
|
+
- A regression test exercises the legitimate upper boundary and confirms that
|
|
35
|
+
1,000,001 records remain rejected.
|
|
36
|
+
|
|
37
|
+
Generated record and label files do not change for the same inputs. Manifests
|
|
38
|
+
record the patch engine version.
|
|
39
|
+
|
|
14
40
|
## 0.3.0 - 2026-08-23
|
|
15
41
|
|
|
16
42
|
### Security
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mintmark
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Deterministic, fully synthetic, Turkish-first labeled datasets with a provenance manifest.
|
|
5
5
|
Author: Mintmark contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -33,9 +33,9 @@ Description-Content-Type: text/markdown
|
|
|
33
33
|
|
|
34
34
|
<p align="center">
|
|
35
35
|
<a href="https://github.com/lokomotifai/mintmark/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/lokomotifai/mintmark/ci.yml?branch=main&style=flat-square&label=CI"></a>
|
|
36
|
-
<img alt="
|
|
36
|
+
<img alt="926 tests" src="https://img.shields.io/badge/tests-926-3C873A?style=flat-square">
|
|
37
37
|
<img alt="18 invariants, each with a named test" src="https://img.shields.io/badge/invariants-18%20tested-3C873A?style=flat-square">
|
|
38
|
-
<a href="https://github.com/lokomotifai/mintmark/releases/tag/v0.3.
|
|
38
|
+
<a href="https://github.com/lokomotifai/mintmark/releases/tag/v0.3.2"><img alt="Release v0.3.2" src="https://img.shields.io/badge/release-v0.3.2-3C873A?style=flat-square"></a>
|
|
39
39
|
<a href="https://pypi.org/project/mintmark/"><img alt="On PyPI" src="https://img.shields.io/pypi/v/mintmark?style=flat-square&label=PyPI&color=3C873A"></a>
|
|
40
40
|
<a href="LICENSE"><img alt="Apache-2.0 license" src="https://img.shields.io/badge/license-Apache--2.0-3B3F46?style=flat-square"></a>
|
|
41
41
|
</p>
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
15
15
|
<a href="https://github.com/lokomotifai/mintmark/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/lokomotifai/mintmark/ci.yml?branch=main&style=flat-square&label=CI"></a>
|
|
16
|
-
<img alt="
|
|
16
|
+
<img alt="926 tests" src="https://img.shields.io/badge/tests-926-3C873A?style=flat-square">
|
|
17
17
|
<img alt="18 invariants, each with a named test" src="https://img.shields.io/badge/invariants-18%20tested-3C873A?style=flat-square">
|
|
18
|
-
<a href="https://github.com/lokomotifai/mintmark/releases/tag/v0.3.
|
|
18
|
+
<a href="https://github.com/lokomotifai/mintmark/releases/tag/v0.3.2"><img alt="Release v0.3.2" src="https://img.shields.io/badge/release-v0.3.2-3C873A?style=flat-square"></a>
|
|
19
19
|
<a href="https://pypi.org/project/mintmark/"><img alt="On PyPI" src="https://img.shields.io/pypi/v/mintmark?style=flat-square&label=PyPI&color=3C873A"></a>
|
|
20
20
|
<a href="LICENSE"><img alt="Apache-2.0 license" src="https://img.shields.io/badge/license-Apache--2.0-3B3F46?style=flat-square"></a>
|
|
21
21
|
</p>
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mintmark"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.2"
|
|
8
8
|
description = "Deterministic, fully synthetic, Turkish-first labeled datasets with a provenance manifest."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12,<3.13"
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"additionalProperties": {
|
|
87
87
|
"type": "integer",
|
|
88
88
|
"minimum": 0,
|
|
89
|
-
"maximum":
|
|
89
|
+
"maximum": 1000000
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
92
|
"date_window": {
|
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
"additionalProperties": {
|
|
232
232
|
"type": "integer",
|
|
233
233
|
"minimum": 0,
|
|
234
|
-
"maximum":
|
|
234
|
+
"maximum": 1000000
|
|
235
235
|
}
|
|
236
236
|
},
|
|
237
237
|
"distributions": {
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import json
|
|
5
6
|
import shutil
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
|
|
9
|
+
import jsonschema
|
|
8
10
|
import pytest
|
|
9
11
|
import yaml
|
|
10
12
|
|
|
@@ -95,6 +97,26 @@ def test_recipe_record_count_is_bounded(tmp_path: Path) -> None:
|
|
|
95
97
|
load_pack(pack)
|
|
96
98
|
|
|
97
99
|
|
|
100
|
+
def test_manifest_schema_uses_the_pack_record_count_budget(tmp_path: Path) -> None:
|
|
101
|
+
out = tmp_path / "manifest-budget"
|
|
102
|
+
mint(pack=CONFORMANCE, recipe="full", seed=1, out=out, invocation="pytest")
|
|
103
|
+
document = json.loads((out / "MINTMARK.json").read_text(encoding="utf-8"))
|
|
104
|
+
schema = json.loads(
|
|
105
|
+
(Path(__file__).resolve().parents[2] / "schemas" / "manifest.schema.json").read_text(
|
|
106
|
+
encoding="utf-8"
|
|
107
|
+
)
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
document["recipe"]["parameters"]["records"]["transaction"] = MAX_RECORDS_PER_TYPE
|
|
111
|
+
document["stats"]["record_counts"]["transaction"] = MAX_RECORDS_PER_TYPE
|
|
112
|
+
jsonschema.validate(document, schema)
|
|
113
|
+
|
|
114
|
+
document["recipe"]["parameters"]["records"]["transaction"] = MAX_RECORDS_PER_TYPE + 1
|
|
115
|
+
document["stats"]["record_counts"]["transaction"] = MAX_RECORDS_PER_TYPE + 1
|
|
116
|
+
with pytest.raises(jsonschema.ValidationError):
|
|
117
|
+
jsonschema.validate(document, schema)
|
|
118
|
+
|
|
119
|
+
|
|
98
120
|
def test_runtime_record_override_uses_the_same_budget(tmp_path: Path) -> None:
|
|
99
121
|
out = tmp_path / "out"
|
|
100
122
|
with pytest.raises(MintError, match="record-count-limit"):
|
|
@@ -171,8 +171,14 @@ def test_release_scans_and_seals_the_exact_built_artifacts_before_oidc() -> None
|
|
|
171
171
|
assert "uv build --no-build-isolation" in build_text
|
|
172
172
|
assert "uv export --locked --no-dev --no-emit-project" in build_text
|
|
173
173
|
assert "tools/canary.py dist/" in build_text
|
|
174
|
-
assert "sha256sum mintmark-*.whl mintmark-*.tar.gz" in build_text
|
|
174
|
+
assert "sha256sum mintmark-*.whl mintmark-*.tar.gz sbom.json" in build_text
|
|
175
175
|
assert "sha256sum -c SHA256SUMS" in publish_text
|
|
176
|
+
attestation = next(
|
|
177
|
+
step
|
|
178
|
+
for step in publish_steps
|
|
179
|
+
if step.get("uses", "").startswith("actions/attest-build-provenance@")
|
|
180
|
+
)
|
|
181
|
+
assert "dist/sbom.json" in attestation["with"]["subject-path"]
|
|
176
182
|
publisher = next(
|
|
177
183
|
step
|
|
178
184
|
for step in publish_steps
|
|
@@ -180,5 +186,9 @@ def test_release_scans_and_seals_the_exact_built_artifacts_before_oidc() -> None
|
|
|
180
186
|
)
|
|
181
187
|
assert publisher["uses"].startswith("pypa/gh-action-pypi-publish@")
|
|
182
188
|
assert publisher["with"]["verify-metadata"] is True
|
|
189
|
+
github_release = next(
|
|
190
|
+
step for step in publish_steps if "gh release create" in step.get("run", "")
|
|
191
|
+
)
|
|
192
|
+
assert github_release["env"]["GH_REPO"] == "${{ github.repository }}"
|
|
183
193
|
canary = next(step for step in build_steps if "MINTMARK_CANARY" in step.get("env", {}))
|
|
184
194
|
assert "refs/tags/v" in canary.get("if", "")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mintmark-0.3.0 → mintmark-0.3.2}/tests/adversarial/packs/open-ended-requires-core/pack.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|