# Documentation Roadmap ## Purpose This roadmap defines the work required to bring Notarius documentation into compliance with [`docs/policy/documentation.md`](../policy/documentation.md) and the current implementation. It is a planning document only. Future implementation agents should use it to rewrite documentation in stages without documenting unimplemented behavior outside `docs/roadmap/`. ## Repository Documentation Inventory - `README.md`: keep and rewrite. It still contains template text (`go-application-template`) and does not describe the implemented Notarius CLI. - `AGENTS.md`: keep and lightly update if needed. It correctly directs agents to read `docs/policy`, and should stay short. - `docs/policy/documentation.md`: keep and do not update. It is the controlling documentation policy. - `docs/policy/architecture.md`: keep and do not update. It is the controlling architecture policy. - `docs/integrations/seriatim.md`: keep and lightly update. It is close to the current Seriatim adapter behavior and belongs in `docs/integrations/` because Seriatim minimal transcript JSON is an external file-format contract. - `docs/integrations/dnd-spells.md`: split. It mixes implemented extractor internals, artifact payload details, and stale roadmap text claiming the CLI `run` workflow does not exist. Move module-internal behavior to `docs/internal/modules.md` or a module-specific internal doc; move durable spell artifact output shape to an integration/artifact contract doc. - `docs/roadmap/documentation.md`: keep during the documentation migration. After the migration is complete, either delete it or reduce it to any remaining documentation work only. - `docs/roadmap/implementation.md`: delete after migration. It is a completed MVP implementation plan and is no longer an active roadmap. - `docs/roadmap/initial-architecture.md`: delete after migration. The implemented architecture now belongs in policy and internal docs; historical planning detail should not remain as active roadmap content. - `docs/roadmap/mvp.md`: delete or rewrite after migration. It currently records implemented MVP behavior and deferred documentation work; once current-behavior docs exist, keep only genuine future work under `docs/roadmap/`. - `examples/dnd-spells.config.yml`: keep and lightly update. It is a maintained example covered by CLI tests, but should be checked for user-facing clarity and secret-free LLM configuration. - `examples/seriatim-minimal-transcript.json`: keep and lightly update. It is a maintained Seriatim input fixture covered by CLI tests. ## Policy Compliance Assessment Required documents missing under the documentation policy: - `docs/cli.md`: required because Notarius is a CLI application. - `docs/config.md`: required because Notarius is config-driven. - `docs/operations.md`: required because Notarius runs multi-step workflows, writes durable artifacts, and maintains diagnostics directories. - `docs/internal/`: required because Notarius is modular and orchestration-based. - `docs/policy/development.md`: required because the project is maintained by humans and LLM coding agents. Recommended documents that should be added: - `docs/troubleshooting.md`: recommended because implemented commands have common failure modes: missing config, unknown pipeline, invalid lane selection, invalid Seriatim input, LLM configuration failures, provider failures, output write failures, and diagnostics retention behavior. - Maintained examples under `examples/`: already present and should remain linked from README, CLI, config, and integration docs. Documents that exist but are stale or in the wrong canonical home: - `README.md` is stale template content. - `docs/integrations/dnd-spells.md` includes stale limits and belongs partly in internal/module docs and partly in artifact integration docs. - Completed roadmap documents describe implemented behavior and should not be the only source of current-behavior documentation after the migration. Content describing deprecated, historical, planned, or unimplemented behavior outside `docs/roadmap/`: - `docs/integrations/dnd-spells.md` says the CLI `run` workflow does not exist; that is now false. - No other non-roadmap stale claims were found during this pass, but future implementation agents should grep before rewriting. Examples: - `examples/dnd-spells.config.yml` and `examples/seriatim-minimal-transcript.json` are covered by `internal/cli/run_test.go`. - There is no maintained expected-output example under `examples/`. Do not add one unless it can be validated or regenerated from implemented behavior. Links likely needing verification: - New README links to `docs/cli.md`, `docs/config.md`, `docs/operations.md`, `docs/troubleshooting.md`, `docs/internal/`, and `docs/integrations/` will need verification after those files are created. - Existing roadmap links to old implementation documents should be removed or deleted with the roadmap cleanup stage. Documents not applicable: - `docs/api.md` is not needed because Notarius does not implement a public HTTP API. - `docs/consumers/` is not needed for this pass because the repository exposes a CLI, not a supported public package, SDK, plugin API, or HTTP consumer API. ## Target Documentation Set Desired final tree after the migration: ```text AGENTS.md README.md docs/cli.md docs/config.md docs/operations.md docs/troubleshooting.md docs/policy/architecture.md docs/policy/development.md docs/policy/documentation.md docs/internal/overview.md docs/internal/pipeline.md docs/internal/modules.md docs/internal/llm.md docs/internal/diagnostics.md docs/integrations/seriatim.md docs/integrations/openai-compatible.md docs/integrations/json-output.md docs/integrations/dnd-spell-artifacts.md docs/roadmap/mvp.md examples/dnd-spells.config.yml examples/seriatim-minimal-transcript.json ``` `docs/roadmap/mvp.md` should exist only if it contains genuine remaining future work after the migration. `docs/roadmap/documentation.md` exists to drive this migration and should be deleted or reduced when the migration is complete. ### `AGENTS.md` - Audience: LLM coding agents. - Purpose: shortest repository-specific agent instruction. - Canonical scope: policy files that agents must read before changes. - Recommended outline: one or two sentences linking to policy docs. - Source-of-truth areas: `docs/policy/architecture.md`, `docs/policy/documentation.md`. - Acceptance criteria: stays short; no duplicated architecture or documentation policy; links remain accurate. ### `README.md` - Audience: users, administrators, operators. - Purpose: concise outward-facing orientation. - Canonical scope: project purpose, shortest useful command, and links to targeted docs. - Recommended outline: description; elevator pitch; shortest useful command using maintained examples; where output appears; links. - Source-of-truth areas: `cmd/notarius/main.go`, `internal/cli/run.go`, `examples/dnd-spells.config.yml`, `examples/seriatim-minimal-transcript.json`, `internal/cli/run_test.go`. - Acceptance criteria: no template text; no long manual content; commands match real CLI syntax; links resolve; no unimplemented features. ### `docs/policy/architecture.md` - Audience: developers, LLM coding agents. - Purpose: durable development architecture policy. - Canonical scope: stable architecture invariants and boundaries. - Recommended outline: keep the current concise policy shape. - Source-of-truth areas: current architecture policy and actual package boundaries. - Acceptance criteria: does not grow into CLI/config/reference documentation; no planned behavior outside roadmap language. ### `docs/policy/documentation.md` - Audience: developers, LLM coding agents. - Purpose: controlling documentation policy. - Canonical scope: documentation layout, audience, maintenance rules, and canonical homes. - Recommended outline: keep current policy unless project-wide documentation rules change. - Source-of-truth areas: current documentation policy and this migration. - Acceptance criteria: remains policy-oriented; no project-specific current-behavior reference material that belongs elsewhere. ### `docs/cli.md` - Audience: users, administrators, operators. - Purpose: canonical CLI reference. - Canonical scope: implemented commands, flags, exit behavior, common workflows, and command output. - Recommended outline: shortest useful command; command overview; `help`; `run`; `config validate`; `pipelines list`; exit codes; common workflows; diagnostics/output pointers. - Source-of-truth areas: `internal/cli/run.go`, `internal/cli/run_test.go`, `internal/cli/catalog.go`. - Acceptance criteria: documents only implemented commands and flags; explains `--config`, `--input`, `--only`, `--output-dir`, `--diagnostics-dir`, `--llm-profile`, `--pipeline`, and `--json`; does not duplicate full config reference; examples are covered by tests or are direct variants of tested commands. ### `docs/config.md` - Audience: administrators, operators, advanced users. - Purpose: canonical configuration reference. - Canonical scope: config discovery, YAML version 1 structure, defaults, environment overrides, pipeline profiles, module bindings, LLM profiles, diagnostics settings, validation behavior, and secrets handling. - Recommended outline: config discovery and precedence; minimal working config; production-oriented config; `version`; `llm_profiles`; `pipelines`; module-binding shorthand and object form; `concurrency`; `diagnostics`; environment overrides; validation and capability checks; examples. - Source-of-truth areas: `internal/core/config/*.go`, `internal/framework/pipeline/profile.go`, `internal/framework/pipeline/module.go`, `internal/cli/run.go`, `examples/dnd-spells.config.yml`, config tests. - Acceptance criteria: full config reference is here and not duplicated elsewhere; lists implemented defaults and supported env vars; explains that raw secrets should not be committed; examples load successfully. ### `docs/operations.md` - Audience: administrators, operators. - Purpose: canonical operational behavior and recovery reference. - Canonical scope: run output directory layout, diagnostics directory layout, retention behavior, manifests, warnings, failure inspection, safe cleanup, and operational caveats. - Recommended outline: normal run workflow; output files; diagnostics files; retention modes; failure behavior; warnings; atomic writes and path safety; safe cleanup; what is not resumable yet. - Source-of-truth areas: `internal/cli/run.go`, `internal/core/diagnostics/*.go`, `internal/modules/output/json/encoder.go`, output and diagnostics tests. - Acceptance criteria: accurately names implemented durable files; states that resume/retry is not implemented as a command; explains when diagnostics are retained; does not describe unimplemented remote storage or archives. ### `docs/troubleshooting.md` - Audience: users, administrators, operators. - Purpose: task-oriented fixes for recurring failure modes. - Canonical scope: symptoms, likely causes, inspection steps, and safe fixes. - Recommended outline: config not found; unsupported config version; unknown pipeline; invalid `--only`; Seriatim validation failure; missing LLM base URL or model; provider HTTP failures; output write failure; diagnostics retention surprise. - Source-of-truth areas: `internal/cli/run.go`, `internal/cli/run_test.go`, `internal/core/config/*_test.go`, `internal/modules/input/seriatim/*_test.go`, `internal/framework/llm/*_test.go`. - Acceptance criteria: every entry maps to implemented behavior; no speculative troubleshooting for future modules; links to CLI/config/operations docs instead of duplicating reference material. ### `docs/policy/development.md` - Audience: developers, LLM coding agents. - Purpose: contributor workflow and change discipline. - Canonical scope: repository layout, build/test commands, coding conventions, dependency policy, how to add config fields, CLI flags, modules, adapters, and examples. - Recommended outline: repository layout; required policy reads; build/test commands; Go conventions; dependency policy; adding CLI flags; adding config; adding stage modules; adding examples; docs update rules. - Source-of-truth areas: `AGENTS.md`, `go.mod`, `internal/cli`, `internal/core/config`, `internal/framework/pipeline`, `internal/modules`, `docs/policy`. - Acceptance criteria: procedural and concise; links to `architecture.md` for invariants; does not restate full CLI/config reference. ### `docs/internal/overview.md` - Audience: developers, LLM coding agents. - Purpose: high-level implemented internals map. - Canonical scope: package roles and import/boundary expectations. - Recommended outline: executable and CLI; core packages; framework packages; module packages; tests and fixtures; where not to put domain/source-specific logic. - Source-of-truth areas: repository tree, `docs/policy/architecture.md`, `internal/cli/catalog.go`. - Acceptance criteria: concise package map; reflects current code; does not become a generated file listing every source file. ### `docs/internal/pipeline.md` - Audience: developers, LLM coding agents. - Purpose: implemented pipeline orchestration reference. - Canonical scope: runner inputs/outputs, stage ordering, registries, resolved profiles, artifact lanes, validation, warnings, and manifest population. - Recommended outline: stage flow; profile resolution; registries and module specs; runner execution; validator behavior; output encoder handoff; failure behavior; tests. - Source-of-truth areas: `internal/framework/contracts/contracts.go`, `internal/framework/pipeline/*.go`, pipeline tests. - Acceptance criteria: explains implemented serial execution; does not promise parallel execution or resume; links to config docs for profile syntax. ### `docs/internal/modules.md` - Audience: developers, LLM coding agents. - Purpose: implemented stage modules and how to add new ones. - Canonical scope: current production modules and their boundaries. - Recommended outline: module contract pattern; `seriatim`; `generic`; `dnd/spells`; `appendorder`; `noop`; `json`; module registration; tests to add for new modules. - Source-of-truth areas: `internal/modules/**`, `internal/cli/catalog.go`, module tests. - Acceptance criteria: documents only implemented modules; moves relevant non-external content from `docs/integrations/dnd-spells.md`; keeps detailed external file-format contracts in `docs/integrations/`. ### `docs/internal/llm.md` - Audience: developers, LLM coding agents. - Purpose: implemented LLM runtime internals. - Canonical scope: structured LLM client contract, OpenAI-compatible adapter, scheduler, schema registry, retry/redaction behavior, and prompt boundary. - Recommended outline: contract; provider request shape at a high level; scheduler; retries and timeouts; structured output decoding; secret redaction; tests. - Source-of-truth areas: `internal/framework/contracts/contracts.go`, `internal/framework/llm/*.go`, `internal/framework/prompt/*.go`, `internal/modules/extract/dnd/spells/assets`. - Acceptance criteria: no provider marketing claims; no API keys; links to OpenAI-compatible integration doc for the external wire contract. ### `docs/internal/diagnostics.md` - Audience: developers, LLM coding agents. - Purpose: implemented diagnostics internals. - Canonical scope: run directory creation, artifact writers, retention decision mechanics, and redacted effective config payloads. - Recommended outline: purpose; inputs and outputs; files written; retention; failure behavior; tests; invariants. - Source-of-truth areas: `internal/core/diagnostics/*.go`, `internal/core/config/redaction.go`, CLI diagnostics tests. - Acceptance criteria: complements `docs/operations.md`; does not duplicate operator procedures. ### `docs/integrations/seriatim.md` - Audience: developers, LLM coding agents. - Purpose: Seriatim minimal transcript input contract. - Canonical scope: accepted JSON shape, validation, source mapping, metadata keys, capabilities, and compatibility limits. - Recommended outline: adapter; accepted shape; validation; source mapping; metadata keys; capabilities; example; limits. - Source-of-truth areas: `internal/modules/input/seriatim/*.go`, `internal/modules/input/seriatim/*_test.go`, `examples/seriatim-minimal-transcript.json`. - Acceptance criteria: matches implemented validation exactly; clearly states only the minimal Seriatim shape is supported. ### `docs/integrations/openai-compatible.md` - Audience: administrators, developers, LLM coding agents. - Purpose: external LLM provider wire contract currently used by Notarius. - Canonical scope: OpenAI-compatible chat completions endpoint assumptions, structured output response format, request/response fields used, retry behavior, and secret handling. - Recommended outline: provider type; base URL handling; endpoint path; request shape summary; response assumptions; retryable statuses; auth header; configuration links; limits. - Source-of-truth areas: `internal/framework/llm/openai_compatible_client.go`, `internal/framework/llm/openai_compatible_client_test.go`, `internal/core/config/effective_config.go`. - Acceptance criteria: documents only what the client implements; avoids copying external API docs wholesale; links to config docs for settings. ### `docs/integrations/json-output.md` - Audience: users, administrators, downstream developers, LLM coding agents. - Purpose: durable JSON output file-format contract. - Canonical scope: output directory contents and JSON file shapes produced by the `json` output module. - Recommended outline: output encoder; file list; `index.json`; `manifest.json`; `artifacts/.json`; `rejected.json`; `warnings.json`; artifact envelope; filename sanitization; limits. - Source-of-truth areas: `internal/modules/output/json/encoder.go`, `internal/core/artifacts/artifacts.go`, output tests, `internal/cli/run_test.go`. - Acceptance criteria: exactly matches implemented file names and shapes; does not document future output formats. ### `docs/integrations/dnd-spell-artifacts.md` - Audience: downstream developers, LLM coding agents. - Purpose: D&D spell-cast artifact payload contract. - Canonical scope: durable `dnd.spell_cast` payload fields, schema version, source-reference expectations, prompt/schema provenance in manifests, and validator rejection reasons. - Recommended outline: artifact type; payload fields; source references; validators; manifest metadata; example payload; limits. - Source-of-truth areas: `internal/modules/extract/dnd/spells/*.go`, `internal/modules/extract/dnd/spells/assets/schemas/dnd_spells.v1.json`, spell extractor tests. - Acceptance criteria: replaces the external-contract parts of `docs/integrations/dnd-spells.md`; no stale statement that CLI run is missing; no item/NPC/combat claims outside limitations. ### `docs/roadmap/mvp.md` - Audience: maintainers, developers, LLM coding agents. - Purpose: remaining roadmap work only, if any remains after the documentation migration. - Canonical scope: future, planned, deferred, or unimplemented work. - Recommended outline: remaining future work; deferred ideas; release checklist, if still useful. - Source-of-truth areas: current code and this documentation roadmap. - Acceptance criteria: contains no current-behavior reference material that belongs in README, CLI, config, operations, internal, or integration docs. ### `examples/dnd-spells.config.yml` - Audience: users, administrators, operators, LLM coding agents. - Purpose: maintained minimal config example for the implemented spell extraction workflow. - Canonical scope: one valid, secret-free config example. - Recommended outline: YAML fixture only, with comments only if they do not interfere with tests. - Source-of-truth areas: config parser/tests and CLI example-fixture tests. - Acceptance criteria: remains loadable by tests; contains no secrets; is linked from README, CLI, and config docs. ### `examples/seriatim-minimal-transcript.json` - Audience: users, developers, LLM coding agents. - Purpose: maintained minimal input example for the Seriatim adapter. - Canonical scope: one valid minimal transcript JSON fixture. - Recommended outline: JSON fixture only. - Source-of-truth areas: Seriatim adapter/tests and CLI example-fixture tests. - Acceptance criteria: remains valid; contains no private transcript data; is linked from README, CLI, and Seriatim integration docs. ## File-by-File Rewrite Guidance - `README.md`: cover what Notarius does, the shortest useful command, where outputs go, and links. Avoid package diagrams, full config reference, and roadmap content. Inspect `internal/cli/run.go`, `examples/`, and CLI tests. Do not carry forward `go-application-template`. - `docs/cli.md`: cover implemented commands and flags. Avoid full YAML field reference and internal package details. Link to `docs/config.md` for config fields and `docs/operations.md` for output/diagnostics. - `docs/config.md`: cover config schema, defaults, discovery, env overrides, validation, and secrets. Avoid command walkthroughs except minimal examples. Link to `docs/cli.md` for command syntax and integration docs for module contracts. - `docs/operations.md`: cover output and diagnostics behavior, retention, and failure inspection. Avoid developer implementation details that belong in `docs/internal/diagnostics.md`. - `docs/troubleshooting.md`: cover recurring implemented failures. Avoid generic LLM advice not grounded in Notarius errors or tests. - `docs/policy/development.md`: cover contributor workflow. Avoid copying `docs/policy/architecture.md`; link to it for invariants. - `docs/internal/overview.md`: cover package roles and boundaries. Avoid user-facing command details. - `docs/internal/pipeline.md`: cover runner and registry mechanics. Avoid config syntax beyond linking to the canonical config doc. - `docs/internal/modules.md`: cover implemented modules and how they fit stage contracts. Avoid external Seriatim schema detail and durable JSON output schemas beyond links to integration docs. - `docs/internal/llm.md`: cover runtime internals. Avoid claiming support for non-implemented providers. - `docs/internal/diagnostics.md`: cover diagnostics implementation. Avoid operator runbooks; link to operations. - `docs/integrations/seriatim.md`: keep focused on Seriatim minimal transcript JSON. Avoid D&D extractor behavior. - `docs/integrations/openai-compatible.md`: document the implemented external LLM contract. Avoid extensive copied provider docs. - `docs/integrations/json-output.md`: document durable output files. Avoid diagnostics run-directory details except a link to operations. - `docs/integrations/dnd-spell-artifacts.md`: document the spell artifact contract. Avoid extractor implementation details better covered internally. - `docs/integrations/dnd-spells.md`: replace by split docs above, then delete or leave a temporary redirect-style note only if that is useful during migration. - `docs/roadmap/*.md`: remove completed implementation history or rewrite it as future work. Do not leave implemented behavior solely in roadmap docs. ## Examples Plan `examples/` exists and should remain because Notarius has non-trivial configuration and workflows. - `examples/dnd-spells.config.yml` - Purpose: maintained minimal D&D spell extraction pipeline config. - Expected validity check: `go test ./internal/cli` currently validates this fixture with `config validate`, `pipelines list`, and fake-LLM `run`. - Documentation links: README, `docs/cli.md`, `docs/config.md`, `docs/integrations/seriatim.md`, `docs/integrations/dnd-spell-artifacts.md`. - Update guidance: keep secret-free; prefer environment-based API key behavior; preserve test coverage. - `examples/seriatim-minimal-transcript.json` - Purpose: maintained minimal Seriatim transcript input. - Expected validity check: `go test ./internal/cli` uses it in the fake-LLM run acceptance tests; Seriatim adapter tests cover compatible shapes separately. - Documentation links: README, `docs/cli.md`, `docs/integrations/seriatim.md`. Do not add an expected-output example unless it can be kept in sync by tests or a small documented regeneration procedure. Do not invent examples for NPC, item, combat, Markdown, or Obsidian extraction until those features exist. ## Internal Documentation Plan ### Pipeline Orchestration - Path: `docs/internal/pipeline.md` - Purpose: explain implemented runner orchestration. - Inputs and outputs: `pipeline.RunInput`, `pipeline.RunOutput`, `contracts.*Request`, `contracts.*Result`, `artifacts.RunManifest`. - Boundaries: orchestration and registries only; no source-format or D&D logic. - Config fields used: resolved pipeline bindings and lane selection from `internal/core/config`. - Adapters used: input, chunk, extract, merge, normalize, validator, output registries. - Failure behavior: stage errors wrap module keys/lane/chunk context; partial manifest may be returned on failure. - Tests to inspect before changing: `internal/framework/pipeline/*_test.go`, `internal/framework/pipeline/walking_skeleton_test.go`, `internal/cli/run_test.go`. - Architectural invariants: fixed six-stage flow; generic source references; module selection via registries. ### Stage Modules - Path: `docs/internal/modules.md` - Purpose: summarize implemented production modules and extension pattern. - Inputs and outputs: module-specific contract methods under `internal/framework/contracts`. - Boundaries: module logic under `internal/modules//...`; CLI only wires production modules. - Config fields used: module bindings, `llm_profile`, and `options`. - Adapters used: Seriatim input, generic chunker, D&D spells extractor, append-order merger, noop normalizer, JSON output encoder. - Failure behavior: module constructors and stage methods return contextual errors; validators reject candidates rather than panicking. - Tests to inspect before changing: module package tests and `internal/cli/catalog.go` coverage in `internal/cli/run_test.go`. - Architectural invariants: source/domain concerns stay in modules; framework remains source- and domain-agnostic. ### LLM Runtime - Path: `docs/internal/llm.md` - Purpose: explain structured LLM execution internals. - Inputs and outputs: `StructuredCompletionRequest`, `StructuredCompletionResponse`, schema registry entries, scheduler calls. - Boundaries: provider wire details stay in `internal/framework/llm`; prompts and schemas are owned by modules or generic prompt helpers. - Config fields used: `llm_profiles`, timeout, retries, concurrency, API key environment handling. - Adapters used: OpenAI-compatible HTTP client and scheduler. - Failure behavior: validation errors before calls; retryable provider errors; redacted error messages. - Tests to inspect before changing: `internal/framework/llm/*_test.go`, `internal/framework/prompt/*_test.go`, spell prompt/schema tests. - Architectural invariants: no secrets in errors/diagnostics; no domain prompt logic in provider adapters. ### Diagnostics - Path: `docs/internal/diagnostics.md` - Purpose: explain diagnostics implementation. - Inputs and outputs: invocation metadata, redacted effective config, resolved pipeline, run manifest, warnings, run report, error log. - Boundaries: diagnostics writes inspection artifacts; durable user output is written by CLI/output modules. - Config fields used: diagnostics work dir and retention mode. - Adapters used: none external. - Failure behavior: diagnostics write failures fail the CLI command with context; retention removes or preserves the run directory based on result and warnings. - Tests to inspect before changing: `internal/core/diagnostics/*_test.go`, CLI diagnostics tests. - Architectural invariants: diagnostics must not expose secrets; cleanup must use narrow paths. ## Integration Documentation Plan ### Seriatim Minimal Transcript JSON - Path: `docs/integrations/seriatim.md` - External system or contract: Seriatim minimal transcript JSON. - Current usage: parsed by the `seriatim` input adapter into a generic source document. - Version or compatibility notes: repository currently supports only the minimal shape implemented by `internal/modules/input/seriatim`. - What should be documented: accepted fields, validation, source mapping, metadata keys, capabilities, example. - What should not be documented: future Seriatim variants or D&D extraction behavior. ### OpenAI-Compatible Structured Output - Path: `docs/integrations/openai-compatible.md` - External system or contract: OpenAI-compatible chat completions API with `response_format.type=json_schema`. - Current usage: production LLM client posts to `/chat/completions` and decodes assistant JSON content. - Version or compatibility notes: compatibility is defined by the implemented request and response fields in `internal/framework/llm`. - What should be documented: endpoint construction, auth header behavior, request shape summary, response assumptions, retry behavior, config links. - What should not be documented: comprehensive provider API reference or unsupported providers. ### Durable JSON Output - Path: `docs/integrations/json-output.md` - External system or contract: file-format contract for Notarius JSON output. - Current usage: produced by the `json` output encoder and written by the CLI. - Version or compatibility notes: manifest includes schema version and resolved pipeline provenance; exact envelope versioning should match implemented fields. - What should be documented: file names, JSON shapes, artifact grouping, source references, rejected artifacts, warnings, filename sanitization. - What should not be documented: future output formats or remote storage. ### D&D Spell-Cast Artifacts - Path: `docs/integrations/dnd-spell-artifacts.md` - External system or contract: durable `dnd.spell_cast` artifact payload and validation contract. - Current usage: produced by the `dnd/spells` extractor and serialized by JSON output. - Version or compatibility notes: artifact type `dnd.spell_cast`, schema version `v1`; response schema asset `dnd_spells.v1.json` is internal to extraction. - What should be documented: payload fields, source references, rejection reason codes, prompt/schema manifest metadata, limits. - What should not be documented: unimplemented D&D item, NPC, combat, or rules extraction. ## Recommended Implementation Sequence ### Stage 1: Root Orientation And Core References - Goal: make the project immediately understandable and add required public references. - Files to create/update/delete/move: rewrite `README.md`; create `docs/cli.md`; create `docs/config.md`; update examples only if needed for clarity and tests. - Repository areas to inspect: `internal/cli/run.go`, `internal/cli/run_test.go`, `internal/core/config`, `examples/`. - Acceptance criteria: README is concise; CLI and config docs are canonical and describe only implemented behavior; maintained example commands match tests. - Suggested validation commands: `go test ./internal/cli ./internal/core/config`; `go test ./...` if examples changed. - One prompt? Yes, if kept focused on README, CLI, and config only. ### Stage 2: Operations And Troubleshooting - Goal: document durable output, diagnostics, retention, and common recovery paths. - Files to create/update/delete/move: create `docs/operations.md`; create `docs/troubleshooting.md`. - Repository areas to inspect: `internal/cli/run.go`, `internal/core/diagnostics`, `internal/modules/output/json`, `internal/framework/llm`, relevant tests. - Acceptance criteria: operations doc names implemented output and diagnostics files; troubleshooting entries map to implemented errors; no remote storage, resume command, or archive behavior is documented. - Suggested validation commands: `go test ./internal/cli ./internal/core/diagnostics ./internal/modules/output/json ./internal/framework/llm`. - One prompt? Yes. ### Stage 3: Developer Policy And Internal Docs - Goal: add required developer workflow and internal component documentation. - Files to create/update/delete/move: create `docs/policy/development.md`; create `docs/internal/overview.md`; create `docs/internal/pipeline.md`; create `docs/internal/modules.md`; create `docs/internal/llm.md`; create `docs/internal/diagnostics.md`. - Repository areas to inspect: `AGENTS.md`, `go.mod`, `docs/policy`, `internal/framework`, `internal/core`, `internal/modules`, `internal/cli/catalog.go`. - Acceptance criteria: docs preserve architecture-policy boundaries; internal docs cover implemented components only; development doc gives actionable commands and contribution patterns without duplicating reference docs. - Suggested validation commands: `go test ./...`; `go vet ./...`; `go build ./cmd/notarius`. - One prompt? Possibly too large. If needed, split into Stage 3A (`development.md` and `overview.md`) and Stage 3B (component docs). ### Stage 4: Integration And Artifact Contracts - Goal: place external and durable file-format contracts in canonical integration docs. - Files to create/update/delete/move: update `docs/integrations/seriatim.md`; create `docs/integrations/openai-compatible.md`; create `docs/integrations/json-output.md`; create `docs/integrations/dnd-spell-artifacts.md`; delete or replace `docs/integrations/dnd-spells.md` after its content is split. - Repository areas to inspect: `internal/modules/input/seriatim`, `internal/framework/llm`, `internal/modules/output/json`, `internal/core/artifacts`, `internal/modules/extract/dnd/spells`. - Acceptance criteria: integration docs document actual external/file-format contracts; no stale claim that CLI run is unimplemented; D&D details are kept out of generic docs. - Suggested validation commands: `go test ./internal/modules/input/seriatim ./internal/framework/llm ./internal/modules/output/json ./internal/modules/extract/dnd/spells`. - One prompt? Yes. ### Stage 5: Roadmap Cleanup And Link Verification - Goal: remove completed planning clutter and verify the final documentation tree. - Files to create/update/delete/move: delete completed roadmap files or reduce them to genuine future work; update links across README and docs; keep `docs/roadmap/documentation.md` only if remaining documentation work exists. - Repository areas to inspect: all docs, examples, roadmap files. - Acceptance criteria: future/planned behavior appears only under `docs/roadmap/`; completed MVP implementation details are documented in canonical current-behavior docs; links resolve; no stale template text remains. - Suggested validation commands: `go test ./...`; `go vet ./...`; `go build ./cmd/notarius`; grep checks from the validation plan. - One prompt? Yes. ## Validation Plan Run these checks during or after implementation: - `go test ./...` - `go vet ./...` - `go build ./cmd/notarius` - `go test ./internal/cli` after CLI docs or examples change. - `go test ./internal/core/config` after config docs or examples change. - `go test ./internal/modules/input/seriatim` after Seriatim docs/examples change. - `go test ./internal/modules/extract/dnd/spells` after spell artifact docs change. - `go test ./internal/modules/output/json` after JSON output docs change. - `go test ./internal/framework/llm` after OpenAI-compatible docs change. No automated documentation link checker currently exists in the repository. Future implementation agents should manually verify Markdown links or add a tool only if the project adopts one deliberately. Recommended grep checks: ```sh rg -n 'go-application-template|does not yet|not yet implemented|provisional|Likely future|CLI `run` workflow' README.md docs examples --glob '!docs/policy/**' --glob '!docs/roadmap/**' rg -n 'NPC|item|combat|Obsidian|Markdown' README.md docs examples --glob '!docs/roadmap/**' rg -n 'TODO|FIXME' README.md docs examples ``` Manual review items: - Confirm README remains short and orientation-focused. - Confirm `docs/cli.md` contains every implemented command and flag from `internal/cli/run.go`. - Confirm `docs/config.md` contains every implemented file config field and env override from `internal/core/config`. - Confirm examples are secret-free and covered by tests where practical. - Confirm roadmap docs do not masquerade as current-behavior docs. - Confirm no docs mention unimplemented NPC, item, combat, Markdown, Obsidian, remote storage, resume, or DAG behavior except under roadmap limitations or explicit out-of-scope notes. ## Open Questions None. The repository evidence is sufficient to plan the documentation migration.