docs: fix 34 broken in-doc cross-references; extend link-check CI (closes #62)#63
Merged
Conversation
…oses #62) Sibling of #58: the same canonical-name mismatch and relative-path errors that broke README links also broke 34 in-doc cross-references across 14 files. A reader on docs/core-concepts/runtime-engine.md who clicked "Memory" or "Tools" got a GitHub 404; docs/security/overview.md alone had 10 broken links to half a dozen renamed siblings. Three causes per the issue: 1. Missing ../ (21 links): authors wrote paths as if relative to docs/ root, but Markdown resolves relative to the file's own directory. From docs/core-concepts/* and docs/skills/*, links like security/guardrails.md resolved to docs/core-concepts/security/guardrails.md (404) instead of docs/security/guardrails.md. 2. Canonical-name mismatch (10 links, all in security/overview.md): egress.md/secrets.md/signing.md became egress-control.md/ secret-management.md/build-signing.md when the docs were reorganized, plus four ../*.md links pointing at flat names that never existed. 3. Wrong base (3 links): contributing.md linked to ../README.md (= docs/README.md, missing) instead of ../../README.md; command-integration.md cross-references in deployment/ and getting-started/ needed ../reference/ prefix. The fix is purely mechanical link substitution with anchor preservation — no doc content reorganized, no new files created. Workflow change (.github/workflows/docs-links.yaml, added in #61): Renamed job readme-links -> doc-links and extended the Python script to walk docs/**/*.md in addition to README.md. Same fail-on-broken behavior, same path filter. Local dry-run reports 'Checked 37 doc files: all relative .md links resolve'. Audit results on main after this commit: before: 34 broken across 14 doc files after: 0 broken; 37 files checked
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sibling of #58 / #61. The same canonical-name mismatch and relative-path errors that broke 21 README links also broke 34 in-doc cross-references across 14 doc files. A reader on
docs/core-concepts/runtime-engine.mdwho clicked "Memory" or "Tools" hit a GitHub 404;docs/security/overview.mdalone had 10 broken links to a half-dozen renamed siblings.Audit
The link-check workflow (added in #61) is extended to walk
docs/**/*.mdin addition toREADME.md, so this can't regress on future PRs.Causes — same shape as #58
Three patterns account for all 34 occurrences:
Cause 1 — Missing
../(21 links)Authors wrote paths as if relative to
docs/root, but Markdown link resolution is relative to the file's directory. Fromdocs/core-concepts/hooks.md, a link tosecurity/guardrails.mdresolves todocs/core-concepts/security/guardrails.md(does not exist), not the actualdocs/security/guardrails.md. Fix: add the../.Affected files:
docs/core-concepts/channels.md— 1 linkdocs/core-concepts/hooks.md— 2 linksdocs/core-concepts/how-forge-works.md— 2 linksdocs/core-concepts/runtime-engine.md— 3 linksdocs/core-concepts/skill-md-format.md— 1 linkdocs/core-concepts/tools-and-builtins.md— 5 linksdocs/skills/embedded-skills.md— 2 linksdocs/skills/skills-cli.md— 1 linkdocs/skills/writing-custom-skills.md— 2 linksdocs/reference/cli-reference.md— 1 linkdocs/reference/web-dashboard.md— 1 linkdocs/deployment/production-checklist.md— 1 link(Some same-directory references — like
runtime.mdfromchannels.md— also got their file extension fixed:runtime.md→runtime-engine.md.)Cause 2 — Canonical-name mismatch in
docs/security/overview.md(10 links)This single file accounts for 10/34 (29%) of the breakage. Pre-dated the doc rename to
*-control,*-management,*-signingand never got updated; also contained four../*.mdreferences to flat names that never existed in the post-reorg tree:egress.md(×2)egress-control.mdsecrets.md(×2)secret-management.mdsigning.md(×2)build-signing.md../architecture.md../core-concepts/how-forge-works.md../tools.md../core-concepts/tools-and-builtins.md../skills.md../skills/writing-custom-skills.md../commands.md../reference/cli-reference.mdCause 3 — Wrong base (3 links)
docs/getting-started/contributing.mdlinked to../README.md(=docs/README.md, missing). Fix:../../README.md.command-integration.mdcross-references indeployment/production-checklist.mdandgetting-started/contributing.mdneeded../reference/prefix.Anchor preservation
Several broken links carried
#anchorsuffixes (e.g.[external auth](runtime.md#external-authentication)). The fixer is a small Python script that uses a regex with an optional anchor group and preserves the fragment when rewriting the path, so deep links remain pointed at the right heading.Workflow change
.github/workflows/docs-links.yaml:readme-links→doc-links.docs/**/*.mdin addition toREADME.md.docs/**from docs: fix 21 broken doc links in README (closes #58) #61).Checked 37 doc files: all relative .md links resolve.Acceptance criteria from #62
.mdlink insidedocs/**resolves to a file that exists onmain.docs/**/*.md.Out of scope
https://...) link rot — different tooling.Cross-reference
.github/workflows/docs-links.yaml; this PR extends it.Diff stats
Every change is a link substitution. No prose modified.