# Checkpoint 2: Framework Composition ## Status This document describes planned work, not implemented behavior. ## Goal Prove the core contracts compose before adding real adapters, real extractors, or portable Audita infrastructure. This checkpoint should produce a minimal runner that can execute fake registered components from source input to artifact output in tests. ## Scope In scope: - input adapter registry; - extractor registry; - validator decision model; - decision-cardinality checks; - minimal runner; - fake-component runner tests. Out of scope: - real input parsing; - real LLM calls; - prompt assets; - response schema assets; - diagnostics run directory; - real D&D artifact schemas. ## Target End State The repository should contain a minimal framework composition layer: - `internal/framework/inputregistry` registers and builds input adapter constructors by stable key. - `internal/framework/extractorregistry` registers and builds extractor constructors by stable key. - `internal/framework/validators` provides shared validator decision helpers and cardinality checks. - `internal/framework/runner` executes configured extractors against a `SourceDocument`, applies validator chains, and returns approved and rejected artifacts. The runner should operate on already parsed source documents in this checkpoint. Raw input parsing and concrete input adapter behavior remain deferred to the Seriatim adapter checkpoint. Implementation staging belongs in [`implementation.md`](implementation.md). ## Done Criteria - `go test ./...` passes. - Fake adapter/extractor/validator registrations work in tests. - The runner operates on `SourceDocument`, not transcript-specific structures. - The runner does not import concrete D&D extractor packages. ## Review Questions - Does the runner know only about sources, extractors, validators, and artifacts? - Are registries simple enough to evolve? - Are validation decisions expressive enough for deterministic and LLM-backed validators? - Is any domain-specific behavior creeping into framework packages?