Skip to content

feat(roadmap): gen-roadmap --check-github ground-truth validation#800

Merged
Dumbris merged 1 commit into
mainfrom
feat/roadmap-check-github
Jul 2, 2026
Merged

feat(roadmap): gen-roadmap --check-github ground-truth validation#800
Dumbris merged 1 commit into
mainfrom
feat/roadmap-check-github

Conversation

@Dumbris

@Dumbris Dumbris commented Jul 2, 2026

Copy link
Copy Markdown
Member

Motivation

The 2026-07-02 planning audit found roadmap.yaml chronically lies about reality: tasks stayed todo/in_review while their PRs merged (#786/#792/#794/#796), an epic claimed in_review with no PR anywhere, and spec: links can point at wrong/nonexistent specs producing false progress badges. Today python3 scripts/gen-roadmap.py --check only validates that ROADMAP.md is fresh vs roadmap.yaml — nothing validates roadmap.yaml vs ground truth.

What this adds

A new --check-github mode (reads roadmap.yaml only, never regenerates ROADMAP.md):

PR status cross-check (gh pr view <n> --json state,mergedAt, cached per PR; handles #786, full /pull/ URLs, and lists):

  • MERGED but status ≠ doneERROR
  • CLOSED (unmerged) but status in_progress/in_reviewERROR
  • OPEN but status doneERROR
  • OPEN but status todoWARN
  • unresolvable PR ref → ERROR (dangling link)

Spec-link validation:

  • spec: not resolving to a real specs/<NNN> dir → ERROR
  • one spec shared by two distinct epics → WARN (badge double-count; an epic sharing a spec with its own child task is not flagged)

Status sanity:

  • in_review with no pr:WARN (any item — the "epic in_review with no PR anywhere" case the audit hit)
  • in_progress with no pr: and no children → WARN (leaf only; umbrella epics legitimately delegate PRs to child tasks)
  • done epic with a non-done child → WARN

Exit codes: 0 no errors · 1 any error (or --strict with warnings) · 2 gh missing/unauthenticated (offline spec+status checks still run, so it never false-fails). --check behaviour is untouched.

CI wiring

.github/workflows/roadmap.yml already runs --check. Added a non-blocking (continue-on-error: true) advisory --check-github step in the same job (GH_TOKEN: ${{ github.token }}, pull-requests: read) so drift is surfaced in the log without failing the build (roadmap.yaml is hand-maintained).

Real run against current roadmap

roadmap.yaml ground-truth cross-check (repo smart-mcp-proxy/mcpproxy-go)

ERRORS (1):
  [ERROR] telemetry-machineid-client (task · epic telemetry-identity)
          PR #796 is MERGED but status is 'in_review' (expected 'done').

WARNINGS (2):
  [WARN ] windows-tray (epic)
          status 'in_review' but no pr: link — an in-review item should link its PR as evidence.
  [WARN ] windows-tray-window (task · epic windows-tray)
          status 'in_review' but no pr: link — an in-review item should link its PR as evidence.

Summary: 1 error(s), 2 warning(s).   # exit 1

It flags genuine live drift: #796 merged on 2026-07-02 but roadmap still says in_review. Per the task, this drift is reported, not fixed here (beyond the doc/regeneration changes). No pytest pattern exists in scripts/ (only shell .test.sh), so this real-run output is the acceptance evidence.

Docs

Generator "How to regenerate" template + roadmap.yaml header updated to mention the new mode; ROADMAP.md regenerated.

🤖 Generated with Claude Code

The 2026-07-02 audit found roadmap.yaml chronically drifts from reality:
tasks stayed `todo`/`in_review` while their PRs merged, an epic claimed
`in_review` with no PR anywhere, and spec: links can point at nonexistent
dirs producing false progress badges. `--check` only validates ROADMAP.md
freshness against roadmap.yaml — nothing validated roadmap.yaml itself.

Add a `--check-github` mode that cross-checks roadmap.yaml against ground truth:
- PR status: MERGED but not done → ERROR; CLOSED-unmerged but in_progress/
  in_review → ERROR; OPEN but done → ERROR; OPEN but todo → WARN; dangling
  ref → ERROR. Handles "#786" and full /pull/ URLs and lists; caches per PR.
- spec: links must resolve to a real specs/ dir (ERROR); a spec shared by two
  distinct epics → WARN (badge double-count).
- status sanity: in_review with no pr: → WARN (any item); in_progress with no
  pr: and no children → WARN (leaf only, umbrella epics delegate PRs); done
  epic with a non-done child → WARN.
- exit 0 (no errors) / 1 (any error, or --strict with warnings) / 2 (gh
  missing or unauthenticated — offline spec/status checks still run).

`--check` is untouched. Wire a non-blocking (continue-on-error) advisory step
into .github/workflows/roadmap.yml. Docs updated in the generator template and
roadmap.yaml header; ROADMAP.md regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying mcpproxy-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: b68c590
Status: ✅  Deploy successful!
Preview URL: https://75776abe.mcpproxy-docs.pages.dev
Branch Preview URL: https://feat-roadmap-check-github.mcpproxy-docs.pages.dev

View logs

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

📦 Build Artifacts

Workflow Run: View Run
Branch: feat/roadmap-check-github

Available Artifacts

  • archive-darwin-amd64 (28 MB)
  • archive-darwin-arm64 (25 MB)
  • archive-linux-amd64 (16 MB)
  • archive-linux-arm64 (14 MB)
  • archive-windows-amd64 (28 MB)
  • archive-windows-arm64 (25 MB)
  • frontend-dist-pr (0 MB)
  • installer-dmg-darwin-amd64 (21 MB)
  • installer-dmg-darwin-arm64 (19 MB)

How to Download

Option 1: GitHub Web UI (easiest)

  1. Go to the workflow run page linked above
  2. Scroll to the bottom "Artifacts" section
  3. Click on the artifact you want to download

Option 2: GitHub CLI

gh run download 28597689564 --repo smart-mcp-proxy/mcpproxy-go

Note: Artifacts expire in 14 days.

@Dumbris Dumbris merged commit b2003ba into main Jul 2, 2026
37 checks passed
@Dumbris Dumbris deleted the feat/roadmap-check-github branch July 2, 2026 15:50
Dumbris added a commit that referenced this pull request Jul 2, 2026
…ne, connect-trust/upgrade-nudge progress (#803)

check-github now passes with 0 errors: scanner-simplification epic
complete (#786/#792/#793/#794 incl. deep-scan trust fixes + docs
sweep); connect-trust US1 preview (#802) + backup visibility (#799)
done; upgrade-nudge status/log slice (#798) split out as done with
the banner+config remainder tracked separately; telemetry machine_id
client (#796) and hygiene check-github (#800) done. Remaining
warnings are the known windows-tray no-PR-evidence items.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants