mirror of
https://github.com/we-promise/sure.git
synced 2026-05-30 07:49:01 +00:00
The dashboard centerpiece. Goal::Retirement#glide_payload derives, from the forecast, the active-plan series + a zero-savings (Walletburst) shadow + a ±1pp real-return band + the per-age income breakdown for the hover tooltip + lump markers + the retire/Coast crossover points (three extra deterministic Forecast runs; cheap). retirement_glide_chart_controller (D3, mirrors goal_projection_chart's import / ResizeObserver / theme-observer idiom): portfolio-by-age line + area, accumulation/drawdown phase shading, the ±1pp band cone, the dashed Walletburst shadow, a "Retire · age N / $X" chip on the retire line, a blue Coast crossover ring, purple lump bars, and a hover tooltip (PR #2029 bg-container/rounded-xl/shadow style) showing the monthly State / Workplace / Drawdown breakdown + Total-vs-target with a Covered badge. Wired into the show page above the what-if; container is privacy-sensitive. Browser-verified: renders the band, shading, retire chip ($571K), Coast dot, and shadow against the demo plan. glide_payload + lump_markers unit-tested. Rubocop + erb_lint + biome clean. Remaining for PR4: DS::SelectableCard bucket, "Why this target?" anchor card, skinned DS::Dialog deletes, DE locale, demo seed, system test.