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

107 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
```bash
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):
```bash
flutter test
```
## Modul-Tests (lokal grün ohne Hub)
```bash
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`)
```bash
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)
```bash
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)