"""V1 worker I/O contracts. Strict-parse: every worker output (implementer / reviewer / estimator / conflict-resolver / summarizer) must conform to its ``*OutputV1`` schema. See :mod:`tools.controller.contracts.parse` for the strict-parse + retry-once helper. Why "V1": the ``output_version`` field is a required Literal["V1"] discriminator. Future schema bumps land as ``V2`` models alongside V1; workers declare which version they emit; controller routes parsing by declared version. Why no ``extra_context: dict[str, Any]``: that field would become the unstable surface every worker depends on. Add fields to V2 explicitly when needed. """ from .v1 import ( CIFailure, CIFailureFinding, CISummary, ConflictResolverInputV1, ConflictResolverOutputV1, EstimatorOutputV1, FailedAssertion, FileLocation, GateResult, ImplementerInputV1, ImplementerOutputV1, IssueImplementerOutputV1, PriorAttemptsBlock, Review, ReviewerInputV1, ReviewerOutputV1, SummarizerInputV1, SummarizerOutputV1, ) from .parse import ( ContractValidationError, strict_parse, strict_parse_with_retry, ) __all__ = [ # CI summary types "CIFailure", "CIFailureFinding", "CISummary", "FailedAssertion", "FileLocation", "GateResult", # Worker I/O — implementer "ImplementerInputV1", "ImplementerOutputV1", "IssueImplementerOutputV1", # Worker I/O — reviewer "ReviewerInputV1", "ReviewerOutputV1", "Review", # Worker I/O — estimator "EstimatorOutputV1", # Worker I/O — conflict resolver "ConflictResolverInputV1", "ConflictResolverOutputV1", # Worker I/O — summarizer "SummarizerInputV1", "SummarizerOutputV1", # Shared "PriorAttemptsBlock", # Parse helpers "ContractValidationError", "strict_parse", "strict_parse_with_retry", ]