Skip to content

Add the Roadmap section: one roadmap per squad - #7

Open
AndreaSucreG wants to merge 1 commit into
feat/pr-section-0.4.0from
feat/roadmap-section
Open

Add the Roadmap section: one roadmap per squad#7
AndreaSucreG wants to merge 1 commit into
feat/pr-section-0.4.0from
feat/roadmap-section

Conversation

@AndreaSucreG

@AndreaSucreG AndreaSucreG commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #6. Base is feat/pr-section-0.4.0, not main — this touches the same five files, so stacking avoids a guaranteed conflict. Merge #6 first and this retargets to main cleanly. Review only the single commit here.

What this adds

@asucregonzalez/section-roadmap was one of the sections held back as personal. What made it personal was assuming a single roadmap, not the code — the plan lives in the host's content/team/, so what ships is the machinery and none of the strategy.

Squads are files. content/team/roadmaps/<squad>.json, one document each. Add a file and it appears in the sidebar; nothing to register. A single content/team/roadmap.json also works, and is what you have before a second squad — so an existing roadmap keeps working untouched, and creating your first squad migrates it rather than hiding it.

Squad Settings

Edits what would otherwise mean hand-editing JSON: naming, the strategy and sprint doc links, vision, objectives, sequencing, the status vocabularies, effort and complexity, and capacity.

Those vocabularies are referential — initiatives carry their values — so:

  • renaming one migrates every reference in the same write
  • deleting one still in use is refused with its count, rather than silently orphaning the initiatives pointing at it (the symptom would be an initiative rendering blank)
  • reference counts show per row, so you see the blast radius before touching anything

Impact

A vocabulary rather than free text, so it can be weighed against effort. Unset renders as nothing, not as a default level — an unsized initiative is not a low-priority one.

First run

Seeds content/team/roadmaps/example-squad.json so the tab renders instead of showing an empty state that reads like a breakage. It documents the format it demonstrates, as the other seeded content does — including an initiative with impact deliberately unset, the case most likely to be mistaken for missing data.

Verification

  • pnpm install resolves section-roadmap from npm; tsc --noEmit && vite build passes
  • Claims checked against this repo, not copied from upstream — refreshEnabled stays false here, so nothing in the new Guide card promises a Regenerate button this app can't serve

⚠️ Requires @asucregonzalez/section-roadmap@0.1.1. Also note pnpm 11 blocks packages published within ~24h — on a fresh clone it writes minimumReleaseAgeExclude entries and proceeds, so it self-resolves, but you'll see it.

🤖 Generated with Claude Code


Note

Low Risk
Starter-template wiring plus local JSON content; no auth or shared runtime state beyond new read/write paths under content/team/.

Overview
Adds a new Delivery nav group with a Roadmap tab powered by @asucregonzalez/section-roadmap, wired like the other installable sections (dependency, src/sections.ts, server/index.ts API routes).

Roadmap data lives under content/team/roadmaps/*.json (or a single content/team/roadmap.json); the PR seeds example-squad.json so first open is documented sample data rather than an empty tab. README and Guide document squads-as-files, Squad Settings, and impact-as-vocabulary behavior.

Reviewed by Cursor Bugbot for commit 5a8e4e5. Bugbot is set up for automated code reviews on this repo. Configure here.

`@asucregonzalez/section-roadmap` was held back as personal. What made it
personal was assuming a single roadmap, not the code — the plan lives in the
host's `content/team/`, so what ships is the machinery and none of the strategy.

Squads are files: `content/team/roadmaps/<squad>.json`, one document each. Add a
file and it appears in the sidebar; there is nothing to register. A single
`content/team/roadmap.json` also works and is what you have before a second
squad, so an existing roadmap keeps working untouched.

Squad Settings edits what would otherwise mean hand-editing JSON: naming, the
strategy and sprint doc links, vision, objectives, sequencing, the status
vocabularies, effort and complexity, and capacity. Those vocabularies are
referential — initiatives carry their values — so renaming one migrates every
reference in the same write, and deleting one still in use is refused with its
count rather than silently orphaning the initiatives pointing at it.

Impact is a vocabulary rather than free text, so it can be weighed against
effort. Unset renders as nothing, not as a default level: an unsized initiative
is not a low-priority one.

Seeds `content/team/roadmaps/example-squad.json` so the tab renders on a first
run instead of an empty state that reads like a breakage. It documents the format
it demonstrates, as the other seeded content does — including an initiative with
impact deliberately unset, the case most likely to be mistaken for missing data.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@AndreaSucreG
AndreaSucreG requested a review from a team as a code owner August 27, 2026 14:20

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 5a8e4e5. Configure here.

Comment thread src/sections.ts
id: 'delivery', label: 'Delivery', icon: '📦', path: '/delivery', visibility: 'shared',
blurb: 'What you are shipping, and when.',
children: [
{ ...roadmapSection, id: 'roadmap', label: 'Roadmap', path: '/delivery/roadmap' },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Delivery home link opens Today

Medium Severity

The Delivery group path is /delivery, but the shell only matches child paths. Home’s Elsewhere card links to that group path, so it renders Today while the address bar still shows /delivery. The header tab works because it navigates to /delivery/roadmap directly. Today avoids this because Day uses the same path as its group.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 5a8e4e5. Configure here.

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