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
This commit is contained in:
@@ -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.
|
||||||
Reference in New Issue
Block a user