76 lines
3.9 KiB
Markdown
76 lines
3.9 KiB
Markdown
# Development
|
|
|
|
This is the first-read landing page for people and LLM coding agents working on
|
|
Notarius. It provides a concise repository orientation and routes each kind of
|
|
change to its canonical documentation.
|
|
|
|
## Orientation
|
|
|
|
Notarius is a small Go application for extracting structured data from source
|
|
material. It is a general extraction platform with an initial Seriatim and D&D
|
|
implementation. Configured modules run through a fixed workflow:
|
|
|
|
```text
|
|
input -> chunk -> extract -> merge -> normalize -> output
|
|
```
|
|
|
|
The CLI is the application boundary. Core packages own deterministic models and
|
|
policy, framework packages own reusable contracts and orchestration, and module
|
|
and validator packages own concrete behavior.
|
|
|
|
## Repository Map
|
|
|
|
- `cmd/notarius`: executable entry point.
|
|
- `internal/cli`: CLI behavior and production composition.
|
|
- `internal/core`: deterministic source, config, artifact, diagnostics, and
|
|
workspace packages.
|
|
- `internal/framework`: contracts, pipeline orchestration, validation helpers,
|
|
checkpoints, debug recording, and LLM runtime plumbing.
|
|
- `internal/modules`: concrete implementations of the six pipeline stages.
|
|
- `internal/validators`: concrete output validators.
|
|
- `docs`: canonical policy, reference, integration, internal, ADR, and roadmap
|
|
documentation.
|
|
- `examples`: maintained, secret-free example inputs and configuration.
|
|
|
|
See [Internal Overview](internal/overview.md) for the implemented component
|
|
map and links to focused internal documentation.
|
|
|
|
## What To Read
|
|
|
|
| When working on | Read | Why |
|
|
| --- | --- | --- |
|
|
| Application shape, package boundaries, contracts, dependency direction, runtime guarantees, or safety properties | [Architecture](policy/architecture.md) and relevant [ADRs](adr/) | Architecture defines the intended system and its invariants; ADRs preserve significant decision rationale. |
|
|
| Any documentation addition or revision | [Documentation Policy](policy/documentation.md) | It defines canonical homes, audiences, current-behavior rules, and maintenance requirements. |
|
|
| Pipeline resolution or execution | [Pipeline Internals](internal/pipeline.md) | It documents profiles, references, validation, retries, checkpoints, and runner behavior. |
|
|
| Production modules or validators | [Module Internals](internal/modules.md) | It documents implemented module contracts, capabilities, assets, and registration. |
|
|
| LLM clients, prompts, schemas, profiles, or scheduling | [LLM Runtime](internal/llm.md) | It documents the transport boundary and Scriptorium integration. |
|
|
| Diagnostics, workspace state, resume, or debug artifacts | [Diagnostics Internals](internal/diagnostics.md), [Operations](operations.md), and [Configuration](config.md) | These separate implementation details, operator behavior, and configuration contracts. |
|
|
| CLI or user-visible configuration behavior | [CLI Reference](cli.md) and [Configuration](config.md) | These are the canonical user and operator references. |
|
|
| External input formats, artifact schemas, or durable output files | [Integration Contracts](integrations/) | Integration documents define external and durable data contracts. |
|
|
| Proposed or unimplemented behavior | [Roadmap](roadmap/) | Future work belongs only in roadmap documentation until implemented. |
|
|
|
|
For an existing subsystem, also inspect its focused tests and the package-local
|
|
types and contracts before changing behavior.
|
|
|
|
## Validation
|
|
|
|
Use focused package tests while iterating. Run the repository-wide checks when
|
|
a change affects shared contracts, application behavior, or maintained
|
|
documentation examples:
|
|
|
|
```sh
|
|
go test ./...
|
|
go vet ./...
|
|
go build ./cmd/notarius
|
|
```
|
|
|
|
## Universal Reminders
|
|
|
|
- Keep non-roadmap documentation limited to implemented behavior.
|
|
- Update affected documentation and maintained examples in the same change as
|
|
behavior.
|
|
- Use fakes, fixtures, or local test servers instead of real external services
|
|
in tests.
|
|
- Do not expose secrets in code, errors, logs, diagnostics, manifests,
|
|
documentation, or examples.
|