Skip to content

refactor: decompose Ultra receipt validator semantics #11

Description

@hummbl-dev

Context

PR #10 introduces the stdlib-only ultra_evaluation_receipt.v0.1 schema validator. Independent review and mutation tests found and fixed several semantic gaps before promotion, but Arbiter still reports two concentrated complexity hotspots:

  • tools/validate_ultra_evaluation_receipt.py::_validate_schema_subset — cyclomatic complexity 58
  • tools/validate_ultra_evaluation_receipt.py::_validate_receipt_semantics — cyclomatic complexity 58

This is accepted decomposition debt for the initial v0.1 packet, not a security finding. Bandit and Semgrep report zero findings, and the current branch has 72 tests plus 89 subtests passing on Python 3.11 and 3.13.

Acceptance criteria

  • Split schema-keyword validation into focused helpers without changing supported Draft 2020-12 behavior.
  • Split receipt cross-field rules by domain: model/delegation, telemetry, duplication/synthesis, timing, outcome, and routing.
  • Preserve deterministic, sorted JSON-path error messages.
  • Preserve all valid/invalid fixture outcomes and add direct helper tests where useful.
  • Raise receipt-validator branch coverage to at least 80%.
  • Keep runtime dependencies at zero.
  • Run Ruff, mypy, Bandit, Semgrep, and the complete local test suite.
  • Do not use GitHub Actions while organizational Actions minutes remain exhausted.

Scope boundary

Do not change the v0.1 schema contract or route policy as part of the mechanical decomposition. Any contract change requires a separate versioned proposal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions