Skip to content

feat(studio): GitHub as roadmap source — Revisão column + PR refs (CS-76 phase B) - #37

Merged
RudneyForti merged 1 commit into
mainfrom
feature/76-roadmap-github-source
Jul 20, 2026
Merged

feat(studio): GitHub as roadmap source — Revisão column + PR refs (CS-76 phase B)#37
RudneyForti merged 1 commit into
mainfrom
feature/76-roadmap-github-source

Conversation

@RudneyForti

Copy link
Copy Markdown
Collaborator

Summary

Phase B of CS-76: GitHub becomes the source of truth for the git-owned side of the roadmap. The done archive is read live from origin/main and a new Revisão column is projected from open PRs — both locked. The local file becomes an offline fallback (amber stale banner).

Changes

  • lib/roadmap-github.ts: board from main + open PRs via GitHub API; 60s cache, 30s negative cache, 8s timeout; every failure degrades to the file fallback
  • assembleBoard v2 (pure, tested): precedence main > open PR > local; a CS with an open PR projects its local card into Revisão (or synthesizes one from the PR title)
  • Annotation satellites (decision "a"): local Postgres rows survive promotion; their checklist/comments are spliced read-only onto the locked git card
  • prNumber: stamped by the roadmap-sync Action on merge; rendered as a #NN link to the PR on the card
  • Promotion: roadmap-sync now creates the git card when it's missing — locally-planned (Postgres) cards enter git at merge, closing the no-op gap seen on PR feat(studio): dual-source roadmap — local Postgres layer (CS-76 phase A) #36
  • UI: origin chips (🔵 local / 🟢 github), violet Revisão column, offline banner, add/drag/column-select restricted to local columns
  • Compose: optional GITHUB_TOKEN pass-through (repo is public — token only raises the rate limit)
  • Guard: refuse to prune the local layer on a malformed empty-board payload

Live self-test

This PR itself should appear in the Revisão column of the Studio board while it is open — the feature demonstrating itself.

Checklist

  • Link to feature/issue: CS-76
  • Description of changes included above
  • List of additions documented
  • All existing tests are passing (101)
  • New tests were added for this change (assembleBoard v2, resolveCsNumber, negative cache path, stale flag)
  • Agent Smith validated behavior (browser: Revisão column, origin chips, live GitHub read, no stale banner)
  • No regressions observed

References

CS-76 (phase B of 3 — phase C: server-side enforcement + AGENTS.md update)

…-76 phase B)

- lib/roadmap-github.ts: read origin/main board + open PRs via GitHub API,
  60s cache (30s negative cache), 8s timeout, graceful null on any failure
- assembleBoard v2: precedence main > open PR > local; open PRs project the
  local card into the synthetic Revisão column (locked), or synthesize one
- annotation satellites: local rows survive promotion; checklist/comments are
  spliced onto the locked git card (read-only)
- prNumber on cards: stamped by roadmap-sync on merge, rendered as a PR link
- roadmap-sync now CREATES the git card when missing — the promotion of a
  locally-planned (Postgres) card into git ownership at merge
- UI: origin chips (local/github), Revisão column style, stale-fallback
  banner, add/drag/drop and column select restricted to local columns
- compose: optional GITHUB_TOKEN pass-through (repo is public; token only
  raises the rate limit)
- guard: refuse to prune the local layer on a malformed empty board payload
@RudneyForti
RudneyForti merged commit b976491 into main Jul 20, 2026
3 checks passed
@RudneyForti
RudneyForti deleted the feature/76-roadmap-github-source branch July 20, 2026 03:05
@RudneyForti RudneyForti mentioned this pull request Aug 3, 2026
16 tasks
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.

1 participant