Files
narratio/docs/roadmap/documentation.md

356 lines
17 KiB
Markdown

# Documentation Policy And Structure Alignment
## Status
Proposed.
## Purpose
Align Narratio's documentation policy, organization, and maintenance practices
with the current Notarius approach while preserving Narratio-specific product,
operational, and integration needs.
The resulting documentation set should assign each authoritative topic to one
canonical owner, distinguish current behavior from future work, make audience
boundaries explicit, and minimize duplicated contracts that can drift as the
application changes.
This roadmap defines the scope and intended final state. Execution guidance is
maintained separately in the [Implementation Plan](implementation.md).
## Motivation
Narratio already has substantial user, operator, integration, and internal
documentation, but its documentation policy predates the current Notarius
policy. The existing policy prescribes document profiles and detailed outlines
without defining ownership boundaries precisely enough. Several policy files
also refer to obsolete or nonexistent paths, and some concrete inventories and
contract details are repeated across documents.
The alignment should retain useful Narratio documentation while adopting the
stronger Notarius principles:
- one canonical owner for each authoritative fact;
- current behavior outside the roadmap and future behavior inside it;
- audience-appropriate detail;
- maintained, valid, secret-free examples;
- explicit boundaries among user, operator, integration, architecture, and
internal documentation;
- a defined lifecycle for architectural decision records; and
- verification of documentation against implemented behavior.
## Target Documentation Model
### Canonical Ownership
The final documentation policy should assign the following responsibilities.
| Topic | Canonical owner | Intended responsibility |
| --- | --- | --- |
| Product orientation and minimal end-to-end quickstart | `README.md` | Explain what Narratio is, why it is useful, show the shortest successful invocation, and route readers onward. |
| Contributor entry point | `docs/development.md` | Provide a task-oriented reading guide, baseline validation commands, and links to canonical policies and contracts. |
| Current application architecture | `docs/policy/architecture.md` | Define system shape, normative ownership, dependency direction, boundaries, invariants, safety properties, and non-goals. |
| Documentation organization | `docs/policy/documentation.md` | Define canonical ownership, audience boundaries, maintenance rules, and the ADR and document lifecycle. |
| Testing policy | `docs/policy/testing.md` | Define test philosophy, risk-based sufficiency, test boundaries, doubles, coverage guidance, and test lifecycle decisions. |
| CLI contract | `docs/cli.md` | Define commands, arguments, flags, invocation semantics, output conventions, and exit behavior. |
| Configuration contract | `docs/config.md` | Define discovery, precedence, schemas, fields, defaults, environment overrides, and validation rules. |
| Operations | `docs/operations.md` | Define runtime workflows, physical state layout, resume, cleanup, permissions, recovery, and operational limits. |
| Troubleshooting | `docs/troubleshooting.md` | Provide symptom-driven diagnosis and safe remedies, linking to the owning CLI, configuration, operations, or integration contract. |
| External and durable integration contracts | `docs/integrations/` | Define the external formats, protocols, logical artifact shapes, and compatibility behavior Narratio relies on. |
| Implemented component inventory | `docs/internal/overview.md` | Inventory current packages and components, summarize their implemented responsibilities, and route readers to focused internal documents. |
| Internal component behavior | Other files under `docs/internal/` | Explain implementation flow, internal collaborators, state transitions, package-local guarantees and failures, and relevant tests. |
| Architectural decision history | `docs/adr/` | Record significant decisions, alternatives, rationale, consequences, and supersession history when ADRs are warranted. |
| Future work and implementation status | `docs/roadmap/` | Describe proposed, accepted, deferred, rejected, or completed work and its implementation status. |
| Complete copyable artifacts | `examples/` | Hold maintained configuration, inputs, and other files intended to be copied or run. |
Documents for interfaces that Narratio does not expose should not be created as
placeholders. In particular, public API or consumer documentation should be
added only if a corresponding public interface exists.
### Structural Parity With Notarius
Narratio should follow the current Notarius policy layout where the same
responsibility exists. In the aligned structure:
- `docs/internal/overview.md` is the internal component inventory;
- `docs/development.md` is the first-read contributor landing page;
- all navigation and relative links use those canonical paths;
- `docs/adr/` and sequentially numbered ADR filenames are used when architectural
decisions need durable records; and
- Narratio-specific canonical documents remain, including the troubleshooting
guide, stage documentation, and integration contracts.
Structural parity does not require placeholder documents, removal of useful
Narratio-specific material, or identical prose where the applications have
different contracts.
## Policy Alignment
### Documentation Policy
The documentation policy should follow the current Notarius policy, adapted to
Narratio. It should:
- define one canonical owner for every contract or authoritative fact;
- identify volatile details that must not be maintained in multiple places;
- permit non-owning documents to provide only short, stable summaries with
links;
- describe implemented behavior only outside `docs/roadmap/`;
- allow accepted ADRs to precede implementation without presenting the
decision as implemented behavior;
- distinguish user, operator, contributor, integration, and internal detail;
- require complete copyable files to live under `examples/`;
- define documentation security and privacy requirements;
- specify ownership boundaries for orientation, CLI, configuration,
operations, troubleshooting, integrations, architecture, and internals;
- define the ADR format and supersession rules; and
- require contract, example, link, and sensitive-data checks when behavior or
documentation changes.
### Architecture Policy
The architecture policy should remain the normative owner of Narratio's system
boundaries and invariants rather than a concrete package inventory or secondary
testing and documentation policy. It should:
- preserve Narratio's explicit, stage-driven orchestration model;
- preserve adapter, manifest, artifact, path-safety, publish-commit, security,
privacy, and determinism invariants;
- link to the testing and documentation policies for their general rules;
- link to internal documentation for implemented component mechanics;
- link to external contracts rather than redefining them; and
- use the canonical `docs/policy/` paths consistently.
### Testing Policy
The copied Notarius testing policy is Narratio's canonical testing policy. Its
place in the documentation set requires:
- linking it from architecture and contributor guidance;
- removing or reducing duplicated general test philosophy elsewhere;
- retaining subsystem-specific test guidance only where it helps maintain a
concrete contract; and
- ensuring project commands and examples remain accurate for Narratio.
The alignment should not require Narratio and Notarius to have identical test
suites. The shared policy governs how Narratio evaluates test value,
boundaries, doubles, regression protection, coverage, and sufficiency.
### Contributor Policy
The development document should be a concise contributor entry point. It should
route maintainers and coding agents to canonical documentation based on the
task at hand and provide the minimum repository orientation and validation
commands needed to begin work.
Detailed package inventories belong in `docs/internal/overview.md`;
architecture rules belong in the architecture policy; application contracts
belong in their user, operator, or integration documents; and general testing
rules belong in the testing policy. Any retained change recipes should avoid
redefining those owners.
## Documentation Set Alignment
### README And Navigation
Keep the README short and outward-facing. It should own product orientation and
one minimal successful workflow, then link to the CLI, configuration,
operations, troubleshooting, contributor, architecture, testing, integration,
and internal entry points as appropriate.
Navigation should use the final canonical paths and should not rely on obsolete
aliases or duplicate index files.
### CLI, Configuration, And Operations
Separate these contracts consistently:
- CLI documentation answers how Narratio is invoked and what its command-line
interface means;
- configuration documentation answers how configuration is discovered,
interpreted, defaulted, overridden, and validated; and
- operations documentation answers what happens to runtime state and how an
operator runs, resumes, cleans, diagnoses, or recovers the application.
Cross-cutting workflows should have one task-oriented owner and link to the
other contracts rather than copying their flags, fields, defaults, or path
definitions.
### Troubleshooting
Keep troubleshooting as a Narratio-specific canonical document. Each entry
should begin from an observable symptom and provide a likely cause, a safe
diagnostic step, a safe remedy, and links to the canonical contract or
operational procedure.
Troubleshooting should not become a second CLI, configuration, or operations
reference.
### Integrations
Integration documents should own the externally observable contracts Narratio
uses: subprocess behavior, file formats, protocols, logical artifact paths and
schemas, compatibility expectations, and upstream or downstream
responsibilities.
They should describe only the portions of WhisperX, Seriatim, Audita,
Scriptorium, object storage, or future integrations that Narratio actually
depends on. Internal adapter mechanics belong under `docs/internal/`, while
configuration defaults, CLI syntax, and physical runtime placement remain with
their respective owners.
### Internal Documentation
`docs/internal/overview.md` is the canonical implemented component inventory. It
should summarize current components and route readers to focused documents
without restating normative architecture.
Focused internal documents should describe implemented behavior at useful
component boundaries, including collaborators, data and state transitions,
failures, and tests worth consulting. They may identify an external field,
file, or protocol when explaining a dependency, but should link to the
canonical contract for its definition.
The internal set should be reviewed for duplicate definitions of:
- stage order and stage contracts;
- manifest states and transitions;
- artifact identities, paths, and schemas;
- workspace and object-storage layout;
- restore, resume, cleanup, and publish behavior;
- adapter invocation and compatibility rules; and
- configuration fields and defaults.
### Examples
Complete copyable configuration and input files should remain under
`examples/`. Documentation may include small illustrative fragments, but it
should link to maintained examples instead of embedding alternate complete
files.
Examples should remain secret-free, loadable, valid, and covered by automated
tests where practical. Their commands, filenames, fields, defaults, and
templates must agree with implemented Narratio behavior.
### Roadmaps And ADRs
Roadmaps should own future work, implementation status, and sequencing. They
must not be treated as current behavior references. When roadmap work lands,
the relevant current-behavior documents should be updated in the same change,
and the roadmap status should accurately reflect completion.
Use ADRs for significant architectural decisions whose context, alternatives,
and consequences should remain durable. Use the lightweight Nygard structure:
title, status, date, context, decision, alternatives considered, and
consequences. Accepted decision content is immutable; a later change should
supersede it with a new ADR. Rejected architectural alternatives belong in the
ADR, while rejected product ideas remain roadmap material.
No empty `docs/adr/` directory or retrospective ADR catalog is required merely
to satisfy structural parity.
## Canonical-Ownership Audit
The existing documentation should be audited for repeated authoritative facts,
with priority given to details most likely to drift:
- commands, arguments, flags, output conventions, and exit behavior;
- configuration discovery, fields, defaults, environment variables, and
validation rules;
- stage order, prerequisites, invalidation, skip, force, resume, and failure
semantics;
- manifest states, artifact identities, and publish commit behavior;
- local workspace, cache, spool, log, report, and remote object paths;
- integration arguments, formats, schemas, timeouts, and compatibility rules;
and
- security, credential, permission, and sensitive-artifact handling.
For each repeated fact, choose the canonical owner defined by policy. Remove
the duplicate definition or reduce it to the smallest stable summary needed
for orientation, with a link to the owner.
This audit should preserve useful task-oriented guidance. Canonical ownership
means eliminating parallel contract definitions, not forcing readers to
assemble every workflow from isolated reference fragments.
## Intended Final State
When this roadmap is complete:
- Narratio's documentation policy closely matches the current Notarius policy
in principles, organization, terminology, and lifecycle rules;
- every authoritative documentation topic has one stated canonical owner;
- `docs/internal/overview.md` is the internal component index and no references
to `docs/internal/README.md` remain;
- all policy and navigation links use real canonical paths;
- architecture, documentation, testing, and contributor policies have distinct
responsibilities and link to one another;
- current-behavior documentation contains no unimplemented claims;
- roadmap documents clearly own future behavior and implementation status;
- user and operator documents avoid unnecessary implementation detail;
- internal documents do not redefine external or user-facing contracts;
- volatile commands, fields, defaults, schemas, paths, and guarantees are not
maintained authoritatively in multiple places;
- complete examples live under `examples/` and remain valid and secret-free;
- the documentation remains concise enough to navigate but complete enough for
users, operators, developers, integrators, and coding agents; and
- future behavior changes can identify the documentation that must change by
consulting the ownership table.
## Validation
Completion should include:
- a repository-wide review of Markdown links and canonical paths;
- verification of documented commands and flags against the CLI
implementation;
- verification of configuration fields, defaults, environment overrides, and
validation rules against the configuration implementation;
- verification of stage, manifest, artifact, restore, resume, cleanup, and
publish claims against implemented behavior;
- validation of maintained examples through existing runtime config paths and
tests;
- `go test ./...`;
- confirmation that non-owning documents summarize and link rather than
redefine volatile contracts;
- confirmation that unimplemented behavior appears only under
`docs/roadmap/`, subject to the accepted-ADR exception; and
- a review for credentials, private campaign content, sensitive environment
data, and private infrastructure details.
If the repository has no automated Markdown link checker, validation should use
a focused, reproducible scripted link check supplemented by manual review of
directory links and anchors.
## Acceptance Criteria
- `docs/policy/documentation.md` expresses the Narratio-adapted canonical
ownership model and boundary rules from the current Notarius policy.
- `docs/policy/architecture.md`, `docs/policy/testing.md`, and
`docs/development.md` have clear, non-overlapping responsibilities.
- `docs/policy/development.md` has moved to `docs/development.md`, with all
inbound links updated.
- `docs/internal/README.md` has been renamed to
`docs/internal/overview.md`, with all inbound links updated.
- README, CLI, configuration, operations, troubleshooting, integration,
internal, roadmap, example, and ADR responsibilities match the ownership
model.
- No known obsolete documentation paths remain.
- High-volatility contracts have one authoritative definition.
- Current and future behavior are clearly separated.
- Maintained examples and documented commands agree with the implementation.
- Documentation validation and the full Go test suite pass, or any unrelated
pre-existing failure is recorded precisely.
## Non-Goals
- Changing Narratio runtime behavior solely to make existing documentation
true.
- Implementing features described by other roadmap documents.
- Rewriting every document for stylistic uniformity when its ownership and
content are already correct.
- Copying Notarius product, CLI, configuration, integration, or internal
contracts into Narratio.
- Creating placeholder API, consumer, ADR, or integration documents for
interfaces that do not exist.