Skip to content

Phase 17b prototype inventory

Spike SP-3 (#1565) of phase-17b-walk-corrections.md. This is the per-view inventory of the v2 prototype snapshot that guardrails 10 and 12 check coverage against. Its rows are the change registry ids of the snapshot, one table per registry view, 221 in all. Every live id is shown owned by an acceptance box of one milestone issue, or listed as prototype only. Under each table, the elements of that view that no registry entry names have rows of their own, first drafted from the UI repo's docs/prototype/mapping.md (written against v1) and checked against v2.

Snapshot. climate-lama-ui docs/prototype/v2/source/ at artifact version 1791210282-291b (UI main at 7714726). The registry is js/changes17b*.js: 221 entries, 9 titled "Superseded:", 212 live. Every file and line in this document is under docs/prototype/v2/source/.

Coverage run of 2026-10-07. From this repo, with the UI checkout beside it:

python scripts/prototype_registry_coverage.py --registry-dir ../climate-lama-ui/docs/prototype/v2/source/js

It printed the lines below and exited 1. The owner column is written from the same run's --json map.

registry entries: 221 (live 212, superseded 9)
issues read: 289
mapped to an acceptance box: 206
prototype only: 6 (shell-7, shell-8, shell-9, explore-27, explore-44, adapt-19)
unmapped: 

How a registry row reads. It opens with the id, then the title, the hash that shows the entry in the snapshot (its go) and one of these:

  • The owning issues as <tag>#<N>, each with the first words of its acceptance box that names the id. be is this repo, ui is climate-lama-ui and en is climate-lama-engine. Every issue the map lists for the id is named. Titles and box excerpts are quoted as the registry and the issues write them.
  • prototype-only, for an id on guardrail 10's line "Prototype only (registry ids):" (the list of phase-17b-finetune.md § 4), and for a live id the map leaves empty.
  • superseded: <id>, for the 9 entries a later entry replaced. They name no owning issue.
  • deviation: <finding id>, for a departure from v2 the owner approved. Recorded: the 12 rows of K57 to K66 (2026-10-07) and lookup-6 (K73, 2026-10-13). The three listed before 2026-10-05 are what v2 itself shows: the lens outside the top bar (shell-1, settings-7), the Home section in Settings (settings-1, settings-2, home-1) and the two-step dock (explore-28, K36). Their rows name an owning issue like any other.

How an element row reads. It gives the element, its v2 file and line, and the finding id that covers it, out-of-scope: <reason> or prototype-only. SH-16 (parity item, guardrail 1) marks an element with no change of its own, which SH-16's per-view parity item proves against the prototype captures. Under each element table one line lists the first-draft rows that a registry entry names, which that entry's row covers, and one line lists the first-draft rows v2 no longer draws. The elements of the record § 4 list that no registry entry names read prototype-only: the Options entry of the rail (shell), the preview switch fresh (home), the preview switch adminAs (admin) and the scale test (explore).

Open points.

  • lookup-11 is owned by ui#886 since the owner's picks of 2026-10-07 (#1673 item 5, LK-15, K71), so the check prints unmapped: empty.
  • admin-1 is owned by ui#843 since the coverage script stopped crediting admin-level prose (#1698, #1699).
  • Box 9 of #1565 is met: after the delta split the check prints unmapped: with no ids and exits 0, and the owner column agrees with the script's map for every id.

Inventory by view

Views in registry order: shell, home, lookup, portfolios, reports, data, analyses, settings, admin, explore, events, adapt, assistant.

shell

19 registry entries.

Id Title Hash (go) Owner
shell-1 The role lens leaves the top bar #settings.lens ui#729: "shell-1 (SH-17): the switcher and its suite are gone and nothing references …"
shell-2 The bell leads with Watch update items #home be#1617: "EV-14 (shell-2): the watch_update payload also carries event_loss (the result's ground-up loss) …" · ui#789: "shell-2 (SH-11): A watch_update row renders its title ("Watch update: <watch> scored …"
shell-3 One money formatter that never throws #portfolios ui#719: "shell-3 (PF-1, guardrail 2): Every money caller goes through formatAmount over the …"
shell-4 Centred search names what it finds #home ui#854: "shell-4 (SH-6): the palette groups and opens them, and one failing source …" · ui#731: "shell-4 (SH-4, SH-18 grid and trigger): at 1440×900 on /, /explore and …"
shell-5 Density reaches card and KPI padding #settings.appearance ui#733: "shell-5 (SH-20): at 1440×900 the measured root of /portfolios and /settings (main …" · ui#726: "shell-5 (SH-20): at 1440×900 the measured Home root (main > [data-testid=home]) has …"
shell-6 One button style in every P1 view #home ui#742: "shell-6 (SH-21): ConfirmDialog is Modal plus Button (danger or primary confirm, secondary …" · ui#728: "shell-6 (SH-21): every <button> this change edits renders through src/ui/Button and no …" · ui#722: "shell-6 (SH-21): src/ui/Button.tsx renders variants primary, secondary, ghost, danger and icon at …"
shell-7 17b review board replaces the Direction board #review prototype-only (record § 4, the line of guardrail 10)
shell-8 Options to compare, saved for Claude #options prototype-only (record § 4, the line of guardrail 10)
shell-9 A view never fails silently #home prototype-only (record § 4, the line of guardrail 10)
shell-10 Options joins the rail, and the top bar never overlaps #home ui#732: "shell-10 (SH-4): at 1366×768 and 1600×900 on /explore with a scope whose …" · ui#731: "shell-10 (SH-4): at 1366×768 and 1600×900 on /explore and /settings, with Ask …" · ui#730: "shell-10 (SH-4): with nothing saved the rail is unfolded, every entry's caption …"
shell-11 The rail logo: wave mark or shield #home ui#863: "shell-11 (SH-28, K44): the rail's brand link (rail-wordmark, href="/", accessible name and …"
shell-12 One name for the saved-work list #analyses ui#862: "shell-12 (SH-25, K43): the rail entry of /analyses, the phone's bottom tab …"
shell-13 A running indicator: header pill or rail badge #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#866: "shell-13 (EX-20, K42): the top bar shows a pill only while a …"
shell-14 The bell lists your finished runs first #home ui#866: "shell-14 (EX-20): a run of the viewer's that ends raises a toast …" · ui#789: "shell-2, shell-14 (SH-11, EX-20): the bell lists a "Watch updates" head with …"
shell-15 The scope chip shows the resolved scope #explore ui#790: "shell-15 (SH-4, EX-18): in Adapt the top bar reads "Adapt" then the …" · ui#746: "shell-15 (EX-18): on Explore the top bar's scope chip reads the same …"
shell-16 “Added to the report” opens the report #reports ui#869: "shell-16 (RP-2): add_to_report raises the toast "Added to the report basket" with …"
shell-m1 Every map opens on streets that follow the theme #explore ui#760: "shell-m1 (SH-2): With the dark theme and no saved basemap, the style …" · ui#725: "shell-m1 (LK-5, interim): a streets-dark basemap key draws the configured raster template …" · ui#723: "shell-m1 (SH-2, W1 half): defaultBasemap() is auto with and without a street …"
shell-m2 Ember is the default score palette #explore ui#724: "shell-m2 (SH-3): useMapPalette() answers ember when neither a legend pick nor a …"
shell-m3 Satellite and Terrain: “connect a provider” #explore ui#761: "shell-m3 (SH-19): With VITE_TERRAIN_DEM_TILES and VITE_TERRAIN_DEM_ATTRIBUTION set, choosing Terrain adds a raster-dem …"

shell: elements no registry entry names

Element v2 source Covered by
Design tokens: fonts, surfaces, accent, bands, hazard and scenario colours, radius, rail and top bar sizes index.html:14 SH-4, SH-12, SH-20, SH-21
Dark theme and the top bar theme toggle (CL.applyTheme at js/core.js:293) js/app.js:255 SH-4
Risk bands, score pill, hazard tiles and status pills js/core.js:155 SH-16 (parity item, guardrail 1)
Named-action registry (CL.actions, actions defined from js/app.js:290) js/core.js:272 SH-5, EX-4
Hash router CL.go and CL.render, one route per view js/core.js:358 EX-4
Toast, modal and anchored menu js/core.js:308 SH-12
Rail entries with icon and caption, and the phone bottom tabs (four plus More) js/app.js:118 SH-4
Top bar title and the primary Ask button js/app.js:246 SH-4
Map control group: zoom, 3D extrusion, globe, north js/mapkit.js:720 SH-2, SH-19
Chart kit: line, loss exceedance, columns, bars, donut, gauge, sparkline, distribution, grade ruler js/charts.js:6 EX-10, SH-16
Lucide icon set, stroke 1.75 js/icons.js:1 EX-12
Options entry at the head of the rail's pinned group (the Options half of shell-10, not in mapping.md) js/app.js:120 prototype-only (record § 4, the Options button and board)

First-draft rows a registry entry names: map palettes (shell-m2), command palette (shell-4), role lens personas and nav order per lens (settings-7), lens button in the top bar (shell-1), bell with watch items (shell-2), centred search (shell-4), scope chip (shell-15), compact density (shell-5), MapKit basemaps and their menu (shell-m1, shell-m3), MapKit popup card (explore-15), MapKit pins and area draw (explore-41).

First-draft rows v2 no longer draws: the Direction board. js/views/board.js is still loaded but nothing links to it (js/app.js:119), because the 17b review board replaces it (shell-7).

home

15 registry entries.

Id Title Hash (go) Owner
home-1 Home cards come from Settings → Home #settings.home ui#847: "home-1 (SH-16, SH-10 ui#559 "the adaptation-plan figure (avoided loss)", AD-13): the adaptation-plan …" · ui#816: "home-1 (SH-23): UserPreferences types home_cards?: {figures: KpiFigure[]; blocks: HomeBlock[]} \| null, homeFigures(lens …" · deviation: SH-16 (K66)
home-2 The Home book is ranked within one money unit #home ui#721: "home-2 (SH-1, guardrail 2): Home ranks portfolios within one money unit. Over …"
home-3 Portfolio risk headline is the worst band #home ui#741: "home-3 (PF-9, K25): Home's headline card shows the worst band, the pill …"
home-4 Superseded: Expected annual impact per hazard, never summed #home superseded: home-13
home-5 Unscored hazards and the member cap stated #home ui#737: "home-5 (PF-10, run model § 11): Home's headline card ends with one …"
home-6 Events and watches block, no alerts #home be#1611: "EV-14 (home-6, analyses-3): GET /v1/live-events and GET /v1/live-events/{id} serve latest_insured_event_loss, the insured_event_loss …" · ui#785: "events-11, home-6 (EV-16): WatchCard and LiveNowCard format latest_event_loss through formatAmount with latest_event_loss_unit …" · ui#784: "events-11, home-6 (EV-14): The run model § 11 line renders verbatim whenever …" · deviation: EV-14 (K62)
home-7 A Home insight opens Adapt with the scope #home ui#793: "home-7 (AD-1): for a portfolio lens scope Home's Key insights card ends …"
home-8 Quick actions are buttons; layout switch gone #home ui#727: "home-8 (SH-22): the three actions are <Button size="sm"> controls with the Upload …"
home-9 Screening badge on Home figures #home ui#846: "home-9 (SH-16, K26): the map card's chips are "All" and one chip …"
home-10 A new organisation sees four steps to a first result #home ui#864: "home-10 (SH-27, K46): with any step not done Home shows, above the …"
home-11 Empty cards in place of mock figures #home ui#864: "home-11 (SH-27, K46): while step 3 is not done every figure card …"
home-12 New analysis starts clean #home ui#727: "home-12 (SH-22, FT-26): new_analysis is a named action in src/actions/explore/newAnalysis.ts, imported by …"
home-13 A hazard that is not computed offers “Run it” #home ui#846: "home-13 (SH-22, FT-26, PF-8): a hazard the portfolio has no result for …"
home-14 Home opens Explore with an exposure, and never throws #home ui#846: "home-14 (SH-22, FT-26, EX-18): every way from Home into Explore carries an …" · ui#827: "home-14 (SH-16, SH-22, SH-10 ui#538 "region-scoped figures for the Decision-maker": municipalities at …"
home-15 Work in flight is said in words #home ui#866: "home-15 (EX-20): Home's Recent activity names a batch in flight "Batch · …"

home: elements no registry entry names

Element v2 source Covered by
Greeting and lens context line, the head of renderA js/views/home.js:352 SH-16 (parity item, guardrail 1)
Assets at high or severe risk figure, figAssets js/views/home.js:287 SH-23 (served figure catalogue), SH-16 (parity item, guardrail 1)
Live watches, Watch updates, Hazard datasets ready and Engines live figures js/views/home.js:298 SH-23 (served figure catalogue), SH-11, SH-16 (parity item, guardrail 1)
Address search figure with its "Try" place chips (citizen lens) js/views/home.js:303 SH-23 (served figure catalogue), SH-16 (parity item, guardrail 1)
Figures no endpoint serves yet: municipalities at high risk, adaptation plan, engine agreement, scenario cells cached (sh16: true) js/views/home.js:147 SH-16 (their backbone item first), SH-23 (they join the catalogue only when served)
"Where the risk is" map block with its hazard chips js/views/home.js:323 SH-16 (Home: map hazard chips), SH-2, SH-3
Top municipalities block js/views/home.js:326 SH-16 (Home: top municipalities)
Hazard mix block js/views/home.js:327 SH-16 (parity item, guardrail 1)
Preview switch fresh ("Preview: a new organisation", not in mapping.md) js/finetune17b.js:88 prototype-only (record § 4, one of the two preview switches. The state it shows is a target, home-10 and home-11)

First-draft rows a registry entry names: quick actions Upload, Look up and New analysis (home-8), insurer risk score and expected annual impact figures (home-3, home-5, home-13), map popup actions popupAct (home-14), events and alerts list evRows (home-6), recent activity recentRows (home-15), key insights with action buttons (home-7).

First-draft rows v2 no longer draws: the map-first layout B (renderB stays in the code at js/views/home.js:425 but no switch reaches it, home-8 removed the layout switch).

lookup

14 registry entries.

Id Title Hash (go) Owner
lookup-1 Opens on SSP2-4.5 with a visible picker #lookup ui#805: "lookup-1 (LK-1): every hazard header reads "<hazard> · Today" at the Today …" · ui#804: "lookup-1 (LK-1, K4): the panel's row reads "Scenario", the four SSP buttons …"
lookup-2 A future stop never repeats a baseline value #lookup ui#812: "lookup-2 (LK-9): an earthquake whose future cards carry provenance.hazard_conditioning: "not_climate_driven" shows its …" · ui#805: "lookup-2 (LK-1), prod-shaped table: on a Greek river-flood pin answered by an …"
lookup-3 Report panel at 40 %, resizable to 55 % #lookup ui#809: "lookup-3 (LK-8): at a 1440 px viewport LOOKUP_PANEL opens at 576 px …"
lookup-4 One collapsed “Why this score?” block #lookup ui#814: "lookup-4 (LK-13, K49): for a river-flood card (dataset "JRC river flood Greece" …" · ui#809: "lookup-4 (LK-8) move inventory (guardrail 9), HazardDetail's sections into one "Why this …"
lookup-5 Watch and Place report work #lookup ui#810: "lookup-5 (LK-3): the top bar reads "Watch", "Share" and "Place report" in …"
lookup-6 The map raster follows the hazard tab #lookup ui#806: "lookup-6 (LK-4): on a fixture card with earthquake banded 7 and river …" · deviation: LK-4 (K73)
lookup-7 Flood chances read “at least” #lookup ui#811: "lookup-7 (LK-7): HazardChances prints "at least 10 %" for this year and …"
lookup-8 Catalogue measures with “Model the benefit” #lookup ui#813: "lookup-8 (LK-10): the river-flood tab's block "What you can do" lists at …"
lookup-9 Coordinates shown; Phase 18 extras removed #lookup ui#831: "lookup-9 (LK-12): QuickPlaces renders exactly the places useCoveredPlaces() returns, as chips with …" · ui#807: "lookup-9 (LK-11): the two inputs, labelled "Latitude" and "Longitude", sit in the …"
lookup-10 Tabs show icon, name and the stop’s score #lookup ui#808: "lookup-10 (LK-6): every tab renders a HazardIcon, a short name from lookup:hazardsShort.* …"
lookup-11 “This area” shows saved-run figures per hazard #lookup ui#886: "lookup-11 (LK-15, K15, K26): "This area" reads GET /v1/risk/admin-units/{boundary_id}/impact …"
lookup-12 The pin opens a place card #lookup ui#867: "lookup-12 (LK-14): a click on the pin opens the place card with …"
lookup-13 Open in Explore takes the place path #lookup ui#867: "lookup-13 (LK-14, BC-8, K38): "Open in Explore" on a Greek pin opens …"
lookup-14 Moving the pin raises no error #lookup ui#867: "lookup-14 (LK-14, FT-28): a click on the map away from the pin …"

lookup: elements no registry entry names

Element v2 source Covered by
Address search box in the top row js/views/lookup.js:150 LK-2
Share button beside Watch and Place report js/views/lookup.js:154 SH-16 (parity item, guardrail 1)
Street and Satellite switch on the Lookup map js/views/lookup.js:331 SH-19
Past event cards under the map js/views/lookup.js:317 SH-16 (parity item, guardrail 1)
Hazard group cards under the headline js/views/lookup.js:322 LK-8
Cumulative chance chart over 30 years js/views/lookup.js:265 LK-1, LK-7
Key insights card js/views/lookup.js:324 SH-16 (parity item, guardrail 1)

First-draft rows a registry entry names: quick-place chips (lookup-9), Watch and Place report buttons (lookup-5), the map with its pin and dropped-pin click (lookup-12, lookup-14), the headline score and "Worst of n" (lookup-3), hazard tabs with icon and score (lookup-10), chances this year, in 15 and in 30 years (lookup-7), the score by time horizon ruler at js/views/lookup.js:291 (lookup-2), the collapsed "Why this score?" (lookup-4), "What you can do" with "Model the benefit" (lookup-8), the "This area" community tab (lookup-11).

First-draft rows v2 no longer draws: 3D city buildings and the depth legend, Street photo and Edit home in the map switch, the Edit home modal and the illustrative 30-year damage line (lookup-9 removed them), the layout B floating card and gauge (lookup-9 removed the layout toggle, and the file header at js/views/lookup.js:6 says layout B is left out).

portfolios

15 registry entries.

Id Title Hash (go) Owner
portfolios-1 Books read in their own unit; mixed units named #portfolios ui#737: "portfolios-1 (PF-10, K27): a rollup with value_weighted.unit = null and reason = …" · ui#736: "portfolios-1 (PF-3): the card's EAD lines print in the list row's value_unit …"
portfolios-2 EAD per hazard, labelled, never summed #portfolios ui#720: "portfolios-2 (PF-8): A portfolio with a river-flood and an earthquake entry in …"
portfolios-3 Worst band headline with value distribution #portfolios ui#741: "portfolios-3 (PF-9, K25): the card renders "X % of value in high …"
portfolios-4 Score-only books refuse a money loss #portfolios.ghsl ui#743: "portfolios-4 (PF-4, K19): once the scope is known score-only, the strip's not-computed …"
portfolios-5 Member cap and unscored hazards disclosed #portfolios ui#737: "portfolios-5 (PF-10): with subject.scored_member_count 100 and member_count 150, the card reads "100 …"
portfolios-6 A failing book cannot take the list down #portfolios ui#734: "portfolios-6 (PF-5): on Portfolios, one PortfolioCard that throws (fixture portfolios with value_unit …"
portfolios-7 Upload asks for an ISO currency or m3 / persons #portfolios.upload ui#738: "portfolios-7, data-9 (PF-2): Upload offers an ISO 4217 select plus the non-money …"
portfolios-8 Value sorts within one unit; ruler follows scenario #portfolios ui#826: "portfolios-8 (PF-7, SH-1): the context chip drives every card"
portfolios-9 Synopsis: value donut, EAD per hazard, typical band #portfolios.hpb ui#828: "portfolios-9 (PF-7, PF-8, K26): the tiles and the per-hazard list follow K26 …" · ui#741: "portfolios-3, portfolios-9 (PF-9, K49): the average reads exactly "value-weighted average band (ordinal …"
portfolios-10 Explore, Adapt and Report carry the book #portfolios.hpb ui#830: "portfolios-10 (PF-6): the card's "Report" action addresses the portfolio"
portfolios-11 Portfolios built from exposure layers say so #portfolios ui#861: "portfolios-11 (FT-16, PF-12): a portfolio built from catalogue data reads "Built from …"
portfolios-12 The upload dialog says it creates a portfolio #portfolios.upload ui#861: "portfolios-12 (FT-16, PF-12): "Upload portfolio" opens a dialog titled "Upload a portfolio" …" · deviation: PF-12 (K65)
portfolios-13 Import runs as an ingest job #portfolios.upload be#1667: "DT-7, data-12, portfolios-13: POST /v1/exposures stages the file in object storage, enqueues …" · ui#861: "portfolios-13 (FT-16, FT-12, FT-17): "Import" closes the dialog, raises "Import started: <name> …"
portfolios-14 New version, pins and Add to analysis #portfolios.hpb ui#861: "portfolios-14 (FT-16, PF-12): "Upload a new version" in a card's menu (a …" · ui#829: "portfolios-14 (PF-12, K49): with one row selected the bar reads "1 selected" …"
portfolios-15 One word for your own assets #portfolios.hpb be#1667: "DT-7, data-15, portfolios-15: an exposure dataset created by a portfolio upload names …" · ui#861: "portfolios-15 (FT-16, K49): cards, the synopsis and its notes say "portfolio" throughout …"

portfolios: elements no registry entry names

Element v2 source Covered by
List toolbar: search, kind chips, context chip, sort, template, upload js/views/portfolios.js:470 PF-7
Card map thumbnail js/views/portfolios.js:407 PF-7
Geocoded precisely meter on the card js/views/portfolios.js:411 PF-7
Add a portfolio card with three ways in js/views/portfolios.js:420 PF-7
Card More menu: download assets as CSV, share with a team, delete (not in mapping.md) js/views/portfolios.js:530 SH-16 (parity item, guardrail 1)
Column mapping with the assistant's suggestion js/views/portfolios.js:635 SH-16 (parity item, guardrail 1)
Address geocode with quality pills js/views/portfolios.js:712 PF-7
Detail header: worst and average band and context chips js/views/portfolios.js:756 SH-16 (parity item, guardrail 1)
Detail map Clusters and Areas switch with a hazard-layer toggle js/views/portfolios.js:740 PF-7, EX-14
Synopsis KPI tiles with the 1-in-200 loss js/views/portfolios.js:803 PF-7
Synopsis geographic spread bars js/views/portfolios.js:807 PF-7
Asset directory: search, type filter, sort, export, top-3 hazard columns js/views/portfolios.js:744 PF-7, SH-12
Directory bulk select bar js/views/portfolios.js:840 PF-7
Unknown portfolio id state (not in mapping.md) js/views/portfolios.js:1087 SH-16 (parity item, guardrail 1)

First-draft rows a registry entry names: the card's score, assets, value and EAI (portfolios-1, portfolios-2, portfolios-3), the band distribution bar (portfolios-3), the headline grade ruler (portfolios-8), card actions Open, Explore, Adapt and Report (portfolios-10), the CSV template preview and download (portfolios-7), the upload dialog with name, owner and currency (portfolios-7, portfolios-12), the detail header actions Explore, Adapt and Report (portfolios-10), the synopsis band donut and by-hazard bars (portfolios-9). Named elements that mapping.md lacks: the import strip (portfolios-13), the kind chips filter (portfolios-11), the bulk "Add to analysis" (portfolios-14), the failing card (portfolios-6).

First-draft rows v2 no longer draws: none.

reports

14 registry entries.

Id Title Hash (go) Owner
reports-1 ORSA reads “Wording to verify” #reports be#1637: "reports-1 (RP-1): The running API serves it"
reports-2 Portfolio report from a book, with Draft #reports.portfolio ui#838: "reports-2 (PF-6): Draft shows only while features.assistant is on" · ui#830: "reports-2 (PF-6): the Studio creates a scoped document from that address"
reports-3 A portfolio rollup widget #reports.portfolio ui#833: "reports-3 (PF-6): the picker adds a rollup widget for a chosen portfolio"
reports-4 Event loss with its basis, no alert wording #reports.event be#1616: "EV-14, the printed half of reports-4: when the watch has terms, the …" · ui#784: "reports-4 (EV-14, EV-17): the Reports Studio's event_result preview reads its result (GET …"
reports-5 Superseded: Widgets reference results by id #reports superseded: reports-9
reports-6 Impact analysis is the eighth template #reports.impact be#1637: "reports-6 (RP-1): The template listing serves all eight templates of the domain …"
reports-7 Place widget from Lookup #lookup ui#810: "reports-7 (LK-3, K15, K49): a report filled with the staged place shows …"
reports-8 Report money in the scope’s unit, per hazard #reports ui#739: "reports-8 (PF-3): the Reports EAD and insured-loss KPI previews and the curve …"
reports-9 Nothing invented #reports be#1638: "RP-2 (FT-23, feeds reports-9 and reports-10): a document with scope.admin_boundary_id round-trips and …" · ui#869: "reports-9 (RP-2, FT-23): a key figures, map, loss curve, scenarios over time …" · ui#833: "reports-9 (RP-2): a portfolio whose rollup bands no hazard and whose ead_by_hazard …"
reports-10 A place report is a screening #reports.place be#1638: "RP-2 (FT-23, feeds reports-9 and reports-10): a document with scope.admin_boundary_id round-trips and …" · ui#869: "reports-10 (RP-2, K15): a place report whose municipality holds no run shows …"
reports-11 An empty report names the ways to fill it #reports ui#869: "reports-11 (RP-2): "New" starts a report with no widget, whose canvas reads …"
reports-12 The share link points at this report #reports ui#869: "reports-12 (RP-2): "Share link" copies <origin>/reports?doc=<this report's id> and toasts "Link to …"
reports-13 The event report carries the event id #reports.event.daniel ui#869: "reports-13 (RP-2, EV-19): a post-event report shows its event's key in the …"
reports-14 The basket knows saved work and Events #reports ui#845: "analyses-14, reports-14 (EX-21): "Add to report" sends the item itself"

reports: elements no registry entry names

Element v2 source Covered by
My reports drafts list with New js/views/reports.js:939 SH-16 (parity item, guardrail 1)
Canvas title, scope chip, Edit and Preview js/views/reports.js:942 PF-6
Scope menu: portfolio or place js/views/reports.js:1093 PF-6
Add widget menu and widget menu (move, remove) js/views/reports.js:1062 SH-16 (parity item, guardrail 1)
Comment and reviewer notes widget js/views/reports.js:733 out-of-scope: the product keeps its note widget. Reviewer notes with author and date need a comment store that no finding or milestone issue asks for
Adapt widget (saved plan table) js/views/reports.js:777 AD-8
Completeness ring and checklist (Compliance coverage or Report completeness) js/views/reports.js:1018 SH-16 (parity item, guardrail 1)
Export and share: PDF plus copy link (v2 also draws Word, share at js/views/reports.js:1134) js/views/reports.js:945 RP-2 (the share link of reports-12). out-of-scope: the Word export, no Word renderer is in this phase. The product already serves PDF

First-draft rows a registry entry names: the templates list with eight templates (reports-6, reports-1), the report basket (reports-14), figure widgets for kpis, map, lec, horizon, table and hazards (reports-8, reports-9), the text widget with assistant Draft (reports-2), the event widget (reports-13).

First-draft rows v2 no longer draws: none.

data

17 registry entries.

Id Title Hash (go) Owner
data-1 Hazard drawer: frequency type, bbox, slices #data.jrc-rf-grc ui#823: "data-1 (DT-1, DT-2, DT-3): a hazard layer's drawer and full page read …"
data-2 Earthquake marked not climate-driven #data.eshm-grc ui#823: "data-2 (LK-9, EX-16): a hazard layer's drawer and full page read "Climate-driven" …"
data-3 River flood SSP2-4.5 for region “Greece” #data.rf-ssp245-gr ui#712: "data-3 (EX-1, SH-7, guardrail 2): The UI stack loads the prod-shaped seed …"
data-4 Exposures show value unit and exposure type #data.census-cyp ui#821: "Each tab's summary strip counts its own rows (SH-16)"
data-5 HDF5 upload lists its dropped columns #data.litpop-cyp-h5 ui#825: "data-5 (DT-4): the drawer and the full page print them"
data-6 Curves carry an exposure type and default #data.jrc-ddf ui#823: "data-6 (DT-5): a damage curve's drawer reads "Exposure type" with the served …"
data-7 An empty tab invites an upload #data ui#820: "data-7 (SH-13): a tab that holds no dataset invites an upload, and …"
data-8 Measures read as standards and floor raises #data.m-levee ui#823: "data-8 (AD-2, AD-15, AD-11): a measure row of the Adaptation measures tab …"
data-9 Dataset upload asks for the value unit #data ui#738: "portfolios-7, data-9 (PF-2): Upload offers an ISO 4217 select plus the non-money …"
data-10 An upload says what it creates #data be#1670: "DT-7, data-10: POST /v1/admin-boundaries/uploads (an analyst or above) takes a GeoJSON FeatureCollection …" · be#1667: "DT-7, data-10: POST /v1/exposures takes country (ISO3) and reference_year. A file whose …" · ui#876: "data-10 (DT-7): the adaptation measures kind asks for "Hazard type" and reads …" · ui#822: "data-10 (DT-7, K49): "Upload a dataset" opens with six kind cards in …"
data-11 Damage curves and event footprints upload as themselves #data be#1670: "DT-7, data-11: POST /v1/impact-functions takes exposure_type (default buildings) and is_default (default false) …" · ui#876: "data-11 (DT-7): the Vulnerability tab uploads a damage curve and the Events …"
data-12 An upload runs as an ingest job #data be#1667: "DT-7, data-12, portfolios-13: POST /v1/exposures stages the file in object storage, enqueues …" · ui#877: "data-12 (DT-4, DT-7): the upload result is the bar's finished row, since …"
data-13 An upload asked for elsewhere finds its way back #data ui#877: "data-13 (DT-7, EX-18, SH-27): an upload that another view asked for (#822's …" · ui#822: "data-13 (DT-7, EX-18, SH-27): /data?upload=exposure&back=<an Explore address> opens "Upload a dataset" on …"
data-14 Use in Explore on the row, the drawer and the page #data.litpop-cyp-h5 ui#824: "data-14 (DT-7, EX-18, PF-12): a hazard or exposure layer carries "Use in …"
data-15 A portfolio’s file links to its portfolio #data.hpb-csv be#1667: "DT-7, data-15, portfolios-15: an exposure dataset created by a portfolio upload names …" · ui#823: "data-15 (DT-7, PF-12, K49): the drawer and the full page of an …"
data-16 Post-event report opens for that event #data.e-daniel ui#823: "data-16 (SH-16, RP-2): an event's drawer offers its next steps with the …"
data-17 A new version is an ingest too #data.litpop-grc be#1667: "DT-7, data-17: an upload through POST /v1/hazards/upload or POST /v1/exposures names the …" · ui#824: "data-17 (DT-7): "Upload a new version" on a hazard or exposure layer's …"

data: elements no registry entry names

Element v2 source Covered by
Six catalogue tabs with counts (tabs drawn at js/views/data.js:1012) js/views/data.js:192 SH-16, SH-10
Summary strip per tab js/views/data.js:470 SH-16
Filter chips with counts and free-text search js/views/data.js:493 SH-16
Storage meter js/views/data.js:1014 SH-16 (parity item, guardrail 1)
Catalogue table js/views/data.js:455 SH-16 (parity item, guardrail 1)
Coverage toggle and matrix "What the platform can compute where" js/views/data.js:956 SH-16
Coverage side cards "Scenarios and horizons ingested" and "Exposure and damage curves" js/views/data.js:957 SH-10
Details drawer mini-map, metadata and legend js/views/data.js:619 SH-16, SH-12
Drawer Provenance, Used by and Versions js/views/data.js:561 SH-16
Row actions: preview, download, delete, open full page js/views/data.js:399 SH-16
Vulnerability curve preview (modal at js/views/data.js:703) js/views/data.js:635 SH-16
Event row: Portfolios in the footprint, Replay in Explore js/views/data.js:580 SH-16
Drag and drop onto the catalogue js/views/data.js:503 SH-16
Upload menu: CSV template and GeoTIFF guide js/views/data.js:909 SH-16
Full dataset page js/views/data.js:1138 SH-16

First-draft rows a registry entry names: the upload modal by kind (data-10, data-11, data-9), Use in Explore on the row and the page (data-14), Post-event report on an event row (data-16), the empty-tab upload call (data-7), the hazard drawer's frequency type and bbox (data-1).

First-draft rows v2 no longer draws: none.

analyses

17 registry entries.

Id Title Hash (go) Owner
analyses-1 Runs read in their own unit #analyses.an9 ui#735: "analyses-1 (SH-8, PF-3): RunCard and RunSummaryDrawer format the EAD and pass formatLoss …"
analyses-2 Multi-hazard batch: each hazard, no total #analyses.an2 ui#848: "analyses-2 (PF-8, K26): a result set of several hazards (a batch over …"
analyses-3 Event replay: ground-up and insured, not annual #analyses.an5 be#1611: "EV-14 (home-6, analyses-3): GET /v1/live-events and GET /v1/live-events/{id} serve latest_insured_event_loss, the insured_event_loss …" · ui#878: "analyses-3 (EV-14): a saved event replay's card shows the event loss of …" · ui#848: "analyses-3 (EV-14): the run summary of a saved event replay leads with …"
analyses-4 Provenance: exposure, clip, growth, measures, curve #analyses.an9 ui#879: "analyses-4 (EX-15, EX-16): the run summary shows "Inputs" with "recorded at start" …"
analyses-5 Score-only refusal with its fix #analyses.an11 ui#845: "analyses-5 (SH-16, PF-4): a failed card names a fix by error code"
analyses-6 An adapted run is listed #analyses.an10 ui#793: "analyses-6 (AD-1, K43): in History a saved run whose result carries provenance.measure_ids …"
analyses-7 Earthquake 2050 reads “hazard same as today” #analyses.an12 ui#879: "analyses-7 (EX-16, LK-9): a run whose provenance.hazard_conditioning is not_climate_driven (earthquake at SSP2-4.5 …"
analyses-8 Loss curve basis stated #analyses.an1 ui#762: "explore-23, analyses-8 (EN-7, K49): every loss curve of a return-period result shows …"
analyses-9 Screening badge on run cards #analyses ui#735: "analyses-9 (run model § 11): a card whose result's hazard dataset is …"
analyses-10 Open in Explore restores the whole run #analyses.an10 ui#878: "analyses-10 (EX-21): "Open in Explore" on a card and a table row …"
analyses-11 The list is live #analyses ui#878: "analyses-11 (EX-21): the list is live"
analyses-12 A run of several cells says what was stored #analyses.an13 ui#879: "analyses-12 (EX-22, EX-21): the run summary of a run of several cells …" · ui#878: "analyses-12 (EX-22): a card of a run of several cells says what …"
analyses-13 Replays open in Events, comparisons in Compare #analyses.an14 ui#878: "analyses-13 (EX-21, EV-19, EX-11): a replay opens in Events and a comparison …"
analyses-14 Add to report sends the analysis itself #analyses.an9 ui#845: "analyses-14, reports-14 (EX-21): "Add to report" sends the item itself"
analyses-15 Running now lists the jobs in flight #analyses be#1662: "EX-20 (registry analyses-15 on ui#844): GET /v1/jobs serves impact_workers, the impact worker …" · ui#844: "analyses-15 (EX-20, SH-16): "Running now" reads the shared jobs poll and names …" · deviation: EX-20 (K64)
analyses-16 The view follows the name of the list #analyses ui#862: "analyses-16 (SH-25, K43): History's head shows a count that follows the list …"
analyses-17 A card shows the figure of its own run #analyses.an2 ui#878: "analyses-17 (EX-21): a card shows the figure of its own run"

analyses: elements no registry entry names

Element v2 source Covered by
Toolbar kind chips, Status and Engine menus, Cards and Table js/views/analyses.js:936 SH-16
Run card map thumbnail js/views/analyses.js:712 SH-16
Card and row actions compare, reproduce, delete js/views/analyses.js:879 SH-16, SH-10
Failed card and drawer Fix it js/views/analyses.js:894 SH-16
Dense table rows js/views/analyses.js:917 SH-13
Compare tray js/views/analyses.js:1053 SH-16 (parity item, guardrail 1)
Drawer header and KPI strip js/views/analyses.js:1110 SH-16
Drawer progress steps and Cancel run js/views/analyses.js:1098 SH-16, EX-20
Drawer map plus treemap "Where the impact is" js/views/analyses.js:1121 SH-16
Drawer "By asset type" bars js/views/analyses.js:1125 SH-16
Result checksum and Reproduce js/views/analyses.js:1136 SH-10
Empty list "Nothing saved yet" and "Nothing matches these filters" (not in mapping.md) js/views/analyses.js:1016 SH-16 (parity item, guardrail 1)
Drawer Cancelled state (not in mapping.md) js/views/analyses.js:1116 EX-20
Hazard menu on a multi-hazard Open or Re-run (not in mapping.md) js/views/analyses.js:1228 EX-21

First-draft rows a registry entry names: the running strip with progress, time estimate, cancel and queue (analyses-15), the toolbar search box and New button (analyses-16), the run card's figure and status (analyses-17, analyses-1, analyses-9), the drawer's loss exceedance curve (analyses-8), inputs and the provenance record (analyses-4), the drawer footer Open in Explore, Compare, Add to report and Re-run (analyses-10, analyses-13, analyses-14).

First-draft rows v2 no longer draws: none.

settings

10 registry entries.

Id Title Hash (go) Owner
settings-1 Nine sections, Role lens first #settings ui#853: "settings-1 (SH-24, ui#530): SECTIONS = ['lens','appearance','units','alerts','places','assistant','home','api-keys','organization'], default lens, so ui#530's Watched places …" · ui#851: "settings-1 (SH-24): the section's fields read "Organisation name", "Default role lens for …" · ui#850: "settings-1 (SH-24): ThemeMode gains system, set_theme accepts it (the pinned manifest test …" · ui#849: "settings-1 (SH-24, ui#530, the mock's Watched places section): /settings/places lists only open …"
settings-2 Settings → Home picks figures and blocks #settings.home ui#816: "settings-2 (SH-23): /settings/home reads "Following the <lens> lens default." with "Pick figures …"
settings-3 Assistant: model, effort and provider #settings.assistant be#1602: "AS-1 (b), feeds settings-3's " · default" mark: with ASSISTANT_EFFORT=low the body …" · ui#768: "settings-3 (AS-1, AS-3): the card is headed "Organisation model and effort" with …"
settings-4 The assistant’s read-only query tools #settings.assistant ui#853: "settings-4 (AS-2, AS-4): the Assistant section shows "What it can read" with …"
settings-5 Currency display drives every money figure #settings.units ui#817: "settings-5 (SH-24, PF-3): formatAmount takes the stored currency display, money style and …"
settings-6 Notifications: Watch update, e-mail later #settings.alerts ui#818: "settings-6 (SH-24, SH-11, K28, ui#530 per-alert-kind in-app toggles): the section opens with …" · deviation: SH-24 (K60)
settings-7 The role lens is set here only #settings.lens ui#729: "settings-7 (SH-17): Settings → Role lens reads "Pick the lens that matches …"
settings-8 Satellite and 3D terrain are enabled entries #settings.appearance ui#761: "settings-8 (SH-19): Settings → Appearance → "Basemap" shows one card per basemap …"
settings-9 Notifications say where they show, and switch it #settings.alerts ui#818: "settings-9 (SH-24, FT-27, EX-20): the rows "An analysis finishes" and "An analysis …"
settings-10 Portfolio and exposure layer in every line #settings.lens ui#853: "settings-10 (K49, K43): no text the nine sections render matches /\bbooks?\b/i, and …"

settings: elements no registry entry names

Element v2 source Covered by
Theme cards (light, dark, system), high contrast and reduce motion toggles js/views/settings.js:307 SH-24
Map palette cards with the Greece preview js/views/settings.js:311 SH-24, SH-3
Basemap cards Automatic, Light, Dark and Greyscale js/views/settings.js:314 SH-2
Watched places with their current hazard scores js/views/settings.js:373 SH-24
Show the assistant toggle and the named-action catalogue "What it can do" js/views/settings.js:396 SH-24
API keys table with create, rotate and revoke js/views/settings.js:405 SH-16 (parity item, guardrail 1)
"Show an example" button of the notifications section, a demo run that ends in three seconds js/views/settings.js:354 prototype-only (guardrail 10, #1673 item 16)
Organisation: name, default lens, members link, logo, accent, report footer and cover preview js/views/settings.js:426 SH-24

First-draft rows a registry entry names: section nav with icon, sub and Admin pill (settings-1), role lens cards (settings-7, settings-10), density (shell-5), Satellite and 3D terrain basemap cards (settings-8), units and formats with live preview (settings-5), alerts per type table (settings-6, settings-9), assistant model, effort and provider card (settings-3), read-only query tools (settings-4).

First-draft rows v2 no longer draws: none.

admin

13 registry entries.

Id Title Hash (go) Owner
admin-1 Oasis LMF is a live engine #admin.engines ui#843: "admin-1 (K24, EN-3, EN-4): Engines lists Oasis LMF as a live engine beside the others and says what it runs …"
admin-2 Impact work has its own queue #admin be#1669: "admin-2 (EN-1): a platform-admin read GET /v1/admin/queues serves the impact lane's queue …" · ui#841: "admin-2 (EN-1): System health's "Impact queue" tile reads the impact lane from …" · be#1589 and be#1588 are false matches on an admin-2 unit
admin-3 Feeds keep a per-poll summary, no forecast #admin.feeds ui#841: "admin-3 (EV-1, SH-16, SH-10 ui#533 "live-feed health across all watches"): the "Live …"
admin-4 Audit shows assistant steps and settings #admin.audit be#1602: "AS-1 (b), feeds admin-4: a change of the organisation's assistant setting writes …" · ui#840: "admin-4 (AS-1, AS-2): the audit log names the assistant's steps and the …"
admin-5 Invite, audit filter and CSV, conformance run #admin.users ui#859: "SP-2 (d): tests/e2e/parity/states.spec.ts runs in #710's visual project and, at collection time …" · ui#843: "admin-5 (SH-15): the button "Run the conformance scenario" runs a comparison for …" · ui#840: "admin-5 (SH-15): "Invite people" opens a dialog titled "Invite people" with "E-mail …" · deviation: SH-15 (K57, K58)
admin-6 A score-only refusal in recent failures #admin be#1669: "PF-4, feeds admin-6: a compute refused at submission (a 422 such as …" · ui#841: "admin-6 (PF-4): System health's "Recent failures" card, headed "last 7 days", lists …"
admin-7 Engine 0.6.0 with lifetimes and combined plans #admin.engines be#1669: "admin-7 (EN-8, K32): GET /v1/engines serves each registered engine's installed version and …" · ui#841: "admin-7 (EN-8, K32): System health's "Versions" card, marked "deployed", lists "Core service" …"
admin-8 Admin keeps its layout after Adapt #admin ui#840: "admin-8 (SH-26): Admin keeps its layout after Adapt. From /adapt the rail's …"
admin-9 Two groups of tabs, by admin level #admin ui#840: "admin-9 (SH-26, K45): as a platform admin /admin lands on /admin/health, and …" · deviation: SH-16 (K59)
admin-10 Preview what an organisation admin sees #admin ui#840: "admin-10 (SH-26, K45): as an organisation admin without the platform flag /admin …"
admin-11 Data requests of the organisation #admin.requests be#1669: "SH-26 (BC-9), feeds admin-11: as an organisation admin GET /v1/admin/data-requests lists only …" · ui#880: "admin-11 (SH-26, K45): the "Organisation" group lists "Data requests" after "Usage", for …"
admin-12 Usage by organisation is a platform block #admin.usage ui#859: "SP-2 (d): tests/e2e/parity/states.spec.ts runs in #710's visual project and, at collection time …" · ui#842: "admin-12 (SH-16, SH-26): Usage opens on "<organisation name>" with "usage of your …"
admin-13 The feeds tile matches the feeds tab #admin ui#841: "admin-13 (SH-26): System health's "Live feeds" tile counts the rows the Live …"

admin: elements no registry entry names

Element v2 source Covered by
System health tiles API, Tile service, Geocoder and Storage with sparklines js/views/admin.js:222 SH-26, SH-10
Jobs now card js/views/admin.js:240 SH-26
Users and roles table: search, role filter, change role, remove js/views/admin.js:245 SH-16 (parity item, guardrail 1), SH-26
Organisations table and the data isolation note js/views/admin.js:258 SH-16 (parity item, guardrail 1), SH-26
Planned engines under "Joining next" (Delft-FIAT, OS-Climate physrisk, OpenQuake) js/views/admin.js:282 out-of-scope: a Phase 18 preview, no planned engine is registered in the backbone
Ingest approvals: waiting for approval, ingesting now, finished recently js/views/admin.js:287 SH-16 (parity item, guardrail 1), SH-26
Usage charts: runs per day by engine and map tile requests js/views/admin.js:310 SH-26, SH-10
Preview switch adminAs ("Preview: view Admin as", not in mapping.md) js/finetune17b.js:89 prototype-only (record § 4, one of the two preview switches. The states it shows are targets, admin-10 and admin-12)

First-draft rows a registry entry names: the Impact queue tile (admin-2) and the Live feeds tile (admin-13) of the health tiles, recent failures (admin-6), the Versions card (admin-7), Invite people (admin-5), engine cards with the conformance line and run button (admin-1, admin-5, admin-7), the live feeds table with poll and pause (admin-3, admin-5), usage KPIs and the by-organisation table (admin-12), the audit log with search, source filter and CSV export (admin-4, admin-5).

First-draft rows v2 no longer draws: none.

explore

44 registry entries.

Id Title Hash (go) Owner
explore-1 Superseded: Three dock tabs, redefined: Scope, Layers, Analysis #explore superseded: explore-28
explore-2 Superseded: Scope opens on “What is at risk” #explore superseded: explore-29
explore-3 Superseded: Where is an optional clip, never an input #explore.analyse?exposure=portfolio:aegean&clip=admin:GRC.8.2_1&hazard=river_flood&cells=baseline@today superseded: explore-29
explore-4 Analysis is the run form in a fixed order #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#745: "explore-4 (EX-16, K23, K48): the Run step shows the resolved scope line …"
explore-5 Cells multi-select into one matrix run #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#748: "explore-5, explore-32 (EX-3, K51): the matrix shows a "Today" row and one …"
explore-6 One “Run N cells” with a per-cell progress grid #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 be#1662: "EX-3, EX-15 (registry explore-6 on ui#748): GET /v1/compute/impact/matrix/{batch_id} serves, per cell, the …" · ui#748: "explore-6 (EX-16, EX-3): the Run row reads "Run 4 cells" for four …"
explore-7 Superseded: Vulnerability line with the two refusals #explore.analyse?exposure=portfolio:ghsl&hazard=river_flood&cells=baseline@today superseded: explore-35
explore-8 Future exposure growth with its reference year #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050&growth=0.02 ui#755: "explore-8 (EX-16, K18): the value cell's label follows the growth of the …" · ui#750: "explore-8 (EX-16, K18, K48): step 4 is headed "Exposure growth" with a …"
explore-9 Superseded: Measures inside the run, before/after drawn #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050&measures=raise,levee superseded: explore-34
explore-10 Engine choice, Oasis disabled with its reason #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#752: "explore-10 (EX-16, EX-11): step 6 of Run is headed "Engine" and shows …"
explore-11 Key-figure strip: five served cells, one Run #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#755: "explore-11 (EX-10, K52): the strip renders five cells from served fields over …"
explore-12 Unavailable cells say why and what the scope holds #explore.analyse?exposure=portfolio:hpb&hazard=coastal_flood&cells=ssp2-4.5@2050 ui#748: "explore-12 (EX-2): a matrix cell that does not resolve draws "—" in …" · ui#717: "explore-12 (EX-2): The dock's run form shows the reason and the cells …"
explore-13 Non-climate hazards read “hazard same as today” #explore.analyse?exposure=portfolio:hpb&hazard=earthquake&cells=ssp2-4.5@2050 ui#748: "explore-13 (EX-16, § 3.4, § 11): for a hazard whose coverage reads …"
explore-14 The scope’s assets drawn before any compute #explore.analyse?exposure=portfolio:aegean&hazard=river_flood&cells=ssp5-8.5@2030 ui#754: "explore-14 (EX-14): the layer is one MapKit ScopeAssetsLayer that takes a tile …"
explore-15 Per-tier popup cards and “Make this the scope” #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#757: "explore-15 (EX-14): the admin card reads GET /v1/risk/admin-units/{boundary_id} at the viewed cell's …" · ui#756: "explore-15 (EX-14): each tier's card renders its served fields and runs its …" · deviation: EX-14 (K61, the unit band after a result)
explore-16 Level switch and legend shown throughout #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#758: "explore-16 (EX-8): with a loaded result drawn at the region tier and …" · ui#756: "explore-16 (EX-14): the level switch shows before a compute with its tier …" · deviation: EX-14 (K61, two admin tiers)
explore-17 Mode bar with four modes, Copy link and Save #explore ui#765: "explore-17 (EX-12): the mode bar shows four modes in the order "Analyse" …"
explore-18 The run lives in the URL, legacy keys rewritten #explore.analyse?scope=portfolio&id=aegean&sc=ssp585&horizon=2080 ui#744: "explore-18 (EX-16, EX-4): The legacy rewrite runs once with replace and keeps …"
explore-19 Superseded: Context chips are menus #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 superseded: explore-31
explore-20 Horizon player marks what is computed #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#763: "explore-20 (EX-6, K51): the player shows the viewed cell's scenario name (the …"
explore-21 Panel: band distribution of value, per-hazard figures #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#873: "explore-21 (EX-10): the Summary tab opens on "Band distribution of exposed value" …"
explore-22 The Selection tab is back #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#756: "explore-22 (EX-10): the insight panel's tabs read "Summary", "Charts" and "Selection", and …" · deviation: EX-10 (K61, no building)
explore-23 Loss curve: dataset range and its basis line #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#762: "explore-23 (EN-7, K36): the strip's "1-in-<rp>" button opens a menu and the …"
explore-24 Compare runs a missing side in place #explore.compare ui#752: "explore-24 (EX-11, FT-21): a side that is not computed shows "Run A …"
explore-25 Engine compare on any cell, with a timeout state #explore.compare ui#837: "explore-25 (EN-4): an engine row that reads "pending" shows its queue position …" · ui#752: "explore-25 (EX-11, EN-5): compare_engines takes the run's arguments (the address's exposure, clip …"
explore-26 Phones: the dock becomes a sheet under the map #explore ui#745: "explore-26 (D12, K36): at 390×844 the dock is a bottom sheet under …"
explore-27 Layout variants B and C retired #explore prototype-only (record § 4, the line of guardrail 10)
explore-28 The dock is two steps, and Analysis is now Run #explore ui#753: "explore-28 (EX-16, K36): with Run in front and river flood chosen, the …" · ui#745: "explore-28 (EX-16, EX-12, K36, K48): the dock reads two numbered steps, "1 …"
explore-29 Scope asks one question: what do you want to assess? #explore ui#746: "explore-29 (EX-18, K38): a fresh /explore opens Scope on "What do you …"
explore-30 With Scope open the map shows exposure only #explore ui#754: "explore-30 (EX-14, FT-3, K36): with Explore in Analyse mode, the dock open …"
explore-31 One caption over the map instead of four chips #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#764: "explore-31 (EX-9, K37): in Analyse mode with Run open the caption reads …"
explore-32 In the matrix the tick selects and the body shows #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#748: "explore-5, explore-32 (EX-3, K51): the matrix shows a "Today" row and one …"
explore-33 The hazard picker is one row #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#747: "explore-33 (EX-16, K39): the hazard step is one row with the hazard's …"
explore-34 Measures as chips with a picker, or a shortlist #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050&measures=raise,levee ui#875: "explore-34 (AD-8, K40): in Explore's Run step, the menu of "Use a …" · ui#751: "explore-34 (EX-16, AD-1, K40): step 5 is headed "Adaptation measures" and shows …"
explore-35 The damage curve is a select with a preview #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050&impf=jrc-com ui#749: "explore-35 (EX-16, K47): with an EUR buildings exposure and river flood, step …"
explore-36 Every strip figure says how it is made #explore.analyse?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#755: "explore-36 (EX-10, K52): each of the five labels ends in an info …"
explore-37 Several countries: what each hazard can do, and two ways to run #explore.analyse?exposure=datasets:litpop-grc,litpop-cyp-h5&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 ui#865: "explore-37 (EX-19, K41): in "A place" with two or more countries on …"
explore-38 A run in flight keeps going and comes back #explore.analyse?exposure=datasets:litpop-grc&clip=admin:GRC.3.1_1&hazard=river_flood&cells=baseline@today,ssp2-4.5@2030,ssp2-4.5@2050,ssp5-8.5@2050 ui#844: "explore-38 (EX-20, K54): on a running batch of four cells (one completed …" · ui#748: "explore-38 (EX-20, K42): after "Run 4 cells" the address carries batch=<id>. While …"
explore-39 Save keeps the completed cells of a run #explore.analyse?exposure=portfolio:cyprus&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050,ssp5-8.5@2030,ssp5-8.5@2050 ui#871: "explore-39 (EX-22, BC-5): "Save analysis" on a run of four cells of …"
explore-40 Compare: a saved comparison, a link with both sides, one dock card #explore.compare?exposure=portfolio:hpb&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050&a=baseline@today&b=ssp5-8.5@2030 ui#872: "explore-40 (EX-11, FT-21): Compare writes its sides to the address as a …"
explore-41 A drawn area goes away with its clip #explore.analyse?exposure=datasets:litpop-grc&clip=bbox:21.600,38.900,23.200,39.900&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 be#1661: "EX-18, EX-23 (the count in ui#746's resolved line, for a place narrowed …" · ui#870: "explore-41 (EX-23, K50): with exactly one country on, "Narrow it (optional)" offers …"
explore-42 Several regions or municipalities, each with a remove button #explore.analyse?exposure=datasets:litpop-grc&clip=admin:GRC.3.1_1,GRC.8.2_1&hazard=river_flood&cells=baseline@today,ssp2-4.5@2050 be#1661: "EX-18, EX-23 (the count in ui#746's resolved line, for a place narrowed …" · ui#870: "explore-42 (EX-23, K50, BC-1): a chosen region or municipality shows as a …"
explore-43 The exposure layer changes in place #explore.analyse?exposure=datasets:litpop-grc,litpop-cyp-h5&hazard=earthquake&cells=baseline@today ui#746: "explore-43 (EX-18): "Change" on a card opens that country's layers inside the …"
explore-44 Where, then what: the group in use stands out #explore prototype-only (record § 4, the line of guardrail 10)

explore: elements no registry entry names

Element v2 source Covered by
Layers popover contents: hazard surface, return period select, surface opacity, On the map toggles (results, the scope's assets, historical event footprints), Add a layer from Data js/views/explore.js:856 EX-16 (Layers is map display only, K36), EN-7 for the return period select
Scale test: "Draw 1,000,000 points (GPU)" in the Layers popover js/views/explore.js:867 prototype-only (record § 4, the scale test)
Charts tab: expected annual impact over time, Today and two SSPs js/views/explore.js:1182 EX-10
Table drawer linked to the map (areas or assets in view, click a row to zoom) js/views/explore.js:1216 SH-16 (parity item, guardrail 1)
Compare view switch Swipe or Side by side, A and B cell menus, Swap sides (the compare entries name only part of it) js/views/explore.js:1324 EX-11
Score-only refusal in the strip and the panel for an m3 or persons exposure, no Run (not in mapping.md) js/views/explore.js:1113 PF-4 (K19)
Empty states with nothing chosen: strip framed on covered countries, Run tab "Start with what you want to assess", panel "Nothing chosen yet" (not in mapping.md) js/views/explore.js:948 EX-5, EX-18
Map popup extras: Property page and Add to report on unit and asset cards, Event impact and Post-event report on a historical footprint (not in mapping.md) js/mapkit.js:690 EX-14 (popup cards)
Selection tab building profile and the Larissa 3D building twins js/views/explore.js:1200 out-of-scope: 3D buildings are a Phase 18 preview (LK-12, D18)

The map control group (zoom, 3D view, globe, north) is shared by every map and has its row under shell.

First-draft rows a registry entry names: the header mode bar with Save, Add to report and Copy link (explore-17), the key-figure strip (explore-11, explore-36), context chip menus (explore-31, the caption that replaces them, chips are its other option), the level switch and legend (explore-16), the horizon timeline and play (explore-20), the left dock Scope tab (explore-29, explore-41, explore-42, explore-43), the Layers tab, now a map button (explore-28), the Analysis tab, now the Run tab (explore-4, explore-5, explore-28), the not-computed state (explore-11, explore-12), the right panel Summary tab with donut, by-hazard bars and top areas (explore-21), the Charts tab loss by return period (explore-23), the Selection tab (explore-22), the Compare missing side and engine compare (explore-24, explore-25, explore-40), map popup cards with Analyse here, Zoom to assets, Make this the scope and Adapt (explore-15).

First-draft rows v2 no longer draws: layout variants B and C and the Spectra panel (explore-27 retires them), the Charts tab cumulative chance chart (the v2 Charts tab draws impact over time and loss by return period only).

events

17 registry entries.

Id Title Hash (go) Owner
events-1 Events is a mode, not a dock tab #explore.events ui#788: "events-1 (EV-6, K36): Events from the mode bar: clicking Events in the …"
events-2 Watch list grouped Live, Replays, Closed #explore.events ui#778: "events-2 (EV-7): groups over prod-shaped watches. An open near-real-time FIRMS watch observed …"
events-3 Waiting state for a watch with no observation #explore.events?event=w-aegean ui#771: "events-3 (EV-1): the waiting state's row "In the window" renders last_poll_summary: a …" · ui#716: "events-3 (EV-1): a watch with no snapshot shows the waiting state, no …"
events-4 Smooth replay: a raster stack cross-faded #explore.events?event=w-evia ui#774: "events-4 (EV-2): play waits for the frame: with frame 2 not yet …" · ui#773: "events-4 (EV-2): stepping frames 0 to 5 of a six-snapshot event on …"
events-5 Assets coloured by event loss #explore.events?event=w-evia ui#776: "events-5 (EV-3): the layer draws one circle per asset with circle-color the …"
events-6 Selecting a watch fits the map, animated #explore.events?event=w-samos ui#787: "events-6 (EV-4): MapKit with fitDurationMs={800} calls fitBounds with { animate: true, duration …"
events-7 A richer player #explore.events?event=w-evia ui#775: "events-7 (EV-5): ticks in proportion to time: frames at 00:00, 01:00 and …" · ui#774: "events-7 (EV-2): speeds. The player holds a select labelled "Speed" whose options …"
events-8 Four tiles and the most exposed municipalities #explore.events?event=w-evia ui#786: "events-8 (EV-8): the tiles read "Assets in footprint", "Value exposed", "Event loss …" · deviation: EV-8 (K63)
events-9 Cumulative FIRMS footprint: the headline never falls #explore.events?event=w-evia ui#779: "events-9 (EV-10): with three frames and three cumulative results (losses 10, 40 …"
events-10 Events and revisions inside one watch #explore.events?event=w-samos ui#777: "events-10 (EV-11): LiveEvent in src/types/index.ts gains events: {event_key, first_valid_at, last_valid_at, snapshot_count}[] (served …"
events-11 Insured beside ground-up, with units and a basis #explore.events?event=w-evia ui#785: "events-11, home-6 (EV-16): WatchCard and LiveNowCard format latest_event_loss through formatAmount with latest_event_loss_unit …" · ui#784: "events-11, home-6 (EV-14): The run model § 11 line renders verbatim whenever …"
events-12 The watch’s own selector, and the 409 #explore.events?event=w-evia ui#781: "events-12 (EV-12): the event panel ends on two lines, as the snapshot's …" · deviation: EV-12 (K62)
events-13 Create a watch: curve gate, terms, no thresholds #explore.events ui#783: "events-13 (EV-14): Create a watch shows "Deductible (optional)" and "Cover (optional)" with …" · ui#782: "events-13 (EV-13): Heatwave on a buildings dataset is tagged "exposure count only …"
events-14 Closing a watch offers the post-event report #explore.events?event=w-arakapas ui#780: "events-14 (EV-17): "Close watch" sits in the event panel's row of actions …"
events-15 Assets (N) is the result’s total; Compute hides #explore.events?event=w-parnitha ui#835: "events-15 (SH-12): The assets list renders inside the shared Sheet host at …" · ui#772: "events-15 (EV-18): the drawer counts the result. A result with total_assets 250 …"
events-16 Avoided loss for this event, no BCR #explore.events?event=w-daniel ui#836: "events-16 (AD-9): The event panel's actions hold "Avoided loss for this event" …"
events-17 Events: Save replay and Add to report #explore.events?event=w-daniel ui#868: "events-17 (EV-19): with a watch open the Events header reads "Save replay" …"

events: elements no registry entry names

Element v2 source Covered by
Event panel life-safety line js/views/explore.js:1511 EV-8
Watch list feeds note: each scored observation adds one Watch update to the bell, nothing by e-mail (not in mapping.md) js/views/explore.js:1404 SH-11, EV-7

First-draft rows a registry entry names: the Events tab list, filters and Create a watch (events-1, events-2, events-13), the event panel's four tiles and municipalities chart (events-8, events-11), the footprint replay (events-4, events-9), the event player (events-7), the post-event report on close (events-14).

First-draft rows v2 no longer draws: Events as a left dock tab (events-1 moves it to the Events mode).

adapt

20 registry entries.

Id Title Hash (go) Owner
adapt-1 Adapt is Explore’s fourth mode on a scope #adapt ui#791: "adapt-1 (AD-1): With exposure, hazard and a future cell in the address …" · ui#790: "adapt-1 (AD-1, EX-12): /adapt renders the Explore workspace with the mode bar's …"
adapt-2 Run settings in a compact head #adapt ui#800: "adapt-2 (AD-6): With no cells in the address, Adapt picks the first …" · ui#794: "adapt-2 (AD-3, K20): after #790's chips the head shows the pills "Base …" · ui#790: "adapt-2 (AD-1): with an exposure chosen, the plan view's head starts with …"
adapt-3 Money in the centre, map and plan in a dock #adapt ui#796: "adapt-3 (AD-3): The card "Expected annual loss by hazard", sub line "each …" · ui#794: "adapt-3 (AD-3, SH-12): The mode renders four regions: the head (#790's chips …"
adapt-4 A plan is one combined run, in order #adapt ui#799: "adapt-4 (AD-13, K29): The money cards read the plan block (npv_benefit, npv_cost …"
adapt-5 ECA cost curve and residual risk per hazard #adapt ui#799: "adapt-5 (AD-13, AD-3): The first chart card of the centre, "Measures by …"
adapt-6 Lifetimes cap the benefit years; payback = NPV series #adapt ui#800: "adapt-6 (AD-12): Each library card shows "<basis> · <lifetime> yr" after its …"
adapt-7 Protection standards are return periods #adapt ui#797: "adapt-8, adapt-7 (AD-15, AD-2): "How it acts" (#795) gains "Raise the floor" …"
adapt-8 Raise the floor by h #adapt ui#797: "adapt-8, adapt-7 (AD-15, AD-2): "How it acts" (#795) gains "Raise the floor" …"
adapt-9 Honest effect copy and the hazard-mismatch refusal #adapt ui#797: "adapt-9 (AD-5): An intensity factor reads "Lowers the hazard by 20 % …"
adapt-10 Measure editor: two columns, basis and applies-to #adapt ui#802: "adapt-10 (AD-4): "Import" (ANALYST and above, beside "Custom measure" in the library's …" · ui#798: "adapt-10, adapt-11 (AD-11): The editor's cost row reads "Unit cost", "Unit", "Basis" …" · ui#795: "adapt-10 (AD-4): The editor, titled "Custom measure" for a new measure and …"
adapt-11 Reference measures: cost not set, copy and price #adapt ui#798: "adapt-10, adapt-11 (AD-11): The editor's cost row reads "Unit cost", "Unit", "Basis" …"
adapt-12 Indicator hazards: a band delta, never a BCR #adapt ui#801: "adapt-12 (AD-16): On an indicator hazard the six money cards give way …"
adapt-13 Unadapted, adapted and avoided-loss maps #adapt ui#803: "adapt-13 (AD-7, AD-1): The switch in the head of the card "Location" …"
adapt-14 Superseded: Save plan and Add to report #adapt superseded: adapt-18
adapt-15 Entry points carry their scope #portfolios ui#821: "adapt-15 (AD-1, AD-9): each row of the Adaptation measures tab carries the …" · ui#792: "adapt-15 (AD-1): Adapt on a portfolio card, the portfolio detail header and …"
adapt-16 A landing page when nothing is chosen #adapt.start ui#874: "adapt-16 (AD-17, AD-1, K38): an address with no exposure, a bare /adapt …"
adapt-17 Saved plans, listed and reopened #adapt.start ui#834: "adapt-17 (AD-17, AD-8): the landing page's card "Saved plans" reads "<n> plans …"
adapt-18 Save plan names the plan and keeps one hazard #adapt.plan?exposure=portfolio:hpb&hazard=river_flood ui#834: "adapt-18 (AD-8): "Save plan" opens the dialog "Save plan" with the field …"
adapt-19 Pin measures for the run form #adapt.plan?exposure=portfolio:hpb&hazard=river_flood prototype-only (record § 4, the line of guardrail 10)
adapt-20 The plan head holds together at 1366 px #adapt.plan?exposure=portfolio:hpb&hazard=river_flood ui#834: "adapt-17, adapt-20 (AD-8, AD-17): Stack: save a plan on the seeded EUR …" · ui#794: "adapt-3, adapt-20 (AD-3, AD-17): Stack layout, measured on the view root inside …"

adapt: elements no registry entry names

Element v2 source Covered by
Measure library: collapse, search, hazard filter chips, Building and Regional groups js/views/adapt.js:485 SH-12
Custom measure and Import menu with the measure template js/views/adapt.js:492 AD-4
Method modal "How these figures are worked out" (its button at js/views/adapt.js:815) js/views/adapt.js:750 AD-3

First-draft rows a registry entry names: head scope, scenario and horizon chips (adapt-2), the Unadapted and Adapted map switch (adapt-13), Save plan (adapt-18), the measure card's effect copy (adapt-7, adapt-8, adapt-9), the measure editor (adapt-10), six money cards with BCR and payback (adapt-3, adapt-6), the evolution chart (adapt-3), expected annual loss by hazard and the score-only list (adapt-3, adapt-5), the location map with legend and popups (adapt-3, adapt-13), selected measures in the plan (adapt-4), the scope-based adapted plan (adapt-1, adapt-4). Named elements that mapping.md lacks: the landing page (adapt-16), saved plans (adapt-17), the cost curve (adapt-5), the pin control (adapt-19, prototype only).

First-draft rows v2 no longer draws: Add to report in the Adapt head (adapt-18 replaced adapt-14 and keeps only Save plan, and js/views/adapt.js holds no "Add to report"), the illustrative-figures note (v2 draws none, only the file header at js/views/adapt.js:6 calls every figure illustrative).

assistant

6 registry entries.

Id Title Hash (go) Owner
assistant-1 Runs a scenario in eight visible steps #home ui#852: "assistant-1 (AS-2, AS-4): with an Explore result in the address, "what is …" · ui#770: "assistant-1 (AS-2): tests/e2e/smoke/assistant-run.spec.ts intercepts only POST /v1/assistant/messages, through one helper scriptAssistant(page, turns) …"
assistant-2 compute_cell asks Run or Skip and waits #home ui#769: "assistant-2 (AS-2): a proposed compute_cell stops the trace with "Starts a compute …"
assistant-3 Query steps drawn in the trace #home ui#852: "assistant-3 (SH-5): every assistant entry in append whose call is answered by …"
assistant-4 View context sent on every turn #home ui#769: "assistant-4 (AS-2, SH-5): every request posts context as {view, exposure, clip, hazard …"
assistant-5 Score-only books refused with the reason #home ui#770: "assistant-5 (AS-2, K19): in the same spec, "Run river flood today for …" · ui#769: "assistant-5 (AS-2, K19): when the compute that compute_cell posts is refused (a …"
assistant-6 The assistant runs a place #home ui#770: "assistant-6 (AS-4, BC-4): in the same spec, "Run river flood today for …" · ui#769: "assistant-6 (AS-4): an empty conversation offers the suggestion chips "Run river flood …"

assistant: elements no registry entry names

Element v2 source Covered by
Ask panel: header, message list, composer with Send and Stop js/assistant.js:33 SH-5
Mode pill and note: live through the artifact's sample capability, else a scripted demonstration js/assistant.js:66 out-of-scope: a prototype device, the product calls the organisation's configured model (AS-1) and plays no scripted replies
Scripted suggestions for top areas, Storm Daniel and today against 2080 (not in mapping.md) js/assistant.js:48 out-of-scope: scripted demonstrations, the product's suggestions are the scenario and place runs of AS-2 and AS-4

First-draft rows a registry entry names: the visible trace with query steps (assistant-3), view context sent on every turn (assistant-4), Run or Skip on compute_cell (assistant-2), scenario and place suggestions (assistant-1, assistant-6), the score-only refusal (assistant-5).

First-draft rows v2 no longer draws: none.