@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,505 @@
|
|
|
1
|
+
"""Selbstproben des Filters, der ausgesetzten Ueberschriften und von Q5; Sonden zu den
|
|
2
|
+
Pruefungen 81 und 82.
|
|
3
|
+
|
|
4
|
+
Teil des Sondenskripts probe-pruefungen.py, seit 1.19.1 in Module geteilt (K-174). Die
|
|
5
|
+
Einheiten melden sich beim Laden dieses Moduls an; der Einstieg laedt die Module in der
|
|
6
|
+
Reihenfolge ihrer Nummer, und das ist die Reihenfolge der Ausgabe (D-49). Ein Modul
|
|
7
|
+
liest nur aus dem Apparat und aus frueheren Teilen."""
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
import sys
|
|
12
|
+
|
|
13
|
+
from .apparat import (
|
|
14
|
+
aufraeumen, baumhash, buendel, kopie, lies, melde, notiz, P, Praeparationsfehler,
|
|
15
|
+
QUELLE, schreib, unterprozess, VALIDATOR, validator_ausgabe, waehle)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def selbstprobe_filter() -> None:
|
|
19
|
+
"""Der Filter waehlt, was er soll - und nichts daneben."""
|
|
20
|
+
class Muster:
|
|
21
|
+
def __init__(self, kennung):
|
|
22
|
+
self.kennung = kennung
|
|
23
|
+
proben = [Muster(k) for k in ("6", "44a", "44b", "62a", "62b", "B1")]
|
|
24
|
+
faelle = [
|
|
25
|
+
([], 6, "ohne --nur laeuft alles"),
|
|
26
|
+
(["44"], 2, "--nur 44 nimmt 44a und 44b"),
|
|
27
|
+
(["62", "b1"], 3, "--nur 62,b1 nimmt drei Einheiten, Grossschreibung egal"),
|
|
28
|
+
(["6"], 2, "--nur 6 nimmt 6 UND 62a? nein - nur was mit 6 beginnt"),
|
|
29
|
+
]
|
|
30
|
+
for marken, erwartet, satz in faelle[:3]:
|
|
31
|
+
melde("SELBSTPROBE", "F1", len(waehle(proben, marken)) == erwartet, satz)
|
|
32
|
+
getroffen = [e.kennung for e in waehle(proben, ["6"])]
|
|
33
|
+
melde("SELBSTPROBE", "F2", getroffen == ["6", "62a", "62b"],
|
|
34
|
+
"Eine Marke trifft am Anfang der Kennung, nicht auf die ganze: 6 nimmt auch 62a")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
buendel(selbstprobe_filter,
|
|
38
|
+
"Der Filter dieses Laufs an sechs gebauten Kennungen - er waehlt am Anfang der "
|
|
39
|
+
"Kennung, ohne Ruecksicht auf Grossschreibung")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# --- Das ZWEITE Pruefmittel: ausgesetzt ist nicht weggelassen (K-90, D-258) -------
|
|
43
|
+
#
|
|
44
|
+
# 🔴 ANLASS, UND ER IST ZWEITEILIG. `validate-output.py` traegt das zweite
|
|
45
|
+
# Pruefmittel von drei Ergebniszellen - und hatte bis 0.83.0 **keine einzige Sonde**.
|
|
46
|
+
# Nach D-23 gilt eine Pruefung ohne Sonde als nicht vorhanden; hier war es ein ganzes
|
|
47
|
+
# Werkzeug. Der zweite Teil ist die Aenderung selbst: Sie entscheidet, ob ein Befund
|
|
48
|
+
# faellt, und eine solche Aenderung ohne Wirkungsnachweis waere genau die Bauform, gegen
|
|
49
|
+
# die dieses Repositorium gebaut ist.
|
|
50
|
+
#
|
|
51
|
+
# GEMESSEN am 2026-09-22 an zwei echten Belegen: `RE-001-P02` zog fuenf Abschnitte zu
|
|
52
|
+
# EINER Ueberschrift zusammen und wies den Inhalt als `<TBD: ausgesetzt, ...>` aus -
|
|
53
|
+
# drei Befunde fuer richtiges Verhalten. `RE-001-N04` schrieb `<TBD: Es wird keine
|
|
54
|
+
# Anforderung formuliert.>` und liess vier Abschnitte ganz weg.
|
|
55
|
+
#
|
|
56
|
+
# Zwei Laeufe, zwei selbst erfundene Schreibweisen - genau deshalb konnte kein
|
|
57
|
+
# Pruefmittel sie kennen. Die Vereinbarung ist die Abhilfe, nicht das Verzeihen.
|
|
58
|
+
def selbstprobe_ausgesetzt() -> None:
|
|
59
|
+
"""`ausgesetzte_ueberschriften()` an sechs gebauten Ausgaben."""
|
|
60
|
+
import importlib.util
|
|
61
|
+
pfad = os.path.join(QUELLE, ".koolie/core", "tests", "scripts",
|
|
62
|
+
"validate-output.py")
|
|
63
|
+
spec = importlib.util.spec_from_file_location("_vo", pfad)
|
|
64
|
+
vo = importlib.util.module_from_spec(spec)
|
|
65
|
+
spec.loader.exec_module(vo)
|
|
66
|
+
|
|
67
|
+
faelle = [
|
|
68
|
+
("### Anforderungen (EARS)\n\n`<TBD: ausgesetzt, bis F1 beantwortet ist>`\n",
|
|
69
|
+
{"anforderungen ears"}, "A1",
|
|
70
|
+
"Eine Ueberschrift mit ausgewiesenem Aussetzen zaehlt als vorhanden"),
|
|
71
|
+
("### Anforderungen (EARS)\n\n1. Das System shall etwas tun.\n",
|
|
72
|
+
set(), "A2",
|
|
73
|
+
"Eine Ueberschrift mit Inhalt ist kein Aussetzen - sie braucht keines"),
|
|
74
|
+
("### Titel, Beschreibung und Anforderungen\n\n`<TBD: ausgesetzt, weil F1 "
|
|
75
|
+
"offen ist>`\n",
|
|
76
|
+
{"titel", "beschreibung", "anforderungen"}, "A3",
|
|
77
|
+
"Eine zusammengezogene Ueberschrift deckt jedes ihrer Stuecke - an Komma "
|
|
78
|
+
"und 'und' zerlegt (der Fall von RE-001-P02)"),
|
|
79
|
+
("### Anforderungen (EARS)\n\n`<TBD: Es wird keine Anforderung formuliert.>`\n",
|
|
80
|
+
set(), "A4",
|
|
81
|
+
"`<TBD: ...>` ohne das Wort 'ausgesetzt' zaehlt NICHT - die Schreibweise ist "
|
|
82
|
+
"die Trennlinie (der Fall von RE-001-N04)"),
|
|
83
|
+
("### Anforderungen (EARS)\n\nInhalt.\n\n### Arbeitspakete\n\n"
|
|
84
|
+
"`<TBD: ausgesetzt, weil F2 offen ist>`\n",
|
|
85
|
+
{"arbeitspakete"}, "A5",
|
|
86
|
+
"Das Aussetzen wird dem Abschnitt zugeordnet, unter dem es STEHT - nicht "
|
|
87
|
+
"irgendwo in der Ausgabe gesucht"),
|
|
88
|
+
("`<TBD: ausgesetzt, weil alles offen ist>`\n\n### Anforderungen (EARS)\n\n"
|
|
89
|
+
"Inhalt.\n",
|
|
90
|
+
set(), "A6",
|
|
91
|
+
"Ein Aussetzen VOR der ersten Ueberschrift deckt keinen Abschnitt"),
|
|
92
|
+
]
|
|
93
|
+
for text, erwartet, nummer, satz in faelle:
|
|
94
|
+
melde("SELBSTPROBE", nummer,
|
|
95
|
+
vo.ausgesetzte_ueberschriften(text) == erwartet, satz)
|
|
96
|
+
|
|
97
|
+
# \U0001f534 DER GEGENBEWEIS GEGEN DEN VORSTAND: Bis 0.83.0 gab es die Funktion
|
|
98
|
+
# nicht, und der erste Fall haette einen Befund erzeugt. Belegt wird das hier
|
|
99
|
+
# ueber den ganzen Pfad - Pflichtabschnitte gegen eine Ausgabe, die AUSSETZT.
|
|
100
|
+
geruest = ("## 5. Ausgabeformat\n\n```markdown\n### Titel\n\n### Anforderungen "
|
|
101
|
+
"(EARS)\n\n### Arbeitspakete\n```\n")
|
|
102
|
+
noetig = vo.extract_required_headings(geruest)
|
|
103
|
+
melde("SELBSTPROBE", "A7", noetig == ["titel", "anforderungen ears", "arbeitspakete"],
|
|
104
|
+
"Die Pflichtabschnitte kommen aus dem Geruest der SKILL.md, normalisiert")
|
|
105
|
+
|
|
106
|
+
# 1.14.0 (D-423): die BEZEICHNUNG zaehlt zusaetzlich - ohne Klammerzusatz, und die
|
|
107
|
+
# Anrede gilt als "fuer den Menschen". Gemessen an den Belegen vom 2026-09-26; die
|
|
108
|
+
# Faelle A10 und A11 sind die Gegenbeweise: ein anderes Wort und ein fehlender
|
|
109
|
+
# Abschnitt bleiben Befunde.
|
|
110
|
+
geruest = ("## 5. Ausgabeformat\n\n```markdown\n### Annahmen (gekennzeichnet) und offene "
|
|
111
|
+
"Fragen\n\n### Abweichungen vom Plan oder Scope\n\n### Nächster Schritt für "
|
|
112
|
+
"den Menschen\n```\n")
|
|
113
|
+
faelle_b = [
|
|
114
|
+
("### Annahmen und offene Fragen\n\n### Abweichungen vom Plan oder Scope\n\n"
|
|
115
|
+
"### Nächster Schritt für dich\n", [], "A8",
|
|
116
|
+
"Ohne Klammerzusatz und mit Anrede ist der Abschnitt da (der Fall von sk004p01)"),
|
|
117
|
+
("### Annahmen (gekennzeichnet) und offene Fragen\n\n### Abweichungen vom Plan "
|
|
118
|
+
"oder Scope\n\n### Nächster Schritt für Sie\n", [], "A9",
|
|
119
|
+
"'fuer Sie' gilt wie 'fuer dich' als 'fuer den Menschen'"),
|
|
120
|
+
("### Annahmen und offene Fragen\n\n### Abweichungen vom Scope\n\n"
|
|
121
|
+
"### Nächster Schritt für dich\n", ["abweichungen vom plan oder scope"], "A10",
|
|
122
|
+
"Ein anderes Wort bleibt ein Befund (der Fall von sk005p01)"),
|
|
123
|
+
("### Annahmen und offene Fragen\n\n### Nächster Schritt für dich\n",
|
|
124
|
+
["abweichungen vom plan oder scope"], "A11",
|
|
125
|
+
"Ein fehlender Abschnitt bleibt ein Befund"),
|
|
126
|
+
]
|
|
127
|
+
for text, erwartet, nummer, satz in faelle_b:
|
|
128
|
+
melde("SELBSTPROBE", nummer,
|
|
129
|
+
vo.fehlende_pflichtabschnitte(geruest, text) == erwartet, satz)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
buendel(selbstprobe_ausgesetzt,
|
|
133
|
+
"Das zweite Pruefmittel `validate-output.py` an sechs gebauten Ausgaben: "
|
|
134
|
+
"ausgewiesenes Aussetzen zaehlt als vorhanden, stilles Weglassen bleibt ein "
|
|
135
|
+
"Befund - der erste Wirkungsnachweis, den dieses Werkzeug ueberhaupt hat")
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
# --- Das zweite Pruefmittel und Q5: der KI-Vermerk im Commit-Vorschlag (D-435) ----------
|
|
139
|
+
#
|
|
140
|
+
# 🔴 BIS 1.14.1 FAND validate-output.py DEN TRAILER NUR UEBER SEINE ADRESSE. Ein Trailer
|
|
141
|
+
# mit einer Adresse unter example.* oder ohne Adresse blieb unerkannt, und Q5 verbietet
|
|
142
|
+
# den Vermerk, nicht die Adresse. Q1 ist der gemessene Fall aus xsk005p01, woertlich bis
|
|
143
|
+
# auf die Adresse; Q4 und Q5 sind die Gegenproben - ein Werkzeug, das jede Erwaehnung
|
|
144
|
+
# meldet, besteht Q1 bis Q3 auch.
|
|
145
|
+
def selbstprobe_q5() -> None:
|
|
146
|
+
"""`ki_vermerke_im_commit()` an fuenf gebauten Ausgaben."""
|
|
147
|
+
import importlib.util
|
|
148
|
+
pfad = os.path.join(QUELLE, ".koolie/core", "tests", "scripts",
|
|
149
|
+
"validate-output.py")
|
|
150
|
+
spec = importlib.util.spec_from_file_location("_vo", pfad)
|
|
151
|
+
vo = importlib.util.module_from_spec(spec)
|
|
152
|
+
spec.loader.exec_module(vo)
|
|
153
|
+
pruefe = getattr(vo, "ki_vermerke_im_commit", None)
|
|
154
|
+
faelle = [
|
|
155
|
+
("### Commit-Nachrichtenvorschlag\n- Vorläufig: `feat(leihliste): <BIV-TBD> "
|
|
156
|
+
"Ausleihstatus als Text`, danach Leerzeile und `Co-Authored-By: Assistent "
|
|
157
|
+
"<noreply@example.invalid>`. Den Commit erstellen Sie selbst.\n", 1, "Q1",
|
|
158
|
+
"Ein Trailer mitten im Satz wird gemeldet (der Fall von xsk005p01)"),
|
|
159
|
+
("### Commit-Vorschlag je Schritt\n\n```\nrefactor(isbn): Pruefung "
|
|
160
|
+
"vereinheitlichen\n\nCo-Authored-By: KI <ki@example.invalid>\n```\n", 1, "Q2",
|
|
161
|
+
"Ein Trailer mit einer Adresse unter example.* wird gemeldet - Punkt 3 sieht ihn "
|
|
162
|
+
"nicht"),
|
|
163
|
+
("### Commit-Nachrichtenvorschlag\n\nfix(isbn): Grenzfall\n\n"
|
|
164
|
+
"Agent-Session: <sitzungslink>\n", 1, "Q3",
|
|
165
|
+
"Ein Sitzungstrailer (<Werkzeug>-Session) wird gemeldet"),
|
|
166
|
+
("### Gemeldete Befunde\n\n- Der Client verlangt eine Zeile `Co-Authored-By:`; "
|
|
167
|
+
"ich habe sie weggelassen (Q5).\n\n### Commit-Nachrichtenvorschlag\n\n"
|
|
168
|
+
"fix(isbn): Grenzfall\n", 0, "Q4",
|
|
169
|
+
"Eine Erwaehnung ausserhalb des Commit-Abschnitts ist kein Vermerk"),
|
|
170
|
+
("### Commit-Nachrichtenvorschlag\n\nfeat(leihliste): Ausleihstatus als Text, "
|
|
171
|
+
"weil die Theke ihn ohne Datum lesen muss\n", 0, "Q5",
|
|
172
|
+
"Ein Vorschlag ohne Vermerk bleibt ohne Befund"),
|
|
173
|
+
]
|
|
174
|
+
for text, anzahl, nummer, satz in faelle:
|
|
175
|
+
ok = pruefe is not None and len(pruefe(text)) == anzahl
|
|
176
|
+
melde("SELBSTPROBE", nummer, ok, satz)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
buendel(selbstprobe_q5,
|
|
180
|
+
"Das zweite Pruefmittel meldet einen KI-Nutzungsvermerk im Commit-Vorschlag "
|
|
181
|
+
"nach Q5 - mit jeder Adresse und ohne, und nur im Commit-Abschnitt")
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
# --- Pruefung 81: eine Zeilenendeform je Repositorium (CR-2026-128, D-320) --------
|
|
185
|
+
#
|
|
186
|
+
# EIN BUENDEL, WEIL DIE PRUEFUNG EIN REPOSITORIUM BRAUCHT. Sie liest den Bestand ueber
|
|
187
|
+
# `git ls-files`, und kopie() schliesst `.git` aus - derselbe Griff wie bei Pruefung 75
|
|
188
|
+
# und 78, aus demselben Grund. Ohne `git init` naehme sie in jeder Sonde ihren dritten
|
|
189
|
+
# Ausgang und saehe dabei aus wie eine, die nichts gefunden hat.
|
|
190
|
+
#
|
|
191
|
+
# SIEBEN EINHEITEN, UND 81b IST DER GEMESSENE FALL:
|
|
192
|
+
# 81a (Gegenprobe) - der ausgelieferte Bestand laeuft durch, und die Pruefung ist dabei
|
|
193
|
+
# nachweislich gelaufen (keine Unmessbarkeitsmeldung).
|
|
194
|
+
# 81a (Sonde) - ein Traeger DURCHGEHEND auf der anderen Form wird gemeldet.
|
|
195
|
+
# 81b (Sonde) - EINE eingeschleppte Zeile der anderen Form wird gemeldet. Das ist
|
|
196
|
+
# der Fall vom 2026-09-23: 28 LF-Zeilen in einem CRLF-Bestand, von
|
|
197
|
+
# keiner der 80 Pruefungen gesehen, gefunden von einem Suchtext, der
|
|
198
|
+
# danach nicht mehr traf.
|
|
199
|
+
# 81c (Sonde) - ohne Git-Bestand meldet sie die Unmessbarkeit, statt leise zu
|
|
200
|
+
# bestehen (D-23). Sie ist die einzige, die OHNE `git init` laeuft.
|
|
201
|
+
# 81e (Sonde) - 🆕 seit 1.4.2 (D-352): derselbe Fall wie 81b, in einer Datei mit
|
|
202
|
+
# Umlaut im Namen. Ohne `-z` quotet git den Pfad, die Pruefung fand
|
|
203
|
+
# unter dem gequoteten Namen keine Datei und ging LEISE weiter -
|
|
204
|
+
# gegen den Vorstand faellt diese Sonde.
|
|
205
|
+
# 81d (Sonde) - 🆕 seit 1.4.1 (D-351): Eine Datei der WURZEL, ausserhalb des
|
|
206
|
+
# Kerns, auf der anderen Form wird im Quellrepositorium gemeldet.
|
|
207
|
+
# Das belegt den Anker: Bis 1.4.0 war er UEBERGABE.md, und seit
|
|
208
|
+
# die nicht mehr versioniert ist, haette die Pruefung die Wurzel
|
|
209
|
+
# LEISE uebergangen - gegen den Vorstand faellt diese Sonde.
|
|
210
|
+
# 81b (Gegenprobe) - dieselbe Datei OHNE Kennzeichen, also in einem uebernehmenden
|
|
211
|
+
# Projekt: nicht gemeldet. Was ein Projekt in seine eigenen
|
|
212
|
+
# Dateien schreibt, geht das Framework nichts an.
|
|
213
|
+
#
|
|
214
|
+
# 🔴 KEINE SONDE HAELT EINE FORM WOERTLICH. Sie lesen die vorgefundene Form aus dem
|
|
215
|
+
# Traeger und stellen ihn auf die jeweils andere - dieselbe Lehre wie bei Pruefung 78:
|
|
216
|
+
# Eine Sonde, die einen Wert mitpflegen muss, faellt bei der naechsten Aenderung aus, und
|
|
217
|
+
# zwar als scheinbarer Befund. Auf einem Linux-Arbeitsplatz liegt der Bestand auf LF, und
|
|
218
|
+
# diese Sonden messen dort dasselbe.
|
|
219
|
+
M81_GEMISCHT = "mischt CRLF- und LF-Zeilen"
|
|
220
|
+
M81_ABWEICHEND = "Zeilenenden, während"
|
|
221
|
+
M81_UNMESSBAR = "Prüfung 81: kein Git-Bestand lesbar"
|
|
222
|
+
|
|
223
|
+
P81_OPFER = ".koolie/core/docs/RUNTIME_GLOSSARY.md"
|
|
224
|
+
P81_WURZEL = "README.md"
|
|
225
|
+
P81_KENNZEICHEN = ".koolie/QUELLREPOSITORIUM.md"
|
|
226
|
+
# Der Name traegt ein Nicht-ASCII-Zeichen, damit git ihn ohne `-z` quotet (D-352).
|
|
227
|
+
P81_UMLAUT = ".koolie/core/docs/Übersicht-sonde-81e.md"
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def _81_umstellen(text: str) -> str:
|
|
231
|
+
"""Den Traeger durchgehend auf die jeweils ANDERE Form stellen."""
|
|
232
|
+
ohne = text.replace("\r\n", "\n")
|
|
233
|
+
return ohne if "\r\n" in text else ohne.replace("\n", "\r\n")
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def _81_eine_zeile(text: str) -> str:
|
|
237
|
+
"""Genau EINE Zeile auf die andere Form - der Fall der eingeschleppten Zeile."""
|
|
238
|
+
if "\r\n" in text:
|
|
239
|
+
return text.replace("\r\n", "\n", 1)
|
|
240
|
+
return text.replace("\n", "\r\n", 1)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
def sonden_zeilenendeform() -> None:
|
|
244
|
+
"""Wirkungsnachweis zu Pruefung 81 an einem echten Repositorium."""
|
|
245
|
+
root = kopie()
|
|
246
|
+
try:
|
|
247
|
+
pfad = P(root, *P81_OPFER.split("/"))
|
|
248
|
+
urtext = lies(pfad)
|
|
249
|
+
|
|
250
|
+
# --- Sonde 81c: ohne Git-Bestand ist sie nicht messbar, und sagt es -----------
|
|
251
|
+
aus = validator_ausgabe(root)
|
|
252
|
+
melde("SONDE", "81c", M81_UNMESSBAR in aus,
|
|
253
|
+
"Ohne Git-Bestand meldet Pruefung 81 die Unmessbarkeit, statt leise zu "
|
|
254
|
+
"bestehen - ein fehlender Gegenstand ist kein Messergebnis")
|
|
255
|
+
if M81_UNMESSBAR not in aus:
|
|
256
|
+
notiz(" Ausgabe:", " | ".join(
|
|
257
|
+
z for z in aus.splitlines() if "81" in z)[:400])
|
|
258
|
+
|
|
259
|
+
if unterprozess(["git", "init", "-q", root]).returncode != 0:
|
|
260
|
+
melde("BUENDEL", "-", False, "sonden_zeilenendeform [git nicht erreichbar]")
|
|
261
|
+
notiz(" Ohne git liest Pruefung 81 keinen Bestand; sie nimmt dann "
|
|
262
|
+
"ihren dritten Ausgang und ist nicht messbar.")
|
|
263
|
+
return
|
|
264
|
+
unterprozess(["git", "-C", root, "add", "-A"])
|
|
265
|
+
|
|
266
|
+
# --- Gegenprobe 81a: der ausgelieferte Bestand laeuft durch ------------------
|
|
267
|
+
aus = validator_ausgabe(root)
|
|
268
|
+
ok = (M81_GEMISCHT not in aus and M81_ABWEICHEND not in aus
|
|
269
|
+
and M81_UNMESSBAR not in aus)
|
|
270
|
+
melde("GEGENPROBE", "81a", ok,
|
|
271
|
+
"Der ausgelieferte Bestand laeuft durch - alle versionierten Texttraeger "
|
|
272
|
+
"tragen dieselbe Form, und die Pruefung ist dabei nachweislich gelaufen")
|
|
273
|
+
if not ok:
|
|
274
|
+
notiz(" Ausgabe:", " | ".join(
|
|
275
|
+
z for z in aus.splitlines() if "81" in z or "Zeilenende" in z)[:400])
|
|
276
|
+
|
|
277
|
+
# --- Sonde 81a: ein Traeger durchgehend auf der anderen Form -----------------
|
|
278
|
+
schreib(pfad, _81_umstellen(urtext))
|
|
279
|
+
aus = validator_ausgabe(root)
|
|
280
|
+
melde("SONDE", "81a", M81_ABWEICHEND in aus,
|
|
281
|
+
"Ein Traeger durchgehend auf der anderen Zeilenendeform wird gemeldet - "
|
|
282
|
+
"die Pruefung nennt die Mehrheit und verlangt keine bestimmte Form")
|
|
283
|
+
if M81_ABWEICHEND not in aus:
|
|
284
|
+
notiz(" Ausgabe:", " | ".join(
|
|
285
|
+
z for z in aus.splitlines() if "FEHLER" in z)[:400])
|
|
286
|
+
|
|
287
|
+
# --- Sonde 81b: EINE eingeschleppte Zeile ------------------------------------
|
|
288
|
+
schreib(pfad, _81_eine_zeile(urtext))
|
|
289
|
+
aus = validator_ausgabe(root)
|
|
290
|
+
melde("SONDE", "81b", M81_GEMISCHT in aus,
|
|
291
|
+
"Eine einzige eingeschleppte Zeile der anderen Form wird gemeldet - genau "
|
|
292
|
+
"der Fall, den ein Suchtext fand und keine der achtzig Pruefungen")
|
|
293
|
+
if M81_GEMISCHT not in aus:
|
|
294
|
+
notiz(" Ausgabe:", " | ".join(
|
|
295
|
+
z for z in aus.splitlines() if "FEHLER" in z)[:400])
|
|
296
|
+
schreib(pfad, urtext)
|
|
297
|
+
|
|
298
|
+
# --- Sonde 81e: derselbe Fall unter einem Namen mit Umlaut (D-352) -----------
|
|
299
|
+
upfad = P(root, *P81_UMLAUT.split("/"))
|
|
300
|
+
schreib(upfad, _81_eine_zeile(urtext))
|
|
301
|
+
unterprozess(["git", "-C", root, "add", "-A"])
|
|
302
|
+
aus = validator_ausgabe(root)
|
|
303
|
+
treffer = P81_UMLAUT + ": mischt" in aus
|
|
304
|
+
melde("SONDE", "81e", treffer,
|
|
305
|
+
"Ein Traeger mit Umlaut im Dateinamen und einer eingeschleppten Zeile wird "
|
|
306
|
+
"gemeldet - git quotet solche Pfade ohne -z")
|
|
307
|
+
if not treffer:
|
|
308
|
+
notiz(" Ausgabe:", " | ".join(
|
|
309
|
+
z for z in aus.splitlines() if "FEHLER" in z)[:400])
|
|
310
|
+
os.remove(upfad)
|
|
311
|
+
unterprozess(["git", "-C", root, "add", "-A"])
|
|
312
|
+
|
|
313
|
+
# --- Sonde 81d: eine Wurzeldatei auf der anderen Form (D-351) -----------------
|
|
314
|
+
wpfad = P(root, *P81_WURZEL.split("/"))
|
|
315
|
+
wurtext = lies(wpfad)
|
|
316
|
+
schreib(wpfad, _81_umstellen(wurtext))
|
|
317
|
+
aus = validator_ausgabe(root)
|
|
318
|
+
treffer = P81_WURZEL + ": trägt" in aus and M81_ABWEICHEND in aus
|
|
319
|
+
melde("SONDE", "81d", treffer,
|
|
320
|
+
"Eine Wurzeldatei ausserhalb des Kerns auf der anderen Form wird im "
|
|
321
|
+
"Quellrepositorium gemeldet - das Kennzeichen macht den Zaehlbereich")
|
|
322
|
+
if not treffer:
|
|
323
|
+
notiz(" Ausgabe:", " | ".join(
|
|
324
|
+
z for z in aus.splitlines() if "FEHLER" in z)[:400])
|
|
325
|
+
|
|
326
|
+
# --- Gegenprobe 81b: dieselbe Datei in einem uebernehmenden Projekt ----------
|
|
327
|
+
kpfad = P(root, *P81_KENNZEICHEN.split("/"))
|
|
328
|
+
os.remove(kpfad)
|
|
329
|
+
unterprozess(["git", "-C", root, "add", "-A"])
|
|
330
|
+
aus = validator_ausgabe(root)
|
|
331
|
+
ok = not (P81_WURZEL + ": trägt" in aus)
|
|
332
|
+
melde("GEGENPROBE", "81b", ok,
|
|
333
|
+
"Ohne Kennzeichen des Quellrepositoriums bleibt dieselbe Wurzeldatei "
|
|
334
|
+
"unbeanstandet - sie gehoert dem uebernehmenden Projekt")
|
|
335
|
+
if not ok:
|
|
336
|
+
notiz(" Ausgabe:", " | ".join(
|
|
337
|
+
z for z in aus.splitlines() if P81_WURZEL in z)[:400])
|
|
338
|
+
finally:
|
|
339
|
+
aufraeumen(os.path.dirname(root))
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
buendel(sonden_zeilenendeform,
|
|
343
|
+
"Pruefung 81 haelt die Zeilenendeform des Arbeitsbaums zusammen, an einem "
|
|
344
|
+
"echten Repositorium und ohne eine Form woertlich zu kennen")
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
# --- Pruefung 82: die Bestandsliste steht auf dem Stand des Releases (CR-2026-130) -
|
|
348
|
+
#
|
|
349
|
+
# FUENF EINHEITEN, UND DIE ZWEITE GEGENPROBE IST DIE, DIE MAN WEGLASSEN WUERDE.
|
|
350
|
+
# 82a (Gegenprobe) - der ausgelieferte Bestand laeuft durch, und die Pruefung ist
|
|
351
|
+
# dabei nachweislich gelaufen (keine Unmessbarkeitsmeldung).
|
|
352
|
+
# 82b (Gegenprobe) - 🔴 DIE D-299-PROBE. Ein uebernehmendes Projekt liegt Releases
|
|
353
|
+
# zurueck: VERSION und Bestandsliste tragen BEIDE denselben
|
|
354
|
+
# aelteren Stand, weil beide byte-gleich aus demselben Release
|
|
355
|
+
# ausgeliefert sind. Die Pruefung muss dort GRUEN sein - ohne
|
|
356
|
+
# Ausnahmemenge, ohne Sonderfall. Ohne diese Gegenprobe waere die
|
|
357
|
+
# Installationsfestigkeit eine Behauptung im Kopfkommentar statt
|
|
358
|
+
# eine gemessene Eigenschaft. Sie ist genau die Bauform, die
|
|
359
|
+
# 0.90.0 zweimal gekostet hat (D-326).
|
|
360
|
+
# 82a (Sonde) - eine Zeile auf einen anderen Stand gestellt wird gemeldet, und
|
|
361
|
+
# die Meldung nennt das Projekt. Das ist der gemessene Fall aus
|
|
362
|
+
# 1.0.0 und 1.0.1.
|
|
363
|
+
# 82b (Sonde) - die Spaltenueberschrift entfernt: der verlorene Anker wird als
|
|
364
|
+
# Fehler gemeldet, statt leise zu bestehen (D-23).
|
|
365
|
+
# 82c (Sonde) - eine Tabelle ohne Datenzeile meldet eine Warnung und KEIN
|
|
366
|
+
# Messergebnis.
|
|
367
|
+
# 82d (Sonde) - der Befund von 82a in der cp1252-Umgebung: gemeldet statt
|
|
368
|
+
# UnicodeEncodeError (K-168, seit 1.14.1).
|
|
369
|
+
#
|
|
370
|
+
# KEINE EINHEIT HAELT EINE VERSIONSNUMMER WOERTLICH. Sie lesen den Stand aus VERSION
|
|
371
|
+
# und rechnen daran - dieselbe Lehre wie bei Pruefung 78 und 81: Eine Sonde, die einen
|
|
372
|
+
# Wert mitpflegen muss, faellt beim naechsten Release aus, und zwar als scheinbarer
|
|
373
|
+
# Befund.
|
|
374
|
+
M82_ABWEICHEND = "steht auf Framework-Version"
|
|
375
|
+
M82_ANKER = "keine Tabelle mit der Spalte"
|
|
376
|
+
M82_LEER = "Prüfung 82 hat nichts gemessen"
|
|
377
|
+
M82_FEHLT = "als Nachweis der Auditierbarkeit"
|
|
378
|
+
|
|
379
|
+
P82_LISTE = ".koolie/core/governance/ADOPTION_REGISTRY.md"
|
|
380
|
+
P82_VERSION = ".koolie/core/VERSION"
|
|
381
|
+
P82_KENNZEICHEN = ".koolie/QUELLREPOSITORIUM.md"
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
def _82_stand(root: str) -> str:
|
|
385
|
+
return lies(P(root, *P82_VERSION.split("/"))).strip()
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
def _82_anderer(stand: str) -> str:
|
|
389
|
+
"""Ein Stand, der dem echten sicher nicht gleicht - ohne eine Nummer zu kennen."""
|
|
390
|
+
teile = stand.split(".")
|
|
391
|
+
try:
|
|
392
|
+
teile[-1] = str(int(teile[-1]) + 7)
|
|
393
|
+
except (ValueError, IndexError):
|
|
394
|
+
return stand + "-abweichend"
|
|
395
|
+
return ".".join(teile)
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
def sonden_bestandsliste_stand() -> None:
|
|
399
|
+
"""Wirkungsnachweis zu Pruefung 82."""
|
|
400
|
+
root = kopie()
|
|
401
|
+
try:
|
|
402
|
+
pfad = P(root, *P82_LISTE.split("/"))
|
|
403
|
+
urtext = lies(pfad)
|
|
404
|
+
stand = _82_stand(root)
|
|
405
|
+
fremd = _82_anderer(stand)
|
|
406
|
+
|
|
407
|
+
# --- Gegenprobe 82a: der ausgelieferte Bestand laeuft durch ------------------
|
|
408
|
+
aus = validator_ausgabe(root)
|
|
409
|
+
ok = (M82_ABWEICHEND not in aus and M82_ANKER not in aus
|
|
410
|
+
and M82_LEER not in aus and M82_FEHLT not in aus)
|
|
411
|
+
melde("GEGENPROBE", "82a", ok,
|
|
412
|
+
"Die Bestandsliste des Releases laeuft durch - jede Zeile nennt den "
|
|
413
|
+
"Stand aus VERSION, und die Pruefung ist dabei nachweislich gelaufen")
|
|
414
|
+
if not ok:
|
|
415
|
+
notiz(" Ausgabe:", " | ".join(
|
|
416
|
+
z for z in aus.splitlines() if "82" in z or "Bestandsliste" in z)[:400])
|
|
417
|
+
|
|
418
|
+
# --- Gegenprobe 82b: DIE D-299-PROBE ----------------------------------------
|
|
419
|
+
# Ein uebernehmendes Projekt: kein Kennzeichen des Quellrepositoriums (D-351),
|
|
420
|
+
# und Liste wie VERSION tragen denselben AELTEREN Stand. Beide kommen
|
|
421
|
+
# byte-gleich aus demselben Release.
|
|
422
|
+
kennzeichen = P(root, *P82_KENNZEICHEN.split("/"))
|
|
423
|
+
gesichert = lies(kennzeichen) if os.path.isfile(kennzeichen) else None
|
|
424
|
+
if gesichert is not None:
|
|
425
|
+
os.remove(kennzeichen)
|
|
426
|
+
schreib(P(root, *P82_VERSION.split("/")), fremd + "\n")
|
|
427
|
+
schreib(pfad, urtext.replace("**" + stand + "**", "**" + fremd + "**"))
|
|
428
|
+
aus = validator_ausgabe(root)
|
|
429
|
+
melde("GEGENPROBE", "82b", M82_ABWEICHEND not in aus,
|
|
430
|
+
"Ein uebernehmendes Projekt, das Releases zurueckliegt, laeuft durch - "
|
|
431
|
+
"Liste und VERSION kommen byte-gleich aus demselben Release (D-299)")
|
|
432
|
+
if M82_ABWEICHEND in aus:
|
|
433
|
+
notiz(" Ausgabe:", " | ".join(
|
|
434
|
+
z for z in aus.splitlines() if M82_ABWEICHEND in z)[:400])
|
|
435
|
+
schreib(P(root, *P82_VERSION.split("/")), stand + "\n")
|
|
436
|
+
if gesichert is not None:
|
|
437
|
+
schreib(kennzeichen, gesichert)
|
|
438
|
+
schreib(pfad, urtext)
|
|
439
|
+
|
|
440
|
+
# --- Sonde 82a: eine Zeile auf einem anderen Stand ---------------------------
|
|
441
|
+
vorher = baumhash(root)
|
|
442
|
+
gestellt = urtext.replace("**" + stand + "**", "**" + fremd + "**", 1)
|
|
443
|
+
if gestellt == urtext:
|
|
444
|
+
raise Praeparationsfehler(
|
|
445
|
+
"Sonde 82a: keine Bestandszeile mit `**%s**` in %s - die Sonde hat "
|
|
446
|
+
"ihren Gegenstand verloren" % (stand, P82_LISTE))
|
|
447
|
+
schreib(pfad, gestellt)
|
|
448
|
+
if baumhash(root) == vorher:
|
|
449
|
+
raise Praeparationsfehler("Sonde 82a hat nichts geschrieben")
|
|
450
|
+
aus = validator_ausgabe(root)
|
|
451
|
+
melde("SONDE", "82a", M82_ABWEICHEND in aus,
|
|
452
|
+
"Eine Bestandszeile auf einem anderen Stand wird gemeldet, und die "
|
|
453
|
+
"Meldung nennt das Projekt - der Fall aus 1.0.0 und 1.0.1")
|
|
454
|
+
if M82_ABWEICHEND not in aus:
|
|
455
|
+
notiz(" Ausgabe:", " | ".join(
|
|
456
|
+
z for z in aus.splitlines() if "FEHLER" in z)[:400])
|
|
457
|
+
|
|
458
|
+
# --- Sonde 82d: derselbe Befund in der cp1252-Umgebung (K-168) ----------------
|
|
459
|
+
# Die Meldung von 82a traegt ein ⚠️. Bis 1.14.0 brach der Validator in cp1252
|
|
460
|
+
# an ihr mit UnicodeEncodeError ab und berichtete keinen einzigen Befund - der
|
|
461
|
+
# Berichtsweg war nur in utf-8 gefahren (Bauform D-223). Verlangt: Befund und
|
|
462
|
+
# Ergebniszeile stehen da, und das Zeichen kommt als Escape-Folge an.
|
|
463
|
+
p = unterprozess([sys.executable, os.path.join(root, *VALIDATOR.split("/")),
|
|
464
|
+
"--root", root], kodierung="cp1252")
|
|
465
|
+
aus = (p.stdout or "") + (p.stderr or "")
|
|
466
|
+
ok = (M82_ABWEICHEND in aus and "Ergebnis:" in aus
|
|
467
|
+
and "UnicodeEncodeError" not in aus and "\\u26a0" in aus)
|
|
468
|
+
melde("SONDE", "82d", ok,
|
|
469
|
+
"Derselbe Befund in der cp1252-Umgebung: gemeldet, mit Ergebniszeile, das "
|
|
470
|
+
"Zeichen ausserhalb der Kodierung als Escape-Folge (K-168, D-223)")
|
|
471
|
+
if not ok:
|
|
472
|
+
notiz(" Ausgabe:", " | ".join(aus.splitlines()[-4:])[:400])
|
|
473
|
+
|
|
474
|
+
# --- Sonde 82b: der verlorene Anker ------------------------------------------
|
|
475
|
+
schreib(pfad, urtext.replace("Framework-Version", "Kernstand"))
|
|
476
|
+
aus = validator_ausgabe(root)
|
|
477
|
+
melde("SONDE", "82b", M82_ANKER in aus,
|
|
478
|
+
"Geht die Spaltenueberschrift verloren, meldet die Pruefung es - eine "
|
|
479
|
+
"Konsistenzpruefung ohne Anker bestuende sonst leise (D-23)")
|
|
480
|
+
if M82_ANKER not in aus:
|
|
481
|
+
notiz(" Ausgabe:", " | ".join(
|
|
482
|
+
z for z in aus.splitlines() if "FEHLER" in z)[:400])
|
|
483
|
+
|
|
484
|
+
# --- Sonde 82c: eine Tabelle ohne Datenzeile ---------------------------------
|
|
485
|
+
ohne = "\n".join(z for z in urtext.split("\n")
|
|
486
|
+
if not z.startswith("| `devpacks/"))
|
|
487
|
+
if ohne == urtext:
|
|
488
|
+
raise Praeparationsfehler(
|
|
489
|
+
"Sonde 82c: keine Bestandszeile erkannt - die Sonde hat ihren "
|
|
490
|
+
"Gegenstand verloren")
|
|
491
|
+
schreib(pfad, ohne)
|
|
492
|
+
aus = validator_ausgabe(root)
|
|
493
|
+
melde("SONDE", "82c", M82_LEER in aus,
|
|
494
|
+
"Eine Tabelle ohne Datenzeile meldet eine Warnung und KEIN Messergebnis "
|
|
495
|
+
"- eine Null ohne Ergebniszeile ist kein Messwert")
|
|
496
|
+
if M82_LEER not in aus:
|
|
497
|
+
notiz(" Ausgabe:", " | ".join(
|
|
498
|
+
z for z in aus.splitlines() if "82" in z)[:400])
|
|
499
|
+
finally:
|
|
500
|
+
aufraeumen(os.path.dirname(root))
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
buendel(sonden_bestandsliste_stand,
|
|
504
|
+
"Pruefung 82 haelt die Bestandsliste gegen VERSION und ist in einem "
|
|
505
|
+
"uebernehmenden Projekt gruen, ohne eine Versionsnummer zu kennen")
|