Documentation article

System architecture

Understand how parser, IR, traversal, generator, and diagnostics layers stay separated inside one pipeline.

Architecture9 min

The architecture matters because this project is trying to be more than a one-off converter. The docs need to show how parsers, Shape IR, traversal, generators, and diagnostics fit together as one pipeline.

A useful architecture page should make extension work feel understandable before it feels exhaustive.

Audience
Contributors
Difficulty
Advanced
Last updated
July 28, 2026
Shape IR
Read the core concept behind the shared representation before studying the pipeline boundaries.
Custom generators
See one extension surface where these boundaries become concrete.

Follow the pipeline, not the folders

The pipeline starts with a source-specific parser, normalizes into Shape IR, moves through shared traversal behavior, and then hands control to a target-specific generator.

Diagnostics should stay close to each stage instead of being bolted on afterward. That is how the system can explain both success and partial support honestly.

Keep each layer narrow

These boundaries are what keep new route work reviewable instead of turning every feature into a whole-stack rewrite.

  • Parsers own source-format understanding.
  • Shape IR owns cross-format structural meaning.
  • Traversal owns reusable tree walking.
  • Generators own target-format rendering.
  • Diagnostics own explanation of gaps, warnings, and loss.

Document the handoffs

The important detail is not the arrows themselves. It is that each handoff is explicit enough for tests, docs, and extension work to describe independently.

High-level pipeline view

text
Source schema
  -> parser
  -> Shape IR
  -> traversal helpers
  -> generator
  -> output + diagnostics