feat(contract): add routing + normalization operationIds (ADR-027) #118

Merged
admin merged 1 commits from feat/contract-routing-normalization-operationids-20260926 into main 2026-09-26 11:19:44 +00:00
1 Commits
Author SHA1 Message Date
adminandClaude Sonnet 5 2ddb21e568 feat(contract): add routing + normalization operationIds per ADR-027
CI (SIAX Cloud) / integration (push) Skipped
masterplan-lock / check (push) Successful in 9s
CI (SIAX Cloud) / security (push) Successful in 21s
masterplan-lock / check (pull_request) Successful in 8s
Security Scan (SIAX Cloud) / security (push) Successful in 29s
CI (SIAX Cloud) / security (pull_request) Successful in 18s
CI (SIAX Cloud) / quality (push) Successful in 47s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 39s
CI (SIAX Cloud) / quality (pull_request) Successful in 45s
CI (SIAX Cloud) / integration (pull_request) Successful in 1m4s
0pt.structure.* registered 5 of ADR-027's 7 areas yesterday (cl0ud
PR#270, grounded at this repo's main@ec48774): entity resolution,
lineage, quality (x4) and parsing-orchestration. routing and
normalization were left out because this repo's own contract had no
operationId/path for either yet, even though both have real,
INTEGRATION_TESTED code in sax3l/0pt-motor
(motor/parsing/routing.py, motor/normalization/{amounts,identifiers}.py)
that is simply not deployed behind an HTTP route.

Adds the two target-status operationIds, following the exact pattern
of 0pt.resolve_entities / 0pt.get_provenance already in this file
(TARGET summary prefix, x-siax-status: target, security: [], dedicated
request/response schemas):

- POST /v1/0pt/parsing/route -> 0pt.route_parsing
  (BTI-DOC-02/03/04/05 parser-routing / selective-OCR decision)
- POST /v1/0pt/normalize -> 0pt.normalize_value
  (BTI-NLP-02/03 amount/percent/date normalization + identifier
  checksum validation, one operationId per ADR-027's "normalization"
  being a single area)

Contract-only change; no route handler exists yet (correctly reflected
by x-siax-status: target). Registering these in cl0ud's capability
registry is deliberately deferred to a follow-up PR in that repo.

projections is NOT touched here -- no code exists anywhere for it, so
it stays unregistered rather than becoming an empty stub.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 13:17:58 +02:00