-
feat(tide-table): self-updating corpus essay — template Story 02 from EDA + freshness badge (#17) · 24606d49
PLN flagged the "2024, everything at once" stats as stale. Root cause: the chart BARS were data-driven but the PROSE around them was frozen string literals ("334 sample folders", "tripled to 14", "2 → 4 → 14 → 14 → 3-so-far", the section title, the chart tooltips, the magenta-highlight year). They'd drift the moment the corpus moved. Now every one of them derives from EDA at render: - breakoutFacts() reads vocabulary_growth + cadence → peak import month/count, the breakout year (argmax gigs), the year-over-year multiple, and the gig sequence. - Story 02's title, dek, legend, note, the magenta band, and both chart tooltips are templated from it. parsers-over-copy: no number is typed by hand. - Honesty fix surfaced by the templating: 4→14 gigs is 3.5×, not "tripled" (the old hand-copy undersold) nor "quadrupled" (a naive round oversells). The multiple-word only fires when the ratio is within 0.15 of an integer; otherwise it states the exact "grew 3.5×". Trust the instrument (DESIGN principle 1). - New freshness badge in the hero reads EDA.as_of and shows days-since (green ≤14d, amber ≤30d) plus the one-line refresh command (python3 tide.py build). Staleness is now visible and curable instead of silent — the data is 17 days old today. Verified in Chromium via Playwright: title/dek/badge all render from data, no console errors. Follow-up (needs PLN's call): a one-click rebuild from the Bridge (/api/rebuild → tide.py build) vs the current command hint.PLN (Algolia) authored24606d49
×