π Issue Type
Architecture / Code Quality / Testing
π― Objective
Refactor the article.md generation pipeline into a well-architected bounded-context system with strict typing, clear interfaces, comprehensive tests, and proper separation of concerns. This covers everything from analysis artifacts to the canonical article.md output.
π Current State
The article.md generation pipeline involves:
scripts/aggregate-analysis.ts β main orchestrator (turns analysis folder into article.md)
scripts/render-lib/aggregator/ β 9 sub-modules (aggregate, cleaning/, frontmatter, order, per-document, reader-guide, reader-guide-i18n, seo/, sources-appendix)
scripts/analysis-reader.ts β reads analysis artifacts
scripts/analysis-references.ts β cross-reference utilities
scripts/validate-article.ts β post-generation validation
scripts/validate-methodology-reflection.ts β methodology validation
scripts/populate-analysis-data.ts β pre-population of analysis data
scripts/statistical-claims-detector.ts β detects statistical claims for verification
Issues:
- Bounded context boundaries unclear between aggregator sub-modules
- Some modules may have overlapping responsibilities (e.g.,
cleaning/ vs frontmatter.ts)
- Type definitions spread across files rather than centralized interfaces
- Test coverage for aggregator sub-modules (
render-lib-architecture.test.ts, render-lib-leaf-modules.test.ts) may not cover all edge cases
- Error handling patterns inconsistent across pipeline stages
- No clear pipeline abstraction connecting stages (reader β validator β aggregator β writer)
π Desired State
Architecture (Bounded Contexts)
scripts/article-pipeline/
βββ interfaces.ts # All shared types/interfaces for pipeline
βββ pipeline.ts # Pipeline orchestrator (compose stages)
βββ stages/
β βββ read/ # Read analysis artifacts from filesystem
β β βββ artifact-reader.ts
β β βββ artifact-inventory.ts
β β βββ index.ts
β βββ validate/ # Validate completeness and quality
β β βββ gate-checker.ts
β β βββ methodology-validator.ts
β β βββ statistical-claims.ts
β β βββ index.ts
β βββ aggregate/ # Transform artifacts into article sections
β β βββ section-ordering.ts
β β βββ frontmatter-generator.ts
β β βββ content-cleaner.ts
β β βββ per-document-synthesis.ts
β β βββ reader-guide.ts
β β βββ sources-appendix.ts
β β βββ index.ts
β βββ enrich/ # Add cross-references, SEO, metadata
β β βββ cross-references.ts
β β βββ seo-metadata.ts
β β βββ index.ts
β βββ write/ # Write final article.md
β βββ markdown-writer.ts
β βββ index.ts
βββ index.ts # Public API
Code Quality
- Each stage has a clear input/output interface (typed)
- Pipeline is composable β stages can be tested independently
- Error propagation uses Result types or typed exceptions
- No
any types β full strict TypeScript
- Maximum 200 lines per module (single responsibility)
Test Quality
- Each stage has dedicated test file with:
- Happy path tests with real fixture data
- Edge cases (empty analysis folders, missing artifacts, malformed files)
- Error handling tests (filesystem errors, validation failures)
- Integration tests for full pipeline
- Test fixtures in
tests/fixtures/ for reproducible article generation
- Snapshot tests for generated
article.md output stability
π§ Implementation Approach
- Map current architecture: Document current data flow through
aggregate-analysis.ts β render-lib/aggregator/
- Define interfaces: Create shared type definitions for pipeline stages
- Extract and refactor: Move aggregator logic into bounded-context stages
- Add pipeline orchestrator: Composable pipeline with typed stage inputs/outputs
- Write tests: Comprehensive unit tests for each stage + integration tests
- Validate: Ensure generated
article.md output is identical before/after refactoring
- Update docs: Update
Article-Generation.md Β§"How article.md Is Generated"
π Key Files
| File |
Purpose |
scripts/aggregate-analysis.ts |
Main aggregation orchestrator |
scripts/render-lib/aggregator/ (9 files) |
Aggregator sub-modules |
scripts/analysis-reader.ts |
Analysis artifact reader |
scripts/analysis-references.ts |
Cross-reference utilities |
scripts/validate-article.ts |
Post-generation validation |
scripts/validate-methodology-reflection.ts |
Methodology validation |
scripts/populate-analysis-data.ts |
Analysis data pre-population |
scripts/statistical-claims-detector.ts |
Statistical claims detection |
tests/render-lib-architecture.test.ts |
Existing architecture tests |
tests/render-lib-leaf-modules.test.ts |
Existing leaf module tests |
tests/validate-article.test.ts |
Existing validation tests |
tests/validate-methodology-reflection.test.ts |
Existing methodology tests |
Article-Generation.md |
System documentation |
.github/prompts/04-analysis-pipeline.md |
Analysis pipeline contract |
.github/prompts/05-analysis-gate.md |
Gate validation rules |
β
Acceptance Criteria
π€ Recommended Agent
code-quality-engineer β Architecture refactoring, bounded contexts, TypeScript interfaces, test coverage
π·οΈ Labels
enhancement, refactor, testing, component:content-generation, news-generation, priority-high, size-xl
π Issue Type
Architecture / Code Quality / Testing
π― Objective
Refactor the
article.mdgeneration pipeline into a well-architected bounded-context system with strict typing, clear interfaces, comprehensive tests, and proper separation of concerns. This covers everything from analysis artifacts to the canonicalarticle.mdoutput.π Current State
The article.md generation pipeline involves:
scripts/aggregate-analysis.tsβ main orchestrator (turns analysis folder intoarticle.md)scripts/render-lib/aggregator/β 9 sub-modules (aggregate, cleaning/, frontmatter, order, per-document, reader-guide, reader-guide-i18n, seo/, sources-appendix)scripts/analysis-reader.tsβ reads analysis artifactsscripts/analysis-references.tsβ cross-reference utilitiesscripts/validate-article.tsβ post-generation validationscripts/validate-methodology-reflection.tsβ methodology validationscripts/populate-analysis-data.tsβ pre-population of analysis datascripts/statistical-claims-detector.tsβ detects statistical claims for verificationIssues:
cleaning/vsfrontmatter.ts)render-lib-architecture.test.ts,render-lib-leaf-modules.test.ts) may not cover all edge casesπ Desired State
Architecture (Bounded Contexts)
Code Quality
anytypes β full strict TypeScriptTest Quality
tests/fixtures/for reproducible article generationarticle.mdoutput stabilityπ§ Implementation Approach
aggregate-analysis.tsβrender-lib/aggregator/article.mdoutput is identical before/after refactoringArticle-Generation.mdΒ§"How article.md Is Generated"π Key Files
scripts/aggregate-analysis.tsscripts/render-lib/aggregator/(9 files)scripts/analysis-reader.tsscripts/analysis-references.tsscripts/validate-article.tsscripts/validate-methodology-reflection.tsscripts/populate-analysis-data.tsscripts/statistical-claims-detector.tstests/render-lib-architecture.test.tstests/render-lib-leaf-modules.test.tstests/validate-article.test.tstests/validate-methodology-reflection.test.tsArticle-Generation.md.github/prompts/04-analysis-pipeline.md.github/prompts/05-analysis-gate.mdβ Acceptance Criteria
anytypes in pipeline codearticle.mdArticle-Generation.mdupdated to reflect new architecturenpm test)article.mdoutput is byte-identical before/after refactoring (regression-free)π€ Recommended Agent
code-quality-engineerβ Architecture refactoring, bounded contexts, TypeScript interfaces, test coverageπ·οΈ Labels
enhancement,refactor,testing,component:content-generation,news-generation,priority-high,size-xl