Recl∆Im now carries the six-section legal layer that any
public-facing duty-evaluation tool needs before either the
.app or the web build can go live to an audience beyond the
working group itself.
Sections, in the order a careful reader cares about them:
1. Disclaimer — keine Rechtsberatung, RDG-konform geframed,
T1–T4 Tier-Bedeutung explizit, Demo-Daten klar abgesetzt.
2. EU AI Act Art. 50 — Transparenz-Notice, klare 'kein
Hochrisiko-KI-System nach Anhang III'-Positionierung,
Human-in-the-Loop via system.approval@^0, Modell-Digest
im Audit-Log.
3. Quellen + Urheberrecht — § 5 UrhG-Hinweis für die
dargestellten amtlichen Werke, T1- und T2-Quellen-Liste,
Apache 2.0 für eigenen Code und Methodik.
4. Datenschutz — DSGVO Art. 13-Pflichtangaben, Hosting-
Provider-Platzhalter, Server-Log-Rechtsgrundlage Art. 6
Abs. 1 lit. f, Betroffenenrechte, Berliner
Aufsichtsbehörde.
5. Impressum — § 5 TMG + § 18 Abs. 2 MStV-Pflichtangaben
als Vorlage, ODR-Plattform-Hinweis.
6. Open Source — Apache 2.0, Repo-Link, Commit-Konvention.
Jede Section markiert deployment-spezifische Werte
(Anbieter-Adresse, Hosting-Provider, AVV-Stand,
Kontakt-E-Mail) als [PLACEHOLDER] und der Schlussabsatz weist
ausdrücklich darauf hin, dass eine Volljuristen-Prüfung vor
der ersten öffentlichen Veröffentlichung pflichtig ist.
Plumbing
- ShellPage gets a fifth NavigationRail-Destination 'Recht'
mit gavel-Icon.
- LegalPage scrollt mit ReclaimCard-Sektionen und nutzt
SelectableText überall, damit Reviewer-Zitate direkt
rauskopierbar sind.
- DemoBanner erweitert um 'KEINE Rechtsberatung'-Hinweis und
verweist auf den Recht-Reiter — der politische Disclaimer-
Pfad ist damit aus jeder Datenseite einen Klick entfernt.
flutter analyze: clean. flutter test: 2/2 grün. Web- und
macOS-Build laufen, Recht-Reiter rendert auf beiden Targets
identisch.
Signed-off-by: flemming-it <sf@flemming.it>
Adds the actual paragraphs of the law right next to the
evaluation panel on the norm-detail page. A reviewer no longer
has to leave the app to confirm what a score is about; the
canonical source URL stays one click away via 'Im Browser
öffnen' (url_launcher) and one click away as a clipboard copy.
Schema
models.dart gains a NormParagraph (number + text). Norm carries
a List<NormParagraph> paragraphs, defaulted to const [] so
norms harvested by text.akoma_normalize@^0 in live mode slot
in without breaking the Mock path.
Demo data
fixtures.dart embeds the public source paragraphs verbatim
under §5 UrhG (amtliche Werke) for the five pilot norms.
Plumbing
NormTextCard (lib/widgets/norm_text_card.dart) is the renderer:
per-paragraph hanging label, selectable body text, source URL
in mono at the bottom, two action buttons. NormDetailPage
drops the card between the metric row and the duties card so
the eye lands on it during a 'why this score?' read-through.
macOS sandbox
The Release entitlement file gains
com.apple.security.network.client so url_launcher's NSWorkspace
call and the HubRepository's gRPC channel can both reach the
network. The DebugProfile already had server; client matches
the production posture.
GeneratedPluginRegistrant.swift was re-generated by
flutter pub get after url_launcher was added — no hand edits.
flutter analyze: clean. flutter test: 2/2 passing. The macOS
build via build-macos.sh launches and the new card renders the
GewO § 14, KassenSichV, DSGVO Art. 30, BauO Bln § 60 ff and
MiLoG § 17 fixtures with their actual normative text.
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>
The Ch∆In rename is months old and the AG audience never knew
the previous name. Calling out 'vormals …' in three places —
the study header, the glossary, and the About page — added
noise without informing anyone. Ch∆In stands on its own.
Signed-off-by: flemming-it <sf@flemming.it>
HubCapabilitiesCard wires HubClient.listCapabilities() into the
hub-status page below the connection form: once the app starts
in hub mode and the connection is healthy, the card shows
capability@version, the providing module, and its kind for
every entry the hub reports.
In mock mode the card prints an explanatory hint instead of
loading, so no confusing empty-state appears when the user is
just browsing the demo data.
A small refresh-icon next to the heading lets the user re-poll
without a full page reload — useful right after a chain install
in another terminal.
Signed-off-by: flemming-it <sf@flemming.it>
Adds a real Ch∆In hub backend to the Flutter client as a
sibling-path dependency on chain_client_sdk_dart, alongside the
existing MockRepository (which stays the default until the
flow.completed-to-Evaluation pipeline lands in Phase 0 week 1).
Wiring
HubSettings (lib/data/hub_endpoint.dart) — persists host /
port / secure / token / useHub flags via SharedPreferences
under the Studio-compatible hub.* keys. Distinct from the
SDK's chain.HubEndpoint, which is a transport-level value
type — HubSettings adapts in that direction.
HubRepository (lib/data/hub_repository.dart) — implements
EvaluationRepository on top of HubClient. connect() runs a
4-second healthy() probe; on failure returns a repository
with isHealthy=false rather than throwing, so the UI can
surface "hub-down" without an exception-handling round-trip.
list() / byEli() return empty data in Phase 0 because no
hub-side flow yet produces Evaluation objects in the
lawheatmap-specific shape.
main.dart — loads HubSettings on startup; if useHub=false
starts with MockRepository (fast offline default), otherwise
probes the hub and falls back to MockRepository on probe
failure. No mid-session swap to keep the Phase 0 wiring
simple; a settings save instructs the user to restart.
HubStatusPage — read-only summary card at the top, editable
endpoint form, "Verbindung testen" probe button, "Speichern"
persist button. Live-flow runbook below describes the
chain serve / install / run / approve sequence so a user
can wire the real flow themselves once Phase 1 lands.
flutter analyze: clean. flutter test: 2/2 passing.
Smoke-launch on macOS: app boots, Dart VM service comes up,
no runtime errors in mock mode.
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>