Commit graph

7 commits

Author SHA1 Message Date
0c37172d12 fix(naming): dash capability ID (chain catalog charset [a-z0-9-])
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m38s
provides.capability _ -> - so it passes `chain validate` and the hub
store name-match. No behaviour change (capability validation is lint-only;
the WASM is unchanged).

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-20 00:12:05 +02:00
4419e4a385 docs(store): add STORE.yaml, MODULE.md/de + icon for the store
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m45s
Signed-off-by: flemming-it <sf@flemming.it>
2026-06-19 02:54:57 +02:00
fc5e6300b8 ci: point checkout + SDK insteadOf at git.flemming.ai
All checks were successful
CI / Linux x86_64 (Forgejo) (push) Successful in 1m41s
The Forgejo instance the modules and the chain-module-sdk dep
live on is reachable at git.flemming.ai (api/v1/version returns
SERVING); git.flemming.ws is a legacy host that no longer
resolves at the API level. Cargo.toml's git dep already uses
.ai — the CI workflow's checkout URL and the SDK insteadOf
rewrite now match, so cargo's git fetch can authenticate via
${{ secrets.MODULE_SDK_PAT }} the same way it was always meant
to. No behaviour change to the module code.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-18 12:31:38 +02:00
3910c5f59e ci: add Forgejo CI workflow (mirror text-extract)
Some checks failed
CI / Linux x86_64 (Forgejo) (push) Failing after 2s
The six gates the rest of chain-modules already runs against:
fmt-check, clippy with -D warnings, host build, host test,
release wasm32-wasip2 build, plus the manual external-URL
checkout and chain-module-sdk insteadOf URL rewrite (via
secrets.MODULE_SDK_PAT) so cargo can reach the org-private SDK
git dep through Forgejo's REQUIRE_SIGNIN_VIEW.

Same template as text-extract's .forgejo/workflows/ci.yml; the
only swap is the module-name string in the checkout step.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-18 12:13:11 +02:00
1f4152b189 fix(clippy): bring source under -D warnings ahead of CI
Prep for the Forgejo CI gate. Adjustments per module are small
and local:

  - test modules get inner `#![allow(clippy::unwrap_used,
    expect_used, panic)]` so the existing assert.expect()
    test idiom keeps working without rewriting every fixture
  - the dead_code field that downstream consumers may still
    want serialised gets an explicit #[allow(dead_code)]
  - manual char/range comparisons fold to the idiomatic forms
    (`['…']`, `(2..=5).contains(&n)`)
  - one snake_case rename in text-readability-score

Also re-bakes module.wasm so the committed artefact matches
the post-fmt source byte-for-byte.

No behaviour change, no test change. cargo fmt --all -- --check
and cargo clippy --all-targets -- -D warnings now both pass.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-18 12:13:11 +02:00
001cae00f1 chore(release): finalize v0.1.0 — LICENSE, NOTICE, WASM artefact
Adds the three release-prep artefacts so the repo is ready for
the chain store: Apache-2.0 LICENSE (boilerplate), NOTICE with
per-module copyright + third-party + methodological lineage
attribution, and the compiled wasm32-wasip2 release bundle
(module.wasm) that the Hub will install verbatim once published.

Cargo.lock is now also tracked so reproducible builds line up
with the WASM hash that ships.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-18 11:38:40 +02:00
43acf4ac1a feat: initial graph-shapley-attribution v0.1.0 (graph.shapley_attribution@0.1.0)
Shapley-style attribution on a weighted norm/citation graph.
Splits a target node's "blame" or "credit" among its ancestors —
useful for transposes-chains where a duty's load must split
between EU origin + national implementation + delegated VO.

v0.1.0 ships a path-count proportional fallback:

  share(ancestor) = paths(ancestor → target)
                    / sum(paths(any ancestor → target))

That matches the true Shapley value exactly when the coalition
value is "did this ancestor reach the target?", which is the
common case for citation chains. The honest Shapley implementation
(Shubik-Owen recursion over the 2^n coalition lattice) lands in
0.2, bounded to graphs with ≤32 ancestor nodes.

Reuse-lens: Shapley attribution on weighted graphs is broadly
useful — causal inference, feature attribution, supply-chain
analysis.

Pure in-WASM, zero filesystem, zero network.

Reserved for next versions:

  - 0.2: honest Shapley on ≤32-node neighbourhoods
  - 0.3: weighted edges (today's fallback treats all edges
         uniformly; weights matter once concretizes vs
         transposes carry different costs)

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-18 11:25:26 +02:00