ADR 001: MVP Scope
Status: Accepted Date: 2024-12-27
Context
Colin is an ambitious project with many potential features. We need to define a minimal viable product that validates the core value proposition without overbuilding.
Decision
In MVP
ref()for local.colinfiles, returning structuredRefResult{% llm %}block with optionalidparameter (stub implementation)| extract()filter with optionalidparameter (stub implementation)- LLM call caching (auto ID + manual ID support)
- JSON manifest with Pydantic models
- Change detection via source hashing
- Topological compilation order (DAG)
colin compilecommand- Output to
dist/directory as markdown
Out of MVP
- MCP integration (
mcp()function,mcp_tool()) - Remote
colin://refs {% pin %}blocks (complex LLM reliability)- Watch mode (
colin watch) - Skills output format
compiled.previous(whole document's prior output)| summarize(),| translate()filters| new(),| changed(),| diff()filters- Actual LLM calls (stub only)
- Parallelization of LLM calls within a document
colin.yamlconfig file (use sensible defaults)- TransformPlugin (filters are hardcoded)
Rationale
The core value proposition is:
ref()for dependency tracking- LLM transformations with caching
- Incremental compilation
Everything else is enhancement. By focusing on local files and stub LLM, we can validate the compile loop and caching patterns before adding complexity.
Consequences
- MVP can be built and tested quickly
- Real LLM integration will require configuration work later
- Some features from the design doc are deferred
- Users can still get value from the core compile/ref/cache pattern