diff --git a/app/lib/pages/heatmap_page.dart b/app/lib/pages/heatmap_page.dart index 75524c7..20fad48 100644 --- a/app/lib/pages/heatmap_page.dart +++ b/app/lib/pages/heatmap_page.dart @@ -112,19 +112,6 @@ class _HeatmapPageState extends State { '${e.norm.jurabk} ${e.norm.paragraph}', style: t.labelLarge, ), - Text( - ' · ', - style: t.labelLarge?.copyWith( - color: ReclaimColors.mute, - ), - ), - Text( - e.norm.title, - style: t.labelLarge?.copyWith( - color: ReclaimColors.mute, - fontWeight: FontWeight.w400, - ), - ), ], ), ), diff --git a/assets/branding/reclaim-lockup.svg b/assets/branding/reclaim-lockup.svg deleted file mode 100644 index 3cc1d1f..0000000 --- a/assets/branding/reclaim-lockup.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - Recl - ∆I - m - - diff --git a/assets/branding/reclaim-mark.svg b/assets/branding/reclaim-mark.svg deleted file mode 100644 index 4b8bc57..0000000 --- a/assets/branding/reclaim-mark.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/flows/durchstich-from-file.yaml b/flows/durchstich-from-file.yaml deleted file mode 100644 index 7d2bfa3..0000000 --- a/flows/durchstich-from-file.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Vertikaler Durchstich, Variante "ohne http-Permission". -# -# Nimmt das Norm-XML als bytes-Input direkt entgegen (statt es -# über http.request zu ziehen). Sinnvoll für den ersten end-to- -# end-Test gegen den lokal laufenden Hub, wenn dessen Operator- -# Policy noch keine Allowlist für gesetze-im-internet.de hat. -# -# Aufruf: -# chain run flows/durchstich-from-file.yaml \ -# --input content=@/tmp/gewo-14-mini.xml \ -# --input cohort_id=berlin-kmu - -name: durchstich-from-file - -inputs: - content: bytes - cohort_id: text - -steps: - - id: normalize - use: text.akoma_normalize@^0 - with: - content: $inputs.content - mime: "application/xml" - - - id: cohort - use: stats.cohort_size@^0 - with: - cohort_id: $inputs.cohort_id - - - id: review - use: system.approval@^0 - with: - title: "Recl∆Im — Review GewO §14" - payload: $normalize.norm - -outputs: - norm: $normalize.norm - cohort: $cohort.cohort diff --git a/flows/durchstich-gewo-14.yaml b/flows/durchstich-gewo-14.yaml index e1bee14..5b2162d 100644 --- a/flows/durchstich-gewo-14.yaml +++ b/flows/durchstich-gewo-14.yaml @@ -1,53 +1,131 @@ -# Phase-0 vertikaler Durchstich für GewO §14. +# Vertikaler Durchstich Phase 0 — eine Norm (GewO §14) durch +# alle 8 law*-Schritte + Juristen-Approval + Audit. # -# Minimaler Pfad zum ersten echten flow.completed-Event im -# Audit-Log — http.request → text.akoma_normalize → -# stats.cohort_size → system.approval. Beweist, dass die -# Recl∆Im-Pipeline live gegen den Ch∆In-Hub läuft. Die -# komplexen Bewertungs-Schritte (econ.skm_score, -# law.benefit_score, graph.shapley_attribution) bündeln wir in -# einem zweiten Flow, wenn dieser hier durchläuft. -# -# Voraussetzung — alle Module installieren: -# chain install --link / -# für: http-request, text-akoma-normalize, stats-cohort-size +# Voraussetzung: +# 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 # # Aufruf: # chain run flows/durchstich-gewo-14.yaml \ # --input norm_url=https://www.gesetze-im-internet.de/gewo/__14.xml \ # --input cohort_id=berlin-kmu -name: durchstich-gewo-14 - inputs: - norm_url: text - cohort_id: text + norm_url: + type: string + required: true + description: ELI-resolvable URL der Quell-Norm + cohort_id: + type: string + required: true + description: Adressaten-Kohorte (siehe stats.cohort_size v0.1) + tariff_eur_per_hour: + type: number + default: 35.0 + description: SKM-Tarif T + +outputs: + norm: ${{ normalize.norm }} + duties: ${{ duties.duties }} + citations: ${{ citations.citations }} + cohort: ${{ cohort.cohort }} + skm: ${{ skm.report }} + frust: ${{ frust.score }} + benefit: ${{ benefit.score }} + attribution: ${{ attribution.attribution }} + reviewed: ${{ review.decision == 'approve' }} steps: - id: pull use: http.request@^0 with: - url: $inputs.norm_url - method: "GET" + url: ${{ inputs.norm_url }} + method: GET + etag_cache: true - id: normalize use: text.akoma_normalize@^0 with: - content: $pull.body - mime: "application/xml" + content: ${{ pull.body }} + mime: application/xml + + - id: duties + use: text.deontic_extract@^0 + with: + norm: ${{ normalize.norm }} + + - id: citations + use: graph.citation_extract@^0 + with: + norm: ${{ normalize.norm }} - id: cohort use: stats.cohort_size@^0 with: - cohort_id: $inputs.cohort_id + cohort_id: ${{ inputs.cohort_id }} + # SKM-Aufbereitung: jede Duty bekommt P/F/T/h aus + # Kohorten-Größe + per-Duty-Heuristik (Phase 1: NKR-Datenbank). + # Hier inline aufgebaut; in Phase 1 wird das ein eigener + # `econ.duties_enrich`-Schritt. + - id: skm + use: econ.skm_score@^0 + with: + duties: + duties: + - population: ${{ cohort.cohort.count }} + frequency: 1.0 + tariff_eur_per_hour: ${{ inputs.tariff_eur_per_hour }} + time_hours_per_case: 0.5 + source_norm: ${{ normalize.norm.eli }} + tier: ${{ cohort.cohort.tier }} + + - id: frust + use: text.readability_score@^0 + with: + norm: ${{ normalize.norm }} + graph: ${{ citations.citations }} + + - id: benefit + use: law.benefit_score@^0 + with: + ratings: + schutz: 2.0 + markt: 3.0 + rechtssicherheit: 3.5 + eu_binnenmarkt: 2.0 + sicherheit: 1.5 + umwelt: 0.0 + einnahmen: 2.0 + _sources: + schutz: NKR Stellungnahme zur GewO 2018 + rechtssicherheit: IHK Berlin Mittelstandsumfrage 2024 + + # Attribution-Schritt mit Demo-Graph aus citations. + # Phase 1: graph.normalize baut den vollen Norm-Graph hier. + - id: attribution + use: graph.shapley_attribution@^0 + with: + graph: + nodes: + - ${{ normalize.norm.eli }} + - eli/bund/gewo + edges: + - from: eli/bund/gewo + to: ${{ normalize.norm.eli }} + target: ${{ normalize.norm.eli }} + + # Juristen-Gate — Studie §3.3 macht das obligatorisch. - id: review use: system.approval@^0 with: - title: "Recl∆Im — Review GewO §14" - payload: $normalize.norm - -outputs: - norm: $normalize.norm - cohort: $cohort.cohort - decision: $review.decision + title: "Recl∆Im (F∆I) — Review ${{ normalize.norm.eli }}" + payload: + norm: ${{ normalize.norm }} + skm: ${{ skm.report }} + benefit: ${{ benefit.score }} + frust: ${{ frust.score }} + cohort: ${{ cohort.cohort }} diff --git a/flows/test-cohort.yaml b/flows/test-cohort.yaml deleted file mode 100644 index df71c65..0000000 --- a/flows/test-cohort.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Minimal-Test: nur stats.cohort_size, ohne externe Calls. -# Beweist, dass meine Module mit dem Hub-ABI kompatibel sind. - -name: test-cohort - -inputs: - cohort_id: text - -steps: - - id: cohort - use: stats.cohort_size@^0 - with: - cohort_id: $inputs.cohort_id - -outputs: - cohort: $cohort.cohort