How
Explore the codebase to answer "how does X work?" questions. Produce architectural explanations at the level of a senior engineer onboarding onto a subsystem, enough to build a working mental model, not so much that it reads like annotated source code. For this repository, explain maintained NeoHaskell framework, language, and toolchain internals. Trace only the mechanisms relevant to the question.
Follow the delegation instructions in AGENTS.md. Use the current environment's configured exploration and explanation roles and its available delegation interface. Inherit supported runtime defaults when no role override is configured; report an unsupported override rather than inventing a fallback identifier. Every delegate investigates source read-only and must not edit files. Use enforced read-only access when available; otherwise state the no-write constraint in the task. Select only reasoning and speed settings supported by the current environment.
For source navigation in this repository, use the Codemap reference to locate maintained source, signatures, and likely references. Read each source location before using it as evidence.
1. Assess complexity
If the scope is ambiguous, state your interpretation and explore. The user can redirect.
- Simple (a single module, a small utility, a narrow question such as "how does function X work"): no explorers. Spawn one explainer that explores and explains in one pass, built from
references/explainer-prompt.md without the explorer-findings section. Go to step 4.
- Complex (a subsystem spanning multiple files or services, a cross-cutting feature, a full architectural overview): go to step 2.
When in doubt, take the simple path.
2. Explore (complex only)
Decompose the question into 2 to 4 angles, each a distinct slice of the subsystem. Launch the explorers concurrently within the available delegation capacity, each with references/explorer-prompt.md and its angle filled in.
3. Synthesize (complex only)
Once all explorers have returned, spawn one explainer with references/explainer-prompt.md and every explorer's findings filled in.
4. Present
Present the explainer's output. Light edits for clarity or context from the conversation are fine. Do not substantially rewrite it.
Output format
The explanation uses the sections defined in references/explainer-prompt.md, dropping any that do not apply: Overview, Key Concepts, How It Works, Where Things Live, Gotchas.