__MK__tabaqat · StrataFinancial Services
The Unsupported Count — Resilience Disclosure Pack

Which sentence in the board pack
has no figure behind it?

A tray that accumulates figure descriptors, never pictures, a claim written by hand against each one, and a count that falls out of the data model — computed while the claim is being written, not after the document is published.

California reference implementation · 5 evidence lanes · 551 assertions green On-prem · no keyed provider · no CDN · read-only
© 2026 Tabaqat · Built on Strata — sovereign geospatial applications. Every figure is a real published output; only the claim text is generated sample content (seed 20260818), labelled as such on screen and in every export.
The decision this drives

What goes into the pack, in what order — and does the argument still stand once it is composed?

That is a composition decision: taken by one person, against a meeting date, on a document already being drafted. It is why the whole navigation of this app exists to fill a container that stays on screen the entire time and counts itself.

The unsupported count is the gate on that decision, not the decision itself. It names the sentence that cannot survive the ordering while the cheap moves are still available — cut it, soften it, or go and get the figure. Asked four weeks later at review, the only moves left are to publish the sentence anyway or to slip the meeting.

Buyer: chief risk officer, listed company Reads over the shoulder: the pack owner · internal audit · the assurance practitioner
94per cent of investors believe corporate sustainability reporting contains unsupported claims — PwC Global Investor Survey, 345 investors and analysts, 2023, up from 87 % the year before

The FRC read twenty companies' climate disclosures in January 2025 and found that several provided no scenario analysis at all — and that where narrative existed it was generic and not company specific.

A documented, dated, sized measurement of exactly the defect this app counts.

The finding that shaped the app

The bond between a claim and its figure, checked while the claim is being written, is nobody's product.

Hazard & risk-data vendors

Climate X, XDI, Jupiter, Moody's/RMS, Esri and partners. They produce the figure and hand it over — an API, a CSV, a slide, a dashboard. They never tell you which of your sentences lacks one.

Disclosure-management platforms

Workiva and the wider category govern the document: version control, approvals, audit trail, tagging, and the linking of numbers that already exist.

Board-writing tools

Lucia, Diligent's AI layer. They critique the prose — clarity, insight density, structure, tone. They never look at whether a number is there at all.

Greenwashing detection

Reads the finished text and scores its language for deception, with no ground truth and no access to the underlying figure. It arrives after the document is published.

A figure crosses from camp 1 into camp 2 as a picture, severed from the query, scenario, extent and vintage that produced it. Camp 2 can prove where a number came from — but only once the number is in the document. A claim with no figure generates no link, no tag and no reconciliation break, so a linking engine cannot surface it at all.

The number that is new

A count that never reads the wording.

A claim record either holds a reference to a figure descriptor, or it does not. That is the whole computation — no language model, no classifier, no ground-truth corpus, precisely what the greenwashing-detection literature reports the field lacks.

  • It counts in the direction nobody counts. Linking platforms count numbers that have a source. This counts sentences that have none.
  • It counts structurally, not textually. It cannot be wrong about the wording, because it never reads the wording.
  • It counts live figures, not pictures. Every tray item is a descriptor — layer, release, filter, scenario, extent — re-run against the service on open, on reload and on compose.
  • It is timed to the moment the decision is still cheap.

What it is not: not a compliance score, not an assurance opinion, not a greenwashing score, not a grade. Two unsupported claims may be entirely correct editorial choices. The app makes the gap visible; the judgement stays with the author.

The shipped template, first paint
5 figures · 3 claims · 2 unsupported
1 figure whose source carries no retrievable vintage
And it is not staged. It falls out of two real properties of two real services: the California Geological Survey publishes a perfectly queryable figure with no retrievable vintage of any kind, and the NGFS scenario lane has no obtainable source at all. Both states are produced by published services on the first build.
SUPPORTEDthe claim holds a figure descriptor
⚠ UNSUPPORTEDa figure with no claim, or a claim with no figure
⊘ NO RETRIEVABLE VINTAGEa property of the item, never a checklist row
▢ EMPTY LANEcited, not drawn — nothing synthesized to fill it

Colour never carries a state alone. Each one also carries a glyph and a word, so the reading survives a photocopy of the pack.

The application, first paint

Work a surface → add the figure → write the claim → reorder → compose.

The Resilience Disclosure Pack at first paint: four evidence surfaces as tabs, the California expected-annual-loss choropleth as hero, the legend filtering by class, the provenance strip beneath it, and the accumulating pack tray docked right with its derived counters.
Shipped build, 2026-08-30 — a browser screenshot taken by the automated driver, not a mock-up.
  • The tray lives outside the views node. Switching evidence surface swaps only the hero and never unmounts the tray. A tray that empties on view change is not a tray.
  • A provenance strip under every figure — source · release · vintage · scenario · method · extent · register, printed in full and carried into the export.
  • Four counters derived from tray state, recomputed on every change and asserted nowhere.
  • The legend filters, and keeps its denominator. Click hides a class, shift-click isolates, Esc unwinds one thing at a time. Counts read 1,822 of 9,106.
  • A persistent draft notice in the footerassembled draft, not reviewed, not approved, not filed — never in the status line, which is transient.
53 behaviours specified and tested
Why a descriptor must pin the release

One federal index. Four live releases. 4.34× apart.

The Ledger surface: three headline totals, each with the authority and release that produced it, then two callouts — two published authorities 54.5 per cent apart, and the same authority disagreeing with its own back catalogue by a factor of 4.34.
The Ledger surface — every total the pack can quote, with the authority and the release that produced it.
NRI releaseCA tractsSUM(EAL_VALT)
current — title carries no date9,106$30.45 bn
March 20239,106$16.34 bn
November 20218,036$7.02 bn
October 20208,036query fails — the OID is FID

Same publisher, same account, same field name, same state, all four answering today. Nothing in any of the four services says which release you are readingcopyrightText is empty on all four, description is empty on all four, and only the item title carries the release, on three of them.

A sentence of the form "our California expected annual loss is $30.4 bn" is arithmetically true against the default binding, and arithmetically true at $7.0 bn against a release the same publisher serves from the same account today.

And two authorities, one peril, one state: FEMA reports $14.85 bn/yr of California earthquake loss; the California Geological Survey reports $9.61 bn/yr54.5 % apart. Both published, both current, neither wrong, and nothing in either service says the other exists. They are never summed, never averaged and never corrected against each other.
Public data is never synthesized

The scenario source every brief names ships as an empty lane.

The Scenario surface: a callout stating the NGFS lane is empty with the retraction quoted verbatim, a hatched placeholder reading 'cited, not drawn', and below it the Cal-Adapt LOCA histogram over 10,881 California cells.
Cited, not drawn — and beneath it the scenario figure that is obtainable, clipped to the subject.

Disqualified twice over, and both were measured.

  • It cannot be obtained. The IIASA explorer returns the same 1,847-byte JavaScript shell on every route; api/, api/applications and api/runs/ each return 404. No anonymous machine route means no call from inside a bank's network.
  • Its basis was retracted. The publisher's own page states that Kotz et al. (2024), underpinning the Phase V physical-risk estimates, "has now been retracted from the journal" by Nature.
  • And the notice hides behind a redirect. Unfollowed, the portal URL is HTTP 301, 266 bytes. Followed, it is HTTP 200, 91,885 bytes carrying the retraction. A health check that asks only "did I get a 2xx/3xx and some bytes?" files this source as healthy and never sees it.
The figure that replaced it is clipped to its subject. The Cal-Adapt LOCA grid is CA+NV — the filename says so and nothing else does. Only 10,881 of 26,518 valid cells fall inside California, so 59 % of the published grid is not the subject. A figure captioned "California" taken from the raw raster carries Nevada.

A claim written against the empty lane is counted unsupported, permanently, and the strip says why. That is the design working, not a gap.

The output document is the product

Composed by the same composer the PDF uses.

The pack preview modal: the assembled-draft notice, the pack title and reporting period, the derived count printed on the document itself, then figure 1 of 6 with its claim above it and the map rendered at compose time below.
The count is printed on the assembled draft itself — the reader of the pack sees what the author saw.

The map figure is rendered at compose time from the descriptor's own layers and extent — not captured from whatever the map happened to be looking at.

That defect reached the product twice during the build: first a Long Beach extent under a statewide caption, then one surface's violet layer under another surface's caption. Both are the exact failure this product exists to catch — a figure severed from the query that produced it — arriving in the product itself. Neither would have failed any assertion that existed at the time; both were found by looking at the screenshot.

  • The pack is a link. It carries pack, view, county, threshold, peril and the exact where.
  • Reloading re-renders. Nothing is restored from a cache — the reviewer's question "where did this number come from" is answered by a URL that re-runs the query.
  • A sourceless snapshot is refused entry at the door, and so is an NRI descriptor that does not pin its release — and it is told which of the four releases it failed to name.
  • Hand order only. Drag the handle or arrow-key it. Nothing auto-sorts, nothing is scored.
Proof, not promises

Built, driven and measured — 2026-08-30.

551assertions green — 238 live against eight publishers · 188 offline · 125 in real headless Chrome
53behaviours specified, each mapped to the suite that exercises it
6.20worst informational contrast ratio, in both modes on both surfaces — the floor is 4.5
9,106census tracts drawn of 9,106 — no cap, no top-N, and the status line says so

Every figure re-probed from scratch

Twelve days after the first pass, every source was re-run before a line of app code was written — and every figure reproduced to the cent: $30,446,966,827.95 of expected annual loss over 9,106 tracts, $9,614,543,798 of annualized earthquake loss over 58 counties.

The on-prem boundary is asserted, not claimed

MapLibre was loading from a CDN <script> tag — a boundary violation that survived every source-level check because it lives in markup, not in code. Vendored, and the browser suite now asserts the complete set of outbound hosts against an allowlist that excludes every CDN.

"Keyless" basemaps were not keyless

Every non-visual assertion was green while every tile carried "API KEY REQUIRED" composited across real map data — HTTP 200, correct MIME, no key in the URL. Light and dark are now the same keyless tiles under different raster paint: one dependency, and no provider can revoke the palette.

Reading the figures: every figure in the pack is a real published output — FEMA, CAL FIRE, the California Geological Survey, the Census and the California Energy Commission. Only the claim text is generated sample content (seed 20260818), named in a persistent on-screen notice and on every page of the PDF — and no seeded claim contains a digit, asserted, so a synthetic number can never be mixed into a measured one.

Stated as boundaries, not caveats

What this application will not do.

  • It judges nothing about language. No prose critic, no language score, no tone check, no inferred judgement about a claim's honesty. One structural fact: this claim has a figure bound to it, or it has none.
  • It assembles a draft, and never styles it as reviewed. It does not review, approve, sign or file anything. A board pack is internal; a regulatory filing is public. The app never blurs the two.
  • An analytics layer, never a system of record. It coexists with whatever the customer already runs.
  • On-prem, behind the perimeter. No keyed provider, no CDN, and no external call it cannot make from inside a corporate network — asserted from the browser's own host log.
  • Read-only, end to end. No write path, no applyEdits, no POST — even where a public read endpoint advertises editing capabilities, and one does.
  • Refresh, not streaming. Sources are re-read on compose and on cold start — the honest freshness model for a document composed over days.
  • English only. One language, no RTL surface. The basemap is a text surface too, which is why a mirror rendering German exonyms is offered but never defaulted.
  • California is the demonstration substrate, not the value proposition. It is where the data is public and checkable. It is not where the buyer is, and nothing here is evidence about GCC data availability.

Every one of these is written into the delivered application's own README. A tool that hides its edges costs you the project it cannot finish.

Point it at your pack

One asset register.
One reporting period.

Your corporate asset register at the grain you disclose it, the hazard and scenario feeds you already licence, and the narrative you are already drafting. Two weeks, and the tray counts your pack instead of a demonstration one.

Jurisdiction-agnostic by design: the pack binds claims to figures, whichever regulator's frame those figures were built for. IFRS S2 has been effective since 1 January 2024; CARB named TCFD and IFRS S2 in adopted regulation on 26 February 2026; and from 15 December 2026 ISSA 5000 turns "which claim has no figure" from good drafting practice into a question an outsider asks.

tabaqat.net → Solutions → Financial Services info@tabaqat.net
© 2026 Tabaqat · Built on Strata. Reference implementation over California; every figure a real published output, claim text generated (seed 20260818). Assembles a draft — not reviewed, not approved, not filed, and not a compliance assessment.
1 / 11