# Documentation Roadmap ## Purpose This roadmap defines a documentation-only refresh plan for `distributor` after the local MVP and cleanup roadmap implementation. The goal is to make current-behavior documentation concise, accurate, and compliant with `docs/policy/documentation.md` while keeping planned, aspirational, or unimplemented behavior under `docs/roadmap/`. This file is written for an LLM coding agent that will implement the documentation refresh in stages. It does not itself rewrite current user, policy, internal, or example documentation. ## Repository Documentation Inventory The current documentation and examples reviewed are: | Path | Current status | Notes | | --- | --- | --- | | `README.md` | Keep and lightly update | Short, accurate orientation page with a runnable local example command. | | `docs/cli.md` | Keep and update against CLI tests | Covers `version`, `run`, `validate`, and `inspect`; should be checked against command help and parser tests. | | `docs/config.md` | Keep and tighten | Current config reference documents local execution and also accepted SSH/S3 config fields. It must clearly distinguish config validation from executable backend support. | | `docs/operations.md` | Keep and expand slightly | Covers local workflow, destination state, retry behavior, cleanup, fan-out failure handling, and caveats. | | `docs/troubleshooting.md` | Added | Covers recurring local MVP failure modes. | | `docs/policy/architecture.md` | Keep and clarify where needed | Development policy is broad and includes future adapter direction. Wording should not imply SSH/S3 adapters currently exist. | | `docs/policy/development.md` | Updated | Contains contributor and agent workflow guidance. | | `docs/policy/documentation.md` | Keep | Canonical documentation policy. No change required unless the policy itself changes. | | `docs/internal/bundle.md` | Keep and verify | Describes implemented bundle parsing, discovery, validation, and digest semantics. | | `docs/internal/notify.md` | Keep and verify | Accurately states current no-op notification behavior. | | `docs/internal/publish.md` | Keep and verify | Describes planning, execution, replacement, safety, and current local scope. | | `docs/internal/state.md` | Keep and verify | Describes implemented `.distributor.json` state and comparison behavior. | | `docs/internal/storage.md` | Keep and verify | Describes storage interface, typed errors, path rules, traversal, and managed deletion. | | `docs/internal/transform.md` | Keep and verify | Describes Markdown-to-HTML sidecar behavior and transform boundaries. | | `docs/internal/app.md` | Added | Covers orchestration, backend factory, transform registry, dry-run, summaries, and notifier handoff. | | `docs/internal/config.md` | Added | Covers config loading, defaults, validation, accepted-but-not-executable backends, and example tests. | | `docs/internal/local-backend.md` | Missing, optional | Local adapter behavior may remain in `docs/internal/storage.md`; create this only if local filesystem safety detail outgrows that doc. | | `docs/integrations/markdown.md` | Added | Documents current Goldmark-backed Markdown rendering behavior. | | `docs/roadmap/audit.md` | Historical roadmap/report | Keep under roadmap unless replaced by a new audit. | | `docs/roadmap/cleanup.md` | Historical or completed roadmap | Keep under roadmap; optionally add completion status in the documentation refresh. | | `docs/roadmap/config.md` | Roadmap | Keep as planning material; avoid linking to it as current config reference. | | `docs/roadmap/contracts.md` | Roadmap | Keep as planning material; current implemented contracts should be summarized in `docs/internal/` and user docs as needed. | | `docs/roadmap/implementation.md` | Roadmap | Keep as implementation history plus future stages; status should be clear. | | `docs/roadmap/packages.md` | Roadmap | Keep as planning material; current package docs belong under `docs/internal/`. | | `docs/roadmap/storage.md` | Roadmap | Keep as planning material; current storage contract belongs in `docs/internal/storage.md`. | | `examples/local-to-local.yml` | Keep | Minimal local config; load-tested. | | `examples/local-publish.yml` | Keep | Runnable local publication example used by README and CLI docs. | | `examples/local-html.yml` | Keep | Runnable local HTML example. | | `examples/fan-out.yml` | Updated | Local-only runnable fan-out example. | | `examples/source-bundle/` | Keep | Copyable valid source bundle fixture for local CLI examples. | Implementation source areas inspected for documentation truth: - CLI entrypoints: `cmd/distributor`, `internal/cli`. - Application orchestration: `internal/app`. - Config loading/defaults/validation: `internal/config`. - Bundle manifest, discovery, and validation: `internal/bundle`. - Destination state: `internal/state`. - Storage abstraction and local/fake backends: `internal/storage`, `internal/storage/fake`, `internal/adapters/local`. - Publish planning and execution: `internal/publish`. - Transform registry and Markdown renderer: `internal/transform`, `internal/transform/markdown`. - Notification hook: `internal/notify`. - Tests and fixtures: package tests, `internal/testutil`, `examples/`, and `internal/bundle/testdata`. Absent areas from earlier planning that should not be documented as implemented: - `internal/adapters/ssh` - `internal/adapters/s3` - `internal/stage` - `internal/modules` - `internal/validators` - `internal/artifacts` - `internal/manifest` - `internal/schema` - `internal/report` - `pkg` ## Policy Compliance Assessment Required current-behavior docs now exist for the config-driven, stateful, modular CLI. Completed fixes from this refresh: - `docs/policy/development.md` contains real workflow guidance. - Non-roadmap docs are scoped to implemented behavior. SSH/S3 execution, force overwrite, and external notification adapters remain described as unavailable unless the corresponding code exists. - `examples/fan-out.yml` is local-only and runnable. Completed recommended fixes from this refresh: - `docs/troubleshooting.md` covers recurring local MVP failure modes. - `docs/internal/app.md` and `docs/internal/config.md` provide current-behavior internal references. - `docs/integrations/markdown.md` documents current Goldmark-backed rendering behavior. - Historical roadmap status notes were added where useful. No broad rewrite is needed for `README.md`, `docs/cli.md`, `docs/config.md`, or `docs/operations.md`. They are close to the implemented local MVP and should be tightened against code and tests. ## Target Documentation Set ### `README.md` - Audience: users, administrators, operators. - Purpose: short project orientation and fastest useful local command. - Canonical scope: project purpose, elevator pitch, one local quickstart command, links to current docs. - Recommended outline: title, one-sentence description, local example command, links. - Source-of-truth repo areas to inspect: `internal/cli`, `internal/app/run.go`, `examples/local-publish.yml`, `docs/cli.md`. - Acceptance criteria: command is executable in the current local MVP; README does not describe SSH, S3, force overwrite, notification adapters, or future roadmap behavior as available. ### `docs/cli.md` - Audience: users, administrators, operators. - Purpose: canonical CLI reference. - Canonical scope: commands, flags, useful workflows, command output expectations, local-only limits. - Recommended outline: shortest useful command, command overview, flag reference, common workflows, diagnostics and recovery commands. - Source-of-truth repo areas to inspect: `internal/cli/*.go`, `internal/cli/*_test.go`, `internal/app/validate.go`, `internal/app/inspect.go`, `internal/app/run.go`. - Acceptance criteria: every documented command and flag exists; `validate` and `inspect` are documented as local path commands; `run --dry-run` output is described without over-specifying every line; unsupported remote execution is stated clearly. ### `docs/config.md` - Audience: administrators, operators, advanced users. - Purpose: canonical configuration reference. - Canonical scope: config file path behavior, minimal local config, production-oriented local config, full schema, defaults, validation rules, secrets handling, links to examples. - Recommended outline: config file location, minimal local config, production-oriented local config, reference, defaults, secrets, examples. - Source-of-truth repo areas to inspect: `internal/config/config.go`, `internal/config/defaults.go`, `internal/config/load.go`, `internal/config/validate.go`, `internal/config/load_test.go`, `examples/*.yml`. - Acceptance criteria: fields and defaults match code; `KnownFields(true)` behavior is noted where useful; SSH/S3 fields are described as accepted by config validation but not implemented for execution; `on_digest_mismatch: warn` and unmanaged overwrite are not documented as active options. ### `docs/operations.md` - Audience: administrators, operators. - Purpose: operating and recovery notes for the implemented local MVP. - Canonical scope: local workflow, filesystem layout, destination state, dry-run, retry behavior, replacement safety, failed write cleanup, caveats. - Recommended outline: normal workflow, filesystem layout, destination state, dry-run and planning, retry and replacement behavior, failure handling, cleanup behavior, caveats. - Source-of-truth repo areas to inspect: `internal/app/run.go`, `internal/publish/plan.go`, `internal/publish/execute.go`, `internal/publish/reconcile.go`, `internal/publish/safety.go`, `internal/state`, `internal/adapters/local`. - Acceptance criteria: describes only local-to-local operation; explains `.distributor.json` as the managed sentinel; distinguishes skip, replace, conflict, and unmanaged destination behavior; does not promise resume, remote storage, force overwrite, or external notifications. ### `docs/troubleshooting.md` - Audience: administrators, operators. - Purpose: symptom-oriented fixes for common local MVP failures. - Canonical scope: implemented failure modes only. - Recommended outline: one entry per symptom with symptom, likely cause, diagnostic step, safe fix, and relevant link. - Source-of-truth repo areas to inspect: `internal/config/validate.go`, `internal/bundle/validate.go`, `internal/state/compare.go`, `internal/publish/plan.go`, `internal/publish/output.go`, CLI tests. - Acceptance criteria: entries are actionable and do not suggest unsafe deletion; remote backend failures are described only as unsupported execution; all fixes link to `docs/cli.md`, `docs/config.md`, or `docs/operations.md` where useful. ### `docs/policy/architecture.md` - Audience: developers, LLM coding agents. - Purpose: development principles and architectural invariants. - Canonical scope: project shape, package boundaries, state/persistence philosophy, external integration philosophy, errors/logging, tests, docs, non-goals. - Recommended outline: keep the existing outline. - Source-of-truth repo areas to inspect: full package tree, implemented internal docs, roadmap files for explicitly future work. - Acceptance criteria: still gives long-term architecture direction, but any unimplemented adapter packages or future capabilities are worded as planned/target architecture rather than implemented behavior. ### `docs/policy/development.md` - Audience: developers, LLM coding agents. - Purpose: contributor and agent workflow. - Canonical scope: repo layout, build/test commands, coding conventions, dependency policy, how to add config fields, CLI flags, backends, transforms, examples, and docs. - Recommended outline: repository layout, common commands, coding conventions, dependency policy, adding config fields, adding CLI flags, adding storage backends, adding transforms, updating examples, documentation expectations. - Source-of-truth repo areas to inspect: `go.mod`, `cmd/distributor`, `internal/*`, `examples`, tests, `docs/policy/architecture.md`, `docs/policy/documentation.md`. - Acceptance criteria: no placeholder content remains; commands are real; workflow guidance protects current boundaries; examples and docs update rules match policy. ### `docs/internal/app.md` - Audience: developers, LLM coding agents. - Purpose: implemented orchestration reference. - Canonical scope: `Run`, `Validate`, `Inspect`, backend factory, transform registry, dry-run, per-destination fan-out, failure aggregation, notifier invocation. - Recommended outline: purpose, inputs and outputs, run flow, backend and transform registration, dry-run behavior, failure behavior, notification behavior, tests to inspect, invariants. - Source-of-truth repo areas to inspect: `internal/app/*.go`, `internal/app/*_test.go`, `internal/cli/root_test.go`. - Acceptance criteria: documents current local-only backend execution and the no-op default notifier; does not introduce a generic stage framework that does not exist. ### `docs/internal/config.md` - Audience: developers, LLM coding agents. - Purpose: internal config loading/default/validation reference. - Canonical scope: YAML decoding, known-field rejection, defaults, validation error model, backend config shape, publish/transform validation helper, example load tests. - Recommended outline: purpose, inputs and outputs, loading flow, defaults, validation responsibilities, executable support boundary, tests to inspect, invariants. - Source-of-truth repo areas to inspect: `internal/config/*.go`, `internal/config/*_test.go`, `docs/config.md`, `examples/*.yml`. - Acceptance criteria: documents that SSH/S3 config validation exists while execution does not; keeps user-facing config reference canonical in `docs/config.md`. ### `docs/internal/bundle.md` - Audience: developers, LLM coding agents. - Purpose: implemented bundle contract and validation reference. - Canonical scope: `manifest.json`, discovery, validation, digest semantics, storage interactions, tests. - Recommended outline: keep current outline and verify against code. - Source-of-truth repo areas to inspect: `internal/bundle`, `internal/storage`, `internal/bundle/testdata`, `examples/source-bundle`. - Acceptance criteria: canonical digest, duplicate paths, reserved paths, symlink rejection, RFC3339 parsing, and discovery behavior match implementation. ### `docs/internal/state.md` - Audience: developers, LLM coding agents. - Purpose: destination state and comparison reference. - Canonical scope: `.distributor.json` schema, validation, output metadata, comparison outcomes. - Recommended outline: keep current outline and verify against code. - Source-of-truth repo areas to inspect: `internal/state`, `internal/publish/reconcile.go`, `internal/publish/execute.go`. - Acceptance criteria: state schema and comparison outcomes match implemented structs and tests; `distributor_version` is described as optional diagnostic metadata. ### `docs/internal/storage.md` - Audience: developers, LLM coding agents. - Purpose: storage interface and backend safety reference. - Canonical scope: logical paths, IO methods, traversal, `HasAny`, typed errors, managed deletion, local and fake backend behavior. - Recommended outline: keep current outline and add any missing implemented details that matter for callers. - Source-of-truth repo areas to inspect: `internal/storage`, `internal/storage/fake`, `internal/adapters/local`. - Acceptance criteria: matches actual `Backend` interface, `WriteOptions`, `DeleteOptions`, `ErrStopWalk`, and `storage.List` helper; does not describe raw recursive delete as available. ### `docs/internal/publish.md` - Audience: developers, LLM coding agents. - Purpose: publish planning and execution reference. - Canonical scope: request inputs, output planning, destination inspection, transfer policy, actions, replacement safety, cleanup on failed writes. - Recommended outline: keep current outline and verify against code. - Source-of-truth repo areas to inspect: `internal/publish`, `internal/app/run.go`, `internal/config/defaults.go`. - Acceptance criteria: action names match constants; transfer policy values match code; collision detection and managed deletion behavior are covered. ### `docs/internal/transform.md` - Audience: developers, LLM coding agents. - Purpose: transform registry and Markdown transform reference. - Canonical scope: transform interface, registry, Markdown sidecar output, deterministic output metadata, raw HTML behavior. - Recommended outline: keep current outline; link to integration notes if `docs/integrations/markdown.md` is created. - Source-of-truth repo areas to inspect: `internal/transform`, `internal/transform/markdown`, markdown tests. - Acceptance criteria: `.md` to `.html` sidecar naming, skipped non-Markdown files, digest metadata, and source immutability match implementation. ### `docs/internal/notify.md` - Audience: developers, LLM coding agents. - Purpose: notification hook reference. - Canonical scope: interface, no-op notifier, invocation points, non-invocation points. - Recommended outline: keep current outline and add tests to inspect if useful. - Source-of-truth repo areas to inspect: `internal/notify`, `internal/app/run.go`, `internal/app/run_test.go`. - Acceptance criteria: says no external notification adapters or user-facing notification config exist. ### `docs/integrations/markdown.md` - Audience: developers, LLM coding agents. - Purpose: concise external integration note for Markdown rendering. - Canonical scope: Goldmark dependency, renderer defaults used by `markdown.New`, raw HTML behavior as observed in tests, deterministic wrapper template, supported output mode. - Recommended outline: purpose, dependency, behavior used, behavior intentionally not customized, tests to inspect, update rules. - Source-of-truth repo areas to inspect: `go.mod`, `internal/transform/markdown`, markdown tests. - Acceptance criteria: documents only the Markdown renderer behavior actually used; does not claim full CommonMark compatibility beyond Goldmark defaults. ### `docs/roadmap/*.md` - Audience: maintainers, developers, LLM coding agents. - Purpose: future work, historical plans, accepted deferred work, and implementation prompts. - Canonical scope: unimplemented SSH/S3 adapters, force overwrite, notification adapters, future config fields, release readiness, historical cleanup/audit plans. - Recommended outline: add status notes only where useful; avoid rewriting history unless it causes confusion. - Source-of-truth repo areas to inspect: current implementation and each roadmap file. - Acceptance criteria: future work remains under `docs/roadmap/`; completed historical plans are labeled clearly enough that agents do not re-run them blindly. ## File-by-File Rewrite Guidance `README.md`: - Cover: purpose, one local quickstart, links. - Avoid: full config schema, internal package details, remote backend promises. - Link to: `docs/cli.md`, `docs/config.md`, `docs/operations.md`, `docs/roadmap/`. - Inspect: `examples/local-publish.yml`, `internal/cli`. - Stale claims to remove: any implication that remote publication is implemented. `docs/cli.md`: - Cover: real command syntax and current local workflows. - Avoid: roadmap flags such as force overwrite or remote validation. - Link to: `docs/config.md`, `docs/operations.md`, `docs/troubleshooting.md` if created. - Inspect: `internal/cli/*_test.go`. - Stale claims to remove: any command or flag not present in `internal/cli`. `docs/config.md`: - Cover: current config schema and defaults. - Avoid: presenting SSH/S3 as executable backend support. - Link to: examples and operations. - Inspect: `internal/config/defaults.go`, `internal/config/validate.go`, `internal/config/load_test.go`. - Stale claims to remove: `on_digest_mismatch: warn`, unmanaged overwrite, or force replacement as active options. `docs/operations.md`: - Cover: local destination state, managed cleanup, retry behavior, fan-out failure aggregation. - Avoid: remote storage recovery, force cleanup, external notifier delivery. - Link to: `docs/troubleshooting.md` for symptom-specific fixes. - Inspect: `internal/app/run.go`, `internal/publish/execute.go`, `internal/state`. - Stale claims to remove: any resume or recovery mechanism beyond re-running after safe cleanup. `docs/policy/development.md`: - Cover: concrete contributor workflow. - Avoid: placeholder text and invented tools. - Link to: architecture and documentation policies. - Inspect: package tree and `go.mod`. - Stale claims to remove: `# Not yet implemented`. `docs/internal/*.md`: - Cover: implemented component contracts, boundaries, failure behavior, tests to inspect. - Avoid: roadmap package names or future stages as if they exist. - Link to: current user docs only when relevant. - Inspect: package code and tests. - Stale claims to remove: broad future backend behavior outside local/fake abstractions. `examples/`: - Cover: valid, maintained, copyable examples. - Avoid: examples that look runnable but fail because the backend execution is unsupported. - Link from: README, CLI docs, config docs. - Inspect: `internal/config/load_test.go` and optional CLI smoke commands. - Stale claims to remove: executable remote fan-out examples until remote backends exist. ## Examples Plan Keep these examples: - `examples/source-bundle/`: valid source bundle used by local CLI examples. - `examples/local-to-local.yml`: minimal local config. Use in config docs as the minimal schema example. - `examples/local-publish.yml`: primary runnable quickstart config. - `examples/local-html.yml`: runnable Markdown-to-HTML example. Revise `examples/fan-out.yml` in the documentation refresh: - Preferred option: replace it with a local-only fan-out example using two local destinations, such as one source archive destination and one HTML destination under `workspace/`. - Alternative option: move the SSH/S3 fan-out material under a roadmap file and remove it from `examples/`. - Do not keep a non-roadmap example that appears copyable for execution but uses unsupported SSH/S3 execution. Future example tests should continue loading every YAML file under `examples/`. If `examples/fan-out.yml` becomes local-only, add or update a CLI/app test that exercises local fan-out behavior or rely on existing fan-out tests if they cover equivalent behavior. ## Internal Documentation Plan Update existing internal docs only after checking package code and tests. Create these internal docs: - `docs/internal/app.md`: orchestration, backend factory, transform registry, dry-run behavior, fan-out, failure aggregation, notifier invocation. - `docs/internal/config.md`: YAML loading, defaults, validation, accepted config fields, unsupported execution boundary, example load tests. Keep and verify these internal docs: - `docs/internal/bundle.md` - `docs/internal/state.md` - `docs/internal/storage.md` - `docs/internal/publish.md` - `docs/internal/transform.md` - `docs/internal/notify.md` Defer these internal docs unless the corresponding implementation grows: - `docs/internal/local-backend.md`: create only if local adapter details become too long for `docs/internal/storage.md`. - `docs/internal/logging.md`: defer until logging has behavior beyond placeholders. - `docs/internal/testutil.md`: defer unless test fixture helpers become a stable contributor-facing contract. Do not create docs for packages or directories that do not exist. ## Integration Documentation Plan No external service integration docs should be created for SSH, S3, or notification services until those integrations are implemented. Recommended current integration doc: - `docs/integrations/markdown.md` This should document Goldmark usage because Markdown rendering is an implemented external file-format integration with externally visible output. Keep it concise and limited to: - dependency and version source: `go.mod`; - renderer construction: `goldmark.New()`; - sidecar output path behavior owned by `internal/transform/markdown`; - raw HTML behavior covered by tests; - wrapper template behavior; - tests to inspect before changing renderer behavior. Do not create separate YAML integration docs unless configuration parsing behavior outgrows `docs/config.md` and `docs/internal/config.md`. ## Recommended Implementation Sequence ### Stage 1: Establish Documentation Status and Contributor Policy - Goal: remove the required policy placeholder and classify active versus historical documentation. - Files to create/update/delete/move: update `docs/policy/development.md`; optionally add short status notes to `docs/roadmap/audit.md` and `docs/roadmap/cleanup.md`. - Repo areas to inspect: `go.mod`, `cmd/distributor`, `internal/*`, `examples`, `docs/policy/architecture.md`, `docs/policy/documentation.md`. - Acceptance criteria: `docs/policy/development.md` contains real workflow guidance; no active policy doc says "Not yet implemented"; roadmap status notes do not change current behavior docs. - Suggested validation commands: `rg -n "Not yet implemented" docs/policy README.md docs/*.md docs/internal`; `git diff -- docs/policy/development.md docs/roadmap/audit.md docs/roadmap/cleanup.md`. - One prompt: yes. ### Stage 2: Tighten Current User and Operator Docs - Goal: make README, CLI, config, and operations docs exactly match the local MVP. - Files to create/update/delete/move: update `README.md`, `docs/cli.md`, `docs/config.md`, `docs/operations.md`; create `docs/troubleshooting.md`. - Repo areas to inspect: `internal/cli`, `internal/app`, `internal/config`, `internal/publish`, `internal/state`, `examples`. - Acceptance criteria: user docs describe local execution, local validation/inspection, current config schema, current defaults, current state/retry behavior, and clear unsupported remote execution boundaries. - Suggested validation commands: `rg -n "force|allow_unmanaged|on_digest_mismatch: warn|warn" README.md docs/cli.md docs/config.md docs/operations.md docs/troubleshooting.md`; `rg -n "ssh|s3|remote|notification" README.md docs/cli.md docs/config.md docs/operations.md docs/troubleshooting.md`. - One prompt: yes. ### Stage 3: Make Examples Fully Runnable or Clearly Roadmap-Only - Goal: ensure `examples/` contains implemented, copyable examples only. - Files to create/update/delete/move: update or replace `examples/fan-out.yml`; update links in `README.md`, `docs/cli.md`, and `docs/config.md` if needed; move remote fan-out material to a roadmap section if preserving it is useful. - Repo areas to inspect: `internal/config/load_test.go`, `internal/app/run_test.go`, `examples`. - Acceptance criteria: every example under `examples/` is valid current config and does not rely on unsupported remote execution; primary examples remain load-tested. - Suggested validation commands: `go test ./internal/config`; optional `go run ./cmd/distributor run --config examples/local-publish.yml --dry-run`; optional `go run ./cmd/distributor run --config examples/local-html.yml --dry-run`. - One prompt: yes. ### Stage 4: Complete Internal Component Docs - Goal: give future agents a current-behavior internal map before remote backends are added. - Files to create/update/delete/move: create `docs/internal/app.md` and `docs/internal/config.md`; update existing `docs/internal/*.md` as needed. - Repo areas to inspect: `internal/app`, `internal/config`, `internal/bundle`, `internal/state`, `internal/storage`, `internal/storage/fake`, `internal/adapters/local`, `internal/publish`, `internal/transform`, `internal/notify`, package tests. - Acceptance criteria: every major implemented component has a concise doc with purpose, inputs/outputs, boundaries, failure behavior, tests to inspect, and invariants; no internal doc describes absent SSH/S3 adapters as implemented. - Suggested validation commands: `rg -n "internal/adapters/ssh|internal/adapters/s3|not implemented|future" docs/internal`; `git diff -- docs/internal`. - One prompt: yes. ### Stage 5: Add Markdown Integration Notes - Goal: document the one implemented external file-format integration where behavior matters. - Files to create/update/delete/move: create `docs/integrations/markdown.md`; optionally link from `docs/internal/transform.md`. - Repo areas to inspect: `go.mod`, `internal/transform/markdown`, markdown tests. - Acceptance criteria: the doc is concise, version-aware through `go.mod`, and limited to current Goldmark usage and observed renderer behavior. - Suggested validation commands: `go test ./internal/transform/markdown`; `rg -n "Goldmark|markdown" docs/integrations docs/internal/transform.md`. - One prompt: yes. ### Stage 6: Final Documentation Consistency Sweep - Goal: catch stale links, stale roadmap references, and unimplemented claims outside roadmap. - Files to create/update/delete/move: any docs touched in earlier stages. - Repo areas to inspect: all docs and examples. - Acceptance criteria: documentation is current, concise, link-consistent, and policy-compliant. - Suggested validation commands: `go test ./...`; `rg -n "go-application-template|maximumdirect.net|docs/architecture.md|docs/documentation.md" README.md docs examples`; `rg -n "allow_unmanaged_overwrite|on_digest_mismatch: warn" README.md docs examples`; `rg -n "not implemented|future|planned|roadmap|ssh|s3|remote" README.md docs/*.md docs/internal docs/policy examples`. - One prompt: yes, after the prior stages are complete. ## Validation Plan Run Go tests when examples, CLI docs, config docs, or behavior-linked docs change: - `go test ./internal/config`: validates example config loading and config semantics. - `go test ./internal/cli ./internal/app`: validates documented command behavior and local run workflows. - `go test ./internal/transform/markdown`: validates documented Markdown rendering behavior. - `go test ./...`: final broad verification after documentation and example changes. Run grep checks: - `rg -n "Not yet implemented" docs/policy README.md docs/*.md docs/internal` - `rg -n "go-application-template|docs/architecture.md|docs/documentation.md" README.md docs examples` - `rg -n "allow_unmanaged_overwrite|on_digest_mismatch: warn" README.md docs examples` - `rg -n "force overwrite|--force|remote backends are implemented|notification adapters" README.md docs/*.md docs/internal docs/policy examples` - `rg -n "ssh|s3|remote" README.md docs/*.md docs/internal docs/policy examples` The final SSH/S3/remote grep is not expected to return zero results. Manually review every result and confirm it is either: - under `docs/roadmap/`; - a clearly stated unsupported-execution boundary; - a config-validation reference that does not imply executable support; or - an architecture policy statement phrased as future/target direction rather than implemented behavior. Manual review checklist: - README remains short. - `docs/config.md` is the only current-behavior config reference. - `docs/cli.md` is the only current-behavior CLI reference. - `docs/operations.md` covers state and recovery without unsafe deletion advice. - `docs/troubleshooting.md` is symptom-oriented and links to canonical docs. - Internal docs point to tests before changing behavior. - Examples are copyable and free of secrets. - Future work remains under `docs/roadmap/`. ## Open Questions No blocking questions remain before implementing this documentation refresh. The only non-blocking choice is how to handle `examples/fan-out.yml`: - Preferred: convert it to a local-only fan-out example so `examples/` remains fully runnable. - Acceptable: move the current SSH/S3 fan-out example into roadmap material until remote execution exists. Use the preferred option unless a maintainer explicitly wants `examples/` to include config-validated but non-executable examples.