Files
notarius/docs/internal/overview.md

6.3 KiB

Internal Overview

This document maps the implemented Notarius components and their ownership. It complements the durable invariants in Architecture and links to focused internal documentation for deeper behavior.

Execution Path

The executable delegates to the CLI, which resolves configuration and wires the production application around the framework runner:

cmd/notarius
    -> internal/cli
       -> config resolution + production registries + LLM client
       -> input -> chunk -> extract -> merge -> normalize -> output
       -> durable output writes

Pipeline side channels:
    diagnostics     checkpoints     debug artifacts

Pipeline execution is serial. Configuration selects modules for the fixed stage shape; registries construct them after profile, capability, validator, and reference resolution.

Application Boundary

cmd/notarius contains the executable entry point and delegates process exit behavior to internal/cli.

internal/cli owns command parsing, configuration discovery, production module and validator registration, prompt asset collection, production LLM client construction, reference preparation, workspace recorder setup, durable output writes, and user-facing stdout, stderr, and exit codes. It is the composition root for concrete production packages.

Core Packages

Package Implemented responsibility
internal/core/artifacts Run manifests and artifact serialization shapes.
internal/core/config Defaults, YAML parsing, environment overrides, validation, redaction, and effective pipeline configuration.
internal/core/diagnostics Diagnostics run directories, artifact writers, atomic writes, and retention decisions.
internal/core/source Generic source documents, units, references, and validation.
internal/core/workspace Workspace settings, safe paths and writes, checkpoint identities, and checkpoint manifest types.

These packages provide concrete, deterministic models and policy. Production module registration occurs at the CLI boundary rather than in core packages.

Framework Packages

Package Implemented responsibility
internal/framework/contracts Stage, validator, reference, output, and structured LLM interfaces and request/result types.
internal/framework/pipeline Module registries, profile resolution, capability checks, reference materialization, validation chains, retries, orchestration, warnings, and manifest population.
internal/framework/validate Shared validator decision and cardinality helpers.
internal/framework/llm Scriptorium-backed structured completions, prompt/schema asset registration, scheduling, profile recording, and secret redaction.
internal/framework/checkpoint Workspace-backed checkpoint loading, recording, and payload envelopes.
internal/framework/debug Workspace-backed framework and LLM debug artifacts.

Framework contracts carry raw stage outputs between modules. The runner owns provenance, validation sequencing, rejection handling, checkpoint boundaries, debug boundaries, and final manifest assembly.

Production Modules

Production implementations live under internal/modules and register through the CLI catalog.

Stage Module key Package Role
Input seriatim internal/modules/input/seriatim Converts Seriatim transcript JSON into the generic source model.
Chunk generic internal/modules/chunk/generic Splits ordered source units by configured unit counts and overlap.
Chunk dnd/scenes internal/modules/chunk/dnd/scenes Uses structured LLM output to create contiguous D&D scene chunks.
Extract dnd/spells internal/modules/extract/dnd/spells Extracts source-grounded D&D spell-cast artifacts.
Merge appendorder internal/modules/merge/appendorder Combines accepted extract outputs in chunk order.
Normalize noop internal/modules/normalize/noop Preserves accepted merged output unchanged.
Output json internal/modules/output/json Encodes manifests, indexes, warnings, rejections, and accepted lane payloads as logical JSON files.

internal/modules/sharedassets composes shared prompt filesystems. internal/modules/sharedassets/dnd owns shared D&D prompt fragments, reference slots, prompt input assembly, and source-unit reference helpers.

Validators

Concrete validators live under internal/validators and register separately from stage modules. Generic validators cover unconditional test decisions, JSON syntax, and JSON Schema. D&D spell validators cover artifact shape, source reference validity, and source relatedness.

The production default chain for dnd/spells extract output is registered centrally in internal/cli; module packages produce raw output but do not own the production approve/reject policy.

Files And Run State

Notarius keeps distinct output and inspection surfaces:

Surface Owner Purpose
Durable output Output module and CLI writer User-consumable run files.
Diagnostics internal/core/diagnostics and CLI Redacted run inspection, reports, warnings, and failures.
Checkpoints internal/framework/checkpoint Validated stage reuse for explicit resume.
Debug artifacts internal/framework/debug and pipeline instrumentation Sensitive framework-boundary and LLM call inspection.

Workspace settings determine whether and where diagnostics, checkpoints, and debug artifacts are written. Concrete stage modules do not receive workspace paths.

Focused Internal Documentation

  • Pipeline Internals: resolution, execution, validators, references, retries, checkpoints, outputs, and manifests.
  • Module Internals: production module contracts, capabilities, options, prompts, schemas, and registration.
  • LLM Runtime: structured completion contracts, Scriptorium adapter, assets, scheduling, profile recording, and redaction.
  • Diagnostics Internals: diagnostics files, retention, failure behavior, and path safety.

Test Surfaces

The repository uses focused package tests, registry and pipeline composition tests, a fake-backed walking skeleton, fixture-driven CLI coverage, and local test servers for LLM integration behavior. Tests do not require real provider calls.