Files
3yearplan/outputs/IMPLEMENTATION-PLAN.md
Joseph Doherty ec1dfe59e4 Initial commit: 3-year shopfloor IT/OT transformation plan
Core plan: current-state, goal-state (layered architecture, OtOpcUa,
Redpanda EventHub, SnowBridge, canonical model, UNS posture + naming
hierarchy, digital twin use cases absorbed), roadmap (7 workstreams x 3
years), and status bookmark.

Component detail files: legacy integrations inventory (3 integrations,
pillar 3 denominator closed), equipment protocol survey template (dual
mandate with UNS hierarchy snapshot), digital twin management brief
(conversation complete, outcome recorded).

Output generation pipeline: specs for 18-slide mixed-stakeholder PPTX
and faithful-typeset PDF, with README, design doc, and implementation
plan. No generated outputs yet — deferred until source data is stable.
2026-04-17 09:12:35 -04:00

276 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Output Generation Pipeline Implementation Plan
> **For Claude:** REQUIRED SUB-SKILL: Use `superpowers-extended-cc:executing-plans` to implement this plan task-by-task. Note: this repo is not a git project and the work is markdown authoring + skill invocation, not code. The standard writing-plans template (TDD, pytest, git commits) does not apply; use the **verification steps** per task as the equivalent of "run the tests."
**Goal:** Scaffold a repeatable PPTX + PDF generation pipeline over the plan markdown source, and produce the first pair of outputs.
**Architecture:** Spec files (`presentation-spec.md`, `longform-spec.md`) as structure anchors; hand-drawn Mermaid diagrams committed as `.mmd` + `.png`; `document-skills:pptx` and `document-skills:pdf` invoked per a fixed checklist in `outputs/README.md`; append-only `run-log.md` records every regeneration.
**Tech Stack:** Markdown, Mermaid (for diagrams), `document-skills:pptx`, `document-skills:pdf`, `document-skills:theme-factory` default theme.
**Design reference:** [`outputs/DESIGN.md`](DESIGN.md)
**Path note:** Writing-plans' default location is `docs/plans/YYYY-MM-DD-<name>.md`; this repo convention keeps documents in topical directories, so this plan lives alongside the pipeline it implements.
---
## Task 0: Directory scaffold
**Status:** Parent directory `outputs/` already exists (created when `DESIGN.md` was written). This task creates the remaining subdirectories.
**Files:**
- Create: `outputs/diagrams/` (directory)
- Create: `outputs/generated/` (directory)
**Step 1:** `mkdir -p outputs/diagrams outputs/generated`
**Step 2: Verify**
Run: `ls outputs/`
Expected: `DESIGN.md IMPLEMENTATION-PLAN.md diagrams generated` (README, specs, run-log not yet created)
---
## Task 1: outputs/README.md — trigger phrases + regeneration checklist
**Files:**
- Create: `outputs/README.md`
**Content requirements:**
- Purpose statement (what `outputs/` is and isn't)
- Trigger phrases section — `regenerate outputs`, `regenerate presentation`, `regenerate longform`
- Numbered regeneration procedure (the 5-step checklist from design section 2)
- Edit-this-not-that rules — when to edit specs vs. source vs. diagrams
- Pointers to `DESIGN.md`, `presentation-spec.md`, `longform-spec.md`, `run-log.md`
**Verification:**
- File exists at `outputs/README.md`
- Contains the three trigger phrases verbatim
- Contains the 5-step procedure numbered 15
- Links to the four companion files resolve to existing or soon-to-exist paths
---
## Task 2: outputs/presentation-spec.md — 18-slide PPTX structure anchor
**Files:**
- Create: `outputs/presentation-spec.md`
**Content requirements:**
- Meta header — audience (mixed-stakeholder), theme (theme-factory default), truncation rules (6 bullets, ~12 words each, overflow → footer pointer)
- 18 slide entries, one per slide. Each entry specifies:
- Slide number, title, layout type
- Source file + section anchor
- Population instructions (verbatim / N-bullet summary / diagram embed / table render)
- Optional: notes on layout fallbacks if the PPTX skill can't do the requested layout
- A closing "editing this spec" section explaining that structural changes go here, not in prompts
**Verification:**
- File exists
- Has exactly 18 slide entries
- Every slide cites a specific source file (or `—` for the title slide)
- Slides 8 and 9 reference `outputs/diagrams/architecture-layers.png` and `outputs/diagrams/end-to-end-flow.png` respectively
---
## Task 3: outputs/longform-spec.md — PDF chapter/appendix structure anchor
**Files:**
- Create: `outputs/longform-spec.md`
**Content requirements:**
- Meta header — audience (anyone reading the plan standalone), theme (theme-factory default serif), page setup (Letter, 1" margins, chapter header, page+date footer)
- File-to-chapter mapping:
- Cover page (title, subtitle, as-of date, abstract from `goal-state.md` → Vision)
- TOC (auto, two levels)
- Chapter 1: `current-state.md`
- Chapter 2: `goal-state.md`
- Chapter 3: `roadmap.md`
- Appendix A: `current-state/legacy-integrations.md`
- Appendix B: `current-state/equipment-protocol-survey.md`
- Transformation rules (numbered heading, link normalization, `_TBD_` highlight, ASCII diagram preservation, table handling)
- Exclusion list (`status.md`, `CLAUDE.md`, `goal-state/digital-twin-management-brief.md`, `outputs/*`)
**Verification:**
- File exists
- Lists 3 chapters + 2 appendices in the specified order
- Transformation rules section is present and enumerated
---
## Task 4: outputs/diagrams/architecture-layers.mmd — Mermaid source for the 4-layer stack
**Files:**
- Create: `outputs/diagrams/architecture-layers.mmd`
**Content requirements:**
- Mermaid `flowchart TB` (top-to-bottom)
- Nodes: Equipment (bottom) → OtOpcUa (L2, with two namespace sub-nodes) → System Platform + Ignition (L3) → ScadaBridge (L4) → Enterprise IT (Camstar, Delmia, Snowflake, Power BI)
- A visible IT↔OT boundary line between L4 and Enterprise IT (Mermaid supports this via subgraphs or styled edges)
- Labels use the exact vocabulary from `goal-state.md` → Layered Architecture
**Verification:**
- File exists
- Starts with `flowchart TB` or equivalent directive
- Contains node labels for `Equipment`, `OtOpcUa`, `System Platform`, `Ignition`, `ScadaBridge`, and `Enterprise IT`
- Passes basic Mermaid syntax sanity check (paste into mermaid.live renders without error — verify this step on first authoring)
---
## Task 5: outputs/diagrams/end-to-end-flow.mmd — Mermaid source for the data flow
**Files:**
- Create: `outputs/diagrams/end-to-end-flow.mmd`
**Content requirements:**
- Mermaid `flowchart LR` (left-to-right)
- Nodes match `goal-state.md` line 77 exactly: Equipment → OtOpcUa → System Platform/Ignition → ScadaBridge → Redpanda → SnowBridge → Snowflake → dbt → Power BI
- IT↔OT boundary marker between ScadaBridge and Redpanda (Redpanda is IT-adjacent from ScadaBridge's central crossing)
**Verification:**
- File exists
- Starts with `flowchart LR` or equivalent
- Has exactly the 9 nodes in the exact order from `goal-state.md` line 77
- Renders at mermaid.live without error
---
## Task 6: Render diagrams to PNG (or document manual fallback)
**Files:**
- Create: `outputs/diagrams/architecture-layers.png` (if rendering available)
- Create: `outputs/diagrams/end-to-end-flow.png` (if rendering available)
**Step 1:** Attempt to render Mermaid → PNG in the Claude Code environment. Options, in order of preference:
1. `document-skills:pptx` skill may expose a diagram embed path that handles Mermaid natively
2. Python with `mermaid-py` or `mermaid-cli` if available
3. A headless browser with mermaid.js
**Step 2 (if rendering succeeds):** Write the PNGs to `outputs/diagrams/`. Verify file size > 0 and file type is PNG.
**Step 3 (if rendering fails):** Do not block. Instead:
- Create placeholder empty PNGs or skip PNG creation entirely
- Record in the run log: *"Render `outputs/diagrams/architecture-layers.mmd` and `outputs/diagrams/end-to-end-flow.mmd` at https://mermaid.live and save the PNGs to `outputs/diagrams/`. Then re-run `regenerate presentation`."*
- Note in the human-facing summary that this is the one-time manual step
**Verification:**
- Either both PNG files exist with non-zero size, OR the run log contains the explicit manual-render instruction
---
## Task 7: Update CLAUDE.md index
**Files:**
- Modify: `CLAUDE.md`
**Change:** Add `outputs/` to the component detail files list with a one-line description, so future Claude sessions see the pipeline exists when loading the project.
**Verification:**
- `CLAUDE.md` mentions `outputs/` and points to `outputs/README.md` as the regeneration entry point
---
## Task 8: Execute first PPTX generation
**Files:**
- Create: `outputs/generated/plan-presentation.pptx`
**Step 1:** Read `outputs/presentation-spec.md` (the structure anchor).
**Step 2:** Read every source file named in the spec.
**Step 3:** For each of the 18 slides, populate content per the spec's rules.
**Step 4:** Invoke `document-skills:pptx` with:
- Theme: `document-skills:theme-factory` default professional
- Title: "Shopfloor IT/OT Transformation — 3-Year Plan"
- Output path: `outputs/generated/plan-presentation.pptx`
- Diagram images from `outputs/diagrams/`
**Step 5:** Append run log entry.
**Verification:**
- `outputs/generated/plan-presentation.pptx` exists, file size > 0
- Slide count is 18 (verify by re-reading the file's structure if possible)
- Run log has a new entry with timestamp and a "presentation regenerated" note
- If any source content was truncated, a warning appears in the run log entry
---
## Task 9: Execute first PDF generation
**Files:**
- Create: `outputs/generated/plan-longform.pdf`
**Step 1:** Read `outputs/longform-spec.md`.
**Step 2:** Read all 5 source files (current-state.md, goal-state.md, roadmap.md, legacy-integrations.md, equipment-protocol-survey.md).
**Step 3:** Apply the transformation rules from the spec — numbered headings, link normalization, `_TBD_` highlighting.
**Step 4:** Invoke `document-skills:pdf` with:
- Theme: theme-factory default
- Cover page with title, subtitle, as-of date, abstract
- TOC, 3 chapters, 2 appendices
- Output path: `outputs/generated/plan-longform.pdf`
**Step 5:** Append run log entry.
**Verification:**
- `outputs/generated/plan-longform.pdf` exists, file size > 0
- Basic sanity: first page is cover, second is TOC, chapters appear in the expected order
- Run log has a new entry for the PDF generation
- Broken/unresolvable inter-file links are logged as warnings, not silently dropped
---
## Task 10: Initial run log + human-facing summary
**Files:**
- Create: `outputs/run-log.md`
**Content:**
- Header explaining the run log's purpose (append-only audit trail, one entry per regeneration, newest at bottom)
- Inaugural entry:
- Timestamp (2026-04-15)
- What ran: first PPTX + PDF generation
- Source plan version: brief summary ("plan as of 2026-04-15 — 5 source files, 3 legacy integrations, 6 protocol survey placeholder rows")
- Warnings: any truncations, missing sections, broken links, or PNG rendering fallbacks from tasks 6, 8, 9
- Next actions for the human reviewer
**Verification:**
- File exists
- Contains the inaugural entry
- If Task 6 hit the manual-render fallback, the run log surfaces that prominently
---
## Dependencies
```
Task 0 (scaffold)
├── Task 1 (README)
├── Task 2 (presentation-spec)
├── Task 3 (longform-spec)
├── Task 4 (architecture-layers.mmd)
├── Task 5 (end-to-end-flow.mmd)
└── Task 7 (CLAUDE.md index) — can run in parallel
Tasks 4, 5 → Task 6 (render PNGs)
Tasks 1, 2, 6 → Task 8 (PPTX generation)
Tasks 1, 3 → Task 9 (PDF generation)
Tasks 8, 9 → Task 10 (run log)
```
Tasks 05 and 7 can run in parallel where sensible; tasks 6, 8, 9, 10 are sequentially dependent.
---
## Out of scope for this plan
- A second theme / branded version of the deck (first run uses theme-factory default; branding iteration is a follow-up)
- A third diagram (roadmap-timeline) — starter set is 2, per design
- A `.claude/commands/regenerate-outputs.md` slash command — plain English trigger + README checklist is enough for first pass
- A curated long-form narrative PDF (option b from earlier brainstorm) — first run is option (a) faithful typeset only
- Editing source plan files — regeneration is read-only on plan content
- Any git operations — this repo is not a git project