Shared infrastructure for platform:ADR-211 Klickdummy conformance — invariants, requirements bridge, co-creation widget, multi-klickdummy browser
Project description
iil-klickdummy — Shared Infrastructure for platform:ADR-211 (Rev 14)
Versioniertes pip-Paket mit allem, was Klickdummy-Konformität braucht: Schemas, Konformitäts-Checks (I1–I4), Requirements-Bridge, S11-Inventur, Feedback-Widget v0.5 (Co-Creation-Loop, GitHub-Direkt-API) und ab v1.1 einen Multi-Klickdummy-Browser mit Versions-Switcher.
Install
Default (v1.28+): public PyPI
pip install "iil-klickdummy>=1.28,<2.0"
Fallback / Dev: via Git-URL
pip install "iil-klickdummy @ git+https://github.com/achimdehnert/iil-klickdummy.git@v1.28.0"
Workspace-Pattern (Development):
pip install -e ../platform/packages/iil-klickdummy
Console-Scripts
klickdummy-i1 <spec>:<schema> ... # Spec ↔ Route Coverage
klickdummy-i2 <spec>:<schema> ... # 4-Pattern (strict-mode)
klickdummy-i3 <spec>:<schema> ... # Off-Ramp + Sunset
klickdummy-i4 docs/ # Cross-Repo-Ref-Format
klickdummy-extract-requirements <spec> # Spec → UC/FR/NFR/Lasten/Pflicht
klickdummy-inventory # S11 cross-repo legacy class scan
klickdummy-install-snippets [--symlink] # HTML+JS+templates in <repo>/platform-snippets/
klickdummy-browser [--output X.html] # v1.1: Multi-Klickdummy-Browser (Listbox + iframe)
v1.1 — Browser-Feature (Stufe 1+2)
Erzeugt eine statische klickdummy-browser.html mit:
- Linke Sidebar: Listbox „Klickdummy" (alle im Repo gefundenen) + Versions-Switcher (aus Git-History)
- Detail-Card: Spec-ID, Klasse-Badge, ADR-Ref, Schwester-Klickdummies, Pfad
- Main: iframe lädt aktive shell.html mit
?feedback=on
Erzeugung:
cd <repo>
klickdummy-browser --output klickdummy-browser.html
# Browser: open klickdummy-browser.html
Cross-Repo-Modus (--cross-repo --base ~/github) ist v1.2-Roadmap.
Feedback-Widget (v0.5)
Browser-side, opt-in via ?feedback=on. Submit-Modes:
| Mode | Was passiert |
|---|---|
download |
Markdown-Datei (offline-fähig, kein GitHub-Token nötig) |
clipboard |
navigator.clipboard.writeText |
github |
POST direkt an api.github.com/repos/.../issues mit User-PAT aus localStorage.klickdummy_github_token; Issue-Author = realer GitHub-User; Audit native |
Konfiguration im Host (vor Widget-Script-Tag):
<script>
window.KLICKDUMMY_SPEC = { id: "repo:klickdummy-spec-<name>", version: "0.1", klickdummy_class: "mock" };
window.KLICKDUMMY_FEEDBACK_REPO = "owner/repo"; // GitHub-Zielrepo
// optional Plugin-Hooks:
window.KLICKDUMMY_CATEGORIES = [...]; // override default 5
window.KLICKDUMMY_PERSONA_HOOK = () => '...';
window.KLICKDUMMY_VERFAHREN_HOOK = () => '...';
</script>
<script src="platform-snippets/klickdummy/feedback-widget/widget.js" defer></script>
Schemas (importlib.resources)
from importlib.resources import files
import json
schema = json.loads(files("iil_klickdummy.schemas").joinpath("screens-spec.schema.json").read_text())
Bezug
platform:ADR-211Rev 13 — Konvention + Distribution + Co-Creation-Pfadeplatform:ADR-212— Traefik-Ingress (für künftige PyPI-Selbsthost)platform:ADR-213— Cross-Repo-Ref-Format (wasklickdummy-i4prüft)
v1.2 — klickdummy-sync (Stufe 2)
Per platform:ADR-211 Rev 14 §Multi-Klickdummy-Browser Stufe 3 (Cross-Repo): pushe Klickdummy-Metadaten + Iterations-Logs + ADR-Bodies in den Orchestrator pgvector-Memory für semantische Cross-Repo-Suche.
CLI
klickdummy-sync --repo . # repo-lokal, NDJSON auf stdout
klickdummy-sync --cross-repo # alle 6 Klickdummy-Repos
klickdummy-sync --cross-repo --output sync.ndjson
klickdummy-sync --repo . --dry-run # nur Listen
Architektur — NDJSON-getrennt vom Push
Das Sync-Modul produziert NDJSON (eine Zeile pro Memory-Entry). Der eigentliche Push an Orchestrator-pgvector erfolgt in einem zweiten Schritt — entweder:
- via
claude-policy push --ndjson sync.ndjson(SSH+docker-exec, kein MCP nötig) - via CC/Cascade-Session mit gebundenem
orchestrator__agent_memory_upsert - via nightly GitHub-Action mit Orchestrator-API-Token
Warum getrennt: das Paket bleibt MCP-frei und unter PyPI-Standards. Auth zum Orchestrator ist Sache des Konsumenten (Org-spezifisch).
Entry-Typen
| was | entry_type | entry_key-Schema |
|---|---|---|
| Klickdummy-Spec | repo_context |
klickdummy:<org>:<repo>:<name> |
| Iteration (feedback-log) | lesson_learned |
klickdummy-iter:<org>:<repo>:<name>:<n> |
| Klickdummy-ADR | decision |
klickdummy-adr:<org>:<repo>:ADR-<NNN> |
Tags (Multi-Tenant + Filter)
klickdummy(alle)klickdummy:class:<mock|stub-demo|story|spec-demo>klickdummy:org:<iilgmbh|achimdehnert|ttz-lif|meiki-lra>klickdummy:repo:<name>gov-datafür ttz-lif / meiki-lra-Workloads
Dogfood
$ klickdummy-sync --cross-repo --dry-run
== Klickdummy-Sync → Orchestrator (v1.2) ==
· meiki-hub: 1 KD · 7 Iter · 3 ADRs
· writing-hub: 1 KD · 0 Iter · 1 ADR
· risk-hub: 0 KD · 0 Iter · 1 ADR
· ttz-hub: 2 KD · 0 Iter · 2 ADRs
Total: 18 Entries
v1.4 — klickdummy-manage (Repo + Topic + Version)
CLI für die einheitliche Verwaltungs-Sicht über alle Klickdummies:
klickdummy-manage list # Tabelle aller cross-repo
klickdummy-manage list --org iilgmbh --class mock
klickdummy-manage status --sunset-due-in 30 # Health-Check
klickdummy-manage topics # Topic-Cluster
klickdummy-manage versions <spec_id> # Git-History 1 KD
klickdummy-manage diff <spec_id> v0.1 v0.2 # Versions-Diff
Neues optionales Spec-Feld meta.topic (freier String):
spec_id: meiki:klickdummy-spec-fristenmanagement
spec_version: "0.1"
title: ...
class: mock
meta:
topic: fristen # ← NEU, optional, frei wählbar
# weitere meta-Felder hier denkbar
screens: [...]
klickdummy-manage topics aggregiert Klickdummies nach diesem Feld. Specs
ohne meta.topic landen unter „(kein topic)" — kein Bruch zu v1.3.
Status-Check prüft:
sunset_after-Datum überschritten? → Warnungsunset_afterin <N Tagen fällig? → Warnungclassin 4-Pattern (mock|stub-demo|story|spec-demo)? → sonst Warnung- ADR-Frontmatter vollständig? → fehlt sunset_after → Warnung
Exit 1 bei Warnings (für CI-Hooks).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iil_klickdummy-1.28.1.tar.gz.
File metadata
- Download URL: iil_klickdummy-1.28.1.tar.gz
- Upload date:
- Size: 199.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e539df55008bd185c5b269ce36aa5114590a24a453fd105987e461e691f22b5
|
|
| MD5 |
bf82d1fc97df70d7dbf3c57ae7524b53
|
|
| BLAKE2b-256 |
d9e62317c87aa733ac84902e7758614559c2a3ae5f19f3a08d6159026810edbd
|
Provenance
The following attestation bundles were made for iil_klickdummy-1.28.1.tar.gz:
Publisher:
publish-pypi.yml on iilgmbh/iil-klickdummy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iil_klickdummy-1.28.1.tar.gz -
Subject digest:
1e539df55008bd185c5b269ce36aa5114590a24a453fd105987e461e691f22b5 - Sigstore transparency entry: 1848230409
- Sigstore integration time:
-
Permalink:
iilgmbh/iil-klickdummy@b1ea8283da268d22eb9c003f050bb2517f4b0caf -
Branch / Tag:
refs/tags/v1.28.1 - Owner: https://github.com/iilgmbh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@b1ea8283da268d22eb9c003f050bb2517f4b0caf -
Trigger Event:
push
-
Statement type:
File details
Details for the file iil_klickdummy-1.28.1-py3-none-any.whl.
File metadata
- Download URL: iil_klickdummy-1.28.1-py3-none-any.whl
- Upload date:
- Size: 201.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38fab283393ecf17ac81aca2648b31d3a733b2b8f2b93d16b0aa85558da21ca4
|
|
| MD5 |
915353f045a74b8baac346791c6435bc
|
|
| BLAKE2b-256 |
d5b267fc7f269b7715a13f8e42d993c1e8ce3cb21a2d30756944e106f09db207
|
Provenance
The following attestation bundles were made for iil_klickdummy-1.28.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on iilgmbh/iil-klickdummy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iil_klickdummy-1.28.1-py3-none-any.whl -
Subject digest:
38fab283393ecf17ac81aca2648b31d3a733b2b8f2b93d16b0aa85558da21ca4 - Sigstore transparency entry: 1848230567
- Sigstore integration time:
-
Permalink:
iilgmbh/iil-klickdummy@b1ea8283da268d22eb9c003f050bb2517f4b0caf -
Branch / Tag:
refs/tags/v1.28.1 - Owner: https://github.com/iilgmbh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@b1ea8283da268d22eb9c003f050bb2517f4b0caf -
Trigger Event:
push
-
Statement type: