Description
The CI build (docs.yml) produces 41 warnings. After verifying against the source code, the root causes are as follows.
https://github.com/theopensourceway/production/actions/runs/26198396307/job/77082787146
Category 1: Missing source files (2 files)
Two cross-reference targets do not exist in the guidebook repository:
getting-started/creating-an-open-source-product-strategy.md — MISSING
getting-started/setting-goals.md — MISSING
These are referenced in essentials-of-building-a-community.md (lines 42, 58, 73) but have never been created. This is a content gap in the guidebook.
Fix: Create these files in the guidebook repository, or remove/update the references if the content has been folded into other chapters.
Category 2: Cross-reference path resolution (12 warnings for existing files)
Cross-references like [text](getting-started/community-101.md) from within getting-started/essentials-of-building-a-community.md produce warnings even though the target files exist.
Root cause: The source uses directory-prefixed paths (e.g., getting-started/community-101.md) from within the same directory. Since the referencing file is already in getting-started/, MyST resolves getting-started/community-101.md relative to the current document as getting-started/getting-started/community-101.md, which does not exist. The correct relative reference would be just community-101.md (or community-101 without the .md extension).
Similarly, [text](../measuring-success/defining-healthy-communities.md) from getting-started/ works because the ../ correctly navigates up one level.
Affected file: getting-started/essentials-of-building-a-community.md — 11 references with incorrect relative paths. Also getting-started/building-a-strategy.md — 1 reference with incorrect path.
Fix: In the guidebook repository, update the cross-reference paths to be correctly relative to the current file's location. For example:
[community](getting-started/community-101.md) → [community](community-101.md)
- Alternatively, use MyST's explicit cross-reference syntax:
{doc}`community-101`
Category 3: Footnote ID mismatch (22 warnings)
All 22 warnings are in community-manager-self-care.md, of the form:
WARNING: 'myst' cross-reference target not found: 'user-content-fn-1' [myst.xref_missing]
Root cause: The source uses [^1] footnote syntax, which MyST renders with user-content-fn-* IDs (a GitBook convention that MyST's markdown-it parser preserves). However, Sphinx's cross-reference resolver does not register these IDs as valid targets, so it reports them as missing.
The footnotes render correctly in the HTML output — the references and back-references work. The warnings are false positives from MyST's cross-reference validation, but they clutter the build log and may mask real issues.
Fix (options):
- Add
user-content-fn-* patterns to myst_xref_missing suppression in conf.py:
myst_xref_missing_suppress = [r"user-content-fn-\d+"]
- Configure MyST to use Sphinx-native footnote IDs instead of GitBook-style IDs
- Suppress the specific warning type in
conf.py:
suppress_warnings = ["myst.xref_missing"]
Category 4: Broken external links (15 links — 403/404 errors)
404 Not Found (2 links)
403 Forbidden — likely blocks automated requests (11 links)
Anchor not found (1 link)
Note: Many 403 errors are from sites that block automated requests but may be accessible in a browser. Options:
- Find alternative/archive URLs (e.g., Wayback Machine)
- Add known-403 patterns to
linkcheck_ignore in conf.py
- Replace with local references or cached content
Fix location: guidebook repository — update or replace broken URLs. production repository — add linkcheck_ignore patterns for sites that consistently block CI.
Category 5: Permanent redirects (14 links — should be updated)
Fix location: guidebook repository — update URLs to their current targets.
Action items
guidebook repository (requires maintainer action)
production repository (can be done by production team)
Description
The CI build (
docs.yml) produces 41 warnings. After verifying against the source code, the root causes are as follows.https://github.com/theopensourceway/production/actions/runs/26198396307/job/77082787146
Category 1: Missing source files (2 files)
Two cross-reference targets do not exist in the guidebook repository:
getting-started/creating-an-open-source-product-strategy.md— MISSINGgetting-started/setting-goals.md— MISSINGThese are referenced in
essentials-of-building-a-community.md(lines 42, 58, 73) but have never been created. This is a content gap in the guidebook.Fix: Create these files in the
guidebookrepository, or remove/update the references if the content has been folded into other chapters.Category 2: Cross-reference path resolution (12 warnings for existing files)
Cross-references like
[text](getting-started/community-101.md)from withingetting-started/essentials-of-building-a-community.mdproduce warnings even though the target files exist.Root cause: The source uses directory-prefixed paths (e.g.,
getting-started/community-101.md) from within the same directory. Since the referencing file is already ingetting-started/, MyST resolvesgetting-started/community-101.mdrelative to the current document asgetting-started/getting-started/community-101.md, which does not exist. The correct relative reference would be justcommunity-101.md(orcommunity-101without the.mdextension).Similarly,
[text](../measuring-success/defining-healthy-communities.md)fromgetting-started/works because the../correctly navigates up one level.Affected file:
getting-started/essentials-of-building-a-community.md— 11 references with incorrect relative paths. Alsogetting-started/building-a-strategy.md— 1 reference with incorrect path.Fix: In the
guidebookrepository, update the cross-reference paths to be correctly relative to the current file's location. For example:[community](getting-started/community-101.md)→[community](community-101.md){doc}`community-101`Category 3: Footnote ID mismatch (22 warnings)
All 22 warnings are in
community-manager-self-care.md, of the form:Root cause: The source uses
[^1]footnote syntax, which MyST renders withuser-content-fn-*IDs (a GitBook convention that MyST's markdown-it parser preserves). However, Sphinx's cross-reference resolver does not register these IDs as valid targets, so it reports them as missing.The footnotes render correctly in the HTML output — the references and back-references work. The warnings are false positives from MyST's cross-reference validation, but they clutter the build log and may mask real issues.
Fix (options):
user-content-fn-*patterns tomyst_xref_missingsuppression inconf.py:conf.py:Category 4: Broken external links (15 links — 403/404 errors)
404 Not Found (2 links)
403 Forbidden — likely blocks automated requests (11 links)
Anchor not found (1 link)
Note: Many 403 errors are from sites that block automated requests but may be accessible in a browser. Options:
linkcheck_ignoreinconf.pyFix location:
guidebookrepository — update or replace broken URLs.productionrepository — addlinkcheck_ignorepatterns for sites that consistently block CI.Category 5: Permanent redirects (14 links — should be updated)
Fix location:
guidebookrepository — update URLs to their current targets.Action items
guidebook repository (requires maintainer action)
creating-an-open-source-product-strategy.md,setting-goals.md(or remove references)essentials-of-building-a-community.mdandbuilding-a-strategy.mdproduction repository (can be done by production team)
conf.pylinkcheck_ignorepatterns for sites that consistently block CI