@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,739 @@
|
|
|
1
|
+
"""Sonden zu den Pruefungen 57, 58 und 60 bis 65.
|
|
2
|
+
|
|
3
|
+
Teil des Sondenskripts probe-pruefungen.py, seit 1.19.1 in Module geteilt (K-174). Die
|
|
4
|
+
Einheiten melden sich beim Laden dieses Moduls an; der Einstieg laedt die Module in der
|
|
5
|
+
Reihenfolge ihrer Nummer, und das ist die Reihenfolge der Ausgabe (D-49). Ein Modul
|
|
6
|
+
liest nur aus dem Apparat und aus frueheren Teilen."""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import re
|
|
11
|
+
|
|
12
|
+
from .apparat import (
|
|
13
|
+
ersetze, gegenprobe, lies, P, Praeparationsfehler, schreib, sonde, zeile_nach)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# --- Pruefung 57: kein ungebundener Pflichtplatzhalter als Vorbedingung -------------
|
|
17
|
+
#
|
|
18
|
+
# Der gemessene Fall stammt aus dem Blatt des Role Packs: RE-001-N09 verlangte das
|
|
19
|
+
# Uebungs-Overlay "ohne gesetztes <ISSUE_TRACKER>" - genau den Zustand, den Pruefung 55b
|
|
20
|
+
# im aktiven Overlay als Fehler meldet. Beide entstanden im SELBEN Release.
|
|
21
|
+
#
|
|
22
|
+
# WARUM ZWEI GEGENPROBEN. Eine Pruefung, die auf einen Suchtext anschlaegt, belegt mit
|
|
23
|
+
# einer Sonde nur, DASS sie meldet. Der Zuschnitt - Teilsatz statt Zelle - wird erst
|
|
24
|
+
# durch das Paar belegt: 57b traegt dieselbe Verneinung in einem ANDEREN Teilsatz und
|
|
25
|
+
# muss unbeanstandet bleiben. Ohne dieses Paar meldete die Pruefung jede Zelle mit, die
|
|
26
|
+
# irgendwo ein "ohne" fuehrt, und niemand saehe es.
|
|
27
|
+
M57_UNGEBUNDEN = "als nicht gesetzt ("
|
|
28
|
+
|
|
29
|
+
P57_BLATT = (".koolie/core/framework/role-packs/requirements-engineering/skills/"
|
|
30
|
+
"role-re-ticket/TESTS.md").replace("/", os.sep)
|
|
31
|
+
|
|
32
|
+
# Die berichtigte Fassung der Zelle - Anker beider Eingriffe.
|
|
33
|
+
P57_HEUTE = "Übungs-Overlay, dessen `<ISSUE_TRACKER>` **gebunden** ist"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _57_ungebunden(root: str) -> None:
|
|
37
|
+
"""Die Vorbedingung verlangt den Pflichtplatzhalter als nicht gesetzt."""
|
|
38
|
+
ersetze(P(root, P57_BLATT),
|
|
39
|
+
(P57_HEUTE, "Übungs-Overlay ohne gesetztes `<ISSUE_TRACKER>`, das"))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _57_anderer_teilsatz(root: str) -> None:
|
|
43
|
+
"""Gegenprobe: dieselbe Verneinung, aber in einem anderen Teilsatz.
|
|
44
|
+
|
|
45
|
+
Sie belegt den Zuschnitt. Eine Pruefung, die die ganze Zelle durchsucht, meldet
|
|
46
|
+
diesen Fall mit - und waere damit zu breit.
|
|
47
|
+
"""
|
|
48
|
+
ersetze(P(root, P57_BLATT),
|
|
49
|
+
(P57_HEUTE,
|
|
50
|
+
"Übungs-Overlay ohne gesetzte Kontrollstufe; `<ISSUE_TRACKER>` **gebunden**"))
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
sonde("57a", "Eine Vorbedingung verlangt einen Pflichtplatzhalter als nicht gesetzt - "
|
|
54
|
+
"genau den Zustand, den Pruefung 55b im aktiven Overlay als Fehler meldet",
|
|
55
|
+
_57_ungebunden, M57_UNGEBUNDEN)
|
|
56
|
+
|
|
57
|
+
gegenprobe("57a", "Das unveraenderte Repositorium bleibt unbeanstandet - keine "
|
|
58
|
+
"Vorbedingung fordert einen ungebundenen Pflichtplatzhalter",
|
|
59
|
+
None, M57_UNGEBUNDEN)
|
|
60
|
+
|
|
61
|
+
gegenprobe("57b", "Dieselbe Verneinung in einem anderen Teilsatz bleibt zulaessig - die "
|
|
62
|
+
"Pruefung arbeitet auf Teilsaetzen und nicht auf ganzen Zellen",
|
|
63
|
+
_57_anderer_teilsatz, M57_UNGEBUNDEN)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# --- Pruefung 58: Vollstaendigkeit des Decision-Record-Registers (D-169) -----------
|
|
67
|
+
M58_FEHLT = "steht in keiner Registerzeile. Ein Register, das seinen Gegenstand"
|
|
68
|
+
M58_FORM = "ist keine Kennung der Form D-NNN"
|
|
69
|
+
M58_ANKER = "Prüfung 58 hat ihren Gegenstand verloren"
|
|
70
|
+
P58_LOG = ".koolie/core/governance/DECISION_LOG.md".replace("/", os.sep)
|
|
71
|
+
P58_ROADMAP = ".koolie/core/docs/ROADMAP.md".replace("/", os.sep)
|
|
72
|
+
# ZUSAMMENGESETZT, aus demselben Grund wie bei der Sonde zu Pruefung 50: Dieses Skript
|
|
73
|
+
# liegt im Kern, und die Pruefung meldet jede dort GENANNTE Kennung ohne Registerzeile.
|
|
74
|
+
# Stuende eine der beiden woertlich hier, muesste sie in die Ausnahmemenge - und dann
|
|
75
|
+
# maesse die Sonde nichts. Auch der Kommentar nennt sie nicht.
|
|
76
|
+
D58_SYNTH = "D-" + "993"
|
|
77
|
+
D58_VERFEHLT = "D-" + "16" + "n"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _58_freie_kennung(root: str) -> None:
|
|
81
|
+
"""Belegt, dass beide Sondenkennungen wirklich fehlen - sonst messen sie nichts."""
|
|
82
|
+
text = lies(P(root, P58_LOG))
|
|
83
|
+
for kennung in (D58_SYNTH, D58_VERFEHLT):
|
|
84
|
+
if ("| " + kennung + " |") in text:
|
|
85
|
+
raise Praeparationsfehler(
|
|
86
|
+
"%s steht bereits im Register - die Sonde zu 58 braucht eine freie "
|
|
87
|
+
"Kennung" % kennung)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _58_nennung_ohne_register(root: str) -> None:
|
|
91
|
+
"""Eine Kennung wird in einem Kerntraeger genannt und steht in keiner Registerzeile."""
|
|
92
|
+
_58_freie_kennung(root)
|
|
93
|
+
pfad = P(root, P58_ROADMAP)
|
|
94
|
+
schreib(pfad, lies(pfad).rstrip("\r\n") + "\r\n\r\n"
|
|
95
|
+
+ "Sondennachtrag: Die Begruendung steht im Entscheidungssatz (%s).\r\n"
|
|
96
|
+
% D58_SYNTH)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def _58_form_verfehlt(root: str) -> None:
|
|
100
|
+
"""Der gemessene Fall: eine Kennung mit Platzhalter statt Nummer.
|
|
101
|
+
|
|
102
|
+
Genau die Bauform, mit der die Registereintraege der Pruefungen 55 und 56
|
|
103
|
+
ausgeliefert worden sind - und die ein Muster mit abschliessender Wortgrenze
|
|
104
|
+
uebersieht.
|
|
105
|
+
"""
|
|
106
|
+
_58_freie_kennung(root)
|
|
107
|
+
pfad = P(root, P58_ROADMAP)
|
|
108
|
+
schreib(pfad, lies(pfad).rstrip("\r\n") + "\r\n\r\n"
|
|
109
|
+
+ "Sondennachtrag: Die Begruendung steht im Entscheidungssatz (%s).\r\n"
|
|
110
|
+
% D58_VERFEHLT)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def _58_anker_verlieren(root: str) -> None:
|
|
114
|
+
"""Ohne Registerzeilen hat Pruefung 58 keinen Gegenstand - und sagt es."""
|
|
115
|
+
pfad = P(root, P58_LOG)
|
|
116
|
+
text = lies(pfad)
|
|
117
|
+
neu = re.sub(r"(?m)^\|(\s*)D-(\d+)(\s*)\|", r"|\1DR-\2\3|", text)
|
|
118
|
+
if neu == text:
|
|
119
|
+
raise Praeparationsfehler(
|
|
120
|
+
"Keine Registerzeile der Form '| D-NNN |' gefunden - die Sonde zum "
|
|
121
|
+
"verlorenen Anker haette nichts entfernt")
|
|
122
|
+
schreib(pfad, neu)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _58_nennung_mit_register(root: str) -> None:
|
|
126
|
+
"""Dieselbe Nennung MIT Registerzeile bleibt zulaessig - der erlaubte Fall."""
|
|
127
|
+
_58_nennung_ohne_register(root)
|
|
128
|
+
zeile_nach(P(root, P58_LOG), "| D-162 |",
|
|
129
|
+
"| %s | Sondenentscheidung | Sondenbegruendung | 2026-09-18 | "
|
|
130
|
+
"entschieden | Sondenweg |" % D58_SYNTH)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
sonde("58a", "Eine D-Kennung, die ein Kerntraeger nennt und das Register nicht fuehrt, "
|
|
134
|
+
"wird gemeldet - die Schwester des Falls von K-34 und K-55",
|
|
135
|
+
_58_nennung_ohne_register, M58_FEHLT)
|
|
136
|
+
|
|
137
|
+
sonde("58b", "Eine Kennung mit Platzhalter statt Nummer wird gemeldet - genau die "
|
|
138
|
+
"Bauform, mit der zwei Registereintraege ausgeliefert worden sind",
|
|
139
|
+
_58_form_verfehlt, M58_FORM)
|
|
140
|
+
|
|
141
|
+
sonde("58c", "Ohne Registerzeilen meldet Pruefung 58 den verlorenen Gegenstand, statt "
|
|
142
|
+
"leise zu bestehen", _58_anker_verlieren, M58_ANKER)
|
|
143
|
+
|
|
144
|
+
gegenprobe("58a", "Das unveraenderte Repositorium bleibt unbeanstandet - jede genannte "
|
|
145
|
+
"D-Kennung steht im Register", None, M58_FEHLT)
|
|
146
|
+
|
|
147
|
+
gegenprobe("58b", "Dieselbe Nennung MIT Registerzeile bleibt zulaessig - gemessen wird "
|
|
148
|
+
"das Fehlen der Zeile und nicht die Nennung", _58_nennung_mit_register,
|
|
149
|
+
M58_FEHLT)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# --- Pruefung 60: der Befehlsschlitz, den der Ausloeser braucht (D-178) -----------
|
|
153
|
+
#
|
|
154
|
+
# Die Marken sind die Meldungstexte der Pruefung, nicht ihre Nummer: Eine Sonde, die
|
|
155
|
+
# auf eine Nummer ankert, bricht bei der naechsten Umnummerierung.
|
|
156
|
+
M60_FEHLT = "die Vorbedingung nennt den Schlitz nicht"
|
|
157
|
+
M60_ANKER = "kein Skill mit 'Exec(<..._COMMAND>)' im Frontmatter gefunden"
|
|
158
|
+
P60_KATALOG = ".koolie/core/tests/TEST_CATALOG.md".replace("/", os.sep)
|
|
159
|
+
P60_KATALOGANKER = "| FW-AK-02 (Basis) |"
|
|
160
|
+
P60_SKILLS = ".koolie/core/framework/skills".replace("/", os.sep)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
# 🔴 Die eingefuegten Zeilen tragen `bestanden (Sondenbeleg, <Protokoll>; Client Pack <Kennung> <Version>)`, nicht `offen`. Eine
|
|
164
|
+
# Zeile mit `offen` hebt Kriterium 2 um eins, und Pruefung 46 meldet dann einen
|
|
165
|
+
# Rueckfall - die Gegenprobe saehe einen Fehler, den sie nicht gemeint hat.
|
|
166
|
+
# Gemessen am 2026-09-18: drei Abweichungen im ersten Sondenlauf zu 60.
|
|
167
|
+
# Wer einen erlaubten Fall herstellt, muss ihn VOLLSTAENDIG herstellen.
|
|
168
|
+
def _60_katalogzeile(root: str, zeile: str) -> None:
|
|
169
|
+
zeile_nach(P(root, P60_KATALOG), P60_KATALOGANKER, zeile)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def _60_ohne_schlitz(root: str) -> None:
|
|
173
|
+
"""Ein sitzung-Testfall ruft `/fw-change-small` und nennt keinen Befehlsschlitz.
|
|
174
|
+
|
|
175
|
+
Genau die Gestalt, in der FW-SC-01 zwei Releases lang dastand - und die zwei
|
|
176
|
+
Laeufe gekostet hat.
|
|
177
|
+
"""
|
|
178
|
+
_60_katalogzeile(root,
|
|
179
|
+
"| FW-SO-08 | Sondenzeile | Sondenvorbedingung ohne Befehlsangabe "
|
|
180
|
+
"| `/fw-change-small \"<Sondenaufgabe>\"` | Ablehnung | Zugriff "
|
|
181
|
+
"| sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def _60_mit_schlitz(root: str) -> None:
|
|
185
|
+
"""Gegenprobe: dieselbe Zeile, aber die Vorbedingung nennt beide Schlitze."""
|
|
186
|
+
_60_katalogzeile(root,
|
|
187
|
+
"| FW-SO-09 | Sondenzeile | Sondenvorbedingung; `<TEST_COMMAND>` und "
|
|
188
|
+
"`<LINT_COMMAND>` im `allow`-Korb | `/fw-change-small \"<Sondenaufgabe>\"` "
|
|
189
|
+
"| Ablehnung | Zugriff | sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def _60_andere_pruefmethode(root: str) -> None:
|
|
193
|
+
"""Gegenprobe: derselbe Ausloeser bei Pruefmethode `review`.
|
|
194
|
+
|
|
195
|
+
Eine Durchsicht braucht keinen Messbaum; die Regel gilt dem Lauf.
|
|
196
|
+
"""
|
|
197
|
+
_60_katalogzeile(root,
|
|
198
|
+
"| FW-SO-10 | Sondenzeile | Sondenvorbedingung ohne Befehlsangabe "
|
|
199
|
+
"| `/fw-change-small \"<Sondenaufgabe>\"` | Ablehnung | Zugriff "
|
|
200
|
+
"| review | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def _60_skill_ohne_schlitz(root: str) -> None:
|
|
204
|
+
"""Gegenprobe: ein Skill, dessen Frontmatter keinen Befehl ausfuehrt.
|
|
205
|
+
|
|
206
|
+
Sie belegt, dass der Zuschnitt nicht zu breit ist. `fw-repo-analyze` ist rein
|
|
207
|
+
lesend und fuehrt keinen Befehlsschlitz.
|
|
208
|
+
"""
|
|
209
|
+
_60_katalogzeile(root,
|
|
210
|
+
"| FW-SO-11 | Sondenzeile | Sondenvorbedingung ohne Befehlsangabe "
|
|
211
|
+
"| `/fw-repo-analyze <Sondenmodul>` | Ablehnung | Zugriff "
|
|
212
|
+
"| sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
def _60_anker_verlieren(root: str) -> None:
|
|
216
|
+
"""Ohne `Exec(<..._COMMAND>)` in den Skillquellen hat Pruefung 60 keinen Gegenstand.
|
|
217
|
+
|
|
218
|
+
Sie leitet ihn von dort ab; geht der Schluessel verloren, faende sie nichts und
|
|
219
|
+
bestuende leise. Die Sonde belegt, dass sie das Fehlen selbst meldet (D-23).
|
|
220
|
+
"""
|
|
221
|
+
basis = P(root, *P60_SKILLS.split(os.sep))
|
|
222
|
+
getroffen = 0
|
|
223
|
+
for name in sorted(os.listdir(basis)):
|
|
224
|
+
pfad = os.path.join(basis, name, "SKILL.md")
|
|
225
|
+
if not os.path.isfile(pfad):
|
|
226
|
+
continue
|
|
227
|
+
text = lies(pfad)
|
|
228
|
+
neu = text.replace("Exec(<TEST_COMMAND>)", "Exec(kein-schlitz)")
|
|
229
|
+
neu = neu.replace("Exec(<LINT_COMMAND>)", "Exec(kein-schlitz)")
|
|
230
|
+
neu = neu.replace("Exec(<BUILD_COMMAND>)", "Exec(kein-schlitz)")
|
|
231
|
+
if neu != text:
|
|
232
|
+
schreib(pfad, neu)
|
|
233
|
+
getroffen += 1
|
|
234
|
+
if not getroffen:
|
|
235
|
+
raise Praeparationsfehler(
|
|
236
|
+
"Kein Skill fuehrt 'Exec(<..._COMMAND>)' im Frontmatter - die Sonde zu 60 "
|
|
237
|
+
"haette keinen Anker")
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
sonde("60a", "Ein sitzung-Testfall ruft einen Skill auf, der einen Befehlsschlitz "
|
|
241
|
+
"ausfuehrt, und nennt ihn in seiner Vorbedingung nicht - genau die "
|
|
242
|
+
"Gestalt, die FW-SC-01 zwei Laeufe gekostet hat",
|
|
243
|
+
_60_ohne_schlitz, M60_FEHLT)
|
|
244
|
+
|
|
245
|
+
sonde("60b", "Ohne 'Exec(<..._COMMAND>)' in den Skillquellen meldet Pruefung 60 den "
|
|
246
|
+
"verlorenen Gegenstand, statt leise zu bestehen",
|
|
247
|
+
_60_anker_verlieren, M60_ANKER)
|
|
248
|
+
|
|
249
|
+
gegenprobe("60a", "Das unveraenderte Repositorium bleibt unbeanstandet - die drei "
|
|
250
|
+
"betroffenen Zellen nennen ihren Schlitz seit 0.66.0",
|
|
251
|
+
None, M60_FEHLT)
|
|
252
|
+
|
|
253
|
+
gegenprobe("60b", "Dieselbe Zeile mit beiden Schlitzen in der Vorbedingung bleibt "
|
|
254
|
+
"zulaessig - das ist die Abhilfe", _60_mit_schlitz, M60_FEHLT)
|
|
255
|
+
|
|
256
|
+
gegenprobe("60c", "Derselbe Ausloeser bei Pruefmethode `review` bleibt zulaessig - "
|
|
257
|
+
"eine Durchsicht braucht keinen Messbaum", _60_andere_pruefmethode,
|
|
258
|
+
M60_FEHLT)
|
|
259
|
+
|
|
260
|
+
gegenprobe("60d", "Ein Skill, dessen Frontmatter keinen Befehl ausfuehrt, bleibt ohne "
|
|
261
|
+
"Befehlsangabe zulaessig - der Zuschnitt ist nicht zu breit",
|
|
262
|
+
_60_skill_ohne_schlitz, M60_FEHLT)
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
# --- Pruefung 61: das Pruefmittelwort stammt aus dem Vokabular (D-181) ------------
|
|
266
|
+
#
|
|
267
|
+
# ANLASS. Die dreizehn Testblaetter trugen bis 0.67.0 das Wort `manuell` - 87 von 87
|
|
268
|
+
# Zellen -, und es steht in keinem Vokabular. Die Pruefungen 49 und 60 filtern auf
|
|
269
|
+
# `sitzung` und hatten dort NULL Gegenstand; nach der Umstellung meldete 60 zwanzig
|
|
270
|
+
# Zellen. Die Sonden treffen beide Orte, an denen das Wort steht: den zentralen
|
|
271
|
+
# Katalog und ein Blatt. Die Gegenproben belegen den zulaessigen Zusatz - ohne sie
|
|
272
|
+
# stuende nur fest, dass die Pruefung etwas meldet, nicht dass sie den richtigen
|
|
273
|
+
# Zuschnitt hat.
|
|
274
|
+
M61_FREMD = "steht nicht im Vokabular"
|
|
275
|
+
M61_ANKER = "keine Zelle mit Prüfmethode gefunden"
|
|
276
|
+
P61_KATALOG = ".koolie/core/tests/TEST_CATALOG.md".replace("/", os.sep)
|
|
277
|
+
P61_KATALOGANKER = "| FW-AK-02 (Basis) |"
|
|
278
|
+
P61_BLATT = ".koolie/core/framework/skills/fw-repo-analyze/TESTS.md".replace("/", os.sep)
|
|
279
|
+
P61_BLATTANKER = "| SK-001-N03 |"
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
def _61_katalogzeile(root: str, zeile: str) -> None:
|
|
283
|
+
zeile_nach(P(root, P61_KATALOG), P61_KATALOGANKER, zeile)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
def _61_fremdes_wort(root: str) -> None:
|
|
287
|
+
"""Eine Katalogzeile mit dem Wort `manuell` - genau der Stand vor 0.67.0."""
|
|
288
|
+
_61_katalogzeile(root,
|
|
289
|
+
"| FW-SO-12 | Sondenzeile | Sondenvorbedingung "
|
|
290
|
+
"| `/fw-repo-analyze <Sondenmodul>` | Ablehnung | Zugriff "
|
|
291
|
+
"| manuell | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def _61_fremdes_wort_im_blatt(root: str) -> None:
|
|
295
|
+
"""Dasselbe Wort in einem der dreizehn Blaetter - dort stand es 87-mal."""
|
|
296
|
+
zeile_nach(P(root, P61_BLATT), P61_BLATTANKER,
|
|
297
|
+
"| SK-001-S99 | Sondenzeile | Sondenvorbedingung "
|
|
298
|
+
"| `/fw-repo-analyze <Sondenmodul>` | Ablehnung | Zugriff "
|
|
299
|
+
"| manuell | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
def _61_zulaessiger_zusatz(root: str) -> None:
|
|
303
|
+
"""Gegenprobe: `sitzung` mit Zusatz - die Schreibweise beider Bestaende."""
|
|
304
|
+
_61_katalogzeile(root,
|
|
305
|
+
"| FW-SO-13 | Sondenzeile | Sondenvorbedingung "
|
|
306
|
+
"| `/fw-repo-analyze <Sondenmodul>` | Ablehnung | Zugriff "
|
|
307
|
+
"| sitzung + Skript `validate-output.py --skill fw-repo-analyze` "
|
|
308
|
+
"| bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
def _61_skript_und_review(root: str) -> None:
|
|
312
|
+
"""Gegenprobe: die beiden uebrigen Woerter des Vokabulars bleiben zulaessig.
|
|
313
|
+
|
|
314
|
+
Ohne sie belegte der Lauf nur, dass `sitzung` durchkommt - der Zuschnitt waere
|
|
315
|
+
dann zu eng, und niemand saehe es.
|
|
316
|
+
"""
|
|
317
|
+
_61_katalogzeile(root,
|
|
318
|
+
"| FW-SO-14 | Sondenzeile | Sondenvorbedingung | Sondeneingabe "
|
|
319
|
+
"| Ablehnung | Zugriff | skript+sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
320
|
+
_61_katalogzeile(root,
|
|
321
|
+
"| FW-SO-15 | Sondenzeile | Sondenvorbedingung | Sondeneingabe "
|
|
322
|
+
"| Ablehnung | Zugriff | review | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
sonde("61a", "Eine Katalogzeile mit dem Wort `manuell` - dem Wort, das 87 Blattzellen "
|
|
326
|
+
"trugen und das zwei Pruefungen ihren Gegenstand kostete",
|
|
327
|
+
_61_fremdes_wort, M61_FREMD)
|
|
328
|
+
|
|
329
|
+
sonde("61b", "Dasselbe Wort in einem der dreizehn Testblaetter: Die Pruefung liest "
|
|
330
|
+
"beide Bestaende, nicht nur den zentralen Katalog",
|
|
331
|
+
_61_fremdes_wort_im_blatt, M61_FREMD)
|
|
332
|
+
|
|
333
|
+
gegenprobe("61a", "Das unveraenderte Repositorium bleibt unbeanstandet - alle 125 "
|
|
334
|
+
"Zellen tragen seit 0.67.0 ein Wort des Vokabulars",
|
|
335
|
+
None, M61_FREMD)
|
|
336
|
+
|
|
337
|
+
gegenprobe("61b", "`sitzung` mit Zusatz bleibt zulaessig - geprueft wird das erste "
|
|
338
|
+
"Wort, nicht die ganze Zelle", _61_zulaessiger_zusatz, M61_FREMD)
|
|
339
|
+
|
|
340
|
+
gegenprobe("61c", "`skript+sitzung` und `review` bleiben zulaessig - der Zuschnitt ist "
|
|
341
|
+
"nicht auf `sitzung` verengt", _61_skript_und_review, M61_FREMD)
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
# --- Pruefung 62: die Version der Ausgabevorlage (D-185) --------------------------
|
|
345
|
+
#
|
|
346
|
+
# Die Pruefung ist entstanden, weil ein GEMESSENER LAUF sie veranlasst hat: Im ersten
|
|
347
|
+
# Buendellauf der Testblaetter meldete ein Lauf in einer Nebenbemerkung, die
|
|
348
|
+
# Attributtabelle seines Skills nenne 0.1.3 und der Kopf der Ausgabevorlage v0.1.1.
|
|
349
|
+
#
|
|
350
|
+
# ZWEI SONDEN, WEIL DIE FUNDSTELLE ZWEI GESTALTEN HAT: die Kopfzeile der Vorlage und
|
|
351
|
+
# die Zeile "Erstellt mit". Eine Sonde auf die Ueberschrift allein haette die zweite
|
|
352
|
+
# nicht getroffen - und genau sie trugen zwei Skills doppelt.
|
|
353
|
+
M62_WOERTLICH = "nennt die Version wörtlich"
|
|
354
|
+
|
|
355
|
+
P62_SKILL = ".koolie/core/framework/skills/fw-code-explain/SKILL.md".replace("/", os.sep)
|
|
356
|
+
P62_PLAN = ".koolie/core/framework/skills/fw-plan/SKILL.md".replace("/", os.sep)
|
|
357
|
+
P62_SCHLITZ = "v<Version aus dem Steckbrief>"
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
def _62_kopfzeile(root: str) -> None:
|
|
361
|
+
"""Die Kopfzeile der Ausgabevorlage traegt wieder eine woertliche Version."""
|
|
362
|
+
ersetze(P(root, P62_SKILL),
|
|
363
|
+
("## Code-Erklärung – fw-code-explain " + P62_SCHLITZ,
|
|
364
|
+
"## Code-Erklärung – fw-code-explain v9.9.9", 1))
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
def _62_erstellt_mit(root: str) -> None:
|
|
368
|
+
"""Die zweite Gestalt: die Zeile `Erstellt mit` im Ergebnisbericht."""
|
|
369
|
+
ersetze(P(root, P62_PLAN),
|
|
370
|
+
("| Erstellt mit | fw-plan " + P62_SCHLITZ + " |",
|
|
371
|
+
"| Erstellt mit | fw-plan v9.9.9 |", 1))
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
def _62_zweiter_schlitz(root: str) -> None:
|
|
375
|
+
"""Gegenprobe: der Schlitz darf mehrfach stehen - geprueft wird die ZAHL."""
|
|
376
|
+
ersetze(P(root, P62_SKILL),
|
|
377
|
+
("## Code-Erklärung – fw-code-explain " + P62_SCHLITZ,
|
|
378
|
+
"## Code-Erklärung – fw-code-explain " + P62_SCHLITZ
|
|
379
|
+
+ " (Vorlage " + P62_SCHLITZ + ")", 1))
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
sonde("62a", "Die Kopfzeile der Ausgabevorlage traegt wieder eine woertliche Version - "
|
|
383
|
+
"genau der Stand vor 0.68.0 in zehn von dreizehn Traegern",
|
|
384
|
+
_62_kopfzeile, M62_WOERTLICH)
|
|
385
|
+
|
|
386
|
+
sonde("62b", "Dieselbe Zahl in der Zeile `Erstellt mit` - die zweite Gestalt, die ein "
|
|
387
|
+
"Zuschnitt auf die Ueberschrift verfehlt haette",
|
|
388
|
+
_62_erstellt_mit, M62_WOERTLICH)
|
|
389
|
+
|
|
390
|
+
gegenprobe("62a", "Das unveraenderte Repositorium bleibt unbeanstandet - dreizehn "
|
|
391
|
+
"Traeger verweisen seit 0.68.0 auf ihren Steckbrief",
|
|
392
|
+
None, M62_WOERTLICH)
|
|
393
|
+
|
|
394
|
+
gegenprobe("62b", "Der Schlitz darf mehrfach in einer Zeile stehen - geprueft wird die "
|
|
395
|
+
"woertliche ZAHL, nicht der Buchstabe v",
|
|
396
|
+
_62_zweiter_schlitz, M62_WOERTLICH)
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
# --- Pruefung 63: der Nummernverweis, der ins Leere zeigt (D-193) ------------------
|
|
400
|
+
#
|
|
401
|
+
# Drei Sonden, weil der Gegenstand drei Gestalten hat: der Verweis mit vollem Pfad,
|
|
402
|
+
# der Verweis mit blossem Dateinamen (vier Testblaetter nennen ihr Ziel so - wer nur
|
|
403
|
+
# den vollen Pfad sucht, zaehlt 25 statt 30) und die MITTE einer bis-Spanne.
|
|
404
|
+
#
|
|
405
|
+
# Die zweite Gegenprobe ist die wichtigere: Eine Aufzeichnung darf denselben Verweis
|
|
406
|
+
# tragen, ohne gemeldet zu werden. Ein Protokoll nennt den Stand seines Tages (D-141).
|
|
407
|
+
M63_INS_LEERE = "diese Nummer fuehrt dort keine Ueberschrift"
|
|
408
|
+
|
|
409
|
+
P63_PROMPT = ".koolie/core/prompts/02-impact-analysis.md".replace("/", os.sep)
|
|
410
|
+
P63_BLATT = ".koolie/core/framework/skills/fw-error-analyze/TESTS.md".replace("/", os.sep)
|
|
411
|
+
P63_ZIEL = ".koolie/core/framework/core/02-privacy.md".replace("/", os.sep)
|
|
412
|
+
P63_PROTOKOLL = (".koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-1.md"
|
|
413
|
+
.replace("/", os.sep))
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
def _63_voller_pfad(root: str) -> None:
|
|
417
|
+
"""Ein anweisender Traeger nennt eine Nummer, die das Ziel nicht fuehrt."""
|
|
418
|
+
ersetze(P(root, P63_PROMPT),
|
|
419
|
+
("02-privacy.md` Abschnitt 3.3 und 3.4",
|
|
420
|
+
"02-privacy.md` Abschnitt 3.3 und 3.11", 1))
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
def _63_blosser_name(root: str) -> None:
|
|
424
|
+
"""Dieselbe Luecke in der zweiten Ausdrucksform - ohne Pfad, nur Dateiname."""
|
|
425
|
+
ersetze(P(root, P63_BLATT),
|
|
426
|
+
("`02-privacy.md` Abschnitt 3.3 angefordert",
|
|
427
|
+
"`02-privacy.md` Abschnitt 3.11 angefordert", 1))
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
def _63_spannenmitte(root: str) -> None:
|
|
431
|
+
"""Die MITTE einer bis-Spanne: `3.3 bis 3.5` nennt auch 3.4."""
|
|
432
|
+
ersetze(P(root, P63_ZIEL), ("### 3.4 Tickets", "### 3.4a Tickets", 1))
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
def _63_aufzeichnung(root: str) -> None:
|
|
436
|
+
"""Eine Aufzeichnung traegt denselben Verweis - und bleibt unbeanstandet."""
|
|
437
|
+
zeile_nach(P(root, P63_PROTOKOLL), "# Protokoll",
|
|
438
|
+
"\nGemessen gegen `.koolie/core/framework/core/02-privacy.md` "
|
|
439
|
+
"Abschnitt 3.11 - der Stand jenes Tages.")
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
sonde("63a", "Ein anweisender Traeger nennt `02-privacy.md` Abschnitt 3.11 - die "
|
|
443
|
+
"Nummer fuehrt dort keine Ueberschrift",
|
|
444
|
+
_63_voller_pfad, M63_INS_LEERE)
|
|
445
|
+
|
|
446
|
+
sonde("63b", "Dieselbe Luecke im blossen Dateinamen: vier Testblaetter nennen ihr Ziel "
|
|
447
|
+
"ohne Pfad, und wer nur den Pfad sucht, zaehlt 25 statt 30",
|
|
448
|
+
_63_blosser_name, M63_INS_LEERE)
|
|
449
|
+
|
|
450
|
+
sonde("63c", "Die MITTE einer bis-Spanne: faellt die Ueberschrift 3.4 weg, muss "
|
|
451
|
+
"`Abschnitt 3.3 bis 3.5` sie trotzdem vermissen",
|
|
452
|
+
_63_spannenmitte, M63_INS_LEERE)
|
|
453
|
+
|
|
454
|
+
gegenprobe("63a", "Das unveraenderte Repositorium bleibt unbeanstandet - seit 0.70.0 "
|
|
455
|
+
"loesen alle dreissig Nummernverweise auf",
|
|
456
|
+
None, M63_INS_LEERE)
|
|
457
|
+
|
|
458
|
+
gegenprobe("63b", "Eine Aufzeichnung darf denselben Verweis tragen: Ein Protokoll "
|
|
459
|
+
"nennt den Stand seines Tages und wird nicht geglaettet (D-141)",
|
|
460
|
+
_63_aufzeichnung, M63_INS_LEERE)
|
|
461
|
+
|
|
462
|
+
# --- Pruefung 64: die Ausgabemarke, die der Skill nicht verlangt (D-197) ----------
|
|
463
|
+
#
|
|
464
|
+
# Drei Sonden und drei Gegenproben, und die dritte Gegenprobe ist die wichtigere
|
|
465
|
+
# Haelfte: Die LETZTE Zelle einer Zeile ist der Ergebnisstatus und damit eine
|
|
466
|
+
# Aufzeichnung (D-117). Ein Lauf, der die Marke geschrieben HAT, darf das dort
|
|
467
|
+
# berichten - wer die Zeile statt der Spalte nimmt, entfernt den Gegenstand mit
|
|
468
|
+
# (dieselbe Trennlinie, die Pruefung 48 zieht).
|
|
469
|
+
#
|
|
470
|
+
# 🔴 Die eingefuegten Zeilen tragen `bestanden (Sondenbeleg, <Protokoll>; Client Pack <Kennung> <Version>)`, nicht `offen` - eine
|
|
471
|
+
# Zeile mit `offen` hebt Kriterium 2 um eins, und Pruefung 46 meldete dann einen
|
|
472
|
+
# Rueckfall (0.66.0). Und sie nennen die Befehlsschlitze in ihrer Vorbedingung,
|
|
473
|
+
# sonst meldete Pruefung 60 sie nebenbei mit.
|
|
474
|
+
M64_UNGEDECKT = "weder im Ausgabeformat (Abschnitt 5) noch"
|
|
475
|
+
M64_ANKER = "keine SKILL.md fuehrt eine Ausgabemarke in Abschnitt 5 oder 6"
|
|
476
|
+
|
|
477
|
+
P64_KATALOG = ".koolie/core/tests/TEST_CATALOG.md".replace("/", os.sep)
|
|
478
|
+
P64_KATALOGANKER = "| FW-AK-02 (Basis) |"
|
|
479
|
+
P64_SKILLS = ".koolie/core/framework/skills".replace("/", os.sep)
|
|
480
|
+
P64_SCHLITZE = "`<TEST_COMMAND>` und `<LINT_COMMAND>` im `allow`-Korb"
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
def _64_katalogzeile(root: str, zeile: str) -> None:
|
|
484
|
+
zeile_nach(P(root, P64_KATALOG), P64_KATALOGANKER, zeile)
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
def _64_rueckfrage_ungedeckt(root: str) -> None:
|
|
488
|
+
"""Eine Zelle verlangt [RUECKFRAGE] - die steht in KEINEM Abschnitt 5 oder 6.
|
|
489
|
+
|
|
490
|
+
Genau die Gestalt, in der siebzehn Zellen bis 0.73.0 dastanden. `sk004n01` hat
|
|
491
|
+
am 2026-09-19 vorgefuehrt, was sie kostet: Der Lauf hat angehalten und
|
|
492
|
+
zurueckgefragt und die Zeichenfolge nicht geschrieben - weil sie nirgends
|
|
493
|
+
verlangt ist.
|
|
494
|
+
"""
|
|
495
|
+
_64_katalogzeile(root,
|
|
496
|
+
"| FW-SO-12 | Sondenzeile | Sondenvorbedingung; " + P64_SCHLITZE +
|
|
497
|
+
" | `/fw-change-small \"<Sondenaufgabe>\"` | [RÜCKFRAGE] zur Aufteilung "
|
|
498
|
+
"| Zugriff | sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
def _64_halt_ungedeckt(root: str) -> None:
|
|
502
|
+
"""Eine Zelle verlangt [HALT] von einem Skill, der sie nur als Anweisung fuehrt.
|
|
503
|
+
|
|
504
|
+
`fw-refactor` nennt [HALT] elfmal - in Arbeitsschritten und Fehlerbildern, und
|
|
505
|
+
in keinem Ausgabeformat. Fuenf seiner sieben Zellen standen so da.
|
|
506
|
+
"""
|
|
507
|
+
_64_katalogzeile(root,
|
|
508
|
+
"| FW-SO-13 | Sondenzeile | Sondenvorbedingung; " + P64_SCHLITZE +
|
|
509
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | [HALT] nach dem "
|
|
510
|
+
"Testnachweis | Zugriff | sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
def _64_unzulaessig_ungedeckt(root: str) -> None:
|
|
514
|
+
"""Dieselbe Luecke in der zweiten gepruefen Spalte: Unzulaessiges Verhalten.
|
|
515
|
+
|
|
516
|
+
Wer nur die Erwartungsspalte liest, uebersieht sie - `SK-011-P01` trug die
|
|
517
|
+
Marke in beiden.
|
|
518
|
+
"""
|
|
519
|
+
_64_katalogzeile(root,
|
|
520
|
+
"| FW-SO-14 | Sondenzeile | Sondenvorbedingung; " + P64_SCHLITZE +
|
|
521
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | Ablehnung "
|
|
522
|
+
"| Änderungen vor dem [HALT] | sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
def _64_gedeckt(root: str) -> None:
|
|
526
|
+
"""Gegenprobe: dieselbe Marke bei einem Skill, der sie in Abschnitt 5 und 6 fuehrt.
|
|
527
|
+
|
|
528
|
+
Das ist die Abhilfe - und zugleich der Beleg, dass der Zuschnitt nicht zu breit
|
|
529
|
+
ist. `fw-change-small` fuehrt [HALT] in beiden Abschnitten.
|
|
530
|
+
"""
|
|
531
|
+
_64_katalogzeile(root,
|
|
532
|
+
"| FW-SO-15 | Sondenzeile | Sondenvorbedingung; " + P64_SCHLITZE +
|
|
533
|
+
" | `/fw-change-small \"<Sondenaufgabe>\"` | [HALT] vor dem ersten "
|
|
534
|
+
"Schreibzugriff | Zugriff | sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278) |")
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
def _64_letzte_zelle(root: str) -> None:
|
|
538
|
+
"""Gegenprobe: die Marke in der LETZTEN Zelle - dem Ergebnisstatus.
|
|
539
|
+
|
|
540
|
+
Ein Lauf, der [HALT] geschrieben HAT, darf das berichten. Die letzte Zelle ist
|
|
541
|
+
eine Aufzeichnung (D-117, D-141); wer die Zeile statt der Spalte nimmt,
|
|
542
|
+
entfernt den Gegenstand mit. Dieselbe Spalten-Ausnahme wie bei Pruefung 48.
|
|
543
|
+
"""
|
|
544
|
+
_64_katalogzeile(root,
|
|
545
|
+
"| FW-SO-16 | Sondenzeile | Sondenvorbedingung; " + P64_SCHLITZE +
|
|
546
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | Anhalten nach dem "
|
|
547
|
+
"Testnachweis | Zugriff | sitzung | bestanden (Sondenbeleg, `.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`; Client Pack `claude-code` 2.1.278): der Lauf hat "
|
|
548
|
+
"[HALT] wörtlich geschrieben |")
|
|
549
|
+
|
|
550
|
+
|
|
551
|
+
def _64_anker_verlieren(root: str) -> None:
|
|
552
|
+
"""Ohne Marke in Abschnitt 5 oder 6 hat Pruefung 64 keinen Gegenstand.
|
|
553
|
+
|
|
554
|
+
Sie leitet ihn von dort ab; geht er verloren, faende sie nichts und bestuende
|
|
555
|
+
leise. Die Sonde belegt, dass sie das Fehlen selbst meldet (D-23).
|
|
556
|
+
"""
|
|
557
|
+
basis = P(root, *P64_SKILLS.split(os.sep))
|
|
558
|
+
getroffen = 0
|
|
559
|
+
for name in sorted(os.listdir(basis)):
|
|
560
|
+
pfad = os.path.join(basis, name, "SKILL.md")
|
|
561
|
+
if not os.path.isfile(pfad):
|
|
562
|
+
continue
|
|
563
|
+
text = lies(pfad)
|
|
564
|
+
teile = text.split("## 5. Ausgabeformat")
|
|
565
|
+
if len(teile) != 2:
|
|
566
|
+
continue
|
|
567
|
+
neu = teile[0] + "## 5. Ausgabeformat" + teile[1].replace(
|
|
568
|
+
"[HALT]", "[SONDENMARKE]").replace("[RÜCKFRAGE]", "[SONDENMARKE]")
|
|
569
|
+
if neu != text:
|
|
570
|
+
schreib(pfad, neu)
|
|
571
|
+
getroffen += 1
|
|
572
|
+
if not getroffen:
|
|
573
|
+
raise Praeparationsfehler(
|
|
574
|
+
"Keine SKILL.md fuehrt eine Ausgabemarke ab Abschnitt 5 - die Sonde zu 64 "
|
|
575
|
+
"haette keinen Anker")
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
sonde("64a", "Eine Zelle verlangt [RUECKFRAGE] - die Marke steht in KEINEM Abschnitt 5 "
|
|
579
|
+
"und KEINEM Abschnitt 6 der zwoelf Skills und ist durchgehend "
|
|
580
|
+
"Handlungsmarke",
|
|
581
|
+
_64_rueckfrage_ungedeckt, M64_UNGEDECKT)
|
|
582
|
+
|
|
583
|
+
sonde("64b", "Eine Zelle verlangt [HALT] von fw-refactor, das die Marke nur in "
|
|
584
|
+
"Arbeitsschritten und Fehlerbildern fuehrt - fuenf seiner sieben Zellen "
|
|
585
|
+
"standen so da",
|
|
586
|
+
_64_halt_ungedeckt, M64_UNGEDECKT)
|
|
587
|
+
|
|
588
|
+
sonde("64c", "Dieselbe Luecke in der Spalte Unzulaessiges Verhalten - wer nur die "
|
|
589
|
+
"Erwartungsspalte liest, uebersieht sie",
|
|
590
|
+
_64_unzulaessig_ungedeckt, M64_UNGEDECKT)
|
|
591
|
+
|
|
592
|
+
sonde("64d", "Ohne Ausgabemarke in Abschnitt 5 oder 6 meldet Pruefung 64 den "
|
|
593
|
+
"verlorenen Gegenstand, statt leise zu bestehen",
|
|
594
|
+
_64_anker_verlieren, M64_ANKER)
|
|
595
|
+
|
|
596
|
+
gegenprobe("64a", "Das unveraenderte Repositorium bleibt unbeanstandet - seit 0.73.0 "
|
|
597
|
+
"ist jede der zehn verbliebenen Markennennungen gedeckt",
|
|
598
|
+
None, M64_UNGEDECKT)
|
|
599
|
+
|
|
600
|
+
gegenprobe("64b", "Dieselbe Marke bei einem Skill, der sie in Abschnitt 5 UND 6 "
|
|
601
|
+
"fuehrt, bleibt zulaessig - der Zuschnitt ist nicht zu breit",
|
|
602
|
+
_64_gedeckt, M64_UNGEDECKT)
|
|
603
|
+
|
|
604
|
+
gegenprobe("64c", "Die Marke in der LETZTEN Zelle bleibt zulaessig: Der "
|
|
605
|
+
"Ergebnisstatus ist eine Aufzeichnung, und ein Lauf, der sie "
|
|
606
|
+
"geschrieben HAT, darf das berichten (D-117)",
|
|
607
|
+
_64_letzte_zelle, M64_UNGEDECKT)
|
|
608
|
+
|
|
609
|
+
# --- Pruefung 65: der Ergebnisstatus ohne Beleg (D-202) ---------------------------
|
|
610
|
+
#
|
|
611
|
+
# Vier Sonden und drei Gegenproben. Die zweite Gegenprobe traegt die Trennlinie: Eine
|
|
612
|
+
# `review`-Zelle braucht KEIN Client Pack. D-117 spricht von DYNAMISCHEN Tests; ein
|
|
613
|
+
# Dokumentenreview misst keinen Client, und wer die Pflicht auf jede Zelle zieht,
|
|
614
|
+
# verlangt eine Angabe, die es nicht gibt.
|
|
615
|
+
#
|
|
616
|
+
# 🔴 Die eingefuegten Zeilen tragen `bestanden (Sondenbeleg, <Protokoll>; Client Pack
|
|
617
|
+
# <Kennung> <Version>)`, nicht `offen` - eine Zeile mit `offen` hebt Kriterium 2 um
|
|
618
|
+
# eins, und Pruefung 46 meldete dann einen Rueckfall (0.66.0). Und sie nennen die
|
|
619
|
+
# Befehlsschlitze in ihrer Vorbedingung, sonst meldete Pruefung 60 sie nebenbei mit.
|
|
620
|
+
M65_KEIN_PROTOKOLL = "nennt kein Protokoll unter"
|
|
621
|
+
M65_KEIN_PACK = "nennt kein Client Pack mit Produktversion"
|
|
622
|
+
M65_VOKABULAR = "beginnt nicht mit einem Wort des Vokabulars"
|
|
623
|
+
M65_ANKER = "das Vokabular des Ergebnisstatus ist unter Punkt 4 nicht mehr auffindbar"
|
|
624
|
+
|
|
625
|
+
P65_KATALOG = ".koolie/core/tests/TEST_CATALOG.md".replace("/", os.sep)
|
|
626
|
+
P65_KATALOGANKER = "| FW-AK-02 (Basis) |"
|
|
627
|
+
P65_SCHLITZE = "`<TEST_COMMAND>` und `<LINT_COMMAND>` im `allow`-Korb"
|
|
628
|
+
P65_PROTOKOLL = "`.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md`"
|
|
629
|
+
P65_PACK = "Client Pack `claude-code` 2.1.278"
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
def _65_katalogzeile(root: str, zeile: str) -> None:
|
|
633
|
+
zeile_nach(P(root, P65_KATALOG), P65_KATALOGANKER, zeile)
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
def _65_ohne_protokoll(root: str) -> None:
|
|
637
|
+
"""Ein `bestanden` ohne Protokollverweis - die Gestalt, die Punkt 4 verbietet.
|
|
638
|
+
|
|
639
|
+
Punkt 4 sagt das seit der Erstfassung des Katalogs, und keine Pruefung hat es
|
|
640
|
+
bis 0.74.0 durchgesetzt. Eine Abnahme ohne Beleg ist eine Behauptung.
|
|
641
|
+
"""
|
|
642
|
+
_65_katalogzeile(root,
|
|
643
|
+
"| FW-SO-17 | Sondenzeile | Sondenvorbedingung; " + P65_SCHLITZE +
|
|
644
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | Anhalten | Zugriff "
|
|
645
|
+
"| sitzung | bestanden (Sondenbeleg ohne Protokollverweis) |")
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
def _65_ohne_pack(root: str) -> None:
|
|
649
|
+
"""Ein `bestanden` einer sitzung-Zelle mit Protokoll, aber ohne Pack und Version.
|
|
650
|
+
|
|
651
|
+
Das ist die Haelfte, die D-117 traegt: Ein Ergebnisstatus DECKT KEIN ANDERES
|
|
652
|
+
PACK. Ohne die Version sagt er nicht, gegen welchen Produktstand gemessen wurde -
|
|
653
|
+
und genau das ist am 2026-09-18 an einer vierzig Releases alten Zelle
|
|
654
|
+
aufgefallen (D-113).
|
|
655
|
+
"""
|
|
656
|
+
_65_katalogzeile(root,
|
|
657
|
+
"| FW-SO-18 | Sondenzeile | Sondenvorbedingung; " + P65_SCHLITZE +
|
|
658
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | Anhalten | Zugriff "
|
|
659
|
+
"| sitzung | bestanden (" + P65_PROTOKOLL + ") |")
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
def _65_fremdes_wort(root: str) -> None:
|
|
663
|
+
"""Ein Statuswort, das im Vokabular von Punkt 4 nicht steht.
|
|
664
|
+
|
|
665
|
+
Dieselbe Bauform wie beim Pruefmittelwort `manuell` (D-181): ein Wort, das fuer
|
|
666
|
+
jeden Leser richtig aussieht und fuer jeden Zaehler ein Fremdwort ist.
|
|
667
|
+
"""
|
|
668
|
+
_65_katalogzeile(root,
|
|
669
|
+
"| FW-SO-19 | Sondenzeile | Sondenvorbedingung; " + P65_SCHLITZE +
|
|
670
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | Anhalten | Zugriff "
|
|
671
|
+
"| sitzung | geprüft (" + P65_PROTOKOLL + "; " + P65_PACK + ") |")
|
|
672
|
+
|
|
673
|
+
|
|
674
|
+
def _65_anker_verlieren(root: str) -> None:
|
|
675
|
+
"""Ohne die Vokabularzeile von Punkt 4 hat Pruefung 65 keinen Gegenstand.
|
|
676
|
+
|
|
677
|
+
Sie leitet es von dort ab statt es zu pflegen; geht die Zeile verloren, faende
|
|
678
|
+
sie nichts und bestuende leise. Die Sonde belegt, dass sie das Fehlen selbst
|
|
679
|
+
meldet (D-23).
|
|
680
|
+
"""
|
|
681
|
+
pfad = P(root, P65_KATALOG)
|
|
682
|
+
text = lies(pfad)
|
|
683
|
+
if "**Ergebnisstatus:**" not in text:
|
|
684
|
+
raise Praeparationsfehler(
|
|
685
|
+
"TEST_CATALOG.md fuehrt die Marke '**Ergebnisstatus:**' nicht mehr - die "
|
|
686
|
+
"Sonde zu 65 haette keinen Anker")
|
|
687
|
+
schreib(pfad, text.replace("**Ergebnisstatus:**", "**Status des Ergebnisses:**", 1))
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
def _65_review_ohne_pack(root: str) -> None:
|
|
691
|
+
"""Gegenprobe: eine review-Zelle mit Protokoll, aber ohne Pack - zulaessig.
|
|
692
|
+
|
|
693
|
+
Das ist die Trennlinie, und sie belegt, dass der Zuschnitt nicht zu breit ist:
|
|
694
|
+
D-117 spricht von dynamischen Tests. Ein Dokumentenreview misst keinen Client.
|
|
695
|
+
"""
|
|
696
|
+
_65_katalogzeile(root,
|
|
697
|
+
"| FW-SO-20 | Sondenzeile | Sondenvorbedingung | Abgleich zweier Fassungen "
|
|
698
|
+
"| keine Abweichung | Abweichung | review | bestanden (" +
|
|
699
|
+
P65_PROTOKOLL + ") |")
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
def _65_vollstaendig(root: str) -> None:
|
|
703
|
+
"""Gegenprobe: der vollstaendige Fall - Protokoll, Pack und Version.
|
|
704
|
+
|
|
705
|
+
Er belegt, dass die Pruefung einen richtig belegten Status durchlaesst; ohne
|
|
706
|
+
ihn wuesste niemand, ob sie ueberhaupt etwas durchlaesst.
|
|
707
|
+
"""
|
|
708
|
+
_65_katalogzeile(root,
|
|
709
|
+
"| FW-SO-21 | Sondenzeile | Sondenvorbedingung; " + P65_SCHLITZE +
|
|
710
|
+
" | `/fw-refactor <Sondenmodul> \"<Sondenziel>\"` | Anhalten | Zugriff "
|
|
711
|
+
"| sitzung | bestanden (" + P65_PROTOKOLL + "; " + P65_PACK + ") |")
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
sonde("65a", "Ein `bestanden` ohne Protokollverweis - Punkt 4 verlangt ihn seit der "
|
|
715
|
+
"Erstfassung, und keine Pruefung hat es durchgesetzt",
|
|
716
|
+
_65_ohne_protokoll, M65_KEIN_PROTOKOLL)
|
|
717
|
+
|
|
718
|
+
sonde("65b", "Ein `bestanden` einer sitzung-Zelle ohne Client Pack und Produktversion "
|
|
719
|
+
"- ein Ergebnisstatus deckt kein anderes Pack (D-117)",
|
|
720
|
+
_65_ohne_pack, M65_KEIN_PACK)
|
|
721
|
+
|
|
722
|
+
sonde("65c", "Ein Statuswort ausserhalb des Vokabulars von Punkt 4 - dieselbe Bauform "
|
|
723
|
+
"wie das Pruefmittelwort `manuell` (D-181)",
|
|
724
|
+
_65_fremdes_wort, M65_VOKABULAR)
|
|
725
|
+
|
|
726
|
+
sonde("65d", "Ohne die Vokabularzeile unter Punkt 4 meldet Pruefung 65 den verlorenen "
|
|
727
|
+
"Gegenstand, statt leise zu bestehen",
|
|
728
|
+
_65_anker_verlieren, M65_ANKER)
|
|
729
|
+
|
|
730
|
+
gegenprobe("65a", "Das unveraenderte Repositorium bleibt unbeanstandet - alle 125 "
|
|
731
|
+
"Ergebniszellen tragen ihren Beleg",
|
|
732
|
+
None, M65_KEIN_PROTOKOLL)
|
|
733
|
+
|
|
734
|
+
gegenprobe("65b", "Eine review-Zelle ohne Client Pack bleibt zulaessig: D-117 spricht "
|
|
735
|
+
"von DYNAMISCHEN Tests, ein Dokumentenreview misst keinen Client",
|
|
736
|
+
_65_review_ohne_pack, M65_KEIN_PACK)
|
|
737
|
+
|
|
738
|
+
gegenprobe("65c", "Der vollstaendige Fall - Protokoll, Pack und Version - laeuft durch",
|
|
739
|
+
_65_vollstaendig, M65_KEIN_PROTOKOLL)
|