Files
vyndr/specs/MEDIA-HUB-DESIGN-INVENTORY.md
T
builtbykev 7a318ccce0 Media/hub design inventory: the specs already exist, and so does a gap audit
READ-ONLY. Nothing designed, built or mounted.

THE HEADLINE: this inventory was largely already done. specs/
design-vs-build-gap-audit.md is a 61-item design-vs-build audit from
2026-07-31, every claim grep-verified, with a wave-ordered build plan. The
useful work is reconciling it, not redoing it.

WHAT ALREADY HAS A FULL DESIGN SPEC (and is NOT built):
- Offseason hub -- Vyndr Offseason.dc.html, 119KB: hub home desktop+390, an
  NBA Summer-League variant with an OUTLOOK ONLY / NOT GRADED honesty
  block, season-long board, season-read reveal with WHAT WOULD CHANGE THIS
  READ, news/outlook feed row anatomy, quiet-wire empty state.
- Article media (S3) -- hero template plus four hero graphic archetypes,
  all GENERATED data visuals never stock, inline figures with a one-pull-
  quote max and a caption law that every figure names its data, article
  card, OG 1200x630 with the master already rasterised.
- Movement strip (E1) -- steps not curves, green only when the move favours
  the read, FLAT as hairline. THIS CORRECTS MY 2026-08-07 BOARD, which
  listed it UNKNOWN and possibly satisfied by GradeShift. It is a specified
  primitive that does not exist.

THE WIRE is BUILT (vyndr/Ticker on real ticker exhaust) and is a DIFFERENT
thing from NewsWire.tsx, which is the offseason news/outlook feed.

THE ONE REAL DESIGN GAP: the hub's information architecture across seasons.
The Offseason file specifies an OFFSEASON hub; nothing specifies what that
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.

A FINDING AGAINST MY OWN RECENT WORK: I built a card renderer at 1080x1350
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. Not wrong, but they should
conform to E16/F8 rather than diverge, and that is a design decision.

CORRECTION: the order lists content API, preview page, book-comparison
mount and guard widening as still pending. All four shipped at c575a70,
and book comparison was never unmounted -- my earlier board grepped only
web/src/app and missed component-level mounting.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W1sivYNqY2TS5ftykmHBU9
2026-08-07 19:18:36 -04:00

93 lines
6.7 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.
# 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
(F9F11), 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.