reclaim/flows/durchstich-full.yaml
flemming-it 0c536c5b91 fix(store): dash capability IDs + .chain bundles (chain catalog conformance)
chain's catalog charset (naming.rs check_segment, capability-namespaces.yaml)
allows only [a-z0-9-] per dot-segment — underscores are rejected by
`chain validate`. Repack all 8 modules with the dash capability form
(econ.skm-score, law.benefit-score, …) and align the store index, flows,
app strings and docs to match. Bundles now use the .chain extension
(content-addressed; legacy .fai would still install).

- store/store.yaml: name: dash, wasm_url .chain, refreshed sha256
- store/SHA256.txt: 8 new .chain hashes
- flows + app/lib + RUN.md + MACHBARKEITSSTUDIE.md: capability refs _ -> -
- left untouched: text_akoma_normalize.wasm artifact, DB field skm_score,
  backlog module law.skm_score

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-20 00:11:39 +02:00

92 lines
2.9 KiB
YAML

# Vertikaler Durchstich, Vollversion (so weit heute lauffähig).
#
# Erweitert durchstich-from-file um die Analyse-Module, deren
# Eingaben sich aus vorhergehenden Step-Outputs speisen lassen
# (alle als $ref) — Pflichten, Zitationsgraph, Lesbarkeit/Frust.
# Das flow.completed-Event trägt damit norm + duties + citations
# + frust + cohort, also die Form, die HubRepository.list() in der
# Recl∆Im-App in Evaluation-Objekte übersetzt.
#
# NICHT enthalten: econ.skm-score und law.benefit-score. Beide
# Module lesen ihren Tupel-/Ratings-Input über `require_json`,
# d.h. sie erwarten ein Payload::Json. In einem Flow lässt sich
# ein Json-Wert aber nur aus einem vorhergehenden Step-Output
# beziehen — `chain run --input name=value` erzeugt Text,
# `--input name=@file` erzeugt Bytes, nie Json, und ein Inline-
# Map-Literal in `with:` lehnt der Flow-Parser ab ("expected a
# string"). Es gibt heute also keinen Weg, skm/benefit aus CLI-
# Inputs zu treiben. Siehe Handoff an chain (json-CLI-Input).
# Sobald der Plattform-Fix steht, die skm-/benefit-Steps unten
# einkommentieren (Form: `with: { duties: $inputs.duties }` mit
# `inputs: { duties: json }`).
#
# Aufruf:
# chain run flows/durchstich-full.yaml \
# --input content=@/tmp/gewo-14-mini.xml \
# --input cohort_id=berlin-kmu
# (pausiert am system.approval-Gate — danach via Hub/Studio
# freigeben, dann wird das flow.completed-Event geschrieben.)
name: durchstich-full
inputs:
content: bytes
cohort_id: text
steps:
- id: normalize
use: text.akoma-normalize@^0
with:
content: $inputs.content
mime: "application/xml"
- id: deontic
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
- id: frust
use: text.readability-score@^0
with:
norm: $normalize.norm
graph: $citations.citations
# Pending platform json-CLI-input (Handoff → chain). Form, die
# nach dem Fix gilt — `inputs:` oben um `duties: json` /
# `ratings: json` ergänzen und mit --input duties=… speisen:
# - id: skm
# use: econ.skm-score@^0
# with:
# duties: $inputs.duties
# - id: benefit
# use: law.benefit-score@^0
# with:
# ratings: $inputs.ratings
- id: review
use: system.approval@^0
with:
title: "Recl∆Im — Review GewO §14 (Live)"
prompt: >-
Juristische Freigabe: Stimmen die extrahierten Pflichten, die
Zitationen und die Norm-Wiedergabe mit dem geltenden Gesetzestext
überein? Quellen siehe Payload. Bei Freigabe gilt die Auswertung
als juristisch bestätigt.
payload: $normalize.norm
outputs:
norm: $normalize.norm
frust: $frust.score
cohort: $cohort.cohort
duties: $deontic.duties
citations: $citations.citations