@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.
Files changed (693) hide show
  1. package/.gitattributes +16 -0
  2. package/.gitignore +51 -0
  3. package/.koolie/QUELLREPOSITORIUM.md +18 -0
  4. package/.koolie/core/CHANGELOG.md +11832 -0
  5. package/.koolie/core/LICENSE +674 -0
  6. package/.koolie/core/LICENSE-HINWEIS.md +98 -0
  7. package/.koolie/core/OWNERS.md +36 -0
  8. package/.koolie/core/VERSION +1 -0
  9. package/.koolie/core/banner.py +397 -0
  10. package/.koolie/core/build/README.md +34 -0
  11. package/.koolie/core/build/assemble.py +354 -0
  12. package/.koolie/core/build/build-docx.py +194 -0
  13. package/.koolie/core/build/doc/00-kopf.md +18 -0
  14. package/.koolie/core/build/doc/01-executive-summary.md +24 -0
  15. package/.koolie/core/build/doc/02-zielbild.md +13 -0
  16. package/.koolie/core/build/doc/03-ziele-nichtziele.md +28 -0
  17. package/.koolie/core/build/doc/04-geltungsbereich.md +25 -0
  18. package/.koolie/core/build/doc/05-glossar.md +47 -0
  19. package/.koolie/core/build/doc/06-leitprinzipien.md +5 -0
  20. package/.koolie/core/build/doc/07-architektur.md +60 -0
  21. package/.koolie/core/build/doc/07a-abbildungsschicht.md +66 -0
  22. package/.koolie/core/build/doc/08-trennung.md +24 -0
  23. package/.koolie/core/build/doc/09-betriebsmodi.md +18 -0
  24. package/.koolie/core/build/doc/10-arbeitsablauf.md +5 -0
  25. package/.koolie/core/build/doc/11-datenschutz.md +5 -0
  26. package/.koolie/core/build/doc/12-sicherheit.md +5 -0
  27. package/.koolie/core/build/doc/13-risiko.md +5 -0
  28. package/.koolie/core/build/doc/14-rollen.md +9 -0
  29. package/.koolie/core/build/doc/15-referenzstruktur.md +124 -0
  30. package/.koolie/core/build/doc/16-agentenanweisung.md +8 -0
  31. package/.koolie/core/build/doc/17-overlay.md +29 -0
  32. package/.koolie/core/build/doc/18-skill-standard.md +5 -0
  33. package/.koolie/core/build/doc/19-skill-template.md +5 -0
  34. package/.koolie/core/build/doc/20-referenz-skills.md +70 -0
  35. package/.koolie/core/build/doc/21-prompts.md +53 -0
  36. package/.koolie/core/build/doc/22-checklisten.md +49 -0
  37. package/.koolie/core/build/doc/23-entscheidungsbaeume.md +29 -0
  38. package/.koolie/core/build/doc/24-onboarding.md +33 -0
  39. package/.koolie/core/build/doc/25-governance.md +35 -0
  40. package/.koolie/core/build/doc/26-qs-test.md +9 -0
  41. package/.koolie/core/build/doc/27-pilot.md +13 -0
  42. package/.koolie/core/build/doc/28-uebernahme.md +5 -0
  43. package/.koolie/core/build/doc/29-grenzen.md +87 -0
  44. package/.koolie/core/build/doc/30-roadmap.md +5 -0
  45. package/.koolie/core/build/doc/31-anhaenge.md +151 -0
  46. package/.koolie/core/build/doc/32-abschluss.md +92 -0
  47. package/.koolie/core/build/ref-a4.docx +0 -0
  48. package/.koolie/core/checklists/01-preflight.md +54 -0
  49. package/.koolie/core/checklists/02-privacy-context.md +51 -0
  50. package/.koolie/core/checklists/03-before-code-change.md +51 -0
  51. package/.koolie/core/checklists/04-review-ai-code.md +58 -0
  52. package/.koolie/core/checklists/05-testing.md +48 -0
  53. package/.koolie/core/checklists/06-security.md +50 -0
  54. package/.koolie/core/checklists/07-new-dependency.md +57 -0
  55. package/.koolie/core/checklists/08-merge-request.md +47 -0
  56. package/.koolie/core/checklists/09-onboarding.md +52 -0
  57. package/.koolie/core/checklists/10-project-adoption.md +74 -0
  58. package/.koolie/core/checklists/11-framework-release.md +71 -0
  59. package/.koolie/core/checklists/README.md +28 -0
  60. package/.koolie/core/clientmap.py +1358 -0
  61. package/.koolie/core/clients/README.md +113 -0
  62. package/.koolie/core/clients/_template/CLIENT_PACK.md +197 -0
  63. package/.koolie/core/clients/claude-code/CLIENT_PACK.md +383 -0
  64. package/.koolie/core/clients/claude-code/manifest.json +232 -0
  65. package/.koolie/core/clients/claude-code/root-template/.claude/README.md +127 -0
  66. package/.koolie/core/clients/cursor/CLIENT_PACK.md +229 -0
  67. package/.koolie/core/clients/cursor/manifest.json +330 -0
  68. package/.koolie/core/clients/cursor/root-template/.cursor/README.md +36 -0
  69. package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +251 -0
  70. package/.koolie/core/clients/devin-desktop/manifest.json +163 -0
  71. package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +79 -0
  72. package/.koolie/core/clients/kiro/CLIENT_PACK.md +223 -0
  73. package/.koolie/core/clients/kiro/manifest.json +300 -0
  74. package/.koolie/core/clients/kiro/root-template/.kiro/README.md +37 -0
  75. package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +257 -0
  76. package/.koolie/core/clients/openai-codex/manifest.json +208 -0
  77. package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +35 -0
  78. package/.koolie/core/decision-trees/01-context-allowed.md +46 -0
  79. package/.koolie/core/decision-trees/02-may-ai-do-task.md +47 -0
  80. package/.koolie/core/decision-trees/03-analyze-or-modify.md +50 -0
  81. package/.koolie/core/decision-trees/04-required-review.md +49 -0
  82. package/.koolie/core/decision-trees/05-stop-or-escalate.md +47 -0
  83. package/.koolie/core/decision-trees/06-rule-placement.md +58 -0
  84. package/.koolie/core/decision-trees/README.md +14 -0
  85. package/.koolie/core/docs/ADOPTION_GUIDE.md +582 -0
  86. package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +91 -0
  87. package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +79 -0
  88. package/.koolie/core/docs/ROADMAP.md +848 -0
  89. package/.koolie/core/docs/RUNTIME_GLOSSARY.md +113 -0
  90. package/.koolie/core/examples/README.md +11 -0
  91. package/.koolie/core/examples/example-ergebnisbericht.md +31 -0
  92. package/.koolie/core/examples/example-mr-description.md +31 -0
  93. package/.koolie/core/examples/example-overlay-runtime.md +48 -0
  94. package/.koolie/core/framework/core/00-principles.md +93 -0
  95. package/.koolie/core/framework/core/01-governance.md +58 -0
  96. package/.koolie/core/framework/core/02-privacy.md +141 -0
  97. package/.koolie/core/framework/core/03-security.md +86 -0
  98. package/.koolie/core/framework/core/04-quality.md +48 -0
  99. package/.koolie/core/framework/core/05-working-model.md +199 -0
  100. package/.koolie/core/framework/core/06-prompting-rules.md +51 -0
  101. package/.koolie/core/framework/core/07-review-rules.md +52 -0
  102. package/.koolie/core/framework/core/08-skill-conventions.md +115 -0
  103. package/.koolie/core/framework/core/09-risk-model.md +87 -0
  104. package/.koolie/core/framework/core/10-error-escalation.md +53 -0
  105. package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +16 -0
  106. package/.koolie/core/framework/org-policies/README.md +29 -0
  107. package/.koolie/core/framework/overlay-patterns/general/documents/branching-strategy/muster-general.md +43 -0
  108. package/.koolie/core/framework/overlay-patterns/general/documents/coding-guidelines/muster-general.md +82 -0
  109. package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-done/muster-general.md +52 -0
  110. package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-ready/muster-general.md +54 -0
  111. package/.koolie/core/framework/overlay-patterns/general/documents/quality/muster-general.md +59 -0
  112. package/.koolie/core/framework/overlay-patterns/general/documents/security/muster-general.md +52 -0
  113. package/.koolie/core/framework/overlay-patterns/general.md +150 -0
  114. package/.koolie/core/framework/role-packs/README.md +63 -0
  115. package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +58 -0
  116. package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +158 -0
  117. package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +88 -0
  118. package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/CHANGELOG.md +10 -0
  119. package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/EXAMPLES.md +148 -0
  120. package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/SKILL.md +195 -0
  121. package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +22 -0
  122. package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +95 -0
  123. package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +26 -0
  124. package/.koolie/core/framework/runtime/agents/fw-reviewer.md +34 -0
  125. package/.koolie/core/framework/runtime/client-settings.json +3 -0
  126. package/.koolie/core/framework/runtime/hooks.json +20 -0
  127. package/.koolie/core/framework/runtime/mcp-config.example.json +4 -0
  128. package/.koolie/core/framework/runtime/permissions.json +106 -0
  129. package/.koolie/core/framework/runtime/root-instruction-local.example.md +19 -0
  130. package/.koolie/core/framework/runtime/root-instruction.md +116 -0
  131. package/.koolie/core/framework/runtime/rules/00-framework-core.md +49 -0
  132. package/.koolie/core/framework/runtime/rules/10-privacy-security.md +49 -0
  133. package/.koolie/core/framework/runtime/rules/15-development-rules.md +41 -0
  134. package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +32 -0
  135. package/.koolie/core/framework/runtime/rules/20-project-overlay.md +60 -0
  136. package/.koolie/core/framework/skills/fw-bugfix-prepare/CHANGELOG.md +14 -0
  137. package/.koolie/core/framework/skills/fw-bugfix-prepare/EXAMPLES.md +57 -0
  138. package/.koolie/core/framework/skills/fw-bugfix-prepare/SKILL.md +177 -0
  139. package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +15 -0
  140. package/.koolie/core/framework/skills/fw-change-analyze/CHANGELOG.md +12 -0
  141. package/.koolie/core/framework/skills/fw-change-analyze/EXAMPLES.md +66 -0
  142. package/.koolie/core/framework/skills/fw-change-analyze/SKILL.md +167 -0
  143. package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +16 -0
  144. package/.koolie/core/framework/skills/fw-change-small/CHANGELOG.md +13 -0
  145. package/.koolie/core/framework/skills/fw-change-small/EXAMPLES.md +68 -0
  146. package/.koolie/core/framework/skills/fw-change-small/SKILL.md +175 -0
  147. package/.koolie/core/framework/skills/fw-change-small/TESTS.md +13 -0
  148. package/.koolie/core/framework/skills/fw-code-explain/CHANGELOG.md +11 -0
  149. package/.koolie/core/framework/skills/fw-code-explain/EXAMPLES.md +61 -0
  150. package/.koolie/core/framework/skills/fw-code-explain/SKILL.md +163 -0
  151. package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +11 -0
  152. package/.koolie/core/framework/skills/fw-docs-update/CHANGELOG.md +10 -0
  153. package/.koolie/core/framework/skills/fw-docs-update/EXAMPLES.md +59 -0
  154. package/.koolie/core/framework/skills/fw-docs-update/SKILL.md +160 -0
  155. package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +12 -0
  156. package/.koolie/core/framework/skills/fw-error-analyze/CHANGELOG.md +10 -0
  157. package/.koolie/core/framework/skills/fw-error-analyze/EXAMPLES.md +67 -0
  158. package/.koolie/core/framework/skills/fw-error-analyze/SKILL.md +160 -0
  159. package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +12 -0
  160. package/.koolie/core/framework/skills/fw-mr-description/CHANGELOG.md +12 -0
  161. package/.koolie/core/framework/skills/fw-mr-description/EXAMPLES.md +69 -0
  162. package/.koolie/core/framework/skills/fw-mr-description/SKILL.md +170 -0
  163. package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +12 -0
  164. package/.koolie/core/framework/skills/fw-overlay-pflege/CHANGELOG.md +7 -0
  165. package/.koolie/core/framework/skills/fw-overlay-pflege/EXAMPLES.md +48 -0
  166. package/.koolie/core/framework/skills/fw-overlay-pflege/SKILL.md +147 -0
  167. package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +13 -0
  168. package/.koolie/core/framework/skills/fw-plan/CHANGELOG.md +14 -0
  169. package/.koolie/core/framework/skills/fw-plan/EXAMPLES.md +69 -0
  170. package/.koolie/core/framework/skills/fw-plan/SKILL.md +168 -0
  171. package/.koolie/core/framework/skills/fw-plan/TESTS.md +14 -0
  172. package/.koolie/core/framework/skills/fw-refactor/CHANGELOG.md +10 -0
  173. package/.koolie/core/framework/skills/fw-refactor/EXAMPLES.md +70 -0
  174. package/.koolie/core/framework/skills/fw-refactor/SKILL.md +173 -0
  175. package/.koolie/core/framework/skills/fw-refactor/TESTS.md +14 -0
  176. package/.koolie/core/framework/skills/fw-repo-analyze/CHANGELOG.md +10 -0
  177. package/.koolie/core/framework/skills/fw-repo-analyze/EXAMPLES.md +52 -0
  178. package/.koolie/core/framework/skills/fw-repo-analyze/SKILL.md +149 -0
  179. package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +11 -0
  180. package/.koolie/core/framework/skills/fw-review-support/CHANGELOG.md +12 -0
  181. package/.koolie/core/framework/skills/fw-review-support/EXAMPLES.md +69 -0
  182. package/.koolie/core/framework/skills/fw-review-support/SKILL.md +179 -0
  183. package/.koolie/core/framework/skills/fw-review-support/TESTS.md +13 -0
  184. package/.koolie/core/framework/skills/fw-tests/CHANGELOG.md +9 -0
  185. package/.koolie/core/framework/skills/fw-tests/EXAMPLES.md +65 -0
  186. package/.koolie/core/framework/skills/fw-tests/SKILL.md +169 -0
  187. package/.koolie/core/framework/skills/fw-tests/TESTS.md +12 -0
  188. package/.koolie/core/framework/tech-packs/README.md +15 -0
  189. package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +61 -0
  190. package/.koolie/core/governance/ADOPTION_REGISTRY.md +89 -0
  191. package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +60 -0
  192. package/.koolie/core/governance/DECISION_LOG.md +779 -0
  193. package/.koolie/core/governance/EXCEPTION_PROCESS.md +31 -0
  194. package/.koolie/core/governance/FEEDBACK_PROCESS.md +34 -0
  195. package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +135 -0
  196. package/.koolie/core/governance/INCIDENT_HANDLING.md +47 -0
  197. package/.koolie/core/governance/PRIORITY_HIERARCHY.md +61 -0
  198. package/.koolie/core/governance/RACI.md +37 -0
  199. package/.koolie/core/governance/RELEASE_PROCESS.md +183 -0
  200. package/.koolie/core/governance/change-requests/CR-2026-001-definition-release-1-0-0.md +67 -0
  201. package/.koolie/core/governance/change-requests/CR-2026-002-client-packs.md +63 -0
  202. package/.koolie/core/governance/change-requests/CR-2026-003-install-client-schalter.md +70 -0
  203. package/.koolie/core/governance/change-requests/CR-2026-004-client-pack-claude-code.md +82 -0
  204. package/.koolie/core/governance/change-requests/CR-2026-005-kern-neutralisierung.md +75 -0
  205. package/.koolie/core/governance/change-requests/CR-2026-006-gemeinsame-skill-quelle.md +77 -0
  206. package/.koolie/core/governance/change-requests/CR-2026-007-geteilte-kernbestandteile.md +80 -0
  207. package/.koolie/core/governance/change-requests/CR-2026-008-berechtigungen-und-hooks.md +85 -0
  208. package/.koolie/core/governance/change-requests/CR-2026-009-umbenennung-leitwerk.md +77 -0
  209. package/.koolie/core/governance/change-requests/CR-2026-010-restduplikation.md +73 -0
  210. package/.koolie/core/governance/change-requests/CR-2026-011-hauptdokument.md +72 -0
  211. package/.koolie/core/governance/change-requests/CR-2026-012-schreibschutz-kernverzeichnis.md +106 -0
  212. package/.koolie/core/governance/change-requests/CR-2026-013-validator-blindstellen.md +128 -0
  213. package/.koolie/core/governance/change-requests/CR-2026-014-kurzform-langform.md +125 -0
  214. package/.koolie/core/governance/change-requests/CR-2026-015-versionskette.md +150 -0
  215. package/.koolie/core/governance/change-requests/CR-2026-016-ap2-claude-code.md +127 -0
  216. package/.koolie/core/governance/change-requests/CR-2026-017-ladebedingungen-claude-code.md +173 -0
  217. package/.koolie/core/governance/change-requests/CR-2026-018-quellenliste-claude-code.md +121 -0
  218. package/.koolie/core/governance/change-requests/CR-2026-019-strukturentscheidungen-fortschreiben.md +143 -0
  219. package/.koolie/core/governance/change-requests/CR-2026-020-akteursbezeichnung.md +118 -0
  220. package/.koolie/core/governance/change-requests/CR-2026-021-hook-interpreter.md +113 -0
  221. package/.koolie/core/governance/change-requests/CR-2026-022-artefaktversionen.md +73 -0
  222. package/.koolie/core/governance/change-requests/CR-2026-023-shell-lesesperre.md +128 -0
  223. package/.koolie/core/governance/change-requests/CR-2026-024-clientbindungen.md +78 -0
  224. package/.koolie/core/governance/change-requests/CR-2026-025-betriebsmodi.md +110 -0
  225. package/.koolie/core/governance/change-requests/CR-2026-026-fail-closed.md +134 -0
  226. package/.koolie/core/governance/change-requests/CR-2026-027-zeichenlimit-einstufung.md +105 -0
  227. package/.koolie/core/governance/change-requests/CR-2026-028-berechtigungsmodi.md +130 -0
  228. package/.koolie/core/governance/change-requests/CR-2026-029-hook-ablageort.md +115 -0
  229. package/.koolie/core/governance/change-requests/CR-2026-030-lesende-werkzeuge.md +143 -0
  230. package/.koolie/core/governance/change-requests/CR-2026-031-regelquellen-ausserhalb.md +182 -0
  231. package/.koolie/core/governance/change-requests/CR-2026-032-fremde-skill-ablage.md +151 -0
  232. package/.koolie/core/governance/change-requests/CR-2026-033-modusabhaengige-durchsetzung.md +131 -0
  233. package/.koolie/core/governance/change-requests/CR-2026-034-nachweisbedingungen.md +116 -0
  234. package/.koolie/core/governance/change-requests/CR-2026-035-readme-in-der-regelablage.md +115 -0
  235. package/.koolie/core/governance/change-requests/CR-2026-036-ortsangaben-hook-konfiguration.md +108 -0
  236. package/.koolie/core/governance/change-requests/CR-2026-037-meldender-hook-clientgebunden.md +133 -0
  237. package/.koolie/core/governance/change-requests/CR-2026-038-importsteuerung.md +159 -0
  238. package/.koolie/core/governance/change-requests/CR-2026-039-normative-saetze-in-kommentaren.md +124 -0
  239. package/.koolie/core/governance/change-requests/CR-2026-040-erh01-ist-clientgebunden.md +115 -0
  240. package/.koolie/core/governance/change-requests/CR-2026-041-s5-nicht-abbildbar.md +128 -0
  241. package/.koolie/core/governance/change-requests/CR-2026-042-abwesenheitsnachweis-suchwerkzeug.md +102 -0
  242. package/.koolie/core/governance/change-requests/CR-2026-043-validator-gibt-trefferwerte-aus.md +135 -0
  243. package/.koolie/core/governance/change-requests/CR-2026-044-aktivierungspruefung-clientgebunden.md +112 -0
  244. package/.koolie/core/governance/change-requests/CR-2026-045-update-verliert-die-clientwahl.md +116 -0
  245. package/.koolie/core/governance/change-requests/CR-2026-046-erstinstallation-ueberschreibt-projektdatei.md +125 -0
  246. package/.koolie/core/governance/change-requests/CR-2026-047-zusagen-je-zugriffskanal.md +133 -0
  247. package/.koolie/core/governance/change-requests/CR-2026-048-modusgrenze-ohne-durchsetzung.md +137 -0
  248. package/.koolie/core/governance/change-requests/CR-2026-049-sondenlauf-kodierungsabhaengig.md +126 -0
  249. package/.koolie/core/governance/change-requests/CR-2026-050-allowed-tools-und-verworfene-permissions.md +110 -0
  250. package/.koolie/core/governance/change-requests/CR-2026-051-quellenkarte-und-ueberholter-stand.md +110 -0
  251. package/.koolie/core/governance/change-requests/CR-2026-052-drei-regelkonflikte.md +166 -0
  252. package/.koolie/core/governance/change-requests/CR-2026-053-lesesperre-und-entwicklungsprofil.md +144 -0
  253. package/.koolie/core/governance/change-requests/CR-2026-054-aktivierung-verlangt-aktivitaet.md +124 -0
  254. package/.koolie/core/governance/change-requests/CR-2026-055-domain-ausnahme-ohne-mechanismus.md +173 -0
  255. package/.koolie/core/governance/change-requests/CR-2026-056-eingabeschema-und-pfadidentitaet.md +245 -0
  256. package/.koolie/core/governance/change-requests/CR-2026-057-disallowed-tools-und-s3.md +148 -0
  257. package/.koolie/core/governance/change-requests/CR-2026-058-unteragent-reichweite.md +203 -0
  258. package/.koolie/core/governance/change-requests/CR-2026-059-unteragent-tiefe-und-widerspruch.md +125 -0
  259. package/.koolie/core/governance/change-requests/CR-2026-060-stumme-brueche.md +170 -0
  260. package/.koolie/core/governance/change-requests/CR-2026-061-berechtigungsdatei-ohne-pruefung.md +169 -0
  261. package/.koolie/core/governance/change-requests/CR-2026-062-werkzeugabbildung-des-frontmatters.md +178 -0
  262. package/.koolie/core/governance/change-requests/CR-2026-063-skillaufruf-ohne-freigabe.md +207 -0
  263. package/.koolie/core/governance/change-requests/CR-2026-064-pruefregister-nicht-nachgezaehlt.md +141 -0
  264. package/.koolie/core/governance/change-requests/CR-2026-065-devin-suchwerkzeuge-erhoben.md +170 -0
  265. package/.koolie/core/governance/change-requests/CR-2026-066-schlitzdeckung-ohne-abgleich.md +153 -0
  266. package/.koolie/core/governance/change-requests/CR-2026-067-hookblock-und-praeparationsregister.md +140 -0
  267. package/.koolie/core/governance/change-requests/CR-2026-068-sondenlauf-nebenlaeufig.md +106 -0
  268. package/.koolie/core/governance/change-requests/CR-2026-069-bytecode-des-kerns.md +108 -0
  269. package/.koolie/core/governance/change-requests/CR-2026-070-d11-zaehler.md +114 -0
  270. package/.koolie/core/governance/change-requests/CR-2026-071-strukturentscheidungen-bestaetigen.md +322 -0
  271. package/.koolie/core/governance/change-requests/CR-2026-072-modulstatus-heben.md +315 -0
  272. package/.koolie/core/governance/change-requests/CR-2026-073-nicht-skill-traeger-heben.md +246 -0
  273. package/.koolie/core/governance/change-requests/CR-2026-074-restliche-nicht-skill-traeger-heben.md +271 -0
  274. package/.koolie/core/governance/change-requests/CR-2026-075-ap2-zielversion-devin-desktop.md +335 -0
  275. package/.koolie/core/governance/change-requests/CR-2026-076-erster-sitzungstest.md +455 -0
  276. package/.koolie/core/governance/change-requests/CR-2026-077-sitzungstest-schranken.md +425 -0
  277. package/.koolie/core/governance/change-requests/CR-2026-078-planung-nach-1-0-0.md +294 -0
  278. package/.koolie/core/governance/change-requests/CR-2026-079-umbenennung-vorziehen.md +233 -0
  279. package/.koolie/core/governance/change-requests/CR-2026-080-clientbindung-des-kerns.md +321 -0
  280. package/.koolie/core/governance/change-requests/CR-2026-081-produktnamen-im-kern.md +297 -0
  281. package/.koolie/core/governance/change-requests/CR-2026-082-sitzungstest-pi-ds-2.md +145 -0
  282. package/.koolie/core/governance/change-requests/CR-2026-083-sitzungstest-ne-sc.md +300 -0
  283. package/.koolie/core/governance/change-requests/CR-2026-084-trockenlauf-gegen-den-committeten-stand.md +117 -0
  284. package/.koolie/core/governance/change-requests/CR-2026-085-vorbedingungen-sitzungstest-5.md +182 -0
  285. package/.koolie/core/governance/change-requests/CR-2026-086-grenzfaelle-gegen-die-fassungen.md +164 -0
  286. package/.koolie/core/governance/change-requests/CR-2026-087-produktbeobachtung-quellenliste.md +206 -0
  287. package/.koolie/core/governance/change-requests/CR-2026-088-vorbedingungen-testblaetter.md +127 -0
  288. package/.koolie/core/governance/change-requests/CR-2026-089-herrichtung-uebungsrepositorium.md +226 -0
  289. package/.koolie/core/governance/change-requests/CR-2026-090-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +255 -0
  290. package/.koolie/core/governance/change-requests/CR-2026-091-sitzungstest-5.md +163 -0
  291. package/.koolie/core/governance/change-requests/CR-2026-092-pruefmittelwort-und-buendelschnitt.md +226 -0
  292. package/.koolie/core/governance/change-requests/CR-2026-093-sechzehnte-praeparation.md +151 -0
  293. package/.koolie/core/governance/change-requests/CR-2026-094-testblaetter-buendel-1.md +113 -0
  294. package/.koolie/core/governance/change-requests/CR-2026-095-pruefapparat-filter.md +65 -0
  295. package/.koolie/core/governance/change-requests/CR-2026-096-vorbedingungen-buendel-2.md +225 -0
  296. package/.koolie/core/governance/change-requests/CR-2026-097-testblaetter-buendel-2.md +162 -0
  297. package/.koolie/core/governance/change-requests/CR-2026-098-anforderungen-auslieferung.md +93 -0
  298. package/.koolie/core/governance/change-requests/CR-2026-099-k74-und-vorbedingungen-buendel-3.md +119 -0
  299. package/.koolie/core/governance/change-requests/CR-2026-100-testblaetter-buendel-3.md +120 -0
  300. package/.koolie/core/governance/change-requests/CR-2026-101-k77-eigener-posten.md +165 -0
  301. package/.koolie/core/governance/change-requests/CR-2026-102-k77-entschieden.md +118 -0
  302. package/.koolie/core/governance/change-requests/CR-2026-103-vorbedingungen-buendel-4.md +76 -0
  303. package/.koolie/core/governance/change-requests/CR-2026-104-herrichtung-buendel-4.md +82 -0
  304. package/.koolie/core/governance/change-requests/CR-2026-105-messapparat-buendel-4.md +227 -0
  305. package/.koolie/core/governance/change-requests/CR-2026-106-uebergabe-einchecken.md +91 -0
  306. package/.koolie/core/governance/change-requests/CR-2026-107-uebergabe-im-release-commit.md +111 -0
  307. package/.koolie/core/governance/change-requests/CR-2026-108-testblaetter-buendel-4.md +118 -0
  308. package/.koolie/core/governance/change-requests/CR-2026-109-berichtsweg-des-aufraeumers.md +108 -0
  309. package/.koolie/core/governance/change-requests/CR-2026-110-vorbedingungen-des-nachlaufs.md +184 -0
  310. package/.koolie/core/governance/change-requests/CR-2026-111-der-apparat-auf-dem-weg-der-wiederaufnahme.md +127 -0
  311. package/.koolie/core/governance/change-requests/CR-2026-112-der-arbeitsplatz-im-kern.md +103 -0
  312. package/.koolie/core/governance/change-requests/CR-2026-113-nachlauf-buendel-4.md +103 -0
  313. package/.koolie/core/governance/change-requests/CR-2026-114-vorbedingungen-buendel-5.md +317 -0
  314. package/.koolie/core/governance/change-requests/CR-2026-115-herrichtung-buendel-5.md +244 -0
  315. package/.koolie/core/governance/change-requests/CR-2026-116-messtag-buendel-5.md +178 -0
  316. package/.koolie/core/governance/change-requests/CR-2026-117-sammelzellen-zentraler-katalog.md +251 -0
  317. package/.koolie/core/governance/change-requests/CR-2026-118-quellenzuordnung-matrixzeilen.md +115 -0
  318. package/.koolie/core/governance/change-requests/CR-2026-119-umbenennung-koolie.md +204 -0
  319. package/.koolie/core/governance/change-requests/CR-2026-120-ap2-rest-devin-desktop.md +96 -0
  320. package/.koolie/core/governance/change-requests/CR-2026-121-verify-marker-abschaffen.md +185 -0
  321. package/.koolie/core/governance/change-requests/CR-2026-122-umbenennung-koolie-lauf.md +131 -0
  322. package/.koolie/core/governance/change-requests/CR-2026-123-vortrag-und-namensabsatz.md +170 -0
  323. package/.koolie/core/governance/change-requests/CR-2026-124-hauptdokument-ap11.md +237 -0
  324. package/.koolie/core/governance/change-requests/CR-2026-125-word-fassung-und-blinder-fleck.md +204 -0
  325. package/.koolie/core/governance/change-requests/CR-2026-126-lizenz-gpl3.md +112 -0
  326. package/.koolie/core/governance/change-requests/CR-2026-127-gegenzeichnung-rollenfrage.md +96 -0
  327. package/.koolie/core/governance/change-requests/CR-2026-128-freigabelauf-1.0.0.md +278 -0
  328. package/.koolie/core/governance/change-requests/CR-2026-129-archiv-zeilenenden.md +90 -0
  329. package/.koolie/core/governance/change-requests/CR-2026-130-reihenfolge-des-hebens.md +204 -0
  330. package/.koolie/core/governance/change-requests/CR-2026-131-chronik-und-vorlage.md +194 -0
  331. package/.koolie/core/governance/change-requests/CR-2026-132-erhebung-openai-codex.md +185 -0
  332. package/.koolie/core/governance/change-requests/CR-2026-133-bau-openai-codex.md +97 -0
  333. package/.koolie/core/governance/change-requests/CR-2026-134-uebergabe-lokal.md +117 -0
  334. package/.koolie/core/governance/change-requests/CR-2026-135-pfadlisten-nul-getrennt.md +139 -0
  335. package/.koolie/core/governance/change-requests/CR-2026-136-overlay-werte-einordnung.md +156 -0
  336. package/.koolie/core/governance/change-requests/CR-2026-137-kopierweg-kern.md +144 -0
  337. package/.koolie/core/governance/change-requests/CR-2026-138-overlay-muster-general.md +118 -0
  338. package/.koolie/core/governance/change-requests/CR-2026-139-overlay-muster-dokumente.md +105 -0
  339. package/.koolie/core/governance/change-requests/CR-2026-140-installer-je-zielsystem.md +120 -0
  340. package/.koolie/core/governance/change-requests/CR-2026-141-lieferumfang.md +123 -0
  341. package/.koolie/core/governance/change-requests/CR-2026-142-dokumentationsstandard.md +90 -0
  342. package/.koolie/core/governance/change-requests/CR-2026-143-klasse-b-core-laufzeit.md +89 -0
  343. package/.koolie/core/governance/change-requests/CR-2026-144-klasse-b-governance.md +90 -0
  344. package/.koolie/core/governance/change-requests/CR-2026-145-klasse-b-skills.md +81 -0
  345. package/.koolie/core/governance/change-requests/CR-2026-146-code-pack-posten.md +84 -0
  346. package/.koolie/core/governance/change-requests/CR-2026-147-regel-register-posten.md +78 -0
  347. package/.koolie/core/governance/change-requests/CR-2026-148-mehrprojekt-tokenlast.md +70 -0
  348. package/.koolie/core/governance/change-requests/CR-2026-149-regelablage-pfadtoken.md +71 -0
  349. package/.koolie/core/governance/change-requests/CR-2026-150-client-pack-kiro.md +76 -0
  350. package/.koolie/core/governance/change-requests/CR-2026-151-skill-anweisungen.md +71 -0
  351. package/.koolie/core/governance/change-requests/CR-2026-152-testblaetter-modellwechsel.md +78 -0
  352. package/.koolie/core/governance/change-requests/CR-2026-153-attributionszeile.md +88 -0
  353. package/.koolie/core/governance/change-requests/CR-2026-154-auffindbarkeit.md +102 -0
  354. package/.koolie/core/governance/change-requests/CR-2026-155-client-pack-cursor.md +80 -0
  355. package/.koolie/core/governance/change-requests/CR-2026-156-mandat-und-reibung.md +100 -0
  356. package/.koolie/core/governance/change-requests/CR-2026-157-mcp-anbindung.md +93 -0
  357. package/.koolie/core/governance/change-requests/CR-2026-158-registerpflege.md +69 -0
  358. package/.koolie/core/governance/change-requests/CR-2026-159-powershell.md +49 -0
  359. package/.koolie/core/governance/change-requests/CR-2026-160-messapparat.md +59 -0
  360. package/.koolie/core/governance/change-requests/CR-2026-161-pruefwerkzeuge.md +52 -0
  361. package/.koolie/core/governance/change-requests/CR-2026-162-schutzschicht.md +65 -0
  362. package/.koolie/core/governance/change-requests/CR-2026-163-pfadsemantik.md +61 -0
  363. package/.koolie/core/governance/change-requests/CR-2026-164-modi-ausnahmen.md +65 -0
  364. package/.koolie/core/governance/change-requests/CR-2026-165-installer-banner.md +406 -0
  365. package/.koolie/core/governance/change-requests/CR-2026-166-nachlauf-aufzeichnungen.md +59 -0
  366. package/.koolie/core/governance/change-requests/CR-2026-167-einsatzarchitektur.md +60 -0
  367. package/.koolie/core/governance/change-requests/CR-2026-168-paketquellen.md +64 -0
  368. package/.koolie/core/governance/change-requests/CR-2026-169-modusbindung-messfragen.md +58 -0
  369. package/.koolie/core/governance/change-requests/CR-2026-170-erste-veroeffentlichung.md +62 -0
  370. package/.koolie/core/governance/change-requests/CR-2026-171-befehl-im-projektverzeichnis.md +57 -0
  371. package/.koolie/core/governance/change-requests/CR-2026-172-auftritt-npm-suche.md +58 -0
  372. package/.koolie/core/install.py +2402 -0
  373. package/.koolie/core/install_dialog.py +227 -0
  374. package/.koolie/core/koexistenz.py +112 -0
  375. package/.koolie/core/mandat.py +605 -0
  376. package/.koolie/core/onboarding/COMPLETION_CRITERIA.md +37 -0
  377. package/.koolie/core/onboarding/GUIDE.md +103 -0
  378. package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +48 -0
  379. package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +40 -0
  380. package/.koolie/core/onboarding/QUICKSTART.md +50 -0
  381. package/.koolie/core/onboarding/REFERENCE.md +69 -0
  382. package/.koolie/core/onboarding/exercises/EXERCISES.md +78 -0
  383. package/.koolie/core/onboarding/exercises/README.md +120 -0
  384. package/.koolie/core/pilot/METRICS.md +59 -0
  385. package/.koolie/core/pilot/PILOT_CONCEPT.md +42 -0
  386. package/.koolie/core/prompts/01-understand-codebase.md +99 -0
  387. package/.koolie/core/prompts/02-impact-analysis.md +104 -0
  388. package/.koolie/core/prompts/03-implementation-planning.md +102 -0
  389. package/.koolie/core/prompts/04-code-generation.md +100 -0
  390. package/.koolie/core/prompts/05-test-generation.md +103 -0
  391. package/.koolie/core/prompts/06-refactoring.md +102 -0
  392. package/.koolie/core/prompts/07-debugging.md +97 -0
  393. package/.koolie/core/prompts/08-security-review.md +92 -0
  394. package/.koolie/core/prompts/09-performance-analysis.md +89 -0
  395. package/.koolie/core/prompts/10-documentation.md +91 -0
  396. package/.koolie/core/prompts/11-merge-request-review.md +94 -0
  397. package/.koolie/core/prompts/12-developer-training.md +90 -0
  398. package/.koolie/core/prompts/README.md +88 -0
  399. package/.koolie/core/templates/MR_AI_DISCLOSURE.md +37 -0
  400. package/.koolie/core/templates/PLAN_TEMPLATE.md +57 -0
  401. package/.koolie/core/templates/SKILL_TEMPLATE.md +159 -0
  402. package/.koolie/core/templates/project-overlay/OVERLAY.md +315 -0
  403. package/.koolie/core/templates/project-overlay/documents/README.md +43 -0
  404. package/.koolie/core/templates/project-overlay/documents/ai-governance/.gitkeep.md +3 -0
  405. package/.koolie/core/templates/project-overlay/documents/ai-process-model/.gitkeep.md +3 -0
  406. package/.koolie/core/templates/project-overlay/documents/architecture/.gitkeep.md +3 -0
  407. package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +3 -0
  408. package/.koolie/core/templates/project-overlay/documents/branching-strategy/.gitkeep.md +3 -0
  409. package/.koolie/core/templates/project-overlay/documents/coding-guidelines/.gitkeep.md +3 -0
  410. package/.koolie/core/templates/project-overlay/documents/definition-of-done/.gitkeep.md +3 -0
  411. package/.koolie/core/templates/project-overlay/documents/definition-of-ready/.gitkeep.md +3 -0
  412. package/.koolie/core/templates/project-overlay/documents/deployment/.gitkeep.md +3 -0
  413. package/.koolie/core/templates/project-overlay/documents/glossary/.gitkeep.md +3 -0
  414. package/.koolie/core/templates/project-overlay/documents/quality/.gitkeep.md +3 -0
  415. package/.koolie/core/templates/project-overlay/documents/roadmap/.gitkeep.md +3 -0
  416. package/.koolie/core/templates/project-overlay/documents/roles/.gitkeep.md +3 -0
  417. package/.koolie/core/templates/project-overlay/documents/security/.gitkeep.md +3 -0
  418. package/.koolie/core/templates/project-overlay/exceptions/EXCEPTIONS.md +9 -0
  419. package/.koolie/core/templates/project-overlay/forbidden-terms.txt +8 -0
  420. package/.koolie/core/templates/project-overlay/overlay-manifest.yaml +73 -0
  421. package/.koolie/core/templates/rules/21-overlay-TEMPLATE.md.template +28 -0
  422. package/.koolie/core/templates/rules/40-tech-TEMPLATE.md.template +33 -0
  423. package/.koolie/core/tests/EDGE_CASES.md +67 -0
  424. package/.koolie/core/tests/TEST_CATALOG.md +170 -0
  425. package/.koolie/core/tests/erhebungen/README.md +326 -0
  426. package/.koolie/core/tests/erhebungen/ablage.py +357 -0
  427. package/.koolie/core/tests/erhebungen/apparat/__init__.py +22 -0
  428. package/.koolie/core/tests/erhebungen/apparat/baum.py +214 -0
  429. package/.koolie/core/tests/erhebungen/apparat/belege.py +91 -0
  430. package/.koolie/core/tests/erhebungen/apparat/clients.py +321 -0
  431. package/.koolie/core/tests/erhebungen/apparat/freigabe.py +74 -0
  432. package/.koolie/core/tests/erhebungen/apparat/kontingent.py +64 -0
  433. package/.koolie/core/tests/erhebungen/apparat/laeufer.py +155 -0
  434. package/.koolie/core/tests/erhebungen/apparat/reihe.py +202 -0
  435. package/.koolie/core/tests/erhebungen/apparat/selbsttest.py +280 -0
  436. package/.koolie/core/tests/erhebungen/apparat/stand.py +30 -0
  437. package/.koolie/core/tests/erhebungen/apparat/vorpruefung.py +70 -0
  438. package/.koolie/core/tests/erhebungen/auswerten-b4.py +468 -0
  439. package/.koolie/core/tests/erhebungen/auswerten-b5.py +517 -0
  440. package/.koolie/core/tests/erhebungen/auswerten-dd.py +172 -0
  441. package/.koolie/core/tests/erhebungen/baeume-b4.py +334 -0
  442. package/.koolie/core/tests/erhebungen/baeume-b5.py +339 -0
  443. package/.koolie/core/tests/erhebungen/baeume_loeschen.py +138 -0
  444. package/.koolie/core/tests/erhebungen/cc-overlay-fuellen.py +277 -0
  445. package/.koolie/core/tests/erhebungen/dossier-b4.py +178 -0
  446. package/.koolie/core/tests/erhebungen/dossier-b5.py +202 -0
  447. package/.koolie/core/tests/erhebungen/historie-bauen-b4.py +642 -0
  448. package/.koolie/core/tests/erhebungen/k-bauen-b3.py +841 -0
  449. package/.koolie/core/tests/erhebungen/lauf-dd.py +146 -0
  450. package/.koolie/core/tests/erhebungen/lauf.py +114 -0
  451. package/.koolie/core/tests/erhebungen/mcp-waechter.py +278 -0
  452. package/.koolie/core/tests/erhebungen/messbaum-schnitt.py +256 -0
  453. package/.koolie/core/tests/erhebungen/messen.py +72 -0
  454. package/.koolie/core/tests/erhebungen/node-waechter.py +74 -0
  455. package/.koolie/core/tests/erhebungen/packaktivierung.py +403 -0
  456. package/.koolie/core/tests/erhebungen/prompts-schreiben-b4.py +210 -0
  457. package/.koolie/core/tests/erhebungen/prompts-schreiben-b5.py +251 -0
  458. package/.koolie/core/tests/erhebungen/reihe-b4.py +171 -0
  459. package/.koolie/core/tests/erhebungen/reihe-b5.py +172 -0
  460. package/.koolie/core/tests/erhebungen/stand-b4.py +135 -0
  461. package/.koolie/core/tests/erhebungen/stand-b5.py +137 -0
  462. package/.koolie/core/tests/erhebungen/trust-b4.py +56 -0
  463. package/.koolie/core/tests/erhebungen/trust-b5.py +56 -0
  464. package/.koolie/core/tests/erhebungen/turn2-schreiben-b4.py +105 -0
  465. package/.koolie/core/tests/erhebungen/umgebungen-bauen-b4.py +377 -0
  466. package/.koolie/core/tests/erhebungen/umgebungen-bauen-b5.py +363 -0
  467. package/.koolie/core/tests/erhebungen/zaehlen46.py +74 -0
  468. package/.koolie/core/tests/erhebungen/zustand-b4.py +82 -0
  469. package/.koolie/core/tests/erhebungen/zustand-b5.py +82 -0
  470. package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code-wirkungsnachweise.md +194 -0
  471. package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code.md +468 -0
  472. package/.koolie/core/tests/protocols/2026-09-10-CR-2026-020-akteursbezeichnung.md +99 -0
  473. package/.koolie/core/tests/protocols/2026-09-10-CR-2026-021-hook-interpreter.md +138 -0
  474. package/.koolie/core/tests/protocols/2026-09-10-CR-2026-022-artefaktversionen.md +87 -0
  475. package/.koolie/core/tests/protocols/2026-09-10-CR-2026-023-shell-lesesperre.md +135 -0
  476. package/.koolie/core/tests/protocols/2026-09-10-CR-2026-024-clientbindungen.md +98 -0
  477. package/.koolie/core/tests/protocols/2026-09-10-FW-DS-03.md +90 -0
  478. package/.koolie/core/tests/protocols/2026-09-10-FW-KO-01.md +105 -0
  479. package/.koolie/core/tests/protocols/2026-09-10-FW-KO-02.md +123 -0
  480. package/.koolie/core/tests/protocols/2026-09-10-FW-KO-04.md +73 -0
  481. package/.koolie/core/tests/protocols/2026-09-10-FW-RE-02.md +99 -0
  482. package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01-wiederholung.md +108 -0
  483. package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01.md +249 -0
  484. package/.koolie/core/tests/protocols/2026-09-10-FW-ZA-05.md +99 -0
  485. package/.koolie/core/tests/protocols/2026-09-11-AP2-devin-desktop.md +257 -0
  486. package/.koolie/core/tests/protocols/2026-09-11-CR-2026-026-fail-closed.md +113 -0
  487. package/.koolie/core/tests/protocols/2026-09-11-erhebungen-K21-K26.md +243 -0
  488. package/.koolie/core/tests/protocols/2026-09-11-wirkungsnachweise-0.26.0.md +101 -0
  489. package/.koolie/core/tests/protocols/2026-09-12-B01-allowed-tools.md +152 -0
  490. package/.koolie/core/tests/protocols/2026-09-12-B04-B05-gegenpruefung.md +204 -0
  491. package/.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md +268 -0
  492. package/.koolie/core/tests/protocols/2026-09-12-mehrprojekt-arbeitsbereich.md +154 -0
  493. package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.26.1.md +126 -0
  494. package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.27.0.md +114 -0
  495. package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.28.0.md +129 -0
  496. package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.29.0.md +121 -0
  497. package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.30.0.md +112 -0
  498. package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.31.0.md +107 -0
  499. package/.koolie/core/tests/protocols/2026-09-13-B06-gegenpruefung.md +370 -0
  500. package/.koolie/core/tests/protocols/2026-09-13-B07-B09-gegenpruefung.md +211 -0
  501. package/.koolie/core/tests/protocols/2026-09-13-B08-B11-gegenpruefung.md +179 -0
  502. package/.koolie/core/tests/protocols/2026-09-13-erhebung-disallowed-tools.md +147 -0
  503. package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent-tiefe.md +139 -0
  504. package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent.md +214 -0
  505. package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-berechtigungsdatei.md +253 -0
  506. package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-stumme-brueche.md +202 -0
  507. package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-werkzeugabbildung.md +219 -0
  508. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.32.0.md +133 -0
  509. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.33.0.md +169 -0
  510. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.34.0.md +187 -0
  511. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.35.0.md +187 -0
  512. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.36.0.md +137 -0
  513. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.37.0.md +112 -0
  514. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.38.0.md +154 -0
  515. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.39.0.md +188 -0
  516. package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.40.0.md +214 -0
  517. package/.koolie/core/tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md +267 -0
  518. package/.koolie/core/tests/protocols/2026-09-14-erhebung-skillaufruf.md +238 -0
  519. package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-pruefregister.md +156 -0
  520. package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-schlitzdeckung.md +206 -0
  521. package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-skillwahl.md +127 -0
  522. package/.koolie/core/tests/protocols/2026-09-14-migrationslauf-pilot.md +134 -0
  523. package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.41.0.md +175 -0
  524. package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.42.0.md +180 -0
  525. package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.43.0.md +165 -0
  526. package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.44.0.md +130 -0
  527. package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-d11-zaehlregeln.md +311 -0
  528. package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-modulstatus.md +524 -0
  529. package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-nicht-skill-traeger.md +225 -0
  530. package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-restliche-nicht-skill-traeger.md +345 -0
  531. package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-strukturentscheidungen.md +392 -0
  532. package/.koolie/core/tests/protocols/2026-09-15-herrichtung-uebungsrepositorium.md +213 -0
  533. package/.koolie/core/tests/protocols/2026-09-15-migrationslauf-pilot-0.46.0.md +143 -0
  534. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.45.0.md +127 -0
  535. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.46.0.md +193 -0
  536. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.47.0.md +149 -0
  537. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.49.0.md +202 -0
  538. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.50.0.md +183 -0
  539. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.51.0.md +202 -0
  540. package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.52.0.md +168 -0
  541. package/.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md +231 -0
  542. package/.koolie/core/tests/protocols/2026-09-16-wirkungsnachweise-0.53.0.md +350 -0
  543. package/.koolie/core/tests/protocols/2026-09-17-nachtrag-migrationshinweis-0.54.1.md +121 -0
  544. package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-pi-ds.md +523 -0
  545. package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-schranken.md +433 -0
  546. package/.koolie/core/tests/protocols/2026-09-17-wirkungsnachweise-0.54.0.md +159 -0
  547. package/.koolie/core/tests/protocols/2026-09-18-FW-AK-01.md +442 -0
  548. package/.koolie/core/tests/protocols/2026-09-18-FW-KO-05.md +231 -0
  549. package/.koolie/core/tests/protocols/2026-09-18-herrichtung-uebungsrepositorium.md +273 -0
  550. package/.koolie/core/tests/protocols/2026-09-18-nachtrag-preis-umbenennung-0.56.1.md +102 -0
  551. package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-5.md +349 -0
  552. package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-ne-sc.md +430 -0
  553. package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-pi-ds-2.md +499 -0
  554. package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +170 -0
  555. package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-testblaetter.md +184 -0
  556. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.55.0.md +202 -0
  557. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.0.md +135 -0
  558. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.2.md +154 -0
  559. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.0.md +228 -0
  560. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.1.md +262 -0
  561. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.58.0.md +135 -0
  562. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.59.0.md +150 -0
  563. package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.60.0.md +340 -0
  564. package/.koolie/core/tests/protocols/2026-09-19-herrichtung-buendel-4.md +235 -0
  565. package/.koolie/core/tests/protocols/2026-09-19-k77-zurechenbarkeit.md +236 -0
  566. package/.koolie/core/tests/protocols/2026-09-19-pruefapparat-filter.md +50 -0
  567. package/.koolie/core/tests/protocols/2026-09-19-pruefmittelwort-und-buendelschnitt.md +239 -0
  568. package/.koolie/core/tests/protocols/2026-09-19-sechzehnte-praeparation.md +135 -0
  569. package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-1.md +250 -0
  570. package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-2.md +229 -0
  571. package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md +293 -0
  572. package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-2.md +236 -0
  573. package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-3.md +253 -0
  574. package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-4.md +138 -0
  575. package/.koolie/core/tests/protocols/2026-09-20-messapparat-buendel-4.md +433 -0
  576. package/.koolie/core/tests/protocols/2026-09-20-testblaetter-buendel-4.md +321 -0
  577. package/.koolie/core/tests/protocols/2026-09-20-uebergabe-im-release-commit.md +146 -0
  578. package/.koolie/core/tests/protocols/2026-09-20-vorbedingungen-nachlauf-b4.md +259 -0
  579. package/.koolie/core/tests/protocols/2026-09-21-arbeitsplatz-im-kern.md +127 -0
  580. package/.koolie/core/tests/protocols/2026-09-21-nachlauf-buendel-4.md +157 -0
  581. package/.koolie/core/tests/protocols/2026-09-21-vorbedingungen-buendel-5.md +247 -0
  582. package/.koolie/core/tests/protocols/2026-09-21-wiederaufnahme-nachlauf-b4.md +190 -0
  583. package/.koolie/core/tests/protocols/2026-09-22-ap2-rest-devin-desktop.md +614 -0
  584. package/.koolie/core/tests/protocols/2026-09-22-hauptdokument-ap11.md +443 -0
  585. package/.koolie/core/tests/protocols/2026-09-22-herrichtung-buendel-5.md +224 -0
  586. package/.koolie/core/tests/protocols/2026-09-22-messtag-buendel-5.md +327 -0
  587. package/.koolie/core/tests/protocols/2026-09-22-quellenzuordnung-matrixzeilen.md +230 -0
  588. package/.koolie/core/tests/protocols/2026-09-22-sammelzellen-zentraler-katalog.md +354 -0
  589. package/.koolie/core/tests/protocols/2026-09-22-umbenennung-koolie.md +296 -0
  590. package/.koolie/core/tests/protocols/2026-09-22-verify-marker-abschaffen.md +283 -0
  591. package/.koolie/core/tests/protocols/2026-09-22-vortrag-und-name.md +261 -0
  592. package/.koolie/core/tests/protocols/2026-09-22-wirkungsnachweise-0.86.0.md +158 -0
  593. package/.koolie/core/tests/protocols/2026-09-23-archiv-zeilenenden.md +113 -0
  594. package/.koolie/core/tests/protocols/2026-09-23-bau-openai-codex.md +168 -0
  595. package/.koolie/core/tests/protocols/2026-09-23-chronik-und-vorlage.md +224 -0
  596. package/.koolie/core/tests/protocols/2026-09-23-erhebung-openai-codex.md +309 -0
  597. package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0-vorbereitung.md +119 -0
  598. package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0.md +150 -0
  599. package/.koolie/core/tests/protocols/2026-09-23-gegenzeichnung-rollenfrage.md +198 -0
  600. package/.koolie/core/tests/protocols/2026-09-23-reihenfolge-des-hebens.md +220 -0
  601. package/.koolie/core/tests/protocols/2026-09-23-word-fassung-und-blinder-fleck.md +307 -0
  602. package/.koolie/core/tests/protocols/2026-09-24-kopierweg-kern.md +98 -0
  603. package/.koolie/core/tests/protocols/2026-09-24-overlay-werte-einordnung.md +111 -0
  604. package/.koolie/core/tests/protocols/2026-09-24-pfadlisten-nul-getrennt.md +128 -0
  605. package/.koolie/core/tests/protocols/2026-09-24-uebergabe-lokal.md +85 -0
  606. package/.koolie/core/tests/protocols/2026-09-25-code-pack-posten.md +86 -0
  607. package/.koolie/core/tests/protocols/2026-09-25-dokumentationsstandard.md +101 -0
  608. package/.koolie/core/tests/protocols/2026-09-25-installer-je-zielsystem.md +134 -0
  609. package/.koolie/core/tests/protocols/2026-09-25-klasse-b-core-laufzeit.md +126 -0
  610. package/.koolie/core/tests/protocols/2026-09-25-klasse-b-governance.md +133 -0
  611. package/.koolie/core/tests/protocols/2026-09-25-klasse-b-skills.md +91 -0
  612. package/.koolie/core/tests/protocols/2026-09-25-lieferumfang.md +76 -0
  613. package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-dokumente.md +107 -0
  614. package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-general.md +100 -0
  615. package/.koolie/core/tests/protocols/2026-09-25-regel-register-posten.md +87 -0
  616. package/.koolie/core/tests/protocols/2026-09-26-attributionszeile.md +83 -0
  617. package/.koolie/core/tests/protocols/2026-09-26-auffindbarkeit.md +85 -0
  618. package/.koolie/core/tests/protocols/2026-09-26-bau-cursor.md +68 -0
  619. package/.koolie/core/tests/protocols/2026-09-26-bau-kiro.md +75 -0
  620. package/.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md +174 -0
  621. package/.koolie/core/tests/protocols/2026-09-26-regelablage-pfadtoken.md +133 -0
  622. package/.koolie/core/tests/protocols/2026-09-26-skill-anweisungen.md +111 -0
  623. package/.koolie/core/tests/protocols/2026-09-26-testblaetter-modellwechsel.md +106 -0
  624. package/.koolie/core/tests/protocols/2026-09-27-mandat-und-reibung.md +58 -0
  625. package/.koolie/core/tests/protocols/2026-09-28-mcp-anbindung.md +72 -0
  626. package/.koolie/core/tests/protocols/2026-09-29-messapparat.md +75 -0
  627. package/.koolie/core/tests/protocols/2026-09-29-powershell.md +58 -0
  628. package/.koolie/core/tests/protocols/2026-09-29-pruefwerkzeuge.md +64 -0
  629. package/.koolie/core/tests/protocols/2026-09-29-registerpflege.md +228 -0
  630. package/.koolie/core/tests/protocols/2026-09-29-schutzschicht.md +95 -0
  631. package/.koolie/core/tests/protocols/2026-09-30-einsatzarchitektur.md +104 -0
  632. package/.koolie/core/tests/protocols/2026-09-30-modi-ausnahmen.md +77 -0
  633. package/.koolie/core/tests/protocols/2026-09-30-nachlauf-banner.md +85 -0
  634. package/.koolie/core/tests/protocols/2026-09-30-paketquellen.md +65 -0
  635. package/.koolie/core/tests/protocols/2026-09-30-pfadsemantik.md +79 -0
  636. package/.koolie/core/tests/protocols/2026-10-01-auftritt-und-suche.md +58 -0
  637. package/.koolie/core/tests/protocols/2026-10-01-befehl-im-projektverzeichnis.md +47 -0
  638. package/.koolie/core/tests/protocols/2026-10-01-erste-veroeffentlichung.md +60 -0
  639. package/.koolie/core/tests/protocols/2026-10-01-modusbindung-messfragen.md +107 -0
  640. package/.koolie/core/tests/protocols/README.md +14 -0
  641. package/.koolie/core/tests/scripts/hook-check-secrets.py +1307 -0
  642. package/.koolie/core/tests/scripts/hook-overlay-status.py +120 -0
  643. package/.koolie/core/tests/scripts/mermaid_renderer.py +67 -0
  644. package/.koolie/core/tests/scripts/overlay_status.py +130 -0
  645. package/.koolie/core/tests/scripts/probe-pruefungen.py +110 -0
  646. package/.koolie/core/tests/scripts/pruefungen/__init__.py +4 -0
  647. package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +1559 -0
  648. package/.koolie/core/tests/scripts/pruefungen/bestand.py +1433 -0
  649. package/.koolie/core/tests/scripts/pruefungen/dokumente.py +1262 -0
  650. package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +784 -0
  651. package/.koolie/core/tests/scripts/pruefungen/hooks.py +1188 -0
  652. package/.koolie/core/tests/scripts/pruefungen/overlay.py +1251 -0
  653. package/.koolie/core/tests/scripts/pruefungen/packs.py +1314 -0
  654. package/.koolie/core/tests/scripts/pruefungen/register.py +950 -0
  655. package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +1202 -0
  656. package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +957 -0
  657. package/.koolie/core/tests/scripts/sonden/__init__.py +4 -0
  658. package/.koolie/core/tests/scripts/sonden/apparat.py +653 -0
  659. package/.koolie/core/tests/scripts/sonden/teil01_grundbestand_und_installation.py +999 -0
  660. package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +942 -0
  661. package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +1184 -0
  662. package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +1491 -0
  663. package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +1447 -0
  664. package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +739 -0
  665. package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +1014 -0
  666. package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +1325 -0
  667. package/.koolie/core/tests/scripts/sonden/teil09_pruefmittel_81_und_82.py +505 -0
  668. package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +1218 -0
  669. package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +149 -0
  670. package/.koolie/core/tests/scripts/sonden/teil12_pruefungen_106_und_107.py +136 -0
  671. package/.koolie/core/tests/scripts/sonden/teil13_pfad_und_mustersemantik.py +150 -0
  672. package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +204 -0
  673. package/.koolie/core/tests/scripts/sonden/teil15_banner_und_nachlauf.py +193 -0
  674. package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +114 -0
  675. package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +115 -0
  676. package/.koolie/core/tests/scripts/sonden/teil18_modusbindung_m3_m5.py +113 -0
  677. package/.koolie/core/tests/scripts/validate-framework.py +1104 -0
  678. package/.koolie/core/tests/scripts/validate-output.py +296 -0
  679. package/.koolie/core/wirksamkeit.py +430 -0
  680. package/CONTRIBUTING.md +119 -0
  681. package/LICENSE +674 -0
  682. package/QUICKSTART.en.md +135 -0
  683. package/QUICKSTART.md +129 -0
  684. package/README.en.md +108 -0
  685. package/README.md +107 -0
  686. package/install.cmd +44 -0
  687. package/install.command +46 -0
  688. package/package.json +21 -0
  689. package/paketquellen/README.md +41 -0
  690. package/paketquellen/bauen.py +411 -0
  691. package/paketquellen/koolie.cmd +23 -0
  692. package/paketquellen/koolie_befehl.py +82 -0
  693. package/paketquellen/npm/koolie.js +26 -0
@@ -0,0 +1,245 @@
1
+ # Änderungsantrag `CR-2026-056`
2
+
3
+ | Feld | Inhalt |
4
+ |---|---|
5
+ | Titel | Der Schutz-Hook kennt kein Ereignis – er nimmt jede JSON-Struktur an und prüft Felder, die nicht zur Operation gehören |
6
+ | Antragstellende Rolle | `<FRAMEWORK_OWNER>` |
7
+ | Datum | 2026-09-13 |
8
+ | Betroffene Artefakte | `tests/scripts/hook-check-secrets.py` (Umbau in drei Stufen), beide `clients/*/manifest.json` (neues Feld `hook_path_fields`), beide `CLIENT_PACK.md` (neue Zeile **H4**, Berichtigung Abschnitt 5, Summen), `tests/scripts/validate-framework.py` (**Prüfung 32**), `tests/scripts/probe-pruefungen.py`, `framework/core/03-security.md`, `tests/EDGE_CASES.md` |
9
+ | Ebene laut Entscheidungsbaum 6 | **Core** (durchsetzender Mechanismus) und Client Packs |
10
+ | Art | Befund **B06** des unabhängigen Reviews vom 2026-09-12, P2; **gegengeprüft, bestätigt, in jedem Teil größer als berichtet – und um einen Befund der Gegenrichtung erweitert, den der Bericht nicht nennt** |
11
+ | Dringlichkeit | **Paket 6**, erster Eintrag. Der Teil aus Abschnitt 1.4 ist **P1**: Er sperrt das Pack `claude-code` für jeden Schreibzugriff und betrifft den laufenden Piloten |
12
+
13
+ ## 1. Anlass und Problem
14
+
15
+ Die Gegenprüfung liegt vor: `tests/protocols/2026-09-13-B06-gegenpruefung.md`, vier Messreihen –
16
+ 41 synthetische Eingaben, die 20 **aufgezeichneten** Hook-Eingaben beider Packs, Pfadvarianten am
17
+ echten Dateisystem mit `os.path.samefile` als Vorprüfung, und zwei Sitzungen eines realen Clients
18
+ mit Kontrolllauf.
19
+
20
+ ### 1.0 Eine Ursache, zwei entgegengesetzte Symptome
21
+
22
+ Der Kopfkommentar des Hooks nennt sie beim Namen und hält sie für eine Entscheidung:
23
+
24
+ > „Das Skript ist bewusst schema-agnostisch: Es durchsucht alle Zeichenketten der über stdin
25
+ > gelieferten JSON-Struktur.“ (`hook-check-secrets.py:6`)
26
+
27
+ Weil er kein Ereignis prüft, nimmt er jede Struktur an, die JSON ist – **er lässt zu viel durch**.
28
+ Weil er *alle* Zeichenketten durchsucht, prüft er auch Felder, die nicht zur Operation gehören –
29
+ **er blockiert zu viel**. Das Review sieht nur die erste Hälfte.
30
+
31
+ ### 1.1 `--fail-closed` fängt genau einen Fall ab: den Syntaxfehler
32
+
33
+ ```python
34
+ payload = json.loads(raw) if raw.strip() else {} # :233
35
+ ```
36
+
37
+ Eine leere Eingabe wird zu einem leeren Objekt **erklärt**; ein `json.loads`, das nicht wirft, gilt
38
+ als gelesenes Ereignis. Gemessen, alle mit `--fail-closed`: leere Eingabe, nur Weißraum, `[]`,
39
+ `null`, eine Zeichenkette und eine Zahl laufen sämtlich mit **Exit 0** durch. **Das Review nennt
40
+ zwei Formen, es sind sechs.**
41
+
42
+ ### 1.2 Ein unbekannter Werkzeugname überspringt beide Pfadblöcke
43
+
44
+ ```python
45
+ if tool_name in WRITE_TOOLS + EXEC_TOOLS + READ_TOOLS + SEARCH_TOOLS or not tool_name: # :258
46
+ ```
47
+
48
+ Gemessen: `MultiEdit`, `mcp__fs__write_file`, `ReadFileTool`, `Task` und der Wert `42` – jeweils mit
49
+ einem Kernpfad oder `.env` in der Eingabe – laufen mit **Exit 0** durch. Die Secret-Muster greifen
50
+ weiterhin; betroffen ist die **Pfad**prüfung. Der Wert `42` ist eine eigene Feststellung:
51
+ `str(payload.get("tool_name", ""))` macht aus jedem Typ einen Werkzeugnamen.
52
+
53
+ ### 1.3 Eigene Feststellung: Der Rückfall für die unbekannte Operation ist die einzige Stelle ohne Kernschutz
54
+
55
+ Der Kommentar nimmt für sich in Anspruch, was der Code nicht tut:
56
+
57
+ ```python
58
+ # Ohne Werkzeugnamen ist die Art der Operation unbekannt; dann gilt die
59
+ # strengere Liste. …
60
+ schreibend = tool_name in WRITE_TOOLS or not tool_name # :266
61
+ …
62
+ if tool_name in WRITE_TOOLS: # :287 <- das Kernverzeichnis
63
+ ```
64
+
65
+ `schreibend` wählt zwischen zwei Listen; die **strengste** – das Kernverzeichnis als Ganzes – hängt
66
+ an einer dritten Bedingung, und die ist ohne Werkzeugnamen falsch. Gemessen: Ein Objekt ohne
67
+ `tool_name` mit `file_path: leitwerk-core/VERSION` läuft mit **Exit 0** durch, dasselbe mit
68
+ `tool_name: "Write"` blockiert. **Die Stelle, die sich ausdrücklich die strengere nennt, ist die
69
+ einzige, an der der Kern ungeschützt ist.**
70
+
71
+ ### 1.4 Eigene Feststellung, P1: Der Hook blockiert bei `claude-code` **jeden** Schreibzugriff
72
+
73
+ Das Review beschreibt B06 durchgehend als „lässt durch“. Gemessen ist die Gegenrichtung.
74
+
75
+ Die 15 aufgezeichneten `claude-code`-Eingaben führen den Umschlag `cwd`, `effort`,
76
+ `hook_event_name`, `permission_mode`, `prompt_id`, `session_id`, `tool_use_id`, **`transcript_path`**.
77
+ Der Transkriptpfad liegt immer unter `~\.claude\projects\…` und trifft damit
78
+ `(^|[\\/])\.(devin|claude)[\\/]` – ein **Strukturpfad**, und der gilt für schreibende Werkzeuge.
79
+
80
+ Die einzige Schreiboperation im Bestand – auf eine harmlose Datei in einem Wegwerfverzeichnis –
81
+ läuft unverändert durch den Hook mit **Exit 2**. Einvariabel isoliert:
82
+
83
+ | Variante der aufgezeichneten Eingabe | Exit |
84
+ |---|---|
85
+ | unverändert | **2** |
86
+ | ohne `transcript_path` | 0 |
87
+ | `transcript_path` mit `\neutral\` statt `\.claude\` | 0 |
88
+ | ohne `cwd` | **2** |
89
+ | nur `tool_name` + `tool_input` | 0 |
90
+
91
+ **Am Client nachgemessen**, drei Läufe, Aufgabe identisch: mit Regeltexten verweigert der Agent aus
92
+ den Regeln (Modellverhalten); **ohne Regeltexte, nur mit der Hook-Konfiguration, blockiert der Hook
93
+ und die Datei entsteht nicht**; im Kontrolllauf ohne Hook entsteht sie. Der Matcher der erzeugten
94
+ `.claude/settings.json` führt `Edit|Write|NotebookEdit`, das Kommando trägt `--fail-closed`.
95
+
96
+ **Für ein Projekt mit diesem Pack ist damit jedes direkte Schreiben gesperrt, unabhängig vom Ziel.**
97
+ Das Muster steht seit 0.7.0. Unbemerkt blieb es, weil Prüfung 16 den Hook **ohne Umschlag** aufruft,
98
+ der Aufzeichnungs-Hook ein anderer Hook ist, der nichts entscheidet, und auf dem Branch des Piloten
99
+ nichts committet ist.
100
+
101
+ ### 1.5 Eigene Feststellung: `cwd` ist der zweite Kanal derselben Ursache
102
+
103
+ Nur Pflichtfelder, Ziel `/tmp/x.txt`: Exit 0. Dieselbe Eingabe mit `cwd = …\leitwerk-core\tests`:
104
+ **Exit 2**. **Eine Sitzung, die im Kernverzeichnis startet, kann nirgendwohin mehr schreiben.** Es
105
+ ist kein Feld, es ist eine Gattung – eine Ausnahmeliste für `transcript_path` würde beim nächsten
106
+ Client-Feld wieder brechen.
107
+
108
+ ### 1.6 Sieben von neun Musterfamilien sind schreibungssensitiv – und zwei sind es nicht
109
+
110
+ Das Review nennt das Kernverzeichnis. Gezählt: `\.env`, `id_(rsa|ed25519|ecdsa)`,
111
+ `(AGENTS|CLAUDE)\.md`, `\.(devin|claude)/`, `project-overlay/`, `framework/core/` und
112
+ `<CORE_DIR>/` tragen **kein** `re.I`; die Endungsliste und `secrets?/` tragen es. **Das ist der
113
+ Beleg, dass es keine Entscheidung für POSIX-Semantik war, sondern eine Ungleichbehandlung
114
+ innerhalb derselben Datei.**
115
+
116
+ ### 1.7 Fünf bzw. sechs Pfadvarianten treffen dieselbe Datei und werden verschieden entschieden
117
+
118
+ Jede Variante vorab mit `os.path.samefile` belegt. Auf `<CORE_DIR>/VERSION` passieren
119
+ **Großbuchstaben, der 8.3-Kurzname `LEITWE~1`, eine Junction und ein Gerätepfad mit
120
+ Großschreibung**; auf `CLAUDE.md` passieren **Kleinschreibung, ein Punkt am Ende, ein Leerzeichen
121
+ am Ende und `::$DATA`**. **Kurzname, Punkt- und Leerzeichen-Anhang und der Datenstrom-Zusatz
122
+ kommen im Review nicht vor.**
123
+
124
+ Die Gegenprobe hält: `leitwerk-core-alt/x.txt` und `AGENTS.md.bak` werden **nicht** blockiert. Der
125
+ vom Review vorsorglich genannte Präfixfehler liegt **nicht** vor – die Muster verlangen einen
126
+ Trenner.
127
+
128
+ **Nachgemessen, und es entscheidet den Zuschnitt:** `os.path.realpath` führt Großschreibung,
129
+ Kurzname, Junction, Punktsegmente, Punkt- und Leerzeichen-Anhang und `::$DATA` auf die
130
+ Standardschreibweise zurück – auch für ein nicht existierendes Ziel über den existierenden
131
+ Elternpfad. **Nur der Gerätepfad-Präfix `\\?\` überlebt.** Es braucht also keinen Neubau der
132
+ Musterlogik.
133
+
134
+ ### 1.8 Nebenbefund: Abschnitt 5 beider Packs behauptet seit neun Releases fail-open
135
+
136
+ Beim Einfügen der Matrixzeile aufgefallen:
137
+
138
+ | Stelle | Wortlaut | Stand |
139
+ |---|---|---|
140
+ | `devin-desktop/CLIENT_PACK.md` Abschnitt 5 | „**Der Schutz-Hook blockiert nicht.** … läuft bei diesem Pack fail-open … Bis dahin ist H2 eine Absichtserklärung, keine Schranke“ | **falsch seit 0.25.0** |
141
+ | ebenda, Folgeabsatz | „Das Manifest führt `hook_fail_closed: false`“ | **falsch** – es führt `true` |
142
+ | `claude-code/CLIENT_PACK.md` Abschnitt 5 | „Bei `devin-desktop` ist H2 als `[TEXTUELL]` eingestuft … dort läuft das Hook-Skript weiter fail-open“ | **falsch** – H2 steht dort auf `[TECHNISCH]` |
143
+
144
+ Zeile H2 desselben Dokuments sagt seit 0.25.0 das Gegenteil: „Seit 0.25.0 **fail-closed**
145
+ (`hook_fail_closed: true`)“. **Die Zusammenfassung widerspricht ihrer eigenen Tabelle** – dieselbe
146
+ Bauform wie die überzeichneten Summen aus 0.33.0, nur mit umgekehrtem Vorzeichen: Hier
147
+ **unter**zeichnet der Fließtext, was der Mechanismus leistet.
148
+
149
+ ## 2. Vorgeschlagene Änderung
150
+
151
+ Der Hook wird in **drei Stufen** gegliedert, wie das Review es vorschlägt: Ereignis validieren,
152
+ Operation samt Pfaden normalisieren, Regeln auswerten. Die Muster bleiben, was sie sind.
153
+
154
+ 1. **Ereignis.** Ein Ereignis ist ein JSON-**Objekt** mit einem nicht leeren `tool_name` vom Typ
155
+ Zeichenkette und einem `tool_input`, das vorhanden und ein Objekt ist. Alles andere gilt als
156
+ **unprüfbar**: mit `--fail-closed` blockiert es, sonst warnt es auf stderr und läuft durch –
157
+ derselbe Weg, den der Syntaxfehler heute nimmt. **Zusätzliche unbekannte Felder bleiben
158
+ zulässig**, damit eine additive Client-Erweiterung nicht zum Ausfall führt.
159
+ 2. **Operation.** Ein Werkzeugname, der in keiner Verbliste steht, gilt als **unbekannte
160
+ Operation** und wird nach der **strengsten** Liste gemessen – Secret-Pfade, Strukturpfade **und
161
+ das Kernverzeichnis**. Dasselbe gilt für den Fall ohne Werkzeugnamen; damit stimmt der Kommentar
162
+ aus 1.3 zum ersten Mal.
163
+ 3. **Prüfmaterial.** Geprüft wird **`tool_input`**, nicht der Umschlag. `cwd` wird ausschließlich
164
+ als **Auflösungsbasis** verwendet, nie als Prüfmaterial. Die Tokenzerlegung für ausführende
165
+ Werkzeuge bleibt.
166
+ 4. **Pfadidentität.** Die als Pfadfelder deklarierten Werte aus `tool_input` werden gegen `cwd`
167
+ (sonst die Projektwurzel) aufgelöst, `\\?\`-Präfixe zuvor entfernt, dann `os.path.realpath`.
168
+ Die vorhandenen Muster laufen zusätzlich über den aufgelösten Pfad – projektrelativ, wenn er
169
+ innerhalb der Projektwurzel liegt, sonst absolut und nur gegen die Secret-Muster. Ein Pfad, der
170
+ sich nicht auflösen lässt, und ein Gerätepfad im `\\.\`-Namensraum gelten als **unprüfbar**.
171
+ 5. **Groß-/Kleinschreibung.** Alle Pfadmuster laufen mit `re.I`.
172
+ 6. **Die Pfadfelder kommen aus den Manifesten** – neues Feld `hook_path_fields`, über alle Packs
173
+ vereinigt, über einer Basisliste. Dieselbe Bauart wie `hook_tools` (D-28).
174
+ 7. **Prüfung 32** misst die Wirkung: Eingabeschema, unbekannter Werkzeugname, Umschlagfeld,
175
+ Pfadidentität – je Pack, mit Gegenproben.
176
+ 8. **Zeile H4** in beiden Fachmatrizen; Abschnitt 5 beider Packs wird berichtigt; die Summen
177
+ rechnet Prüfung 31 nach.
178
+ 9. **Die Zeitlücke wird benannt**, im Docstring und in H4: Ein Hook prüft vor dem Zugriff; eine
179
+ zwischenzeitlich umgebogene Verknüpfung kann er nicht ausschließen.
180
+
181
+ ## 3. Was dieser Antrag nicht ändert
182
+
183
+ - **Er schließt den Shell-Schreibweg nicht.** Ausführende Werkzeuge werden weiterhin nur an den
184
+ Secret-Pfaden gemessen (D-30); das Kernverzeichnis bleibt für `exec` offen (B04, D-47). **K-32
185
+ bleibt damit offen** – der Selbstanwendungsweg über die Shell wird hier nicht zugemacht. Das war
186
+ die Bedingung, unter der K-32 in Paket 6 steht, und sie ist mit diesem Antrag **nicht** erreicht.
187
+ - **Er baut keine Isolationsschicht.** Ohne sie bleibt die Zeitlücke bestehen; der Antrag benennt
188
+ sie, er beseitigt sie nicht (`CR-2026-047` E5).
189
+ - **Er baut kein Sitzungsobjekt für M4/M5.** Das setzt B06 voraus und **zusätzlich** eine Quelle
190
+ außerhalb der Reichweite des Agenten (`CR-2026-048` E1). Mit diesem Antrag ist die
191
+ Voraussetzung erfüllt, mehr nicht.
192
+ - **Er misst keine POSIX-Plattform.** Junctions sind unter NTFS gemessen; symbolische
193
+ Verknüpfungen unter Linux und macOS sind Erwartung, nicht Messung.
194
+ - **Er ändert die Musterlisten inhaltlich nicht.** Was geschützt ist, bleibt geschützt; geändert
195
+ wird, **woran** gemessen wird.
196
+
197
+ ## 4. Prüffragen
198
+
199
+ - [x] Richtige Ebene: durchsetzender Mechanismus im Kern, Deklaration im Pack.
200
+ - [x] Verschärfungsprinzip: **verschärft an fünf Stellen, lockert an einer** – und die eine ist
201
+ benannt und kompensiert, siehe E3. Verschärft: sechs Eingabeformen, die durchliefen, blocken;
202
+ unbekannte Werkzeuge und der leere Name bekommen den Kernschutz; sieben Musterfamilien werden
203
+ schreibungsunempfindlich; fünf bzw. sechs Pfadvarianten werden erfasst; nicht auflösbare Pfade
204
+ gelten als unprüfbar. Gelockert: das Prüfmaterial schrumpft vom Umschlag auf `tool_input`.
205
+ - [x] Widerspruchsfreiheit: gelesen wurden D-23 (jede Prüfung braucht eine Sonde), D-28
206
+ (Werkzeugnamen aus den Manifesten), D-30 (zwei Schutzziele, zwei Listen), D-31 (der Schalter
207
+ steht im Kommando, nicht in `env`), D-35, D-47 (Zusagen je Zugriffskanal), D-49 (beide
208
+ Kodierungsumgebungen), `governance/PRIORITY_HIERARCHY.md`.
209
+ - [x] Laufzeitfassungen: Die erzeugten Regeln und die Hook-Konfiguration ändern sich **nicht**.
210
+ Der Matcher bleibt, das Kommando bleibt. Geändert wird ausschließlich das Skript, das der
211
+ Kern liefert – und das erreicht ein bestehendes Projekt über `install.py --update`.
212
+ - [x] Belegstatus: **vier Messreihen, davon zwei mit echten Clientdaten und eine am Client selbst,
213
+ mit Kontrolllauf.** Kein Punkt dieses Antrags steht auf Codelektüre allein.
214
+ - [x] Test- und Validierungsbedarf: **Prüfung 32** mit Sonden und Gegenproben je Pack; dazu Sonden
215
+ in `probe-pruefungen.py` für die Prüfung selbst und für ihren Anker.
216
+ - [x] Overlays: unberührt. Kein Overlay-Feld ändert sich.
217
+ - [ ] Dokumentation: `CHANGELOG.md`, Decision Log (D-61, D-62, D-63), Roadmap, beide Packs,
218
+ `tests/EDGE_CASES.md`, `framework/core/03-security.md`.
219
+
220
+ ## 5. Vorlage zur Entscheidung
221
+
222
+ | Nr. | Frage | Auflösung | Preis |
223
+ |---|---|---|---|
224
+ | E1 | Was gilt als Ereignis, und was passiert mit allem anderen? | **Objekt, nicht leerer `tool_name` als Zeichenkette, `tool_input` als vorhandenes Objekt.** Alles andere ist **unprüfbar** und nimmt den Weg des Syntaxfehlers: mit `--fail-closed` blockieren, sonst warnen. Zusätzliche unbekannte Felder bleiben ausdrücklich zulässig | Ein Client, der ein anderes Schema sendet, blockiert bei jedem Werkzeugaufruf statt still durchzulaufen. **Das ist genau, was `--fail-closed` zusagt** – aber es macht aus einem stillen Loch einen sichtbaren Ausfall. Die Meldung muss die Ursache und den Weg nennen: Fundstelle melden, Schema gegen die Clientdokumentation prüfen, Änderungsantrag |
225
+ | E2 | Wie wird ein unbekannter Werkzeugname behandelt: blockieren oder streng messen? | **Streng messen, nicht blockieren.** Er gilt als unbekannte Operation und bekommt die strengste Liste, einschließlich Kernverzeichnis. Blockieren würde den Hook darauf stützen, dass der Client den Matcher einhält – eine **Clientzusage**, und genau die Art unbelegter Annahme, an der AP2-CC-13 acht Releases lang hing (D-31) | Ein künftiges lesendes Werkzeug, das nicht im Manifest steht und einen Strukturpfad des Kerns anfasst, wird blockiert. Der Weg zurück ist ein Manifesteintrag, und die Meldung sagt das. **Der Preis ist gewollt:** Ein Werkzeug, das kein Pack kennt, soll auffallen |
226
+ | E3 | Wird nur `tool_input` geprüft – und damit die Reichweite **verkleinert**? | **Ja, und das ist die einzige Lockerung dieses Antrags.** Ein Pfad, der außerhalb von `tool_input` steht, wird nicht mehr gesehen. Kompensiert durch E1 und E2: Die Form ist ab jetzt Pflicht, und was nicht passt, wird streng gemessen oder blockiert. Der Umschlag trägt in beiden aufgezeichneten Schemata **keine Operationsdaten** – nur Sitzungs- und Ablaufkennungen | **Sie muss im Wirkungsnachweis nachgerechnet werden, nicht behauptet.** Eine Ausnahmeliste für `transcript_path` wäre die kleinere Änderung gewesen und ist verworfen: Es ist kein Feld, es ist eine Gattung (1.5). Bleibt der Umschlag im Prüfmaterial, kommt der Fehler beim nächsten Clientfeld zurück |
227
+ | E4 | Groß-/Kleinschreibung: plattformabhängig oder immer unempfindlich? | **Immer unempfindlich.** Der Hook liegt einmal im Kern und wird von allen Packs auf allen Plattformen geteilt; eine plattformabhängige Entscheidung machte das Ergebnis davon abhängig, wo er läuft, und wäre in einer Umgebung nicht prüfbar. Auf POSIX ist es eine **Verschärfung** – dieselbe Begründung, mit der die Muster schon heute `AGENTS` und `CLAUDE` gemeinsam führen | Ein Projekt auf Linux, das neben `AGENTS.md` eine eigene `agents.md` führt, kann sie nicht mehr schreiben. **Kein Schalter dafür** – ein Schalter wäre ein Hebel, den ein Agent umlegen kann. Der Weg ist der Änderungsantrag, und die Grenze steht in `EDGE_CASES.md` |
228
+ | E5 | Pfadidentität: Musterlogik neu bauen oder die Muster auf den aufgelösten Pfad anwenden? | **Auf den aufgelösten Pfad anwenden.** Gemessen (1.7): `realpath` trägt Kurzname, Junction, Punktsegmente, Punkt- und Leerzeichen-Anhang und `::$DATA`, auch für nicht existierende Ziele über den Elternpfad. Ein Neubau mit `commonpath` gegen aufgelöste Wurzeln löste dasselbe Problem mit mehr Code und einer zweiten Wahrheit über das, was geschützt ist | Der Hook fasst jetzt das Dateisystem an. Begrenzt: nur deklarierte Pfadfelder, für `exec` höchstens die Tokens, die wie Pfade aussehen, gedeckelt. **Jeder Fehlschlag ist `unprüfbar`, kein stilles Durchlassen** – sonst wäre die Auflösung eine neue Lücke statt einer Schranke |
229
+ | E6 | Woher weiß der Hook, welche Felder Pfade tragen? | **Aus den Manifesten**, neues Feld `hook_path_fields`, über alle Packs vereinigt, über einer Basisliste. Dieselbe Bauart und dieselbe Begründung wie `hook_tools` (D-28): Ein zusätzlich erkanntes Feld ist eine Verschärfung | Jedes künftige Pack braucht den Eintrag. Ein Pack, das ihn weglässt, fällt auf die Basisliste zurück – **die Basisliste muss deshalb gut sein**, und Prüfung 32 misst sie je Pack an einer Sonde, nicht am Vergleich zweier Listen |
230
+ | E7 | Wird die Zeitlücke zwischen Prüfung und Zugriff geschlossen? | **Nein, sie wird benannt** – im Docstring und in Zeile H4. Ein Hook kann eine zwischenzeitlich umgebogene Verknüpfung nicht ausschließen; das kann nur die ausführende Dateischicht oder eine Isolation | Eine bewusste, benannte Schuld, verknüpft mit dem Paket-6-Eintrag zur Isolationsschicht (`CR-2026-047` E5). **Eine Zeile, die die Grenze nicht nennt, wäre der Befundtyp dieses Projekts, hier neu erzeugt** |
231
+ | E8 | Bekommt die Fähigkeitsmatrix eine eigene Zeile? | **Ja, H4.** Die Lehre aus B11 und aus dem Suchkanal: Eine Zusage ohne Matrixzeile fällt niemandem auf. H4 trägt je Pack, was das Eingabeschema hergibt – bei `claude-code` gegen eine Installation bestätigt, bei `devin-desktop` gegen die Aufzeichnung | Die Summen ändern sich ein Release nach ihrer Berichtigung. Prüfung 31 rechnet sie nach; das ist kein Aufwand, sondern der Zweck der Prüfung |
232
+ | E9 | Wird der Nebenbefund aus 1.8 mitberichtigt, obwohl er nicht zu B06 gehört? | **Ja.** Drei Aussagen in zwei Packs behaupten seit **neun Releases** fail-open, während dieselben Dokumente in Zeile H2 fail-closed führen. Sie stehen im selben Abschnitt, den dieser Antrag ohnehin anfasst | Der Antrag wächst um eine Sache, die B06 nicht nennt. **Ihn zu vertagen hieße, eine bekannte Falschaussage stehen zu lassen, während man daneben schreibt** – und die Lehre aus 0.33.0 war genau diese: Was beim Anfassen auffällt, wird mitberichtigt und im Protokoll benannt |
233
+ | E10 | Was geschieht mit dem Piloten? | **Er braucht dieses Release, nicht nur `--update` auf 0.33.0.** Er steht auf 0.29.0 mit `claude-code`; das Schreiben ist dort gesperrt, seit die Installation steht. Der Migrationshinweis sagt es ausdrücklich | Die Übergabe an den Nutzer wird länger: `--update` auf 0.34.0, dann die beiden Handgriffe aus 0.30.0/0.32.0. **Dass der Pilot nie geschrieben hat, ist kein Zufall gewesen** – das gehört in den Hinweis, sonst liest es sich wie eine neue Einschränkung |
234
+
235
+ ## 6. Entscheidung
236
+
237
+ | Feld | Inhalt |
238
+ |---|---|
239
+ | Entscheidung | **Angenommen, alle zehn Fragen wie vorgelegt.** E1 Ereignisschema mit `unprüfbar` als drittem Ausgang; E2 unbekannter Werkzeugname wird streng gemessen, nicht blockiert; E3 nur `tool_input`, die Lockerung wird nachgerechnet; E4 immer schreibungsunempfindlich, ohne Schalter; E5 Muster auf den aufgelösten Pfad; E6 Pfadfelder aus den Manifesten; E7 Zeitlücke benannt, nicht geschlossen; E8 Zeile H4; E9 der Nebenbefund wird mitberichtigt; E10 der Pilot bekommt einen ausdrücklichen Hinweis |
240
+ | Datum | 2026-09-13 |
241
+ | Entscheidende Rolle | `<FRAMEWORK_OWNER>` |
242
+ | Decision-Log-Einträge | D-61 (der Hook prüft ein Ereignis, und `unprüfbar` ist ein eigener Ausgang), D-62 (geprüft wird die Operation, nicht der Umschlag), D-63 (Pfadidentität über den aufgelösten Pfad, schreibungsunempfindlich, ohne Schalter) |
243
+ | Auflagen | **Die Lockerung aus E3 ist nachzurechnen, nicht zu behaupten:** Der Wirkungsnachweis führt gegen den Vorstand, welche Fälle neu blocken und welcher Fall neu durchläuft. **Prüfung 32 ruft den Hook mit vollständigem Umschlag auf** – Prüfung 16 tut es nicht, und genau daran ist der P1-Befund vorbeigekommen; das ist die eigentliche Lehre und gehört in den Docstring der Prüfung. **Der Migrationshinweis nennt den Piloten.** **Offen bleiben ausdrücklich:** K-32 (der Shell-Weg wird nicht geschlossen), die Isolationsschicht, das Sitzungsobjekt für M4/M5, das Domain-Profil, und die POSIX-Messung der Verknüpfungen |
244
+ | Ziel-Release | `0.34.0` |
245
+ | Umsetzung | umgesetzt mit `0.34.0` |
@@ -0,0 +1,148 @@
1
+ # Änderungsantrag `CR-2026-057`
2
+
3
+ | Feld | Inhalt |
4
+ |---|---|
5
+ | Titel | `disallowed-tools` ist gemessen – S3 ist zurückgewinnbar, aber nicht in der Form, in der das Framework die Beschränkung heute aufschreibt |
6
+ | Antragstellende Rolle | `<FRAMEWORK_OWNER>` |
7
+ | Datum | 2026-09-13 |
8
+ | Betroffene Artefakte | `clients/claude-code/manifest.json` (Abbildungsfeld, `drop_fields`), `clients/claude-code/CLIENT_PACK.md` (Zeile **S3**, Summen), die zwölf Quellskills unter `framework/skills/` (nur, falls E3 es verlangt), `framework/core/05-working-model.md` (M1), `tests/scripts/validate-framework.py` (neue Prüfung), `tests/scripts/probe-pruefungen.py`, `tests/EDGE_CASES.md` |
9
+ | Ebene laut Entscheidungsbaum 6 | **Client Pack** (Abbildung) und **Core** (die Aussage zu M1) |
10
+ | Art | Offener Punkt aus `CR-2026-050`/D-50 und Eintrag in **Paket 6**; **erhoben am 2026-09-13**, neun Läufe, zwei davon verworfen und als Befund festgehalten |
11
+ | Dringlichkeit | **Paket 6.** Kein P1: Die heutige Zusage ist **zu schwach**, nicht zu stark – S3 steht auf `[NICHT ABBILDBAR]`, und das war nach dem damaligen Belegstand richtig |
12
+
13
+ ## 1. Anlass und Befundlage
14
+
15
+ Die Erhebung liegt vor: `tests/protocols/2026-09-13-erhebung-disallowed-tools.md`.
16
+ Aufbau bewusst **ohne Bypass**: Die Berechtigungsschicht blieb an, und `Write` stand in der
17
+ `allow`-Liste – damit kann eine Verweigerung von `Write` nur aus `disallowed-tools` kommen.
18
+
19
+ ### 1.1 Der Befund: es beschränkt wirklich, und zwar stärker als eine Regel
20
+
21
+ | Lauf | Aufbau | Ergebnis |
22
+ |---|---|---|
23
+ | B | `disallowed-tools: Write, Edit` | **`Write` abgewiesen**, Datei nicht entstanden – **obwohl `Write` in `allow` steht** |
24
+ | C | **Kontrolllauf**, identisch ohne das Feld | **`Write` gelang**, Datei entstanden |
25
+
26
+ Beide Läufe zeigen dieselbe Werkzeugfolge, beginnend mit `Skill | {"skill": "lw-probe-dt"}`;
27
+ nur der Ausgang von `Write` unterscheidet sich. `permission_denials` bestätigt es als zweite,
28
+ vom Antworttext unabhängige Quelle.
29
+
30
+ **Das ist genau das, was `allowed-tools` nach B01 nicht ist.** `disallowed-tools` wägt nicht
31
+ gegen Freigaben ab – es nimmt das Werkzeug aus dem Vorrat, und eine `allow`-Regel holt es nicht
32
+ zurück. **S3 ist damit zurückgewinnbar.**
33
+
34
+ ### 1.2 Grenze 1: Die Schranke gilt nur für den aufrufenden Turn
35
+
36
+ Turn 1 mit Skill: `Write` abgewiesen. Turn 2 derselben Sitzung, ohne erneuten Skill-Aufruf:
37
+ **`Write` gelang.** Die Dokumentation sagt es vorher; gemessen ist es jetzt auch.
38
+
39
+ **Das wirkt in den Kern zurück.** `framework/core/05-working-model.md` stützt den Betriebsmodus
40
+ M1 („nur lesend") unter anderem auf die Skill-Beschränkung. Eine Schranke mit Verfallsdatum am
41
+ Ende des Turns ist **keine Betriebsart**.
42
+
43
+ ### 1.3 Grenze 2: Die Liste ist aufzählend, eine Lücke ist ausnutzbar
44
+
45
+ Mit `disallowed-tools: Write, Edit` schrieb der Skill **über `Bash`**. Mit `Write, Edit, Bash`
46
+ wurde `Bash` abgewiesen. Der exec-Weg ist ausdrückbar – **aber nur, wenn er dasteht.**
47
+
48
+ ### 1.4 Grenze 3, und sie entscheidet den Zuschnitt: Argumentmuster wirken **lautlos gar nicht**
49
+
50
+ `disallowed-tools: Bash(echo verboten:*)` ließ den verbotenen Befehl durchlaufen – **ohne
51
+ Verweigerung, ohne Fehlermeldung**. Ebenso die Schreibweise mit Leerzeichen. Derselbe Skill mit
52
+ `disallowed-tools: Bash` wies **beide** Befehle ab.
53
+
54
+ > **Der wiederkehrende Befundtyp dieses Projekts, in seiner unangenehmsten Form:** Der Eintrag
55
+ > sieht aus wie eine Regel, wird angenommen, meldet nichts – und beschränkt nichts. Wer
56
+ > `Bash(git push:*)` schreibt, hat **gar keine** Schranke, nicht bloß eine gröbere.
57
+
58
+ ### 1.5 Was das Framework heute aufschreibt – in drei Bauformen, nachgezählt
59
+
60
+ Die zwölf Quellskills tragen `permissions` **nicht** einheitlich:
61
+
62
+ | Bauform | Anzahl | Beispiel |
63
+ |---|---|---|
64
+ | nur grobe Verben (`edit`, `exec`) | **7** | `deny: [edit, exec]`; `fw-docs-update` nur `exec` |
65
+ | befehlsgenaue Einträge | **5** | `deny: [Exec(git push), Exec(git reset --hard)]` |
66
+ | dazu ein `allow:`-Block | **5** (dieselben fünf) | `allow: [Exec(git status), Exec(git diff)]` |
67
+
68
+ **Nur die sieben groben lassen sich treu abbilden** – und von den fünf übrigen tragen **zwei** daneben das grobe Verb `edit`, bekommen also eine **teilweise** Schranke; **drei** bekommen gar keine. Diese Aufteilung ist an der **erzeugten Fassung** nachgezählt, nicht an der Quelle (siehe Abschnitt 6, Auflagen). Die fünf befehlsgenauen nicht: Ihr
69
+ Verbotsteil ist nicht ausdrückbar (1.4), und ihr `allow:`-Teil wäre nach B01 ohnehin nur eine
70
+ Vorabfreigabe, keine Zusage. **Sperrt man bei ihnen das ganze Werkzeug, macht man die
71
+ `allow:`-Einträge derselben Skills wirkungslos** – `fw-tests` dürfte dann seinen Testbefehl
72
+ nicht mehr ausführen.
73
+
74
+ ### 1.6 Nebenbefund zur Messmethode, nicht zur Sache
75
+
76
+ Zwei der neun Läufe sind verworfen, beide, weil der **`Skill`-Aufruf** scheiterte und die
77
+ Sitzung die `SKILL.md` ersatzweise als Datei las. Einmal, weil `defaultMode: bypassPermissions`
78
+ in der Projektdatei nicht greift; einmal durch **Eigenverschulden** – der Vertrauenseintrag war
79
+ zu früh entfernt. **Beide Male hat die Sitzung es von sich aus gemeldet; verlassen kann man sich
80
+ darauf nicht.** Der Rekorder-Hook ist der Beleg, und er gehört in jede Sonde dieser Bauart.
81
+
82
+ ## 2. Vorgeschlagene Änderung
83
+
84
+ 1. **Zeile S3 wird `[TECHNISCH]` mit drei benannten Grenzen** – Turnbereich, Aufzählung,
85
+ keine Argumentmuster. Belegstatus `[MESS]` mit Verweis auf das Erhebungsprotokoll.
86
+ 2. **`permissions.deny` bekommt eine Abbildung**, wie `triggers` sie mit
87
+ `model_invocation_field` bekam (D-50): neues Manifestfeld, das die groben Verben auf die
88
+ Werkzeugnamen des Packs abbildet – **aus `hook_tools`**, nicht aus einer zweiten Liste
89
+ (D-28). `edit` → `Edit, Write, NotebookEdit`; `exec` → `Bash`.
90
+ 3. **`permissions` verlässt `drop_fields`**, soweit es abgebildet wird. Der Ersatzsatz aus D-50
91
+ wird berichtigt: Es gibt jetzt einen Ersatz, und er ist **benannt schwächer**, nicht
92
+ abwesend.
93
+ 4. **Befehlsgenaue Einträge werden nicht abgebildet** – siehe E3 – und ihre Nicht-Abbildung
94
+ wird **deklariert statt verschwiegen**, in derselben Bauart wie `hook_tools_absent` (D-47).
95
+ 5. **Eine Prüfung weist die lautlose Musterform ab.** Ein `disallowed-tools`-Eintrag mit
96
+ Klammer ist gemessen wirkungslos; er darf in keiner erzeugten Fassung stehen.
97
+ 6. **M1 wird im Arbeitsmodell an den Belegstand angeglichen** (Turnbereich).
98
+ 7. **Sonden und Gegenproben** für die neue Prüfung und die Abbildung, je Pack.
99
+
100
+ ## 3. Was dieser Antrag nicht ändert
101
+
102
+ - **Er misst `devin-desktop` nicht.** Die Wirkung der Skill-`permissions` bleibt dort
103
+ unerhoben; die Zeile behält ihren VERIFY-Marker.
104
+ - **Er erhebt das Agentenprofil nicht** (`tools`/`disallowedTools`). Weiterhin ungemessen.
105
+ - **Er macht aus S3 keine Betriebsart.** Die Turngrenze bleibt; sie wird benannt, nicht
106
+ geschlossen.
107
+ - **Er berührt den Schutz-Hook nicht.** Die globale Berechtigungsschicht bleibt, was sie ist –
108
+ jetzt allerdings nicht mehr als *Ersatz* für S3, sondern **neben** ihm.
109
+ - **Er entscheidet K-32 nicht** und baut keine Isolationsschicht.
110
+
111
+ ## 4. Prüffragen
112
+
113
+ - [x] Richtige Ebene: Abbildung im Pack, die Aussage zu M1 im Kern.
114
+ - [x] Verschärfungsprinzip: **verschärft.** Zwölf Skills tragen heute *keine* wirksame
115
+ Beschränkung; sieben bekommen eine. Gelockert wird nichts.
116
+ - [x] Widerspruchsfreiheit: gelesen wurden D-23 (jede Prüfung braucht eine Sonde), D-28
117
+ (Werkzeugnamen aus den Manifesten), D-41 (Fähigkeitszusage), D-47 (Absenz wird deklariert),
118
+ D-50 (ein zusagentragendes Feld verschwindet nicht beim Rendern), K-18.
119
+ - [x] Belegstatus: **neun Läufe, davon zwei verworfen und als Befund festgehalten**, mit
120
+ Kontrolllauf, Positivkontrolle und Rekorder-Hook je Lauf.
121
+ - [ ] Test- und Validierungsbedarf: neue Prüfung plus Sonden – Zuschnitt hängt an E3 und E5.
122
+ - [x] Overlays: unberührt.
123
+ - [ ] Dokumentation: `CHANGELOG.md`, Decision Log, Roadmap, Client Pack, `EDGE_CASES.md`.
124
+
125
+ ## 5. Vorlage zur Entscheidung
126
+
127
+ | Nr. | Frage | Vorschlag | Preis |
128
+ |---|---|---|---|
129
+ | **E1** | Wird S3 zurückgewonnen, und auf welche Einstufung? | **`[TECHNISCH]` mit drei benannten Grenzen.** Gemessen ist eine echte Entfernung aus dem Werkzeugvorrat, die sogar eine `allow`-Regel schlägt | Eine Zeile, die die drei Grenzen **nicht** nennt, wäre der Befundtyp dieses Projekts, neu erzeugt. Die Zeile wird lang – **das ist der Preis, und er ist billig** |
130
+ | **E2** | Woher kommen die Werkzeugnamen für `edit` und `exec`? | **Aus `hook_tools` des Manifests** (D-28), nicht aus einer zweiten Liste. `edit` → `Edit, Write, NotebookEdit`; `exec` → `Bash` | Jedes künftige Pack braucht die Zuordnung. Eine zweite Liste wäre eine zweite Wahrheit über dasselbe |
131
+ | **E3** | Was geschieht mit den **fünf** Skills mit befehlsgenauen Verboten? | **Nicht abbilden und es deklarieren.** Die Alternative – das ganze Werkzeug sperren – ist strenger als gemeint und macht die `allow:`-Einträge derselben Skills wirkungslos: `fw-tests` könnte seinen Testbefehl nicht mehr ausführen | **Drei von zwölf Skills bekommen gar keine Schranke je Skill, zwei nur eine teilweise**, und das muss dastehen. Der Gegenvorschlag („lieber zu streng als gar nicht") verwandelt Arbeitsskills in unbrauchbare – deshalb verworfen |
132
+ | **E4** | Wird `permissions.allow` auf `allowed-tools` abgebildet? | **Nein.** Nach B01 ist `allowed-tools` eine Vorabfreigabe, keine Zusage. Eine Abbildung erzeugte ein Feld, das wie eine Zusage aussieht und keine ist | Bequemlichkeit geht verloren: Die fünf Skills fragen bei ihren Testbefehlen weiter nach. **Das ist die ehrliche Seite des Handels** |
133
+ | **E5** | Soll eine Prüfung Argumentmuster in `disallowed-tools` **abweisen**? | **Ja.** Gemessen ist: ein Eintrag mit Klammer wirkt lautlos gar nicht. Eine Prüfung, die ihn durchlässt, lässt eine Schranke durch, die keine ist | Wenn der Hersteller die Form später unterstützt, ist die Prüfung eine Bremse. **Dafür gibt es den Änderungsantrag** – und bis dahin ist das Schweigen gefährlicher |
134
+ | **E6** | Wird M1 im Arbeitsmodell an die Turngrenze angeglichen? | **Ja.** M1 stützt sich auf die Skill-Beschränkung; die gilt nur für den aufrufenden Turn | Der Kern wird angefasst, und M1 liest sich schwächer. **Es ist aber keine Schwächung, sondern eine Berichtigung** – schwächer war es schon vorher, nur stand es nicht da |
135
+ | **E7** | Bleibt der Ersatzsatz aus D-50 stehen? | **Nein, er wird berichtigt.** Er sagt heute „Kein Ersatz je Skill – und das ist die Aussage". Ab jetzt gibt es einen, für sieben von zwölf Skills, mit drei Grenzen | D-50 wird in seinem Kern **bestätigt** (ein Feld verschwindet nicht unbenannt) und in seinem Befund überholt. Der Decision Record muss beides sagen |
136
+ | **E8** | Wird das in **einem** Release umgesetzt oder getrennt? | **Ein Release.** Abbildung, Prüfung, Matrixzeile und M1 gehören zusammen; getrennt entstünde ein Zwischenstand, in dem die Zeile mehr verspricht als die Abbildung leistet | Das Release wird größer als 0.34.0 in der Dokumentation, aber kleiner im Code |
137
+
138
+ ## 6. Entscheidung
139
+
140
+ | Feld | Inhalt |
141
+ |---|---|
142
+ | Entscheidung | **Angenommen, alle acht Fragen wie vorgelegt.** E1 S3 wird `[TECHNISCH]` mit drei benannten Grenzen; E2 die Werkzeugnamen kommen aus `hook_tools`; E3 befehlsgenaue Verbote werden **nicht** abgebildet und ihre Nicht-Abbildung deklariert; E4 `permissions.allow` wird **nicht** auf `allowed-tools` abgebildet; E5 eine Prüfung weist Argumentmuster ab; E6 M1 wird an die Turngrenze angeglichen; E7 der Ersatzsatz aus D-50 wird berichtigt; E8 ein Release |
143
+ | Datum | 2026-09-13 |
144
+ | Entscheidende Rolle | `<FRAMEWORK_OWNER>` |
145
+ | Decision-Log-Einträge | D-64 (S3 ist zurückgewonnen, mit drei Grenzen), D-65 (die Abbildung von `permissions.deny`, und was bewusst unabgebildet bleibt), D-66 (ein Argumentmuster in `disallowed-tools` wird abgewiesen) |
146
+ | Auflagen | **Die Turngrenze gehört in jede der drei Stellen** – Matrixzeile, Arbeitsmodell, Grenzfalltabelle – und nicht nur in eine. **Die fünf nicht abgebildeten Skills werden im Client Pack namentlich genannt**, nicht als Zahl: Eine Zahl ohne Namen ist in diesem Projekt schon dreimal gedriftet. **Und die Auflage hat beim ersten Lauf gegriffen:** Beim Nachzählen an der erzeugten Fassung waren es nicht „fünf ohne Schranke", wie dieser Antrag ursprünglich schrieb, sondern **drei ohne und zwei mit einer teilweisen**. Die Entscheidung E3 ändert das nicht; der Text ist berichtigt. **Die Prüfung misst die erzeugte Fassung, nicht die Quelle** – B01 ist genau daran vorbeigekommen, dass die Quelle mehr sagte als die Installation trug. **Beim Anfassen aufgefallen und mitzuberichten:** `skill_frontmatter.tool_names` bildet `edit` auf `Edit, Write` ab, `hook_tools.write` auf `Edit, Write, NotebookEdit` – **zwei Listen für dieselbe Sache, auseinandergelaufen.** Die neue Abbildung nimmt `hook_tools` (E2); `allowed-tools` bleibt unverändert, und der Unterschied wird im Protokoll benannt statt still geheilt |
147
+ | Ziel-Release | `0.35.0` |
148
+ | Umsetzung | umgesetzt mit `0.35.0` |
@@ -0,0 +1,203 @@
1
+ # Änderungsantrag `CR-2026-058`
2
+
3
+ | Feld | Inhalt |
4
+ |---|---|
5
+ | Titel | Der Unteragent ist erhoben – die Skill-Sperre reicht hinein, A1 steht nicht mehr auf reinem `[DOK]`, und das Startwerkzeug kennt kein Manifest |
6
+ | Antragstellende Rolle | `<FRAMEWORK_OWNER>` |
7
+ | Datum | 2026-09-13 |
8
+ | Betroffene Artefakte | `clients/claude-code/CLIENT_PACK.md` (Zeilen **S3**, **A1**, **H2**), `clients/claude-code/manifest.json` und `clients/devin-desktop/manifest.json` (neues Feld), `clients/_template/CLIENT_PACK.md` und `clients/README.md` (Vorlage), `framework/core/05-working-model.md` (M1 und die Regel zu Hintergrund-Subagenten), `tests/scripts/validate-framework.py` (Prüfung 32 erweitert, Prüfung 34 neu), `tests/scripts/probe-pruefungen.py`, `tests/EDGE_CASES.md`, `clients/README.md` (Befund 6) |
9
+ | Ebene laut Entscheidungsbaum 6 | **Client Pack** (Matrix, Manifest) und **Core** (die Aussage zum Arbeitsmodell) |
10
+ | Art | Offener Punkt aus `CR-2026-057` und Eintrag in **Paket 6**; **erhoben am 2026-09-13**, zwölf Läufe, davon sechs Kontroll- und Entlastungsläufe |
11
+ | Dringlichkeit | **Paket 6.** Kein P1: Alle drei Befunde fallen **zugunsten** der Durchsetzung aus. Der Antrag holt Belege nach und schließt eine Deklarationslücke; er behebt keine Fehlfunktion |
12
+
13
+ ## 1. Anlass und Befundlage
14
+
15
+ Die Erhebung liegt vor: `tests/protocols/2026-09-13-erhebung-unteragent.md`. Aufbau wie bei
16
+ `CR-2026-057` – ohne Regeltexte, ohne Bypass, mit `allow`-Liste und Rekorder-Hook.
17
+
18
+ Drei Fragen an denselben Gegenstand, jede seit Längerem benannt:
19
+
20
+ | Frage | Seit wann offen |
21
+ |---|---|
22
+ | Gilt `disallowed-tools` eines Skills auch für einen Unteragenten, den der Skill startet? | **Dreimal benannt** – im Protokoll zu `CR-2026-057` („für M1 wäre genau das die nächste Frage"), in `docs/ROADMAP.md` und in der Übergabe |
23
+ | Beschränkt das Profilfeld `tools` technisch? | Zeile **A1** sagt es seit **0.7.0** auf `[TECHNISCH]` zu – **auf reinem `[DOK]`-Beleg** |
24
+ | Erfasst der Schutz-Hook die Werkzeugaufrufe eines Unteragenten, und blockiert er sie? | Nie gestellt |
25
+
26
+ ### 1.1 Der harte Marker – warum diese Erhebung überhaupt zuordnen kann
27
+
28
+ Ein Werkzeugaufruf **aus einem Unteragenten** trägt im Umschlag zwei Felder, die der Aufruf
29
+ des Hauptagenten nicht trägt: **`agent_id` und `agent_type`** (Profilname). Jede Zuordnung
30
+ „dieser Aufruf kam aus dem Unteragenten" stützt sich darauf und nicht auf den Bericht des
31
+ Agenten – dieselbe Rolle, die `permission_denials` bei `CR-2026-057` gespielt hat.
32
+
33
+ ### 1.2 Befund 1: Die Skill-Sperre reicht in den Unteragenten
34
+
35
+ | Lauf | Aufbau | Ergebnis |
36
+ |---|---|---|
37
+ | **V-M** | Skill mit `disallowed-tools: Write, Edit` startet das Profil `lw-unter-offen` – **ohne eigenes `tools`-Feld** | `Write` und `Edit` fehlten im Vorrat des Unteragenten; `ToolSearch select:Write` ergab wörtlich „No matching deferred tools found" |
38
+ | **V-K** | **Kontrolllauf:** derselbe Skill **ohne** das Feld | Unteragent rief `Write` auf, Datei entstand |
39
+
40
+ **Der Unteragent ist kein Umgehungsweg.** Die Entfernung gilt für den ganzen Turn, und der
41
+ Unteragent läuft innerhalb dieses Turns. Die Turngrenze aus D-64 bleibt unberührt.
42
+
43
+ **Grenze 2 aus D-64 reicht allerdings mit:** Mit gesperrtem `Write, Edit` schrieb der
44
+ Unteragent über `Bash` (Lauf **V-E**, Kontrolle **V-EK**). Wer `exec` nicht sperrt, hat den
45
+ Unteragenten nicht schmaler gemacht als den Hauptagenten.
46
+
47
+ ### 1.3 Befund 2: Das Profilfeld beschränkt – durch Entfernung, nicht durch Verweigerung
48
+
49
+ | Lauf | Aufbau | Ergebnis |
50
+ |---|---|---|
51
+ | **A1-M** | Profil mit `tools: Read, Grep, Glob` | kein Schreibwerkzeug im Vorrat; **`permission_denials` leer** |
52
+ | **A1-K** | **Kontrolllauf:** dasselbe ohne `tools` | `Write` gelang |
53
+
54
+ Derselbe Mechanismus wie `disallowed-tools`: **Entfernung aus dem Vorrat, keine
55
+ Berechtigungsregel.** Eine `allow`-Regel holt das Werkzeug nicht zurück.
56
+
57
+ **Was A1 zusätzlich behauptet, ist weiterhin nur dokumentiert:** dass ein Profil, dessen
58
+ `tools`-Liste sich zu keinem Werkzeug auflöst, gar nicht erst startet. Nicht gemessen.
59
+
60
+ ### 1.4 Befund 3: Der Schutz-Hook erfasst und blockiert den Unteragenten
61
+
62
+ Der Rekorder allein belegt nur, dass der Hook **aufgerufen** wird – nicht, dass er
63
+ **entscheidet**. Dieselbe Unterscheidung, an der die Roadmap für 0.30.0 einen Nachweis
64
+ vermisst. Deshalb ein Hook mit Exit 2:
65
+
66
+ | Lauf | Aufbau | Ergebnis |
67
+ |---|---|---|
68
+ | **H1** | Sperr-Hook, Matcher `*` | **blockiert**, Datei nicht entstanden |
69
+ | **H2** | **Gegenprobe im selben Aufbau**, anderes Ziel | Hook sieht denselben Aufruf, lässt durch, Datei entstand |
70
+ | **H3** | derselbe Hook, Matcher `Edit\|Write\|NotebookEdit` – **die Form, die `clientmap.py` erzeugt** | **blockiert** |
71
+
72
+ Ohne H3 wäre nur das Sternchen gemessen, und das erzeugt das Framework nirgends.
73
+
74
+ **Die B06-Berichtigung trägt hier zum ersten Mal etwas.** `agent_id` und `agent_type` sind zwei
75
+ Umschlagfelder, die kein aufgezeichnetes Schema kannte. Ein Hook, der wie bis 0.33.0 „alle
76
+ Zeichenketten des Ereignisses" durchsucht, hätte sie mitgeprüft. Seit 0.34.0 wird
77
+ ausschließlich `tool_input` geprüft (D-62) – **eine additive Erweiterung des Clients erreicht
78
+ die Entscheidung nicht mehr.**
79
+
80
+ ### 1.5 Befund 4: Das Startwerkzeug kennt kein Manifest
81
+
82
+ Gemessen ist, dass es **sperrbar** ist: `disallowed-tools: Agent` weist den Start ab (Lauf
83
+ **V-S**), und `disallowed-tools: Task` ebenso (Lauf **V-S2**) – kein stiller Ausfall wie bei
84
+ den Argumentmustern aus D-66.
85
+
86
+ **Aber die Kanäle nennen es verschieden**, in derselben Sitzung, für denselben Aufruf:
87
+
88
+ | Kanal | Name |
89
+ |---|---|
90
+ | Frontmatter `disallowed-tools` | akzeptiert **beide** |
91
+ | Umschlag des Hooks (`tool_name`) | `Agent` |
92
+ | `permission_denials` | **`Task`** |
93
+
94
+ Und in **keiner** Werkzeugliste des Manifests steht es: nicht in `hook_tools`, nicht in
95
+ `permission_tools`, nicht in `agent_frontmatter.tool_names`. **Ein Kanal ohne Deklaration** –
96
+ und genau das hat sich dieses Projekt mit D-47 (`hook_tools_absent`) abgewöhnt.
97
+
98
+ ### 1.6 Befund 5: Prüfung 32 behauptet eine Vollständigkeit, die es nicht mehr gibt
99
+
100
+ Der Kopfkommentar sagt, sie rufe den Hook „mit dem vollständigen Umschlag **beider**
101
+ aufgezeichneter Schemata" auf. Es sind jetzt **drei** aufgezeichnete Formen: die zwei aus den
102
+ AP2-Mitschriften und der Unteragenten-Umschlag mit zwei zusätzlichen Feldern.
103
+
104
+ **Das ist keine Risikobehauptung.** Weder `agent_id` noch `agent_type` trägt heute einen Pfad.
105
+ Der Grund ist ein anderer: Eine Prüfung, die ihre Grundlage benennt, darf sie nicht überholt
106
+ tragen – sonst ist sie die nächste Aussage, die ihren Gegenstand überlebt hat.
107
+
108
+ ### 1.7 Befund 6: Sieben überholte Angaben in Übersichten, die nichts nachrechnet
109
+
110
+ **Beim Nachzählen für Zeile A1 aufgefallen, nicht gesucht.** Prüfung 31 rechnet die
111
+ Zusammenfassung **im Pack** nach – seit 0.33.0, und dort stimmt sie. Daneben stehen dieselben
112
+ Zahlen ein zweites Mal, und **dort rechnet sie niemand**:
113
+
114
+ | Stelle | Steht da | Gezählt |
115
+ |---|---|---|
116
+ | `clients/README.md`, `devin-desktop` | `[TECHNISCH]` **24 von 34** | **20 von 36** |
117
+ | `clients/README.md`, `devin-desktop` | „**8** Zeilen tragen einen VERIFY-Marker" | **9** |
118
+ | `clients/README.md`, `claude-code` | `[TECHNISCH]` **25 von 29** | **22 von 31** |
119
+ | `clients/README.md`, `claude-code` | „die Wirkungsnachweise aus einer Sitzung stehen aus" | überholt – S4 beobachtet am 12.09., S3 gemessen am 13.09. |
120
+ | `claude-code/CLIENT_PACK.md`, Belegstand | „(bei `devin-desktop`: **8 von 34**)" | **9 von 36** |
121
+ | `claude-code/CLIENT_PACK.md`, Belegstand | „beobachtete Durchsetzung … ist für **keine** Zeile belegt" | überholt, dieselben zwei Zeilen |
122
+ | `devin-desktop/CLIENT_PACK.md`, Belegstand | „**8 der 36** Zeilen tragen einen offenen VERIFY-Marker – S3, B3, A1 und X2 unmittelbar" | **9** – **B10 fehlt in der Aufzählung**, es trägt seit 0.33.0 einen Marker |
123
+
124
+ **„25 von 29" ist besonders unangenehm:** Das Pack selbst schreibt einen Absatz darüber, dass
125
+ diese Zahl bis 0.32.0 falsch war und berichtigt wurde. **Die Berichtigung hat die zweite Stelle
126
+ nicht erreicht.**
127
+
128
+ > **Und die Zählung war wieder zu klein.** Der erste Durchgang fand zwei Angaben, der zweite
129
+ > vier, der dritte sieben. Das ist der Befund, den dieses Projekt am häufigsten an sich selbst
130
+ > macht – hier zum sechsten Mal in Folge.
131
+
132
+ ### 1.8 Befund 7, methodisch: Der Gegenstand der Messung wählt seinen Weg selbst
133
+
134
+ In Lauf **V-M** griff der Unteragent von sich aus zu `PowerShell` – einem Werkzeug, das in
135
+ dieser Umgebung ohnehin nicht schreiben kann. Er meldete eine Verweigerung, und der Lauf sah
136
+ aus wie „die Sperre schließt auch den Shell-Weg".
137
+
138
+ **Lauf V-PK entlastet die Sperre:** dieselbe Verweigerung, wörtlich dieselbe Meldung, **ohne
139
+ jeden Skill**. Und Lauf V-E zeigt den `Bash`-Weg offen.
140
+
141
+ > Wer V-M allein ausgewertet hätte, hätte einen Positivbefund ins Protokoll geschrieben, den
142
+ > zwei Läufe desselben Tages widerlegen. **Die Sonde muss das Werkzeug vorschreiben** – sonst
143
+ > misst man die Wahl des Agenten mit, und die ist kein Mechanismus.
144
+
145
+ ## 2. Was heute im Repositorium steht
146
+
147
+ | Stelle | Heutiger Stand | Warum das nicht bleiben kann |
148
+ |---|---|---|
149
+ | Zeile **S3** | drei Grenzen, keine Aussage zur Reichweite | Die naheliegende Frage – „gilt das auch eine Ebene tiefer?" – bleibt unbeantwortet, obwohl sie jetzt beantwortet ist |
150
+ | Zeile **A1** | `[TECHNISCH]`, Beleg `[DOK] docs/en/sub-agents` | Die Bauform, an der `AP2-CC-13` acht Releases hing und B01 gescheitert ist |
151
+ | Zeile **H2** | „Exit-Code 2 blockiert", ohne Reichweite | Dass das auch für einen Unteragenten gilt, war nie gesagt und nie gemessen |
152
+ | `manifest.json` beider Packs | kein Feld für das Startwerkzeug | Ein Kanal, den keine Liste kennt und keine Prüfung erzwingt |
153
+ | Prüfung 32, Kopfkommentar | „beider aufgezeichneter Schemata" | Überholt, siehe 1.6 |
154
+ | `05-working-model.md` | „Hintergrund-Subagenten DÜRFEN NICHT für M3 verwendet werden" | Technisch ist nur das Startwerkzeug **ganz** sperrbar. `run_in_background` ist ein Argument, und Argumentmuster wirken nach D-66 lautlos gar nicht |
155
+
156
+ ## 3. Vorgeschlagene Änderung
157
+
158
+ 1. **Zeile S3** bekommt einen Abschnitt **Reichweite**: Die Sperre gilt auch für einen
159
+ Unteragenten, den der Skill startet – und Grenze 2 reicht mit.
160
+ 2. **Zeile A1** bekommt den Messbeleg; der nicht gemessene Teilsatz bleibt ausdrücklich `[DOK]`.
161
+ 3. **Zeile H2** bekommt die gemessene Reichweite, einschließlich des benannten Matchers.
162
+ 4. **Neues Manifestfeld `agent_start_tools`**, Bauart wie `hook_tools_absent` (D-47): Ein Pack
163
+ nennt die Werkzeugnamen oder erklärt in `agent_start_tools_absent`, warum es keine nennt.
164
+ 5. **Prüfung 34 (neu):** Jedes Pack tut eines von beidem. Ein Pack, das **A1** zusagt, muss
165
+ nennen statt erklären.
166
+ 6. **Prüfung 32** bekommt einen fünften Gegenstand: den Unteragenten-Umschlag.
167
+ 7. **`05-working-model.md`:** M1 nennt den gemessenen Stand; die Regel zu Hintergrund-Subagenten
168
+ sagt, dass sie normativ ist und warum sie es bleiben muss.
169
+ 8. **`EDGE_CASES.md`:** ein Grenzfall „Ein Skill startet einen Unteragenten".
170
+
171
+ ## 4. Auswirkungen
172
+
173
+ - **Keine Einstufung ändert sich.** S3 und A1 bleiben `[TECHNISCH]`, H2 bleibt `[TECHNISCH]`.
174
+ Die Summen der Zusammenfassung bleiben unverändert – Prüfung 31 rechnet sie ohnehin nach.
175
+ - **Zwei Belege wandern von `[DOK]` auf gemessen** (A1 ganz, H2 in der Reichweite).
176
+ - **Jedes künftige Client Pack** muss `agent_start_tools` füllen oder seine Abwesenheit
177
+ erklären. Das ist der Preis von E2 und steht dort.
178
+ - **`devin-desktop` erklärt die Abwesenheit mit dem Grund „unerhoben"** – nicht mit „gibt es
179
+ nicht". Das Pack führt Subagenten als Vorschaufunktion (`QD-14`); gemessen ist dort nichts.
180
+
181
+ ## 5. Vorlage zur Entscheidung
182
+
183
+ | Nr. | Frage | Vorschlag | Preis |
184
+ |---|---|---|---|
185
+ | **E1** | Wie wird die Reichweite in der Matrix untergebracht – als Abschnitt in **S3** oder als eigene Zeile **A2**? | **Als Reichweite in S3.** Es ist dieselbe Zusage, eine Ebene tiefer, und keine zweite | S3 ist schon die längste Zeile der Matrix und wird länger. Der Gegenvorschlag wäre lesbarer – und erzeugte **zwei Stellen für dieselbe Sache**, die auseinanderlaufen können. Genau der Befundtyp dieses Projekts, zuletzt bei `tool_names`/`hook_tools`. **Deshalb verworfen** |
186
+ | **E2** | Was folgt daraus, dass das Startwerkzeug in keiner Werkzeugliste steht? | **Neues Manifestfeld plus Prüfung 34.** Ein Pack nennt es oder erklärt seine Abwesenheit, Bauart wie `hook_tools_absent` (D-47) | Ein weiteres Feld, das jedes künftige Pack füllen muss. Die billigere Alternative – nur eine `_note` – ließe einen Kanal ohne durchgesetzte Deklaration, und das Verschweigen von Abwesenheit ist das, was D-47 abgestellt hat |
187
+ | **E3** | Wird Prüfung 32 um den dritten Umschlag erweitert? | **Ja.** Begründung ist **nicht** ein akuter Fund – beide Felder tragen keinen Pfad –, sondern dass die Prüfung eine Vollständigkeit benennt, die die Messung widerlegt hat | Die Prüfung wird länger für einen Fall, der heute nichts fängt. **Die Begründung gehört so ins Protokoll**, nicht als Risikobehauptung; sonst ist der Nachweis selbst eine Überzeichnung |
188
+ | **E4** | Bleibt die Regel „keine Hintergrund-Subagenten für M3" bestehen, obwohl sie technisch nicht abbildbar ist? | **Ja, und sie sagt es.** Sperrbar ist nur das Startwerkzeug **ganz**; „nur Hintergrund" ist ein Argument, und Argumentmuster wirken nach D-66 lautlos gar nicht | Eine Kernregel bekommt einen Satz, der sie schwächer aussehen lässt. **Sie war es schon** – neu ist nur, dass es dasteht |
189
+ | **E5** | Wird der Teilsatz in A1 („ein Profil ohne auflösbares Werkzeug startet nicht") mitgemessen oder bleibt er `[DOK]`? | **Bleibt `[DOK]`, ausdrücklich.** Er ist nicht gemessen | Die Zeile trägt zwei Belegarten und liest sich unruhiger. Das ist genauer als eine Zeile, die einen Messbeleg über eine nicht gemessene Aussage spannt |
190
+ | **E7** | Was geschieht mit den Zahlen in `clients/README.md`? | **Die `[TECHNISCH]`-Zahl wird von Prüfung 31 mitgerechnet; die VERIFY-Zahl entfällt dort und verweist auf das Pack.** Die erste hat eine eindeutige Grenze und gehört ausgerechnet; die zweite hat sie nur zur Hälfte – die unmittelbaren Marker sind zählbar, die „über den Verweis" mitgezählten sind Ermessen | Die Übersicht verliert eine Angabe und wird an einer Stelle unschärfer. **Der Preis ist richtig herum:** Eine gepflegte Zahl, die niemand nachrechnet, ist in diesem Projekt fünfmal gedriftet. Die Alternative – auch die VERIFY-Zahl erzwingen – müsste eine Ermessensgrenze als Arithmetik ausgeben |
191
+ | **E6** | Ein Release oder getrennt? | **Ein Release, `0.36.0`.** Matrix, Manifest, Prüfungen und Kern gehören zusammen | Getrennt entstünde ein Zwischenstand, in dem die Matrix eine Reichweite zusagt, die keine Prüfung deckt |
192
+
193
+ ## 6. Entscheidung
194
+
195
+ | Feld | Inhalt |
196
+ |---|---|
197
+ | Entscheidung | **Angenommen, alle sechs Fragen wie vorgelegt.** E1 Reichweite in S3, keine zweite Zeile; E2 neues Manifestfeld `agent_start_tools` plus Prüfung 34; E3 Prüfung 32 wird um den Unteragenten-Umschlag erweitert, mit der Begründung aus 1.6 und nicht mit einer Risikobehauptung; E4 die Regel zu Hintergrund-Subagenten bleibt und weist ihre Nichtabbildbarkeit aus; E5 der nicht gemessene Teilsatz in A1 bleibt `[DOK]`; E6 ein Release; E7 die `[TECHNISCH]`-Zahl in `clients/README.md` wird nachgerechnet, die VERIFY-Zahl entfällt dort |
198
+ | Datum | 2026-09-13 |
199
+ | Entscheidende Rolle | `<FRAMEWORK_OWNER>` |
200
+ | Decision-Log-Einträge | D-67 (die Skill-Sperre reicht in den Unteragenten, und Grenze 2 reicht mit), D-68 (A1 ist gemessen; die Beschränkung ist eine Entfernung, keine Verweigerung), D-69 (der Schutz-Hook erfasst und blockiert den Unteragenten, auch mit dem erzeugten Matcher), D-70 (das Startwerkzeug wird deklariert oder seine Abwesenheit erklärt), D-71 (eine Zahl mit eindeutiger Grenze wird überall ausgerechnet, nicht an zweiter Stelle gepflegt) |
201
+ | Auflagen | **Der nicht gemessene Teil bleibt in jeder der drei Zeilen als solcher kenntlich** – A1 (Startabbruch bei leerer Werkzeugliste), H2 (kein Lauf mit dem Schutz-Hook des Frameworks in einer vollständigen Installation), S3 (Hintergrund-Unteragenten und zwei Ebenen tief sind nicht gemessen). **Die Begründung für E3 wird nicht zur Risikobehauptung aufgewertet.** **`devin-desktop` erklärt die Abwesenheit mit „unerhoben", nicht mit „gibt es nicht"** – das Pack führt Subagenten als Vorschaufunktion. **Und der methodische Befund aus 1.7 gehört in die Sondenbeschreibung**, nicht nur ins Protokoll: Eine Sonde, die den Weg offenlässt, misst die Wahl des Agenten mit |
202
+ | Ziel-Release | `0.36.0` |
203
+ | Umsetzung | umgesetzt mit `0.36.0` |