diff --git a/specs/MEDIA-HUB-DESIGN-INVENTORY.md b/specs/MEDIA-HUB-DESIGN-INVENTORY.md new file mode 100644 index 0000000..f1e740c --- /dev/null +++ b/specs/MEDIA-HUB-DESIGN-INVENTORY.md @@ -0,0 +1,92 @@ +# What "media hub" already means in VYNDR's design language + +Read-only inventory. Nothing designed, built or mounted. + +## PHASE 0 — the design source of truth exists, and so does a gap audit + +| artifact | what it is | +|---|---| +| `specs/DESIGN-SPEC.md` | **DESIGN SPEC v2** — governing laws, colour contract, entity layer, data-display standard, motion, archetype system, conversion architecture, empty/error system. 84 lines, supersedes v1. | +| `specs/design-reference/` (Jul 22) | **The design package itself** — 7 `.dc.html` surface files, 83 archetype glyph SVGs + MANIFEST, 7 rasterised share-card PNG masters. | +| `specs/design-reference/HANDOFF.md` | The code handoff: exact tokens, brand, glyph library, behaviour, laws. | +| **`specs/design-vs-build-gap-audit.md`** | **A 61-item design-vs-build audit already exists** (2026-07-31, audited at `bf7c0a3`), every claim grep-verified, with a wave-ordered build plan. | + +**The inventory this order asks for was largely already done on 2026-07-31.** The +useful work is reconciling it, not redoing it. + +## PHASE 1 — per media surface: spec, and build state + +| surface | design spec? | built state | evidence | +|---|---|---|---| +| **Offseason hub** | **YES — a full surface file** | **NOT-STARTED** | `Vyndr Offseason.dc.html` (119KB) defines hub home (NFL desktop + 390), an **NBA Summer-League variant with an `OUTLOOK ONLY / NOT GRADED` honesty block**, a season-long board (open→NOW→VYNDR triplet), a season-read reveal with `WHAT WOULD CHANGE THIS READ`, a news/outlook feed with row anatomy, and a **quiet-wire empty state**. Gap audit: F9/F10/F11, *"design complete, no blocker but big."* | +| **Article media** | **YES — surface S3** | **NOT-STARTED** | Hero template + **4 hero graphic archetypes** (line path / distribution / mark-at-scale / matchup card — *all generated data visuals, never stock*), inline figures (stat-callout triptych, comparison bars, pull quote — **one max**), **caption law: every figure names its data**, article card, OG 1200×630 (master already rasterised in `exports/`). Gap audit F5. Zero components built. | +| **THE WIRE** | **YES** | **BUILT** (E19) | Spec'd in `Vyndr System.dc.html`: timestamped entry, ~6s hold, tag coloured by meaning. Built as `vyndr/Ticker` on real `/api/ticker` exhaust. **`NewsWire.tsx` is a different thing** — the offseason news/outlook feed, mounted in ExploreHub. | +| **Movement strip** | **YES — E1, a named primitive** | **ABSENT** | *"steps not curves, green only when the move favours the read, FLAT = hairline + `FLAT · [N]D`"*, row 86×20 silent / full-width annotated on reveal. **This corrects my 2026-08-07 board, which listed it UNKNOWN / possibly-satisfied-by-GradeShift.** It is a specified primitive that does not exist. | +| **Share-card masters ×5** | **YES — E16** | **ABSENT as product** | settle 1080×1350, story 1080×1920, square 1080, X 1200×675, record 1080×1350, article OG 1200×630. PNG masters in `exports/`; `ShareCard.tsx` has **0 importers**. Gap audit blocks it on the resolution tail having no share-card generation step. | +| **Calibration curve** | YES — E9 | ABSENT | dots vs dashed perfect line, dot size = sample, buckets under N30 hollow. | +| **The Report email / `/report` archive** | YES — E10/E12 | PARTIAL / ABSENT | `newsletterService` builds an email; the designed dark-billboard-over-light-paper hybrid is not built. `/report` redirects to `/blog`. | +| **ExploreHub** | **NO SPEC** | BUILT | Not a designed surface. It is where `NewsWire` currently lives — a de-facto host, not the intended hub. | + +## PHASE 2 — what an on-site media hub would consist of + +**From surfaces already designed** (no new design needed): +1. **Offseason hub shell** — F9/F10/F11, fully spec'd including its honesty block and quiet-wire empty state. +2. **News/outlook feed** — spec'd row anatomy; `NewsWire.tsx` is a partial implementation of it. +3. **Article media** — S3, fully spec'd hero + figure system. +4. **THE WIRE** — built, reusable. +5. **Share/OG cards** — designed at exact sizes, masters exported. + +### The gap that needs design work authored + +**Only one thing is genuinely un-designed: the hub's INFORMATION ARCHITECTURE +across seasons.** The Offseason file specifies an *offseason* hub; there is no +spec for what the same surface is **in-season**, or how content, articles, wire +and the live slate share one navigation. Every component exists on paper; **their +composition into a year-round media surface does not.** + +### One finding that touches work I just shipped + +**I built a card renderer at 1080×1350 without checking whether a designed card +system existed. It does** — five master sizes with defined layouts, and +rasterised PNGs in `exports/`. The content engine's cards are a parallel +invention. They are not wrong, but they should conform to E16/F8 rather than +diverge, and that reconciliation is a design decision, not a code one. + +## PHASE 3 — the map + +| surface | spec? | built | part of hub? | needs design work? | +|---|---|---|---|---| +| Offseason hub shell | ✅ | ❌ | **core** | no — build it | +| News/outlook feed | ✅ | partial | **core** | no | +| Article media (S3) | ✅ | ❌ | **core** | no — build it | +| THE WIRE | ✅ | ✅ | yes | no | +| Movement strip (E1) | ✅ | ❌ | adjacent | no | +| Share/OG cards (E16) | ✅ | ❌ | yes | **reconcile with content-engine cards** | +| Content-engine posts | ❌ | ✅ | **yes** | **yes — no spec exists** | +| ExploreHub | ❌ | ✅ | host today | **yes — is it the hub or a placeholder?** | +| **Year-round hub IA** | ❌ | ❌ | **the spine** | **YES — the real design gap** | + +### Coordination with the social-strategy chat + +These should be decided **there first**, then reflected on-site: + +- **The content formula/calendar** determines what the hub's recurring slots + *are*. Designing slots before the formula exists risks a surface shaped around + guesses. +- **Card format reconciliation** — off-site posts and on-site share cards should + be one system. E16's five masters vs the content engine's renderer is the same + decision on both sides. +- **Voice**: `specs/VOICE.md` governs; the content engine templates encode a + sharper register. Whether the hub speaks in that register is a brand call. + +### Correction to the still-buildable list + +The order lists content API, preview page, book-comparison mount and guard +widening as pending. **All four shipped at `c575a70`.** Book comparison was never +unmounted — my earlier board grepped only `web/src/app` and missed +component-level mounting. + +**Genuinely buildable now, design-complete, no clock impact:** Offseason hub +(F9–F11), article media (F5), movement strip (E1), calibration curve (E9), the +Report email + archive (E10/E12). The gap audit's own wave ordering already +sequences these.