reclaim/RUN.md
flemming-it e08cedcd3f feat(brand): rename product to Recl∆Im (Reclaim) across app, bundle, docs
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>
2026-06-18 13:42:55 +02:00

3.9 KiB
Raw Blame History

Recl∆Im (F∆I) — Run-Guide (Phase 0)

Stand v0.1.0 — Demo-Modus, ohne externe Daten, ohne Hub-Verbindung.

Layout

fai_lawheatmap/
├── MACHBARKEITSSTUDIE.md     # die Studie (v0.3, AG-intern)
├── RUN.md                    # diese Datei
├── app/                      # Flutter-Client, Brand-Skin fai_web
│   ├── lib/                  # Dart-Code (Pages, Widgets, Data, Theme)
│   ├── assets/
│   │   ├── fonts/            # SIL-OFL TTFs (setup.sh holt sie)
│   │   └── fixtures/         # Phase-0 Demo-Daten
│   ├── macos/                # Plattform-Scaffolds (auto-generiert)
│   ├── setup.sh              # Fonts + Pakete
│   └── pubspec.yaml
└── flows/
    └── durchstich-gewo-14.yaml   # vertikaler Phase-0-Flow

Die acht zugehörigen Module liegen unter fai_chain_modules/ als eigene Crate-Verzeichnisse, ABI chain:platform, alle Apache 2.0:

  • text-akoma-normalize/ (Pflicht-Eingang, gesetze-im-internet-XML-Adapter)
  • text-deontic-extract/ (Pflicht-Tupel via Regex + LLM-Vorschlag im Flow)
  • graph-citation-extract/ (cites, verweist_iVm)
  • text-readability-score/ (Flesch-DE + Verweistiefe)
  • stats-cohort-size/ (DESTATIS-/IHK-Kohorten, Phase 0 mit Stub-Tabelle)
  • graph-shapley-attribution/ (Pfad-anteilige Splittung)
  • econ-skm-score/ (Standardkostenmodell P×F×T×h)
  • law-benefit-score/ (7-dim. Nutzen-Aggregation — das einzige genuin domänen-spezifische Modul, gehört in chain-modules-law/)

Sofort starten (Demo-UI, kein Hub nötig)

cd app
./setup.sh                # Fonts + flutter pub get
./build-macos.sh          # Robust-Build (strippt macOS-xattrs vor CodeSign)
open build/macos/Build/Products/Debug/reclaim_app.app

Direkter flutter run -d macos funktioniert auch, kann aber bei einem frischen Checkout an com.apple.provenance-xattrs scheitern (macOS-Eigenheit bei via curl/iCloud erstellten Dateien) — dann einmal ./build-macos.sh und danach flutter run -d macos.

Erwartet: Brand-Landing → Klick auf „App öffnen (Demo-Modus)" → NavigationRail (Heatmap / Normen / Hub / Methodik) mit fünf Pilot-Norm-Punkten und einem permanenten T4-Demo-Banner.

Test-Suite (smoke):

flutter test

Modul-Tests (lokal grün ohne Hub)

for m in text-akoma-normalize text-deontic-extract \
         graph-citation-extract text-readability-score \
         stats-cohort-size graph-shapley-attribution \
         econ-skm-score law-benefit-score; do
  (cd ../fai_chain_modules/$m && cargo test) || break
done

WASM-Build (für chain install)

cd ../fai_chain_modules/text-akoma-normalize
cargo build --release --target wasm32-wasip2
# Artefakt: target/wasm32-wasip2/release/text_akoma_normalize.wasm

Selber Aufruf für die anderen sieben Verzeichnisse.

Live-Flow (sobald chain serve läuft — Phase 0 Woche 1)

chain serve &
chain install text.akoma_normalize text.deontic_extract \
              graph.citation_extract text.readability_score \
              stats.cohort_size graph.shapley_attribution \
              econ.skm_score law.benefit_score \
              http.request system.approval
chain run flows/durchstich-gewo-14.yaml \
  --input norm_url=https://www.gesetze-im-internet.de/gewo/__14.xml \
  --input cohort_id=berlin-kmu
chain admin events --limit 10
chain admin approvals list   # Juristen-Gate

Im Flutter-Client den MockRepository durch eine HubRepository (gRPC gegen localhost:50051) ersetzen — Interface bleibt gleich, keine UI-Änderung nötig.

Was Phase 0 NICHT enthält (bewusst)

  • gRPC-Anbindung Flutter ↔ Hub (Woche 1)
  • Echte NKR-Datenbank-Anbindung (Woche 2-3)
  • DESTATIS GENESIS-API-Adapter (Woche 4)
  • Juristen-Approval-Backend-Anbindung (Woche 5)
  • Volle Akoma-Ntoso-Konvertierung (v0.2)
  • HTML- und FORMEX-Adapter für text.akoma_normalize (v0.2/0.3)