Skip to content

feat(cmpc): closure-predicate evaluator + bilateral type profile (PR 3 of 6)#30

Open
eriknewton wants to merge 1 commit into
mainfrom
feat/cmpc-stage3-closure-predicate-evaluator-2026-05-18
Open

feat(cmpc): closure-predicate evaluator + bilateral type profile (PR 3 of 6)#30
eriknewton wants to merge 1 commit into
mainfrom
feat/cmpc-stage3-closure-predicate-evaluator-2026-05-18

Conversation

@eriknewton

Copy link
Copy Markdown
Owner

PR 3 of 6 CMPC Stage 3 bilateral. Closes design doc Primitive 3.\n\nDependency note: PR #29 is still open, so this PR is based on feat/cmpc-stage3-chain-session-state-machine-2026-05-18 rather than main. Retarget to main after PR #29 lands if needed.\n\nChecks run:\n- .venv/bin/pytest tests/cmpc/test_closure_predicate.py -v: 19 passed\n- .venv/bin/mypy concordia/cmpc: success, no issues found in 8 source files\n- .venv/bin/pytest -q: 1168 passed\n\nNext: PR 4 (atomic activation + unwind).

Base automatically changed from feat/cmpc-stage3-chain-session-state-machine-2026-05-18 to main May 19, 2026 02:37
…3 of 6)

PR 3 of the 6-PR CMPC Stage 3 bilateral campaign. Builds on PR #29 state machine.

- concordia/cmpc/predicate.py: ClosurePredicate, PredicateResult, evaluate_predicate
- Boolean composition: and/or/not
- Comparison: ==, !=, >=, <=, >, <
- Set membership: in
- Time comparison: before/after on ISO 8601 strings
- Aggregation: sum, min, max, count over all chain commitments
- Bilateral type profile registered: urn:concordia:predicate-type:bilateral_chain_closure:v1
- Profile evaluator: expected_participants subset check + aggregate quantity within tolerance + timing pre-deadline + optional mandate-proof presence
- Fixture matrix covers Boolean + comparison + aggregation + bilateral-profile happy + 4 failure modes
- pytest 1168 + mypy clean within baseline

v0.7.0a0 track preserved; no PyPI publish.

Design doc: Review/Concordia/CMPC_Stage_3_Bilateral_Beer_Game_Design_Doc_2026-05-16.md
@eriknewton eriknewton force-pushed the feat/cmpc-stage3-closure-predicate-evaluator-2026-05-18 branch from 1107ac2 to 35f06ae Compare May 19, 2026 02:54
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