@renoxar/koolie 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +16 -0
- package/.gitignore +51 -0
- package/.koolie/QUELLREPOSITORIUM.md +18 -0
- package/.koolie/core/CHANGELOG.md +11832 -0
- package/.koolie/core/LICENSE +674 -0
- package/.koolie/core/LICENSE-HINWEIS.md +98 -0
- package/.koolie/core/OWNERS.md +36 -0
- package/.koolie/core/VERSION +1 -0
- package/.koolie/core/banner.py +397 -0
- package/.koolie/core/build/README.md +34 -0
- package/.koolie/core/build/assemble.py +354 -0
- package/.koolie/core/build/build-docx.py +194 -0
- package/.koolie/core/build/doc/00-kopf.md +18 -0
- package/.koolie/core/build/doc/01-executive-summary.md +24 -0
- package/.koolie/core/build/doc/02-zielbild.md +13 -0
- package/.koolie/core/build/doc/03-ziele-nichtziele.md +28 -0
- package/.koolie/core/build/doc/04-geltungsbereich.md +25 -0
- package/.koolie/core/build/doc/05-glossar.md +47 -0
- package/.koolie/core/build/doc/06-leitprinzipien.md +5 -0
- package/.koolie/core/build/doc/07-architektur.md +60 -0
- package/.koolie/core/build/doc/07a-abbildungsschicht.md +66 -0
- package/.koolie/core/build/doc/08-trennung.md +24 -0
- package/.koolie/core/build/doc/09-betriebsmodi.md +18 -0
- package/.koolie/core/build/doc/10-arbeitsablauf.md +5 -0
- package/.koolie/core/build/doc/11-datenschutz.md +5 -0
- package/.koolie/core/build/doc/12-sicherheit.md +5 -0
- package/.koolie/core/build/doc/13-risiko.md +5 -0
- package/.koolie/core/build/doc/14-rollen.md +9 -0
- package/.koolie/core/build/doc/15-referenzstruktur.md +124 -0
- package/.koolie/core/build/doc/16-agentenanweisung.md +8 -0
- package/.koolie/core/build/doc/17-overlay.md +29 -0
- package/.koolie/core/build/doc/18-skill-standard.md +5 -0
- package/.koolie/core/build/doc/19-skill-template.md +5 -0
- package/.koolie/core/build/doc/20-referenz-skills.md +70 -0
- package/.koolie/core/build/doc/21-prompts.md +53 -0
- package/.koolie/core/build/doc/22-checklisten.md +49 -0
- package/.koolie/core/build/doc/23-entscheidungsbaeume.md +29 -0
- package/.koolie/core/build/doc/24-onboarding.md +33 -0
- package/.koolie/core/build/doc/25-governance.md +35 -0
- package/.koolie/core/build/doc/26-qs-test.md +9 -0
- package/.koolie/core/build/doc/27-pilot.md +13 -0
- package/.koolie/core/build/doc/28-uebernahme.md +5 -0
- package/.koolie/core/build/doc/29-grenzen.md +87 -0
- package/.koolie/core/build/doc/30-roadmap.md +5 -0
- package/.koolie/core/build/doc/31-anhaenge.md +151 -0
- package/.koolie/core/build/doc/32-abschluss.md +92 -0
- package/.koolie/core/build/ref-a4.docx +0 -0
- package/.koolie/core/checklists/01-preflight.md +54 -0
- package/.koolie/core/checklists/02-privacy-context.md +51 -0
- package/.koolie/core/checklists/03-before-code-change.md +51 -0
- package/.koolie/core/checklists/04-review-ai-code.md +58 -0
- package/.koolie/core/checklists/05-testing.md +48 -0
- package/.koolie/core/checklists/06-security.md +50 -0
- package/.koolie/core/checklists/07-new-dependency.md +57 -0
- package/.koolie/core/checklists/08-merge-request.md +47 -0
- package/.koolie/core/checklists/09-onboarding.md +52 -0
- package/.koolie/core/checklists/10-project-adoption.md +74 -0
- package/.koolie/core/checklists/11-framework-release.md +71 -0
- package/.koolie/core/checklists/README.md +28 -0
- package/.koolie/core/clientmap.py +1358 -0
- package/.koolie/core/clients/README.md +113 -0
- package/.koolie/core/clients/_template/CLIENT_PACK.md +197 -0
- package/.koolie/core/clients/claude-code/CLIENT_PACK.md +383 -0
- package/.koolie/core/clients/claude-code/manifest.json +232 -0
- package/.koolie/core/clients/claude-code/root-template/.claude/README.md +127 -0
- package/.koolie/core/clients/cursor/CLIENT_PACK.md +229 -0
- package/.koolie/core/clients/cursor/manifest.json +330 -0
- package/.koolie/core/clients/cursor/root-template/.cursor/README.md +36 -0
- package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +251 -0
- package/.koolie/core/clients/devin-desktop/manifest.json +163 -0
- package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +79 -0
- package/.koolie/core/clients/kiro/CLIENT_PACK.md +223 -0
- package/.koolie/core/clients/kiro/manifest.json +300 -0
- package/.koolie/core/clients/kiro/root-template/.kiro/README.md +37 -0
- package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +257 -0
- package/.koolie/core/clients/openai-codex/manifest.json +208 -0
- package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +35 -0
- package/.koolie/core/decision-trees/01-context-allowed.md +46 -0
- package/.koolie/core/decision-trees/02-may-ai-do-task.md +47 -0
- package/.koolie/core/decision-trees/03-analyze-or-modify.md +50 -0
- package/.koolie/core/decision-trees/04-required-review.md +49 -0
- package/.koolie/core/decision-trees/05-stop-or-escalate.md +47 -0
- package/.koolie/core/decision-trees/06-rule-placement.md +58 -0
- package/.koolie/core/decision-trees/README.md +14 -0
- package/.koolie/core/docs/ADOPTION_GUIDE.md +582 -0
- package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +91 -0
- package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +79 -0
- package/.koolie/core/docs/ROADMAP.md +848 -0
- package/.koolie/core/docs/RUNTIME_GLOSSARY.md +113 -0
- package/.koolie/core/examples/README.md +11 -0
- package/.koolie/core/examples/example-ergebnisbericht.md +31 -0
- package/.koolie/core/examples/example-mr-description.md +31 -0
- package/.koolie/core/examples/example-overlay-runtime.md +48 -0
- package/.koolie/core/framework/core/00-principles.md +93 -0
- package/.koolie/core/framework/core/01-governance.md +58 -0
- package/.koolie/core/framework/core/02-privacy.md +141 -0
- package/.koolie/core/framework/core/03-security.md +86 -0
- package/.koolie/core/framework/core/04-quality.md +48 -0
- package/.koolie/core/framework/core/05-working-model.md +199 -0
- package/.koolie/core/framework/core/06-prompting-rules.md +51 -0
- package/.koolie/core/framework/core/07-review-rules.md +52 -0
- package/.koolie/core/framework/core/08-skill-conventions.md +115 -0
- package/.koolie/core/framework/core/09-risk-model.md +87 -0
- package/.koolie/core/framework/core/10-error-escalation.md +53 -0
- package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +16 -0
- package/.koolie/core/framework/org-policies/README.md +29 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/branching-strategy/muster-general.md +43 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/coding-guidelines/muster-general.md +82 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-done/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-ready/muster-general.md +54 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/quality/muster-general.md +59 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/security/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general.md +150 -0
- package/.koolie/core/framework/role-packs/README.md +63 -0
- package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +58 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +158 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +88 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/CHANGELOG.md +10 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/EXAMPLES.md +148 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/SKILL.md +195 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +22 -0
- package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +95 -0
- package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +26 -0
- package/.koolie/core/framework/runtime/agents/fw-reviewer.md +34 -0
- package/.koolie/core/framework/runtime/client-settings.json +3 -0
- package/.koolie/core/framework/runtime/hooks.json +20 -0
- package/.koolie/core/framework/runtime/mcp-config.example.json +4 -0
- package/.koolie/core/framework/runtime/permissions.json +106 -0
- package/.koolie/core/framework/runtime/root-instruction-local.example.md +19 -0
- package/.koolie/core/framework/runtime/root-instruction.md +116 -0
- package/.koolie/core/framework/runtime/rules/00-framework-core.md +49 -0
- package/.koolie/core/framework/runtime/rules/10-privacy-security.md +49 -0
- package/.koolie/core/framework/runtime/rules/15-development-rules.md +41 -0
- package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +32 -0
- package/.koolie/core/framework/runtime/rules/20-project-overlay.md +60 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/EXAMPLES.md +57 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/SKILL.md +177 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +15 -0
- package/.koolie/core/framework/skills/fw-change-analyze/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-change-analyze/EXAMPLES.md +66 -0
- package/.koolie/core/framework/skills/fw-change-analyze/SKILL.md +167 -0
- package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +16 -0
- package/.koolie/core/framework/skills/fw-change-small/CHANGELOG.md +13 -0
- package/.koolie/core/framework/skills/fw-change-small/EXAMPLES.md +68 -0
- package/.koolie/core/framework/skills/fw-change-small/SKILL.md +175 -0
- package/.koolie/core/framework/skills/fw-change-small/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-code-explain/CHANGELOG.md +11 -0
- package/.koolie/core/framework/skills/fw-code-explain/EXAMPLES.md +61 -0
- package/.koolie/core/framework/skills/fw-code-explain/SKILL.md +163 -0
- package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-docs-update/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-docs-update/EXAMPLES.md +59 -0
- package/.koolie/core/framework/skills/fw-docs-update/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-error-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-error-analyze/EXAMPLES.md +67 -0
- package/.koolie/core/framework/skills/fw-error-analyze/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-mr-description/SKILL.md +170 -0
- package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/CHANGELOG.md +7 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/EXAMPLES.md +48 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/SKILL.md +147 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-plan/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-plan/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-plan/SKILL.md +168 -0
- package/.koolie/core/framework/skills/fw-plan/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-refactor/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-refactor/EXAMPLES.md +70 -0
- package/.koolie/core/framework/skills/fw-refactor/SKILL.md +173 -0
- package/.koolie/core/framework/skills/fw-refactor/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/EXAMPLES.md +52 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/SKILL.md +149 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-review-support/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-review-support/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-review-support/SKILL.md +179 -0
- package/.koolie/core/framework/skills/fw-review-support/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-tests/CHANGELOG.md +9 -0
- package/.koolie/core/framework/skills/fw-tests/EXAMPLES.md +65 -0
- package/.koolie/core/framework/skills/fw-tests/SKILL.md +169 -0
- package/.koolie/core/framework/skills/fw-tests/TESTS.md +12 -0
- package/.koolie/core/framework/tech-packs/README.md +15 -0
- package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +61 -0
- package/.koolie/core/governance/ADOPTION_REGISTRY.md +89 -0
- package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +60 -0
- package/.koolie/core/governance/DECISION_LOG.md +779 -0
- package/.koolie/core/governance/EXCEPTION_PROCESS.md +31 -0
- package/.koolie/core/governance/FEEDBACK_PROCESS.md +34 -0
- package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +135 -0
- package/.koolie/core/governance/INCIDENT_HANDLING.md +47 -0
- package/.koolie/core/governance/PRIORITY_HIERARCHY.md +61 -0
- package/.koolie/core/governance/RACI.md +37 -0
- package/.koolie/core/governance/RELEASE_PROCESS.md +183 -0
- package/.koolie/core/governance/change-requests/CR-2026-001-definition-release-1-0-0.md +67 -0
- package/.koolie/core/governance/change-requests/CR-2026-002-client-packs.md +63 -0
- package/.koolie/core/governance/change-requests/CR-2026-003-install-client-schalter.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-004-client-pack-claude-code.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-005-kern-neutralisierung.md +75 -0
- package/.koolie/core/governance/change-requests/CR-2026-006-gemeinsame-skill-quelle.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-007-geteilte-kernbestandteile.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-008-berechtigungen-und-hooks.md +85 -0
- package/.koolie/core/governance/change-requests/CR-2026-009-umbenennung-leitwerk.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-010-restduplikation.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-011-hauptdokument.md +72 -0
- package/.koolie/core/governance/change-requests/CR-2026-012-schreibschutz-kernverzeichnis.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-013-validator-blindstellen.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-014-kurzform-langform.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-015-versionskette.md +150 -0
- package/.koolie/core/governance/change-requests/CR-2026-016-ap2-claude-code.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-017-ladebedingungen-claude-code.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-018-quellenliste-claude-code.md +121 -0
- package/.koolie/core/governance/change-requests/CR-2026-019-strukturentscheidungen-fortschreiben.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-020-akteursbezeichnung.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-021-hook-interpreter.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-022-artefaktversionen.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-023-shell-lesesperre.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-024-clientbindungen.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-025-betriebsmodi.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-026-fail-closed.md +134 -0
- package/.koolie/core/governance/change-requests/CR-2026-027-zeichenlimit-einstufung.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-028-berechtigungsmodi.md +130 -0
- package/.koolie/core/governance/change-requests/CR-2026-029-hook-ablageort.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-030-lesende-werkzeuge.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-031-regelquellen-ausserhalb.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-032-fremde-skill-ablage.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-033-modusabhaengige-durchsetzung.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-034-nachweisbedingungen.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-035-readme-in-der-regelablage.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-036-ortsangaben-hook-konfiguration.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-037-meldender-hook-clientgebunden.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-038-importsteuerung.md +159 -0
- package/.koolie/core/governance/change-requests/CR-2026-039-normative-saetze-in-kommentaren.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-040-erh01-ist-clientgebunden.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-041-s5-nicht-abbildbar.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-042-abwesenheitsnachweis-suchwerkzeug.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-043-validator-gibt-trefferwerte-aus.md +135 -0
- package/.koolie/core/governance/change-requests/CR-2026-044-aktivierungspruefung-clientgebunden.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-045-update-verliert-die-clientwahl.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-046-erstinstallation-ueberschreibt-projektdatei.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-047-zusagen-je-zugriffskanal.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-048-modusgrenze-ohne-durchsetzung.md +137 -0
- package/.koolie/core/governance/change-requests/CR-2026-049-sondenlauf-kodierungsabhaengig.md +126 -0
- package/.koolie/core/governance/change-requests/CR-2026-050-allowed-tools-und-verworfene-permissions.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-051-quellenkarte-und-ueberholter-stand.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-052-drei-regelkonflikte.md +166 -0
- package/.koolie/core/governance/change-requests/CR-2026-053-lesesperre-und-entwicklungsprofil.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-054-aktivierung-verlangt-aktivitaet.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-055-domain-ausnahme-ohne-mechanismus.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-056-eingabeschema-und-pfadidentitaet.md +245 -0
- package/.koolie/core/governance/change-requests/CR-2026-057-disallowed-tools-und-s3.md +148 -0
- package/.koolie/core/governance/change-requests/CR-2026-058-unteragent-reichweite.md +203 -0
- package/.koolie/core/governance/change-requests/CR-2026-059-unteragent-tiefe-und-widerspruch.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-060-stumme-brueche.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-061-berechtigungsdatei-ohne-pruefung.md +169 -0
- package/.koolie/core/governance/change-requests/CR-2026-062-werkzeugabbildung-des-frontmatters.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-063-skillaufruf-ohne-freigabe.md +207 -0
- package/.koolie/core/governance/change-requests/CR-2026-064-pruefregister-nicht-nachgezaehlt.md +141 -0
- package/.koolie/core/governance/change-requests/CR-2026-065-devin-suchwerkzeuge-erhoben.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-066-schlitzdeckung-ohne-abgleich.md +153 -0
- package/.koolie/core/governance/change-requests/CR-2026-067-hookblock-und-praeparationsregister.md +140 -0
- package/.koolie/core/governance/change-requests/CR-2026-068-sondenlauf-nebenlaeufig.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-069-bytecode-des-kerns.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-070-d11-zaehler.md +114 -0
- package/.koolie/core/governance/change-requests/CR-2026-071-strukturentscheidungen-bestaetigen.md +322 -0
- package/.koolie/core/governance/change-requests/CR-2026-072-modulstatus-heben.md +315 -0
- package/.koolie/core/governance/change-requests/CR-2026-073-nicht-skill-traeger-heben.md +246 -0
- package/.koolie/core/governance/change-requests/CR-2026-074-restliche-nicht-skill-traeger-heben.md +271 -0
- package/.koolie/core/governance/change-requests/CR-2026-075-ap2-zielversion-devin-desktop.md +335 -0
- package/.koolie/core/governance/change-requests/CR-2026-076-erster-sitzungstest.md +455 -0
- package/.koolie/core/governance/change-requests/CR-2026-077-sitzungstest-schranken.md +425 -0
- package/.koolie/core/governance/change-requests/CR-2026-078-planung-nach-1-0-0.md +294 -0
- package/.koolie/core/governance/change-requests/CR-2026-079-umbenennung-vorziehen.md +233 -0
- package/.koolie/core/governance/change-requests/CR-2026-080-clientbindung-des-kerns.md +321 -0
- package/.koolie/core/governance/change-requests/CR-2026-081-produktnamen-im-kern.md +297 -0
- package/.koolie/core/governance/change-requests/CR-2026-082-sitzungstest-pi-ds-2.md +145 -0
- package/.koolie/core/governance/change-requests/CR-2026-083-sitzungstest-ne-sc.md +300 -0
- package/.koolie/core/governance/change-requests/CR-2026-084-trockenlauf-gegen-den-committeten-stand.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-085-vorbedingungen-sitzungstest-5.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-086-grenzfaelle-gegen-die-fassungen.md +164 -0
- package/.koolie/core/governance/change-requests/CR-2026-087-produktbeobachtung-quellenliste.md +206 -0
- package/.koolie/core/governance/change-requests/CR-2026-088-vorbedingungen-testblaetter.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-089-herrichtung-uebungsrepositorium.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-090-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +255 -0
- package/.koolie/core/governance/change-requests/CR-2026-091-sitzungstest-5.md +163 -0
- package/.koolie/core/governance/change-requests/CR-2026-092-pruefmittelwort-und-buendelschnitt.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-093-sechzehnte-praeparation.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-094-testblaetter-buendel-1.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-095-pruefapparat-filter.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-096-vorbedingungen-buendel-2.md +225 -0
- package/.koolie/core/governance/change-requests/CR-2026-097-testblaetter-buendel-2.md +162 -0
- package/.koolie/core/governance/change-requests/CR-2026-098-anforderungen-auslieferung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-099-k74-und-vorbedingungen-buendel-3.md +119 -0
- package/.koolie/core/governance/change-requests/CR-2026-100-testblaetter-buendel-3.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-101-k77-eigener-posten.md +165 -0
- package/.koolie/core/governance/change-requests/CR-2026-102-k77-entschieden.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-103-vorbedingungen-buendel-4.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-104-herrichtung-buendel-4.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-105-messapparat-buendel-4.md +227 -0
- package/.koolie/core/governance/change-requests/CR-2026-106-uebergabe-einchecken.md +91 -0
- package/.koolie/core/governance/change-requests/CR-2026-107-uebergabe-im-release-commit.md +111 -0
- package/.koolie/core/governance/change-requests/CR-2026-108-testblaetter-buendel-4.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-109-berichtsweg-des-aufraeumers.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-110-vorbedingungen-des-nachlaufs.md +184 -0
- package/.koolie/core/governance/change-requests/CR-2026-111-der-apparat-auf-dem-weg-der-wiederaufnahme.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-112-der-arbeitsplatz-im-kern.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-113-nachlauf-buendel-4.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-114-vorbedingungen-buendel-5.md +317 -0
- package/.koolie/core/governance/change-requests/CR-2026-115-herrichtung-buendel-5.md +244 -0
- package/.koolie/core/governance/change-requests/CR-2026-116-messtag-buendel-5.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-117-sammelzellen-zentraler-katalog.md +251 -0
- package/.koolie/core/governance/change-requests/CR-2026-118-quellenzuordnung-matrixzeilen.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-119-umbenennung-koolie.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-120-ap2-rest-devin-desktop.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-121-verify-marker-abschaffen.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-122-umbenennung-koolie-lauf.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-123-vortrag-und-namensabsatz.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-124-hauptdokument-ap11.md +237 -0
- package/.koolie/core/governance/change-requests/CR-2026-125-word-fassung-und-blinder-fleck.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-126-lizenz-gpl3.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-127-gegenzeichnung-rollenfrage.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-128-freigabelauf-1.0.0.md +278 -0
- package/.koolie/core/governance/change-requests/CR-2026-129-archiv-zeilenenden.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-130-reihenfolge-des-hebens.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-131-chronik-und-vorlage.md +194 -0
- package/.koolie/core/governance/change-requests/CR-2026-132-erhebung-openai-codex.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-133-bau-openai-codex.md +97 -0
- package/.koolie/core/governance/change-requests/CR-2026-134-uebergabe-lokal.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-135-pfadlisten-nul-getrennt.md +139 -0
- package/.koolie/core/governance/change-requests/CR-2026-136-overlay-werte-einordnung.md +156 -0
- package/.koolie/core/governance/change-requests/CR-2026-137-kopierweg-kern.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-138-overlay-muster-general.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-139-overlay-muster-dokumente.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-140-installer-je-zielsystem.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-141-lieferumfang.md +123 -0
- package/.koolie/core/governance/change-requests/CR-2026-142-dokumentationsstandard.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-143-klasse-b-core-laufzeit.md +89 -0
- package/.koolie/core/governance/change-requests/CR-2026-144-klasse-b-governance.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-145-klasse-b-skills.md +81 -0
- package/.koolie/core/governance/change-requests/CR-2026-146-code-pack-posten.md +84 -0
- package/.koolie/core/governance/change-requests/CR-2026-147-regel-register-posten.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-148-mehrprojekt-tokenlast.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-149-regelablage-pfadtoken.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-150-client-pack-kiro.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-151-skill-anweisungen.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-152-testblaetter-modellwechsel.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-153-attributionszeile.md +88 -0
- package/.koolie/core/governance/change-requests/CR-2026-154-auffindbarkeit.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-155-client-pack-cursor.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-156-mandat-und-reibung.md +100 -0
- package/.koolie/core/governance/change-requests/CR-2026-157-mcp-anbindung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-158-registerpflege.md +69 -0
- package/.koolie/core/governance/change-requests/CR-2026-159-powershell.md +49 -0
- package/.koolie/core/governance/change-requests/CR-2026-160-messapparat.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-161-pruefwerkzeuge.md +52 -0
- package/.koolie/core/governance/change-requests/CR-2026-162-schutzschicht.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-163-pfadsemantik.md +61 -0
- package/.koolie/core/governance/change-requests/CR-2026-164-modi-ausnahmen.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-165-installer-banner.md +406 -0
- package/.koolie/core/governance/change-requests/CR-2026-166-nachlauf-aufzeichnungen.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-167-einsatzarchitektur.md +60 -0
- package/.koolie/core/governance/change-requests/CR-2026-168-paketquellen.md +64 -0
- package/.koolie/core/governance/change-requests/CR-2026-169-modusbindung-messfragen.md +58 -0
- package/.koolie/core/governance/change-requests/CR-2026-170-erste-veroeffentlichung.md +62 -0
- package/.koolie/core/governance/change-requests/CR-2026-171-befehl-im-projektverzeichnis.md +57 -0
- package/.koolie/core/governance/change-requests/CR-2026-172-auftritt-npm-suche.md +58 -0
- package/.koolie/core/install.py +2402 -0
- package/.koolie/core/install_dialog.py +227 -0
- package/.koolie/core/koexistenz.py +112 -0
- package/.koolie/core/mandat.py +605 -0
- package/.koolie/core/onboarding/COMPLETION_CRITERIA.md +37 -0
- package/.koolie/core/onboarding/GUIDE.md +103 -0
- package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +48 -0
- package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +40 -0
- package/.koolie/core/onboarding/QUICKSTART.md +50 -0
- package/.koolie/core/onboarding/REFERENCE.md +69 -0
- package/.koolie/core/onboarding/exercises/EXERCISES.md +78 -0
- package/.koolie/core/onboarding/exercises/README.md +120 -0
- package/.koolie/core/pilot/METRICS.md +59 -0
- package/.koolie/core/pilot/PILOT_CONCEPT.md +42 -0
- package/.koolie/core/prompts/01-understand-codebase.md +99 -0
- package/.koolie/core/prompts/02-impact-analysis.md +104 -0
- package/.koolie/core/prompts/03-implementation-planning.md +102 -0
- package/.koolie/core/prompts/04-code-generation.md +100 -0
- package/.koolie/core/prompts/05-test-generation.md +103 -0
- package/.koolie/core/prompts/06-refactoring.md +102 -0
- package/.koolie/core/prompts/07-debugging.md +97 -0
- package/.koolie/core/prompts/08-security-review.md +92 -0
- package/.koolie/core/prompts/09-performance-analysis.md +89 -0
- package/.koolie/core/prompts/10-documentation.md +91 -0
- package/.koolie/core/prompts/11-merge-request-review.md +94 -0
- package/.koolie/core/prompts/12-developer-training.md +90 -0
- package/.koolie/core/prompts/README.md +88 -0
- package/.koolie/core/templates/MR_AI_DISCLOSURE.md +37 -0
- package/.koolie/core/templates/PLAN_TEMPLATE.md +57 -0
- package/.koolie/core/templates/SKILL_TEMPLATE.md +159 -0
- package/.koolie/core/templates/project-overlay/OVERLAY.md +315 -0
- package/.koolie/core/templates/project-overlay/documents/README.md +43 -0
- package/.koolie/core/templates/project-overlay/documents/ai-governance/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/ai-process-model/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/branching-strategy/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/coding-guidelines/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-done/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-ready/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/deployment/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/glossary/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/quality/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roadmap/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roles/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/security/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/exceptions/EXCEPTIONS.md +9 -0
- package/.koolie/core/templates/project-overlay/forbidden-terms.txt +8 -0
- package/.koolie/core/templates/project-overlay/overlay-manifest.yaml +73 -0
- package/.koolie/core/templates/rules/21-overlay-TEMPLATE.md.template +28 -0
- package/.koolie/core/templates/rules/40-tech-TEMPLATE.md.template +33 -0
- package/.koolie/core/tests/EDGE_CASES.md +67 -0
- package/.koolie/core/tests/TEST_CATALOG.md +170 -0
- package/.koolie/core/tests/erhebungen/README.md +326 -0
- package/.koolie/core/tests/erhebungen/ablage.py +357 -0
- package/.koolie/core/tests/erhebungen/apparat/__init__.py +22 -0
- package/.koolie/core/tests/erhebungen/apparat/baum.py +214 -0
- package/.koolie/core/tests/erhebungen/apparat/belege.py +91 -0
- package/.koolie/core/tests/erhebungen/apparat/clients.py +321 -0
- package/.koolie/core/tests/erhebungen/apparat/freigabe.py +74 -0
- package/.koolie/core/tests/erhebungen/apparat/kontingent.py +64 -0
- package/.koolie/core/tests/erhebungen/apparat/laeufer.py +155 -0
- package/.koolie/core/tests/erhebungen/apparat/reihe.py +202 -0
- package/.koolie/core/tests/erhebungen/apparat/selbsttest.py +280 -0
- package/.koolie/core/tests/erhebungen/apparat/stand.py +30 -0
- package/.koolie/core/tests/erhebungen/apparat/vorpruefung.py +70 -0
- package/.koolie/core/tests/erhebungen/auswerten-b4.py +468 -0
- package/.koolie/core/tests/erhebungen/auswerten-b5.py +517 -0
- package/.koolie/core/tests/erhebungen/auswerten-dd.py +172 -0
- package/.koolie/core/tests/erhebungen/baeume-b4.py +334 -0
- package/.koolie/core/tests/erhebungen/baeume-b5.py +339 -0
- package/.koolie/core/tests/erhebungen/baeume_loeschen.py +138 -0
- package/.koolie/core/tests/erhebungen/cc-overlay-fuellen.py +277 -0
- package/.koolie/core/tests/erhebungen/dossier-b4.py +178 -0
- package/.koolie/core/tests/erhebungen/dossier-b5.py +202 -0
- package/.koolie/core/tests/erhebungen/historie-bauen-b4.py +642 -0
- package/.koolie/core/tests/erhebungen/k-bauen-b3.py +841 -0
- package/.koolie/core/tests/erhebungen/lauf-dd.py +146 -0
- package/.koolie/core/tests/erhebungen/lauf.py +114 -0
- package/.koolie/core/tests/erhebungen/mcp-waechter.py +278 -0
- package/.koolie/core/tests/erhebungen/messbaum-schnitt.py +256 -0
- package/.koolie/core/tests/erhebungen/messen.py +72 -0
- package/.koolie/core/tests/erhebungen/node-waechter.py +74 -0
- package/.koolie/core/tests/erhebungen/packaktivierung.py +403 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b4.py +210 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b5.py +251 -0
- package/.koolie/core/tests/erhebungen/reihe-b4.py +171 -0
- package/.koolie/core/tests/erhebungen/reihe-b5.py +172 -0
- package/.koolie/core/tests/erhebungen/stand-b4.py +135 -0
- package/.koolie/core/tests/erhebungen/stand-b5.py +137 -0
- package/.koolie/core/tests/erhebungen/trust-b4.py +56 -0
- package/.koolie/core/tests/erhebungen/trust-b5.py +56 -0
- package/.koolie/core/tests/erhebungen/turn2-schreiben-b4.py +105 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b4.py +377 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b5.py +363 -0
- package/.koolie/core/tests/erhebungen/zaehlen46.py +74 -0
- package/.koolie/core/tests/erhebungen/zustand-b4.py +82 -0
- package/.koolie/core/tests/erhebungen/zustand-b5.py +82 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code-wirkungsnachweise.md +194 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code.md +468 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-020-akteursbezeichnung.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-021-hook-interpreter.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-022-artefaktversionen.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-023-shell-lesesperre.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-024-clientbindungen.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-DS-03.md +90 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-01.md +105 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-02.md +123 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-04.md +73 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-RE-02.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01-wiederholung.md +108 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01.md +249 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-ZA-05.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-11-AP2-devin-desktop.md +257 -0
- package/.koolie/core/tests/protocols/2026-09-11-CR-2026-026-fail-closed.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-11-erhebungen-K21-K26.md +243 -0
- package/.koolie/core/tests/protocols/2026-09-11-wirkungsnachweise-0.26.0.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-12-B01-allowed-tools.md +152 -0
- package/.koolie/core/tests/protocols/2026-09-12-B04-B05-gegenpruefung.md +204 -0
- package/.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md +268 -0
- package/.koolie/core/tests/protocols/2026-09-12-mehrprojekt-arbeitsbereich.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.26.1.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.27.0.md +114 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.28.0.md +129 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.29.0.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.30.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.31.0.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-13-B06-gegenpruefung.md +370 -0
- package/.koolie/core/tests/protocols/2026-09-13-B07-B09-gegenpruefung.md +211 -0
- package/.koolie/core/tests/protocols/2026-09-13-B08-B11-gegenpruefung.md +179 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-disallowed-tools.md +147 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent-tiefe.md +139 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-berechtigungsdatei.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-stumme-brueche.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-werkzeugabbildung.md +219 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.32.0.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.33.0.md +169 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.34.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.35.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.36.0.md +137 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.37.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.38.0.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.39.0.md +188 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.40.0.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md +267 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-skillaufruf.md +238 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-pruefregister.md +156 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-schlitzdeckung.md +206 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-skillwahl.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-14-migrationslauf-pilot.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.41.0.md +175 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.42.0.md +180 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.43.0.md +165 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.44.0.md +130 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-d11-zaehlregeln.md +311 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-modulstatus.md +524 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-nicht-skill-traeger.md +225 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-restliche-nicht-skill-traeger.md +345 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-strukturentscheidungen.md +392 -0
- package/.koolie/core/tests/protocols/2026-09-15-herrichtung-uebungsrepositorium.md +213 -0
- package/.koolie/core/tests/protocols/2026-09-15-migrationslauf-pilot-0.46.0.md +143 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.45.0.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.46.0.md +193 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.47.0.md +149 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.49.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.50.0.md +183 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.51.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.52.0.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-16-wirkungsnachweise-0.53.0.md +350 -0
- package/.koolie/core/tests/protocols/2026-09-17-nachtrag-migrationshinweis-0.54.1.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-pi-ds.md +523 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-schranken.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-17-wirkungsnachweise-0.54.0.md +159 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-AK-01.md +442 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-KO-05.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-18-herrichtung-uebungsrepositorium.md +273 -0
- package/.koolie/core/tests/protocols/2026-09-18-nachtrag-preis-umbenennung-0.56.1.md +102 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-5.md +349 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-ne-sc.md +430 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-pi-ds-2.md +499 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +170 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-testblaetter.md +184 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.55.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.2.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.0.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.1.md +262 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.58.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.59.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.60.0.md +340 -0
- package/.koolie/core/tests/protocols/2026-09-19-herrichtung-buendel-4.md +235 -0
- package/.koolie/core/tests/protocols/2026-09-19-k77-zurechenbarkeit.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefapparat-filter.md +50 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefmittelwort-und-buendelschnitt.md +239 -0
- package/.koolie/core/tests/protocols/2026-09-19-sechzehnte-praeparation.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-1.md +250 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-2.md +229 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md +293 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-2.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-3.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-4.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-20-messapparat-buendel-4.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-20-testblaetter-buendel-4.md +321 -0
- package/.koolie/core/tests/protocols/2026-09-20-uebergabe-im-release-commit.md +146 -0
- package/.koolie/core/tests/protocols/2026-09-20-vorbedingungen-nachlauf-b4.md +259 -0
- package/.koolie/core/tests/protocols/2026-09-21-arbeitsplatz-im-kern.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-21-nachlauf-buendel-4.md +157 -0
- package/.koolie/core/tests/protocols/2026-09-21-vorbedingungen-buendel-5.md +247 -0
- package/.koolie/core/tests/protocols/2026-09-21-wiederaufnahme-nachlauf-b4.md +190 -0
- package/.koolie/core/tests/protocols/2026-09-22-ap2-rest-devin-desktop.md +614 -0
- package/.koolie/core/tests/protocols/2026-09-22-hauptdokument-ap11.md +443 -0
- package/.koolie/core/tests/protocols/2026-09-22-herrichtung-buendel-5.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-22-messtag-buendel-5.md +327 -0
- package/.koolie/core/tests/protocols/2026-09-22-quellenzuordnung-matrixzeilen.md +230 -0
- package/.koolie/core/tests/protocols/2026-09-22-sammelzellen-zentraler-katalog.md +354 -0
- package/.koolie/core/tests/protocols/2026-09-22-umbenennung-koolie.md +296 -0
- package/.koolie/core/tests/protocols/2026-09-22-verify-marker-abschaffen.md +283 -0
- package/.koolie/core/tests/protocols/2026-09-22-vortrag-und-name.md +261 -0
- package/.koolie/core/tests/protocols/2026-09-22-wirkungsnachweise-0.86.0.md +158 -0
- package/.koolie/core/tests/protocols/2026-09-23-archiv-zeilenenden.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-23-bau-openai-codex.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-23-chronik-und-vorlage.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-23-erhebung-openai-codex.md +309 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0-vorbereitung.md +119 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-23-gegenzeichnung-rollenfrage.md +198 -0
- package/.koolie/core/tests/protocols/2026-09-23-reihenfolge-des-hebens.md +220 -0
- package/.koolie/core/tests/protocols/2026-09-23-word-fassung-und-blinder-fleck.md +307 -0
- package/.koolie/core/tests/protocols/2026-09-24-kopierweg-kern.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-24-overlay-werte-einordnung.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-24-pfadlisten-nul-getrennt.md +128 -0
- package/.koolie/core/tests/protocols/2026-09-24-uebergabe-lokal.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-25-code-pack-posten.md +86 -0
- package/.koolie/core/tests/protocols/2026-09-25-dokumentationsstandard.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-25-installer-je-zielsystem.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-core-laufzeit.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-governance.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-skills.md +91 -0
- package/.koolie/core/tests/protocols/2026-09-25-lieferumfang.md +76 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-dokumente.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-general.md +100 -0
- package/.koolie/core/tests/protocols/2026-09-25-regel-register-posten.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-26-attributionszeile.md +83 -0
- package/.koolie/core/tests/protocols/2026-09-26-auffindbarkeit.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-cursor.md +68 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-kiro.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md +174 -0
- package/.koolie/core/tests/protocols/2026-09-26-regelablage-pfadtoken.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-26-skill-anweisungen.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-26-testblaetter-modellwechsel.md +106 -0
- package/.koolie/core/tests/protocols/2026-09-27-mandat-und-reibung.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-28-mcp-anbindung.md +72 -0
- package/.koolie/core/tests/protocols/2026-09-29-messapparat.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-29-powershell.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-29-pruefwerkzeuge.md +64 -0
- package/.koolie/core/tests/protocols/2026-09-29-registerpflege.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-29-schutzschicht.md +95 -0
- package/.koolie/core/tests/protocols/2026-09-30-einsatzarchitektur.md +104 -0
- package/.koolie/core/tests/protocols/2026-09-30-modi-ausnahmen.md +77 -0
- package/.koolie/core/tests/protocols/2026-09-30-nachlauf-banner.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-30-paketquellen.md +65 -0
- package/.koolie/core/tests/protocols/2026-09-30-pfadsemantik.md +79 -0
- package/.koolie/core/tests/protocols/2026-10-01-auftritt-und-suche.md +58 -0
- package/.koolie/core/tests/protocols/2026-10-01-befehl-im-projektverzeichnis.md +47 -0
- package/.koolie/core/tests/protocols/2026-10-01-erste-veroeffentlichung.md +60 -0
- package/.koolie/core/tests/protocols/2026-10-01-modusbindung-messfragen.md +107 -0
- package/.koolie/core/tests/protocols/README.md +14 -0
- package/.koolie/core/tests/scripts/hook-check-secrets.py +1307 -0
- package/.koolie/core/tests/scripts/hook-overlay-status.py +120 -0
- package/.koolie/core/tests/scripts/mermaid_renderer.py +67 -0
- package/.koolie/core/tests/scripts/overlay_status.py +130 -0
- package/.koolie/core/tests/scripts/probe-pruefungen.py +110 -0
- package/.koolie/core/tests/scripts/pruefungen/__init__.py +4 -0
- package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +1559 -0
- package/.koolie/core/tests/scripts/pruefungen/bestand.py +1433 -0
- package/.koolie/core/tests/scripts/pruefungen/dokumente.py +1262 -0
- package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +784 -0
- package/.koolie/core/tests/scripts/pruefungen/hooks.py +1188 -0
- package/.koolie/core/tests/scripts/pruefungen/overlay.py +1251 -0
- package/.koolie/core/tests/scripts/pruefungen/packs.py +1314 -0
- package/.koolie/core/tests/scripts/pruefungen/register.py +950 -0
- package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +1202 -0
- package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +957 -0
- package/.koolie/core/tests/scripts/sonden/__init__.py +4 -0
- package/.koolie/core/tests/scripts/sonden/apparat.py +653 -0
- package/.koolie/core/tests/scripts/sonden/teil01_grundbestand_und_installation.py +999 -0
- package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +942 -0
- package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +1184 -0
- package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +1491 -0
- package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +1447 -0
- package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +739 -0
- package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +1014 -0
- package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +1325 -0
- package/.koolie/core/tests/scripts/sonden/teil09_pruefmittel_81_und_82.py +505 -0
- package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +1218 -0
- package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +149 -0
- package/.koolie/core/tests/scripts/sonden/teil12_pruefungen_106_und_107.py +136 -0
- package/.koolie/core/tests/scripts/sonden/teil13_pfad_und_mustersemantik.py +150 -0
- package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +204 -0
- package/.koolie/core/tests/scripts/sonden/teil15_banner_und_nachlauf.py +193 -0
- package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +114 -0
- package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +115 -0
- package/.koolie/core/tests/scripts/sonden/teil18_modusbindung_m3_m5.py +113 -0
- package/.koolie/core/tests/scripts/validate-framework.py +1104 -0
- package/.koolie/core/tests/scripts/validate-output.py +296 -0
- package/.koolie/core/wirksamkeit.py +430 -0
- package/CONTRIBUTING.md +119 -0
- package/LICENSE +674 -0
- package/QUICKSTART.en.md +135 -0
- package/QUICKSTART.md +129 -0
- package/README.en.md +108 -0
- package/README.md +107 -0
- package/install.cmd +44 -0
- package/install.command +46 -0
- package/package.json +21 -0
- package/paketquellen/README.md +41 -0
- package/paketquellen/bauen.py +411 -0
- package/paketquellen/koolie.cmd +23 -0
- package/paketquellen/koolie_befehl.py +82 -0
- package/paketquellen/npm/koolie.js +26 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Framework-Hook: SessionStart - Overlay-Status als Zusatzkontext melden.
|
|
4
|
+
|
|
5
|
+
Status: entwurf. Hook-Mechanismus [DOK]; Ausgabeschema "hookSpecificOutput.additionalContext"
|
|
6
|
+
laut Dokumentation [DOK]. Was die Nutzlast im einzelnen traegt, ist nicht
|
|
7
|
+
dokumentiert - dieselbe benannte Grenze wie bei Zeile R5 der Faehigkeitsmatrix.
|
|
8
|
+
|
|
9
|
+
Aufruf:
|
|
10
|
+
|
|
11
|
+
hook-overlay-status.py <projektverzeichnis> <regelablage>
|
|
12
|
+
|
|
13
|
+
Beide Werte kommen aus der Semantikabbildung des Client Packs: das Projektverzeichnis aus
|
|
14
|
+
hook_project_dir_var, die Regelablage aus runtime_placeholders["<RULES_DIR>"]. Der Kern
|
|
15
|
+
nennt weder die eine Variable noch den einen Pfad - er ist werkzeugneutral (D-02, D-30).
|
|
16
|
+
|
|
17
|
+
Warum als Argumente und nicht ueber die Umgebung: Der Wert steht damit in dem Kommando,
|
|
18
|
+
das der Client ohnehin ausfuehrt. Ob ein Client Umgebungsvariablen an den Hook-Prozess
|
|
19
|
+
weiterreicht, ist fuer kein Pack belegt - dieselbe Begruendung, aus der D-31 den Schalter
|
|
20
|
+
--fail-closed ins Kommando gelegt hat.
|
|
21
|
+
|
|
22
|
+
Ohne Argumente bleibt ein Notweg: das Arbeitsverzeichnis und ausschliesslich
|
|
23
|
+
.koolie/project-overlay/OVERLAY.md. Der Notweg ist nicht der vorgesehene Pfad. Ob das
|
|
24
|
+
Arbeitsverzeichnis beim Sitzungsstart das Projektverzeichnis ist, ist unbelegt, und ohne
|
|
25
|
+
Regelablage entfaellt der zweite Kandidat - die gerenderte Overlay-Regeldatei traegt den
|
|
26
|
+
Status ebenso wie das Overlay selbst.
|
|
27
|
+
|
|
28
|
+
Seit 0.33.0 wertet dieser Hook **alle** lesbaren Traeger aus, nicht den ersten mit Treffer,
|
|
29
|
+
und er benutzt dafuer dieselbe Funktion wie der Validator (overlay_status.py). Vorher
|
|
30
|
+
hatte er drei Defekte, alle drei gemessen (B08): Er verglich als Praefix - 'aktivierung-
|
|
31
|
+
ausstehend' galt damit als aktiv, genau der Wert, den D-44 im Validator ausgeschlossen hat;
|
|
32
|
+
sein Suchmuster verlangte einen Doppelpunkt und traf damit die Steckbriefzeile
|
|
33
|
+
'| Overlay-Status | ... |' nie; und er brach beim ersten Treffer ab, sodass eine aktive
|
|
34
|
+
Laufzeitregel gegen ein inaktives Quell-Overlay gewann. Ein Widerspruch wird jetzt als
|
|
35
|
+
solcher gemeldet, nicht als 'inaktiv' - die Folge ist dieselbe, der Grund nicht.
|
|
36
|
+
|
|
37
|
+
Das Skript blockiert nie; es informiert.
|
|
38
|
+
"""
|
|
39
|
+
import json
|
|
40
|
+
import os
|
|
41
|
+
import sys
|
|
42
|
+
|
|
43
|
+
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
44
|
+
from overlay_status import (AKTIV, auswerten, status_angaben, # noqa: E402
|
|
45
|
+
version_angaben, versionen_auswerten)
|
|
46
|
+
|
|
47
|
+
argumente = [a for a in sys.argv[1:] if not a.startswith("-")]
|
|
48
|
+
root = argumente[0] if argumente else os.getcwd()
|
|
49
|
+
regelablage = argumente[1] if len(argumente) > 1 else None
|
|
50
|
+
|
|
51
|
+
candidates = []
|
|
52
|
+
if regelablage:
|
|
53
|
+
# Die Laufzeitregel heisst bei cursor 20-project-overlay.mdc (CR-2026-155): Der
|
|
54
|
+
# Client laedt nur diese Endung. Das Skript kennt kein Manifest und nimmt die
|
|
55
|
+
# Datei, die in der Regelablage liegt.
|
|
56
|
+
for endung in (".md", ".mdc"):
|
|
57
|
+
kandidat = os.path.join(root, *regelablage.replace("\\", "/").split("/"),
|
|
58
|
+
"20-project-overlay" + endung)
|
|
59
|
+
if os.path.exists(kandidat) or endung == ".md":
|
|
60
|
+
candidates.append(kandidat)
|
|
61
|
+
candidates.append(os.path.join(root, ".koolie/project-overlay", "OVERLAY.md"))
|
|
62
|
+
|
|
63
|
+
# Alle lesbaren Traeger, nicht der erste mit Treffer: Zwei Dateien, die verschiedene
|
|
64
|
+
# Staende erklaeren, sind der Befund - nicht eine Fundstelle, die man auswaehlt.
|
|
65
|
+
angaben = []
|
|
66
|
+
versionen = []
|
|
67
|
+
gelesen = []
|
|
68
|
+
for path in candidates:
|
|
69
|
+
try:
|
|
70
|
+
with open(path, encoding="utf-8") as fh:
|
|
71
|
+
text = fh.read()
|
|
72
|
+
except OSError:
|
|
73
|
+
continue
|
|
74
|
+
gelesen.append(os.path.relpath(path, root).replace(os.sep, "/"))
|
|
75
|
+
angaben.extend(status_angaben(text))
|
|
76
|
+
versionen.extend(version_angaben(text))
|
|
77
|
+
|
|
78
|
+
status, begruendung = auswerten(angaben)
|
|
79
|
+
|
|
80
|
+
version = "unbekannt"
|
|
81
|
+
try:
|
|
82
|
+
with open(os.path.join(root, ".koolie/core", "VERSION"), encoding="utf-8") as fh:
|
|
83
|
+
version = fh.read().strip()
|
|
84
|
+
except OSError:
|
|
85
|
+
pass
|
|
86
|
+
|
|
87
|
+
herkunft = ("gelesen: " + ", ".join(gelesen)) if gelesen else "keine Overlay-Datei lesbar"
|
|
88
|
+
context = (
|
|
89
|
+
f"Framework-Statusmeldung: Framework-Version {version}; "
|
|
90
|
+
f"Project-Overlay-Status: {status} ({begruendung}; {herkunft}). "
|
|
91
|
+
+ ("" if status == AKTIV else
|
|
92
|
+
"Da das Overlay nicht als aktiv erklaert ist, arbeite ausschliesslich im Modus M1 "
|
|
93
|
+
"Read-only Analysis und weise die Nutzerin oder den Nutzer darauf hin "
|
|
94
|
+
"(Wurzel-Anweisungsdatei, Abschnitt 3) - ausgenommen M6 mit Mandat, um das "
|
|
95
|
+
"Overlay einzurichten (Skill fw-overlay-pflege).")
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
# Seit 1.17.0 (CR-2026-156, D-452): der Versionswiderspruch und das Mandat. Beide nennen,
|
|
99
|
+
# was zu tun ist - der Blockade-Hinweis gilt auch fuer eine Meldung, die nichts sperrt.
|
|
100
|
+
befund_version = versionen_auswerten(versionen)
|
|
101
|
+
if befund_version:
|
|
102
|
+
context += (" Overlay-Version: " + befund_version + ". Weise darauf hin und nenne den "
|
|
103
|
+
"Weg: den Wert im Steckbrief von OVERLAY.md berichtigen (M6) und danach "
|
|
104
|
+
"'python .koolie/core/mandat.py abgleichen' im eigenen Terminal.")
|
|
105
|
+
try:
|
|
106
|
+
sys.path.insert(0, os.path.join(root, ".koolie", "core"))
|
|
107
|
+
import mandat # noqa: E402
|
|
108
|
+
if os.path.normcase(mandat.PROJEKTWURZEL) == os.path.normcase(os.path.realpath(root)):
|
|
109
|
+
aktiv = mandat.gueltiges_mandat()
|
|
110
|
+
if aktiv:
|
|
111
|
+
context += (" Mandat fuer M6 aktiv: Rolle %s, Umfang %s, noch %d Minuten - du "
|
|
112
|
+
"darfst Entscheidungen des Menschen in diesen Teil des Overlays "
|
|
113
|
+
"eintragen." % (aktiv["rolle"], ", ".join(aktiv["umfang"]),
|
|
114
|
+
aktiv["_rest_min"]))
|
|
115
|
+
except Exception: # noqa: BLE001 - der Hook informiert nur und darf nie scheitern
|
|
116
|
+
pass
|
|
117
|
+
|
|
118
|
+
print(json.dumps({"hookSpecificOutput": {"hookEventName": "SessionStart",
|
|
119
|
+
"additionalContext": context}}, ensure_ascii=False))
|
|
120
|
+
sys.exit(0)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Gemeinsamer Aufruf des Mermaid-Renderers - fuer den Validator und die Word-Fassung.
|
|
4
|
+
|
|
5
|
+
Warum dieses Modul existiert (K-145, D-398): Der Bau (`build/build-docx.py`) uebergab dem
|
|
6
|
+
Renderer `mmdc` eine Puppeteer-Konfiguration mit einem gefundenen Browser, der Validator
|
|
7
|
+
(`validate-framework.py --mermaid`) nicht. Auf einem Arbeitsplatz ohne den Browser, den
|
|
8
|
+
Puppeteer selbst herunterlaedt, meldete der Validator deshalb JEDEN Mermaid-Block als
|
|
9
|
+
ungueltig - auch unveraenderte -, waehrend der Bau im selben Arbeitsgang alle Diagramme
|
|
10
|
+
renderte. Gemessen am 2026-09-25: ohne die Konfiguration "Could not find
|
|
11
|
+
chrome-headless-shell", mit ihr gerendert. Beide Werkzeuge suchen den Browser jetzt hier.
|
|
12
|
+
|
|
13
|
+
Das Modul hat keine Abhaengigkeit ausser der Standardbibliothek, weil der Validator auch
|
|
14
|
+
in einer Installation ohne `build/` laeuft (Lieferumfang `nutzung`, D-367).
|
|
15
|
+
|
|
16
|
+
WAS DIESES MODUL NICHT LEISTET: Es unterscheidet einen Fehler der Umgebung von einem Fehler
|
|
17
|
+
des Diagramms nur an der Fehlerausgabe des Renderers. Eine Meldung, die es nicht kennt,
|
|
18
|
+
gilt als Fehler des Diagramms - die strengere Lesart.
|
|
19
|
+
"""
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
import json
|
|
23
|
+
import os
|
|
24
|
+
import re
|
|
25
|
+
|
|
26
|
+
# Meldungen, mit denen der Renderer sagt, dass ihm der Browser fehlt oder nicht startet.
|
|
27
|
+
# Sie betreffen den Arbeitsplatz, nicht das Diagramm.
|
|
28
|
+
UMGEBUNGSFEHLER_RE = re.compile(
|
|
29
|
+
r"Could not find (?:Chrome|Chromium|chrome-headless-shell|expected browser)"
|
|
30
|
+
r"|Failed to launch the browser process"
|
|
31
|
+
r"|Browser was not found",
|
|
32
|
+
re.I)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def browserpfad() -> str | None:
|
|
36
|
+
"""Ein Chromium-artiger Browser fuer den Mermaid-Renderer - oder None.
|
|
37
|
+
|
|
38
|
+
Zuerst die ausdrueckliche Angabe der Umgebung, dann die ueblichen Ablageorte. Auf
|
|
39
|
+
einem Windows-Arbeitsplatz ist Edge immer vorhanden; einen eigenen Chromium
|
|
40
|
+
herunterzuladen ist damit unnoetig.
|
|
41
|
+
"""
|
|
42
|
+
gesetzt = os.environ.get("PUPPETEER_EXECUTABLE_PATH")
|
|
43
|
+
if gesetzt and os.path.exists(gesetzt):
|
|
44
|
+
return gesetzt
|
|
45
|
+
kandidaten = [
|
|
46
|
+
r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe",
|
|
47
|
+
r"C:\Program Files\Microsoft\Edge\Application\msedge.exe",
|
|
48
|
+
r"C:\Program Files\Google\Chrome\Application\chrome.exe",
|
|
49
|
+
"/usr/bin/chromium", "/usr/bin/chromium-browser", "/usr/bin/google-chrome",
|
|
50
|
+
]
|
|
51
|
+
for pfad in kandidaten:
|
|
52
|
+
if os.path.exists(pfad):
|
|
53
|
+
return pfad
|
|
54
|
+
return None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def puppeteer_konfiguration(pfad: str, browser: str) -> str:
|
|
58
|
+
"""Schreibt die Konfiguration, die `mmdc -p` liest, und gibt ihren Pfad zurueck."""
|
|
59
|
+
with open(pfad, "w", encoding="utf-8") as fh:
|
|
60
|
+
json.dump({"executablePath": browser,
|
|
61
|
+
"args": ["--no-sandbox", "--disable-gpu"]}, fh)
|
|
62
|
+
return pfad
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def ist_umgebungsfehler(fehlerausgabe: str) -> bool:
|
|
66
|
+
"""True, wenn der Renderer an der Umgebung gescheitert ist und nicht am Diagramm."""
|
|
67
|
+
return bool(UMGEBUNGSFEHLER_RE.search(fehlerausgabe or ""))
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Gemeinsame Auswertung des Overlay-Status - fuer Validator und Status-Hook.
|
|
4
|
+
|
|
5
|
+
Status: entwurf.
|
|
6
|
+
|
|
7
|
+
Warum dieses Modul existiert: Der Status stand in zwei Werkzeugen und wurde zweimal
|
|
8
|
+
verschieden ausgewertet. Der Validator vergleicht seit 0.28.0 **exakt** auf 'aktiv', weil
|
|
9
|
+
ein Praefixvergleich den Wert 'aktivierung-ausstehend' als Aktivierung durchliess (B02,
|
|
10
|
+
D-44) - ein Wert, der woertlich sagt, dass die Aktivierung aussteht. Der Hook prueft
|
|
11
|
+
weiterhin als Praefix, kennt die Steckbriefzeile nicht und nimmt die erste Datei mit
|
|
12
|
+
Treffer. Die Lehre war gezogen, aber nur in einer der beiden Funktionen; dasselbe Muster
|
|
13
|
+
wie bei D-49.
|
|
14
|
+
|
|
15
|
+
Der Hook importiert dieses Modul, **nicht** den Validator: Ein Hook, der bei jedem
|
|
16
|
+
Sitzungsstart ein 2300-Zeilen-Skript laedt, waere ein Leistungs- und ein Fehlerrisiko, und
|
|
17
|
+
er wuerde dessen Abhaengigkeiten mitschleppen. Dieses Modul hat keine Abhaengigkeit ausser
|
|
18
|
+
're'.
|
|
19
|
+
|
|
20
|
+
WAS DIESES MODUL NICHT LEISTET: Es liest Erklaerungen, es prueft keine Wirkung. Dass ein
|
|
21
|
+
Overlay 'aktiv' erklaert, heisst nicht, dass der Client seine Regeln laedt - das ist
|
|
22
|
+
Gegenstand der Fachmatrix des jeweiligen Client Packs, nicht einer Textauswertung.
|
|
23
|
+
"""
|
|
24
|
+
from __future__ import annotations
|
|
25
|
+
|
|
26
|
+
import re
|
|
27
|
+
|
|
28
|
+
# Die beiden Schreibweisen, in denen eine Overlay-Datei ihren Status *erklaert*: als Zeile
|
|
29
|
+
# im Steckbrief (Tabelle) und als Aussage im Aktivierungsabschnitt (Liste). Beide nur am
|
|
30
|
+
# Zeilenanfang - eine Erwaehnung im Fliesstext oder in einem Ausnahmeregister ist keine
|
|
31
|
+
# Erklaerung. Der Hook suchte bisher ohne Anker und ohne die Tabellenform; damit traf er
|
|
32
|
+
# die Steckbriefzeile nie, weil dort kein Doppelpunkt steht.
|
|
33
|
+
_TABELLE_RE = re.compile(r"^\|\s*Overlay-Status\s*\|\s*`?([^`|]+)", re.M)
|
|
34
|
+
_LISTE_RE = re.compile(r"^-?\s*Overlay-Status:\s*`?([^`\n]+)", re.M)
|
|
35
|
+
# Die Version, in denselben zwei Formen wie der Validator sie liest (Pruefung 13). Seit
|
|
36
|
+
# 1.17.0 meldet der SessionStart-Hook einen Widerspruch sofort (CR-2026-156, D-452):
|
|
37
|
+
# Im ersten Projekteinsatz stand an der Stelle der Version eine Zeile des
|
|
38
|
+
# Aenderungsverlaufs, und die Statusmeldung der Sitzung sagte "aktiv" - der Schaden blieb
|
|
39
|
+
# unsichtbar, bis jemand den Validator startete (Befund A3).
|
|
40
|
+
_VERSION_TABELLE_RE = re.compile(r"^\|\s*Overlay-Version\s*\|\s*`?([^`|]+)", re.M)
|
|
41
|
+
_VERSION_LISTE_RE = re.compile(r"^-?\s*Overlay-Version:\s*`?([^`\n·]+)", re.M)
|
|
42
|
+
_SEMVER_RE = re.compile(r"^\d+\.\d+\.\d+$")
|
|
43
|
+
|
|
44
|
+
# Zulaessige Statuswerte. Alles andere ist 'unbekannt' - auch ein nicht ausgefuellter
|
|
45
|
+
# Platzhalter, und das ist der haeufigste Fall in einer frischen Installation.
|
|
46
|
+
AKTIV = "aktiv"
|
|
47
|
+
INAKTIV = "inaktiv"
|
|
48
|
+
UNBEKANNT = "unbekannt"
|
|
49
|
+
# ASCII-Umschrift wie im uebrigen Skripttext: Der Wert erscheint in der Hook-Meldung, und
|
|
50
|
+
# die Nachbarsaetze dort sind ebenso geschrieben.
|
|
51
|
+
WIDERSPRUECHLICH = "widerspruechlich"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def status_angaben(text: str) -> list[str]:
|
|
55
|
+
"""Alle Stellen, an denen ein Text den Overlay-Status erklaert - in Lesereihenfolge."""
|
|
56
|
+
werte = []
|
|
57
|
+
for regex in (_TABELLE_RE, _LISTE_RE):
|
|
58
|
+
for m in regex.finditer(text):
|
|
59
|
+
werte.append(m.group(1).strip())
|
|
60
|
+
return werte
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def version_angaben(text: str) -> list[str]:
|
|
64
|
+
"""Alle Stellen, an denen ein Text die Overlay-Version erklaert."""
|
|
65
|
+
werte = []
|
|
66
|
+
for regex in (_VERSION_TABELLE_RE, _VERSION_LISTE_RE):
|
|
67
|
+
for m in regex.finditer(text):
|
|
68
|
+
werte.append(m.group(1).strip())
|
|
69
|
+
return werte
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def versionen_auswerten(angaben: list[str]) -> str:
|
|
73
|
+
"""Leerer Text, wenn die Versionsangaben uebereinstimmen - sonst der Befund.
|
|
74
|
+
|
|
75
|
+
Ein offener Platzhalter (<TBD: ...>) ist kein Befund: Er ist der Stand vor dem
|
|
76
|
+
Ausfuellen und Sache der Aktivierungspruefung.
|
|
77
|
+
"""
|
|
78
|
+
werte = [a for a in angaben if not a.startswith("<")]
|
|
79
|
+
if not werte:
|
|
80
|
+
return ""
|
|
81
|
+
ungueltig = [w for w in werte if not _SEMVER_RE.match(w)]
|
|
82
|
+
if ungueltig:
|
|
83
|
+
return "keine Version der Form x.y.z: '%s'" % ungueltig[0][:60]
|
|
84
|
+
if len(set(werte)) > 1:
|
|
85
|
+
return "die Versionsangaben widersprechen sich: " + ", ".join(sorted(set(werte)))
|
|
86
|
+
return ""
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def normalisieren(wert: str) -> str:
|
|
90
|
+
"""Ein einzelner erklaerter Wert, auf einen der vier Statuswerte abgebildet.
|
|
91
|
+
|
|
92
|
+
Exakter Vergleich, kein Praefix: 'aktivierung-ausstehend' ist keine Aktivierung
|
|
93
|
+
(D-44). Auszeichnungen und Anfuehrungszeichen fallen weg, der Wortlaut nicht.
|
|
94
|
+
"""
|
|
95
|
+
w = wert.strip().strip("`*_ ").strip().lower()
|
|
96
|
+
if w == AKTIV:
|
|
97
|
+
return AKTIV
|
|
98
|
+
if w == INAKTIV:
|
|
99
|
+
return INAKTIV
|
|
100
|
+
return UNBEKANNT
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def auswerten(angaben: list[str]) -> tuple[str, str]:
|
|
104
|
+
"""Gesamtstatus aus allen Erklaerungen. Rueckgabe: (status, begruendung).
|
|
105
|
+
|
|
106
|
+
Regeln, und jede hat einen Befund hinter sich:
|
|
107
|
+
|
|
108
|
+
* **Keine Erklaerung** -> 'unbekannt'. Eine fehlende Angabe ist keine Inaktivitaet;
|
|
109
|
+
sie ist eine unvollstaendige Konfiguration, und der Unterschied gehoert in die
|
|
110
|
+
Meldung.
|
|
111
|
+
* **Widerspruch** -> 'widersprüchlich', nicht 'inaktiv' und nicht 'unbekannt'. Beide
|
|
112
|
+
wuerden verschweigen, dass eine Erklaerung da ist und nicht stimmt; wer die Meldung
|
|
113
|
+
liest, suchte dann einen fehlenden Eintrag und faende einen widerspruechlichen
|
|
114
|
+
(B08). Die Folge ist dieselbe wie bei 'inaktiv' - nur lesend -, der Grund nicht.
|
|
115
|
+
* **Ein unbekannter Wert neben einem bekannten** ist ebenfalls ein Widerspruch: Eine
|
|
116
|
+
Datei mit ausgefuelltem Status und eine mit offenem Platzhalter erklaeren nicht
|
|
117
|
+
dasselbe.
|
|
118
|
+
"""
|
|
119
|
+
if not angaben:
|
|
120
|
+
return UNBEKANNT, "keine Angabe zum Overlay-Status gefunden"
|
|
121
|
+
werte = [normalisieren(a) for a in angaben]
|
|
122
|
+
eindeutig = set(werte)
|
|
123
|
+
if len(eindeutig) > 1:
|
|
124
|
+
return (WIDERSPRUECHLICH,
|
|
125
|
+
"die Statusangaben widersprechen sich: "
|
|
126
|
+
+ ", ".join("'%s'" % a.strip() for a in angaben))
|
|
127
|
+
status = werte[0]
|
|
128
|
+
if status == UNBEKANNT:
|
|
129
|
+
return UNBEKANNT, "Statuswert nicht ausgefuellt oder unbekannt: '%s'" % angaben[0].strip()
|
|
130
|
+
return status, "%d Angabe(n), alle '%s'" % (len(angaben), status)
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Wirkungsnachweis nach D-23 fuer die Pruefungen 4, 6, 8, 14, 18 bis 66 und 68 bis 112, dazu fuer
|
|
3
|
+
install.py (Clientwahl, Aktivierungspruefung, --list-skills, Schutz vorhandener
|
|
4
|
+
Projektdateien bei der Erstinstallation, Auskunft ueber ignorierte Kerndateien,
|
|
5
|
+
Overlay-Muster) und fuer den Praeparationswaechter dieses
|
|
6
|
+
Skripts selbst.
|
|
7
|
+
|
|
8
|
+
Die Aufzaehlung der Pruefungen steht hier in der Schreibweise, die Pruefung 40 aus den
|
|
9
|
+
Sondenkennungen dieses Skripts ausrechnet und woertlich vergleicht (D-86). Bis 0.41.0
|
|
10
|
+
stand an dieser Stelle eine Release-Chronik, die bei 0.29.0 endete: ein Register, das
|
|
11
|
+
mit jedem Release falscher wurde, ohne dass ein Lauf davon Notiz nahm. Welches Release
|
|
12
|
+
welche Sonde gebracht hat, steht im Aenderungsverlauf und nicht mehr hier.
|
|
13
|
+
|
|
14
|
+
Aufruf (im Wurzelverzeichnis des Repositoriums):
|
|
15
|
+
python3 .koolie/core/tests/scripts/probe-pruefungen.py [PFAD] [--bahnen N]
|
|
16
|
+
|
|
17
|
+
D-23 sagt: Eine Pruefung gilt erst als vorhanden, wenn sie eine bewusst gesetzte Sonde
|
|
18
|
+
meldet. Dieses Skript fuehrt den Nachweis, statt ihn zu behaupten. Je Pruefung
|
|
19
|
+
|
|
20
|
+
* eine **Sonde**: ein bekannter Defekt in einer Kopie des Repositoriums - die Pruefung
|
|
21
|
+
MUSS ihn melden;
|
|
22
|
+
* eine **Gegenprobe**: ein Fall, der erlaubt ist und aehnlich aussieht - die Pruefung
|
|
23
|
+
DARF ihn nicht melden.
|
|
24
|
+
|
|
25
|
+
Die kleinste Einheit ist die Sonde, die Gegenprobe oder - wo mehrere Faelle aufeinander
|
|
26
|
+
aufbauen - das **Buendel**, nie einer seiner Teile. Jede Einheit traegt einen **Namen**
|
|
27
|
+
und einen **Beschreibungssatz von 5 bis 30 Worten**; die Selbstprobe B1 zaehlt ihn nach.
|
|
28
|
+
Die Einheiten laufen seit 0.46.0 **nebenlaeufig** auf mehreren Bahnen - jede auf ihrer
|
|
29
|
+
eigenen Kopie, innerhalb eines Buendels weiterhin streng seriell (`--bahnen 1` faehrt
|
|
30
|
+
den seriellen Lauf von frueher). Ihre **Laufzeit** steht am Ende, langsamste zuerst, und
|
|
31
|
+
zwar unterhalb einer Trennlinie: Die Ergebniszeilen daruber sind die zeilengleiche
|
|
32
|
+
Abnahmeform nach D-49, und eine Laufzeit ist nie zweimal dieselbe (CR-2026-068).
|
|
33
|
+
|
|
34
|
+
Die Gegenprobe ist der Teil, den man weglassen kann und nicht weglassen sollte: Eine
|
|
35
|
+
Pruefung, die alles meldet, besteht jede Sonde. Die Gegenproben hier treffen genau die
|
|
36
|
+
Faelle, an denen die jeweilige Pruefung zu breit haette werden koennen - die erklaerende
|
|
37
|
+
Nennung eines Dateinamens im Fliesstext, ein Begriff ohne Manifestfeld, die Schutzmuster
|
|
38
|
+
des durchsetzenden Hooks, ein Pack ohne Importsteuerung, Herkunftsangaben im Kommentar.
|
|
39
|
+
|
|
40
|
+
Gearbeitet wird auf einer Kopie; das Repositorium selbst bleibt unberuehrt. Exit-Code 0 =
|
|
41
|
+
alle Sonden gemeldet, keine Gegenprobe beanstandet **und jede Kopie wieder geloescht** -
|
|
42
|
+
eine liegengebliebene meldet der Aufraeumer und zaehlt als Abweichung (D-96).
|
|
43
|
+
|
|
44
|
+
Was dieses Skript **nicht** leistet: Es belegt, dass die Pruefungen wirken, nicht dass
|
|
45
|
+
ihre Gegenstaende richtig sind. Die Grenze jeder einzelnen Pruefung steht in deren
|
|
46
|
+
Kopfkommentar in validate-framework.py.
|
|
47
|
+
"""
|
|
48
|
+
import os
|
|
49
|
+
import sys
|
|
50
|
+
import time
|
|
51
|
+
|
|
52
|
+
# Der Apparat und die Einheiten liegen seit 1.19.1 im Paket sonden/ neben diesem Skript
|
|
53
|
+
# (K-174). Jeder Teil meldet seine Einheiten beim Laden an; geladen wird in der
|
|
54
|
+
# Reihenfolge der Nummer, und das ist die Reihenfolge der Ausgabe (D-49).
|
|
55
|
+
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
56
|
+
from sonden.apparat import ( # noqa: E402
|
|
57
|
+
auswertung, BAHNEN, EINHEITEN, fahren, LISTE, NUR, waehle)
|
|
58
|
+
from sonden import ( # noqa: E402,F401 - laden heisst anmelden
|
|
59
|
+
teil01_grundbestand_und_installation,
|
|
60
|
+
teil02_packs_mandat_mcp,
|
|
61
|
+
teil03_pruefungen_26_bis_36,
|
|
62
|
+
teil04_pruefungen_37_bis_45,
|
|
63
|
+
teil05_pruefungen_46_bis_55,
|
|
64
|
+
teil06_pruefungen_57_bis_65,
|
|
65
|
+
teil07_overlay_und_lieferung,
|
|
66
|
+
teil08_pruefungen_66_bis_80,
|
|
67
|
+
teil09_pruefmittel_81_und_82,
|
|
68
|
+
teil10_pruefungen_83_bis_95,
|
|
69
|
+
teil11_pruefungen_104_und_105,
|
|
70
|
+
teil12_pruefungen_106_und_107,
|
|
71
|
+
teil13_pfad_und_mustersemantik,
|
|
72
|
+
teil14_modi_ausnahmen_skills,
|
|
73
|
+
teil15_banner_und_nachlauf,
|
|
74
|
+
teil16_koexistenz,
|
|
75
|
+
teil17_paketquellen,
|
|
76
|
+
teil18_modusbindung_m3_m5)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
if LISTE:
|
|
80
|
+
for e in EINHEITEN:
|
|
81
|
+
print("%-11s %-6s %s" % (e.art, e.kennung, e.satz))
|
|
82
|
+
print("---")
|
|
83
|
+
print("%d Einheiten. Auswahl mit --nur <Kennung>[,<Kennung>...]" % len(EINHEITEN))
|
|
84
|
+
sys.exit(0)
|
|
85
|
+
_GEWAEHLT = waehle(EINHEITEN, NUR)
|
|
86
|
+
_TEILLAUF = len(_GEWAEHLT) != len(EINHEITEN)
|
|
87
|
+
if _TEILLAUF:
|
|
88
|
+
print("=" * 78)
|
|
89
|
+
print("TEILLAUF: %d von %d Einheiten (--nur %s)"
|
|
90
|
+
% (len(_GEWAEHLT), len(EINHEITEN), ",".join(NUR)))
|
|
91
|
+
print("Das ist KEIN Abnahmelauf. Vor dem Merge laeuft der volle Apparat, und zwar")
|
|
92
|
+
print("in beiden Kodierungsumgebungen (D-23, D-49, D-191).")
|
|
93
|
+
print("=" * 78)
|
|
94
|
+
print()
|
|
95
|
+
_beginn = time.perf_counter()
|
|
96
|
+
fehler = fahren(_GEWAEHLT, BAHNEN)
|
|
97
|
+
_wanduhr = time.perf_counter() - _beginn
|
|
98
|
+
print()
|
|
99
|
+
if _TEILLAUF:
|
|
100
|
+
print("Ergebnis (TEILLAUF, %d von %d Einheiten): %s"
|
|
101
|
+
% (len(_GEWAEHLT), len(EINHEITEN),
|
|
102
|
+
"alle gewaehlten Einheiten bestanden" if not fehler
|
|
103
|
+
else "%d Abweichung(en)" % fehler))
|
|
104
|
+
else:
|
|
105
|
+
print("Ergebnis:", "alle Sonden und Gegenproben bestanden" if not fehler
|
|
106
|
+
else f"{fehler} Abweichung(en)")
|
|
107
|
+
auswertung(_GEWAEHLT, _wanduhr, BAHNEN)
|
|
108
|
+
if _TEILLAUF:
|
|
109
|
+
print("TEILLAUF - der Nachweis nach D-23 steht erst nach dem vollen Lauf.")
|
|
110
|
+
sys.exit(1 if fehler else 0)
|