Skip to content

Fix workflow docs nav/catalog drift and add automated validation#456

Merged
strawgate merged 4 commits intomainfrom
copilot/fix-workflow-docs-navigation
Feb 27, 2026
Merged

Fix workflow docs nav/catalog drift and add automated validation#456
strawgate merged 4 commits intomainfrom
copilot/fix-workflow-docs-navigation

Conversation

Copy link
Contributor

Copilot AI commented Feb 27, 2026

This PR fixes docs navigation/catalog drift by adding missing workflow entries to mkdocs.yml and adds automated validation so future mismatches fail CI.

What changed

  • Updated mkdocs.yml workflow navigation to include missing cataloged workflows:
    • Event-driven: Dependency Review
    • Standalone Scheduled: Autonomy Atomicity Analyzer, Framework Best Practices, Information Architecture, Product Manager Impersonator
  • Added scripts/check-nav-catalog.py to verify every non-estc-* workflow listed in docs/workflows/gh-agent-workflows.md is reachable from mkdocs.yml navigation.
    • Reachability is satisfied either by a direct nav entry or by references from a nav-linked static overview page.
    • The check handles both markdown links (gh-agent-workflows/(slug).md) and directory-style references (gh-agent-workflows/(slug)/...).
  • Wired the check into local linting by adding it to make lint.
  • Added a dedicated CI job (check-nav-catalog) in .github/workflows/ci.yml to run the same validation on pushes and PRs to main.

Validation

  • python3 scripts/check-nav-catalog.py returns: OK: all 37 catalog workflows are reachable from nav

Fixes #455

Generated by Update PR Body for issue #456

…lidation script

Co-authored-by: strawgate <6384545+strawgate@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix navigation to include all documented workflows Fix workflow docs nav/catalog drift and add automated validation Feb 27, 2026
@strawgate strawgate marked this pull request as ready for review February 27, 2026 18:57
@coderabbitai
Copy link

coderabbitai bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

Adds a new CI job and Makefile lint invocation to run a new validation script that compares workflow slugs in mkdocs.yml against the workflow catalog; also updates mkdocs.yml to include five missing workflow nav entries.

Changes

Cohort / File(s) Summary
CI Configuration
\.github/workflows/ci.yml
Added check-nav-catalog job that checks out the repo and runs python3 scripts/check-nav-catalog.py on ubuntu-latest.
Build / Lint
Makefile
Added execution of python3 scripts/check-nav-catalog.py to the lint target.
Documentation Nav
mkdocs.yml
Inserted new navigation entries: Dependency Review (Event-driven) and Autonomy Atomicity Analyzer, Framework Best Practices, Information Architecture, Product Manager Impersonator (Standalone Scheduled).
Validation Script
scripts/check-nav-catalog.py
New script that extracts slugs from the catalog and mkdocs.yml, expands reachable slugs via static overview pages, reports missing slugs, and exits non‑zero on drift.

Sequence Diagram(s)

sequenceDiagram
  actor GitHubActions as "GitHub Actions Runner"
  participant Repo as "Repository"
  participant Script as "check-nav-catalog.py"
  participant Docs as "mkdocs.yml & docs/catalog pages"

  GitHubActions->>Repo: actions/checkout@v6
  GitHubActions->>Script: run python3 scripts/check-nav-catalog.py
  Script->>Docs: read mkdocs.yml and catalog markdown
  Script->>Docs: parse overview pages for referenced slugs
  Script->>Script: compute reachable vs catalog slugs
  Script-->>GitHubActions: exit 0 (ok) or non-zero + missing list
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • strawgate
  • github-actions

Poem

🐰 I hopped through docs, counting each slug,

Found the gaps where navs once dug.
A script now guards the paths we sow,
CI will check where the workflows go.
Hooray — no more lost hops to show! 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely describes the main changes: fixing nav/catalog drift and adding automated validation to prevent future issues.
Linked Issues check ✅ Passed All objectives from issue #455 are met: mkdocs.yml entries added for missing workflows [#455], validation script created [#455], and CI integration completed [#455].
Out of Scope Changes check ✅ Passed All changes are directly aligned with issue #455 objectives: nav updates, validation script, lint integration, and CI job setup—no unrelated changes detected.
Docstring Coverage ✅ Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch copilot/fix-workflow-docs-navigation

Comment @coderabbitai help to get the list of available commands and usage tips.

"""
return {
m.group(1)
for m in re.finditer(r"\(gh-agent-workflows/([a-z0-9-]+)\.md\)", catalog_text)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[LOW] Catalog regex ignores valid anchor/query links

extract_catalog_slugs only matches links that end exactly with .md, so entries like (gh-agent-workflows/foo.md#details) or (gh-agent-workflows/foo.md?ref=x) are skipped.

That can let nav/catalog drift slip through CI because the skipped workflow is never included in catalog_slugs. Consider allowing optional #... / ?... suffixes after .md (or parsing markdown links structurally).

return {
m.group(1)
for m in re.finditer(
r"workflows/gh-agent-workflows/([a-z0-9-]+)\.md", mkdocs_text
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[LOW] Nav extraction scans full YAML instead of only nav

extract_nav_slugs regex-scans the entire mkdocs.yml text, so any non-nav reference like extra.note: workflows/gh-agent-workflows/foo.md is treated as a nav entry.

This can produce false passes by marking a workflow as reachable when it isn't in the navigation tree. Parsing YAML and traversing only the nav section would avoid this.

@strawgate
Copy link
Collaborator

/ai is this how we want to do this? please incorporate pr feedback and get this ready to go. Let's make sure there's not an easier way to do this

github-actions bot and others added 2 commits February 27, 2026 19:43
@strawgate strawgate merged commit 152551a into main Feb 27, 2026
17 checks passed
@strawgate strawgate deleted the copilot/fix-workflow-docs-navigation branch February 27, 2026 20:28
@github-actions github-actions bot mentioned this pull request Mar 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[information-architecture] Workflow docs navigation omits several documented workflows

2 participants