@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
package/.koolie/core/governance/change-requests/CR-2026-062-werkzeugabbildung-des-frontmatters.md
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Änderungsantrag `CR-2026-062`
|
|
2
|
+
|
|
3
|
+
| Feld | Inhalt |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Titel | Zwei Listen für dieselbe Sache – es sind vier, und die unbewachte trägt die Zusagen S3 und A1 |
|
|
6
|
+
| Antragstellende Rolle | `<FRAMEWORK_OWNER>` |
|
|
7
|
+
| Datum | 2026-09-13 |
|
|
8
|
+
| Betroffene Artefakte | `clientmap.py` (Vokabular, Brücke, `frontmatter_werkzeuge`), `install.py` (drei Aufrufstellen, `DENY_VERB_EIMER` entfällt), `clients/devin-desktop/manifest.json` (`tool_names_unmapped` in beiden Blöcken), `clients/devin-desktop/CLIENT_PACK.md` (Änderungsverlauf), `clients/README.md` (Anleitung für ein neues Pack), `tests/scripts/validate-framework.py` (Prüfung 38 neu, Kopfkommentar 32 bis 38, nachgezogener Anker und Verbtabelle der Prüfung 33), `tests/scripts/probe-pruefungen.py` (neun Sonden, zwei Gegenproben), `governance/DECISION_LOG.md` |
|
|
9
|
+
| Ebene laut Entscheidungsbaum 6 | **Core** – die Abbildung trägt die Zusagen S3 (Werkzeugsperre je Skill) und A1 (rein lesendes Reviewprofil); beide sind Framework-Gut |
|
|
10
|
+
| Art | Änderung; erledigt **Kandidat 1** der Übergabe (seit 0.35.0 vertagt) und **Kandidat 4** (Kopfkommentar) |
|
|
11
|
+
| Dringlichkeit | **P2.** Ausgeliefert ist heute nichts Falsches – keine der vierzehn Quellen trifft einen der stillen Fälle. Die Bauform ist trotzdem die schwerste, die dieses Projekt kennt: eine Abbildung, die bei jeder Lücke stumm das Falsche tut, an zwei Stellen, unter zwei Zusagen |
|
|
12
|
+
|
|
13
|
+
## 1. Anlass
|
|
14
|
+
|
|
15
|
+
**Kandidat 1** steht seit fünf Releases: *„`skill_frontmatter.tool_names` und `hook_tools`
|
|
16
|
+
sind zwei Listen für dieselbe Sache und auseinandergelaufen – `tool_names.edit` führt kein
|
|
17
|
+
`NotebookEdit`."* Vertagt worden ist er mit Grund: *„Die Vereinheitlichung ändert
|
|
18
|
+
`allowed-tools` still mit, und das gehört in einen eigenen Antrag."*
|
|
19
|
+
|
|
20
|
+
**Der Befund ist gegengeprüft** (`tests/protocols/2026-09-13-gegenpruefung-werkzeugabbildung.md`,
|
|
21
|
+
zwanzig Messungen, davon sieben Kontrollläufe). **Er bestätigt sich – und er ist ein
|
|
22
|
+
anderer, als der Kandidat sagt.**
|
|
23
|
+
|
|
24
|
+
### 1.1 Befund 1: Es sind vier Abbildungen, nicht zwei
|
|
25
|
+
|
|
26
|
+
| Stelle | Vokabular | Trägt | Bewacht? |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| `skill_frontmatter.tool_names` | `read, grep, glob, edit, exec` | `allowed-tools` – eine **Vorabfreigabe** (B01) | **nein** |
|
|
29
|
+
| `agent_frontmatter.tool_names` | dieselben fünf, zeichengleicher Block | `tools` des Profils – eine **Entfernung aus dem Vorrat** (A1, D-68) | **nein** |
|
|
30
|
+
| `hook_tools` | `read, search, exec, write` | Hook-Matcher **und** `disallowed-tools` (S3, D-64) | ja |
|
|
31
|
+
| `permission_tools` | `read, search, write, exec, fetch, mcp` | die Berechtigungsdatei, B1 bis B6 | ja |
|
|
32
|
+
|
|
33
|
+
Dazu `DENY_VERB_EIMER` in `install.py` als fünfte Stelle: die Brücke zwischen dem
|
|
34
|
+
Vokabular der Quelle und dem der Durchsetzung. Sie führt `edit`, `write`, `exec`, `read`
|
|
35
|
+
und `search` – **drei Verben der Quelle und zwei der Durchsetzungsschicht** – und kennt
|
|
36
|
+
`grep` und `glob` nicht.
|
|
37
|
+
|
|
38
|
+
### 1.2 Befund 2: Drei Abbildungen brechen ab, eine reicht durch
|
|
39
|
+
|
|
40
|
+
Dieselbe Lücke, an einer echten Installation gemessen:
|
|
41
|
+
|
|
42
|
+
| Eingriff ins Manifest | Ergebnis |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `skill_frontmatter.tool_names` verliert `grep` | **durchgelaufen** → `allowed-tools: Read, grep, Glob` |
|
|
45
|
+
| `agent_frontmatter.tool_names` verliert `read` | **durchgelaufen** → `tools: read, Grep, Glob` |
|
|
46
|
+
| **beide `tool_names`-Blöcke ganz geleert** | **durchgelaufen** → `tools: read, grep, glob` |
|
|
47
|
+
| *Kontrolle:* `hook_tools` verliert `search` | **Abbruch** |
|
|
48
|
+
| *Kontrolle:* `hook_tools.search` leer | **Abbruch** |
|
|
49
|
+
| *Kontrolle:* `permission_tools` verliert `exec` | **Abbruch** |
|
|
50
|
+
|
|
51
|
+
Die dritte Zeile liefert das Reviewprofil `fw-reviewer` mit drei Werkzeugnamen aus, die
|
|
52
|
+
der Client nicht kennt – und stellt damit genau den Fall her, den Zeile **A1** desselben
|
|
53
|
+
Packs als **nicht gemessen** ausweist: *„dass ein Profil, dessen `tools`-Liste sich zu
|
|
54
|
+
keinem Werkzeug auflöst, gar nicht erst gestartet wird."*
|
|
55
|
+
|
|
56
|
+
### 1.3 Befund 3: `permissions.deny: glob` erzeugt lautlos keine Sperre
|
|
57
|
+
|
|
58
|
+
Gemessen: `deny: [glob, grep]` in `fw-plan/SKILL.md` – erzeugte Sperre **keine**,
|
|
59
|
+
Validator **0 Fehler, 0 Warnungen**. Dieselbe Bauform, die D-66 für Argumentmuster
|
|
60
|
+
gemessen hat: *„Wer ein Argumentmuster schreibt, hat gar keine Schranke, nicht bloß eine
|
|
61
|
+
gröbere."*
|
|
62
|
+
|
|
63
|
+
**Und diese Nicht-Abbildung ist nicht deklariert.** Der Docstring von `deny_abbilden`
|
|
64
|
+
führt die *andere* Nicht-Abbildung – die befehlsgenauen Einträge – mit ausdrücklichem
|
|
65
|
+
Verweis auf D-47 („Bauart wie `hook_tools_absent`") und im Manifest unter
|
|
66
|
+
`skill_deny_unmapped`. **`grep` und `glob` stehen nirgends.** Ein Kanal ohne Deklaration,
|
|
67
|
+
in derselben Funktion, die D-47 zitiert.
|
|
68
|
+
|
|
69
|
+
**Betroffen ist heute niemand:** Keine der vierzehn ausgelieferten Quellen schreibt
|
|
70
|
+
`deny: grep` oder `deny: glob`. Für einen projekteigenen `prj-*`-Skill wirkt der Befund
|
|
71
|
+
sofort.
|
|
72
|
+
|
|
73
|
+
### 1.4 Befund 4 – die Entlastung: Der Kandidat schlägt die falsche Behebung vor
|
|
74
|
+
|
|
75
|
+
Der inhaltliche Unterschied ist echt, **seine Richtung ist die zulässige**: Bei allen fünf
|
|
76
|
+
Verbpaaren ist die Sperrliste mindestens so weit wie die Vorabfreigabe
|
|
77
|
+
(`tool_names.edit` = `Edit, Write` ⊆ `hook_tools.write` = `Edit, Write, NotebookEdit`).
|
|
78
|
+
|
|
79
|
+
**`tool_names` auf `hook_tools` zu heben wäre eine Ausweitung** der Vorabfreigabe; die
|
|
80
|
+
Gegenrichtung wäre eine Lücke in einer Sperre. **Zu vereinheitlichen ist nicht der Inhalt
|
|
81
|
+
der Listen, sondern die Brücke zwischen den Vokabularen und die Disziplin, mit der sie
|
|
82
|
+
bewacht werden.**
|
|
83
|
+
|
|
84
|
+
### 1.5 Befund 5 – nicht gesucht: Ein Manifest widerspricht sich selbst
|
|
85
|
+
|
|
86
|
+
`devin-desktop` erklärt unter `hook_tools_absent`: *„Dieser Client führt kein eigenes
|
|
87
|
+
Suchwerkzeug"* – und reicht zugleich in jeder installierten Skilldatei `grep` und `glob`
|
|
88
|
+
als Werkzeugnamen durch. **Beides kann nicht stimmen.** Welche Seite falsch ist, ist
|
|
89
|
+
**unerhoben**; Zeile S3 dieses Packs sagt es selbst: *„Das Durchreichen ist belegt, die
|
|
90
|
+
Wirkung nicht."*
|
|
91
|
+
|
|
92
|
+
## 2. Warum eine Ausweitung der Vorabfreigabe zählt, obwohl `allowed-tools` keine Zusage ist
|
|
93
|
+
|
|
94
|
+
Gegen Abschnitt 1.4 lässt sich einwenden: Nach **B01** ist `allowed-tools` ohnehin keine
|
|
95
|
+
Beschränkung, sondern eine Vorabfreigabe für den aufrufenden Turn. Eine weitere Zeile
|
|
96
|
+
darin ändere nichts, was das Framework zusagt.
|
|
97
|
+
|
|
98
|
+
**Der Einwand trägt nicht, und zwar aus demselben Grund wie bei `CR-2026-061` Abschnitt 2:**
|
|
99
|
+
Was eine Vorabfreigabe ändert, ist nicht der Mechanismus, sondern die **Rückfrage, die
|
|
100
|
+
entfällt**. Ein `NotebookEdit`, das heute eine Rückfrage auslöst, löste danach keine mehr
|
|
101
|
+
aus – bei drei Skills, für ein Werkzeug, das keine der vierzehn Quellen je genannt hat.
|
|
102
|
+
**Das ist genau der Vorgang, für den das Verschärfungsprinzip einen Antrag verlangt**, und
|
|
103
|
+
er gehört nicht in einen Nebensatz beim Aufräumen.
|
|
104
|
+
|
|
105
|
+
## 3. Vorgeschlagene Änderung
|
|
106
|
+
|
|
107
|
+
1. **Ein deklariertes Vokabular, an einer Stelle.** `clientmap.FRONTMATTER_VERBEN =
|
|
108
|
+
("read", "grep", "glob", "edit", "exec")` – die Verben, die ein Skill oder ein
|
|
109
|
+
Agentenprofil des Kerns schreiben darf.
|
|
110
|
+
2. **Eine Brücke, an derselben Stelle.** `clientmap.VERB_BRUECKE` bildet sie auf das
|
|
111
|
+
Vokabular der Durchsetzung ab (`grep`/`glob` → `search`, `edit` → `write`).
|
|
112
|
+
`DENY_VERB_EIMER` in `install.py` entfällt.
|
|
113
|
+
3. **`clientmap.frontmatter_werkzeuge(man, block, verb)`** wird der einzige Weg von einem
|
|
114
|
+
Verb zu Werkzeugnamen. Drei Ausgänge, keiner davon still: abgebildet → die Namen; in
|
|
115
|
+
`tool_names_unmapped` deklariert → das Verb unverändert; weder noch →
|
|
116
|
+
`AbbildungsFehler`. Bauform wie `hook_tools_absent` nach D-47.
|
|
117
|
+
4. **`permissions.deny` kennt das ganze Vokabular.** `grep` und `glob` bilden auf
|
|
118
|
+
`hook_tools.search` ab; ein Verb außerhalb des Vokabulars bricht die Installation ab,
|
|
119
|
+
statt lautlos auszufallen.
|
|
120
|
+
5. **Geprüft wird in beiden Zweigen, umgeschrieben nur im einen.** Ein Pack mit
|
|
121
|
+
`tools_format: list` lässt `allowed-tools` unberührt – ein Schreibfehler soll trotzdem
|
|
122
|
+
beim Installieren auffallen und nicht im übernehmenden Projekt.
|
|
123
|
+
6. **`devin-desktop` deklariert seine fünf nicht abgebildeten Verben**, samt
|
|
124
|
+
`_tool_names_unmapped_note`, die den Widerspruch aus 1.5 festhält.
|
|
125
|
+
7. **Prüfung 38 (neu)**, vier Gegenstände: der verlorene Anker; die Deklaration je Pack;
|
|
126
|
+
die **Richtung** zwischen Vorabfreigabe und Sperre; die Verben der ausgelieferten
|
|
127
|
+
Quellen.
|
|
128
|
+
8. **Der Kopfkommentar des Validators trägt 32 bis 38 nach** (Kandidat 4).
|
|
129
|
+
|
|
130
|
+
## 4. Auswirkungen
|
|
131
|
+
|
|
132
|
+
- **Die erzeugten Dateien ändern sich nicht, Byte für Byte.** Gemessen für beide Packs:
|
|
133
|
+
`fw-plan` und `fw-reviewer` tragen nach der Änderung dasselbe wie vorher. Das ist der
|
|
134
|
+
Beleg dafür, dass hier eine **Disziplin** eingezogen und keine Zusage verschoben wird.
|
|
135
|
+
- **Prüfung 38 fängt bei den beiden Packs nichts** – nachdem `devin-desktop` deklariert
|
|
136
|
+
hat. Gegen 0.39.0 meldet sie **zehn** Fundstellen, und das sind Deklarationslücken,
|
|
137
|
+
keine Fehlfunktionen. **Gegenstand 3 (die Richtung) ist eine reine Verankerung**, wie
|
|
138
|
+
Prüfung 35 und 36.
|
|
139
|
+
- **Ein Projekt, das einen `prj-*`-Skill mit `deny: write` oder `allowed-tools: search`
|
|
140
|
+
schreibt, bekommt ab sofort einen Abbruch statt eines stillen Ausfalls.** Das ist der
|
|
141
|
+
Zweck – und es ist ein Bruch für jeden, der sich auf die lockere Fassung verlassen hat.
|
|
142
|
+
Die Verben `write` und `search` waren in `permissions.deny` bis 0.39.0 zulässig; sie
|
|
143
|
+
sind es nicht mehr.
|
|
144
|
+
- **Der Widerspruch bei `devin-desktop` bleibt stehen.** Er wird deklariert, nicht
|
|
145
|
+
behoben; eine Behebung wäre eine Vermutung.
|
|
146
|
+
- **Die Vertagung seit 0.35.0 war richtig und ist jetzt überholt.** Der Grund („ändert
|
|
147
|
+
`allowed-tools` still mit") stimmte; die Behebung ist eine andere als die vertagte.
|
|
148
|
+
|
|
149
|
+
- **Prüfung 33 muss mitgezogen werden.** Sie hält einen Anker auf `DENY_VERB_EIMER` in
|
|
150
|
+
`install.py` und führt daneben eine **eigene**, bewusst unabhängige Verbtabelle. Der
|
|
151
|
+
Anker zeigt nach der Verschiebung ins Leere; die Tabelle führte `write` und `search`
|
|
152
|
+
und kannte `grep` und `glob` nicht – **sie teilte damit genau die Lücke, die sie hätte
|
|
153
|
+
fangen sollen.** Beides wird nachgezogen, die Unabhängigkeit der Tabelle bleibt.
|
|
154
|
+
|
|
155
|
+
## 5. Vorlage zur Entscheidung
|
|
156
|
+
|
|
157
|
+
| Nr. | Frage | Vorschlag | Preis |
|
|
158
|
+
|---|---|---|---|
|
|
159
|
+
| **E1** | Werden die beiden Listen inhaltlich vereinheitlicht – oder wird nur ihre Richtung verankert? | **Nur die Richtung.** Die Sperrliste darf für kein Verbpaar enger sein als die Vorabfreigabe; die umgekehrte Abweichung bleibt zulässig und ist heute der Fall. **Eine inhaltliche Vereinheitlichung ginge nur in eine der beiden falschen Richtungen:** `tool_names` heben ist eine Ausweitung der Vorabfreigabe (Abschnitt 2), `hook_tools` kürzen eine Lücke in einer Sperre | **Zwei Listen bleiben zwei Listen**, und wer sie nebeneinander liest, sieht weiterhin einen Unterschied. Er ist ab jetzt begründet und bewacht – aber er ist noch da. **Die Gegenposition ist vertretbar:** Eine Liste wäre einfacher zu verstehen als eine Regel über zwei Listen |
|
|
160
|
+
| **E2** | Wird ein unbekanntes Verb im Frontmatter ein Fehler – oder bleibt es beim Durchreichen? | **Ein Fehler.** Die drei anderen Abbildungen desselben Manifests brechen im selben Fall ab, gemessen; die vierte war die Ausnahme, nicht die Regel. Ein Client, der die Verben wirklich unverändert führt, deklariert das in `tool_names_unmapped` – die Bauform, die D-47 für `hook_tools_absent` und D-70 für `agent_start_tools_absent` gesetzt haben | **`devin-desktop` muss fünf Verben deklarieren, die es nie abgebildet hat** – und die Deklaration sagt „unerhoben", nicht „so ist es". Das ist ehrlicher als das Schweigen und trotzdem keine Erkenntnis. **Und ein Projekt, das heute an der Lücke vorbei installiert, bekommt einen Abbruch** – gewollt, aber ein Bruch |
|
|
161
|
+
| **E3** | Bekommt `permissions.deny` die beiden fehlenden Verben `grep` und `glob`? | **Ja, auf `hook_tools.search`.** Sie sind die meistgenannten Verben des Vokabulars – vierzehn Fundstellen je, im Nachbarfeld desselben Frontmatters. Dass ausgerechnet sie in der Sperrabbildung fehlen, ist kein Entwurf, sondern eine Lücke | **Es fängt heute nichts:** Keine ausgelieferte Quelle schreibt `deny: grep`. Das ist eine **Verankerung**, und sie gehört als solche ausgewiesen. **Und ob `Grep, Glob` in `disallowed-tools` wirklich wirken, ist nicht gemessen** – die Abbildung erzeugt ab jetzt etwas, dessen Wirkung offen ist. Das ist weniger als bei `Write, Edit` (D-64) und mehr als das bisherige Nichts |
|
|
162
|
+
| **E4** | Wo stehen Vokabular und Brücke? | **In `clientmap.py`**, von `install.py` und vom Validator gelesen – dieselbe Bauart wie `core_rules` und `basket_rules`. **Drei Stellen brauchen sie**, und eine davon ist eine Prüfung; ein Wert, den eine Prüfung aus einem anderen Modul liest, kann nicht auseinanderlaufen | **`clientmap.py` bekommt Wissen über das Quellformat der Skills**, das bisher in `install.py` stand – das Modul heißt „Semantikabbildung der Berechtigungs- und Hook-Konfiguration" und trägt jetzt mehr. Die Alternative, das Vokabular im Validator zu doppeln, ist genau der Fehler, den dieser Antrag behebt |
|
|
163
|
+
| **E5** | Was prüft Prüfung 38, und wo läuft sie? | **Vier Gegenstände im Normallauf:** verlorener Anker, Deklaration je Pack, Richtung, Verben der Quellen. Der vierte Gegenstand ist der einzige, der die **Quellen** misst statt der Manifeste – und er ist der billigste Weg, einen Schreibfehler vor der Auslieferung zu fangen | **Gegenstand 3 fängt heute nichts** und wird es bei disziplinierter Pflege nie tun – eine Verankerung, deren Wert allein an ihren Sonden hängt. **Gegenstand 2 zählt Deklarationen, nicht Richtigkeit:** Ein Pack, das fünf falsche Werkzeugnamen sauber deklariert, besteht sie |
|
|
164
|
+
| **E6** | Wird der Widerspruch bei `devin-desktop` (Befund 5) hier behoben? | **Nein – nur festgehalten.** Welche Seite falsch ist, entscheidet eine Erhebung an diesem Client, und sie ist nicht gefahren. Der Widerspruch steht in der `_tool_names_unmapped_note` und in der Roadmap | **Ein bekannter Widerspruch bleibt im Repositorium stehen.** Das ist unbefriedigend – und die Alternative wäre, eine der beiden Seiten zu raten. **Genau das ist die Bauform, die dieses Projekt sich abgewöhnt** |
|
|
165
|
+
| **E7** | Wird der Kopfkommentar des Validators um 32 bis 37 ergänzt (Kandidat 4)? | **Ja, im selben Zug.** Eine achtunddreißigste Prüfung einzutragen und die sechs davor auszulassen, schriebe die Lücke fort. Der Gegenstand ist derselbe Absatz | **Ein zweiter Kandidat in einem Release.** Die Alternative wäre ein eigener Antrag für sechs Zeilen Buchhaltung – mehr Verwaltung als Gegenstand |
|
|
166
|
+
| **E8** | Ein eigenes Release oder Anhang an das nächste? | **Ein eigenes Release, `0.40.0`.** Der Gegenstand ist geschlossen, und er räumt den ältesten offenen Kandidaten ab | **Das fünfzehnte Release in drei Tagen**, und wieder ist kein Ergebnis eine Messung am Client. Gemessen sind Abbildung, Validator und zwei Installationen |
|
|
167
|
+
|
|
168
|
+
## 6. Entscheidung
|
|
169
|
+
|
|
170
|
+
| Feld | Inhalt |
|
|
171
|
+
|---|---|
|
|
172
|
+
| Entscheidung | **Angenommen, alle acht Fragen wie vorgelegt.** E1 nur die Richtung, die Inhalte bleiben unberührt; E2 ein unbekanntes Verb ist ein Fehler, die Abwesenheit wird deklariert; E3 `grep` und `glob` auf `search`, als Verankerung ausgewiesen; E4 Vokabular und Brücke in `clientmap.py`; E5 Prüfung 38 mit vier Gegenständen im Normallauf; E6 der Widerspruch wird festgehalten, nicht behoben; E7 Kopfkommentar 32 bis 38; E8 eigenes Release `0.40.0` |
|
|
173
|
+
| Datum | 2026-09-13 |
|
|
174
|
+
| Entscheidende Rolle | `<FRAMEWORK_OWNER>` |
|
|
175
|
+
| Decision-Log-Einträge | D-78 (ein Werkzeugverb des Frontmatters wird abgebildet oder seine Nichtabbildung deklariert), D-79 (`permissions.deny` kennt dasselbe Vokabular wie `allowed-tools`), D-80 (die Sperrliste ist nie enger als die Vorabfreigabe) |
|
|
176
|
+
| Auflagen | **Der Nachweis, dass sich nichts ändert, gehört in den Wirkungsnachweis** – die erzeugten Dateien beider Packs vor und nach der Änderung, Byte für Byte. **Der Gegenbeweis wird in zwei Zuschnitten ausgewiesen:** wie ausgeliefert (eine Fundstelle, der verlorene Anker) und mit neutralisiertem Anker (zehn Fundstellen). Wer nur die zweite Zahl nennt, behauptet eine Messung, die der ausgelieferte Lauf nicht macht. **Und Gegenstand 3 wird als Verankerung benannt, nicht als Behebung** |
|
|
177
|
+
| Ziel-Release | `0.40.0` |
|
|
178
|
+
| Umsetzung | umgesetzt mit `0.40.0` |
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Änderungsantrag `CR-2026-063`
|
|
2
|
+
|
|
3
|
+
| Feld | Inhalt |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Titel | Der Skillaufruf ist ein Werkzeugaufruf – und die Berechtigungsdatei des Frameworks kennt ihn nicht |
|
|
6
|
+
| Antragstellende Rolle | `<FRAMEWORK_OWNER>` |
|
|
7
|
+
| Datum | 2026-09-14 |
|
|
8
|
+
| Betroffene Artefakte | `framework/runtime/permissions.json` (Verb `skill`, zwölf `allow`-Regeln), `clients/claude-code/manifest.json` (`permission_tools.skill`, `permission_name_tools`), `clients/devin-desktop/manifest.json` (`permission_tools.skill` leer samt Begründung), `clients/claude-code/CLIENT_PACK.md` (Zeile S2), `clientmap.py` (`_regel_rendern`), `framework/runtime/root-instruction.md` (Abschnitt 17), `framework/runtime/rules/00-framework-core.md`, `framework/core/05-working-model.md` (Abschnitte 1 und 3.6), `framework/core/06-prompting-rules.md` (Regel 7), `checklists/01-preflight.md`, `tests/EDGE_CASES.md` (G-20), `tests/scripts/validate-framework.py` (Prüfung 39, Pfadregelprüfung), `tests/scripts/probe-pruefungen.py`, `governance/DECISION_LOG.md` |
|
|
9
|
+
| Ebene laut Entscheidungsbaum 6 | **Core** – die Berechtigungsdatei ist Ebene 3, und die Zusage S2 ist Framework-Gut |
|
|
10
|
+
| Art | Änderung; Anlass ist ein **externer** Befund, kein Kandidat der Übergabe |
|
|
11
|
+
| Dringlichkeit | **P1.** Ausgeliefert ist eine Aufforderung, die die Datei daneben nicht zulässt. Der Fehlschlag ist **stumm** und kostet die Zusage S3 – gemessen |
|
|
12
|
+
|
|
13
|
+
## 1. Anlass
|
|
14
|
+
|
|
15
|
+
Ein Bericht aus einer Sitzung am Piloten (`skill-priority-improvement.md`, 2026-09-14, Devin
|
|
16
|
+
Desktop) hält fest, der Agent habe bei einer passenden Aufgabe mit `read` und
|
|
17
|
+
`find_file_by_name` gearbeitet statt mit `fw-code-explain` und `fw-repo-analyze`, und erst nach
|
|
18
|
+
Rückfrage die Skills verwendet. Er schließt daraus auf eine fehlende **Skill-Erkennung** und
|
|
19
|
+
empfiehlt, die Agentenlogik so zu ändern, dass sie Skills automatisch aufruft.
|
|
20
|
+
|
|
21
|
+
**Der Befund ist gegengeprüft** (`tests/protocols/2026-09-14-gegenpruefung-skillwahl.md`) und
|
|
22
|
+
**gemessen** (`tests/protocols/2026-09-14-erhebung-skillaufruf.md`, elf Läufe, davon vier
|
|
23
|
+
Kontroll- und Entlastungsläufe). **Er bestätigt sich – und seine Ursache ist eine andere, als
|
|
24
|
+
er sagt.**
|
|
25
|
+
|
|
26
|
+
### 1.1 Befund 1: Der Aufruf scheitert an der eigenen Berechtigungsdatei
|
|
27
|
+
|
|
28
|
+
Der Skillaufruf ist bei `claude-code` ein **eigener Werkzeugaufruf** mit dem Namen `Skill`. Die
|
|
29
|
+
ausgelieferte Berechtigungsdatei führt ihn in **keinem** Korb und lässt ihn damit auf
|
|
30
|
+
`defaultMode: default` fallen – also auf die Rückfrage. Gemessen, mit Gegenprobe:
|
|
31
|
+
|
|
32
|
+
| Lauf | `allow` | Skill-Aufruf | Ergebnis |
|
|
33
|
+
|---|---|---|---|
|
|
34
|
+
| A1, A3 | wie ausgeliefert | `fw-code-explain` | **abgewiesen** (`toolDenialKind: user-rejected`) |
|
|
35
|
+
| B1, B2 | `Skill` ergänzt | `fw-code-explain` | läuft durch, `permission_denials` leer |
|
|
36
|
+
|
|
37
|
+
**Die Ursache liegt eine Ebene tiefer als das Pack.** `framework/runtime/permissions.json`
|
|
38
|
+
kennt sechs Werkzeugverben – `read`, `search`, `write`, `exec`, `fetch`, `mcp` – und keines
|
|
39
|
+
bezeichnet den Skillaufruf. `permission_tools` **beider** Packs führt dieselben sechs. **Eine
|
|
40
|
+
Freigabe für den Skillaufruf war in dieser Datei nie ausdrückbar.**
|
|
41
|
+
|
|
42
|
+
Und das Projekt wusste es dreimal, ohne es aufzuschreiben: `2026-09-12-B01-allowed-tools.md`
|
|
43
|
+
nennt den Skillaufruf ausdrücklich „als eigenen Werkzeugaufruf mit dem Namen `Skill` und damit
|
|
44
|
+
einzeln kontrollierbar"; zwei Läufe des 13.09. sind verworfen worden, weil „der `Skill`-Aufruf
|
|
45
|
+
scheiterte". **Aus dem dreimaligen Eigenverschulden ist nie ein Befund über die ausgelieferte
|
|
46
|
+
Datei geworden.**
|
|
47
|
+
|
|
48
|
+
### 1.2 Befund 2: Der Rückfall ist stumm und kostet die Zusage S3
|
|
49
|
+
|
|
50
|
+
Nach der Abweisung liest die Sitzung die `SKILL.md` als gewöhnliche Datei und arbeitet ihren
|
|
51
|
+
Ablauf von Hand nach. **Die Ausgabe ist von einem gelungenen Lauf nicht zu unterscheiden** –
|
|
52
|
+
sie trägt Überschrift und Standardformat des Skills.
|
|
53
|
+
|
|
54
|
+
**Der Preis ist gemessen.** `fw-code-explain` trägt `disallowed-tools: Edit, Write,
|
|
55
|
+
NotebookEdit, Bash`. In Lauf A3 rief die nachgearbeitete Fassung `Bash` auf. In einem echten
|
|
56
|
+
Skill-Lauf wäre das nicht möglich gewesen: Die Sperre entfernt das Werkzeug aus dem Vorrat
|
|
57
|
+
(D-64). **Der stumme Rückfall verliert genau die Zusage, für die S3 seit 0.35.0 `[TECHNISCH]`
|
|
58
|
+
steht.**
|
|
59
|
+
|
|
60
|
+
Und er kommt so im Ergebnisbericht an (Lauf A3, wörtlich):
|
|
61
|
+
|
|
62
|
+
> „**Verwendete Skills:** `fw-code-explain` (v0.1.3). Der Aufruf über den Skill-Mechanismus
|
|
63
|
+
> schlug fehl …; die Skill-Definition wurde stattdessen aus `.claude/skills/…/SKILL.md`
|
|
64
|
+
> gelesen und inhaltlich befolgt."
|
|
65
|
+
|
|
66
|
+
Wer die Zeile überfliegt, liest eine Verwendung, die nicht stattgefunden hat. Das
|
|
67
|
+
Standardformat des Ergebnisberichts kennt für diesen Fall keine eigene Form.
|
|
68
|
+
|
|
69
|
+
### 1.3 Befund 3: Die Skillwahl steht an fünf Stellen und erreicht den Agenten nirgends verbindlich
|
|
70
|
+
|
|
71
|
+
| Träger | Verbindlichkeit | Adressat |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| `06-prompting-rules.md:34` Regel 7 – die stärkste Formulierung | normativ | Modul über **Aufgabenanweisungen** → Mensch; Passiv lässt offen, wer handelt |
|
|
74
|
+
| `01-preflight.md:39` | **SOLL** | „Bearbeiterin oder Bearbeiter", „vor dem ersten Prompt" |
|
|
75
|
+
| `05-working-model.md` Abschnitt 1, Spalte **Referenz**, sechs von vierzehn Schritten | – | keine Pflichtspalte |
|
|
76
|
+
| `root-instruction.md` Abschnitt 17 | **ohne Marke** – die Datei führt null MUSS/SOLL/KANN | Agent, als letzter von 17 Abschnitten |
|
|
77
|
+
| `rules/00-framework-core.md` (always-on) | – | Agent – **die Wahl kommt dort nicht vor** |
|
|
78
|
+
|
|
79
|
+
Der Auslöser „Standardaufgaben" ist nirgends definiert und kommt im Kern kein zweites Mal vor.
|
|
80
|
+
|
|
81
|
+
**Gemessen, was daraus folgt** (Lauf A2, wörtlich): „**Verwendete Skills:** keine (Aufgabe
|
|
82
|
+
entspricht inhaltlich `fw-code-explain` …; **kein Skill-Aufruf nötig**)." Die Sitzung hat den
|
|
83
|
+
passenden Skill benannt und seinen Aufruf für entbehrlich erklärt – unter dem Wortlaut von
|
|
84
|
+
0.40.0 vertretbar.
|
|
85
|
+
|
|
86
|
+
### 1.4 Befund 4: Das Argumentmuster wirkt wörtlich, nicht als Präfix
|
|
87
|
+
|
|
88
|
+
| Lauf | `allow` | aufgerufen | Ergebnis |
|
|
89
|
+
|---|---|---|---|
|
|
90
|
+
| **C1** | `Skill(fw-code-explain)` | `fw-code-explain` | **läuft durch** |
|
|
91
|
+
| **D1** | `Skill(fw-*)` | `fw-code-explain` | **abgewiesen** |
|
|
92
|
+
| **E1** | `Skill(fw-plan)` | `fw-code-explain` | **abgewiesen** (Kontrolllauf) |
|
|
93
|
+
|
|
94
|
+
**Die Bauform ist die von D-66, mit umgekehrtem Vorzeichen.** Dort wirkte ein Argumentmuster in
|
|
95
|
+
`disallowed-tools` lautlos gar nicht – eine Sperre, die nichts sperrt. Hier gäbe ein
|
|
96
|
+
Präfixmuster **lautlos nichts frei**. Eine Regel `Skill(fw-*)` sähe richtig aus und täte
|
|
97
|
+
nichts.
|
|
98
|
+
|
|
99
|
+
### 1.5 Befund 5 – die Entlastung: Die empfohlene Behebung lässt sich nicht bauen
|
|
100
|
+
|
|
101
|
+
Option 1 des Berichts – „Vor jeder Aufgabenbearbeitung automatisch prüfen … bei Übereinstimmung
|
|
102
|
+
Skills automatisch aufrufen", umzusetzen in der „Agent-Logik" – liegt **außerhalb der
|
|
103
|
+
Reichweite dieses Frameworks**. Leitwerk liefert Regeltexte, Skills, eine Berechtigungsdatei
|
|
104
|
+
und einen Hook; es ändert keine Agentenlogik. Ein Antrag dieser Art ist hier kein Antrag,
|
|
105
|
+
sondern eine Anforderung an den Hersteller – dieselbe Lage wie bei den vier Einträgen von
|
|
106
|
+
Paket 6.
|
|
107
|
+
|
|
108
|
+
**Und die Systemanweisung, die der Bericht als Beleg zitiert, ist keine Framework-Regel.** Nach
|
|
109
|
+
Abschnitt 2 der Wurzel-Anweisungsdatei hat eine Ablage außerhalb des Repositoriums **keine
|
|
110
|
+
Ebene dieser Hierarchie**.
|
|
111
|
+
|
|
112
|
+
### 1.6 Befund 6 – nicht gesucht: Zeile S2 nennt keine einzige Grenze
|
|
113
|
+
|
|
114
|
+
Die Fähigkeitsmatrix führt in **S2** „Gezielter Aufruf", `[TECHNISCH]`, `[DOK]` – und nennt
|
|
115
|
+
weder die Rückfragepflicht noch die Argumentform noch den stummen Rückfall. Die Nachbarzeile S3
|
|
116
|
+
trägt seit 0.35.0 **drei** benannte Grenzen; S2 ist seit dem ersten Release unverändert.
|
|
117
|
+
|
|
118
|
+
## 2. Warum zwölf wörtliche Regeln und nicht eine
|
|
119
|
+
|
|
120
|
+
Eine Vorabfreigabe ist nach B01 keine Zusage – **aber sie auszuweiten ist trotzdem eine
|
|
121
|
+
Ausweitung.** Das Argument aus `CR-2026-062` Abschnitt 2 gilt hier unverändert: Was sie ändert,
|
|
122
|
+
ist nicht der Mechanismus, sondern die **Rückfrage, die entfällt**.
|
|
123
|
+
|
|
124
|
+
**Und hier ist die Ausweitung messbar größer als sie aussieht.** Die Skill-Auflistung der
|
|
125
|
+
Messläufe führte **83** Einträge – davon **drei** mit dem Präfix `fw-` und **80 fremde** aus
|
|
126
|
+
einer nutzerglobalen Ablage. (Dass nur drei der zwölf Framework-Skills dort erscheinen, ist
|
|
127
|
+
kein Widerspruch, sondern die Zusage **S4**: `disable-model-invocation` hält die übrigen neun
|
|
128
|
+
aus dem Kontext – aufrufbar bleiben sie.) Eine Regel auf den blanken Werkzeugnamen `Skill`
|
|
129
|
+
gäbe **auch die 80** frei, und sie sind nach Regel 2.6 der Prioritätshierarchie **ebenenlos**.
|
|
130
|
+
|
|
131
|
+
Der Zuschnitt ist damit vorgezeichnet: freigegeben wird, was das Framework selbst ausliefert,
|
|
132
|
+
und nichts sonst. Dass das zwölf Zeilen statt einer kostet, ist **kein Entwurf, sondern ein
|
|
133
|
+
Messergebnis** (Befund 4).
|
|
134
|
+
|
|
135
|
+
## 3. Vorgeschlagene Änderung
|
|
136
|
+
|
|
137
|
+
**Mechanik**
|
|
138
|
+
|
|
139
|
+
1. **Ein Verb `skill` im Berechtigungsvokabular.** `permissions.json` bekommt zwölf
|
|
140
|
+
`allow`-Regeln, eine je ausgeliefertem Skill; der Kopfkommentar nennt das Verb und die
|
|
141
|
+
wörtliche Vergleichsform samt Fundstelle.
|
|
142
|
+
2. **`permission_tools.skill` je Pack.** `claude-code`: `["Skill"]`. `devin-desktop`: `[]` mit
|
|
143
|
+
`_permission_tools_skill_note` – **unerhoben, nicht abwesend**, Bauform wie
|
|
144
|
+
`hook_tools_absent` nach D-47. Die leere Liste lässt die zwölf Regeln für dieses Pack
|
|
145
|
+
ersatzlos entfallen; das ist die strengere Seite.
|
|
146
|
+
3. **`permission_name_tools` bei `claude-code`.** Werkzeuge, deren Regelargument ein **Name**
|
|
147
|
+
und kein Pfad ist. Für sie hängt die Abbildung weder das Wurzelpräfix noch das
|
|
148
|
+
Präfixzeichen an, und der Validator lässt sie neben `permission_path_tools` zu.
|
|
149
|
+
4. **`clientmap._regel_rendern`** bekommt einen eigenen Zweig für `skill` – wie `exec` schon
|
|
150
|
+
einen hat.
|
|
151
|
+
|
|
152
|
+
**Text**
|
|
153
|
+
|
|
154
|
+
5. **Abschnitt 17 der Wurzel-Anweisungsdatei** bekommt Auslöser, Zeitpunkt und Nachweis: Prüfung
|
|
155
|
+
vor jedem Schritt; wo der Standardarbeitsablauf einen Skill nennt, ist er der vorgesehene
|
|
156
|
+
Weg; ein anderer Weg wird im Ergebnisbericht benannt und begründet. Dazu der Satz zum
|
|
157
|
+
abgewiesenen Aufruf.
|
|
158
|
+
6. **Die always-on-Kurzfassung** bekommt dieselbe Regel in einem Absatz – sie ist der einzige
|
|
159
|
+
Träger, der die Sitzung sicher erreicht **und** den Standardarbeitsablauf führt (belegt
|
|
160
|
+
durch Entlastungslauf G1).
|
|
161
|
+
7. **`05-working-model.md`** macht die Spalte „Referenz" verbindlich und erweitert das
|
|
162
|
+
Standardformat des Ergebnisberichts um den Negativ- und den Abweisungsfall.
|
|
163
|
+
8. **Regel 7** löst ihr Passiv auf; der **Preflight-Punkt** bleibt beim Menschen und verweist
|
|
164
|
+
auf die eigene Pflicht des Agenten.
|
|
165
|
+
9. **Zeile S2** des Packs bekommt ihre drei gemessenen Grenzen.
|
|
166
|
+
|
|
167
|
+
**Prüfung**
|
|
168
|
+
|
|
169
|
+
10. **Prüfung 39** mit drei Gegenständen: der verlorene Anker; **jeder ausgelieferte Skill hat
|
|
170
|
+
genau eine `allow`-Regel und jede Regel einen Skill**; die Regel trägt keine
|
|
171
|
+
Musterzeichen. Dazu die vier Regelträger: Jeder nennt die Skillwahl.
|
|
172
|
+
11. **Grenzfall G-20** – ein abgewiesener Skill-Aufruf.
|
|
173
|
+
|
|
174
|
+
## 4. Auswirkungen
|
|
175
|
+
|
|
176
|
+
| Bereich | Auswirkung |
|
|
177
|
+
|---|---|
|
|
178
|
+
| Erzeugte Berechtigungsdatei `claude-code` | **6 → 18 `allow`-Regeln.** Die zwölf neuen betreffen ausschließlich den Skillaufruf |
|
|
179
|
+
| Erzeugte Berechtigungsdatei `devin-desktop` | **unverändert**, 6 Regeln – das Verb ist dort unerhoben |
|
|
180
|
+
| Bestehende Installationen | **Prüfung 37 meldet zwölf fehlende `allow`-Regeln**, bis die Datei nachgezogen ist. Die Datei steht in `shared_seed` und wird nach der Erstinstallation nie wieder geschrieben (D-76) – das Nachtragen ist ein Handgriff des Overlay Owners und gehört in die Migrationshinweise |
|
|
181
|
+
| Sicherheit | **Zwölf Rückfragen entfallen, alle für Skills des Frameworks.** Was ein Skill dann tut, bleibt unverändert gesperrt: `disallowed-tools` wirkt (D-64), der Hook wirkt (D-69), `ask` auf Schreiben wirkt. Fremde Skills bleiben rückfragepflichtig |
|
|
182
|
+
| Agentenverhalten | **Nicht zugesagt.** Ob der verschärfte Text die Wahl verbessert, ist ein Sitzungstest und nicht gefahren |
|
|
183
|
+
|
|
184
|
+
## 5. Vorlage zur Entscheidung
|
|
185
|
+
|
|
186
|
+
| Nr. | Frage | Vorschlag | Preis |
|
|
187
|
+
|---|---|---|---|
|
|
188
|
+
| **E1** | Bekommt das Berechtigungsvokabular überhaupt ein Verb für den Skillaufruf – oder bleibt es bei der Rückfrage, sauber deklariert? | **Ein Verb.** Das Framework fordert in Abschnitt 17 die Nutzung der Skills und macht sie in der Datei daneben rückfragepflichtig. Eine Regel, deren Befolgung das Framework selbst verteuert, ist keine Regel, sondern eine Reibung. **Und im rückfragefreien Betrieb ist die Rückfrage eine Abweisung** – gemessen | **Eine Ausweitung bleibt eine Ausweitung**, auch wenn sie nur eine Rückfrage erspart. **Die Gegenposition ist vertretbar:** Nach D-05 ist die Rückfrage der Normalfall, und wer sie für den Skillaufruf beseitigt, nimmt dem Menschen einen Kontrollpunkt, den er heute hat |
|
|
189
|
+
| **E2** | Ein Muster für alle Framework-Skills – oder zwölf wörtliche Regeln? | **Zwölf wörtliche.** Das ist **kein Entwurf, sondern gemessen**: `Skill(fw-*)` weist den Aufruf ab (D1), `Skill(fw-code-explain)` lässt ihn durch (C1), `Skill(fw-plan)` weist einen anderen Skill ab (E1, Kontrolllauf). Ein Muster gäbe lautlos nichts frei | **Zwölf Zeilen statt einer**, und ein dreizehnter Skill braucht seine eigene. **Genau das hält Prüfung 39 fest** – der Preis ist Pflege, und sie ist bewacht |
|
|
190
|
+
| **E3** | Werden die Regeln aus dem Skillverzeichnis **erzeugt** oder in die Datei **geschrieben**? | **Geschrieben.** Nach D-53 **ist** der Inhalt dieser Datei die Berechtigung; was sie gewährt, soll in ihr lesbar sein und nicht aus einem Verzeichnis berechnet werden. Ein erzeugender Weg hieße: Ein neuer Skill erteilt sich seine Vorabfreigabe selbst | **Zwei Quellen für dieselbe Menge**, und sie können auseinanderlaufen – genau der Befundtyp von `CR-2026-062`. **Deshalb hängt E3 an Prüfung 39**; ohne sie wäre der Vorschlag nicht vertretbar |
|
|
191
|
+
| **E4** | Was gilt für `devin-desktop`? | **Leere Liste mit Begründung** – unerhoben, nicht abwesend. Bauform wie `hook_tools_absent` (D-47) und `tool_names_unmapped` (D-78). Die Regeln entfallen dort ersatzlos, und das ist die strengere Seite | **Ein Pack bleibt unerhoben**, und zwar ausgerechnet das, an dem der Bericht entstanden ist. Die Alternative wäre, seine Seite zu raten – **die Bauform, die dieses Projekt sich abgewöhnt**. Neuer Klärungspunkt **K-33** |
|
|
192
|
+
| **E5** | Wo steht die Skillwahl künftig – nur in der Wurzel-Anweisungsdatei oder auch in der always-on-Schicht? | **In beiden.** Die always-on-Datei führt die vierzehn Schritte und den Satz „Schritte werden nicht übersprungen"; die Skillwahl gehört dorthin, wo der Schritt steht. **Entlastungslauf G1 belegt, dass die Datei die Sitzung ohne Werkzeugaufruf erreicht** | **Dieselbe Regel an zwei Stellen** – und Regeldopplung ist der Befundtyp von B11 und D-78. **Deshalb ist sie bewacht:** Prüfung 39 verlangt die Nennung an allen vier Trägern; sie prüft die **Anwesenheit**, nicht den Wortlaut |
|
|
193
|
+
| **E6** | Wird die Nichtverwendung begründungspflichtig – oder genügt es, sie zu nennen? | **Begründungspflichtig.** „Skills: keine" (Lauf A4) ist formal vollständig und sagt nichts. Was die Lücke sichtbar macht, ist der Satz *welcher Skill kam in Frage und warum nicht* | **Der Ergebnisbericht wächst**, und die Pflicht ist nicht durchsetzbar – kein Mechanismus prüft einen Bericht. **Sie ist eine Anweisung, und sie steht als solche da**; was sie trägt, ist die Prüfpflicht des Menschen |
|
|
194
|
+
| **E7** | Darf der Rückfall auf die `SKILL.md` weiterhin stattfinden? | **Ja – aber er heißt nicht mehr Verwendung.** Ein Verbot kostete Ergebnisqualität ohne Gegenwert: Die nachgearbeitete Fassung war in beiden Läufen brauchbar. Was schadet, ist nicht der Rückfall, sondern seine **Stille** | **Die Werkzeugbeschränkung des Skills fehlt dabei weiterhin** – gemessen, ein `Bash`-Aufruf in A3. Die Regel verlangt, sie trotzdem einzuhalten, und **das ist eine Anweisung ohne Mechanismus**. Ehrlicher als ein Verbot, das niemand durchsetzt, aber keine Zusage |
|
|
195
|
+
| **E8** | Ein eigenes Release oder Anhang an das nächste? | **Ein eigenes Release, `0.41.0`.** Der Gegenstand ist geschlossen, und er ist der erste, der aus einem **externen** Befund kommt | **Das sechzehnte Release in drei Tagen.** Und diesmal ist ein Ergebnis **doch** eine Messung am Client – die erste, die eine vollständige Installation misst statt eines Mechanismus |
|
|
196
|
+
|
|
197
|
+
## 6. Entscheidung
|
|
198
|
+
|
|
199
|
+
| Feld | Inhalt |
|
|
200
|
+
|---|---|
|
|
201
|
+
| Entscheidung | **Angenommen, alle acht Fragen wie vorgelegt.** E1 ein Verb `skill`; E2 zwölf wörtliche Regeln, weil das Präfixmuster gemessen nicht wirkt; E3 in die Datei geschrieben und von Prüfung 39 bewacht; E4 `devin-desktop` deklariert die Enthaltung, K-33 neu; E5 beide Träger, Anwesenheit bewacht statt Wortlaut; E6 die Nichtverwendung ist begründungspflichtig; E7 der Rückfall bleibt erlaubt und heißt nicht Verwendung; E8 eigenes Release `0.41.0` |
|
|
202
|
+
| Datum | 2026-09-14 |
|
|
203
|
+
| Entscheidende Rolle | `<FRAMEWORK_OWNER>` |
|
|
204
|
+
| Decision-Log-Einträge | D-81 (das Berechtigungsvokabular kennt den Skillaufruf; freigegeben ist nur, was das Framework ausliefert), D-82 (das Argument wird wörtlich verglichen – ein Muster gäbe lautlos nichts frei), D-83 (ein abgewiesener Skill-Aufruf ist keine Verwendung), D-84 (wo der Standardarbeitsablauf einen Skill nennt, ist er der vorgesehene Weg des Schrittes) |
|
|
205
|
+
| Auflagen | **Der Migrationshinweis gehört in den Änderungsverlauf**, nicht nur in diesen Antrag: Bestehende Installationen melden zwölf fehlende `allow`-Regeln, bis die Datei nachgezogen ist. **Der Wirkungsnachweis führt einen Lauf am Client** – dieselbe Aufgabe gegen eine Installation des neuen Standes, mit dem Nachweis, dass der Aufruf durchläuft. **Und die Grenze wird benannt:** Dass der verschärfte Text die Wahl verbessert, ist **nicht** gemessen und wird nicht behauptet |
|
|
206
|
+
| Ziel-Release | `0.41.0` |
|
|
207
|
+
| Umsetzung | umgesetzt mit `0.41.0` |
|
package/.koolie/core/governance/change-requests/CR-2026-064-pruefregister-nicht-nachgezaehlt.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Änderungsantrag `CR-2026-064`
|
|
2
|
+
|
|
3
|
+
| Feld | Inhalt |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Titel | Das Register der Prüfungen wird nicht nachgezählt – fünf Zahlen über den Prüfapparat, keine davon stimmt |
|
|
6
|
+
| Antragstellende Rolle | `<FRAMEWORK_OWNER>` |
|
|
7
|
+
| Datum | 2026-09-14 |
|
|
8
|
+
| Betroffene Artefakte | `tests/scripts/validate-framework.py` (Prüfung 40 neu, Kopfkommentar: Eintrag 39 und 40, Satz zum Wirkungsnachweis), `tests/scripts/probe-pruefungen.py` (Kopfkommentar, sechs Sonden, zwei Gegenproben), `tests/TEST_CATALOG.md` (`FW-KO-01`, `FW-KO-05`), `governance/DECISION_LOG.md`, `docs/ROADMAP.md`, `CHANGELOG.md` |
|
|
9
|
+
| Ebene laut Entscheidungsbaum 6 | **Core** – der Prüfapparat und sein Register sind Framework-Gut |
|
|
10
|
+
| Art | Änderung; Anlass ist ein Nebenbefund aus dem Migrationslauf am Piloten (Kandidat 2 der Übergabe) |
|
|
11
|
+
| Dringlichkeit | **P2.** Nichts ist ausgeliefert falsch *durchsetzbar*; falsch ist, was das Projekt über seinen eigenen Prüfstand behauptet. **Ein Abnahmetest (`FW-KO-05`) ist davon betroffen und würde heute halb gefahren und ganz gemeldet** |
|
|
12
|
+
|
|
13
|
+
## 1. Anlass
|
|
14
|
+
|
|
15
|
+
Beim Lesen von Prüfung 37 für den Migrationslauf am Piloten
|
|
16
|
+
(`tests/protocols/2026-09-14-migrationslauf-pilot.md`) ist aufgefallen: Der Kopfkommentar von
|
|
17
|
+
`validate-framework.py` führt die Prüfungen **1 bis 38**. **Prüfung 39 ist mit 0.41.0
|
|
18
|
+
entstanden und steht dort nicht.**
|
|
19
|
+
|
|
20
|
+
**Gegengeprüft** (`tests/protocols/2026-09-14-gegenpruefung-pruefregister.md`, elf Messungen,
|
|
21
|
+
sämtlich abzählend). **Der Befund bestätigt sich – und die Zählung war wieder zu klein.**
|
|
22
|
+
|
|
23
|
+
### 1.1 Es sind fünf, nicht eine
|
|
24
|
+
|
|
25
|
+
| # | Träger | sagt | ist | falsch seit | Releases |
|
|
26
|
+
|---|---|---|---|---|---|
|
|
27
|
+
| **A1** | `validate-framework.py`, Register im Kopfkommentar | Prüfungen **1 bis 38** | 1 bis **39** | 0.41.0 | **1** |
|
|
28
|
+
| **A2** | `validate-framework.py`, Satz zum Wirkungsnachweis | „für die Prüfungen **18 bis 30**" | **6 und 18 bis 39** | 0.33.0 | **9** |
|
|
29
|
+
| **A3** | `probe-pruefungen.py`, Kopfkommentar | eine Release-Chronik, die mit **0.29.0** endet | **6 und 18 bis 39** | 0.30.0 | **12** |
|
|
30
|
+
| **A4** | `TEST_CATALOG.md`, `FW-KO-01` Prüfmittel | „für die Prüfungen **6, 18 bis 31**" | **6 und 18 bis 39** | 0.34.0 | **8** |
|
|
31
|
+
| **A5** | `TEST_CATALOG.md`, `FW-KO-05` Prüfmittel | „Die **zwölf** Grenzfälle einzeln … prüfen" | **20** | 0.33.0 | **9** |
|
|
32
|
+
|
|
33
|
+
**Keine der fünf ist falsch geschrieben worden.** Alle fünf waren bei ihrer Einführung richtig
|
|
34
|
+
und sind stehen geblieben, während ihr Gegenstand weiterwuchs. In **zehn von zwölf** Releases
|
|
35
|
+
hat sich mindestens eine der drei Zahlen bewegt.
|
|
36
|
+
|
|
37
|
+
### 1.2 Warum das kein Schönheitsfehler ist
|
|
38
|
+
|
|
39
|
+
**D-23 hängt daran.** Eine Prüfung gilt erst als vorhanden, wenn eine Sonde sie meldet. Woran
|
|
40
|
+
liest man ab, welche Prüfung eine Sonde hat? An A2, A3 und A4 – **und alle drei sagen etwas
|
|
41
|
+
Falsches.** Sie untertreiben: Wer sich auf A4 verlässt, hält die Prüfungen 32 bis 39 für
|
|
42
|
+
unbelegt. Eine untertreibende Zusage ist in diesem Projekt der seltenere Fall; schädlich ist
|
|
43
|
+
sie trotzdem, weil sie Arbeit anstößt, die getan ist.
|
|
44
|
+
|
|
45
|
+
**A5 ist keine Registerzeile, sondern eine Arbeitsanweisung.** `FW-KO-05` steht auf `offen`
|
|
46
|
+
und sagt, was in einer Sitzung zu tun ist: „Die zwölf Grenzfälle einzeln … prüfen." **Wer ihn
|
|
47
|
+
heute fährt, prüft zwölf von zwanzig und meldet ihn bestanden.**
|
|
48
|
+
|
|
49
|
+
**A1 verletzt eine Entscheidung, die ein Release alt ist.** `CR-2026-062` hat den
|
|
50
|
+
Kopfkommentar eigens zur Ermessensfrage gemacht – **E7: „Kopfkommentar 32 bis 38"** – und das
|
|
51
|
+
Nachziehen beschlossen. `CR-2026-063` führt dieselbe Datei in den betroffenen Artefakten, baut
|
|
52
|
+
Prüfung 39 und zieht den Kopfkommentar nicht nach. **Eine Entscheidung, die nur in einem
|
|
53
|
+
Antrag steht, hält bis zum nächsten Antrag.**
|
|
54
|
+
|
|
55
|
+
### 1.3 Die Entlastung, die den Zuschnitt entscheidet
|
|
56
|
+
|
|
57
|
+
`docs/ROADMAP.md` nennt ebenfalls „Zwölf Grenzfälle"; `CR-2026-052` und der Wirkungsnachweis
|
|
58
|
+
zu 0.32.0 tun es auch. **Alle drei sind richtig** – sie beschreiben den Stand von 0.32.0.
|
|
59
|
+
**Ohne diese Messung wäre beim Nachziehen aus drei richtigen Zeilen eine falsche Suche
|
|
60
|
+
geworden.** Die Prüfung, die hier vorgeschlagen wird, liest deshalb ausschließlich die Träger,
|
|
61
|
+
die ein **Register** führen, und keine Vorgeschichte.
|
|
62
|
+
|
|
63
|
+
### 1.4 Der erste Entwurf der Prüfung ist gefallen
|
|
64
|
+
|
|
65
|
+
Der naheliegende Anker – die Kopfkommentare der Prüfungen – trägt gemessen **drei** Formen
|
|
66
|
+
(`# Pruefung N:`, `# N:`, `# Pruefungen N bis M`), und eine vierte sieht aus wie ein Kopf und
|
|
67
|
+
ist keiner: `# Pruefung 37 und dieselbe Ehrlichkeit: …` im Block von Prüfung 39. **Der erste
|
|
68
|
+
Zähler hat sie für einen Kopf gehalten.** Aufgefallen ist es nur, weil der Verlauf über die
|
|
69
|
+
Releases bei 0.39.0 eine höchste Prüfung 36 meldete, während die Sonden schon bis 37 reichten
|
|
70
|
+
– **eine Zahl, die nicht zur Erwartung passte.**
|
|
71
|
+
|
|
72
|
+
## 2. Was die Behebung sein muss – und was sie nicht sein kann
|
|
73
|
+
|
|
74
|
+
**Nicht sein kann sie: die Einträge erzeugen.** Sie tragen Prosa – was die Prüfung tut, welche
|
|
75
|
+
Entscheidungen sie trägt, wo ihre Grenze liegt. Das ist der Wert des Registers und nicht
|
|
76
|
+
ausrechenbar. **Ausrechenbar ist allein die Vollständigkeit.**
|
|
77
|
+
|
|
78
|
+
**Sein muss sie: eine Prüfung, die den Bestand abzählt und gegen die Register hält.** Dieselbe
|
|
79
|
+
Bauform, die das Projekt für die Grenzfalltabelle (Prüfung 30), die Durchsetzungstiefe
|
|
80
|
+
(Prüfung 31) und die Berechtigungskörbe (Prüfung 37) schon gewählt hat. Der Leitsatz steht
|
|
81
|
+
seit 0.33.0 im Bestand: **Wo die Grenze eines Begriffs eindeutig ist, gehört die Zahl
|
|
82
|
+
ausgerechnet, nicht gepflegt.** Die Menge der Prüfungen ist eindeutig.
|
|
83
|
+
|
|
84
|
+
## 3. Vorgeschlagene Änderung
|
|
85
|
+
|
|
86
|
+
1. **Die fünf Aussagen werden nachgezogen** – A1 bis A5, in der Schreibweise, die Prüfung 40
|
|
87
|
+
ausrechnet.
|
|
88
|
+
2. **Prüfung 40 (neu)** in `validate-framework.py`, vier Gegenstände:
|
|
89
|
+
1. **Verlorener Anker.** Die vier Ankertexte sind auffindbar: die Registerüberschrift und
|
|
90
|
+
der Satz zum Wirkungsnachweis in `validate-framework.py`, der Kopfsatz von
|
|
91
|
+
`probe-pruefungen.py`, die Zeilen `FW-KO-01` und `FW-KO-05` in `TEST_CATALOG.md`. Fehlt
|
|
92
|
+
einer, meldet die Prüfung sein Fehlen selbst (seit 0.32.0 Pflicht).
|
|
93
|
+
2. **Das Register ist lückenlos und vollständig.** Keine Lücke von 1 bis zur höchsten
|
|
94
|
+
geführten Nummer; und die höchste geführte Nummer ist die höchste, die in den beiden
|
|
95
|
+
Prüfskripten als `Prüfung N` oder `Prüfungen N bis M` genannt wird.
|
|
96
|
+
3. **Die Sondenmenge wird an drei Stellen gleich genannt** – im Satz des Validators, im
|
|
97
|
+
Kopfsatz des Sondenskripts und in der Prüfmittelspalte von `FW-KO-01` – in der
|
|
98
|
+
kanonischen Schreibweise, die die Prüfung aus `probe-pruefungen.py` ausrechnet.
|
|
99
|
+
4. **Die Grenzfallanzahl in `FW-KO-05`** ist die gezählte. Prüfung 30 rechnet sie innerhalb
|
|
100
|
+
von `EDGE_CASES.md` nach; außerhalb nennt sie nur `FW-KO-05`, und dort als
|
|
101
|
+
Arbeitsanweisung.
|
|
102
|
+
3. **Sechs Sonden und zwei Gegenproben** zu Prüfung 40. Die zweite Gegenprobe ist die
|
|
103
|
+
wichtigere: Ein Querverweis auf eine kleinere Prüfungsnummer im Fließtext eines
|
|
104
|
+
Kommentars darf **nicht** als fehlender Registereintrag gemeldet werden – das ist genau
|
|
105
|
+
der Fall, an dem der erste Entwurf gefallen ist.
|
|
106
|
+
4. **Der Kopfsatz von `probe-pruefungen.py` wird ersetzt**, nicht ergänzt: Er ist als
|
|
107
|
+
Release-Chronik gebaut und wird deshalb bei jedem Release falsch.
|
|
108
|
+
|
|
109
|
+
## 4. Auswirkungen
|
|
110
|
+
|
|
111
|
+
| Bereich | Auswirkung |
|
|
112
|
+
|---|---|
|
|
113
|
+
| Validatorlauf | **Fünf Fehler mehr im Vorstand** – eine je Abweichung A1 bis A5 –, null nach dem Nachziehen. Die Prüfung hängt an keinem Manifestfeld und läuft deshalb in **jeder** Installation und in jedem Pack – anders als Prüfung 33 (Befund B02) |
|
|
114
|
+
| Erzeugte Artefakte | **keine.** Prüfung 40 liest ausschließlich Dateien unter `<CORE_DIR>/`; eine Installation ändert sich nicht |
|
|
115
|
+
| Bestehende Installationen | **keine Migrationshinweise.** Wer `leitwerk-core/` ersetzt, bekommt die Prüfung mit; sie kann in einer Installation nur anschlagen, wenn dort am Kern gearbeitet wurde – und dann ist die Meldung richtig |
|
|
116
|
+
| Prosa | **Drei Stellen sind künftig in der Schreibweise gebunden** (die kanonische Sondenspanne), eine trägt statt eines Zahlworts eine Ziffer |
|
|
117
|
+
| `devin-desktop` | unverändert betroffen wie `claude-code`; die Prüfung ist packunabhängig |
|
|
118
|
+
|
|
119
|
+
## 5. Vorlage zur Entscheidung
|
|
120
|
+
|
|
121
|
+
| Nr. | Frage | Vorschlag | Preis |
|
|
122
|
+
|---|---|---|---|
|
|
123
|
+
| **E1** | Wird das Register gepflegt und bewacht – oder aus dem Code **erzeugt**? | **Gepflegt und bewacht.** Die Einträge tragen Prosa, die kein Generator schreibt; ausrechenbar ist nur die Vollständigkeit. Bauform von `CR-2026-063` E3: geschrieben, nicht erzeugt, und von einer Prüfung gehalten | **Pflege bleibt Pflege.** Die Prüfung fängt das Vergessen, nicht den falschen Satz: Ein Eintrag, der etwas anderes beschreibt als seine Prüfung tut, läuft durch. **Die Gegenposition ist vertretbar** – ein erzeugtes Register wäre nie falsch, es wäre nur ärmer |
|
|
124
|
+
| **E2** | Woran erkennt die Prüfung, wie viele Prüfungen es gibt? | **An der höchsten Nummer, die in den beiden Prüfskripten als `Prüfung N` genannt wird, plus Lückenlosigkeit des Registers.** **Verworfen: die Kopfkommentare als Anker** – gemessen tragen sie drei Formen, und eine Querverweiszeile sieht aus wie ein Kopf. Der erste Entwurf ist genau daran gefallen | **Sie zählt Nennungen, nicht Prüfungen.** Wer eine Prüfung baut und ihre Nummer nirgends schreibt, wird nicht gefangen – dieselbe Ehrlichkeit wie Gegenstand 2 von Prüfung 38. **Und sie ist an eine Nummernfolge gebunden**: Prüfungen ohne Nummer gäbe es nicht mehr |
|
|
125
|
+
| **E3** | Wird die Sondenmenge in einer **festen Schreibweise** verlangt? | **Ja, kanonisch gerendert und wörtlich verglichen** („6 und 18 bis 39"). Die Fehlermeldung nennt die richtige Zeichenkette und ist damit selbstheilend | **Drei Stellen Prosa sind gebunden.** Bauform von D-82 mit umgekehrtem Vorzeichen: dort war der wörtliche Vergleich ein **Messergebnis**, hier ist er eine **Entscheidung** – und eine Entscheidung gegen die Formulierungsfreiheit an drei Sätzen |
|
|
126
|
+
| **E4** | Gehört `TEST_CATALOG.md` in eine Prüfung des Validators – ein Testblatt ist kein Laufzeitartefakt? | **Ja.** `FW-KO-01` ist das **Abnahmekriterium** des Releases; was seine Prüfmittelspalte nennt, ist eine Zusage über den Umfang des Nachweises. Eine falsche Zusage dort ist schwerer als eine im Kommentar | **Der Validator liest damit ein Dokument des Prüfverfahrens.** Sein Gegenstand bleibt die **Zahl**, nicht das Verfahren – und das gehört in den Kopfkommentar, sonst wächst die Prüfung beim nächsten Mal in die Bewertung hinein |
|
|
127
|
+
| **E5** | Und die Grenzfallanzahl in `FW-KO-05`? | **Ja, als Ziffer.** Ein Zahlwort ließe sich nur über eine Tabelle deutscher Zahlwörter nachrechnen – **ein zweites Register neben dem ersten**, und genau der Befundtyp, den dieser Antrag behebt | **Die Zelle trägt künftig `20` statt „zwölf".** Und die Prüfung liest ausschließlich `TEST_CATALOG.md`: Die Nennungen in Roadmap, `CR-2026-052` und Protokoll sind **Vorgeschichte und richtig** – wer sie mitzöge, machte aus drei richtigen Zeilen drei falsche |
|
|
128
|
+
| **E6** | Bleibt die Release-Chronik im Kopfsatz von `probe-pruefungen.py` erhalten? | **Nein, ersetzt.** Der Satz ist als Chronik gebaut und wird deshalb bei **jedem** Release falsch. Was bleibt, ist die aktuelle Menge und der D-23-Grund | **Eine Herkunftsangabe geht verloren** – welches Release welche Sonde gebracht hat. Sie steht im Änderungsverlauf, und dort gehört sie hin |
|
|
129
|
+
| **E7** | Eigenes Release oder Anhang an das nächste? | **Ein eigenes Release, `0.42.0`.** Der Gegenstand ist geschlossen, und die Prüfung **fängt heute etwas** – erwartet fünf Fundstellen im Vorstand, eine je Abweichung | **Das siebzehnte Release in drei Tagen.** Und es ist das erste seit 0.34.0, dessen Gegenbeweis ein **Abzählen** ist und keine Konstruktion |
|
|
130
|
+
|
|
131
|
+
## 6. Entscheidung
|
|
132
|
+
|
|
133
|
+
| Feld | Inhalt |
|
|
134
|
+
|---|---|
|
|
135
|
+
| Entscheidung | **Angenommen, alle sieben Fragen wie vorgelegt.** E1 gepflegt und bewacht, nicht erzeugt; E2 die höchste genannte Nummer plus Lückenlosigkeit, nicht die Kommentarform; E3 kanonische Schreibweise, wörtlich verglichen; E4 `TEST_CATALOG.md` gehört dazu, Gegenstand ist die Zahl; E5 die Grenzfallanzahl als Ziffer, und nur in `TEST_CATALOG.md`; E6 der Kopfsatz des Sondenskripts wird ersetzt; E7 eigenes Release `0.42.0` |
|
|
136
|
+
| Datum | 2026-09-14 |
|
|
137
|
+
| Entscheidende Rolle | `<FRAMEWORK_OWNER>` |
|
|
138
|
+
| Decision-Log-Einträge | D-85 (das Register der Prüfungen wird nachgezählt, nicht gepflegt – Bestand, Register und Sondenmenge decken sich an allen drei Trägern), D-86 (eine Zahl über den Prüfapparat steht außerhalb ihrer Quelle nur dort, wo sie nachgerechnet wird – und eine Nennung in der Vorgeschichte ist kein Register) |
|
|
139
|
+
| Auflagen | **Der Gegenbeweis ist ein Abzählen, kein Konstrukt** – Prüfung 40 muss gegen 0.41.0 genau die fünf Fundstellen melden, die dieser Antrag nennt, und die Zahl gehört ins Protokoll. **Die Entlastung gehört ebenfalls hinein:** Die drei richtigen Nennungen in Roadmap, `CR-2026-052` und Protokoll bleiben unangetastet, und die Prüfung darf sie nicht melden. **Und die Grenze wird benannt:** Die Prüfung belegt Vollständigkeit, nicht Richtigkeit der Einträge |
|
|
140
|
+
| Ziel-Release | `0.42.0` |
|
|
141
|
+
| Umsetzung | umgesetzt mit `0.42.0` |
|