Files
3yearplan/outputs/run-log.md
Joseph Doherty ebc76e9315 Seed UNS hierarchy across 6 sites; rebrand outputs to SCADA IT/OT with ZB template
Lands per-site UNS subtree files (Warsaw West/North, Shannon, Galway, TMT,
Ponce) seeded from OpenText facility docs — Warsaw split confirmed as
numbered = legacy Zimmer = West, lettered = legacy Biomet = North. Renames
project framing from "Shopfloor IT/OT" to "SCADA IT/OT" for accuracy.
Extracts a ZB-branded PowerPoint template from example_powerpoint.pptx and
wires it into the outputs pipeline. Trims deck from 18 to 16 slides
(BOBJ->Power BI transferred to another team, Non-Goals and Asks dropped);
goal-state BOBJ analysis pruned to a stub.
2026-04-30 10:54:49 -04:00

96 lines
10 KiB
Markdown
Raw 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 Regeneration Run Log
Append-only audit log — one entry per regeneration. Newest entry on top.
---
## 2026-04-30 (later) — `regenerate presentation` (deck trimmed to 16 slides)
**Artifact:** `generated/plan-presentation.pptx`**16 slides** (down from 18).
**Structural changes:**
- **Removed slide 17 (Non-Goals)** and **slide 18 (Asks & Next Steps)** — the deck no longer ships with these closing slides; the previous content lives in `goal-state.md` → Non-Goals and `status.md` → Top pending items respectively, and audiences who need them can read those directly.
- **Slide 16 reshaped from "Open Coordination Items" (2-column: Digital twin + BOBJ→Power BI) to "Digital Twin Scope" (single-column with two pattern cards).** The BOBJ→Power BI column was dropped because that coordination is now owned by another team (recorded in `goal-state.md` 2026-04-30 update).
- **Source files removed:** `outputs/workspace/slides/slide17.html` and `slide18.html` deleted; `slide16.html` rewritten.
- **`generate.js` loop bound updated** from 18 → 16.
- **Spec updated:** `outputs/presentation-spec.md` slide-count budget changed (18 → 16); slide 16 entry rewritten; slide 17 and 18 entries removed; fallback-rendering rule for slide 16 updated to reflect the new 2-pattern-card layout.
- **Documentation updated:** "18-slide" → "16-slide" in `CLAUDE.md`, `outputs/README.md`, `outputs/IMPLEMENTATION-PLAN.md`.
**Closing slide judgment:** the deck now ends on Digital Twin Scope rather than Asks & Next Steps. Rationale: the asks have been resolved (Power BI moved to another team; UNS hierarchy walk has the questions doc) so the asks slide had nothing live left on it; Digital Twin Scope is a load-bearing settled decision worth ending on so the topic doesn't re-open.
**Longform spec aligned in the same pass.** `longform-spec.md` now carries a "Section-level exclusions (render-time)" rule that skips `goal-state.md → ## Non-Goals` and `goal-state.md → ### Enterprise reporting: BOBJ → Power BI migration (adjacent initiative)` from the long-form PDF. ("Asks & Next Steps" never appeared in the longform anyway — it was synthesized from `status.md` which is already excluded.)
**`goal-state.md` BOBJ section pruned in the same pass.** The full three-paths analysis, recommended position, eight questions for the reporting team, and four-bucket decision rubric (lines 796864 prior, ~69 lines) were retired when the coordination was handed to another team. Replaced with a concise stub (5 lines) that preserves the section heading (so the longform exclusion rule still matches), the plan's posture (SnowBridge curated layer is shaped to support Power BI consumption if the reporting team points there), and a pointer to git history for anyone who needs the full retired analysis.
---
## 2026-04-30 — `regenerate presentation` (ZB template integration)
**Artifact:** `generated/plan-presentation.pptx` (18 slides, 16:9, **now ZB-branded** via `templates/` integration). 2.0 MB, up from 370 KB at the prior run because the cover background image and bottom-border strip are embedded.
**Changes since prior run:**
- **Cover slide (slide 1) replaced with a ZB-branded cover.** `slide01.html` is no longer rendered through `html2pptx`; `generate.js` now constructs the cover directly from `templates/assets/cover-background.jpeg` plus a title overlay (white #F4F4F4, Arial Bold 24pt, positioned at scaled-down ZB-template coordinates).
- **Brand chrome added to every content slide (218):** the bottom-border strip from `templates/assets/bottom-border.jpg` (positioned at 0.01", 5.07" — 0.75× scaled from the template's 13.33×7.5 to fit the existing 10×5.625 layout), "CONFIDENTIAL FOR ZIMMER BIOMET INTERNAL USE ONLY" text (6pt gray) above the strip, and a single page number (8pt ZB navy #2B2A80) in the lower-right.
- **Reskinned all 17 content-slide HTMLs** from the original navy/amber palette to the ZB palette via deterministic find-replace: navy header band (#1C2833) → ZB blue (#0066B3) → ultimately removed entirely; off-white backgrounds → pure white; slate text (#2E4053) → dark gray (#333333); amber accent (#D4843D) → ZB blue (#0066B3); dark navy text → ZB navy (#2B2A80).
- **Removed the dark blue header band** entirely; titles are now ZB blue text on white with a 1.5pt blue underline. Page numbers are no longer in the markup (they live only in the JS-added chrome) — eliminates the duplicate-page-number bug introduced when chrome was first added.
- **`generate.js` documents the scaling rationale** inline so future maintainers don't get confused about why coordinates aren't the template's published values.
**Source plan state at time of regeneration:**
Same as the 2026-04-24 run plus: Warsaw West/North campus split clarified (numbered = legacy Zimmer = West; lettered = legacy Biomet = North); UNS hierarchy initial draft seeded across all 6 integrated sites; BOBJ→Power BI coordination ownership transferred to another team.
**Warnings / deviations:**
- **HTML CSS still authored to 720×405pt (10×5.625").** pptxgen's `LAYOUT_16x9` matches that. The ZB template publishes coordinates at 13.33×7.5, so `generate.js` scales by 0.75× when placing chrome. If the slides are ever rebuilt at the template's native 13.33×7.5, drop the scaling and use template coords as published.
- **Slide 13 was 1.5pt overflow on first attempt** (new title section was 10pt taller than the old header band). Tightened header padding and reduced title font from 24pt back to 22pt; now fits.
- **Diagrams still missing** (`architecture-layers.png`, `end-to-end-flow.png`) — same fallback pattern as before; not reapplied this run.
---
## 2026-04-24 — `regenerate presentation`
**Artifact:** `generated/plan-presentation.pptx` (18 slides, 16:9, theme-factory default professional — Classic Blue + amber accent palette).
**Source plan state at time of regeneration:**
- 6 workstreams in `roadmap.md` (down from 7 — Snowflake dbt Transform Layer workstream collapsed into SnowBridge earlier in the session).
- 3 legacy integrations in `current-state/legacy-integrations.md` (LEG-001 Delmia DNC, LEG-002 Camstar MES, LEG-003 custom email notification service).
- Digital-twin scope finalized as two access-control patterns (environment-lifecycle promotion; safe read-only KPI/monitoring consumption).
- SnowBridge scope finalized as ingest + in-process .NET transform + curated-table write (no dbt, no external orchestrator, no Snowflake landing tier).
- Canonical model has three surfaces: OtOpcUa equipment namespace, Redpanda topics + Protobuf schemas, SnowBridge curated layer in Snowflake.
**Slides populated:**
1. Title — "Shopfloor IT/OT Transformation · 3-Year Plan · As of 2026-04-24"
2. Executive Summary — Vision + three-pillar criteria + out-of-scope line
3. Today's Reality — 5 pain points synthesized from `current-state.md`
4. Vision — full-slide quote + 3 sub-bullets
5. Three Pillars — 3-column layout (Unification / Analytics-AI / Legacy Retirement)
6. Enterprise Layout — 4 tier groups (primary / largest / integrated / not yet integrated)
7. Today's Systems — 6 systems summarized
8. Goal State: Layered Architecture — rendered as a stacked-layer visualization + "sole IT↔OT crossing" callout. **Placeholder diagram** for `architecture-layers.png` — not rendered; layer stack is the fallback visualization.
9. End-to-End Data Flow — rendered as a 2-row node flow (OT row + IT row) with arrows + caption. **Placeholder diagram** for `end-to-end-flow.png` — not rendered; node-flow layout is the fallback visualization.
10. OtOpcUa — the Unification Layer — 6 bullets
11. Analytics Stack: SnowBridge + Snowflake — 6 bullets, reflecting SnowBridge-owns-transform scope
12. Redpanda EventHub — 6 bullets
13. 3-Year Roadmap grid — 6×3 table (workstreams × years), cells truncated to single most load-bearing commitment per cell
14. Year 1 Focus — 6 bullets, one per workstream
15. Pillar 3: Legacy Retirement — 3 cards (LEG-001, LEG-002, LEG-003) + Historian carve-out callout
16. Open Coordination Items — 2-column (Digital twin scope / BOBJ → Power BI)
17. Non-Goals — 6 bullets
18. Asks & Next Steps — 4 asks (sponsor, build-team owners, Power BI conversation, UNS hierarchy walk owner)
**Warnings / deviations:**
- **Diagrams `architecture-layers.png` and `end-to-end-flow.png` do not exist** in `diagrams/`. Spec fallback says "render a placeholder box with a text prompt." Deviation: slides 8 and 9 use **content-based substitutes** (stacked-layer visualization on 8; horizontal node-flow on 9) rather than literal placeholder boxes. This is a richer substitute than the spec's minimal fallback but still not the diagrams themselves. To align exactly with the spec, author the `.mmd` sources in `diagrams/` and re-run.
- **Stale diagram file still in `diagrams/`: `snowflake-dbt-dataflow.png`** — not referenced by this regeneration, but should be renamed / replaced when a matching "SnowBridge curated layer dataflow" component diagram is authored. Flagged for attention; not a blocker for this run.
- **`<code>` tag not supported by html2pptx** — initial rendering of slide 12 dropped content inside `<code>` tags (the `schemas` repo name, `buf` CI tool, and `{domain}.{entity}.{event-type}` topic format). Fixed by replacing `<code>` with `<b>` for those tokens. Watch for this pattern in future slides.
- **Text elements cannot carry CSS borders** — html2pptx validator rejects borders on `<p>` / `<h1>` / `<ul>`. Vision and tagline elements on slides 2, 4, 10, 11, 12 were wrapped in `<div>`s carrying the border-left accent.
- **Slide 1 title wrap** — initial 44pt title wrapped to two lines and overlapped the subtitle. Reduced to 32pt with explicit vertical spacing; fits on one line at 720pt width.
**Intermediate artifacts removed** from `workspace/` after validation: `plan-presentation.pdf`, `slide-NN.jpg`, `check-NN.jpg`. Retained: `slides/` HTML, `generate.js`, `node_modules/`, `package*.json`.
**Diff from prior run (2026-04-15):** deck reflects two scope changes that happened between runs — digital-twin scope narrowed (slide 16 left column rewritten around the two access-control patterns); SnowBridge expanded to own transformation (slides 11, 13 row 3, 14 bullet 3 all updated); workstream count dropped from 7 to 6 (slides 13, 14, 18 all reflect this); enterprise shortname resolved to `zb` and Warsaw West buildings confirmed as 5 and 19 (slide 6).