@renoxar/koolie 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +16 -0
- package/.gitignore +51 -0
- package/.koolie/QUELLREPOSITORIUM.md +18 -0
- package/.koolie/core/CHANGELOG.md +11832 -0
- package/.koolie/core/LICENSE +674 -0
- package/.koolie/core/LICENSE-HINWEIS.md +98 -0
- package/.koolie/core/OWNERS.md +36 -0
- package/.koolie/core/VERSION +1 -0
- package/.koolie/core/banner.py +397 -0
- package/.koolie/core/build/README.md +34 -0
- package/.koolie/core/build/assemble.py +354 -0
- package/.koolie/core/build/build-docx.py +194 -0
- package/.koolie/core/build/doc/00-kopf.md +18 -0
- package/.koolie/core/build/doc/01-executive-summary.md +24 -0
- package/.koolie/core/build/doc/02-zielbild.md +13 -0
- package/.koolie/core/build/doc/03-ziele-nichtziele.md +28 -0
- package/.koolie/core/build/doc/04-geltungsbereich.md +25 -0
- package/.koolie/core/build/doc/05-glossar.md +47 -0
- package/.koolie/core/build/doc/06-leitprinzipien.md +5 -0
- package/.koolie/core/build/doc/07-architektur.md +60 -0
- package/.koolie/core/build/doc/07a-abbildungsschicht.md +66 -0
- package/.koolie/core/build/doc/08-trennung.md +24 -0
- package/.koolie/core/build/doc/09-betriebsmodi.md +18 -0
- package/.koolie/core/build/doc/10-arbeitsablauf.md +5 -0
- package/.koolie/core/build/doc/11-datenschutz.md +5 -0
- package/.koolie/core/build/doc/12-sicherheit.md +5 -0
- package/.koolie/core/build/doc/13-risiko.md +5 -0
- package/.koolie/core/build/doc/14-rollen.md +9 -0
- package/.koolie/core/build/doc/15-referenzstruktur.md +124 -0
- package/.koolie/core/build/doc/16-agentenanweisung.md +8 -0
- package/.koolie/core/build/doc/17-overlay.md +29 -0
- package/.koolie/core/build/doc/18-skill-standard.md +5 -0
- package/.koolie/core/build/doc/19-skill-template.md +5 -0
- package/.koolie/core/build/doc/20-referenz-skills.md +70 -0
- package/.koolie/core/build/doc/21-prompts.md +53 -0
- package/.koolie/core/build/doc/22-checklisten.md +49 -0
- package/.koolie/core/build/doc/23-entscheidungsbaeume.md +29 -0
- package/.koolie/core/build/doc/24-onboarding.md +33 -0
- package/.koolie/core/build/doc/25-governance.md +35 -0
- package/.koolie/core/build/doc/26-qs-test.md +9 -0
- package/.koolie/core/build/doc/27-pilot.md +13 -0
- package/.koolie/core/build/doc/28-uebernahme.md +5 -0
- package/.koolie/core/build/doc/29-grenzen.md +87 -0
- package/.koolie/core/build/doc/30-roadmap.md +5 -0
- package/.koolie/core/build/doc/31-anhaenge.md +151 -0
- package/.koolie/core/build/doc/32-abschluss.md +92 -0
- package/.koolie/core/build/ref-a4.docx +0 -0
- package/.koolie/core/checklists/01-preflight.md +54 -0
- package/.koolie/core/checklists/02-privacy-context.md +51 -0
- package/.koolie/core/checklists/03-before-code-change.md +51 -0
- package/.koolie/core/checklists/04-review-ai-code.md +58 -0
- package/.koolie/core/checklists/05-testing.md +48 -0
- package/.koolie/core/checklists/06-security.md +50 -0
- package/.koolie/core/checklists/07-new-dependency.md +57 -0
- package/.koolie/core/checklists/08-merge-request.md +47 -0
- package/.koolie/core/checklists/09-onboarding.md +52 -0
- package/.koolie/core/checklists/10-project-adoption.md +74 -0
- package/.koolie/core/checklists/11-framework-release.md +71 -0
- package/.koolie/core/checklists/README.md +28 -0
- package/.koolie/core/clientmap.py +1358 -0
- package/.koolie/core/clients/README.md +113 -0
- package/.koolie/core/clients/_template/CLIENT_PACK.md +197 -0
- package/.koolie/core/clients/claude-code/CLIENT_PACK.md +383 -0
- package/.koolie/core/clients/claude-code/manifest.json +232 -0
- package/.koolie/core/clients/claude-code/root-template/.claude/README.md +127 -0
- package/.koolie/core/clients/cursor/CLIENT_PACK.md +229 -0
- package/.koolie/core/clients/cursor/manifest.json +330 -0
- package/.koolie/core/clients/cursor/root-template/.cursor/README.md +36 -0
- package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +251 -0
- package/.koolie/core/clients/devin-desktop/manifest.json +163 -0
- package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +79 -0
- package/.koolie/core/clients/kiro/CLIENT_PACK.md +223 -0
- package/.koolie/core/clients/kiro/manifest.json +300 -0
- package/.koolie/core/clients/kiro/root-template/.kiro/README.md +37 -0
- package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +257 -0
- package/.koolie/core/clients/openai-codex/manifest.json +208 -0
- package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +35 -0
- package/.koolie/core/decision-trees/01-context-allowed.md +46 -0
- package/.koolie/core/decision-trees/02-may-ai-do-task.md +47 -0
- package/.koolie/core/decision-trees/03-analyze-or-modify.md +50 -0
- package/.koolie/core/decision-trees/04-required-review.md +49 -0
- package/.koolie/core/decision-trees/05-stop-or-escalate.md +47 -0
- package/.koolie/core/decision-trees/06-rule-placement.md +58 -0
- package/.koolie/core/decision-trees/README.md +14 -0
- package/.koolie/core/docs/ADOPTION_GUIDE.md +582 -0
- package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +91 -0
- package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +79 -0
- package/.koolie/core/docs/ROADMAP.md +848 -0
- package/.koolie/core/docs/RUNTIME_GLOSSARY.md +113 -0
- package/.koolie/core/examples/README.md +11 -0
- package/.koolie/core/examples/example-ergebnisbericht.md +31 -0
- package/.koolie/core/examples/example-mr-description.md +31 -0
- package/.koolie/core/examples/example-overlay-runtime.md +48 -0
- package/.koolie/core/framework/core/00-principles.md +93 -0
- package/.koolie/core/framework/core/01-governance.md +58 -0
- package/.koolie/core/framework/core/02-privacy.md +141 -0
- package/.koolie/core/framework/core/03-security.md +86 -0
- package/.koolie/core/framework/core/04-quality.md +48 -0
- package/.koolie/core/framework/core/05-working-model.md +199 -0
- package/.koolie/core/framework/core/06-prompting-rules.md +51 -0
- package/.koolie/core/framework/core/07-review-rules.md +52 -0
- package/.koolie/core/framework/core/08-skill-conventions.md +115 -0
- package/.koolie/core/framework/core/09-risk-model.md +87 -0
- package/.koolie/core/framework/core/10-error-escalation.md +53 -0
- package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +16 -0
- package/.koolie/core/framework/org-policies/README.md +29 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/branching-strategy/muster-general.md +43 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/coding-guidelines/muster-general.md +82 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-done/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-ready/muster-general.md +54 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/quality/muster-general.md +59 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/security/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general.md +150 -0
- package/.koolie/core/framework/role-packs/README.md +63 -0
- package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +58 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +158 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +88 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/CHANGELOG.md +10 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/EXAMPLES.md +148 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/SKILL.md +195 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +22 -0
- package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +95 -0
- package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +26 -0
- package/.koolie/core/framework/runtime/agents/fw-reviewer.md +34 -0
- package/.koolie/core/framework/runtime/client-settings.json +3 -0
- package/.koolie/core/framework/runtime/hooks.json +20 -0
- package/.koolie/core/framework/runtime/mcp-config.example.json +4 -0
- package/.koolie/core/framework/runtime/permissions.json +106 -0
- package/.koolie/core/framework/runtime/root-instruction-local.example.md +19 -0
- package/.koolie/core/framework/runtime/root-instruction.md +116 -0
- package/.koolie/core/framework/runtime/rules/00-framework-core.md +49 -0
- package/.koolie/core/framework/runtime/rules/10-privacy-security.md +49 -0
- package/.koolie/core/framework/runtime/rules/15-development-rules.md +41 -0
- package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +32 -0
- package/.koolie/core/framework/runtime/rules/20-project-overlay.md +60 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/EXAMPLES.md +57 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/SKILL.md +177 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +15 -0
- package/.koolie/core/framework/skills/fw-change-analyze/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-change-analyze/EXAMPLES.md +66 -0
- package/.koolie/core/framework/skills/fw-change-analyze/SKILL.md +167 -0
- package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +16 -0
- package/.koolie/core/framework/skills/fw-change-small/CHANGELOG.md +13 -0
- package/.koolie/core/framework/skills/fw-change-small/EXAMPLES.md +68 -0
- package/.koolie/core/framework/skills/fw-change-small/SKILL.md +175 -0
- package/.koolie/core/framework/skills/fw-change-small/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-code-explain/CHANGELOG.md +11 -0
- package/.koolie/core/framework/skills/fw-code-explain/EXAMPLES.md +61 -0
- package/.koolie/core/framework/skills/fw-code-explain/SKILL.md +163 -0
- package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-docs-update/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-docs-update/EXAMPLES.md +59 -0
- package/.koolie/core/framework/skills/fw-docs-update/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-error-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-error-analyze/EXAMPLES.md +67 -0
- package/.koolie/core/framework/skills/fw-error-analyze/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-mr-description/SKILL.md +170 -0
- package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/CHANGELOG.md +7 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/EXAMPLES.md +48 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/SKILL.md +147 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-plan/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-plan/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-plan/SKILL.md +168 -0
- package/.koolie/core/framework/skills/fw-plan/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-refactor/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-refactor/EXAMPLES.md +70 -0
- package/.koolie/core/framework/skills/fw-refactor/SKILL.md +173 -0
- package/.koolie/core/framework/skills/fw-refactor/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/EXAMPLES.md +52 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/SKILL.md +149 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-review-support/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-review-support/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-review-support/SKILL.md +179 -0
- package/.koolie/core/framework/skills/fw-review-support/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-tests/CHANGELOG.md +9 -0
- package/.koolie/core/framework/skills/fw-tests/EXAMPLES.md +65 -0
- package/.koolie/core/framework/skills/fw-tests/SKILL.md +169 -0
- package/.koolie/core/framework/skills/fw-tests/TESTS.md +12 -0
- package/.koolie/core/framework/tech-packs/README.md +15 -0
- package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +61 -0
- package/.koolie/core/governance/ADOPTION_REGISTRY.md +89 -0
- package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +60 -0
- package/.koolie/core/governance/DECISION_LOG.md +779 -0
- package/.koolie/core/governance/EXCEPTION_PROCESS.md +31 -0
- package/.koolie/core/governance/FEEDBACK_PROCESS.md +34 -0
- package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +135 -0
- package/.koolie/core/governance/INCIDENT_HANDLING.md +47 -0
- package/.koolie/core/governance/PRIORITY_HIERARCHY.md +61 -0
- package/.koolie/core/governance/RACI.md +37 -0
- package/.koolie/core/governance/RELEASE_PROCESS.md +183 -0
- package/.koolie/core/governance/change-requests/CR-2026-001-definition-release-1-0-0.md +67 -0
- package/.koolie/core/governance/change-requests/CR-2026-002-client-packs.md +63 -0
- package/.koolie/core/governance/change-requests/CR-2026-003-install-client-schalter.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-004-client-pack-claude-code.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-005-kern-neutralisierung.md +75 -0
- package/.koolie/core/governance/change-requests/CR-2026-006-gemeinsame-skill-quelle.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-007-geteilte-kernbestandteile.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-008-berechtigungen-und-hooks.md +85 -0
- package/.koolie/core/governance/change-requests/CR-2026-009-umbenennung-leitwerk.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-010-restduplikation.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-011-hauptdokument.md +72 -0
- package/.koolie/core/governance/change-requests/CR-2026-012-schreibschutz-kernverzeichnis.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-013-validator-blindstellen.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-014-kurzform-langform.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-015-versionskette.md +150 -0
- package/.koolie/core/governance/change-requests/CR-2026-016-ap2-claude-code.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-017-ladebedingungen-claude-code.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-018-quellenliste-claude-code.md +121 -0
- package/.koolie/core/governance/change-requests/CR-2026-019-strukturentscheidungen-fortschreiben.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-020-akteursbezeichnung.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-021-hook-interpreter.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-022-artefaktversionen.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-023-shell-lesesperre.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-024-clientbindungen.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-025-betriebsmodi.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-026-fail-closed.md +134 -0
- package/.koolie/core/governance/change-requests/CR-2026-027-zeichenlimit-einstufung.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-028-berechtigungsmodi.md +130 -0
- package/.koolie/core/governance/change-requests/CR-2026-029-hook-ablageort.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-030-lesende-werkzeuge.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-031-regelquellen-ausserhalb.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-032-fremde-skill-ablage.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-033-modusabhaengige-durchsetzung.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-034-nachweisbedingungen.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-035-readme-in-der-regelablage.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-036-ortsangaben-hook-konfiguration.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-037-meldender-hook-clientgebunden.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-038-importsteuerung.md +159 -0
- package/.koolie/core/governance/change-requests/CR-2026-039-normative-saetze-in-kommentaren.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-040-erh01-ist-clientgebunden.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-041-s5-nicht-abbildbar.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-042-abwesenheitsnachweis-suchwerkzeug.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-043-validator-gibt-trefferwerte-aus.md +135 -0
- package/.koolie/core/governance/change-requests/CR-2026-044-aktivierungspruefung-clientgebunden.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-045-update-verliert-die-clientwahl.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-046-erstinstallation-ueberschreibt-projektdatei.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-047-zusagen-je-zugriffskanal.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-048-modusgrenze-ohne-durchsetzung.md +137 -0
- package/.koolie/core/governance/change-requests/CR-2026-049-sondenlauf-kodierungsabhaengig.md +126 -0
- package/.koolie/core/governance/change-requests/CR-2026-050-allowed-tools-und-verworfene-permissions.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-051-quellenkarte-und-ueberholter-stand.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-052-drei-regelkonflikte.md +166 -0
- package/.koolie/core/governance/change-requests/CR-2026-053-lesesperre-und-entwicklungsprofil.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-054-aktivierung-verlangt-aktivitaet.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-055-domain-ausnahme-ohne-mechanismus.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-056-eingabeschema-und-pfadidentitaet.md +245 -0
- package/.koolie/core/governance/change-requests/CR-2026-057-disallowed-tools-und-s3.md +148 -0
- package/.koolie/core/governance/change-requests/CR-2026-058-unteragent-reichweite.md +203 -0
- package/.koolie/core/governance/change-requests/CR-2026-059-unteragent-tiefe-und-widerspruch.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-060-stumme-brueche.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-061-berechtigungsdatei-ohne-pruefung.md +169 -0
- package/.koolie/core/governance/change-requests/CR-2026-062-werkzeugabbildung-des-frontmatters.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-063-skillaufruf-ohne-freigabe.md +207 -0
- package/.koolie/core/governance/change-requests/CR-2026-064-pruefregister-nicht-nachgezaehlt.md +141 -0
- package/.koolie/core/governance/change-requests/CR-2026-065-devin-suchwerkzeuge-erhoben.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-066-schlitzdeckung-ohne-abgleich.md +153 -0
- package/.koolie/core/governance/change-requests/CR-2026-067-hookblock-und-praeparationsregister.md +140 -0
- package/.koolie/core/governance/change-requests/CR-2026-068-sondenlauf-nebenlaeufig.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-069-bytecode-des-kerns.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-070-d11-zaehler.md +114 -0
- package/.koolie/core/governance/change-requests/CR-2026-071-strukturentscheidungen-bestaetigen.md +322 -0
- package/.koolie/core/governance/change-requests/CR-2026-072-modulstatus-heben.md +315 -0
- package/.koolie/core/governance/change-requests/CR-2026-073-nicht-skill-traeger-heben.md +246 -0
- package/.koolie/core/governance/change-requests/CR-2026-074-restliche-nicht-skill-traeger-heben.md +271 -0
- package/.koolie/core/governance/change-requests/CR-2026-075-ap2-zielversion-devin-desktop.md +335 -0
- package/.koolie/core/governance/change-requests/CR-2026-076-erster-sitzungstest.md +455 -0
- package/.koolie/core/governance/change-requests/CR-2026-077-sitzungstest-schranken.md +425 -0
- package/.koolie/core/governance/change-requests/CR-2026-078-planung-nach-1-0-0.md +294 -0
- package/.koolie/core/governance/change-requests/CR-2026-079-umbenennung-vorziehen.md +233 -0
- package/.koolie/core/governance/change-requests/CR-2026-080-clientbindung-des-kerns.md +321 -0
- package/.koolie/core/governance/change-requests/CR-2026-081-produktnamen-im-kern.md +297 -0
- package/.koolie/core/governance/change-requests/CR-2026-082-sitzungstest-pi-ds-2.md +145 -0
- package/.koolie/core/governance/change-requests/CR-2026-083-sitzungstest-ne-sc.md +300 -0
- package/.koolie/core/governance/change-requests/CR-2026-084-trockenlauf-gegen-den-committeten-stand.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-085-vorbedingungen-sitzungstest-5.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-086-grenzfaelle-gegen-die-fassungen.md +164 -0
- package/.koolie/core/governance/change-requests/CR-2026-087-produktbeobachtung-quellenliste.md +206 -0
- package/.koolie/core/governance/change-requests/CR-2026-088-vorbedingungen-testblaetter.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-089-herrichtung-uebungsrepositorium.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-090-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +255 -0
- package/.koolie/core/governance/change-requests/CR-2026-091-sitzungstest-5.md +163 -0
- package/.koolie/core/governance/change-requests/CR-2026-092-pruefmittelwort-und-buendelschnitt.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-093-sechzehnte-praeparation.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-094-testblaetter-buendel-1.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-095-pruefapparat-filter.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-096-vorbedingungen-buendel-2.md +225 -0
- package/.koolie/core/governance/change-requests/CR-2026-097-testblaetter-buendel-2.md +162 -0
- package/.koolie/core/governance/change-requests/CR-2026-098-anforderungen-auslieferung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-099-k74-und-vorbedingungen-buendel-3.md +119 -0
- package/.koolie/core/governance/change-requests/CR-2026-100-testblaetter-buendel-3.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-101-k77-eigener-posten.md +165 -0
- package/.koolie/core/governance/change-requests/CR-2026-102-k77-entschieden.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-103-vorbedingungen-buendel-4.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-104-herrichtung-buendel-4.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-105-messapparat-buendel-4.md +227 -0
- package/.koolie/core/governance/change-requests/CR-2026-106-uebergabe-einchecken.md +91 -0
- package/.koolie/core/governance/change-requests/CR-2026-107-uebergabe-im-release-commit.md +111 -0
- package/.koolie/core/governance/change-requests/CR-2026-108-testblaetter-buendel-4.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-109-berichtsweg-des-aufraeumers.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-110-vorbedingungen-des-nachlaufs.md +184 -0
- package/.koolie/core/governance/change-requests/CR-2026-111-der-apparat-auf-dem-weg-der-wiederaufnahme.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-112-der-arbeitsplatz-im-kern.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-113-nachlauf-buendel-4.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-114-vorbedingungen-buendel-5.md +317 -0
- package/.koolie/core/governance/change-requests/CR-2026-115-herrichtung-buendel-5.md +244 -0
- package/.koolie/core/governance/change-requests/CR-2026-116-messtag-buendel-5.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-117-sammelzellen-zentraler-katalog.md +251 -0
- package/.koolie/core/governance/change-requests/CR-2026-118-quellenzuordnung-matrixzeilen.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-119-umbenennung-koolie.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-120-ap2-rest-devin-desktop.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-121-verify-marker-abschaffen.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-122-umbenennung-koolie-lauf.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-123-vortrag-und-namensabsatz.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-124-hauptdokument-ap11.md +237 -0
- package/.koolie/core/governance/change-requests/CR-2026-125-word-fassung-und-blinder-fleck.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-126-lizenz-gpl3.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-127-gegenzeichnung-rollenfrage.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-128-freigabelauf-1.0.0.md +278 -0
- package/.koolie/core/governance/change-requests/CR-2026-129-archiv-zeilenenden.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-130-reihenfolge-des-hebens.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-131-chronik-und-vorlage.md +194 -0
- package/.koolie/core/governance/change-requests/CR-2026-132-erhebung-openai-codex.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-133-bau-openai-codex.md +97 -0
- package/.koolie/core/governance/change-requests/CR-2026-134-uebergabe-lokal.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-135-pfadlisten-nul-getrennt.md +139 -0
- package/.koolie/core/governance/change-requests/CR-2026-136-overlay-werte-einordnung.md +156 -0
- package/.koolie/core/governance/change-requests/CR-2026-137-kopierweg-kern.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-138-overlay-muster-general.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-139-overlay-muster-dokumente.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-140-installer-je-zielsystem.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-141-lieferumfang.md +123 -0
- package/.koolie/core/governance/change-requests/CR-2026-142-dokumentationsstandard.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-143-klasse-b-core-laufzeit.md +89 -0
- package/.koolie/core/governance/change-requests/CR-2026-144-klasse-b-governance.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-145-klasse-b-skills.md +81 -0
- package/.koolie/core/governance/change-requests/CR-2026-146-code-pack-posten.md +84 -0
- package/.koolie/core/governance/change-requests/CR-2026-147-regel-register-posten.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-148-mehrprojekt-tokenlast.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-149-regelablage-pfadtoken.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-150-client-pack-kiro.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-151-skill-anweisungen.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-152-testblaetter-modellwechsel.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-153-attributionszeile.md +88 -0
- package/.koolie/core/governance/change-requests/CR-2026-154-auffindbarkeit.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-155-client-pack-cursor.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-156-mandat-und-reibung.md +100 -0
- package/.koolie/core/governance/change-requests/CR-2026-157-mcp-anbindung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-158-registerpflege.md +69 -0
- package/.koolie/core/governance/change-requests/CR-2026-159-powershell.md +49 -0
- package/.koolie/core/governance/change-requests/CR-2026-160-messapparat.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-161-pruefwerkzeuge.md +52 -0
- package/.koolie/core/governance/change-requests/CR-2026-162-schutzschicht.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-163-pfadsemantik.md +61 -0
- package/.koolie/core/governance/change-requests/CR-2026-164-modi-ausnahmen.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-165-installer-banner.md +406 -0
- package/.koolie/core/governance/change-requests/CR-2026-166-nachlauf-aufzeichnungen.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-167-einsatzarchitektur.md +60 -0
- package/.koolie/core/governance/change-requests/CR-2026-168-paketquellen.md +64 -0
- package/.koolie/core/governance/change-requests/CR-2026-169-modusbindung-messfragen.md +58 -0
- package/.koolie/core/governance/change-requests/CR-2026-170-erste-veroeffentlichung.md +62 -0
- package/.koolie/core/governance/change-requests/CR-2026-171-befehl-im-projektverzeichnis.md +57 -0
- package/.koolie/core/governance/change-requests/CR-2026-172-auftritt-npm-suche.md +58 -0
- package/.koolie/core/install.py +2402 -0
- package/.koolie/core/install_dialog.py +227 -0
- package/.koolie/core/koexistenz.py +112 -0
- package/.koolie/core/mandat.py +605 -0
- package/.koolie/core/onboarding/COMPLETION_CRITERIA.md +37 -0
- package/.koolie/core/onboarding/GUIDE.md +103 -0
- package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +48 -0
- package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +40 -0
- package/.koolie/core/onboarding/QUICKSTART.md +50 -0
- package/.koolie/core/onboarding/REFERENCE.md +69 -0
- package/.koolie/core/onboarding/exercises/EXERCISES.md +78 -0
- package/.koolie/core/onboarding/exercises/README.md +120 -0
- package/.koolie/core/pilot/METRICS.md +59 -0
- package/.koolie/core/pilot/PILOT_CONCEPT.md +42 -0
- package/.koolie/core/prompts/01-understand-codebase.md +99 -0
- package/.koolie/core/prompts/02-impact-analysis.md +104 -0
- package/.koolie/core/prompts/03-implementation-planning.md +102 -0
- package/.koolie/core/prompts/04-code-generation.md +100 -0
- package/.koolie/core/prompts/05-test-generation.md +103 -0
- package/.koolie/core/prompts/06-refactoring.md +102 -0
- package/.koolie/core/prompts/07-debugging.md +97 -0
- package/.koolie/core/prompts/08-security-review.md +92 -0
- package/.koolie/core/prompts/09-performance-analysis.md +89 -0
- package/.koolie/core/prompts/10-documentation.md +91 -0
- package/.koolie/core/prompts/11-merge-request-review.md +94 -0
- package/.koolie/core/prompts/12-developer-training.md +90 -0
- package/.koolie/core/prompts/README.md +88 -0
- package/.koolie/core/templates/MR_AI_DISCLOSURE.md +37 -0
- package/.koolie/core/templates/PLAN_TEMPLATE.md +57 -0
- package/.koolie/core/templates/SKILL_TEMPLATE.md +159 -0
- package/.koolie/core/templates/project-overlay/OVERLAY.md +315 -0
- package/.koolie/core/templates/project-overlay/documents/README.md +43 -0
- package/.koolie/core/templates/project-overlay/documents/ai-governance/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/ai-process-model/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/branching-strategy/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/coding-guidelines/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-done/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-ready/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/deployment/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/glossary/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/quality/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roadmap/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roles/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/security/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/exceptions/EXCEPTIONS.md +9 -0
- package/.koolie/core/templates/project-overlay/forbidden-terms.txt +8 -0
- package/.koolie/core/templates/project-overlay/overlay-manifest.yaml +73 -0
- package/.koolie/core/templates/rules/21-overlay-TEMPLATE.md.template +28 -0
- package/.koolie/core/templates/rules/40-tech-TEMPLATE.md.template +33 -0
- package/.koolie/core/tests/EDGE_CASES.md +67 -0
- package/.koolie/core/tests/TEST_CATALOG.md +170 -0
- package/.koolie/core/tests/erhebungen/README.md +326 -0
- package/.koolie/core/tests/erhebungen/ablage.py +357 -0
- package/.koolie/core/tests/erhebungen/apparat/__init__.py +22 -0
- package/.koolie/core/tests/erhebungen/apparat/baum.py +214 -0
- package/.koolie/core/tests/erhebungen/apparat/belege.py +91 -0
- package/.koolie/core/tests/erhebungen/apparat/clients.py +321 -0
- package/.koolie/core/tests/erhebungen/apparat/freigabe.py +74 -0
- package/.koolie/core/tests/erhebungen/apparat/kontingent.py +64 -0
- package/.koolie/core/tests/erhebungen/apparat/laeufer.py +155 -0
- package/.koolie/core/tests/erhebungen/apparat/reihe.py +202 -0
- package/.koolie/core/tests/erhebungen/apparat/selbsttest.py +280 -0
- package/.koolie/core/tests/erhebungen/apparat/stand.py +30 -0
- package/.koolie/core/tests/erhebungen/apparat/vorpruefung.py +70 -0
- package/.koolie/core/tests/erhebungen/auswerten-b4.py +468 -0
- package/.koolie/core/tests/erhebungen/auswerten-b5.py +517 -0
- package/.koolie/core/tests/erhebungen/auswerten-dd.py +172 -0
- package/.koolie/core/tests/erhebungen/baeume-b4.py +334 -0
- package/.koolie/core/tests/erhebungen/baeume-b5.py +339 -0
- package/.koolie/core/tests/erhebungen/baeume_loeschen.py +138 -0
- package/.koolie/core/tests/erhebungen/cc-overlay-fuellen.py +277 -0
- package/.koolie/core/tests/erhebungen/dossier-b4.py +178 -0
- package/.koolie/core/tests/erhebungen/dossier-b5.py +202 -0
- package/.koolie/core/tests/erhebungen/historie-bauen-b4.py +642 -0
- package/.koolie/core/tests/erhebungen/k-bauen-b3.py +841 -0
- package/.koolie/core/tests/erhebungen/lauf-dd.py +146 -0
- package/.koolie/core/tests/erhebungen/lauf.py +114 -0
- package/.koolie/core/tests/erhebungen/mcp-waechter.py +278 -0
- package/.koolie/core/tests/erhebungen/messbaum-schnitt.py +256 -0
- package/.koolie/core/tests/erhebungen/messen.py +72 -0
- package/.koolie/core/tests/erhebungen/node-waechter.py +74 -0
- package/.koolie/core/tests/erhebungen/packaktivierung.py +403 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b4.py +210 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b5.py +251 -0
- package/.koolie/core/tests/erhebungen/reihe-b4.py +171 -0
- package/.koolie/core/tests/erhebungen/reihe-b5.py +172 -0
- package/.koolie/core/tests/erhebungen/stand-b4.py +135 -0
- package/.koolie/core/tests/erhebungen/stand-b5.py +137 -0
- package/.koolie/core/tests/erhebungen/trust-b4.py +56 -0
- package/.koolie/core/tests/erhebungen/trust-b5.py +56 -0
- package/.koolie/core/tests/erhebungen/turn2-schreiben-b4.py +105 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b4.py +377 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b5.py +363 -0
- package/.koolie/core/tests/erhebungen/zaehlen46.py +74 -0
- package/.koolie/core/tests/erhebungen/zustand-b4.py +82 -0
- package/.koolie/core/tests/erhebungen/zustand-b5.py +82 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code-wirkungsnachweise.md +194 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code.md +468 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-020-akteursbezeichnung.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-021-hook-interpreter.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-022-artefaktversionen.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-023-shell-lesesperre.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-024-clientbindungen.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-DS-03.md +90 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-01.md +105 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-02.md +123 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-04.md +73 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-RE-02.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01-wiederholung.md +108 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01.md +249 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-ZA-05.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-11-AP2-devin-desktop.md +257 -0
- package/.koolie/core/tests/protocols/2026-09-11-CR-2026-026-fail-closed.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-11-erhebungen-K21-K26.md +243 -0
- package/.koolie/core/tests/protocols/2026-09-11-wirkungsnachweise-0.26.0.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-12-B01-allowed-tools.md +152 -0
- package/.koolie/core/tests/protocols/2026-09-12-B04-B05-gegenpruefung.md +204 -0
- package/.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md +268 -0
- package/.koolie/core/tests/protocols/2026-09-12-mehrprojekt-arbeitsbereich.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.26.1.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.27.0.md +114 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.28.0.md +129 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.29.0.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.30.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.31.0.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-13-B06-gegenpruefung.md +370 -0
- package/.koolie/core/tests/protocols/2026-09-13-B07-B09-gegenpruefung.md +211 -0
- package/.koolie/core/tests/protocols/2026-09-13-B08-B11-gegenpruefung.md +179 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-disallowed-tools.md +147 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent-tiefe.md +139 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-berechtigungsdatei.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-stumme-brueche.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-werkzeugabbildung.md +219 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.32.0.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.33.0.md +169 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.34.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.35.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.36.0.md +137 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.37.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.38.0.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.39.0.md +188 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.40.0.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md +267 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-skillaufruf.md +238 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-pruefregister.md +156 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-schlitzdeckung.md +206 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-skillwahl.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-14-migrationslauf-pilot.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.41.0.md +175 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.42.0.md +180 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.43.0.md +165 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.44.0.md +130 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-d11-zaehlregeln.md +311 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-modulstatus.md +524 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-nicht-skill-traeger.md +225 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-restliche-nicht-skill-traeger.md +345 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-strukturentscheidungen.md +392 -0
- package/.koolie/core/tests/protocols/2026-09-15-herrichtung-uebungsrepositorium.md +213 -0
- package/.koolie/core/tests/protocols/2026-09-15-migrationslauf-pilot-0.46.0.md +143 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.45.0.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.46.0.md +193 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.47.0.md +149 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.49.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.50.0.md +183 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.51.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.52.0.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-16-wirkungsnachweise-0.53.0.md +350 -0
- package/.koolie/core/tests/protocols/2026-09-17-nachtrag-migrationshinweis-0.54.1.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-pi-ds.md +523 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-schranken.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-17-wirkungsnachweise-0.54.0.md +159 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-AK-01.md +442 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-KO-05.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-18-herrichtung-uebungsrepositorium.md +273 -0
- package/.koolie/core/tests/protocols/2026-09-18-nachtrag-preis-umbenennung-0.56.1.md +102 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-5.md +349 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-ne-sc.md +430 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-pi-ds-2.md +499 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +170 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-testblaetter.md +184 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.55.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.2.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.0.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.1.md +262 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.58.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.59.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.60.0.md +340 -0
- package/.koolie/core/tests/protocols/2026-09-19-herrichtung-buendel-4.md +235 -0
- package/.koolie/core/tests/protocols/2026-09-19-k77-zurechenbarkeit.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefapparat-filter.md +50 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefmittelwort-und-buendelschnitt.md +239 -0
- package/.koolie/core/tests/protocols/2026-09-19-sechzehnte-praeparation.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-1.md +250 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-2.md +229 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md +293 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-2.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-3.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-4.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-20-messapparat-buendel-4.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-20-testblaetter-buendel-4.md +321 -0
- package/.koolie/core/tests/protocols/2026-09-20-uebergabe-im-release-commit.md +146 -0
- package/.koolie/core/tests/protocols/2026-09-20-vorbedingungen-nachlauf-b4.md +259 -0
- package/.koolie/core/tests/protocols/2026-09-21-arbeitsplatz-im-kern.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-21-nachlauf-buendel-4.md +157 -0
- package/.koolie/core/tests/protocols/2026-09-21-vorbedingungen-buendel-5.md +247 -0
- package/.koolie/core/tests/protocols/2026-09-21-wiederaufnahme-nachlauf-b4.md +190 -0
- package/.koolie/core/tests/protocols/2026-09-22-ap2-rest-devin-desktop.md +614 -0
- package/.koolie/core/tests/protocols/2026-09-22-hauptdokument-ap11.md +443 -0
- package/.koolie/core/tests/protocols/2026-09-22-herrichtung-buendel-5.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-22-messtag-buendel-5.md +327 -0
- package/.koolie/core/tests/protocols/2026-09-22-quellenzuordnung-matrixzeilen.md +230 -0
- package/.koolie/core/tests/protocols/2026-09-22-sammelzellen-zentraler-katalog.md +354 -0
- package/.koolie/core/tests/protocols/2026-09-22-umbenennung-koolie.md +296 -0
- package/.koolie/core/tests/protocols/2026-09-22-verify-marker-abschaffen.md +283 -0
- package/.koolie/core/tests/protocols/2026-09-22-vortrag-und-name.md +261 -0
- package/.koolie/core/tests/protocols/2026-09-22-wirkungsnachweise-0.86.0.md +158 -0
- package/.koolie/core/tests/protocols/2026-09-23-archiv-zeilenenden.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-23-bau-openai-codex.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-23-chronik-und-vorlage.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-23-erhebung-openai-codex.md +309 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0-vorbereitung.md +119 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-23-gegenzeichnung-rollenfrage.md +198 -0
- package/.koolie/core/tests/protocols/2026-09-23-reihenfolge-des-hebens.md +220 -0
- package/.koolie/core/tests/protocols/2026-09-23-word-fassung-und-blinder-fleck.md +307 -0
- package/.koolie/core/tests/protocols/2026-09-24-kopierweg-kern.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-24-overlay-werte-einordnung.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-24-pfadlisten-nul-getrennt.md +128 -0
- package/.koolie/core/tests/protocols/2026-09-24-uebergabe-lokal.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-25-code-pack-posten.md +86 -0
- package/.koolie/core/tests/protocols/2026-09-25-dokumentationsstandard.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-25-installer-je-zielsystem.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-core-laufzeit.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-governance.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-skills.md +91 -0
- package/.koolie/core/tests/protocols/2026-09-25-lieferumfang.md +76 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-dokumente.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-general.md +100 -0
- package/.koolie/core/tests/protocols/2026-09-25-regel-register-posten.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-26-attributionszeile.md +83 -0
- package/.koolie/core/tests/protocols/2026-09-26-auffindbarkeit.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-cursor.md +68 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-kiro.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md +174 -0
- package/.koolie/core/tests/protocols/2026-09-26-regelablage-pfadtoken.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-26-skill-anweisungen.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-26-testblaetter-modellwechsel.md +106 -0
- package/.koolie/core/tests/protocols/2026-09-27-mandat-und-reibung.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-28-mcp-anbindung.md +72 -0
- package/.koolie/core/tests/protocols/2026-09-29-messapparat.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-29-powershell.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-29-pruefwerkzeuge.md +64 -0
- package/.koolie/core/tests/protocols/2026-09-29-registerpflege.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-29-schutzschicht.md +95 -0
- package/.koolie/core/tests/protocols/2026-09-30-einsatzarchitektur.md +104 -0
- package/.koolie/core/tests/protocols/2026-09-30-modi-ausnahmen.md +77 -0
- package/.koolie/core/tests/protocols/2026-09-30-nachlauf-banner.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-30-paketquellen.md +65 -0
- package/.koolie/core/tests/protocols/2026-09-30-pfadsemantik.md +79 -0
- package/.koolie/core/tests/protocols/2026-10-01-auftritt-und-suche.md +58 -0
- package/.koolie/core/tests/protocols/2026-10-01-befehl-im-projektverzeichnis.md +47 -0
- package/.koolie/core/tests/protocols/2026-10-01-erste-veroeffentlichung.md +60 -0
- package/.koolie/core/tests/protocols/2026-10-01-modusbindung-messfragen.md +107 -0
- package/.koolie/core/tests/protocols/README.md +14 -0
- package/.koolie/core/tests/scripts/hook-check-secrets.py +1307 -0
- package/.koolie/core/tests/scripts/hook-overlay-status.py +120 -0
- package/.koolie/core/tests/scripts/mermaid_renderer.py +67 -0
- package/.koolie/core/tests/scripts/overlay_status.py +130 -0
- package/.koolie/core/tests/scripts/probe-pruefungen.py +110 -0
- package/.koolie/core/tests/scripts/pruefungen/__init__.py +4 -0
- package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +1559 -0
- package/.koolie/core/tests/scripts/pruefungen/bestand.py +1433 -0
- package/.koolie/core/tests/scripts/pruefungen/dokumente.py +1262 -0
- package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +784 -0
- package/.koolie/core/tests/scripts/pruefungen/hooks.py +1188 -0
- package/.koolie/core/tests/scripts/pruefungen/overlay.py +1251 -0
- package/.koolie/core/tests/scripts/pruefungen/packs.py +1314 -0
- package/.koolie/core/tests/scripts/pruefungen/register.py +950 -0
- package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +1202 -0
- package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +957 -0
- package/.koolie/core/tests/scripts/sonden/__init__.py +4 -0
- package/.koolie/core/tests/scripts/sonden/apparat.py +653 -0
- package/.koolie/core/tests/scripts/sonden/teil01_grundbestand_und_installation.py +999 -0
- package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +942 -0
- package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +1184 -0
- package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +1491 -0
- package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +1447 -0
- package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +739 -0
- package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +1014 -0
- package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +1325 -0
- package/.koolie/core/tests/scripts/sonden/teil09_pruefmittel_81_und_82.py +505 -0
- package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +1218 -0
- package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +149 -0
- package/.koolie/core/tests/scripts/sonden/teil12_pruefungen_106_und_107.py +136 -0
- package/.koolie/core/tests/scripts/sonden/teil13_pfad_und_mustersemantik.py +150 -0
- package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +204 -0
- package/.koolie/core/tests/scripts/sonden/teil15_banner_und_nachlauf.py +193 -0
- package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +114 -0
- package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +115 -0
- package/.koolie/core/tests/scripts/sonden/teil18_modusbindung_m3_m5.py +113 -0
- package/.koolie/core/tests/scripts/validate-framework.py +1104 -0
- package/.koolie/core/tests/scripts/validate-output.py +296 -0
- package/.koolie/core/wirksamkeit.py +430 -0
- package/CONTRIBUTING.md +119 -0
- package/LICENSE +674 -0
- package/QUICKSTART.en.md +135 -0
- package/QUICKSTART.md +129 -0
- package/README.en.md +108 -0
- package/README.md +107 -0
- package/install.cmd +44 -0
- package/install.command +46 -0
- package/package.json +21 -0
- package/paketquellen/README.md +41 -0
- package/paketquellen/bauen.py +411 -0
- package/paketquellen/koolie.cmd +23 -0
- package/paketquellen/koolie_befehl.py +82 -0
- package/paketquellen/npm/koolie.js +26 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
# Client Pack `claude-code`
|
|
2
|
+
|
|
3
|
+
| Attribut | Wert |
|
|
4
|
+
|---|---|
|
|
5
|
+
| Modul-ID | `CP-CC` |
|
|
6
|
+
| Ebene | keine – Abbildungsschicht |
|
|
7
|
+
| Version | 0.26.4 |
|
|
8
|
+
| Status | pilot |
|
|
9
|
+
| Owner (Rolle) | `<FRAMEWORK_OWNER>` |
|
|
10
|
+
| Client | Claude Code |
|
|
11
|
+
| Verbindliche Zielversion | `2.1.x` (D-112). Die Spanne ist der Geltungsbereich dieses Packs; der gemessene Punktwert steht in der Zeile darunter (D-113). **Für dieses Pack ist die Spanne festgelegt, nicht erhoben** – erhoben ist der Punktwert |
|
|
12
|
+
| Geprüfte Clientversion | 2.1.267 (AP2-Dokumentenabgleich, `tests/protocols/2026-09-10-AP2-claude-code.md`). **Am 2026-09-16 war auf dem Arbeitsplatz des Frameworks 2.1.273 installiert** – sechs Patchstände weiter, in derselben Zielspanne |
|
|
13
|
+
| Stand der Produktbeobachtung | **2026-09-18, gegen 2.1.275** (`FW-AK-01`, `tests/protocols/2026-09-18-FW-AK-01.md`). Der Dokumentenabgleich der fünf Quellen `QC-1` bis `QC-5` und der Changelog der Stände 2.1.268 bis 2.1.275 sind gefahren; die Zielspanne `2.1.x` trägt weiter. **Zwei Befunde blieben, beide neue Anweisungs- beziehungsweise Skillquellen außerhalb des Repositoriums** – siehe `S4`, `S5`, `X1` und `K-63` |
|
|
14
|
+
| Datum der Prüfung | 2026-09-10 – Dokumentenabgleich und Prüfung der erzeugten Artefakte; Wirkungsnachweise in laufenden Sitzungen folgten ab 2026-09-12 für einzelne Zeilen (Abschnitt 3, Belegstand) |
|
|
15
|
+
|
|
16
|
+
> **Teilweise belegt.** Die Zeilen mit `[DOK]` sind gegen die Herstellerdokumentation
|
|
17
|
+
> abgeglichen – zuerst gegen Clientversion 2.1.267 und eine reale Erstinstallation
|
|
18
|
+
> (AP2, `tests/protocols/2026-09-10-AP2-claude-code.md`), zuletzt in der Produktbeobachtung
|
|
19
|
+
> `FW-AK-01` gegen 2.1.275; die Zielspanne `2.1.x` ist festgelegt (D-112). **Zwei Einstufungen stehen auf `[NICHT ABBILDBAR]`: S5 und B10** – beide keine
|
|
20
|
+
> Kernzusage (D-41), je mit benanntem Ersatz in der Zeile. Wirkungsnachweise aus laufenden
|
|
21
|
+
> Sitzungen liegen für einen Teil der Zeilen vor; welche, steht in Abschnitt 3. Für die übrigen
|
|
22
|
+
> gilt: Ein Dokumentenabgleich belegt `[DOK]`, nicht beobachtete Durchsetzung.
|
|
23
|
+
>
|
|
24
|
+
> **Zur Lesart der Spalten.** Die Spalte „Einstufung" nennt die **vorgesehene** Durchsetzungstiefe, die Spalte „Beleg" ihren Nachweisstand: `[DOK]` = in der Herstellerdokumentation beschrieben, `[EMPF]` = Empfehlung des Frameworks, `BELEG OFFEN` = noch nicht belegt, mit Grund und Datum in der Zelle – ohne Frist (D-291).
|
|
25
|
+
|
|
26
|
+
## 1. Pfadabbildung
|
|
27
|
+
|
|
28
|
+
Maschinenlesbar in `manifest.json`; diese Tabelle ist die menschenlesbare Fassung.
|
|
29
|
+
|
|
30
|
+
| Rolle des Artefakts | Pfad bei diesem Client | Belegstatus |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| Wurzel-Anweisungsdatei | `CLAUDE.md` | `[DOK]` |
|
|
33
|
+
| Regeldateien | `.claude/rules/*.md`; der Client findet sie selbst, auch in Unterverzeichnissen. Ohne `paths`-Frontmatter unbedingt geladen, mit `paths` bei passenden Dateien – **kein Import nötig**, siehe Abschnitt 1b | [DOK] `docs/en/memory` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) |
|
|
34
|
+
| Skills | `.claude/skills/<name>/SKILL.md` | `[DOK]` |
|
|
35
|
+
| Subagentenprofile | `.claude/agents/<name>.md`, Frontmatter-Feld `tools` | [DOK] `docs/en/sub-agents` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) |
|
|
36
|
+
| Berechtigungskonfiguration | `.claude/settings.json` (erzeugt aus `framework/runtime/permissions.json`) | `[DOK]` Mechanismus `docs/en/settings`; Mustersemantik [DOK] `docs/en/permissions` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) – gitignore-Syntax, Einzelheiten bei B3. **Pfadregeln werden nur für `Read` und `Edit` ausgewertet**, siehe Abschnitt 7 |
|
|
37
|
+
| Hook-Konfiguration | `.claude/settings.json` (**keine eigene Datei**; erzeugt aus `framework/runtime/hooks.json` und in dieselbe Datei eingebettet) | `[DOK]` |
|
|
38
|
+
| MCP-Konfiguration | `.mcp.json` (Vorlage: `.mcp.json.example`) | `[DOK]`; **gemessen am 2026-09-28** (2.1.283, Vorprüfung zu `1.18.0`): Ein Server `"type": "http"` mit `"headers"` lädt auch im Druckmodus, und eine Kopfzeile `"Authorization": "Basic ${VARIABLE}"` wird aus der Umgebung gefüllt – die versionierte Datei trägt keinen Zugang (D-456). Ein Server der Projektdatei lädt erst nach Zustimmung (`enabledMcpjsonServers` im Projekteintrag des Benutzers) |
|
|
39
|
+
| Projektverzeichnis-Variable in Hooks | `CLAUDE_PROJECT_DIR` | `[DOK]` |
|
|
40
|
+
| Nutzerlokale Überschreibung | `CLAUDE.local.md`, `.claude/settings.local.json` | `[DOK]` |
|
|
41
|
+
|
|
42
|
+
## 1a. Semantikabbildung der Berechtigungen und Hooks
|
|
43
|
+
|
|
44
|
+
Die Regelmenge liegt werkzeugneutral im Kern (`.koolie/core/framework/runtime/permissions.json`, `hooks.json`) und wird bei der Installation in die Werkzeuge dieses Clients übersetzt (D-18). Was dabei abgebildet wird, steht maschinenlesbar im `manifest.json`; diese Tabelle ist die menschenlesbare Fassung. Dieser Client ist der Grund, weshalb es die Abbildungsschicht überhaupt braucht: Vier der sechs Zeilen sind keine Umbenennung, sondern eine andere Mengenlehre.
|
|
45
|
+
|
|
46
|
+
| Neutrales Werkzeugverb | Werkzeug bei diesem Client | Anmerkung |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `read` | `Read(muster)` | |
|
|
49
|
+
| `search` | – | Die eigenen Suchwerkzeuge (`Grep`, `Glob`) werten **keine** Pfadregeln aus; für dieses Verb wird keine Regel erzeugt (`CR-2026-016`). **Eine `Read(**)`-Regel deckt sie nicht mit ab** (gemessen, B04, Lauf B04-5). Den Kanal trägt der Schutz-Hook über `hook_tools.search`, nicht die Berechtigungsdatei (`CR-2026-047`, D-47) |
|
|
50
|
+
| `write` | `Edit(muster)` | Ändern und Anlegen sind zwar getrennte Werkzeuge, eine **Pfadregel** wertet der Client aber nur für `Read` und `Edit` aus; eine `Write(muster)`-Regel wäre wirkungslos und wird nicht erzeugt (AP2-CC-02, Abschnitt 7) |
|
|
51
|
+
| `exec` | `Bash(präfix:*)` | präfixbasiert statt wörtlich – die Sperre ist damit breiter. **Seit `1.18.2` je Regel zweimal: `Bash(…)` und `PowerShell(…)`** (D-469) – das zweite Befehlswerkzeug des Clients unter Windows, gleiche Regelform, gemessen |
|
|
52
|
+
| `fetch` | `WebFetch`, `WebSearch` | zwei Werkzeuge, beide ohne Muster |
|
|
53
|
+
| `mcp` | `mcp__*` | ohne Muster |
|
|
54
|
+
|
|
55
|
+
| Weitere Eigenschaft | Wert |
|
|
56
|
+
|---|---|
|
|
57
|
+
| Name ohne Verzeichnisanteil | mit Wurzelangabe (`./.env`) |
|
|
58
|
+
| Zusätzliche Schlüssel | `defaultMode: default` |
|
|
59
|
+
| Hook-Werkzeugnamen | `Read`; `Grep`, `Glob`; `Bash`; `Edit`, `Write`, `NotebookEdit` (`hook_tools` im Manifest) |
|
|
60
|
+
| Projektverzeichnis im Hook-Befehl | `$CLAUDE_PROJECT_DIR` |
|
|
61
|
+
|
|
62
|
+
Zwei Zusicherungen sichern die Abbildung ab, statt sich auf Sorgfalt zu verlassen: Eine `deny`- oder `ask`-Regel ohne Zielwerkzeug lässt die Installation scheitern, und die Präfixform eines Befehlsverbots muss ein Präfix seiner wörtlichen Form sein – damit ist sie nachweislich mindestens so breit. Bei `allow` ist jede Verbreiterung unzulässig.
|
|
63
|
+
|
|
64
|
+
## 1b. Semantikabbildung der Ladebedingungen
|
|
65
|
+
|
|
66
|
+
Die Regeltexte liegen werkzeugneutral im Kern (`.koolie/core/framework/runtime/rules/`, dazu die Regelvorlagen und die Laufzeitfassungen aktivierter Packs) und tragen dort einen **Ladetrigger**. Dieser Client kennt für Regeldateien genau eine Bedingung: die Bindung an Dateimuster über das Frontmatter-Feld `paths`. Die Abbildung steht maschinenlesbar im `manifest.json` unter `rule_triggers`; diese Tabelle ist die menschenlesbare Fassung.
|
|
67
|
+
|
|
68
|
+
| Ladetrigger der Kernquelle | Fassung bei diesem Client | Ladeverhalten | Bewertung |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| `always_on` | kein `paths`-Feld | bei jedem Sitzungsstart | wörtliche Entsprechung |
|
|
71
|
+
| `model_decision` | kein `paths`-Feld | bei jedem Sitzungsstart | **Verschärfung** – mehr Regeln aktiv, nicht weniger; sie kostet Kontext, kein Schutzniveau |
|
|
72
|
+
| `glob` mit `globs` | `paths:` mit denselben Mustern | sobald der Client eine passende Datei liest | wörtliche Entsprechung |
|
|
73
|
+
| `manual`, `agent` | **keine Abbildung** | – | Die Installation scheitert. Kein Kernartefakt nutzt sie; eine künftige Regel, die es täte, erzwingt damit eine Entscheidung, statt ihre Ladebedingung stillschweigend zu verlieren |
|
|
74
|
+
|
|
75
|
+
Zwei Zusicherungen sichern auch diese Abbildung ab: Ein Ladetrigger ohne Eintrag lässt die Installation scheitern (D-27), und ein Ladetrigger, der auf `paths` abbildet, muss Dateimuster mitbringen – eine leere Ladebedingung wäre keine. Der Validator prüft die **installierte** Fassung gegen die Felder, die dieser Client auswertet: Ein stehen gebliebenes `trigger:` oder `globs:` ist ein Fehler, und eine Kernregel (`00-`, `10-`, `15-`, `20-`) darf kein `paths` tragen – sie gilt für jede Aufgabe, eine Ladebedingung wäre dort eine Lockerung.
|
|
76
|
+
|
|
77
|
+
`description` ist für Regeldateien dieses Clients **nicht** dokumentiert und entfällt deshalb im Frontmatter (K-18). Zweck, Ladeverhalten und der Ladetrigger der Kernquelle stehen stattdessen in einem HTML-Kommentar oberhalb des Regeltextes. Für `CLAUDE.md`-Dateien ist dokumentiert, dass Block-Kommentare vor dem Einspeisen entfernt werden; für Regeldateien ist das **nicht** dokumentiert. Der Kommentar ist deshalb knapp gehalten und zählt hier vorsorglich zum ständigen Kontext.
|
|
78
|
+
|
|
79
|
+
## 2. Fähigkeitsmatrix
|
|
80
|
+
|
|
81
|
+
**Zur Belegspalte.** Jede `[DOK]`-Zeile nennt die **Quellenkennung** der Liste in Anhang 31.4.2 (`QC-1` bis `QC-6`). Die Kennung ist die verbindliche Form, weil allein sie gegen die Liste gehalten werden kann; ein Seitenpfad darf danebenstehen. **Prüfung 73 setzt es durch.** Eine Zelle, die auf eine andere Zeile verweist (*„wie B3"*), erbt deren Kennung – die Prüfung löst den Verweis auf, und eine Zeile, deren Ziel keine Kennung trägt, nimmt die Nachbarzeilen mit.
|
|
82
|
+
|
|
83
|
+
**Was der Zusatz `(Zuordnung K-62)` sagt – und was nicht.** Die Zuordnung ist am 2026-09-22 aus dem Bestand gewonnen – aus der Quellenliste und den Protokollen zu AP2 und `FW-AK-01` –, nicht aus einem eigenen Abruf. Der Recherchestand der Seiten bleibt deshalb der von `FW-AK-01` (2026-09-18); eine Zuordnung ist keine Aktualitätsaussage. Wofür der Bestand keine Seite hergibt, sagt die Zeile das, statt zu raten: `M3` tut es (D-156, D-263).
|
|
84
|
+
|
|
85
|
+
### R – Regelladung
|
|
86
|
+
|
|
87
|
+
| ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
|
|
88
|
+
|---|---|---|---|---|
|
|
89
|
+
| R1 | Wurzel-Anweisungsdatei wird ungefragt geladen | `CLAUDE.md` wird zu Beginn jeder Sitzung geladen | `[TECHNISCH]` | `[DOK]` **`QC-1`** (Zuordnung `K-62`) |
|
|
90
|
+
| R2 | Regeldateien mit Ladebedingungen | `.claude/rules/*.md`: ohne `paths`-Frontmatter unbedingt geladen, mit `paths` nur bei passenden Dateien. Der Client kennt **eine** Bedingung, die Kernquelle drei Ladetrigger; `model_decision` bildet deshalb auf unbedingtes Laden ab – eine Verschärfung, siehe Abschnitt 1b | `[TECHNISCH]` | [DOK] **`QC-1`** `docs/en/memory` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) |
|
|
91
|
+
| R3 | Regeln an Dateimuster bindbar (Grundlage der Technology Packs) | `paths:` im Frontmatter bindet eine Regel an Glob-Muster; mehrere Muster und Klammer-Expansion sind zulässig. Ein Technology Pack liegt damit als `.claude/rules/40-tech-<name>.md` und lädt bei den Dateien seiner Technologie. Grenzen: Abschnitt 5 | `[TECHNISCH]` | [DOK] **`QC-1`** `docs/en/memory` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) |
|
|
92
|
+
| R4 | Bekanntes Zeichenlimit, das das Framework einhalten kann | **4 MiB** je Anweisungsdatei; eine größere Datei wird übersprungen. Zusätzlich als Empfehlung 200 Zeilen | `[TECHNISCH]` | [DOK] **`QC-1`** `docs/en/memory` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) |
|
|
93
|
+
| R5 | Die geladenen Regelquellen sind vollständig aufzählbar | **Zwei dokumentierte Wege** (`QC-1`): `/context` führt die geladenen Anweisungsdateien unter *Memory files* auf, und der Hook `InstructionsLoaded` feuert, wenn eine Anweisungs- oder Regeldatei in den Kontext geladen wird – sein Matcher ist der **Ladegrund** (`session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact`). Die vollständige Auskunft des Frameworks steht in Abschnitt 8 dieses Packs | `[TEXTUELL]` | **`[DOK]` `QC-1` `docs/en/memory`, Stand 2.1.275 (`FW-AK-01`, 2026-09-18, `tests/protocols/2026-09-18-FW-AK-01.md`).** 🟢 **Der VERIFY-Marker ist damit aufgelöst** (D-158): Er verlangte wörtlich einen Abgleich gegen die aktuelle Client-Dokumentation, und die nennt seit diesem Stand einen technischen Weg. Bis 0.61.0 stand hier *„Kein Kommando dieses Clients führt die wirksamen Regelquellen auf"* – **das ist nicht mehr wahr**, und der alte Belegstand war eine Aussage über sich selbst, die veraltet ist (D-114). **Zwei benannte Grenzen:** (1) Was die **Nutzlast** des Hooks trägt – Pfad, Herkunft, Reihenfolge –, ist nicht dokumentiert; belegt ist das Ereignis samt Ladegrund, nicht der Inhalt. (2) Keiner der beiden Wege ist in einer Sitzung dieses Frameworks **gemessen**; ein Dokumentenabgleich belegt `[DOK]`, nicht `[TECHNISCH]` (D-12). Die frühere Selbstauskunft der Sitzung ist am 2026-09-11 gegen 2.1.268 beobachtet (K-22, K-26) und traf zu – sie bleibt Modellverhalten und ist nicht der hier belegte Weg |
|
|
94
|
+
| R6 | Keine Importe fremder Werkzeugformate | Der Client kennt `claudeMdExcludes`, das Anweisungs- und Regeldateien über Glob-Muster vom Laden ausnimmt. **Das Framework liefert keine Vorgabe aus** (D-37): Eine `CLAUDE.md` im Elternverzeichnis ist in einem Mehrprojekt-Verzeichnis oft gewollt, ein pauschaler Ausschluss bräche legitime Anordnungen. Es bleibt bei Auskunft (Abschnitt 8) und Empfehlung | `[TEXTUELL]` | Der Mechanismus ist am 2026-09-11 gegen 2.1.268 gemessen: Drei Muster gleichzeitig nahmen die fremde Datei vom Laden aus, zwei geladene `CLAUDE.md` wurden eine (K-21). **Welches der drei Muster greift, ist nicht getrennt gemessen.** Dass hier keine Vorgabe steht, ist eine Entscheidung, kein fehlender Beleg |
|
|
95
|
+
|
|
96
|
+
### S – Skills
|
|
97
|
+
|
|
98
|
+
| ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
|
|
99
|
+
|---|---|---|---|---|
|
|
100
|
+
| S1 | Versionierte Skills im Repository | `.claude/skills/<name>/SKILL.md` mit Frontmatter | `[TECHNISCH]` | `[DOK]` **`QC-3`** (Zuordnung `K-62`); zusätzlich **beobachtet** (siehe Abschnitt 6) |
|
|
101
|
+
| S2 | Gezielter Aufruf | **Zwei Wege, verschieden gebaut** (D-187, gemessen 2026-09-19). **(a) Der modellseitige Aufruf** – die Sitzung zieht den Skill selbst – **ist ein eigener Werkzeugaufruf mit dem Namen `Skill` und damit einzeln kontrollierbar**; das ist die Voraussetzung der drei Grenzen unten, und die Erhebung vom 2026-09-14 hat genau ihn gemessen: Ihre Prompts nannten keinen Skill. **(b) Der Aufruf mit vorangestelltem Schrägstrich** – der Weg, den der Testkatalog verlangt (D-146) – ist eine **Slash-Befehls-Erweiterung des Clients**: Die Mitschrift führt `<command-name>` samt Argumenten und fügt die ganze `SKILL.md` als Nutzernachricht ein; **kein Werkzeugaufruf, keine `Skill(...)`-Regel im Spiel, kein stummer Fehlschlag.** Gemessen an zwölf von zwölf Läufen. **Die drei Grenzen gelten für Weg (a):** (1) **Rückfragepflichtig ohne Freigabe** – ohne `allow`-Regel fällt der Aufruf auf `defaultMode: default`; im rückfragefreien Betrieb ist das eine Abweisung. Die Berechtigungsdatei führt je eine Regel für die zwölf Skills des Kerns; **ein Skill außerhalb dieser zwölf bleibt rückfragepflichtig** – gewollt, weil die Sitzung auch Skills aus einer nutzerglobalen Ablage führt, die nach Regel 2.6 der Prioritätshierarchie ebenenlos sind. (2) **Wörtliches Argument** – der Vergleich ist zeichengenau: `Skill(fw-code-explain)` lässt den Aufruf durch, `Skill(fw-*)` weist ihn ab. **Ein Präfixmuster gäbe lautlos nichts frei** – die Bauform von D-66, mit umgekehrtem Vorzeichen. Deshalb zwölf Regeln statt einer. (3) **Der Fehlschlag ist stumm** – nach der Abweisung liest die Sitzung die `SKILL.md` als gewöhnliche Datei und arbeitet ihren Ablauf von Hand nach; die Ausgabe trägt Überschrift und Standardformat des Skills und ist von einem gelungenen Lauf **nicht zu unterscheiden**. **Die nachgearbeitete Fassung trägt die Werkzeugbeschränkung des Skills nicht** – in einem Lauf rief sie ein Werkzeug auf, das der Skill in `disallowed-tools` sperrt. Der stumme Rückfall kostet damit die Zusage der Nachbarzeile. Was dagegen steht, ist eine Anweisung (Wurzel-Anweisungsdatei Abschnitt 17, Grenzfall G-20), kein Mechanismus | `[TECHNISCH]`, mit drei benannten Grenzen | **Gemessen am 2026-09-14** (`tests/protocols/2026-09-14-erhebung-skillaufruf.md`), elf Läufe an einer vollständigen Installation, davon vier Kontroll- und Entlastungsläufe: Ohne `allow`-Regel wurde der Aufruf abgewiesen (`toolDenialKind: user-rejected`, `permission_denials` führt `Skill`), mit Regel lief er durch (Gegenprobe). Die Argumentform ist mit Positivlauf und **Kontrolllauf** belegt: `Skill(fw-plan)` weist `fw-code-explain` ab, das Muster engt also wirklich ein. Zuvor war die Zeile mit `[DOK]` belegt und nannte **keine Grenze** – der Aufruf funktionierte, und was ihn aufhielt, stand in der eigenen Berechtigungsdatei |
|
|
102
|
+
| S3 | Werkzeugbeschränkung je Skill | **`disallowed-tools` im Skill-Frontmatter.** Die Installation bildet `permissions.deny` der Quelle darauf ab: die groben Verben `edit` und `exec` über `hook_tools` auf `Edit, Write, NotebookEdit` und `Bash` (D-65). `allowed-tools` trägt die Zusage **nicht** – es ist eine Vorabfreigabe für den aufrufenden Turn, keine Beschränkung (B01), und wird deshalb bewusst nicht dafür verwendet. **Was davon in der Mitschrift steht, ist gemessen** (D-188): Beim Aufruf mit Schrägstrich führt sie `command_permissions` mit genau den Werkzeugen aus `allowed-tools`; ein Baum ohne die beiden Frontmatter-Schlüssel führt dort eine **leere** Liste. **Wirkungslos wird damit jede Freigabe der Berechtigungsdatei, die während des Befehls nicht in dieser Liste steht** – wer ein Unterlassen misst, weist es je Schicht aus (D-122). **Die Sperre weist ab, sie entfernt nicht** (D-195). Gemessen sind fünf Aufrufe in vier Läufen, die **erschienen und abgewiesen wurden**, wörtlich *„Permission to use Bash has been denied“* – **ein entferntes Werkzeug kann man nicht aufrufen, ein abgewiesenes schon.** An der Wirkung ändert das nichts, an der Beschreibung schon. **Die Abweisung trägt kein `toolDenialKind`** – sie steht in `permission_denials` des Ergebnisses; wer nur die Mitschrift danach durchsucht, zählt null. **Welche Schicht abweist, ist wahrscheinlich, nicht isoliert** (`K-73` bleibt insoweit offen): Bei identischer Berechtigungsdatei wurde ein schlichtes `ls` **mit** Skill abgewiesen und **ohne** Skill ausgeführt; die eigens gebauten Zuschnitte mit `Bash` im `allow`-Korb haben **gar keinen Aufruf abgesetzt**. **Drei Grenzen:** (1) **Turnbereich** – die Sperre gilt nur für den aufrufenden Turn; Turn 2 derselben Sitzung konnte wieder schreiben. Ein „nur lesender" Skill ist nur *während seines Turns* nur lesend, das ist **keine Betriebsart**. (2) **Aufzählend** – was nicht in der Liste steht, ist offen; mit gesperrtem `Write, Edit` schrieb der Skill über `Bash`. (3) **Keine Argumentmuster** – befehlsgenaue Verbote sind nicht ausdrückbar, und ein Eintrag mit Klammer wirkt **lautlos gar nicht**. Betroffen sind fünf der zwölf Skills, ungleich: **`fw-change-small`, `fw-refactor`, `fw-tests` bekommen gar keine Schranke je Skill**, **`fw-mr-description` und `fw-review-support` eine teilweise** – ihre Editierwerkzeuge sind gesperrt, ihre `git`-Verbote nicht. Für sie trägt weiter die **globale** Berechtigungsschicht samt Schutz-Hook, die unabhängig vom Skill wirkt. **Reichweite, gemessen am 2026-09-13** (`tests/protocols/2026-09-13-erhebung-unteragent.md`, D-67): Die Sperre gilt auch für einen **Unteragenten**, den der Skill startet. Ein Unteragent mit einem Profil **ohne** eigenes `tools`-Feld hatte `Write` und `Edit` nicht im Vorrat; der Kontrolllauf mit demselben Skill ohne das Feld schrieb. **Der Unteragent ist kein Umgehungsweg.** Grenze 2 reicht allerdings mit: Mit gesperrtem `Write, Edit` schrieb der Unteragent über `Bash`. **Ergänzt am 2026-09-13** (`tests/protocols/2026-09-13-erhebung-unteragent-tiefe.md`, D-72), je mit Kontrolllauf: Die Sperre gilt auch für einen Unteragenten mit `run_in_background: true` und reicht **mindestens zwei Ebenen tief** – der Start der zweiten Ebene gelang, das Werkzeug fehlte auch dort. **Bei Widerspruch gewinnt die restriktivere Liste:** Ein Profil, das `Write` ausdrücklich in `tools` nennt, bekam es unter einem Skill mit `disallowed-tools: Write, Edit` **nicht** – eine Erlaubnis holt ein entferntes Werkzeug nicht zurück, gleich ob sie in der Berechtigungsdatei steht oder im Agentenprofil. **Man kann die Liste nur enger machen, nie weiter.** **Beobachtung zum Wortlaut des Clients, keine Messung:** Er meldet die Sperre als „Write is disabled for this *session*, in subagents as well as here" – die zweite Hälfte trifft zu, die erste **überzeichnet**: Gemessen ist der **Turn**, und Turn 2 derselben Sitzung konnte wieder schreiben (D-64). Wer der Meldung glaubt, nimmt mehr Reichweite an, als belegt ist. **Weiterhin nicht gemessen:** drei Ebenen und tiefer; der umgekehrte Widerspruch (Profil sperrt, Skill erlaubt) – nach dem Ergebnis vorhersagbar, aber eine Vorhersage ist keine Messung; und ob ein **blockierender** Hook auch auf der zweiten Ebene stoppt (für die erste ist es gemessen, D-69) | `[TECHNISCH]`, mit drei benannten Grenzen | **Gemessen am 2026-09-13** (`tests/protocols/2026-09-13-erhebung-disallowed-tools.md`), neun Läufe mit Kontrolllauf, Positivkontrolle und Rekorder-Hook: Ein Skill mit `disallowed-tools: Write, Edit` **konnte nicht schreiben – obwohl `Write` in der `allow`-Liste stand**; derselbe Skill ohne das Feld konnte es. `disallowed-tools` schlägt also eine ausdrückliche Freigabe und ist genau das, was `allowed-tools` nach **B01** nicht ist. Bis 0.34.0 galt diese Zeile als nicht abbildbar, mit dem Satz „nicht erhoben, deshalb hier nicht zugesagt" (`CR-2026-050`, D-50) – **das war nach dem damaligen Belegstand richtig und ist mit der Erhebung überholt** (`CR-2026-057`, D-64). Nach D-41 ist S3 eine **Fähigkeitszusage**; ihr Ausfall sperrt die Inbetriebnahme nicht. **Benannte Grenze, gemessen mit `1.23.0`** (D-525): Die Sperre gilt nur in dem Turn, in dem der Skill läuft – im Folgeturn (`--resume`) meldete der Lauf „Skill: keiner“, und ein Befehl lief, sobald die Regelschicht ihn zuließ; dort tragen Berechtigungsdatei und Schutz-Hook |
|
|
103
|
+
| S4 | Schreibende Skills nur benutzergetriggert | `disable-model-invocation: true` verhindert, dass das Modell den Skill selbst lädt, und hält zusätzlich seine Beschreibung aus dem Kontext; die Installation setzt das Feld für jeden Skill, dessen Quelle `triggers` ohne `model` nennt (9 von 12). Ergänzend wirkt `ask` auf `Edit(**)`: jede Schreiboperation löst eine Rückfrage aus | `[TECHNISCH]` | [DOK] **`QC-3`** `docs/en/skills` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`); **beobachtet am 2026-09-12** (`tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`): Von zwölf Skills führte die Sitzung genau die drei **ohne** das Feld; die neun mit dem Feld standen nicht in ihrem Kontext, waren als Aufruf mit vorangestelltem Schrägstrich aber vorhanden. Der Wirkungsnachweis steht damit nicht mehr aus. **Reichweite:** Die Zusage gilt für die Skill-Ablage, die das Framework schreibt. Skills aus Ablagen außerhalb des Repositoriums unterliegen diesen Konventionen nicht; sie sind nach Regel 2.6 der Prioritätshierarchie ebenenlos und dürfen den Handlungsspielraum nur einschränken (`CR-2026-032`). 🔴 **Seit 2.1.275 gibt es eine solche Ablage, die das Framework nicht erreicht, und sie ist standardmäßig an** (`FW-AK-01`, 2026-09-18, `K-63`): Der Client lädt die im Konto des Anwenders eingeschalteten Skills nach `~/.claude/skills/synced/` und gleicht sie **während** der Sitzung etwa alle zehn Minuten ab. Für diese Skills gilt das Feld dieser Zeile nur, soweit ihre Quelle es selbst setzt – das Framework schreibt sie nicht. **Die Zusage dieser Zeile bleibt richtig und ihr Geltungsbereich ist kleiner geworden.** **Und eine zweite Reichweitenangabe, gegenläufig:** Ein Unteragentenprofil kann Skills über das Frontmatter-Feld `skills` **vorladen**; `disable-model-invocation: true` verhindert auch das (`QC-3`, `QC-4`). Das Framework nutzt das Feld nicht |
|
|
104
|
+
| S5 | Die geladenen Skills sind vollständig aufzählbar, samt Herkunft und Aufrufbarkeit | **Keiner.** `claude --help` kennt keinen Unterbefehl für Skills, `claude doctor` nennt keine Skill-Pfade; die Sitzung erhält Skills als Name und Kurzbeschreibung **ohne Pfad** | `[NICHT ABBILDBAR]` | **Erhoben am 2026-09-12** (`tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`). Zwei Teilantworten. **Fremde Skill-Ablagen führt dieser Client nicht mit:** Vier gleich gebaute Sonden in `.devin/skills/`, `.windsurf/skills/`, `.cursor/skills/` und `~/.devin/skills/` blieben sämtlich ungeführt, die fünfte in der eigenen Ablage wurde geführt (Positivkontrolle im selben Lauf). Die Gegenrichtung zu `AP2-DD-16` fällt damit entgegengesetzt aus; ein Import ist hier ein ausdrücklicher Befehl (`claude import`), kein stilles Mitführen. **Die Aufzählbarkeit selbst ist nicht eingelöst:** Die Sitzung antwortete auf die Frage nach der Herkunft wörtlich „Herkunft unbekannt — für alle 84", und ihre Liste ist zudem konstruktionsbedingt unvollständig (S4). Die nutzerglobale **eigene** Ablage `~\.claude\skills\` lädt in jedes Projekt mit – 67 Skills in einer Sitzung, deren Projekt keinen davon enthält; sie fällt unter den Auskunftsabschnitt nach D-34. **Ersatz: `python .koolie/core/install.py --client claude-code --root <projekt> --list-skills`** – Name, Herkunft, Aufrufbarkeit und Pfad je Skill dieser Installation (`CR-2026-041` E3, D-42). **Kein vollständiger Ersatz, und die Ausgabe sagt das selbst:** Skills aus Ablagen außerhalb des Projektverzeichnisses sieht auch das Framework nicht – also genau die 67, um die es hier geht. Nach D-41 ist S5 eine **Fähigkeitszusage**; ihr Ausfall sperrt die Inbetriebnahme nicht. 🔴 **Nachtrag 2026-09-18 (`FW-AK-01`): Der Abstand ist seit 2.1.275 größer, nicht kleiner.** Zu den nutzerglobalen Skills tritt eine **Kontoquelle**: `~/.claude/skills/synced/`, standardmäßig eingeschaltet, im Hintergrund geladen und **während** der Sitzung etwa alle zehn Minuten nachgezogen (`QC-3`). Damit kann sich der Skillbestand **innerhalb** einer Sitzung ändern – eine Aufzählung ist dann nicht nur unvollständig, sondern hat einen Zeitpunkt. Der Ersatz über `--list-skills` sieht sie so wenig wie die 67 nutzerglobalen (`K-63`) |
|
|
105
|
+
|
|
106
|
+
### B – Berechtigungen
|
|
107
|
+
|
|
108
|
+
> **`[TECHNISCH]` heißt in diesem Block:** Die Engine setzt die Regel durch, **solange der Betriebsmodus die Berechtigungsprüfung nicht abschaltet.** Im Modus ohne Rückfragen, den D-05 untersagt, ist diese Linie aus; dann trägt allein der Schutz-Hook (D-35). **Für diesen Client trifft das nicht zu – erhoben am 2026-09-12** (`tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`, Auflage E5 zu `CR-2026-033`). Drei Läufe mit dem Bypass-Schalter der Befehlszeile, der Modus in der Hook-Aufzeichnung als `bypassPermissions` belegt: Die Verweigerungsregeln griffen **auch dort** – für das Lesewerkzeug und für den Shell-Befehl (E1). Nimmt man sie ganz weg, trägt der Schutz-Hook allein, ebenfalls für beide Werkzeuge (E2). Ein Kontrolllauf ohne beide Schranken las die Datei anstandslos (E0) und macht die anderen zwei erst zu Messungen. **Beide Linien halten hier also gemeinsam, wo sie beim Pack `devin-desktop` nacheinander fallen.** Hinzu kommt, dass der Modus bei diesem Client sperrbar ist (`permissions.disableBypassPermissionsMode`, `AP2-CC-05`) und in verwalteten Einstellungen unüberschreibbar. D-05 bleibt unberührt: Der Lauf war Testnachweis, kein Betriebszustand.
|
|
109
|
+
>
|
|
110
|
+
> **Und nur für eine Sitzung, die im Verzeichnis der Installation startet** (D-408, gemessen am 2026-09-26 mit Clientversion 2.1.283, `tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`). Startet die Sitzung in einem Unterverzeichnis mit eigenem git-Repositorium, lädt der Client die Wurzel-Anweisung der Elternebene mit – die Sitzung kennt ihre Regeln –, aber **weder die Berechtigungsdatei noch die Hooks**: Die `.env` des Unterverzeichnisses wurde gelesen, ein aufzeichnender Hook lief nicht; in der Wurzel wurde derselbe Zugriff abgewiesen, und der Hook lief. **Eine eigene Installation im Unterverzeichnis trägt** (Zugriff abgewiesen, Hook lief), und dann laden beide Wurzel-Anweisungen. Alle Einstufungen `[TECHNISCH]` dieses Blocks und des H-Blocks stehen unter dieser Bedingung; **nichts meldet einen falschen Startort** (`K-159`). Die Einsatzszenarien stehen im Übernahmeleitfaden, Abschnitt 4.
|
|
111
|
+
|
|
112
|
+
| ID | Zusage des Frameworks | Kern | Mechanismus beim Client | Einstufung | Beleg |
|
|
113
|
+
|---|---|---|---|---|---|
|
|
114
|
+
| B1 | Berechtigungen versioniert im Repository | ja | `.claude/settings.json` | `[TECHNISCH]` | `[DOK]` **`QC-5`** (Zuordnung `K-62`) |
|
|
115
|
+
| B2 | Verweigern vor Rückfragen vor Erlauben | ja | `permissions.deny` / `.ask` / `.allow`. **Die Kette hat drei Paare, und zwei davon sind gemessen.** **`deny` über `allow`:** gemessen am 2026-09-17 – derselbe Befehl in beiden Körben, der Lauf ruft ihn auf und wird abgewiesen (D-121). **`ask` über `allow`:** gemessen am 2026-09-18 – bei `ask` = `Edit(**)` bleibt eine ausdrückliche `allow`-Regel auf einen **einzelnen Pfad** wirkungslos; der Schreibzugriff wird abgewiesen. **Die praktische Folge steht in der Zeile, weil sie sonst niemand sieht:** Ein Projekt kann eine einzelne Datei **nicht** vorab zum Schreiben freigeben, solange `Edit(**)` im `ask`-Korb steht – der Korb schluckt die engere Regel. **`deny` über `ask`:** unbelegt **Ein Befehl in keinem Korb** (`K-208`, D-537, gemessen 2026-10-01 mit 2.1.285 im Druckmodus): `git ls-files` lief ohne Eintrag und ohne Rückfrage – der Client gibt lesende Befehle selbst frei; mit `Bash(git ls-files:*)` in `deny` wurde er abgewiesen. Der `allow`-Korb ist damit für lesende Befehle keine Grenze, `deny` ist es | `[TECHNISCH]` | **Gemessen am 2026-09-18** (`tests/protocols/2026-09-18-sitzungstest-pi-ds-2.md` Abschnitt 5.2) für `ask` über `allow`: ein Paar, das sich in **genau einer Zeile** der Berechtigungsdatei unterscheidet – mit `Edit(**)` im `ask`-Korb ein `permission_denial` auf `Edit`, ohne ihn keines und die Datei geschrieben. **Gemessen am 2026-09-17** (D-121, `tests/protocols/2026-09-17-sitzungstest-schranken.md`) für `deny` über `allow`. Zuvor vollständig `[DOK]`; **`deny` über `ask` bleibt `[DOK]` `QC-2` (Zuordnung `K-62`) – der Fall ist nicht gemessen** |
|
|
116
|
+
| B3 | Secret-Dateien per Pfadmuster lesegeschützt | ja | Verweigerungsregeln auf `./.env`, `**/*.pem`, `**/secrets/**` und weitere. Mustersemantik: gitignore-Syntax; ein bloßer Dateiname trifft in jeder Tiefe (`Read(.env)` ist gleichbedeutend mit `Read(**/.env)`); ein einsegmentiges Verzeichnismuster trifft in `deny` und `ask` in jeder Tiefe, in `allow` nur am verankerten Ort. Unter Windows werden Pfade vor dem Vergleich auf POSIX-Form normalisiert, und der Vergleich unterscheidet **nicht** zwischen Groß- und Kleinschreibung: `Read(**/*.secret)` weist `UNTEN/NOTIZ.SECRET` ab wie `klein/notiz.secret` (gemessen am 2026-09-30, 2.1.285, `K-92`, D-492) – anders als bei `devin-desktop` (D-277). **Je Kanal:** direktes Lesen **wirkt** (Regel und Hook); Shell **wirkt** (der Schutz-Hook zerlegt den Befehl in Tokens); **Suche wirkt allein über den Hook**, weil dieser Client für `Grep` und `Glob` keine Pfadregeln auswertet (`AP2-CC-02`); Unterprozess **nicht nachgewiesen** | `[TECHNISCH]` für Lesen, Shell und Suche; `[TEXTUELL]` für den Unterprozess | [DOK] **`QC-2`** `docs/en/permissions` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`). **Reichweite je Kanal gemessen am 2026-09-12** (`tests/protocols/2026-09-12-B04-B05-gegenpruefung.md`, B04): Vor 0.30.0 passierte eine Suche über einen Secret-Pfad beide Schichten (Lauf B04-5); der Hook-Eintrag schließt den Kanal, nachgewiesen mit zwei Sonden und zwei Gegenproben **PowerShell** (seit `1.18.2`, D-469): `Get-Content .env` weist der Schutz-Hook ab (`PreToolUse:PowerShell`), gemessen; der Matcher nennt das Werkzeug |
|
|
117
|
+
| B4 | Framework- und Overlay-Artefakte schreibgeschützt | ja | Je Pfad **eine** `Edit(...)`-Regel; das Kernverzeichnis ist seit `CR-2026-012` als Ganzes erfasst (`Edit(.koolie/core/**)`). Eine zusätzliche `Write(...)`-Pfadregel wäre wirkungslos und wird seit `CR-2026-016` nicht mehr erzeugt. **Je Kanal:** direktes Schreiben **wirkt** (Regel und Hook); **Shell und Unterprozess wirken nicht** – die Berechtigungsdatei führt für `exec` ausschließlich Befehlsverbote und keine einzige Pfadregel, und der Schutz-Hook prüft das Kernverzeichnis nur bei schreibenden Werkzeugen. Was den Shell-Schreibweg aufhält, ist die Regelschicht | `[TECHNISCH]` für das direkte Schreiben; **`[TEXTUELL]` für Shell und Unterprozess** | wie B3. **Reichweite je Kanal gemessen am 2026-09-12** (`tests/protocols/2026-09-12-B04-B05-gegenpruefung.md`, B04): `sed -i … <kern>/VERSION`, ein Änderungsskript mit Kernpfad und eine Umleitung in die Wurzel-Anweisungsdatei passieren den Hook sämtlich (B04-1 bis B04-3). **Eine technische Durchsetzung bräuchte eine Isolationsschicht des Betriebssystems; deren Reichweite ist auf dieser Plattform unerhoben** |
|
|
118
|
+
| B5 | CI-, Quality-Gate- und Lockdateien schreibgeschützt | ja | dito, je Pfad eine `Edit(...)`-Regel. **Je Kanal wie B4:** direktes Schreiben wirkt, Shell und Unterprozess nicht | `[TECHNISCH]` für das direkte Schreiben; **`[TEXTUELL]` für Shell und Unterprozess** | wie B4 |
|
|
119
|
+
| B6 | Befehle per Muster verweigerbar | ja | Präfixmuster, z. B. `Bash(git push:*)`. Wirkt **breiter** als eine Verweigerung des vollständigen Befehls – und **schmaler als der Befehl**: Das Muster trifft jedes Kommando, das mit der **Zeichenfolge** beginnt, und eine andere Schreibweise desselben Befehls beginnt nicht damit. **Gemessen am 2026-09-17** (D-123): Bei `deny` = `Bash(git push:*)` und `allow` = `Bash(git:*)` wird `git push origin main` abgewiesen, `git -C <pfad> push origin main` läuft durch und erreicht das Remote. **In der ausgelieferten Fassung hält die Sperre trotzdem** – der `allow`-Korb führt nur fünf lesende `git`-Kommandos, und was dort nicht steht, fällt im nicht-interaktiven Betrieb ohnehin auf eine Abweisung (gemessen im Zuschnitt `W`). **Der Gurt hat ein Loch, die Hosenträger halten:** Ein Projekt, das seinen `allow`-Korb auf `Bash(git:*)` verbreitert, verliert den Schutz auf Fernwirkung **ohne jede Meldung** (`K-47`) | `[TECHNISCH]` | wie B3 für den Mechanismus; **die Grenze gemessen am 2026-09-17** (`tests/protocols/2026-09-17-sitzungstest-schranken.md` Abschnitt 6, Läufe `PX1` und `PX2`, Wirkung am Remote nachgeprüft). Der Satz stand seit 0.15.0 als unbelegte Notiz in Abschnitt 4 und verwies für seinen Inhalt auf **diese** Zeile, die ihn nicht trug (`K-48`) 🟢 **PowerShell seit `1.18.2` gleichgestellt** (D-469, gemessen am 2026-09-29 mit 2.1.284, Modus `bypassPermissions`, Baum ohne Regeltexte): `PowerShell(git push:*)` weist `git push origin main` ab, auch verkettet (`git status; git push origin main`) und in Großschreibung (`GIT PUSH origin main`); `Remove-Item -Recurse -Force` und `curl` wurden ebenfalls abgewiesen, ohne dass eine eigene Regel für das Cmdlet besteht – die Zuordnung zu `PowerShell(rm:*)` und `PowerShell(curl:*)` (Aliase) ist gefolgert, nicht getrennt gemessen. `PowerShell(git status:*)` in `allow` lässt `git status` durch. 🔴 **Und ohne diese Regeln fehlt das Werkzeug:** Steht in `deny` eine `Bash(…)`-Regel und keine `PowerShell(…)`-Regel, bietet der Client das Werkzeug gar nicht an (Startmeldung, ohne Modellaufruf); jede `PowerShell(…)`-Regel in `allow` oder `deny` schaltet es ein, der Hook-Matcher allein nicht. Undokumentiert – deshalb trägt die Sperre die Regel, nicht die Ausblendung (D-470) |
|
|
120
|
+
| B7 | Schreiboperationen fragen zurück | – | `ask` auf `Edit(**)` | `[TECHNISCH]` | `[DOK]` **`QC-2`** (Zuordnung `K-62`) |
|
|
121
|
+
| B8 | Netzwerkzugriff standardmäßig unterbunden | – | Verweigerung der Abrufwerkzeuge sowie der Befehle `curl`, `wget`, `ssh` und `scp`. **Je Kanal:** die Abrufwerkzeuge **wirken** (`deny` auf das Abrufverb); der Shell-Kanal **nur für diese vier Programme** – jedes andere netzfähige Programm (`python`, `node`, `git`, Bordmittel der Shell, ein eigenes Skript) ist nicht erfasst. **Die Liste wird bewusst nicht verlängert:** Jedes ergänzte Programm suggeriert eine Vollständigkeit, die ein Befehlsmuster nicht herstellen kann | `[TECHNISCH]` für die Abrufwerkzeuge; **`[TEXTUELL]` für den Shell-Kanal** | `[DOK]` **`QC-2`** (Zuordnung `K-62`). **Reichweite je Kanal gemessen am 2026-09-12** (`tests/protocols/2026-09-12-B04-B05-gegenpruefung.md`, B04) (Lauf B04-6). Wer eine vollständige Netzsperre braucht, betreibt den Agenten ohne automatische Befehlsausführung |
|
|
122
|
+
| B9 | Nutzerlokale Konfiguration kann nur verschärfen | – | `.claude/settings.local.json` rangiert **über** der Projektdatei, kann eine dort gesetzte Verweigerung aber nicht aufheben: „If a tool is denied at any level, no other level can allow it." Ergänzend greifen `deny`- und `ask`-Regeln sofort, `allow`-Regeln erst nach dem Vertrauen in den Ordner | `[TECHNISCH]` für die Verweigerungen; `[TEXTUELL]` für den Rest | [DOK] **`QC-2`, `QC-5`** (`docs/en/permissions`, `docs/en/settings`) (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`); **beobachtet am 2026-09-12** (`tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`), fünf Läufe gegen die **nutzerglobale** Datei `~/.claude/settings.json`, jeder mit Positivkontrolle: Projekt `deny` gegen Benutzer `allow` – nicht gelesen; Projekt `allow` gegen Benutzer `deny` – nicht gelesen; **ohne jede Verweigerung gelesen** (Kontrolllauf, ohne den die anderen nichts bedeuten). Ebenso wirkungslos blieb ein nutzerglobales `defaultMode: bypassPermissions`, mit und ohne projektseitiges `defaultMode`. **Die Zusage bestätigt sich – und das ist bemerkenswert, weil dieselbe Frage beim anderen Pack das Gegenteil ergab** (`ERH-11`, K-27: dort setzt sich die Benutzerkonfiguration in beide Richtungen durch). Gemessen sind die Mechaniken `deny` und `defaultMode`; für Verschärfungen anderer Art gilt die Aussage nicht |
|
|
123
|
+
| B10 | Externer Abruf auf freigegebene Domains beschränkbar | – | **Keiner.** Die Abbildung führt die Abrufwerkzeuge in `permission_tools_bare`: Ein Muster wird verworfen, die erzeugte Regel lautet `WebFetch` und `WebSearch` **ohne Argument** – das ganze Werkzeug, nicht ein Ziel. Eine Domain-Angabe ist damit nicht ausdrückbar. **Ersatz:** das vollständige Verbot, das dadurch entsteht und als Verbot `[TECHNISCH]` wirkt (B8) – es ist **strenger** als die Zusage, nicht schwächer, und deshalb kein Schutzverlust. Für eine Websuche gibt es überhaupt kein Domain-Ziel; auch ein künftiger Mechanismus könnte sie nicht abdecken (Paket 6) | `[NICHT ABBILDBAR]` | `[DOK]` **`QC-2`** (Zuordnung `K-62`) für die Produktseite: Pfadregeln werden nur für `Read` und `Edit` ausgewertet, für andere Werkzeuge angenommen und **nie konsultiert** – ein Domänenmuster am Abrufwerkzeug hat deshalb keinen Ort. 🔴 **Bis 0.84.0 belegte diese Zelle gegen den eigenen Bestand** (`K-62`, 2026-09-22): Der Zusatz „für die Abbildung" nannte `permission_tools_bare` im Manifest und die erzeugte Datei (nachgeprüft am 2026-09-13) – beides Nachweise **des Frameworks über sich selbst**, während die Marke `[DOK]` „in der Herstellerdokumentation beschrieben" heißt. Die Abbildung ist damit nicht weniger belegt, sondern **anders**. Seit 0.33.0 sagt der Kern diese Beschränkung nicht mehr zu (B11, D-59) |
|
|
124
|
+
|
|
125
|
+
### H – Hooks
|
|
126
|
+
|
|
127
|
+
| ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
|
|
128
|
+
|---|---|---|---|---|
|
|
129
|
+
| H1 | Prüfung vor Werkzeugausführung | `hooks.PreToolUse` in `settings.json`, Matcher auf **lesende**, schreibende und ausführende Werkzeuge und seit `1.20.0` auf **MCP-Werkzeuge** (`mcp__.*`). Bei einem MCP-Werkzeug prüft der Hook den Inhalt gegen die Secret-Muster und die Pfadfelder gegen die Secret-Pfade, nicht die Strukturpfade (D-486). Jede Entscheidung steht im Entscheidungsprotokoll `.git/koolie-hook.jsonl`, ohne Inhalt und Pfad (D-487) | `[TECHNISCH]` | `[DOK]` **`QC-6`** (Zuordnung `K-62`, D-159); das Lesewerkzeug seit 0.25.0 (`CR-2026-030`, D-33) – bis dahin erreichte ein Lesezugriff den Hook nicht. **MCP gemessen am 2026-09-29** (2.1.284, Messreihe `1200`, `tests/protocols/2026-09-29-schutzschicht.md`): Ohne den Matcher erreichte ein Köderwert einen lokalen MCP-Server, und ein Dateisystem-Werkzeug las `.env`; mit ihm sperrte der Hook beides, und eine Notiz, die `.env` nur nennt, kam an. Die Wirkung im Projekt prüft `install.py --probe` (D-488) |
|
|
130
|
+
| H2 | Prüfung kann **blockieren** | Exit-Code 2 des Hook-Befehls blockiert die Ausführung, und zwar **bevor** die Berechtigungsregeln ausgewertet werden – ein blockierender Hook geht damit auch einer `allow`-Regel vor. Umgekehrt hebt eine Hook-Entscheidung keine `deny`- oder `ask`-Regel auf. **Fail-closed**: Das erzeugte Hook-Kommando trägt `--fail-closed`, eine Werkzeugeingabe, die der Hook nicht lesen kann, wird blockiert statt durchgelassen (D-31). **Reichweite, gemessen am 2026-09-13** (D-69): Der Hook erfasst auch die Werkzeugaufrufe eines **Unteragenten** und blockiert sie – nicht nur mit dem Matcher `*`, sondern auch mit der benannten Form `Edit\|Write\|NotebookEdit`, die `clientmap.py` aus `hook_tools` erzeugt. **Der Unteragent ist kein Weg am Schutz-Hook vorbei.** Ein Aufruf aus einem Unteragenten ist am Umschlag erkennbar: Er führt zusätzlich `agent_id` und `agent_type`. **Nicht gemessen:** derselbe Lauf mit dem Schutz-Hook des Frameworks in einer vollständigen Installation – gemessen ist ein synthetischer Sperr-Hook in der erzeugten Form | `[TECHNISCH]` | **Reichweite gemessen am 2026-09-13** (`tests/protocols/2026-09-13-erhebung-unteragent.md`, Läufe H1 bis H3 mit Gegenprobe); im Übrigen [DOK] **`QC-2`** `docs/en/permissions` (AP2, Clientversion 2.1.267) – **stärker belegt als beim Client Pack `devin-desktop`**, siehe Abschnitt 5 |
|
|
131
|
+
| H3 | Statusmeldung beim Sitzungsstart | `hooks.SessionStart`; das Kommando gibt `hookSpecificOutput.additionalContext` aus | `[TECHNISCH]` | **Gemessen am 2026-09-18** (`.koolie/core/tests/protocols/2026-09-18-sitzungstest-5.md` Abschnitt 4, D-176), an drei Bäumen, die sich in genau einem Schlüssel der Berechtigungsdatei unterscheiden. **Zustellung:** Die `additionalContext`-Zeichenkette des Hooks steht **wörtlich in der Sitzungsmitschrift** der beiden Läufe mit Hook und fehlt in dem ohne. **Wirkung:** Mit geschnittenem Regeltext blieb der Lauf **mit** Hook nur lesend und änderte **ohne** ihn `bestand.ts:15` – obwohl zwanzig Fundstellen derselben Regel im Baum blieben. **Grenze, und sie gehört in diese Zeile:** Das ist eine **Verhaltensdifferenz eines Paares**, keine Zusage – der Hook sperrt nichts, er liefert Text. Bis 0.65.0 war die Zeile mit `[DOK]` belegt; die Übergabe führte H3 unter *Ungemessenes*. **Zweite Messung desselben Tages, von der anderen Seite:** In einem Baum ohne Overlay hat genau dieser Hook (*„Status unbekannt → nur lesend"*) den Schreibversuch verhindert, den `FW-AK-02` messen sollte – **wer die Regelschicht für einen Zuschnitt entfernt, entfernt ihn mit** |
|
|
132
|
+
| H4 | Eingabeschema und Pfadidentität des Schutz-Hooks | Der Hook prüft ein **Ereignis**: JSON-Objekt, nicht leerer `tool_name`, `tool_input` als Objekt; alles andere gilt als **unprüfbar** und blockiert hier, weil dieses Pack `hook_fail_closed: true` führt. Geprüft wird die **Operation**, nicht der Umschlag – `transcript_path`, `cwd` und `session_id` sind kein Ziel. Pfadangaben werden gegen `cwd` aufgelöst und in aufgelöster Form noch einmal gegen die Muster gehalten; alle Pfadmuster sind groß-/kleinschreibungsunempfindlich. Eine Angabe in POSIX-Schreibweise (`/c/…`) löst der Hook unter Windows in **beiden** Lesarten auf, `C:\…` und `C:\c\…`, und die strengere gewinnt: Das Werkzeug `Write` dieses Clients legt `/c/lw-1201/msys-ziel/probe.txt` unter `C:\lw-1201\…` an (gemessen am 2026-09-30, `K-96`, D-491); bis `1.20.0` löste der Hook sie als `C:\c\…` auf, und mit einem Punktsegment oder einem 8.3-Kurznamen erreichte ein Schreibvorgang den Kern. **Grenze, und sie gehört in diese Zeile:** Ein Hook prüft **vor** dem Zugriff. Eine Verknüpfung, die zwischen Prüfung und Zugriff umgebogen wird, kann er nicht ausschließen – das kann nur die ausführende Dateischicht oder eine Isolation (`CR-2026-047` E5) | `[TECHNISCH]`, mit benannter Zeitlücke | **Gemessen am 2026-09-13** (`tests/protocols/2026-09-13-B06-gegenpruefung.md`, Befund **B06**): Das Eingabeschema dieses Clients ist an 15 Hook-Aufzeichnungen belegt. Bis 0.33.0 blockierte der Hook hier **jeden** Schreibzugriff, weil `transcript_path` unter `~/.claude/projects/` liegt – am Client nachgemessen, mit Kontrolllauf. Prüfung 32 ruft den Hook seit 0.34.0 mit dem vollständigen Umschlag auf |
|
|
133
|
+
|
|
134
|
+
### A – Agentenprofile
|
|
135
|
+
|
|
136
|
+
| ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
|
|
137
|
+
|---|---|---|---|---|
|
|
138
|
+
| A1 | Rein lesendes Reviewprofil | `.claude/agents/fw-reviewer.md`, Frontmatter-Feld `tools` (ergänzend `disallowedTools`, das zuerst angewandt wird). **Die Beschränkung wirkt technisch, und sie wirkt als Entfernung:** Ein Profil mit `tools: Read, Grep, Glob` hatte kein Schreibwerkzeug im Vorrat, und `permission_denials` blieb **leer** – es ist keine Verweigerung, die man gegen eine Freigabe abwägt, sondern derselbe Mechanismus wie bei S3 (D-68). Eine `allow`-Regel holt das Werkzeug nicht zurück. **Und es kann sich nicht selbst erweitern** (D-73, gemessen am 2026-09-13): Ein Profil mit `tools: Read, Grep, Glob` – genau die Form, die `fw-reviewer` nach der Abbildung trägt – hat **kein Startwerkzeug** und konnte deshalb keinen weiteren Unteragenten starten, dessen Profil weniger beschränkt wäre. Ohne diesen Befund wäre die Zusage „rein lesend" über eine zweite Ebene aushebelbar. **Die Zusage hängt allerdings daran, dass `agent_frontmatter.tool_names` kein Startwerkzeug abbildet** – Prüfung 35 hält das fest, weil es sonst lautlos fallen könnte. **Weiterhin nur dokumentiert und nicht gemessen:** dass ein Profil, dessen `tools`-Liste sich zu keinem Werkzeug auflöst, gar nicht erst gestartet wird | `[TECHNISCH]` | **Gemessen am 2026-09-13** (`tests/protocols/2026-09-13-erhebung-unteragent.md`), Lauf A1-M gegen den Kontrolllauf A1-K: dasselbe Profil ohne das Feld schrieb. Zuvor `[DOK]` **`QC-4`** `docs/en/sub-agents` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) – der Teilsatz zum Startabbruch bleibt `[DOK]` **`QC-4`** |
|
|
139
|
+
|
|
140
|
+
### M – Modi und Sitzungsfreigaben
|
|
141
|
+
|
|
142
|
+
| ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
|
|
143
|
+
|---|---|---|---|---|
|
|
144
|
+
| M1 | Standardmodus fragt bei Schreiben und Befehlen zurück | `permissions.defaultMode` auf `default` | `[TECHNISCH]` | `[DOK]` **`QC-5`** (Zuordnung `K-62`) – `defaultMode` steht dort als Schlüssel der Einstellungsdatei |
|
|
145
|
+
| M2 | Modus ohne Rückfragen ausschließbar | Per D-05 untersagt **und** technisch sperrbar: `permissions.disableBypassPermissionsMode` auf `"disable"`, in verwalteten Einstellungen nicht überschreibbar, wirkt aber aus jeder Ebene. Zusätzlich wirken `bypassPermissions` und `auto` seit Clientversion 2.1.257 nicht mehr aus Projekt- oder nutzerlokalen Einstellungen. **Offen:** Ein Subagentenprofil kennt ein eigenes Feld `permissionMode`, das den Wert `bypassPermissions` annimmt; ob die Sperre auch dort greift, ist nicht dokumentiert (AP2-CC-12) | `[TECHNISCH]` (Sperre in verwalteten Einstellungen setzt eine Enterprise-Verwaltung voraus) | [DOK] **`QC-2`** `docs/en/permissions` (AP2, Clientversion 2.1.267, `tests/protocols/2026-09-10-AP2-claude-code.md`) |
|
|
146
|
+
| M3 | Freigabe auf die Sitzung begrenzbar | Rückfragen bieten eine einmalige und eine sitzungsweite Bestätigung an | `[TECHNISCH]` | `[DOK]` – 🔴 **QUELLE NICHT ZUGEORDNET** (`K-62`, 2026-09-22): Keine der sechs Seiten der Quellenliste führt die **Sitzungs-Grant-Stufen**; beim Schwesterpack trägt sie `QD-11`. Eine Zuordnung wäre hier **geraten, und eine geratene sähe wie ein Beleg aus** (D-156). ➡️ **Damit hat der nächste Durchgang von `FW-AK-01` seinen ersten gezielten Auftrag:** eine Zeile gegen eine Seite statt 44 gegen 22 |
|
|
147
|
+
| M4 | Eigener Planungsmodus für Modus M2 | **Unerhoben:** ob der Client einen Planungsmodus mit eigener Plan-Ablage außerhalb des Repositorys führt. Bis dahin ist die Ablage von `fw-plan` und `fw-bugfix-prepare` die Sitzungsausgabe | `[TEXTUELL]` | **`BELEG OFFEN`** (2026-09-25, `K-149`): weder gemessen noch einer Quelle `QC-1` bis `QC-6` zugeordnet. **Unabhängig davon lässt sich M2 seit `1.20.2` an den Schutz-Hook binden** (`mandat.py modus M2 --ablage <pfad>`, D-501), **gemessen am 2026-09-30:** Der Hook wies `Write` auf `src/Neu.java` ab und ließ `docs/plaene/plan.md` durch (Entscheidungsprotokoll); danach fragte die Berechtigungsschicht zurück (`ask Edit(**)`). **Seit `1.23.0` lassen sich auch M3 bis M5 binden** (`mandat.py modus M3\|M4\|M5`, D-523), **gemessen am 2026-10-01** mit `haiku`: Gebunden ließ der Hook je Modus das Ziel in der Pfadliste durch und wies `Write` außerhalb ab – M3 mit `--umfang src/ui/**` auch einen Nur-Lese-Pfad und ein Ziel außerhalb des Umfangs, M4 den Produktivcode neben einer Testdatei aus `src/**/*.test.ts`; ohne Bindung ließ er beide Ziele durch (Entscheidungsprotokoll) |
|
|
148
|
+
|
|
149
|
+
### X – Externe Anbindung
|
|
150
|
+
|
|
151
|
+
| ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
|
|
152
|
+
|---|---|---|---|---|
|
|
153
|
+
| X1 | Keine externe Anbindung ohne Einzelfreigabe | Keine `.mcp.json` ausgeliefert, nur die `.example`-Vorlage; Rückfrageregel auf alle MCP-Werkzeuge | `[TECHNISCH]`, **mit einer benannten Grenze** | `[DOK]` **`QC-3`, `QC-5`** (`docs/en/skills`, `docs/en/settings`), Stand 2.1.275 (`FW-AK-01`, 2026-09-18). **Die Grenze:** Der Mechanismus deckt die Werkzeuganbindung. Seit 2.1.275 gibt es einen **zweiten** Kanal nach außen, den er nicht deckt – der Client lädt die im Konto des Anwenders eingeschalteten Skills und Erweiterungen in die Sitzung, *„This is enabled by default"*, mit Abgleich etwa alle zehn Minuten. **Und das Framework kann ihn nicht abschalten:** Der Schalter `syncClaudeAiSkills: false` wirkt aus verwalteten Einstellungen, aus `--settings`, aus der Benutzerdatei und aus der unversionierten Projektdatei – *„a `false` in `.claude/settings.json` is ignored"*, und genau diese Datei liefert dieses Pack aus. **Die Zusage gilt damit für die Werkzeuganbindung und nicht für die Kontoquelle**; wer sie schließen will, setzt den Schalter außerhalb des Repositoriums (`K-63`). Das Gegenstück, das das Framework **sehr wohl** liefern kann, steht in Abschnitt 8: `autoMemoryEnabled: false` (D-154). **Freigabe je Werkzeug, gemessen am 2026-09-28** (2.1.283, D-459): `mcp__<server>__<werkzeug>` in `allow` lässt ein Lesewerkzeug ohne Rückfrage laufen, ein Schreibwerkzeug in `ask` wird im Druckmodus abgewiesen – aber die Rückfrage `mcp__*`, die die Kernquelle erzeugt, **schlägt** die Einzelfreigabe. Gibt ein Projekt einen Server zum Lesen frei (Overlay Abschnitt 13.2), ersetzt der Mensch die Pauschale durch die Einzelregeln; Prüfung 101 gleicht ab (`mcp_permission_rule` im Manifest) |
|
|
154
|
+
| X2 | Art und Ort der Codebasis-Indexierung bekannt | Kein Indexierungsmechanismus dokumentiert; Dateien werden bei Bedarf gelesen | `[TECHNISCH]` | `[DOK]` **`QC-1` bis `QC-5`** – **Abwesenheit** belegt über `docs/en/memory`, `permissions`, `skills`, `sub-agents`, `settings`, Stand 2.1.267 (AP2), **erneut geprüft am 2026-09-18 gegen 2.1.275** (`FW-AK-01`): unverändert kein Indexierungsmechanismus dokumentiert. Ein Beleg durch Abwesenheit bleibt schwächer als ein Beleg |
|
|
155
|
+
|
|
156
|
+
## 3. Zusammenfassung der Durchsetzungstiefe
|
|
157
|
+
|
|
158
|
+
> **Zählregel (normativ für diese Tabelle):** Eine Zeile zählt bei ihrer **schwächsten** Einstufung. Trägt sie zwei Angaben je Zugriffskanal – `[TECHNISCH]` für direktes Lesen und Schreiben, `[TEXTUELL]` für Shell und Unterprozess –, zählt sie als `[TEXTUELL]`. Das folgt D-47: Zugesagt wird je Kanal, was gemessen ist; eine Zeile, deren Zusage in einem Kanal nur als Anweisung trägt, ist nicht technisch durchgesetzt. Prüfung 31 rechnet die Summen aus der Matrix nach (D-60).
|
|
159
|
+
|
|
160
|
+
| Klasse | Anzahl | davon Kernzusagen | Stand vor AP2 |
|
|
161
|
+
|---|---|---|---|
|
|
162
|
+
| `[TECHNISCH]` | 22 von 32 | 3 von 6 (B1, B2, B6) | 20 |
|
|
163
|
+
| `[TEXTUELL]` | 8 von 32 (R5, R6, B9, M4; dazu B3, B4, B5, B8 – je Kanal teils technisch) | 3 von 6 (B3, B4, B5 – Shell und Unterprozess) | 2 |
|
|
164
|
+
| `[NICHT ABBILDBAR]` | **2 von 32** (S5, B10) | 0 | 4 |
|
|
165
|
+
| ohne Einstufung | 0 von 32 | 0 | – |
|
|
166
|
+
|
|
167
|
+
Die Spalte „Stand vor AP2“ bezieht sich auf den kleineren Zeilensatz vor dem ersten Abgleich und wird nicht fortgeschrieben.
|
|
168
|
+
|
|
169
|
+
**Der entscheidende Befund:** Alle sechs Kernzusagen sind abgebildet – **drei davon technisch in jedem Kanal** (B1, B2, B6), drei nur für den direkten Zugriff (B3, B4, B5); für Shell und Unterprozess tragen sie die Regelschicht (D-47).
|
|
170
|
+
|
|
171
|
+
**Zwei Zeilen stehen auf `[NICHT ABBILDBAR]`.** S5 ist gemessen, keine Unterschätzung: Es gibt kein Aufzählungskommando (Erhebung vom 2026-09-12). B10 ist nicht ausdrückbar, weil die Abrufwerkzeuge kein Domainmuster tragen; der Kern sagt diese Beschränkung nicht mehr zu (D-59). Beide sind **keine Kernzusage** (D-41); der Ersatz steht jeweils in der Zeile.
|
|
172
|
+
|
|
173
|
+
Ein Vergleich mit dem Client Pack `devin-desktop` trägt nur eingeschränkt: Beide Packs führen verschiedene Zeilensätze, und ihre Belege sind auf verschiedenen Wegen gewonnen. Die Zahlen jenes Packs stehen in dessen Abschnitt 3.
|
|
174
|
+
|
|
175
|
+
**Belegstand:** Eine Zeile sagt `BELEG OFFEN` – M4 (`K-149`); der frühere VERIFY-Marker auf R5 ist aufgelöst (D-158). Offen ist eine **Teilfrage** innerhalb von M2: ob die Sperre gegen den Modus ohne Rückfragen auch für das Feld `permissionMode` eines Subagentenprofils gilt (AP2-CC-12). Welche Zeilen in einer laufenden Sitzung gemessen oder beobachtet sind, sagt ihre Belegspalte (*„Gemessen am …“*, *„beobachtet am …“*) – darunter S2, S3, S4, A1, B2 (zwei der drei Vorrangpaare, D-134), B6 (D-123), B9, H2, H3 und H4. Für die übrigen Zeilen stehen die Wirkungsnachweise aus; sie sind gegen die Herstellerdokumentation und die erzeugten Artefakte belegt (`tests/protocols/2026-09-10-AP2-claude-code.md`, Abschnitt „Offen“).
|
|
176
|
+
|
|
177
|
+
## 4. Kernzusagen ohne technische Durchsetzung
|
|
178
|
+
|
|
179
|
+
**Keine.** Alle sechs Kernzusagen (B1 bis B6) sind für den direkten Zugriff als `[TECHNISCH]` abgebildet, B1, B2 und B6 in jedem Kanal. Für B3, B4 und B5 tragen Shell und Unterprozess nur die Regelschicht; das steht je Kanal in der Matrix und in der Zählung von Abschnitt 3 (D-47).
|
|
180
|
+
|
|
181
|
+
Eine der sechs weicht in der **Form** ab, nicht in der Tiefe – und die Abweichung wirkt in **beide** Richtungen (gemessen am 2026-09-17, D-123). **Die Tiefe bleibt `[TECHNISCH]`:** Was das Muster trifft, setzt die Engine durch, und es schlägt sogar ein ausdrückliches `allow` (D-121).
|
|
182
|
+
|
|
183
|
+
| ID | Abweichung | Wirkung |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| B6 | Befehlsverbote wirken präfixbasiert: `Bash(git reset:*)` sperrt **jedes Kommando, das mit der Zeichenfolge `git reset` beginnt** – also auch unkritische Varianten, nicht nur `--hard` | **Verschärfung und Lockerung zugleich, und seit dem 2026-09-17 sind beide gemessen** (D-123). *Verschärfung* (`CR-2026-008`): Die Abbildung verlangt, dass die Präfixform ein Präfix der wörtlichen Form ist, und weist sie sonst zurück. *Lockerung:* Eine andere Schreibweise desselben Befehls beginnt nicht mit der Zeichenfolge – `git -C <pfad> reset` ist nicht erfasst. Die Grenze steht in Matrixzeile B6 selbst, wo die Einstufung steht (`K-48`) |
|
|
186
|
+
|
|
187
|
+
## 5. Bekannte Abweichungen im Verhalten
|
|
188
|
+
|
|
189
|
+
- **`model_decision` lädt hier unbedingt.** Bei `devin-desktop` laden `10-privacy-security` und `15-development-rules` nur bei Relevanz. Dieser Client kennt für Regeldateien keine modellentschiedene Bedingung, nur die Bindung an Dateimuster; beide Texte sind deshalb stets geladen. Für die Regelwirkung ist das eine **Verschärfung**; für den Kontext bedeutet es eine ständige Belegung durch `CLAUDE.md` und die vier unbedingten Regeltexte einer frischen Installation. Least Context ist ein Prinzip zur Ergebnisqualität, keine Sicherheitszusage – die Abweichung ist deshalb vertretbar, wächst aber mit jedem unbedingt geladenen Pack. Der Validator warnt ab 40.000 Zeichen.
|
|
190
|
+
|
|
191
|
+
- **Eine pfadgebundene Regel lädt beim Lesen einer passenden Datei, nicht bei jedem Werkzeugaufruf.** Ein Technology Pack steht damit nicht schon zu Beginn der Aufgabe im Kontext, sondern erst nach der ersten Berührung einer Datei seiner Technologie. Für Regeln, die vorher gelten müssen, ist `paths` ungeeignet; sie bleiben unbedingt. Nach einer Verdichtung des Kontexts lädt eine pfadgebundene Regel erst wieder, wenn erneut eine passende Datei gelesen wird.
|
|
192
|
+
|
|
193
|
+
- **Ein Glob-Muster kann still ins Leere greifen.** Ein `[`, das sich nicht als Klammerausdruck lesen lässt (`photos [2024/**`), macht das Muster ungültig: Es trifft keine Datei, während die übrigen Muster derselben Regel weiterwirken. Die `paths`-Liste einer Regel teilt sich außerdem ein Budget von 1.000 expandierten Mustern und 4 MiB; ein Muster darüber wird unexpandiert verwendet und trifft dann ebenfalls nichts. Beides ist beim Schreiben eines Technology Packs zu beachten – die Regel meldet ihr eigenes Nichtgreifen nicht.
|
|
194
|
+
|
|
195
|
+
- **Regeldateien sind nutzerlokal ausschließbar – eine Lücke in B9.** `claudeMdExcludes` in `.claude/settings.local.json` nimmt Anweisungs- und Regeldateien über ein Glob-Muster vom Laden aus; die Listen aller Ebenen werden zusammengeführt. **Gemessen am 2026-09-25 mit Gegenlauf** (D-397): Derselbe Eintrag wirkt aus der nutzerlokalen Datei wie aus der Berechtigungsdatei – ohne Eintrag lud die Sitzung die `CLAUDE.md` des Projekts und die eines Elternverzeichnisses, mit ihm in beiden Dateien nur die des Projekts. Das ist eine **Lockerung** und damit nach der Prioritätshierarchie unzulässig, technisch aber nicht verhindert. Der KI-Client selbst kann die Datei nicht schreiben – `Edit(.claude/**)` steht in `deny` –, ein Mensch schon. Nur verwaltete Einstellungen sind gegen Ausschluss geschützt.
|
|
196
|
+
|
|
197
|
+
- **Der Schutz-Hook läuft hier fail-closed** (bei `devin-desktop` ebenfalls). Für diesen Client ist das Blockierverhalten über den Exit-Code dokumentiert und in einer Installation beobachtet (WN-5), das Eingabeschema damit bestätigt. Das Manifest führt deshalb `hook_fail_closed: true`, und die Abbildung hängt dem Kommando des durchsetzenden Hooks `--fail-closed` an: Eine Werkzeugeingabe, die der Hook nicht als JSON lesen kann, wird blockiert, statt ungeprüft durchzulaufen.
|
|
198
|
+
|
|
199
|
+
**Der Schalter steht im Kommando, nicht in `env`** (D-31). Eine Umgebungsvariable hinge die Sperre an eine zweite, für kein Pack belegte Clientzusage – dass der Client die Variable an den Hook-Prozess weiterreicht. Das Argument steht in derselben Konfiguration, die der Client ohnehin ausführt: Läuft der Hook, kommt es an. Die Umgebungsvariable `FW_HOOK_FAIL_CLOSED` wirkt zusätzlich und ist der Weg, fail-closed ohne Neuinstallation zu erproben.
|
|
200
|
+
|
|
201
|
+
**Beim Release-Wechsel von Hand nachzuziehen.** Weil die Hooks hier in der Berechtigungsdatei und damit in der Saat liegen, erreicht das Argument eine bestehende Installation nicht über `install.py --update`. Prüfung 17 meldet das als Fehler und nennt den Weg – die Pflicht ist damit sichtbar, nicht stillschweigend.
|
|
202
|
+
|
|
203
|
+
- **Die Berechtigungsdatei trägt hier auch die Hooks.** Weil dieser Client keine eigene Hook-Datei kennt, stehen die Hooks in derselben Datei – und die ist Saat, gehört nach der Erstinstallation also dem Projekt und wird von `install.py --update` nie überschrieben. Eine Änderung an den Hooks des Kerns erreicht ein bestehendes Projekt dieses Packs deshalb nicht von selbst; bei `devin-desktop` mit eigener Hook-Datei tut sie es. Beim Release-Wechsel ist das hier ausdrücklich zu prüfen.
|
|
204
|
+
|
|
205
|
+
- **Das Suchwerkzeug führt Punktdateien nicht auf.** Gemessen am 2026-09-12 (ERH-12, `.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`): Zwei Muster – eines ohne und eines mit Verzeichnisdurchlauf – meldeten `No files found` für eine Datei, die im Verzeichnis lag und im selben Lauf über einen anderen Weg lesbar war; ihr Inhalt steht in drei späteren Läufen desselben Protokolls. **Das ist kein stiller Abbruch:** Das Werkzeug hat gearbeitet und ein falsches Ergebnis geliefert.
|
|
206
|
+
|
|
207
|
+
**Folge für Nachweise.** Ein Abwesenheitsnachweis über dieses Werkzeug ist für Punktdateien keiner. Nummer 7 des Testkatalogs verlangt dafür eine Anwesenheitsprobe desselben Gegenstandstyps – eine zweite Punktdatei, die gefunden werden **muss**.
|
|
208
|
+
|
|
209
|
+
## 6. Beobachtung während der Erstellung
|
|
210
|
+
|
|
211
|
+
Beim Anlegen der Skills unter `.claude/skills/` hat die Sitzung, in der dieses Pack entstand, die zwölf Skills **selbsttätig erkannt und zur Verfügung gestellt**. Das belegt S1 über die Dokumentationslage hinaus.
|
|
212
|
+
|
|
213
|
+
Dieselbe Beobachtung deckte einen Konvertierungsfehler auf: Die Skills erschienen zunächst mit einer Beschreibung, die aus dem Dateikörper statt aus dem Frontmatter stammte. Ursache war ein Rest der Devin-Frontmatter-Felder, der beim Umschreiben stehen geblieben war. Der Fehler wäre bei einer rein statischen Prüfung nicht aufgefallen – die Konvertierung prüft seitdem nach dem Umschreiben, dass nur dokumentierte Felder übrig sind.
|
|
214
|
+
|
|
215
|
+
Das ist keine Belegprüfung im Sinne des Testkatalogs und ersetzt Roadmap-AP2 nicht.
|
|
216
|
+
|
|
217
|
+
## 7. Installation und Prüfung
|
|
218
|
+
|
|
219
|
+
Aus dem entpackten Archiv – über den Starter `install.cmd` (Windows) beziehungsweise `install.command` (macOS) oder direkt:
|
|
220
|
+
|
|
221
|
+
```text
|
|
222
|
+
python .koolie/core/install.py --target <projekt> --client claude-code
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Ohne `--client` gilt bei einer Erstinstallation das Standardpack `devin-desktop`; die Angabe ist für dieses Pack also nötig. Ein vorhandenes Projekt hebt `--update`. Liegt der Kern bereits unter `.koolie/core/` im Projekt, installiert der klassische Weg aus der Projektwurzel; danach prüft der Validator die Installation:
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
python .koolie/core/install.py --client claude-code
|
|
229
|
+
python .koolie/core/tests/scripts/validate-framework.py
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Vor der ersten produktiven Nutzung sind die Basistests des Testkatalogs (`.koolie/core/tests/TEST_CATALOG.md`, Kennzeichnung „Basis") gegen diesen Client zu fahren und zu protokollieren.
|
|
233
|
+
|
|
234
|
+
### Pfadregeln nur für `Read` und `Edit` (AP2-CC-02)
|
|
235
|
+
|
|
236
|
+
Der Client wertet Pfadregeln ausschließlich für `Read` und `Edit` aus: Eine Pfadregel für
|
|
237
|
+
`Write`, `NotebookEdit`, `Glob` oder `MultiEdit` wird angenommen, nie konsultiert und beim
|
|
238
|
+
Sitzungsstart als Warnung gemeldet. Die Abbildung bildet deshalb `write` auf `Edit` ab und
|
|
239
|
+
`search` auf nichts (`CR-2026-016`, D-26). Der Validator meldet eine Pfadregel für ein Werkzeug
|
|
240
|
+
ohne Pfadauswertung als Fehler (`permission_path_tools` im Manifest).
|
|
241
|
+
|
|
242
|
+
Für eine Regel **ohne** Pfad gilt die Trennung weiterhin: Eine Verweigerung des bloßen
|
|
243
|
+
Werkzeugnamens `Write` wirkt überall.
|
|
244
|
+
|
|
245
|
+
## 8. Anweisungs- und Konfigurationsquellen außerhalb des Projekts
|
|
246
|
+
|
|
247
|
+
Was dieser Client aus Ablagen **außerhalb des Repositoriums** lädt. Solche Quellen haben nach Regel 2.6 der Prioritätshierarchie **keine Ebene**: Sie dürfen einschränken, nie über die Ebenen 1 bis 4 hinaus erweitern und keine Governance-, Datenschutz- oder Sicherheitsregeln setzen (D-34).
|
|
248
|
+
|
|
249
|
+
**Erhebungsstand: 2026-09-11**, Clientversion 2.1.268, erhoben in einer frischen Installation in einem Temporärverzeichnis und durch Auslesen der Schlüssel der nutzerglobalen Einstellungsdatei (ohne Werte); `tests/protocols/2026-09-11-erhebungen-K21-K26.md`. Ergänzt am 2026-09-12 (Skill-Ablage, `tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`), am 2026-09-18 gegen 2.1.275 (`FW-AK-01`, Abschnitt 8a und Zeilen S4, S5, X1) und am 2026-09-29 gegen 2.1.284 (Connectoren des Kontos, `tests/protocols/2026-09-29-schutzschicht.md`, D-489).
|
|
250
|
+
|
|
251
|
+
### 8.1 Anweisungsquellen
|
|
252
|
+
|
|
253
|
+
| Quelle | Ladebedingung | Belegstatus | Maßnahme des Frameworks |
|
|
254
|
+
|---|---|---|---|
|
|
255
|
+
| `<Elternverzeichnis>\CLAUDE.md` | lädt zusätzlich zur Anweisungsdatei des Projekts, in jedes darunterliegende Projekt | **Gemessen** (K-22): Ohne Einstellung lud die Sitzung **zwei** `CLAUDE.md` – die des Projekts und eine aus einem Elternverzeichnis, die mit dem Projekt nichts zu tun hat. Die Quelle ist nicht an das Benutzerprofil gebunden; ein Elternverzeichnis genügt | keine Vorgabe (R6). `claudeMdExcludes` in der Berechtigungsdatei nimmt sie aus, wenn ein Projekt das will – **empfohlen, nicht ausgeliefert**; derselbe Eintrag wirkt auch nutzerlokal (Abschnitt 5, gemessen, D-397) |
|
|
256
|
+
| `~\.claude\CLAUDE.md` | laut Herstellerdokumentation nutzerglobale Anweisungsdatei | **Nicht belegt.** Die Datei existiert auf der Messstation nicht; ob diese Ablage zusätzlich lädt, ist damit unbekannt – nicht verneint | keine |
|
|
257
|
+
| `~\.claude\skills\` | Skill-Ablage im Benutzerprofil, lädt in jedes Projekt mit | **Gemessen am 2026-09-12** (S5): 67 Skills standen in einer Sitzung, deren Projekt keinen davon enthält. Seit 2.1.275 tritt die Kontoquelle `~/.claude/skills/synced/` hinzu, standardmäßig an (`FW-AK-01`, `K-63`) | keine; `--list-skills` sieht diese Ablagen nicht (S5). Die Kontoquelle lässt sich aus der ausgelieferten Datei nicht abschalten (X1, Abschnitt 8a) |
|
|
258
|
+
|
|
259
|
+
### 8.2 Konfigurationsquellen
|
|
260
|
+
|
|
261
|
+
Berechtigungen, Hooks und Einstellungen außerhalb des Repositoriums betreffen genau die Linien, auf denen B1 bis B6 stehen.
|
|
262
|
+
|
|
263
|
+
| Quelle | Wirkung | Belegstatus |
|
|
264
|
+
|---|---|---|
|
|
265
|
+
| `~\.claude\settings.json` (nutzerglobal) | führt **Berechtigungen und Hooks**: am 2026-09-11 sechs `allow`-Regeln sowie `SessionStart`-, `PreToolUse`- und `PostToolUse`-Hooks | **Gemessen** (ERH-07), Schlüssel ausgelesen, Werte nicht. Ein Hook von dort läuft vor jedem Werkzeugaufruf – dieselbe Stelle, an der die zweite Linie des Frameworks steht |
|
|
266
|
+
| `<Elternverzeichnis>\.claude\settings.local.json` | nutzerlokale Einstellungsdatei **über** dem Projekt | **Gemessen** (ERH-07) |
|
|
267
|
+
| Connectoren des claude.ai-Kontos | MCP-Server, die im Konto des Anwenders verbunden sind, stehen mit ihren Werkzeugen – darunter schreibende – in **jeder** Sitzung, auch im Messbaum; sie verbinden sich nebenläufig nach dem Start | **Gemessen am 2026-09-29** (2.1.284, ohne Modellaufruf, `K-191`, D-489): In der Startmeldung stehen die Server mit der Quelle `claudeai`. **Abschalten aus dem Projekt:** `mcp__claude_ai_*` in `permissions.deny` nimmt alle ihre Werkzeuge aus der Sitzung, ein projekteigener Server bleibt – **empfohlen, nicht ausgeliefert**, weil `deny` auch eine Freigabe nach Overlay 13.2 schlüge. `env` in der Projektdatei schaltet sie **nicht** ab, mit und ohne Vertrauen; die Umgebungsvariable `ENABLE_CLAUDEAI_MCP_SERVERS=false` beim Start tut es. Die Rückfrage `mcp__*` fängt ihre Aufrufe auch im Modus `bypassPermissions` (Druckmodus, gemessen). `install.py --probe` warnt, solange sie in der Sitzung stehen (M1) |
|
|
268
|
+
| Vertrauen in das Verzeichnis (`~\.claude.json`) | Ohne Vertrauen werden die `allow`-Regeln des Projekts ignoriert – der Client meldet es beim Sitzungsstart | **Gemessen** (`AP2-CC-14`, ERH-06): „Ignoring 6 permissions.allow entries from .claude/settings.json: this workspace has not been trusted." `deny`- und `ask`-Regeln sowie die Regeltexte bleiben davon unberührt |
|
|
269
|
+
|
|
270
|
+
### 8.3 Was dieser Abschnitt nicht leistet
|
|
271
|
+
|
|
272
|
+
**Eine Auskunft ist keine Schranke.** Dieser Abschnitt macht die Quellen sichtbar; er verhindert sie nicht. Das Framework liest das Benutzerprofil nicht und sperrt dort nichts.
|
|
273
|
+
|
|
274
|
+
**Ein Abwesenheitsbeleg altert.** Der Erhebungsstand oben ist am Tag der nächsten Clientversion eine Aussage über die Vergangenheit. Prüfung 19 prüft die **Anwesenheit** dieser Auskunft, nicht ihre Richtigkeit.
|
|
275
|
+
|
|
276
|
+
**Die Liste ist nicht vollständig, sie ist belegt.** Eine der drei Anweisungsquellen oben trägt ausdrücklich „nicht belegt". Das ist ein Ergebnis, kein fehlendes Ergebnis – und es ist der Unterschied zu einem Pack, das schweigt.
|
|
277
|
+
|
|
278
|
+
**Das Entscheidungsprotokoll des Schutz-Hooks ist kein Nachweis gegen den Agenten** (`K-200`, D-487). Es liegt unter `.git/`, der Agent kann es über die Shell ändern, und eine Eingabe, die der Hook nicht lesen kann, hinterlässt keine Zeile. Es zeigt, was der Hook entschieden hat, nicht, was er nicht gesehen hat.
|
|
279
|
+
|
|
280
|
+
### 8a. Die selbstgeschriebene Anweisungsquelle des Clients – abgeschaltet
|
|
281
|
+
|
|
282
|
+
**Gefunden von `FW-AK-01` am 2026-09-18.** Dieser Client führt neben der
|
|
283
|
+
Wurzel-Anweisungsdatei und der Regelablage eine **dritte** Anweisungsquelle, die er
|
|
284
|
+
sich selbst schreibt: Er legt Notizen unter `~/.claude/projects/<projekt>/memory/`
|
|
285
|
+
ab, und deren Index `MEMORY.md` wird mit den ersten 200 Zeilen beziehungsweise 25 KB
|
|
286
|
+
**in jede Sitzung** geladen. Die Quelle sagt wörtlich *„Auto memory is on by
|
|
287
|
+
default."* (`QC-1`).
|
|
288
|
+
|
|
289
|
+
**Das Framework schaltet sie ab.** Die erzeugte Berechtigungsdatei trägt
|
|
290
|
+
`autoMemoryEnabled: false` auf ihrer **obersten** Ebene (D-154, deklariert im
|
|
291
|
+
Manifest unter `settings_extra`, geprüft von Prüfung 54). Der Grund ist kein
|
|
292
|
+
Geschmack: Ein Anweisungstext, der in jeder Sitzung steht, gehört in die
|
|
293
|
+
Prioritätshierarchie – er ist sonst weder versioniert noch gegengezeichnet, der
|
|
294
|
+
Validator sieht ihn nicht, und kein Review erreicht ihn.
|
|
295
|
+
|
|
296
|
+
**Es ist ein Standard, keine Schranke.** `.claude/settings.local.json` hat höheren
|
|
297
|
+
Vorrang; ein Projekt, das die Quelle braucht, holt sie dort zurück und weist die
|
|
298
|
+
Abweichung aus – dieselbe Bauform wie bei D-10.
|
|
299
|
+
|
|
300
|
+
**Reichweite, gemessen:** `install.py --update` führt
|
|
301
|
+
`.claude/settings.json` unter *Projektdateien unberührt gelassen* – die Datei trägt
|
|
302
|
+
Projektwerte und wird von einem Update nie überschrieben. **Der Schlüssel erreicht jede
|
|
303
|
+
Erstinstallation und kein bestehendes Projekt.** Wer ein Projekt hebt, trägt die Zeile
|
|
304
|
+
von Hand nach.
|
|
305
|
+
|
|
306
|
+
**Der Gegenfall, der nicht geht:** Für die Kontoquelle der Skills
|
|
307
|
+
(`syncClaudeAiSkills`) gibt es diesen Weg nicht. Die Herstellerdokumentation nimmt
|
|
308
|
+
für diesen Schlüssel die versionierte Projektdatei ausdrücklich aus – *„a `false` in
|
|
309
|
+
`.claude/settings.json` is ignored"*. **Damit hat das Framework für diesen einen
|
|
310
|
+
Kanal keinen Ort, an dem seine Entscheidung ankommt**; es bleibt beim Benennen in
|
|
311
|
+
`X1` und `S5` (`K-63`).
|
|
312
|
+
|
|
313
|
+
### 8b. Die Attributionsvorgabe des Clients für Commits – abgeschaltet
|
|
314
|
+
|
|
315
|
+
**Gefunden im Nachlauf von `1.14.1`** (`K-171`). Der Client gibt dem
|
|
316
|
+
Modell von sich aus eine Vorgabe für Commits mit: einen Trailer `Co-Authored-By` mit
|
|
317
|
+
einer Adresse des Herstellers, in Cloud- und Remote-Control-Sitzungen zusätzlich einen
|
|
318
|
+
Trailer `Claude-Session` (`QC-7`). Das Modell übernahm sie in den Commit-Vorschlag des
|
|
319
|
+
Skills `fw-change-small`, obwohl der Skill Q5 nennt – nicht in jedem Lauf. Q5 verlangt
|
|
320
|
+
eine Nachricht, die das Warum beschreibt; der Vermerk der KI-Nutzung gehört in den
|
|
321
|
+
Merge Request.
|
|
322
|
+
|
|
323
|
+
**Das Framework schaltet sie ab.** Die erzeugte Berechtigungsdatei trägt auf ihrer
|
|
324
|
+
obersten Ebene `"attribution": {"commit": "", "sessionUrl": false}` (D-433, deklariert
|
|
325
|
+
im Manifest unter `settings_extra`, geprüft von Prüfung 54). `pr` bleibt unberührt: Die
|
|
326
|
+
Zeile in der Beschreibung eines Merge Requests ist ein Vermerk an der Stelle, die Q5
|
|
327
|
+
dafür vorsieht.
|
|
328
|
+
|
|
329
|
+
🔴 **Die Objektform ist Absicht, nicht Umständlichkeit.** Die Kurzform
|
|
330
|
+
`"attribution": false` kennt der Client erst ab 2.1.281, und ältere Stände **verwerfen
|
|
331
|
+
die ganze Einstellungsdatei**, die sie enthält (`QC-7`) – mit allen Berechtigungen und
|
|
332
|
+
Hooks. Die Zielspanne dieses Packs ist `2.1.x`.
|
|
333
|
+
|
|
334
|
+
**Beobachtbar ohne Modellurteil:** Das Sitzungstranskript trägt eine Anlage vom Typ
|
|
335
|
+
`remote_session_change` mit dem Feld `commit` – der Text, den der Client dem Modell als
|
|
336
|
+
Attribution vorgibt. In allen 51 Läufen von `1.14.1` stand dort der Trailer; mit der
|
|
337
|
+
Einstellung steht dort die leere Zeichenkette (D-433, gemessen im Nachlauf von
|
|
338
|
+
`1.14.2`).
|
|
339
|
+
|
|
340
|
+
**Es ist ein Standard, keine Schranke** – wie in 8a: `.claude/settings.local.json` und
|
|
341
|
+
verwaltete Einstellungen haben Vorrang. Die Einstellung ist eine Anweisung an das
|
|
342
|
+
Modell, keine Nachbearbeitung von `git commit`.
|
|
343
|
+
|
|
344
|
+
**Reichweite:** wie in 8a – jede Erstinstallation, kein bestehendes Projekt. Seit
|
|
345
|
+
`1.14.2` meldet `install.py --update` einen deklarierten Zusatzschlüssel, der in der
|
|
346
|
+
vorhandenen Einstellungsdatei fehlt (D-434); nachtragen muss ihn weiter der Mensch.
|
|
347
|
+
|
|
348
|
+
## 9. Änderungsverlauf
|
|
349
|
+
|
|
350
|
+
| Version | Datum | Änderung | Autor (Rolle) |
|
|
351
|
+
|---|---|---|---|
|
|
352
|
+
| 0.22.0 | 2026-09-18 | **H3 ist gemessen – von `[DOK]` auf eine Messung mit benannter Grenze** (`CR-2026-091`, D-176). Die Statusmeldung des `SessionStart`-Hooks erreicht die Sitzung – ihre `additionalContext`-Zeichenkette steht wörtlich in der Mitschrift –, **und sie steuert**: Mit geschnittenem Regeltext blieb der Lauf mit Hook nur lesend und änderte ohne ihn eine Produktivzeile. Die Grenze steht in der Zeile: eine Verhaltensdifferenz, keine Zusage | `<FRAMEWORK_OWNER>` |
|
|
353
|
+
| 0.23.0 | 2026-09-19 | 🔴 **Zeile S2 führte zwei Wege als einen, und für einen davon war sie falsch (`CR-2026-094`, D-187).** Der Aufruf mit Schrägstrich ist eine Slash-Befehls-Erweiterung ohne Werkzeugmeldung; die drei Grenzen gelten für den modellseitigen Aufruf, den die Erhebung vom 2026-09-14 gemessen hat. **Zeile S3 nennt seither, was in der Mitschrift steht** (D-188): `command_permissions` trägt genau die Werkzeuge aus `allowed-tools`, und zwei Läufe haben `Bash` aufgerufen, obwohl der Skill es sperrt (`K-73`) | `<FRAMEWORK_OWNER>` |
|
|
354
|
+
| 0.24.0 | 2026-09-22 | 🟢 **Die Markerform ist abgeschafft; die Vorbemerkung nennt `BELEG OFFEN`** (`CR-2026-121`, D-291). 🔴 **Und der Belegstand dieses Packs war seit `0.62.0` falsch** (D-297): Er sagte *„Eine Zeile trägt einen VERIFY-Marker – R5"*, während **der Änderungsverlauf desselben Packs** die Auflösung dieses Markers seit Pack-Version `0.21.0` führt (D-158) und **keine Fundstelle die Form trug** – *die Zusage, deren Widerlegung im eigenen Dokument steht.* **Richtig ist: keine.** Zwei weitere Zahlen desselben Absatzes waren überholt: *„9 von 36"* für das Schwesterpack (richtig: 1) und der Satz, dort sei *„keine einzige Einstufung gegen eine Installation geprüft"* – seit `0.53.0` überholt, seit `0.86.0` grob falsch | `<FRAMEWORK_OWNER>` |
|
|
355
|
+
| 0.24.3 | 2026-09-25 | Zeile M4 (Planungsmodus) ergänzt, auf die `fw-plan` und `fw-bugfix-prepare` für die Planablage verweisen: `[TEXTUELL]`, `BELEG OFFEN`; Summen und Belegstand nachgezogen (`CR-2026-147`, D-402, K-149) | `<FRAMEWORK_OWNER>` |
|
|
356
|
+
| 0.24.4 | 2026-09-26 | Vorbemerkung des B-Blocks: **die Startort-Bedingung**, gemessen mit Clientversion 2.1.283 – im Unterverzeichnis mit eigenem Repositorium lädt die Wurzel-Anweisung, Berechtigungen und Hooks nicht; eine eigene Installation dort trägt (`CR-2026-148`, D-408) | `<FRAMEWORK_OWNER>` |
|
|
357
|
+
| 0.24.5 | 2026-09-26 | Abschnitt 8b: **die Attributionsvorgabe des Clients für Commits abgeschaltet** – `attribution` in Objektform auf der obersten Ebene der Einstellungsdatei, weil die Kurzform `false` ältere Stände der Zielspanne die ganze Datei verwerfen lässt; Quelle `QC-7` (`CR-2026-153`, D-433, K-171) | `<FRAMEWORK_OWNER>` |
|
|
358
|
+
| 0.14.0 | 2026-09-13 | **S3 ist zurückgewonnen – von `[NICHT ABBILDBAR]` auf `[TECHNISCH]` mit drei benannten Grenzen** (`CR-2026-057`, D-64 bis D-66). `disallowed-tools` ist **gemessen** eine echte Werkzeugsperre je Skill und schlägt sogar eine ausdrückliche `allow`-Regel; `permissions.deny` der Quelle wird darauf abgebildet, die Werkzeugnamen kommen aus `hook_tools`. Die drei Grenzen – Turnbereich, Aufzählung, keine Argumentmuster – stehen in der Zeile, im Arbeitsmodell und in der Grenzfalltabelle. **Ein Argumentmuster wirkt lautlos gar nicht**; Prüfung 33 weist es ab | `<FRAMEWORK_OWNER>` |
|
|
359
|
+
| 0.15.0 | 2026-09-13 | **Der Unteragent ist erhoben – drei Zeilen bekommen Belege, und zwei davon standen acht Releases auf reiner Dokumentation (`CR-2026-058`, D-67 bis D-70).** **A1** ist gemessen: Ein Profil mit `tools: Read, Grep, Glob` hatte kein Schreibwerkzeug, und `permission_denials` blieb leer – es ist eine **Entfernung aus dem Werkzeugvorrat**, keine Verweigerung. Der Teilsatz zum Startabbruch bleibt ausdrücklich `[DOK]`. **S3** trägt jetzt seine **Reichweite**: Die Sperre gilt auch für einen Unteragenten, den der Skill startet – gemessen mit Kontrolllauf –, und Grenze 2 reicht mit: Mit gesperrtem `Write, Edit` schrieb der Unteragent über `Bash`. **H2** trägt die Reichweite des Hooks: Er erfasst und **blockiert** die Aufrufe eines Unteragenten, auch mit dem benannten Matcher, den `clientmap.py` erzeugt. Neu im Manifest: `agent_start_tools` – das Startwerkzeug stand in keiner Werkzeugliste, obwohl beide Schreibweisen (`Agent`, `Task`) in der Sperre wirken. **Zwei überholte Angaben im Belegstand berichtigt** (`CR-2026-058`, Befund 6) | `<FRAMEWORK_OWNER>` |
|
|
360
|
+
| 0.16.0 | 2026-09-13 | **Die drei Lücken aus 0.36.0 sind geschlossen (`CR-2026-059`, D-72 und D-73).** **S3:** Die Sperre gilt auch für einen Unteragenten mit `run_in_background: true` und reicht **mindestens zwei Ebenen tief**; **bei Widerspruch gewinnt die restriktivere Liste** – ein Profil, das `Write` ausdrücklich nennt, bekam es unter einem sperrenden Skill nicht. Dazu eine **Beobachtung zum Wortlaut des Clients**, der seine eigene Reichweite überzeichnet („for this session", gemessen ist der Turn). **A1:** Ein Profil mit `tools`-Liste hat **kein Startwerkzeug** und kann sich nicht über eine zweite Ebene erweitern – ohne diesen Befund wäre die Zusage „rein lesend" aushebelbar; **Prüfung 35** hält fest, dass das so bleibt | `<FRAMEWORK_OWNER>` |
|
|
361
|
+
| 0.17.0 | 2026-09-14 | **S2 bekommt ihre drei gemessenen Grenzen** (`CR-2026-063`, D-81 bis D-83). Die Zeile stand seit dem ersten Release unverändert auf `[TECHNISCH]` `[DOK]` und nannte keine einzige – während die Nachbarzeile S3 seit 0.14.0 drei trägt. **Der Skillaufruf ist ein eigener Werkzeugaufruf und war in der ausgelieferten Berechtigungsdatei in keinem Korb vertreten**; er lief in die Rückfrage und im rückfragefreien Betrieb in die Abweisung. Neu im Manifest: `permission_tools.skill` und `permission_name_tools`. Die Datei führt jetzt zwölf `allow`-Regeln, eine je Skill des Kerns – **wörtlich, weil ein Präfixmuster gemessen nichts freigibt** | `<FRAMEWORK_OWNER>` |
|
|
362
|
+
| 0.1.0 | 2026-09-10 | angelegt (`CR-2026-004`) | `<FRAMEWORK_OWNER>` |
|
|
363
|
+
| 0.2.0 | 2026-09-10 | Berechtigungen und Hooks aus dem Pack in den Kern; Semantikabbildung ergänzt (`CR-2026-008`) | `<FRAMEWORK_OWNER>` |
|
|
364
|
+
| 0.3.0 | 2026-09-10 | Overlay-Laufzeitregel und die beiden Vorlagen in den Kern; Pack umfasst vier Dateien (`CR-2026-010`) | `<FRAMEWORK_OWNER>` |
|
|
365
|
+
| 0.4.0 | 2026-09-10 | **Erste Validierung gegen eine reale Installation und die Herstellerdokumentation (AP2, Clientversion 2.1.267).** Alle zehn Pruefmarker abgearbeitet: sechs belegt, zwei als ueberholt gekennzeichnet (R2/R3, S4), einer als Abwesenheitsbeleg, einer um die dokumentierte Grenze der Praefixmuster ergaenzt. Abschnitt 7 nennt die 17 wirkungslosen Regeln der erzeugten Berechtigungsdatei. Protokoll: `tests/protocols/2026-09-10-AP2-claude-code.md` | `<FRAMEWORK_OWNER>` |
|
|
366
|
+
| 0.5.0 | 2026-09-10 | **Drei Befunde aus AP2 behoben (`CR-2026-016`, D-26).** `triggers` wird nicht mehr ersatzlos verworfen, sondern auf `disable-model-invocation` abgebildet - die Zusage S4 gilt damit auch in der Installation. Pfadregeln werden nur noch fuer `Read` und `Edit` erzeugt: 18 wirkungslose Regeln entfallen, die Berechtigungsdatei schrumpft von 83 auf 65 Regeln. `install.py --client claude-code` gefolgt von `validate-framework.py` laeuft erstmals fehlerfrei | `<FRAMEWORK_OWNER>` |
|
|
367
|
+
| 0.6.0 | 2026-09-10 | **R2 und R3 abgebildet (`CR-2026-017`, D-27).** Die Regelablage liegt in `.claude/rules/`; der Client laedt sie von sich aus, die `@`-Importe der Wurzel-Anweisung entfallen. Die Ladetrigger der Kernquelle werden abgebildet statt zu Kommentar zu werden: `glob` auf `paths`, `always_on` und `model_decision` auf unbedingtes Laden. Erstmals gerendert werden auch die Regelvorlagen und die Laufzeitfassungen aktivierter Role und Technology Packs - eine aktivierte Role-Pack-Regel war bei diesem Client bisher wirkungslos. Keine Einstufung steht mehr auf `[NICHT ABBILDBAR]`; die mit `CR-2026-016` bereits behobene Zeile S4 und die Restangaben zu AP2-CC-02 in den Abschnitten 1a, 4, 5 und 7 sind nachgezogen | `<FRAMEWORK_OWNER>` |
|
|
368
|
+
| 0.7.0 | 2026-09-10 | **Belegspalte nennt die Quelle (`CR-2026-018`, `FW-AK-01`).** Jede mit AP2 belegte Zeile nennt die Seite der Herstellerdokumentation, auf die sie sich stuetzt; die vollstaendige Belegzuordnung steht im Hauptdokument in Anhang 31.4.2, der bis dahin ausschliesslich Devin-Quellen fuehrte. Neu aufgenommen: AP2-CC-12 (`permissionMode` im Subagentenprofil, offene Teilfrage zu M2). Genauer belegt: H2 (ein blockierender Hook geht auch einer `allow`-Regel vor), A1 (`disallowedTools` zuerst; ein Profil ohne aufloesbares Werkzeug startet nicht), S4 (die Sperre haelt die Skill-Beschreibung aus dem Kontext) | `<FRAMEWORK_OWNER>` |
|
|
369
|
+
| 0.8.0 | 2026-09-11 | **Der Schutz-Hook läuft fail-closed (`CR-2026-026`, D-31).** Das Eingabeschema dieses Clients ist gegen eine Installation bestätigt (AP2, WN-5); das Manifest führt deshalb `hook_fail_closed: true`, und die Abbildung hängt dem Kommando des durchsetzenden Hooks `--fail-closed` an. Eine Werkzeugeingabe, die der Hook nicht als JSON lesen kann, wird blockiert statt durchgelassen. Der Schalter steht im Kommando, nicht in `env` – die bis 0.23.0 hier empfohlene Umgebungsvariable hätte die Sperre an eine zweite, unbelegte Clientzusage gehängt. Prüfung 17 belegt die Wirkung; weil die Hooks hier in der Saat liegen, ist das Argument in einer bestehenden Installation von Hand nachzuziehen | `<FRAMEWORK_OWNER>` |
|
|
370
|
+
| 0.8.1 | 2026-09-11 | **Der Matcher deckt das Lesewerkzeug ab (`CR-2026-030`, D-33).** D-30 hatte entschieden, dass Secret-Pfade auch gegen lesende Werkzeuge durchgesetzt werden; eingelöst war das nie – die Hook-Quelle nannte kein Leseverb, und `hook_tools` bildete keines ab. Aufgefallen ist es bei AP2 des anderen Packs, gilt aber hier genauso: `Read` steht jetzt in der Abbildung, Prüfung 16 sondiert es | `<FRAMEWORK_OWNER>` |
|
|
371
|
+
| 0.9.0 | 2026-09-11 | **Drei Zusagen mehr, zwei davon mit offenem Marker – und das ist der Punkt.** Neu: **R5** (Aufzählbarkeit der Regelquellen – dieser Client kennt kein Aufzählungskommando; was es gibt, ist die Selbstauskunft der Sitzung, beobachtet, aber Modellverhalten), **S5** (Aufzählbarkeit der Skills – für diesen Client **nicht erhoben**, VERIFY) und **R6** (keine Importe fremder Werkzeugformate: Der Mechanismus `claudeMdExcludes` ist gemessen, eine Vorgabe wird bewusst **nicht** ausgeliefert, `CR-2026-038` E2). Neuer Abschnitt 8 mit den Anweisungs- und Konfigurationsquellen außerhalb des Projekts – gemessen ist dort, dass eine `CLAUDE.md` aus einem **Elternverzeichnis** mitlädt (K-22) und dass die nutzerglobale Einstellungsdatei **Berechtigungen und Hooks** führt (ERH-07). Der B-Block trägt die Vorbemerkung zur Betriebsmodus-Abhängigkeit (D-35); die README der Regelablage ist in die Laufzeit-README aufgegangen (D-36). Nach zwei Releases ohne VERIFY-Marker stehen wieder zwei – sie sind kein Rückschritt, sondern zwei Fragen, die vorher nicht gestellt waren | `<FRAMEWORK_OWNER>` |
|
|
372
|
+
| 0.18.0 | 2026-09-16 | **Die verbindliche Zielversion ist festgelegt, und sie ist eine Spanne (`CR-2026-075`, D-112, D-113).** Der Steckbrief trug seit 0.6.0 den Satz, die verbindliche Zielversion stehe aus – **dieselbe offene Festlegung, die das Schwesterpack als Ausfüllschlitz trug und die es acht Releases lang auf `entwurf` hielt.** Der Schlitz sperrte den Übergang, der Satz nicht; gefunden hat den Fall nicht eine Suche nach der Marke, sondern die Frage, wo dieselbe Aussage sonst noch steht. Seit diesem Release führt der Steckbrief zwei Zeilen: die Zielspanne `2.1.x` als Geltungsbereich und den gemessenen Punktwert `2.1.267` daneben. **Der Punktwert war zum Zeitpunkt der Festlegung sechs Patchstände alt** (installiert: 2.1.273) – genau der Grund, aus dem die Zielversion eine Spanne ist | `<FRAMEWORK_OWNER>` |
|
|
373
|
+
| 0.21.0 | 2026-09-18 | **Produktbeobachtung `FW-AK-01` gegen 2.1.275** (`CR-2026-087`). Fünf Quellen und acht Patchstände abgeglichen. 🟢 **Der VERIFY-Marker auf `R5` ist aufgelöst** – die Dokumentation nennt seit diesem Stand zwei technische Aufzählungswege (`/context`, Hook `InstructionsLoaded`); der Satz *„Kein Kommando dieses Clients führt die wirksamen Regelquellen auf"* war nicht mehr wahr (D-158). 🔴 **Zwei neue Quellen außerhalb des Repositoriums, beide standardmäßig an:** die selbstgeschriebene Anweisungsquelle – **abgeschaltet**, `autoMemoryEnabled: false` (D-154, Abschnitt 8a) – und die Kontoquelle der Skills, die sich aus der ausgelieferten Datei **nicht** abschalten lässt und deshalb als benannte Grenze in `X1` steht (`K-63`). Ergänzt: `QC-6` für die Hook-Seite, die drei Zusagen dieses Packs tragen und die die Quellenliste nicht führte (D-159) | `<FRAMEWORK_OWNER>` |
|
|
374
|
+
| 0.20.0 | 2026-09-18 | **Zeile B2 ist zur Hälfte aus der Dokumentation heraus** (`CR-2026-082`, D-134). Die Kette *Verweigern vor Rückfragen vor Erlauben* hat drei Paare; **zwei sind jetzt gemessen**: `deny` über `allow` seit 0.55.0 (D-121) und **`ask` über `allow` mit diesem Release** – an einem Paar, das sich in genau einer Zeile der Berechtigungsdatei unterscheidet. **Die praktische Folge steht in der Zeile:** Solange `Edit(**)` im `ask`-Korb steht, bleibt eine ausdrückliche `allow`-Regel auf eine **einzelne Datei** wirkungslos – ein Projekt kann sie nicht vorab freigeben. **`deny` über `ask` bleibt unbelegt und sagt es.** Der Messwert ist beim dritten Sitzungstest **zugefallen**: Er war ein Zuschnitt zu `FW-PI-04`, kein eigener Versuch | `<FRAMEWORK_OWNER>` |
|
|
375
|
+
| 0.19.0 | 2026-09-18 | **Zeile B6 traegt ihre Grenze selbst, und sie ist gemessen (`CR-2026-077`, D-123).** Das Praefixmuster eines `deny`-Eintrags erfasst nur Kommandos, die mit der **Zeichenfolge** beginnen: `git push origin main` wird abgewiesen, `git -C <pfad> push origin main` laeuft durch und erreicht das Remote – gemessen am 2026-09-17 mit Wirkung am Remote. **In der ausgelieferten Fassung haelt die Sperre trotzdem**, aber ueber den `allow`-Korb und nicht ueber den `deny`-Eintrag. **Der Satz war seit 0.15.0 da und stand am falschen Ort:** Der Vorbehalt in Abschnitt 4 nannte die Grenze und verwies fuer sie auf B6 – **zweiundvierzig Releases lang auf eine Zeile, die sie nicht trug** (`K-48`). Der Vorbehalt fuehrt jetzt beide Richtungen; die Einleitung des Abschnitts sagt nicht mehr, die Abweichung sei eine Verschaerfung. Die Einstufung `[TECHNISCH]` bleibt | `<FRAMEWORK_OWNER>` |
|
|
376
|
+
| 0.13.0 | 2026-09-13 | **Der Hook blockierte hier jeden Schreibzugriff – gemessen und behoben (`CR-2026-056`, D-61 bis D-63, Befund B06).** Weil dieser Client in jedem Ereignis `transcript_path` unter `~/.claude/projects/` führt und der Hook bis 0.33.0 **alle** Zeichenketten des Ereignisses durchsuchte, traf das Strukturmuster der Laufzeitschicht bei jedem `Edit`, `Write` und `NotebookEdit` – unabhängig vom Ziel. Am Client nachgemessen, mit Kontrolllauf. Geprüft wird jetzt die Operation statt des Umschlags. Neue Zeile **H4** mit Eingabeschema, Pfadidentität und der benannten Zeitlücke; Abschnitt 5 berichtigt eine Aussage über das andere Pack, die neun Releases lang falsch war | `<FRAMEWORK_OWNER>` |
|
|
377
|
+
| 0.25.0 | 2026-09-28 | **Die MCP-Anbindung ist gemessen** (`CR-2026-157`, D-456, D-459). Zeile MCP-Konfiguration: Server vom Typ `http` mit Kopfzeile aus einer Umgebungsvariablen, auch im Druckmodus. Zeile X1: Die Freigabe je Werkzeug trägt, aber die pauschale Rückfrage `mcp__*` schlägt sie – eine Freigabe zum Lesen ersetzt sie durch Einzelregeln. Das Manifest führt dafür `mcp_permission_rule` (Prüfung 101) | `<FRAMEWORK_OWNER>` |
|
|
378
|
+
| 0.25.1 | 2026-09-29 | **Das PowerShell-Werkzeug ist den Befehlsregeln gleichgestellt** (`CR-2026-159`, D-469, `K-70`). Manifest: `PowerShell` in `permission_tools.exec` und `hook_tools.exec` – jede Befehlsregel entsteht als `Bash(…)` und `PowerShell(…)`, der Hook-Matcher nennt das Werkzeug. Zeilen `exec`, B3 und B6 mit den Messwerten; dazu der Befund, dass der Client das Werkzeug ohne `PowerShell(…)`-Regel bei bestehenden Bash-Sperren ausblendet | `<FRAMEWORK_OWNER>` |
|
|
379
|
+
| 0.26.0 | 2026-09-29 | **MCP-Aufrufe erreichen den Schutz-Hook, und die Connectoren des Kontos stehen in Abschnitt 8** (`CR-2026-162`, D-486 bis D-489, `K-184`, `K-191`, `K-192`). Manifest: `hook_tools.mcp` mit `mcp__.*` und `hook_mcp_prefixes`. Zeile H1: MCP-Werkzeuge, gemessen mit einem Köderserver, und das Entscheidungsprotokoll. Abschnitt 8.2: die Connectoren des Kontos mit gemessenem Abschaltweg aus dem Projekt; 8.3: die Grenze des Protokolls (`K-200`) | `<FRAMEWORK_OWNER>` |
|
|
380
|
+
| 0.26.2 | 2026-09-30 | **Die Modusbindung ist gemessen** (`CR-2026-164`, D-501, `K-179`). Zeile M4: M2 an den Schutz-Hook gebunden, `Write` außerhalb der Plan-Ablage abgewiesen, in ihr durchgelassen | `<FRAMEWORK_OWNER>` |
|
|
381
|
+
| 0.26.3 | 2026-10-01 | **Die Modusbindung M3 bis M5 ist gemessen** (`CR-2026-169`, D-523, `K-201`). Zeile M4: je ein Lauf M3, M4, M5 und ein Kontrolllauf ohne Bindung; Zeile S3: die Sperre eines Skills gilt nur in seinem Turn (D-525) | `<FRAMEWORK_OWNER>` |
|
|
382
|
+
| 0.26.4 | 2026-10-01 | **Ein lesender Befehl in keinem Korb ist gemessen** (`CR-2026-172`, D-537, `K-208`). Zeile B2: ohne Eintrag lief `git ls-files` im Druckmodus ohne Rückfrage, mit `deny` wurde er abgewiesen – der Client gibt lesende Befehle selbst frei | `<FRAMEWORK_OWNER>` |
|
|
383
|
+
| 0.26.1 | 2026-09-30 | **Die POSIX-Schreibweise und die Schreibweise der Muster sind gemessen** (`CR-2026-163`, D-491, D-492, `K-92`, `K-96`). Zeile B3: Die Berechtigungsschicht dieses Clients unterscheidet unter Windows nicht zwischen Groß- und Kleinschreibung. Zeile H4: Der Hook löst `/c/…` in beiden Lesarten auf; der Client liest sie als `C:\…` | `<FRAMEWORK_OWNER>` |
|