feat(claimset): land claimset authority - #83
Merged
Conversation
Why: - the bounded ClaimSet branch starts from a completed EvidenceSet slice, so future-tense planning language and durable doc-policy gaps would misstate the current authority boundary - durable non-planning surfaces need script-owned enforcement against ephemeral delivery labels without leaving forbidden labels embedded in ordinary repo text What: - move completed EvidenceSet truth onto current-state, workspace-product, contract, planning, and changelog owner surfaces - add a docs-audit rule for durable non-planning surfaces and convert validator tests to synthetic forbidden-label construction - update architecture and migration docs so the remaining upstream slice is ClaimSet rather than pending EvidenceSet work Checks: - make pytest ARGS='tests/unit/test_docs_audit.py tests/unit/test_commit_message_validator.py tests/unit/test_pr_metadata_validator.py -q' - make docs-check - make naming-check - make docs-audit
Why: - the remaining bounded upstream slice needs typed claim, assessment, and storage kernels before Coinbase claim emission can land on an authoritative product path - later builder and normalization work needs stable ids, deterministic ordering, and filesystem contracts without widening the current bridge authority early What: - add the and packages with bounded enums, dataclasses, stable-id helpers, ordering helpers, payload helpers, and fingerprint support - add the claim-set repository port and filesystem implementation plus claim-set product path helpers - wire the claim-set repository into runtime composition and test support without changing normalization behavior yet Checks: - make pytest ARGS='tests/unit/domain/claim/test_models.py tests/unit/domain/assessment/test_models.py tests/unit/infrastructure/storage/test_claim_set_repository.py -q' - make quality ARGS='--fail-fast'
Why: - the bounded claim slice needs a Coinbase claim builder that turns selected evidence into authoritative claim-stage meaning before any normalization cutover happens - claim-stage blockers and advisory reviews must be captured on claim scopes while preserving the compatibility issue and review rows the current bridge still needs What: - add the Coinbase claim builder, claim-stage compatibility projection-field records, and a bounded filing beneficial-owner constant - map supported retail and statement evidence into accepted claim bundles and map unsupported selected rows or advisory notes into claim-stage assessment sidecars plus compatibility records - add Coinbase claim-builder and assessment-mapping tests covering the supported row families, blocked rows, replay, and ordering stability Checks: - make pytest ARGS='tests/unit/application/claim/test_coinbase_builder.py tests/unit/application/claim/test_assessment_mapping.py -q' - make quality ARGS='--fail-fast'
Why: - planner-enabled Coinbase normalization needed to switch bridge draft authority from selected adapter translation output to persisted ClaimSet products without changing downstream fact compilation yet - the normalization surface and workspace docs had to expose claim-set ids, product roots, and compatibility view ownership once that cutover landed What: - add ClaimSet compatibility projection helpers, wire Coinbase normalization to persist claim products and sidecars, then rebuild the bridge translation batch from ClaimSet outputs - extend normalization contracts and summaries with claim-set ids and refs, add claim-set integration and compatibility projection tests, and refresh Coinbase normalization goldens - update current-state and workspace docs so the live runtime now routes planner-enabled Coinbase authority through EvidenceSet and ClaimSet products Checks: - make audit-pr-review - make docs-check - make naming-check - make docs-audit - make quality - make pr-review-full
Why: - the claim builder and compatibility projection depended on fragile raw-file and id parsing assumptions, which could silently drop retail claims or drift from current normalization outputs on valid capture layouts What: - map selected retail evidence members by compatibility raw-file shape and fail fast when claim emission cannot map a selected draft back to evidence - derive projected source and raw-file values from evidence data and pass exact compatibility issue and review rows through the current normalization path - add nested-path, colon-containing source-label, and invariant regression tests for the claim builder and compatibility projector Checks: - make pytest ARGS='tests/unit/application/claim/test_coinbase_builder.py tests/unit/application/claim/test_compatibility_projection.py tests/unit/application/normalization/test_normalization_service.py -q' - make pyright ARGS='tests/unit/application/claim/test_compatibility_projection.py' - make pr-review
Why: - the branch still accepted impossible claim and assessment states and wrote claim-stage sidecars in incidental tuple order, which risked silent data loss and unstable persisted outputs - the architecture overview also drifted from the now-implemented ClaimSet runtime truth What: - require scope refs and claim temporal fields where serialization depends on them, and tighten the bounded ClaimSet field checks for activity, location, and valuation records - route claim-stage assessment writes through canonical payload helpers and add a focused regression test for deterministic sidecar ordering - align the architecture overview with the implemented ClaimSet authority slice and keep the deferred read-model wording in the exact repo-audited form Checks: - make pytest ARGS='tests/unit/domain/claim/test_models.py tests/unit/domain/assessment/test_models.py tests/unit/infrastructure/storage/test_claim_set_repository.py tests/unit/application/normalization/test_claim_set_integration.py -q' - make docs-audit - make pr-review
c-wri
marked this pull request as ready for review
April 20, 2026 13:48
c-wri
enabled auto-merge
April 20, 2026 13:49
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why:
What:
Checks:
Issue linkage:
Included checkpoints:
docs(claimset): retire merged evidence-set planning languagefeat(claimset): add claim and assessment kernelsfeat(claimset): build coinbase claim setsfeat(normalization): derive bridge outputs from claim setsfix(claimset): preserve compatibility projection parityfix(claimset): harden kernels and deterministic sidecars