Skip to content

feat!: unify typed scheme validation - #53

Open
claudewalden0 wants to merge 4 commits into
mainfrom
feat/typed-scheme-validation
Open

claudewalden0 wants to merge 4 commits into
mainfrom
feat/typed-scheme-validation

Conversation

@claudewalden0

@claudewalden0 claudewalden0 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • route pacs.008 scheme validation through the generated 001.13 model and a shared version-neutral facts boundary
  • retain explicit FedNow, SEPA, and CBPR+ policy evaluation while preserving raw envelope, size, and control-character findings
  • make generic CLI XML extraction command-private and remove the public scanner-based scheme path
  • reject malformed XML in the default CLI validation path and enforce actual FedNow and SEPA transaction cardinality
  • prevent nested supplementary transactions from suppressing later scheme value rules
  • restore SEPA restricted-Latin coverage for agent and ultimate-party names plus street and town fields
  • prepare all seven workspace crates for the coordinated 0.4.0 release

Breaking changes

  • removes the public mx20022_validate::schemes::xml_scan module
  • consolidates generated-model parse and required-field failures into SCHEME_PARSE for typed pacs.008.001.13 validation

Test plan

  • cargo fmt --all -- --check
  • cargo check --workspace --all-features
  • cargo clippy --workspace --all-features -- -D warnings
  • cargo test --workspace --all-features
  • RUSTDOCFLAGS='--cfg docsrs -Dwarnings' cargo doc --workspace --all-features --no-deps
  • real CLI: malformed XML without --scheme exits 1 with a parse diagnostic
  • real CLI: FedNow XML declaring one and carrying two transactions exits 1 with FEDNOW_SINGLE_TX
  • real CLI: an older FedNow message with nested supplementary CdtTrfTxInf still reports charge-bearer, currency, and amount-limit findings
  • SEPA typed and older-version paths reject actual multi-transaction counts and restricted characters in all restored fields

Route pacs.008 through zero-copy Document extraction and typed 001.13 validation while retaining version-neutral rules for older versions.

Preserve raw scheme findings, move XML extraction behind private CLI helpers, prepare workspace 0.4.0, and document the scheme-rule abstraction boundary.

BREAKING CHANGE: remove the public schemes::xml_scan module.
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.

2 participants