Skip to content

feat(claimset): land claimset authority - #83

Merged
c-wri merged 6 commits into
mainfrom
feat/claimset-authority
Apr 20, 2026
Merged

feat(claimset): land claimset authority#83
c-wri merged 6 commits into
mainfrom
feat/claimset-authority

Conversation

@c-wri

@c-wri c-wri commented Apr 20, 2026

Copy link
Copy Markdown
Collaborator

Why:

  • the bounded ClaimSet slice needed to become the authority for evidence-local Coinbase meaning without pulling EconomicFacts, ReconciliationState, or later-stage work into this branch
  • completed EvidenceSet work needed to move out of future-tense planning surfaces while durable docs and delivery metadata stayed phase-free
  • the hardening loop found projection-parity, kernel-validation, and deterministic-persistence risks that needed repair before review handoff

What:

  • retire merged EvidenceSet planning language and tighten durable doc auditing around ephemeral delivery labels on non-planning surfaces
  • add ClaimSet and claim-stage assessment kernels, storage, Coinbase claim emission, compatibility projection, and normalization wiring for the bounded slice
  • harden compatibility projection parity, ClaimSet and assessment record validation, and deterministic assessment sidecar writes

Checks:

  • make audit-pr-review
  • make docs-check
  • make naming-check
  • make docs-audit
  • make quality
  • make pr-review-full

Issue linkage:

  • None: no existing open issue tracks the bounded ClaimSet authority slice or the red-team hardening fixes that landed in this branch

Included checkpoints:

  • docs(claimset): retire merged evidence-set planning language
  • feat(claimset): add claim and assessment kernels
  • feat(claimset): build coinbase claim sets
  • feat(normalization): derive bridge outputs from claim sets
  • fix(claimset): preserve compatibility projection parity
  • fix(claimset): harden kernels and deterministic sidecars

c-wri added 6 commits April 19, 2026 21:18
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
c-wri marked this pull request as ready for review April 20, 2026 13:48
@c-wri
c-wri enabled auto-merge April 20, 2026 13:49
@c-wri
c-wri merged commit cccb880 into main Apr 20, 2026
42 of 56 checks passed
@c-wri
c-wri deleted the feat/claimset-authority branch April 20, 2026 13:51
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