# 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.