The compact chips under the heatmap showed only [Tier-Badge]
jurabk paragraph (e.g. 'T4 GewO § 14'), which was enough for a
methodologically oriented reader but not for someone scanning
'what was that pilot norm about?'. Adds a muted mid-dot + the
norm.title after the paragraph, so each chip now reads:
T4 · amtlich GewO § 14 · Anzeigepflicht
The chips stay clickable, navigation behaviour unchanged.
Signed-off-by: flemming-it <sf@flemming.it>
The legend below the heatmap used four full prose paragraphs at
all times — visually it claimed about a quarter of the heatmap
page's height while the plot itself was the actual artefact.
Now the legend defaults to a single-line header strip:
Legende ↔ Schaden ↕ Nutzen ● Betroffenheit
◐ Evidenz-Stufe ⌄
Tap anywhere on the strip and an AnimatedSize transition opens
the full _LegendRow descriptions (180 ms). Same content, hidden
until asked for. The Expanded(heatmap) above reclaims the
height — concretely on a 900 px window the plot grows from
~420 px to ~600 px tall, which is what makes hover-targeting
the smaller points actually comfortable.
Signed-off-by: flemming-it <sf@flemming.it>
Three small frictions a first-time reader hit at the same time,
fixed in one pass:
1. The TierBadge said 'T1' without context. Default form is
now 'T1 · amtlich' / 'T2 · Verband' / 'T3 · Erhebung' /
'T4 · Signal'. Compact form (heatmap chip wrap) keeps the
bare code. Tooltip spells out the long form + cites the
Regel der niedrigsten Stufe (Studie §6.7) so the meaning
of the cap is at hand on hover.
2. The Legende's tier row was the abstract one of the four —
it now inlines all four stage names (amtlich / Verband /
Erhebung / Signal) and explains why a single T4 component
drags a whole figure to T4. No more 'what is Tier?' on
screen.
3. The DemoBanner repeated 'Tier T4' without explaining what
T4 is. Now: 'qualitatives Signal — bis NKR/Verbands-
Pipeline + Juristen-Approval laufen'. The cause-and-cure
is visible at a glance.
4. The NavigationRail leading column showed only 'F∆I' as
brand mark. Now shows 'Recl∆Im' prominently (petrol-signal,
bold) with 'F∆I' as a small muted vendor tag below.
Product first, vendor second.
EvidenceTierLabel extension grows a new 'headline' getter for
the one-word default ('amtlich'/'Verband'/…), and 'description'
gets longer, source-naming text (NKR / DESTATIS / DIHK / IHK /
ZDH / BDI). Code paths that used the old short-only badge keep
working because 'short' still returns 'T1'.
flutter pub get refreshed against chain_client_sdk 0.18, which
the fai_chain agent confirmed already carries the gRPC-Web
channel — no SDK bump needed for the web-hub-mode wire.
Signed-off-by: flemming-it <sf@flemming.it>
The four-line description above the heatmap was concise but
opaque: 'X: log10 €/year. Y: 0–5. Punktgröße.' said the right
words, but a reviewer who isn't already methodologically
oriented can't tell what they're looking at.
Adds a dedicated Legende-Karte directly under the heatmap.
Four rows, each: leading symbol (↔ ↕ ● ◐), axis-or-quantity
label, prominent name (Schaden / Nutzen / Betroffenheit /
Evidenz-Stufe), and a short prose explanation tying the visual
back to the Studie:
↔ Abszisse (X) Schaden — log10 €/Jahr, SKM §3.1
↕ Ordinate (Y) Nutzen — 7-dim. Komposit §3.2
● Punktgröße Betroffenheit — sqrt scale, DESTATIS-/IHK
◐ Tier-Farbe Evidenz-Stufe — Regel der niedrigsten §6.7
Top description tightened to one line of context only:
'Schaden × Nutzen × Betroffenheit pro Norm. Klick auf einen
Punkt öffnet das Detail …'. No redundancy with the legend,
no jargon up top.
Signed-off-by: flemming-it <sf@flemming.it>
Recl∆Im — the F∆I product line for Pflicht-basierte
Wirkungsanalyse und Reform-Vorschlags-Pipelines. Replaces the
working title 'Law-Heatmap', which described the demo view
rather than the platform. Heatmap, Norms list, Hub view,
Methodik are now four panes of the same Recl∆Im app.
Renames in this commit:
Flutter package lawheatmap_app -> reclaim_app
macOS bundle id ai.flemming.lawheatmapApp -> ai.flemming.reclaim
macOS PRODUCT_NAME lawheatmap_app -> reclaim_app
Theme tokens LawHeatmapColors/Space/Radius/Typography/Theme
-> Reclaim*
Surface card LawHeatmapCard -> ReclaimCard
Top-level widget LawHeatmapApp -> ReclaimApp
Theme files lawheatmap_theme.dart/lawheatmap_tokens.dart
-> reclaim_theme.dart/reclaim_tokens.dart
Widget file lawheatmap_card.dart -> reclaim_card.dart
Build script build-macos.sh paths and headline string
Docs MACHBARKEITSSTUDIE.md, METHODIK.md, RUN.md,
app/README.md, flow YAML
UI strings 'F∆I Law-Heatmap' / 'Law-Heatmap'
-> 'Recl∆Im' / 'Recl∆Im (F∆I)' for vendor-
prefixed contexts
flutter analyze: clean. flutter test: 2/2 passing.
The local working directory stays fai_lawheatmap/ for now —
the dir is referenced by the .claude project metadata; renaming
it would break session continuity for no real gain. The Forgejo
repo was renamed via API in the same change-set (fai/lawheatmap
-> fai/reclaim), with the legacy slug serving a redirect
courtesy of Forgejo's built-in rename handling.
Signed-off-by: flemming-it <sf@flemming.it>
First end-to-end-buildable cut of the pflicht-/graph-basierte
Wirkungsanalyse von Rechtsnormen, running on Ch∆In. Demo runs
without external dependencies and without a hub connection so
the methodology + UI stack can be reviewed before any Verbands-
Kooperation or Beirats-Validierung kicks in.
Tree layout
MACHBARKEITSSTUDIE.md v0.3 — pflicht-basierte Methodik,
4-Tier-Evidenz, 8 law*-Module
auf Ch∆In statt der alten F∆I-
Plattform.
RUN.md one-page how-to-run.
flows/durchstich-gewo-14.yaml
vertical Phase-0 flow: pull →
normalize → duties → citations →
cohort → skm → frust → benefit →
attribution → system.approval.
app/ Flutter macOS client, design
language pulled from fai_web
(ink #08090A, paper #F4F3EF,
petrol signal #2E8F9E). Mock
repository ships five fixture
norms with real source URLs and a
permanent T4 demo-banner so no
figure can be mistaken for a
validated one.
Module repos (separate, see chain-modules*/):
text-akoma-normalize, text-deontic-extract, graph-citation-
extract, text-readability-score, stats-cohort-size, graph-
shapley-attribution, econ-skm-score, law-benefit-score.
What runs today
- flutter analyze: 0 issues
- flutter test: 2/2 (landing + nav-to-shell smoke)
- flutter build macos (via app/build-macos.sh) and ad-hoc
codesign, app launches and the Dart VM service comes up
- native cargo test green on every module
- cargo build --release --target wasm32-wasip2 produces a
130 KiB artefact for text-akoma-normalize
What is deliberately mock / stub
- gRPC wire from the client to a chain serve hub (Repository
abstraction is in place; live impl is the next step)
- NKR Bürokratiekosten-Datenbank ingestion (for the canonical
h-Werte that close out the Engpass per Studie §6.7)
- DESTATIS GENESIS-API adapter for stats.cohort_size
License: Apache-2.0. Author/contact in MACHBARKEITSSTUDIE.md.
Signed-off-by: flemming-it <sf@flemming.it>