catalyst-os 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@ description: >
12
12
 
13
13
  DO NOT audit database integrity yourself - delegate to Curator.
14
14
  model: sonnet
15
- color: cyan
15
+ color: red
16
16
  skills: secret-scanning
17
17
  ---
18
18
 
@@ -0,0 +1,75 @@
1
+ # /plan-project
2
+
3
+ Plan the future of the project: maintain `roadmap.md` as a **queue of specs grouped by lifecycle state**, with a single clear next action.
4
+
5
+ > **Companion to `/sync-project`.** `/plan-project` plans what's *not yet started* (Backlog, ordering, Next Up direction); `/sync-project` reconciles what's *already done* (archives finished specs). Plan the future, sync the past.
6
+
7
+ ## Usage
8
+
9
+ ```
10
+ /plan-project # Create new or update existing
11
+ /plan-project "Q1 focus" # Update with specific direction
12
+ ```
13
+
14
+ ## Core Principle
15
+
16
+ **The roadmap is a queue of specs, not a checklist of tasks.**
17
+
18
+ - One entry = one spec = one forge cycle (one PR-sized unit of work).
19
+ - Tasks belong in each spec's `tasks.md` — never in the roadmap.
20
+ - Sections are **lifecycle states**, not time horizons. A spec moves across the board as it progresses: `Backlog → Planned → In Progress → Audited → Done`.
21
+ - There is always exactly **one `▶ Next Up`** so "what's the next spec?" is answerable at a glance.
22
+
23
+ > The lifecycle, state detection, next-command resolution, and dashboard generation are defined once in the **`spec-lifecycle-board`** skill — load it and treat it as the source of truth. This command owns the *planning* judgment (backlog ideas, ordering, Next Up direction).
24
+
25
+ ## Workflow
26
+
27
+ 1. **Read** `.catalyst/main/mission.md` for context
28
+ 2. **Read existing** `.catalyst/main/roadmap.md` if present
29
+ 3. **Scan specs** in `.catalyst/specs/` and `.catalyst/specs/completed/` to determine the state of each
30
+ 4. **Analyze** codebase for current feature state
31
+ 5. **Ask** about priorities and ordering:
32
+ - What's the single most important thing next?
33
+ - What's blocking progress?
34
+ - In what order should the backlog be built?
35
+ 6. **Classify** each spec into a lifecycle bucket (see State Detection below)
36
+ 7. **Resolve** the next command for each entry
37
+ 8. **Order the Backlog** — it is a ranked queue; #1 is what becomes Next Up once the board clears
38
+ 9. **Set `▶ Next Up`** using the resolution rule below
39
+ 10. **Create/Update** the roadmap using the template at `.catalyst/main/temp/temp-roadmap.md`
40
+ 11. **Regenerate the dashboard** — write `.catalyst/main/dashboard.html` (see Dashboard below)
41
+
42
+ ## State Detection & Next Up
43
+
44
+ Use the **State Detection** table and **`▶ Next Up` Resolution** rule from the `spec-lifecycle-board` skill (the single source). In short: five states — 🗂️ Backlog · 📋 Planned · 🔨 In Progress · 🔬 Audited · ✅ Done — detected from the spec folder's files, and Next Up = the spec closest to Done (Audited → In Progress → Planned → Backlog #1).
45
+
46
+ ## Granularity Guardrail
47
+
48
+ Before writing any entry, check its size:
49
+
50
+ - If it would need **more than ~5-8 tasks**, or spans **multiple subsystems** (e.g. backend + frontend + migrations as separable pieces), it is **too big for one spec** → split it into multiple ordered Backlog entries.
51
+ - Replace task checklists with a one-line **Scope** + a **Done when** acceptance criterion. Detailed tasks are `tasks.md`'s job, produced later by `/forge-spec`.
52
+ - Every Backlog entry gets a `Catalyze as: {slug}` hint so naming is decided up front, plus a seed prompt ready to hand to `/catalyze-spec`.
53
+
54
+ ## Backlog Ordering
55
+
56
+ The Backlog is a **ranked queue** — the number is the priority. Order by:
57
+ 1. Dependencies (a spec can't precede what it depends on — note `Depends on:` per entry)
58
+ 2. Unblocking value (what makes the product usable / lets other work proceed)
59
+ 3. Priority label (🔴 → 🟢)
60
+
61
+ ## Output Format
62
+
63
+ `.catalyst/main/roadmap.md` — uses the structure defined in `.catalyst/main/temp/temp-roadmap.md`:
64
+
65
+ - `▶ Next Up` — the single next action
66
+ - `🗂️ Backlog` — ordered queue of not-yet-catalyzed specs
67
+ - `📋 Planned` — catalyzed, ready to forge
68
+ - `🔨 In Progress` — being built (keep to 0-1, WIP limit)
69
+ - `🔬 Audited` — validated, awaiting seal
70
+ - `✅ Done` — sealed specs, for closure and history
71
+ - `Vision / Someday` — strategic goals not yet ready to be specs
72
+
73
+ ## Dashboard
74
+
75
+ Also (re)generate the visual, browser-openable panel at `.catalyst/main/dashboard.html` — a **whole-`.catalyst/main` control panel** tabbed across **Roadmap / Mission / Tech Stack / Architecture / Concerns**. Follow **Generating `dashboard.html`** in the `spec-lifecycle-board` skill for the full `DATA` schema and steps (set `generatedBy: "/plan-project"`). The board shows the 4 active states as collapsible columns; **Done** is the timeline below it.
@@ -226,3 +226,7 @@ This ensures `/primer-spec` always reflects actual progress, even if the orchest
226
226
  | Scope violation detected | STOP agent, revert, re-run with stricter prompt |
227
227
  | Parallel agents conflict | STOP build, revert, restructure DAG |
228
228
  | Dependency deadlock | STOP all, report to user, restructure DAG |
229
+
230
+ ## Board Sync (final step)
231
+
232
+ Once the build reaches green and `tasks.md` reflects progress, the spec has moved **Planned → In Progress**. Load `spec-lifecycle-board` and run **Update the Board**: move the entry to In Progress in `roadmap.md`, re-resolve `▶ Next Up`, and regenerate `.catalyst/main/dashboard.html` (`generatedBy: "/forge-spec"`).
@@ -65,12 +65,21 @@ Create in `.catalyst/main/`:
65
65
  |------|--------|
66
66
  | `project-config.yaml` | User preferences |
67
67
  | `mission.md` | Questions or README |
68
- | `roadmap.md` | Questions or TODOs |
68
+ | `roadmap.md` | Spec-queue |
69
69
  | `tech-stack.md` | Detected or recommended |
70
70
  | `architecture.md` | Analyzed or planned |
71
71
  | `conventions.md` | Learned or best-practice |
72
72
  | `concerns.md` | Found or empty |
73
73
 
74
+ **Generating `roadmap.md`:** Use the template at `.catalyst/main/temp/temp-roadmap.md`. The roadmap is a **queue of specs, not a checklist of tasks** — one entry = one spec = one forge cycle. Do NOT emit "Goal + Key Tasks" lists; that granularity belongs in each spec's `tasks.md` later.
75
+
76
+ - Seed the **🗂️ Backlog** with 3-6 ordered spec entries derived from the mission/TODOs. Each gets a `Catalyze as: {slug}` hint, a one-line **Scope**, a **Done when** acceptance line, `Depends on:`, and a ready-to-run `!/catalyze-spec "..."` seed prompt.
77
+ - Order the Backlog as a ranked queue (dependencies first, then unblocking value, then priority).
78
+ - Set **▶ Next Up** to Backlog #1 (a fresh project has nothing In Progress yet).
79
+ - Leave 📋 Planned / 🔨 In Progress / 🔬 Audited / ✅ Done empty (a fresh project has no specs yet).
80
+ - Granularity guardrail: if a backlog idea would need more than ~5-8 tasks or spans multiple subsystems, split it into multiple entries.
81
+ - After writing `roadmap.md`, also generate the visual panel `.catalyst/main/dashboard.html` — follow **Generating `dashboard.html`** in the `spec-lifecycle-board` skill (set `generatedBy: "/catalyze-project"`). Point the user to it — double-click to open in a browser.
82
+
74
83
  ### Phase 5: Bootstrap CLAUDE.md
75
84
 
76
85
  The project's `CLAUDE.md` must contain the Catalyst OS bootstrap directive. This is what makes skills load automatically.
@@ -88,9 +88,15 @@ For each spec the user confirms:
88
88
 
89
89
  ### Phase 5: Update Roadmap (Optional)
90
90
 
91
- If `.catalyst/main/roadmap.md` exists:
92
- 1. Update status of archived specs to COMPLETE
93
- 2. Update command sections for completed specs
91
+ If `.catalyst/main/roadmap.md` exists, load the `spec-lifecycle-board` skill (single source of the lifecycle) and:
92
+ 1. Move archived/sealed specs into the **✅ Done** section
93
+ 2. Re-classify remaining on-disk specs into their current buckets (📋 Planned / 🔨 In Progress / 🔬 Audited) by re-running State Detection
94
+
95
+ > **Boundary:** this is mechanical reconciliation of specs that exist on disk. Do NOT invent, reorder, or re-prioritize **🗂️ Backlog** entries or set strategic Next Up direction — that is planning, owned by `/plan-project`. If the board needs re-planning, tell the user to run `/plan-project`.
96
+
97
+ ### Phase 6: Regenerate Dashboard
98
+
99
+ If `.catalyst/main/roadmap.md` exists, also regenerate `.catalyst/main/dashboard.html` so it reflects the archiving just done. Follow **Generating `dashboard.html`** in the `spec-lifecycle-board` skill (set `generatedBy: "/sync-project"`). The **Backlog stays as-is** — sync never re-plans it.
94
100
 
95
101
  ## Output
96
102
 
@@ -110,5 +116,8 @@ Flagged: 1 stale spec
110
116
 
111
117
  Library: Added authentication.md, payment-integration.md
112
118
 
113
- Roadmap: Updated .catalyst/main/roadmap.md
119
+ Roadmap: Moved 2 specs to ✅ Shipped, re-classified active specs
120
+ (run /plan-project to re-plan the backlog and Next Up)
121
+
122
+ Dashboard: Regenerated .catalyst/main/dashboard.html (open in browser)
114
123
  ```
@@ -118,3 +118,7 @@ Library: {status}
118
118
 
119
119
  PR: {pr-url}
120
120
  ```
121
+
122
+ ## Board Sync (final step)
123
+
124
+ The spec just moved **Audited → Done (sealed)**. Load `spec-lifecycle-board` and run **Update the Board**: move the entry out of the board into the **Done** timeline in `roadmap.md`, re-resolve `▶ Next Up`, and regenerate `.catalyst/main/dashboard.html` (`generatedBy: "/seal-spec"`).
@@ -75,3 +75,7 @@ Library: {Added to .catalyst/library/X.md | Skipped}
75
75
  Note: This was a lightweight archive (no git ceremony).
76
76
  For full commit + branch management, use /seal-spec.
77
77
  ```
78
+
79
+ ## Board Sync (final step)
80
+
81
+ The spec just moved to **Done (sealed)**. Load `spec-lifecycle-board` and run **Update the Board**: move the entry into the **Done** timeline in `roadmap.md`, re-resolve `▶ Next Up`, and regenerate `.catalyst/main/dashboard.html` (`generatedBy: "/archive-spec"`).
@@ -0,0 +1,73 @@
1
+ # Spec Lifecycle Board
2
+
3
+ > **When to invoke:** After ANY spec lifecycle transition (catalyze / forge / audit / seal), and whenever the roadmap or dashboard must reflect reality.
4
+ > **Invoked by:** `spec-shaping`, `build-orchestration`, `spec-validation`, `spec-archival`, `project-sync`, `project-initialization`, and the `/plan-project` command.
5
+
6
+ This skill is the **single source of truth** for the spec lifecycle, its board buckets, next-command resolution, and how the visual `dashboard.html` is generated. Everything that touches the board reads from here so the model never drifts across commands.
7
+
8
+ ## The Lifecycle
9
+
10
+ ```
11
+ Backlog → Planned → In Progress → Audited → Done (sealed)
12
+ ```
13
+
14
+ | State | Meaning | How to detect | Next command |
15
+ |-------|---------|---------------|--------------|
16
+ | 🗂️ **Backlog** | Idea, not yet catalyzed | No spec folder; only a roadmap entry | `!/catalyze-spec "{seed prompt}"` |
17
+ | 📋 **Planned** | Catalyzed, ready to build | `spec.md` exists, no `tasks.md` | `!/forge-spec @{slug}` |
18
+ | 🔨 **In Progress** | Being built (TDD) | `tasks.md` exists, no `validation.md` | `!/audit-spec @{slug}` |
19
+ | 🔬 **Audited** | Validated, awaiting seal | `validation.md` exists, not sealed | `!/seal-spec @{slug}` |
20
+ | ✅ **Done** | Sealed / archived | In `.catalyst/specs/completed/` | (none) |
21
+
22
+ **Board vs. Done:** the Kanban board shows the **4 active** states (Backlog · Planned · In Progress · Audited) as columns. **Done** is the sealed timeline **below** the board — it is not a column (4 columns is the max that fits comfortably).
23
+
24
+ ## Transition Trigger
25
+
26
+ Each lifecycle command moves exactly one spec one step to the right:
27
+
28
+ | Command | Transition | Board effect |
29
+ |---------|-----------|--------------|
30
+ | `/catalyze-spec` | Backlog → Planned | Remove backlog entry, add Planned entry |
31
+ | `/forge-spec` | Planned → In Progress | Move entry to In Progress |
32
+ | `/audit-spec` | In Progress → Audited | Move entry to Audited (only if audit PASSED) |
33
+ | `/seal-spec` | Audited → Done | Move entry to the Done timeline |
34
+
35
+ After the transition, the invoking skill calls **Update the Board** below. Do not re-plan or re-order the Backlog on a transition — that is `/plan-project`'s job.
36
+
37
+ ## `▶ Next Up` Resolution
38
+
39
+ Pick exactly ONE spec for the top pointer, scanning right-to-left (closest to done first):
40
+
41
+ ```
42
+ IF anything is Audited → Next Up = that spec (seal it)
43
+ ELSE IF anything In Progress → that spec (finish it)
44
+ ELSE IF anything Planned → highest-priority Planned spec (forge it)
45
+ ELSE → Backlog #1 (catalyze it)
46
+ ```
47
+
48
+ Render as: spec name + one-line why + resolved command.
49
+
50
+ ## Update the Board
51
+
52
+ Two artifacts stay in sync — `roadmap.md` (source) and `dashboard.html` (view).
53
+
54
+ 1. **`roadmap.md`** — move the spec's entry to its new lifecycle section (see `/plan-project` for the section layout). On a single transition, touch only the moved entry and re-resolve `▶ Next Up`.
55
+ 2. **`dashboard.html`** — regenerate (see below).
56
+
57
+ ## Generating `dashboard.html`
58
+
59
+ A self-contained, offline, browser-openable panel covering the **whole `.catalyst/main`**.
60
+
61
+ 1. Read the template `.catalyst/main/temp/temp-dashboard.html`.
62
+ 2. Copy it verbatim to `.catalyst/main/dashboard.html`, replacing **only** the block between `// === DATA:START` and `// === DATA:END` with a `const DATA = {…}` object. **Never edit the CSS/JS below the data block.**
63
+ 3. Build `DATA` from the `.catalyst/main` docs (skip any that don't exist — the tab/section auto-hides):
64
+ - Top: `project`, `tagline` (mission vision one-liner), `generated` (today), `generatedBy` (the command that ran)
65
+ - `roadmap` (from `roadmap.md`): `nextUp {name,why,command}`; and five arrays — `backlog` (ordered `[{rank,name,slug,scope,doneWhen,dependsOn,priority,command}]`), `planned`/`inProgress`/`audited` (`[{name,slug,scope,doneWhen,command}]`), `done` (`[{name,slug,date}]`); plus `vision [{goal,description,prereq}]`
66
+ - `mission` (from `mission.md`): `vision`, `pain[]`, `whoSuffers[]`, `coreValue[]`, `differentiators[]`, `targetUsers[{persona,description,need}]`, `metrics[{metric,target,timeline}]`, `qualitativeGoals[]`, `nonGoals[]`
67
+ - `techStack` (from `tech-stack.md`): `overview`, `groups[{category,items[{name,version,purpose,docs}]}]`, `decisions[{id,title,context,decision,consequences}]`
68
+ - `architecture` (from `architecture.md`): `overview`, `layers[{layer,location,responsibility}]`, `patterns[{name,purpose,location}]`, `entryPoints[{name,location,purpose}]`, `keyFiles[{purpose,file}]`
69
+ - `concerns` (from `concerns.md`): `summary{critical,high,medium,low}`, `issues[{id,title,severity,type,location,description,fix}]`, `techDebt[{id,location,description,effort}]`, `security[{area,status,notes}]`, `knownBugs[{id,description,location,priority}]`
70
+ 4. Set each item's `command` from the next-command column above (Audited → `!/seal-spec`, etc.).
71
+ 5. Keep `DATA` a **valid JS object literal** — quote strings, escape embedded quotes. Omit a field with `[]`/`null` rather than inventing content.
72
+
73
+ On a single spec transition you may keep the other tabs' `DATA` as-is from the existing `dashboard.html` and only update the `roadmap` block + `generated`/`generatedBy` — but a full rebuild from the docs is always safe.
@@ -179,3 +179,7 @@ Next steps:
179
179
  ```
180
180
 
181
181
  **IMPORTANT: Do NOT suggest `/seal-spec` after spec shaping.** `/seal-spec` is only for committing a fully built and validated implementation — it is the FINAL step, not a plan-approval step. The correct flow is: `/catalyze-spec` → *(optional)* `/challenge-spec` → `/forge-spec` → `/audit-spec` → `/seal-spec`.
182
+
183
+ ## Board Sync (final step)
184
+
185
+ The spec just moved **Backlog → Planned**. Load `spec-lifecycle-board` and run **Update the Board**: move the entry to Planned in `roadmap.md`, re-resolve `▶ Next Up`, and regenerate `.catalyst/main/dashboard.html` (`generatedBy: "/catalyze-spec"`).
@@ -184,3 +184,7 @@ Validation failed!
184
184
  Failed Checks: [details]
185
185
  Action: Fix issues and re-run /audit-spec
186
186
  ```
187
+
188
+ ## Board Sync (final step)
189
+
190
+ **Only if the audit PASSED**, the spec has moved **In Progress → Audited**. Load `spec-lifecycle-board` and run **Update the Board**: move the entry to Audited in `roadmap.md`, re-resolve `▶ Next Up`, and regenerate `.catalyst/main/dashboard.html` (`generatedBy: "/audit-spec"`). If the audit failed, leave the board unchanged (the spec stays In Progress).
@@ -51,6 +51,7 @@ Skills tell you HOW. User instructions tell you WHAT.
51
51
  | **project-initialization** | `.claude/skills/project-initialization/SKILL.md` | `/catalyze-project` — setting up a new project |
52
52
  | **spec-update** | `.claude/skills/spec-update/SKILL.md` | `/update-spec` — modifying an existing spec |
53
53
  | **project-sync** | `.claude/skills/project-sync/SKILL.md` | `/sync-project` — batch sync and archive specs |
54
+ | **spec-lifecycle-board** | `.claude/skills/spec-lifecycle-board/SKILL.md` | After any spec transition, or `/plan-project` — move the spec on the board and regenerate `dashboard.html` |
54
55
 
55
56
  ---
56
57
 
package/README.md CHANGED
@@ -221,11 +221,36 @@ Guardians (Quality)
221
221
  | `/status-spec @slug` | Check progress | Current status |
222
222
  | `/update-spec @slug "change"` | Modify spec (planning phase) | Updated spec.md |
223
223
  | `/mission` | Create/update mission.md | mission.md |
224
- | `/roadmap` | Create/update roadmap.md | roadmap.md |
224
+ | `/plan-project` | Plan the backlog & next spec | roadmap.md |
225
225
  | `/tech-stack` | Create/update tech-stack.md | tech-stack.md |
226
226
 
227
227
  ---
228
228
 
229
+ ## Project Dashboard
230
+
231
+ Alongside `roadmap.md`, Catalyst generates a self-contained visual panel at **`.catalyst/main/dashboard.html`** — double-click to open in any browser (no server, no network). It's a whole-`.catalyst/main` control panel tabbed across **Roadmap · Mission · Tech Stack · Architecture · Concerns**.
232
+
233
+ The Roadmap tab is a Kanban board over the spec lifecycle:
234
+
235
+ ```
236
+ Backlog → Planned → In Progress → Audited → Done (sealed)
237
+ ```
238
+
239
+ The board shows the 4 active states as collapsible columns; **Done** is the sealed timeline below. A single **▶ Next Up** card always answers "what's the next spec?", with a copy-able command.
240
+
241
+ **It stays in sync automatically.** Every lifecycle command moves the spec one column and regenerates the dashboard:
242
+
243
+ | Command | Moves the spec |
244
+ |---------|----------------|
245
+ | `/catalyze-spec` | Backlog → Planned |
246
+ | `/forge-spec` | Planned → In Progress |
247
+ | `/audit-spec` (pass) | In Progress → Audited |
248
+ | `/seal-spec` | Audited → Done |
249
+
250
+ Run `/plan-project` to re-plan the backlog, or `/sync-project` to reconcile after the fact. The lifecycle, detection, and dashboard generation are defined once in the `spec-lifecycle-board` skill.
251
+
252
+ ---
253
+
229
254
  ## Voice Meetings (`/meet-spec`)
230
255
 
231
256
  Shape a spec by **talking it through**. `/meet-spec` opens a local browser meeting room,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "catalyst-os",
3
- "version": "3.0.2",
3
+ "version": "3.1.0",
4
4
  "scripts": {
5
5
  "postinstall": "node .catalyst/bin/install.js",
6
6
  "validate": "node .catalyst/bin/validate-artifacts.js"
@@ -1,69 +0,0 @@
1
- # /roadmap
2
-
3
- Create or update the project roadmap with spec-grouped entries and actionable next commands.
4
-
5
- ## Usage
6
-
7
- ```
8
- /roadmap # Create new or update existing
9
- /roadmap "Q1 focus" # Update with specific direction
10
- ```
11
-
12
- ## Workflow
13
-
14
- 1. **Read** `.catalyst/main/mission.md` for context
15
- 2. **Read existing** `.catalyst/main/roadmap.md` if present
16
- 3. **Scan specs** in `.catalyst/specs/` to determine current state of each spec
17
- 4. **Analyze** codebase for current feature state
18
- 5. **Ask** about priorities and timeline:
19
- - What's most important right now?
20
- - What's blocking progress?
21
- - What's the target timeline?
22
- 6. **Resolve commands** for each spec entry (see Command Resolution below)
23
- 7. **Create/Update** the roadmap using the template at `.catalyst/main/temp/temp-roadmap.md`
24
-
25
- ## Command Resolution
26
-
27
- The canonical spec workflow is: `/catalyze-spec` → `/forge-spec` → `/audit-spec` → `/seal-spec`
28
-
29
- For each spec entry in the roadmap, determine the next action based on its state:
30
-
31
- | Spec State | How to Detect | Next Command |
32
- |------------|---------------|--------------|
33
- | Not yet created | Only exists in roadmap, no spec folder | `!/catalyze-spec "{seed prompt}"` |
34
- | DRAFT | `spec.md` exists, no `tasks.md` | `!/forge-spec @{slug}` or `!/forge-spec-worktree @{slug}` |
35
- | IN_PROGRESS | `tasks.md` exists, build ongoing | `!/audit-spec @{slug}` |
36
- | VALIDATING | `validation.md` exists | `!/seal-spec @{slug}` |
37
- | COMPLETE | `handoff.md` exists with sealed status | No command (show checkmark) |
38
-
39
- > **Worktree tip:** Use `!/forge-spec-worktree` when another spec is already in progress on the current branch, or when file scopes might collide between concurrent specs.
40
-
41
- ### Detection Logic
42
-
43
- For each spec entry, check `.catalyst/specs/{slug}/`:
44
-
45
- ```
46
- IF no folder exists for this entry:
47
- → Status: Planned | Command: !/catalyze-spec "{seed prompt}"
48
-
49
- ELSE IF spec.md exists BUT tasks.md does NOT:
50
- → Status: DRAFT | Command: !/forge-spec @{slug} (or !/forge-spec-worktree @{slug})
51
-
52
- ELSE IF tasks.md exists BUT validation.md does NOT:
53
- → Status: IN_PROGRESS | Command: !/audit-spec @{slug}
54
-
55
- ELSE IF validation.md exists BUT not sealed:
56
- → Status: VALIDATING | Command: !/seal-spec @{slug}
57
-
58
- ELSE (sealed):
59
- → Status: COMPLETE | Command: (none)
60
- ```
61
-
62
- ## Output Format
63
-
64
- `.catalyst/main/roadmap.md` — uses the structure defined in `.catalyst/main/temp/temp-roadmap.md`
65
-
66
- Specs are grouped within time-horizon sections:
67
- - **Short-Term (1-3 months)** — immediate priorities
68
- - **Medium-Term (3-6 months)** — next wave of work
69
- - **Long-Term Vision (6+ months)** — strategic goals, not yet ready for specs