Reduce cyclomatic complexity to <=15 (regix cc_max) in the adapter
normalizers flagged by the health findings:
oql.py: normalize_spec + normalize_telemetry (CC 38/38)intent.py: normalize (CC 29)deta.py: normalize (CC 28)planfile.py: normalize (CC 19)sumd.py: extract_table_metric (CC 22)Approach: shared observation/evidence/value helpers extracted into
data2dsl_adapter_parts/common.py (observation_envelope,
evidence_entry, error_observation, unsupported_observation,
numeric_value, temperature_value, set_value) plus per-module
metric dispatch and evidence builders. Public signatures and the
observation/v0 envelope shape are unchanged.
src/data2dsl_batch.py (compare_batch CC 45, format_markdown_report
CC 21) is outside this ticket’s allowedPaths and remains for a
follow-up slice.
lizard -C 15 src/data2dsl_adapter_parts/ reports no warnings.python -m pytest -q passes (158 tests)../project/governance-check.sh GOV-PASS.common.py; refactored the five flagged
functions to table-driven dispatch + per-record evidence builders.SUMDAdapter.normalize verbatim (not flagged; kept as-is).