Component Extraction — Proposal

which hub pieces become standalone components first · the shared spine: hub front · visuals lane · tv wall
proposal — nothing built · extraction, not invention · awaiting alan's edits + order

0 · What "standing alone" means here

Every exposed component gets the house widget contract: its own windowable URL, params on the index card, data source named in-page (or "driven — no fetch"), profile behavior (wall / laptop / narrow, plus tv when that profile lands), a transparent/composed mode so it sits on other surfaces without a seam, an embed handle where interactive, honest empty/stale states, and a receipt. Extraction is verbatim capture of what the hub does today — the LOOK stays the Visuals lane's to change, and the whole point is they get to change it in one place afterward. Cockpit untouched throughout: components mirror the hub; the hub adopts them only on your say-so.

1st · The Numeral — thick type as a component

found in hub source The thick treatment is real and singular: .big — mono at weight 700, 26px, with the tone glow (text-shadow: 0 0 14px at half alpha — green for bull, red for bear), riding a ramp from 9.5px tracked-uppercase labels to a 34px top end, tabular-nums in 36 places. Live sample:  +4.83%  −2.17%  One fork worth a ruling: the hub carries two mono stacks (--mono and the geiger summary's --gs-mono).

Why first: it's the dependency of the other two — the bars are labeled in it, the table is full of it — and it's the piece that makes every surface read as one product. It also carries zero data risk: pure tokens plus a formatting contract. And the TV wall lives or dies on it — 10-foot legibility is a size-ramp question, and the ramp should belong to the component, not to each page.

To stand alone it needs: a tokens sheet lifted verbatim (both mono stacks — flagged, not silently merged — weights, size ramp, tracking scale, tone set, glow recipe); a tiny format contract (value · kind: price/pct/signed · tone: auto-by-sign or pinned · size step · the hub's minus and dash conventions · tabular-nums always); a hook for the basis chip — when the raw→adjusted ruling lands, the numeral is where "adjusted or raw" gets stated everywhere at once; and a specimen route /type showing the full ramp and tones on a handful of live prints, so Visuals restyles against one page instead of nine.

2nd · The Geiger Bars — the meter family

found in hub source The bars are a named builder family, already extracted hub-verbatim inside /geiger: gsMbar (composite meter), gsTrend (trend ladder), gsMtf (RSI/W%R multi-timeframe), gsMacdHist (histogram), gsVArc/gsVRing (volume rings). Data: explicit provider Geiger plus raw FMP provider indicators. Never recomputed.

Why second: the data path is already proven in /geiger; the work is cutting the bar free of the 6-tile page so one bar can live anywhere at any size — a pulse row, a table cell, a TV pane, a Visuals demo.

To stand alone it needs: a bar-only route (/bars) rendering one chosen instrument — ?bar=composite|trend|mtf|macd|rings for ?t= — that fills whatever box it's given (percent geometry, the scene system's native language), with ?bg=0 transparent mode and ?labels=0 for tiny panes; two feed modes — live (fetches its own composite, cache-first like /geiger) and driven, an embed handle in the same idiom as the Visuals crossover piece (row 89, h.set(v)) so a parent page can push values and the two lanes converge on one embed convention instead of growing two; minimum-size honesty per bar type; numerals from component 1 for its labels; and the house STALE badge when the feed is old.

3rd · The Board — a table that's never alone

found in hub source Your instinct matches the code. The hub renders three <table class="mytab"> instances — the consensus grids (analyst_estimates) and the ETF holdings table — and none ships naked: every one sits under a numbered .estsec band ("01·b Consensus grid") with a source chip, inside a zone. The holdings table even carries a bar column — table × bar composition is existing hub practice, not a new idea.

Why a bare table "looks weird": it's missing its frame. The component boundary is therefore not <table> — it's the board: header band (title · source chip · freshness stamp · optional rank/breadth chip) + table + footer, numerals from component 1 in the cells, optional inline bar cells from component 2. The rule rides with the component: a board never registers as a bare full-bleed scene — its documented pairings (board + pulse; board inside research-style scenes) are the composed look you asked for.

Why third: it consumes both earlier components, and it has the widest spec surface.

To stand alone it needs: a declarative column spec (key · label · kind → numeral contract · optional bar · link-through to /chart); density profiles (full grid on wall/laptop, card rows on narrow — the profile switch already exists); two first instances on proven reads — the sector-rotation board (sector_rankings: rank, score, freshness) and the favorites board (hub_favorites × provider quotes × provider Geiger); and its pairing defaults written into the scene fallbacks, so the board arrives already composed.

4 · Sequence, and why this order

Numeral → Bars → Board. Each is the next one's ingredient; risk ramps from no-data to one-proven-read to multi-read; and every step upgrades all three fronts at once, because the routes compose through the existing scene system the moment they exist. Rough weight: the numeral is the smallest piece (tokens + contract + specimen), bars and board are each about one queue item. Nothing here redesigns anything — the geiger math stays untouched, the look stays yours-and-Visuals', the cockpit stays sealed.

5 · What I need from you

An edit or a blessing on the order; a ruling on the two-mono-stack fork (unify or keep both); and a go — on the first item alone or the set. Standing note: /type is also the natural landing pad for the basis ruling and for whatever Visuals picks as winners — one restyle point instead of nine pages.

SCINTILLA · COMPONENT EXTRACTION PROPOSAL · HSC-COMPONENTS-PROP-001 · 2026-08-06
grounded in hub source sc_build 2026-07-16t0330 (.big · gs* builders · .mytab/.estsec) · extraction not invention · db reads only · geiger never recomputed · cockpit untouched · look rides the visuals lane
relay: spine_events · scintilla-live · ← all widgets · tv wall rec (on hold)