Add roadmap documents for the initial architecture
This commit is contained in:
108
docs/roadmap/2-framework-composition.md
Normal file
108
docs/roadmap/2-framework-composition.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# 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.
|
||||
|
||||
## Proposed Stages
|
||||
|
||||
### Stage 1: Input Adapter Registry
|
||||
|
||||
Add a registry for `InputAdapter` constructors or instances.
|
||||
|
||||
The registry should:
|
||||
|
||||
- reject empty keys;
|
||||
- reject duplicate registrations;
|
||||
- return clear errors for unknown keys;
|
||||
- avoid importing concrete adapter packages from core contracts.
|
||||
|
||||
### Stage 2: Extractor Registry
|
||||
|
||||
Add a registry for extractor constructors or instances.
|
||||
|
||||
The registry should:
|
||||
|
||||
- support stable extractor keys;
|
||||
- support repeated extractor instances if needed later;
|
||||
- return clear errors for unknown keys;
|
||||
- avoid domain-specific logic.
|
||||
|
||||
### Stage 3: Validator Decisions
|
||||
|
||||
Add validator decision types and cardinality checks.
|
||||
|
||||
Each validator should return exactly one decision for each candidate artifact it
|
||||
receives.
|
||||
|
||||
Decision fields should include:
|
||||
|
||||
- candidate index;
|
||||
- approved flag;
|
||||
- reason code;
|
||||
- message;
|
||||
- optional diagnostics path.
|
||||
|
||||
### Stage 4: Minimal Runner
|
||||
|
||||
Add a runner that can:
|
||||
|
||||
1. receive a `SourceDocument`;
|
||||
2. execute configured extractors;
|
||||
3. validate candidate artifacts;
|
||||
4. return approved and rejected artifacts.
|
||||
|
||||
Keep source chunking optional or stubbed at this checkpoint. The runner may
|
||||
operate on whole documents only until source-unit chunking is added later.
|
||||
|
||||
### Stage 5: Runner Tests With Fakes
|
||||
|
||||
Add tests with fake components that prove:
|
||||
|
||||
- registered fake extractors run in configured order;
|
||||
- validators filter candidates deterministically;
|
||||
- decision cardinality failures are surfaced;
|
||||
- approved and rejected artifacts are returned in stable order.
|
||||
|
||||
## 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?
|
||||
Reference in New Issue
Block a user