How timiagama/ecr works
ECR is a Markdown convention and TypeScript linter/CLI for checking stable document and section IDs, declared and inline references, and corpus consistency. The main workflow is a user running the CLI on a Markdown corpus: it loads documents, validates them through the public facade and per-document rules, then reports diagnostics or statistics. The README also describes agents using grep to navigate the resulting explicit references; this is a repository-text workflow, not a separate indexing service. Edges reflect shown imports/calls or README statements; unsampled CLI and validation details are not inferred.
Main entry points: cli.ts CLI commands · per-document-visitor.ts Document visitor · identifier-grammar.ts Identifier grammar · ecr.ts ECR facade
Components 21
CLI workflow
- CLI commands
src/cli.ts - Corpus loader
src/cli/corpus-loader.ts - Ignore filtering
src/cli/project-ignore.ts - Corpus statistics
src/cli/corpus-statistics.ts - Diagnostic reporter
src/cli/diagnostic-reporter.ts - Process supervision
src/cli/supervisor.ts
Validation engine
- ECR facade
src/ecr.ts - Corpus validator
src/corpus-validator.ts - Document visitor
src/per-document-visitor.ts
ECR rules
- Document identity
src/document-identity-rule.ts - Section hierarchy
src/section-hierarchy-rule.ts - References section
src/references-section-rule.ts - Inline references
src/inline-reference-rule.ts
Shared support
- Identifier grammar
src/identifier-grammar.ts - Heading source form
src/heading-source-form.ts - Source alignment
src/source-alignment.ts - Result schema
src/types.ts - Meta-document filter
src/meta-documents.ts
Other components
- CLI user
- Markdown corpus
- Coding agent
Connections 25
- CLI user → CLI commands: runs
- CLI commands → Corpus loader: loads corpus
src/cli.ts - Markdown corpus → Corpus loader: provides Markdown
src/cli/corpus-loader.ts - CLI commands → Ignore filtering: reads ignore rules
src/cli.ts - CLI commands → ECR facade: validates corpus
src/cli.ts - Corpus loader → Meta-document filter: filters documents
src/cli/corpus-loader.ts - ECR facade → Document visitor: lints documents
src/ecr.ts - ECR facade → Corpus validator: validates corpus
src/ecr.ts - Corpus validator → Inline references: checks inline references
src/corpus-validator.ts - Document visitor → Document identity: evaluates headings
src/per-document-visitor.ts - Document visitor → Section hierarchy: evaluates sections
src/per-document-visitor.ts - Document visitor → References section: evaluates declarations
src/per-document-visitor.ts - Document visitor → Inline references: evaluates prose
src/per-document-visitor.ts - Document visitor → Identifier grammar: parses identifiers
src/per-document-visitor.ts - Document identity → Identifier grammar: parses DocIDs
src/document-identity-rule.ts - Section hierarchy → Identifier grammar: checks SectionIDs
src/section-hierarchy-rule.ts - References section → Identifier grammar: parses references
src/references-section-rule.ts - Inline references → Identifier grammar: parses inline IDs
src/inline-reference-rule.ts - Document identity → Heading source form: checks heading source
src/document-identity-rule.ts - Section hierarchy → Heading source form: checks heading source
src/section-hierarchy-rule.ts - References section → Source alignment: aligns source text
src/references-section-rule.ts - CLI commands → Corpus statistics: computes statistics
src/cli.ts - CLI commands → Diagnostic reporter: renders results
src/cli.ts - CLI commands → Process supervision: manages execution
src/cli.ts - Coding agent → Markdown corpus: searches references
README.md