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>
This commit is contained in:
flemming-it 2026-06-20 00:11:39 +02:00
parent c51ef0e004
commit 0c536c5b91
11 changed files with 104 additions and 96 deletions

View file

@ -13,33 +13,33 @@ inputs:
ratings: json
steps:
- id: normalize
use: text.akoma_normalize@^0
use: text.akoma-normalize@^0
with:
content: $inputs.content
mime: "application/xml"
- id: deontic
use: text.deontic_extract@^0
use: text.deontic-extract@^0
with:
norm: $normalize.norm
- id: citations
use: graph.citation_extract@^0
use: graph.citation-extract@^0
with:
norm: $normalize.norm
- id: cohort
use: stats.cohort_size@^0
use: stats.cohort-size@^0
with:
cohort_id: $inputs.cohort_id
- id: frust
use: text.readability_score@^0
use: text.readability-score@^0
with:
norm: $normalize.norm
graph: $citations.citations
- id: skm
use: econ.skm_score@^0
use: econ.skm-score@^0
with:
duties: $inputs.duties
- id: benefit
use: law.benefit_score@^0
use: law.benefit-score@^0
with:
ratings: $inputs.ratings
outputs:
@ -73,11 +73,11 @@ class NormLiveInput {
final String cohortId;
/// `{ duties: [ { population, frequency, tariff_eur_per_hour,
/// time_hours_per_case, source_norm, tier } ] }` for econ.skm_score.
/// time_hours_per_case, source_norm, tier } ] }` for econ.skm-score.
final Map<String, Object?> duties;
/// `{ schutz, markt, rechtssicherheit, eu_binnenmarkt, sicherheit,
/// umwelt, einnahmen }` (each 0..5) for law.benefit_score.
/// umwelt, einnahmen }` (each 0..5) for law.benefit-score.
final Map<String, Object?> ratings;
final Jurisdiction jurisdiction;

View file

@ -270,7 +270,7 @@ class Norm {
final String? supersededNote;
/// The actual paragraphs of the norm text, normalised by
/// `text.akoma_normalize` in live mode. In demo mode the
/// `text.akoma-normalize` in live mode. In demo mode the
/// fixture quotes the public source verbatim under §5 UrhG
/// (amtliche Werke).
final List<NormParagraph> paragraphs;

View file

@ -68,7 +68,7 @@ class NormTextCard extends StatelessWidget {
if (paragraphs.isEmpty)
Text(
'Für diese Norm ist noch kein normalisierter Text '
'eingebunden. Wenn Ch∆In mit `text.akoma_normalize@^0` '
'eingebunden. Wenn Ch∆In mit `text.akoma-normalize@^0` '
'gegen die Quell-URL läuft, erscheinen die Absätze hier.',
style: t.bodyLarge?.copyWith(color: ReclaimColors.mute),
)