From ff10d03978f6d0c4353fd11fe2bedf5bf95e3663 Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Sun, 1 Nov 2026 17:48:52 +0000 Subject: [PATCH] Record documentation audit findings --- docs/roadmap/documentation.md | 90 +++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 docs/roadmap/documentation.md diff --git a/docs/roadmap/documentation.md b/docs/roadmap/documentation.md new file mode 100644 index 0000000..06c749a --- /dev/null +++ b/docs/roadmap/documentation.md @@ -0,0 +1,90 @@ +# Documentation Consistency Audit + +Reviewed revision: `b4477a236aa01e60c17ee353bccaebca7ce919d7`. + +This audit compares current documentation with the implementation, maintained +examples, tests, and architectural decisions. It records proposed corrections; +it does not change the public contract or implement the corrections. + +## 1. Discovery reference names a removed public constructor + +**Documentation:** [Configuration discovery](../config.md#configuration-discovery), +line 34, tells consumers to construct a search from literal `Paths`. + +**Discrepancy:** The public constructor is now `SearchPaths`, declared in +[discovery.go](../../discovery.go), lines 55–56. There is no public `Paths` +compatibility alias. The private engine retains that name, but consumers cannot +use it through the supported public package. The same reference section already +uses `SearchPaths()` when explaining empty searches, and the +[migration table](../consumers/README.md#pre-v1-public-api-cleanup) correctly +records the rename. + +**Impact:** A consumer following the introductory instruction can attempt to call +an unavailable public API. This is a documentation defect, not a missing API. + +**Potential remediation:** Change the introductory constructor name to +`SearchPaths`. Preserve the historical old-name entry in the migration table and +the private engine name; neither needs changing for this finding. + +## 2. Four focused-test instructions are truncated in rendered documentation + +**Documentation:** The [development test map](../development.md#task-to-test-map), +lines 276, 277, 283, and 290, contains these affected rows: + +- Explicit main-file discovery and absent-input loading. +- Import defaults, empty-selection evidence, and dependency-ready ordering. +- Input and relative-import destinations, mounted sources, and source ownership. +- Effective configuration diff. + +**Discrepancy:** These rows put unescaped regex alternation pipes inside inline +code in Markdown table cells. GitHub-flavored Markdown treats those pipes as cell +separators even inside backticks. The table has three columns, so the remainder of +each instruction falls outside the displayed command cell. For example, the +discovery command renders as the incomplete text +`` `go test ./internal/engine -run 'Discovery `` rather than the complete command +and its two companion commands. + +The intended Go regexes are valid: `|` separates alternatives. Rendering the +current guide with the already module-selected Goldmark v2.1.6 GFM parser and +renderer reproduced all four truncated cells. Neighboring older rows escape +their pipes and render complete commands. Existing tests referenced by these +instructions run successfully in the complete suite; their implementation is +not the problem. + +**Impact:** Readers of the rendered contributor guide lose the complete test +selection instructions and can copy an unterminated shell command. The existing +documentation-link check does not validate rendered table cells. + +**Potential remediation:** Escape the table pipes consistently with adjacent +rows, or move the affected commands into fenced blocks outside the table. Inspect +the rendered result and execute the resulting shell commands with ordinary regex +alternation. Markdown escaping should not introduce literal escaped pipes into +the command users copy. No new release gate or production change is needed. + +## Review Coverage and Validation + +Reviewed the root README and package/API documentation, the configuration +reference, consumer guide and executable examples, development instructions, +internal component/import documentation, and release procedure against their +corresponding implementation and tests. Checked module identity, declared Go and +ReleaseKit versions, release-profile wiring, and licensing/attribution navigation. +No additional actionable discrepancy was identified in those areas. This was not +an upstream licensing review or an attempted release. + +Historical release notes, dated extraction records, superseded ADR decisions, +explicitly proposed ADRs, migration tables, and deferred roadmap candidates were +treated according to their stated status. Their historical terminology and +proposed behavior are not findings merely because current behavior differs. + +Validation used Go 1.26.10 with local toolchain selection and dependency downloads +disabled: + +```sh +GOTOOLCHAIN=local GOPROXY=off go test ./... -count=1 +GOTOOLCHAIN=local GOPROXY=off go test . -run 'TestLocalDocumentationLinks|TestDependencyImportBoundary|TestPublicFacadeBoundary|^Example' -count=1 +``` + +Both passed, including maintained consumer examples. An external disposable GFM +rendering probe substantiated finding 2. No production code, existing tests, +current documentation contracts, release tags, or consumer dependencies were +changed during the audit.