@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,251 @@
1
+ # Client Pack `devin-desktop`
2
+
3
+ | Attribut | Wert |
4
+ |---|---|
5
+ | Modul-ID | `CP-DD` |
6
+ | Ebene | keine – Abbildungsschicht |
7
+ | Version | 0.14.8 |
8
+ | Status | pilot |
9
+ | Owner (Rolle) | `<FRAMEWORK_OWNER>` |
10
+ | Client | Devin Desktop (Devin Local) |
11
+ | Verbindliche Zielversion | `3.9.x`, Agent-CLI `3000.10.x` (D-112). Die Spanne ist der Geltungsbereich dieses Packs; der gemessene Punktwert steht in der Zeile darunter (D-113). **Das ausgelieferte Produkt hat die Spanne verlassen:** Der Changelog weist am 2026-09-16 **3.10.31** aus, die 3.10-Reihe beginnt am 2026-09-10 (`FW-AK-01`, 2026-09-18). Die Spanne bleibt der *geprüfte* Geltungsbereich, nicht der aktuelle Produktstand, und wird ohne Messung gegen 3.10.x nicht gehoben (D-157) |
12
+ | Geprüfte Clientversion | 3.9.19 (Agent-CLI 3000.10.21) – gemessen am 2026-09-16, `.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md` Läufe E1 und E2; **am 2026-09-22 unverändert nachgemessen** und Grundlage der 70 Sitzungsläufe des `AP2`-Restes. Modell aller Läufe: `SWE-1.6 Slow`, Konto `Devin Free` |
13
+ | Stand der Produktbeobachtung | **2026-09-18** (`FW-AK-01`, `tests/protocols/2026-09-18-FW-AK-01.md`). Alle siebzehn Quellen `QD-1` bis `QD-17` und der Produkt-Changelog bis 3.10.31 sind abgeglichen. **Vier Befunde:** die verlassene Zielspanne (oben), drei Quellen, die einen **entfernten** Agenten belegen (`R1`, `R4`), die Unüberschreibbarkeit der Organisationsebene innerhalb der Zielspanne (`M2`, CVE-2026-81376) und die Skillquellen (`S1`, `X2`, `K-64`) |
14
+ | Datum der Prüfung | **2026-09-22** – der Rest von `AP2`: 70 Sitzungsläufe an einer Installation, siebzehn Messbäume, vier Marker aufgelöst (`.koolie/core/tests/protocols/2026-09-22-ap2-rest-devin-desktop.md`, `CR-2026-120`). Zuvor 2026-09-16 – Erhebung der Pfadabbildung; die Belege zur Berechtigungsdatei stammen vom 2026-09-11 und vom 2026-09-14 und liegen in der Zielspanne (D-114) |
15
+
16
+ > **Belegt, soweit gemessen (Stand 0.86.0).** Die Spalte „Einstufung" nennt die **vorgesehene** Durchsetzungstiefe, die Spalte „Beleg" ihren Nachweisstand: `[DOK]` = in der Herstellerdokumentation beschrieben, `[EMPF]` = Empfehlung des Frameworks, `BELEG OFFEN` = noch nicht belegt, mit Grund und Datum in der Zelle – ohne Frist (D-291). Die Zielspanne ist mit D-112 festgelegt, und die Pfadabbildung ist gegen sie erhoben (`.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md`).
17
+ >
18
+ > **`AP2` ist abgeschlossen** (`CR-2026-120`, `tests/protocols/2026-09-22-ap2-rest-devin-desktop.md`): **S3**, **B3**, **B10** und **A1** sind an einer Installation gemessen – S3 und A1 tragen, B10 ist widerlegt, B3 trägt mit benannter Grenze (D-277 bis D-287). Beobachtet sind außerdem H1, H2, R5, R6 und S5. **Genau eine Zeile sagt `BELEG OFFEN`, und dauerhaft – `X2`** (`K-20`, D-292): Was ein Client indexiert und wohin er es gibt, ist von außen nicht zu beobachten.
19
+ >
20
+ > **Wer das Pack einsetzt,** liest zuerst Abschnitt 6 (Installation), die Vorbemerkung des B-Blocks (in welchen Betriebsmodi die Berechtigungsschicht trägt) und Abschnitt 5 (bekannte Abweichungen, darunter die Benutzerkonfiguration, die eine projektseitige Verschärfung aufheben kann).
21
+
22
+ ## 1. Pfadabbildung
23
+
24
+ | Rolle des Artefakts | Pfad bei diesem Client | Belegstatus |
25
+ |---|---|---|
26
+ | Wurzel-Anweisungsdatei | `AGENTS.md` | `[DOK]` |
27
+ | Regeldateien | `.devin/rules/*.md` mit `trigger`-Frontmatter | `[DOK]` |
28
+ | Skills | `.devin/skills/<name>/SKILL.md` | `[DOK]` (`QD-9`, Stand 2026-09-18). **Der Client durchsucht sechs Ablagen je Repositorium, nicht zwei:** `.agents/skills/` (vom Hersteller empfohlen), `.devin/skills/`, `.github/skills/`, `.claude/skills/`, `.cognition/skills/` und `.windsurf/skills/` – *„all six paths are scanned in every repo"*. **Eine davon ist die Ablage des Schwesterpacks.** Für vier der sechs greift die Importsteuerung (`read_config_from`: `cursor`, `windsurf`, `claude` und – dokumentiert, abgerufen am 2026-09-26 – `copilot` für `.github/skills/`), für `.cognition/skills/` ist **kein Schalter dokumentiert**. Seit `1.12.1` steht `windsurf` auf `true` (D-411) – `.windsurf/skills/` ist damit eine Ablage, die lädt; `.github/skills/` lud am 2026-09-26 (3000.11.3) auch **ohne** abschaltenden Schalter nicht, die Wirkung von `copilot: false` ist deshalb nicht gemessen. Das Framework schreibt nur `.devin/skills/`; die übrigen sind Gegenstand der Auskunft nach D-34. `K-12` bleibt offen: Ob der Desktop-Client `.agents/skills/` **tatsächlich** so liest, ist nicht beobachtet |
29
+ | Skills, die das Modell erreicht | `triggers: model` im Frontmatter | **Erhoben am 2026-09-22** (D-288): Der Sitzungsschritt `<available_skills>` führt **drei** der zwölf `fw-*`-Skills – genau die drei mit `triggers: user, model` –, dazu **zwei eingebaute Skills des Clients** (`declarative-repo-setup`, `upload-secrets`, je `source: builtin:…`). Die übrigen neun meldet das Modell als **nicht vorhanden**; sie sind Schrägstrich-Befehle für einen Menschen. Das ist `K-57` für diesen Client, und es ist schärfer als dort: Beim Schwesterpack ist der gesperrte Skill über den Prompt erreichbar. ⚠️ **`devin skills list` auf der Kommandozeile zeigt dagegen alle zwölf** – eine Auflistung, die etwas zeigt, was die Sitzung nicht sieht. Der eingebaute `upload-secrets` hat dieselbe Dateiklasse zum Gegenstand, die `B3` schützt (`K-94`). **Geklärt am 2026-09-30** (D-503): Er lädt über `devin cloud drs secret-create`; die CLI liest die Werte selbst, ein `deny Read` trifft diesen Weg also nicht, und mit `--from-env` steht kein Pfad im Befehl. Seit `1.20.2` sperrt der Schutz-Hook den Befehl, gemessen ohne Regeltext und mit `--permission-mode dangerous`; im Standardmodus lehnte schon die Regelschicht ab (K3, nicht delegierbar) |
30
+ | Startwerkzeug für Unteragenten | `run_subagent` (Argument `profile`) | **Am 2026-09-22 erhoben** (D-284): Die Mitschrift führt es unter `agent.tool_definitions`, und der Client stellt der Sitzung neben `fw-reviewer` zwei eigene Profile bereit (`subagent_explore` lesend, `subagent_general` mit vollem Schreibzugriff). **Die Mitschrift führt die Werkzeugaufrufe des Unteragenten nicht** (D-282) – wer ihn misst, braucht einen Aufzeichnungs-Hook. **Der Schutz-Hook und der `deny`-Korb erfassen ihn** (Lauf `A1-DENY2`) |
31
+ | Subagentenprofile | `.devin/agents/<name>.md` | `[DOK]` |
32
+ | Berechtigungskonfiguration | `.devin/config.json` (erzeugt aus `framework/runtime/permissions.json`) | **In Sitzungen erhoben.** Der Client liest die Datei und weist aus ihrem `deny`-Korb ab – und benennt dabei selbst die Quelle: *„Read access … was denied by a deny rule in the project settings"* (2026-09-14, Läufe P4 und W1; am 2026-09-22 in zwölf Läufen bestätigt). Der `hooks`-Block wird aus derselben Datei ausgeführt, aus einer eigenen Hook-Datei nicht (2026-09-11, `AP2-DD-10`). **Die Körbe `ask` und `allow` sind am 2026-09-22 erhoben, und das Ergebnis ist eine Enthaltung** (D-280): Im **nicht-interaktiven** Betrieb sind sie von der Voreinstellung des Clients **nicht zu unterscheiden** – im Modus `auto` weist der Client jeden Schreibaufruf auch **ohne** Regel ab, im Modus `accept-edits` läuft jeder auch **mit** Regel durch, und `allow: Exec(git status)` verhält sich wie der leere Baum. **Der interaktive Betrieb ist nicht gemessen und wird nicht behauptet** – eine Rückfrage an einen Menschen lässt sich nicht-interaktiv nicht messen. **Der `deny`-Korb dagegen ist zurechenbar**: `Exec(git push)` wird im Regelbaum abgewiesen und im leeren ausgeführt. ⚠️ **`--permission-mode dangerous` hebt den `deny`-Korb auf** (D-281, Vorbemerkung B-Block) |
33
+ | Hook-Konfiguration | `.devin/config.json` unter `hooks` (erzeugt aus `framework/runtime/hooks.json`) | **In einer Sitzung erhoben** (AP2, 3.9.19 / CLI 3000.10.21): Aus `.devin/hooks.v1.json` wird kein Hook ausgeführt, aus `config.json` sofort. Eingabeschema belegt, einschließlich des undokumentierten Feldes `tool_use_id` |
34
+ | MCP-Konfiguration | `.devin/mcp_config.json` (Vorlage: `.devin/mcp_config.json.example`) | **Am Client erhoben** (2026-09-16, Läufe E5 und E6): Der Container heißt `mcpServers`, ein Eintrag trägt `command`, `args` und `transport`. Drei Ablageorte, und **der Standard ist der unversionierte**: `.devin/mcp_config.local.json` (`local`), `.devin/mcp_config.json` (`project`), die Benutzerkonfiguration (`user`). **Gemessen ist allein der `stdio`-Fall**; der Lauf für einen `http`-Server brach ohne Ausgabe ab. 🟢 **Stichprobe des Owners zu `1.18.0`** (2026-09-28, D-468): der Atlassian-Server als `stdio`-Eintrag über `npx mcp-remote <Adresse des offiziellen Remote-Servers>` in `.devin/mcp_config.local.json`, Anmeldung per OAuth im Browser – **trägt**; die Seitenwerkzeuge liefern die Version, anders als bei `claude-code` (D-464). Den Kommentar in ein Ticket verweigerte die Regelschicht (Zweck *lesen*), bevor die Rückfrage auf das Schreibwerkzeug anlaufen konnte. Die git-ignorierte `mcp_config.local.json` las der Client nicht: *„matched by an ignore file … not allowed to read or modify ignored files“* |
35
+ | Projektverzeichnis-Variable in Hooks | `DEVIN_PROJECT_DIR` | **Im Hook-Prozess erhoben** (2026-09-11, fünf Aufzeichnungen, ausgewertet am 2026-09-16 als Lauf E8): gesetzt, und der Wert zeigt auf das Projektverzeichnis |
36
+ | Nutzerlokale Überschreibung | `AGENTS.local.md`, `.devin/config.local.json`, `*.local.md` neben Regeln | `[DOK]` |
37
+
38
+ Legacy: `.windsurf/` wird nicht gepflegt; `.devin/` hat Vorrang `[DOK]`.
39
+
40
+ ## 1a. Semantikabbildung der Berechtigungen und Hooks
41
+
42
+ Die Regelmenge liegt werkzeugneutral im Kern (`.koolie/core/framework/runtime/permissions.json`, `hooks.json`) und wird bei der Installation in die Werkzeuge dieses Clients übersetzt (D-18). Was dabei abgebildet wird, steht maschinenlesbar im `manifest.json`; diese Tabelle ist die menschenlesbare Fassung.
43
+
44
+ | Neutrales Werkzeugverb | Werkzeug bei diesem Client | Anmerkung |
45
+ |---|---|---|
46
+ | `read` | `Read(muster)` | |
47
+ | `search` | – | **zwei Suchwerkzeuge, `grep` und `find_file_by_name`** (erhoben 2026-09-14, D-87). Eine eigene `allow`-Regel entfällt trotzdem: Die Klasse `Read(...)` dieses Clients umfasst die Suche mit – ein `deny Read(**/.env)` weist einen `grep`-Aufruf auf dieselbe Datei ab |
48
+ | `write` | `Write(muster)` | ein Werkzeug für Ändern und Anlegen |
49
+ | `exec` | `Exec(befehl)` | wörtliche Form; die Präfixform der Quelle wird nicht gebraucht |
50
+ | `fetch` | `Fetch(muster)` | |
51
+ | `mcp` | `mcp__*` | ohne Muster |
52
+
53
+ | Weitere Eigenschaft | Wert |
54
+ |---|---|
55
+ | Name ohne Verzeichnisanteil | ohne Wurzelangabe (`.env`) |
56
+ | Hook-Werkzeugnamen | `exec`, `edit`, `write` |
57
+ | Projektverzeichnis im Hook-Befehl | `$DEVIN_PROJECT_DIR` |
58
+
59
+ Die Abbildung ist kein freies Feld: Eine `deny`- oder `ask`-Regel, für die dieser Client kein Werkzeug kennt, lässt die Installation scheitern. Nur bei `allow` darf eine Regel entfallen – dort ist das Weglassen eine Verschärfung.
60
+
61
+ ## 2. Fähigkeitsmatrix
62
+
63
+ **Zur Belegspalte.** Jede `[DOK]`-Zeile nennt die **Quellenkennung** der Liste in Anhang 31.4.1 (`QD-1` bis `QD-17`). Die Kennung ist die verbindliche Form, weil allein sie gegen die Liste gehalten werden kann; ein Seitenpfad darf danebenstehen. **Prüfung 73 setzt es durch.** Eine Zelle, die auf eine andere Zeile verweist (*„wie B3"*), erbt deren Kennung – die Prüfung löst den Verweis auf (D-266). `B4`, `B5`, `B6` und `B8` hängen auf diese Weise an `B3`.
64
+
65
+ **Was der Zusatz `(Zuordnung K-62)` sagt – und was er nicht sagt.** Die Zuordnung ist am 22.09.2026 **aus dem Bestand** gewonnen: aus der Quellenliste und den Protokollen zu AP2 und `FW-AK-01`, **nicht aus einem eigenen Abruf.** Der Recherchestand der Seiten bleibt deshalb der von `FW-AK-01` (18.09.2026) – eine Zuordnung ist keine Aktualitätsaussage (D-156, D-263).
66
+
67
+ ### R – Regelladung
68
+
69
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
70
+ |---|---|---|---|---|
71
+ | R1 | Wurzel-Anweisungsdatei wird ungefragt geladen | `AGENTS.md` wird als always-on-Regel in die Regel-Engine eingespeist | `[TECHNISCH]` | `[DOK]` **`QD-6`** (`cli/extensibility/rules`), Stand 2026-09-18: `QD-6` führt `AGENTS.md` als Regeldatei ohne Bindung an einen Agenten. `QD-5`, die Seite, die diese Zusage wörtlich hergibt, beschreibt das Laden als Einspeisung in den Systemprompt des **Cascade**-Agenten – und der Changelog sagt zu 3.9.19 (2026-09-08): *„Cascade has been removed. Devin Local is now the only agent available in Devin Desktop."* `QD-5` trägt die Zeile deshalb nicht (`FW-AK-01`, D-159) |
72
+ | R2 | Regeldateien mit Ladebedingungen | Frontmatter `trigger`: `always_on`, `model_decision`, `manual`, `agent` | `[TECHNISCH]` | `[DOK]` **`QD-6`** (Zuordnung `K-62`). ⚠️ **Vorbehalt aus AP2** (`AP2-DD-09`, 2026-09-11): Die Seite stellt die Frontmatter-Aktivierungswerte **im Zusammenhang importierter Fremdformate** dar und sagt nicht ausdrücklich, dass `.devin/rules/*.md` dieselben Werte trägt. 🟢 **`K-156` beantwortet mit `1.12.1` (D-411):** Mit `read_config_from.windsurf: false` lädt Devin CLI die Regelablage nicht – mit 3000.11.1 und 3000.11.3, **gegen die Herstellerdokumentation**, die `.devin/rules/` als eigenen Ablageort unabhängig von der Importsteuerung führt. Das Pack setzt `windsurf: true` (Zeile `R6`). Gemessen am 2026-09-26 mit 3000.11.3 an Kennworten je Kanal: `always_on` lädt; `model_decision` erscheint mit seiner Beschreibung unter den verfügbaren Regeln. 🔴 **Eine Regel mit `trigger: glob` lädt nicht** – weder aufgeführt noch nach dem Lesen einer passenden Datei, mit und ohne Anführungszeichen um das Muster, drei Läufe (`K-161`). Die Einstufung gilt damit für `always_on` und `model_decision`, für `glob` steht sie unter diesem Vorbehalt |
73
+ | R3 | Regeln an Dateimuster bindbar | Frontmatter `trigger: glob` mit `globs` – Grundlage der Technology Packs | `[TECHNISCH]` | `[DOK]` **`QD-6`** (Zuordnung `K-62`) |
74
+ | R4 | Bekanntes Zeichenlimit | Wurzel-Anweisung und Regeln mit `always_on` zusammen höchstens 40.000 (verbindlich, D-387); 12.000 je Workspace-Regel, 6.000 global als SOLL-Grenzen – **Vorgabe des Frameworks, keine Produkteigenschaft** | `[TEXTUELL]` | `[EMPF]`. Die Zahlen stammen aus der Cascade-Dokumentation (QD-7); für Devin Local nennt der Hersteller **keine** Grenze. Zweimal unabhängig geprüft am 2026-09-11 gegen Devin Desktop 3.9.19 (`cli/extensibility/rules`, ERH-10); K-19 bleibt offen. **Nachtrag 2026-09-18 (`FW-AK-01`): Die Herkunft der Zahlen ist Altbestand.** Der Changelog sagt zu 3.9.19, Cascade sei **entfernt**; `QD-7` schreibt selbst *„Memories apply to the legacy Cascade agent only"*. Die Zahlen bleiben in Kraft – **als Vorgabe des Frameworks**; ihre Herkunft ist nur keine Aussage über das ausgelieferte Produkt mehr. ⚠️ **Die Herstellerdoku widerspricht sich:** `QD-2` sagt weiter *„The existing Cascade agent remains available through July"*, `QD-5`, `QD-7` und `QD-8` sprechen im Präsens von Cascade |
75
+ | R5 | Die geladenen Regelquellen sind vollständig aufzählbar | `devin rules list` und `devin rules show <name>` führen die Regeln samt Herkunftspfad und Aktivierung; `devin rules paths` nennt die Ablageorte. Die vollständige Auskunft des Frameworks steht in Abschnitt 7 dieses Packs | `[TEXTUELL]` | **Beobachtet – und mit gemessenem Vorbehalt.** Die Kommandos laufen und listen (K-21). Ihre Aufzählung ist aber **nicht deckungsgleich mit dem, was lädt**: Mit `windsurf: false` führt `devin rules list` die abgeschaltete Quelle unverändert auf, obwohl ihr Inhalt nicht mehr im Kontext steht (ERH-02), und `devin rules paths` nennt `~/.claude/skills/` nicht, obwohl 67 von 81 Skills von dort stammen (ERH-03). Die Zusage ist damit **nicht technisch getragen**: Das Register ist eine Auskunft des Clients über seine Konfiguration, kein Abbild des Kontexts. Wer die Wirkung prüfen will, misst den Kontext |
76
+ | R6 | Keine Importe fremder Werkzeugformate | `read_config_from` in der Berechtigungsdatei: `cursor`, `claude`, `copilot`, `opencode` und `zed` auf `false`; **`windsurf` steht seit `1.12.1` auf `true`** (siehe unten), **`agents_standard` bleibt `true`** – das ist bei diesem Client das Format der **eigenen** Wurzel-Anweisungsdatei; es abzuschalten hieße, das Framework abzuschalten. Erzeugt von `clientmap.py` aus dem Manifest (D-37) | `[TEXTUELL]` | **Wirkung gemessen, Durchsetzung widerlegt.** Am 2026-09-11 gemessen: Mit abgeschalteten Fremdformaten verschwinden 67 fremde Skills (69 → 2) und der Inhalt der fremden Regel aus dem Kontext (K-21, K-23). Ebenso gemessen: Die Benutzerkonfiguration hat in **beide** Richtungen Vorrang (K-27, ERH-11) – die Einstellung ist damit ein Standard, den jede Arbeitsstation still aufheben kann, wirksam dort, wo die Benutzerkonfiguration schweigt. Prüfung 22 hält die Abbildung fest, nicht ihre Wirkung. **Am 2026-09-22 ein zweites Mal gemessen, und diesmal an der Menge:** In **sieben** Läufen im Baum **ohne** `config.json` lädt die Sitzung eine Anweisungsdatei aus dem Benutzerprofil als `<rules type="always-on">` – `…\.codeium\windsurf\memories\global_rules.md`; in **sechzig** Läufen mit `read_config_from.windsurf: false` erscheint sie in **keiner** Mitschrift. Sieben gegen sechzig, derselbe Arbeitsplatz, derselbe Tag (D-290). ⚠️ **Der Kanal existiert also und liegt außerhalb jedes Projektverzeichnisses** – die Datei war hier leer; dass sie es bleibt, sagt niemand zu 🔴 **Seit `1.12.1` steht `windsurf` auf `true` – eine Abwägung, kein Versehen (D-411, `K-156`):** Mit `false` lädt der Client die **eigene** Regelablage nicht (3000.11.1 und 3000.11.3, siehe `R2`). Der Preis ist der Kanal aus D-290: Gemessen am 2026-09-26 mit Kennworten je Kanal lädt mit `true` die Anweisungsdatei im Benutzerprofil **und** `.windsurf/rules/` im Projekt; laut Dokumentation dazu Skills und MCP-Server aus Windsurf. `install.py` nennt die Kanäle nach Installation und Hebung, wenn sie belegt sind (`import_channels_report`) – eine Auskunft, keine Schranke. `copilot`, `opencode` und `zed` sind dokumentierte Schlüssel mit Standard `true` (abgerufen am 2026-09-26); das Pack setzt sie auf `false`, ihre Wirkung ist nicht gemessen |
77
+
78
+ **Der HTML-Kommentar einer Regeldatei geht bei diesem Client in den Kontext ein.** Gemessen am
79
+ 2026-09-12 (K-28, `.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`):
80
+ Der Kommentar steht **wörtlich** in dem Regelblock, den der Client selbst bildet – die
81
+ Mitschrift führt ihn samt Kommentarklammern, und die Sitzung gab eine Marke aus dem Kommentar
82
+ zurück, ohne eine Datei zu lesen. **Das ist das Gegenteil des Befunds beim anderen Pack**
83
+ (ERH-01). Wer hier einen Kommentar schreibt, schreibt in den Sitzungskontext.
84
+
85
+ Normative Sätze gehören trotzdem in den Fließtext (D-38) – und zwar gerade deshalb: Was gilt,
86
+ darf nicht davon abhängen, mit welchem Werkzeug gearbeitet wird.
87
+
88
+ ### S – Skills
89
+
90
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
91
+ |---|---|---|---|---|
92
+ | S1 | Versionierte Skills im Repository | `.devin/skills/<name>/SKILL.md` mit Frontmatter | `[TECHNISCH]` | `[DOK]` **`QD-9`, `QD-10`** (Zuordnung `K-62`) – die Skill-Suchpfade nennen beide Seiten |
93
+ | S2 | Gezielter Aufruf | **Zwei Wege, beide erhoben (2026-09-14):** ein Werkzeugaufruf `skill` mit dem Skillnamen im Argument – **und** die Slash-Form `/name`, die die CLI **clientseitig** in den Prompt expandiert, bevor das Modell sie sieht | `[TECHNISCH]` | `[DOK]` **`QD-10`** (Zuordnung `K-62`: Aufruf `/skill-name`). **Der zweite Weg ist kein Werkzeugaufruf** und von einer Werkzeugschranke deshalb nicht erreichbar. Und die Berechtigungsdatei erreicht auch den ersten nicht: `Skill(name)` und `skill(name)` im `deny` laufen beide durch, während `Read(**/.env)` in denselben Läufen abweist (K-34) |
94
+ | S3 | Werkzeugbeschränkung je Skill | Frontmatter `allowed-tools`, `permissions`. **Beide Felder erreichen die installierte Fassung unverändert** – dieses Pack führt sie nicht in `drop_fields`, anders als das andere | `[TECHNISCH]`, **unter der Bedingung aus der Belegspalte** | **Erhoben am 2026-09-22 an einer Installation, und die Zusage trägt** (`tests/protocols/2026-09-22-ap2-rest-devin-desktop.md`, D-287). **Sechs von sechs Läufen mit einem aktiven Skill, der `edit` in beiden Feldern ausschließt, wurden abgewiesen; acht von acht ohne diese Kombination liefen durch**, und die Kontrolle ohne Skillaufruf im **selben** Baum ebenfalls. **Die Bedingung ist der Messwert:** `allowed-tools` **allein** wirkt nicht (vier Läufe), `permissions` **allein** wirkt nicht (zwei Läufe) – **die Einschränkung greift nur, wenn `edit` aus `allowed-tools` fehlt und ein `permissions`-Block dasteht.** Gemessen an vier Bäumen, die sich **nur** im Frontmatter eines Sondenskills unterscheiden, und am ausgelieferten `fw-code-explain`. **Alle dreizehn ausgelieferten Skills führen beide Felder** – die Bedingung ist im Bestand erfüllt. ⚠️ **Zwei Grenzen:** Die Abweisung nennt den **Arbeitsbereich** als Grund, nicht den Skill – wer sie am Wortlaut zurechnet, rechnet sie falsch zu; und **ein Skill, der nur eines der beiden Felder trägt, bekommt keine Einschränkung und keine Meldung** (`K-93`). Der Gegenbefund beim Schwesterpack bleibt davon unberührt (B01, `CR-2026-050`, D-50). 🟢 **Auch für `exec` belegt** (Stichprobe des Owners, 2026-09-28, D-468, `K-187`): Unter `fw-change-analyze` wurden `git status` und `find` mit *„Permission denied for this tool.“* abgewiesen, obwohl die Berechtigungsdatei `Exec(git status)` freigibt – auch diese Meldung nennt den Skill nicht. Ausgelesen aus der Sitzungsdatenbank des Clients (`sessions.db`, Tabelle `tool_call_state`) |
95
+ | S4 | Schreibende Skills nur benutzergetriggert | Frontmatter `triggers` – Framework-Konvention, statisch geprüft durch `.koolie/core/tests/scripts/validate-framework.py` | `[TEXTUELL]` | `[EMPF]`; die Laufzeitwirkung ist Modellverhalten. **Reichweite:** Die Zusage gilt für die Skill-Ablage, die das Framework schreibt. Skills aus Ablagen außerhalb des Repositoriums unterliegen diesen Konventionen nicht; sie sind nach Regel 2.6 der Prioritätshierarchie ebenenlos und dürfen den Handlungsspielraum nur einschränken (`AP2-DD-16`, `CR-2026-032`) |
96
+ | S5 | Die geladenen Skills sind vollständig aufzählbar, samt Herkunft und Aufrufbarkeit | `devin skills list --json` führt je Skill `provider`, `base_dir` und `triggers`; `devin skills paths` nennt die Suchpfade | `[TEXTUELL]` | **Beobachtet – mit demselben Vorbehalt wie R5.** Am 2026-09-11 führte die Liste 81 Skills, davon 67 aus `~\.claude\skills\` mit `[user,model]` (`AP2-DD-16`, K-24). `devin skills paths` nennt diese Ablage jedoch **nicht** (ERH-03): Die Aufzählung der Skills ist vollständig, die der Pfade nicht. Aufzählbarkeit ist zudem keine Kontrolle – die Liste entsteht nur, wenn ein Mensch das Kommando ausführt. **Zweiter Befund am 2026-09-12 (ERH-17):** Der Block `<available_skills>`, den der Client in den Sitzungskontext stellt, **nennt je Skill den vollen Quellpfad** – die Auskunft existiert also, nur nicht in dem Kommando, das sie verspricht. Als Ersatz für die fehlende Pfadangabe von `devin skills paths` steht daneben `install.py --list-skills` (`CR-2026-041` E3), das den Teil aufzählt, für den das Framework einstehen kann. **Am 2026-09-22 ist die Grenze dieser Aufzählung gemessen** (D-288): `devin skills list` führt **alle zwölf** Skills des Frameworks, der Sitzungsschritt `<available_skills>` führt **drei** – die mit `triggers: model` – und dazu **zwei eingebaute Skills des Clients**, die in keiner Auflistung des Projekts stehen. Die Auflistung zeigt etwas, was die Sitzung nicht sieht, und verschweigt etwas, was sie sieht. **Wer die Skillmenge einer Sitzung wissen will, liest die Mitschrift, nicht die Kommandozeile** |
97
+
98
+ ### B – Berechtigungen
99
+
100
+ > **`[TECHNISCH]` heißt in diesem Block:** Die Engine setzt die Regel durch, **solange der Betriebsmodus die Berechtigungsprüfung nicht abschaltet** (D-35). 🔴 **`--permission-mode dangerous` hebt den gesamten `deny`-Korb auf** (D-281, gemessen am 2026-09-22): `Read(.env)` wurde gelesen, `Exec(git push)` ausgeführt – beide stehen unter `_core_rules_integrity.deny_must_contain`, also in der Liste, die das Projekt nicht entfernen darf. Sie sind nicht entfernt, sondern von außen abgeschaltet worden, ohne die Datei anzufassen. **Alle Einstufungen `[TECHNISCH]` dieses Blocks gelten deshalb für die Betriebsmodi `auto`, `accept-edits` und `smart`** – gemessen sind `auto`, `accept-edits`, `smart` und `dangerous`. **Im Modus `dangerous` trägt die zweite Linie:** Der Schutz-Hook hat denselben Lesezugriff blockiert, den die Berechtigungsschicht durchließ (Lauf `H-D`, Baum ohne Berechtigungsregeln; zuvor beobachtet am 2026-09-11 im Modus `Bypass`, `AP2-DD-12`). Erste und zweite Linie fallen unter verschiedenen Bedingungen – das ist die empirische Rechtfertigung des Hooks. ⚠️ Diesen Satz setzt keine Prüfung durch (dieselbe Bauform wie `K-41`).
101
+ >
102
+ > **Und nur für eine Sitzung, die im Verzeichnis der Installation startet** (D-408, gemessen am 2026-09-26 mit Clientversion 3000.11.1, `tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`). Startet die Sitzung in einem Unterverzeichnis mit eigenem git-Repositorium, lädt der Client **weder die Wurzel-Anweisung der Elternebene noch deren Berechtigungsdatei und Hooks**: Ein Kennwort aus der Wurzel-Anweisung kannte die Sitzung nicht, ein aufzeichnender Hook lief nicht, und eine durch `Write(**/*.lock)` gesperrte Datei wurde im Modus `accept-edits` angelegt. In der Wurzel lief der Hook und blockierte den Lesezugriff auf `.env`. ⚠️ **Ein Kontrolllauf für genau diese `deny`-Regel in der Wurzel fehlt:** Das Modell hat den Schreibaufruf dort nicht abgesetzt, weil die Statusmeldung das Overlay als nicht aktiv auswies. **Eine eigene Installation im Unterverzeichnis trägt** – ihr Schutz-Hook blockierte, und nur ihre Wurzel-Anweisung lädt. **Nichts meldet einen falschen Startort** (`K-159`).
103
+
104
+ | ID | Zusage des Frameworks | Kern | Mechanismus beim Client | Einstufung | Beleg |
105
+ |---|---|---|---|---|---|
106
+ | B1 | Berechtigungen versioniert im Repository | ja | `.devin/config.json` | `[TECHNISCH]` | `[DOK]` **`QD-12`** (Zuordnung `K-62`) |
107
+ | B2 | Verweigern vor Rückfragen vor Erlauben | ja | Zusammenführung über Ebenen | `[TECHNISCH]` | `[DOK]` **`QD-11`** (Zuordnung `K-62`) |
108
+ | B3 | Secret-Dateien per Pfadmuster lesegeschützt | ja | Verweigerungsregeln auf `.env`, `**/*.pem`, `**/secrets/**` und weitere. **Je Kanal:** direktes Lesen **wirkt** (Regel und Hook); Shell **wirkt** über den Schutz-Hook; **Suche wirkt über beide Schichten** (D-87) – ohne die Suchklasse im Hook-Matcher kam in einer Umgebung mit nur diesem Hook ein Secret über `grep` wörtlich heraus (gemessen 2026-09-14, `tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md`, Läufe H1 und H2; wie ausgeliefert trug die Berechtigungsschicht, Läufe P4 und W1); **Notebook-Lesen wirkt nachweislich** (2026-09-22) – die Klasse `Read(…)` dieses Clients umfasst auch `notebook_read` (D-278, Lauf `KA-NB-P`), obwohl das Manifest es nicht nennt; **Notebook-Schreiben und Unterprozess nicht nachgewiesen**. Im untersagten Betriebsmodus greift die Regel nicht und allein der Hook trägt (`AP2-DD-12`, D-35; am 2026-09-22 für `--permission-mode dangerous` nachgemessen, Läufe `KA-D-P3` und `H-D`) | `[TECHNISCH]` für Lesen, Suche, Notebook-Lesen und Shell; `[TEXTUELL]` für den Unterprozess | Mechanismus `[DOK]` **`QD-11`** (Zuordnung `K-62`). **Muster-Semantik erhoben am 2026-09-22 in neun Läufen** (D-277): `**/` trifft **null** Verzeichnisse (`server.pem` auf Wurzelebene fällt unter `Read(**/*.pem)`) **und mehrere** (`unter/tief/gold.pem`); ein Präfixmuster ohne `**/` wirkt (`Read(deploy/**)`). 🔴 **Grenze, gemessen: Die Muster unterscheiden Groß- und Kleinschreibung.** `Read(**/*secret*)` weist `klein/notiz.secret` ab und lässt `UNTEN/Notiz.SECRET` durch – zweimal gefahren –, während NTFS beide Schreibweisen als **dieselbe Datei** führt. **Der Schutz-Hook tut das Gegenteil** (Zeile `H4`), **und seine Semantik gilt** (`K-92`, D-492): Die Berechtigungsschicht gehört dem Client und lässt sich nicht angleichen; für das direkte Lesen trägt deshalb der Hook die Zusage in jeder Schreibweise, die Regel nur in der des Musters. Beim Pack `claude-code` unterscheidet die Berechtigungsschicht nicht (gemessen am 2026-09-30). **Reichweite je Kanal**: Der Befund B04 ist am Schutz-Hook gemessen (`tests/protocols/2026-09-12-B04-B05-gegenpruefung.md`); der Hook ist bei beiden Packs derselbe, die Berechtigungsschicht nicht |
109
+ | B4 | Framework- und Overlay-Artefakte schreibgeschützt | ja | Verweigerungsregeln auf `AGENTS.md`, `.devin/` und das **gesamte** Kernverzeichnis (`.koolie/core/**`, `CR-2026-012`). **Das Overlay sperrt seit `1.17.0` allein der Schutz-Hook** (D-448); die Berechtigungsdatei führt es nicht mehr – nachgezählt an einer Installation am 2026-09-29 (D-468). **Je Kanal:** direktes Schreiben **wirkt**; **Shell und Unterprozess wirken nicht** – die Berechtigungsdatei führt für `exec` ausschließlich Befehlsverbote und keine Pfadregel, und der Schutz-Hook prüft das Kernverzeichnis nur bei schreibenden Werkzeugen. Was den Shell-Schreibweg aufhält, ist die Regelschicht | `[TECHNISCH]` für das direkte Schreiben; **`[TEXTUELL]` für Shell und Unterprozess** | wie B3. **Reichweite je Kanal**: Der Befund B04 ist am Schutz-Hook gemessen (`tests/protocols/2026-09-12-B04-B05-gegenpruefung.md`); der Hook ist bei beiden Packs derselbe, die Berechtigungsschicht nicht (Läufe B04-1 bis B04-3) |
110
+ | B5 | CI-, Quality-Gate- und Lockdateien schreibgeschützt | ja | Verweigerungsregeln auf Lockdateien und die Overlay-Platzhalterpfade. **Je Kanal wie B4:** direktes Schreiben wirkt, Shell und Unterprozess nicht | `[TECHNISCH]` für das direkte Schreiben; **`[TEXTUELL]` für Shell und Unterprozess** | wie B4 |
111
+ | B6 | Befehle per Muster verweigerbar | ja | Verweigerungsregeln auf Push-, Merge-, Lösch- und Rechteausweitungsbefehle | `[TECHNISCH]` | wie B3 |
112
+ | B7 | Schreiboperationen fragen zurück | – | Rückfrageregel auf alle Schreiboperationen | `[TECHNISCH]` | `[DOK]` **`QD-11`** (Zuordnung `K-62`) |
113
+ | B8 | Netzwerkzugriff standardmäßig unterbunden | – | Verweigerungsregeln auf das Abrufwerkzeug sowie auf die Befehle `curl`, `wget`, `ssh` und `scp`. **Je Kanal:** das Abrufwerkzeug **wirkt**; der Shell-Kanal **nur für diese vier Programme** – jedes andere netzfähige Programm ist nicht erfasst, und die Liste wird bewusst nicht verlängert | `[TECHNISCH]` für das Abrufwerkzeug; **`[TEXTUELL]` für den Shell-Kanal** | wie B3. **Reichweite je Kanal**: Der Befund B04 ist am Schutz-Hook gemessen (`tests/protocols/2026-09-12-B04-B05-gegenpruefung.md`); der Hook ist bei beiden Packs derselbe, die Berechtigungsschicht nicht (Lauf B04-6) |
114
+ | B9 | Nutzerlokale Konfiguration kann nur verschärfen | – | `.devin/config.local.json` und die Benutzerkonfiguration `%APPDATA%\devin\config.json` – **Framework-Regel, keine Produkteigenschaft** | `[TEXTUELL]` | `[EMPF]`. **Der Client verhindert eine Lockerung nicht.** Gemessen am 2026-09-11 in beiden Richtungen (K-27, ERH-11): Der Wert der Benutzerkonfiguration setzt sich gegen den projektseitigen durch – auch dann, wenn der projektseitige der strengere ist. Eine projektseitige Verschärfung ist damit ein Standard, den jede Arbeitsstation still aufheben kann, wirksam dort, wo die Benutzerkonfiguration schweigt (der Normalfall). Bei `claude-code` ist die Lage anders, gemessen am 2026-09-12 (`tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md`, Abschnitt 2.3): Dort setzt sich eine Verweigerung von jeder Ebene durch – die Benutzerkonfiguration kann verschärfen, nicht lockern, und auch ein nutzerglobales `defaultMode: bypassPermissions` blieb wirkungslos. **Dieselbe Frage, zwei Clients, entgegengesetzte Antworten** |
115
+ | B10 | Externer Abruf auf freigegebene Domains beschränkbar | – | **Erhoben am 2026-09-22: Die Berechtigungsdatei erreicht den Abrufkanal dieses Clients in keiner Richtung** (D-279). **Das Abrufwerkzeug heißt `webfetch`; `Fetch` ist kein Werkzeugname dieses Clients** – die Mitschrift führt die 25 Werkzeuge unter `agent.tool_definitions`. Acht Läufe über sechs Bäume, drei Schreibweisen und drei Betriebsmodi: `deny: Fetch(*)`, kein Korb, `allow: Fetch(*)`, `allow: Fetch(example.com)` und **`allow: webfetch`** führen zum selben Ausgang wie der leere Korb – der Aufruf scheitert am **Betriebsmodus**, und der Client nennt in keinem Lauf eine Regel als Quelle. Damit ist die Frage nach der Domain-Angabe beantwortet, ohne gestellt zu werden: Ein Argument kann nicht ausgewertet werden, wenn schon der Werkzeugname nicht trifft. Die Regel `Fetch(*)` bleibt in der werkzeugneutralen Regelmenge des Kerns und ist bei diesem Client **mechanisch unwirksam** – dieselbe Bauform wie `AP2-CC-02`, nur dass dieser Client sie beim Sitzungsstart nicht einmal meldet. **Ersatz: keiner durch das Framework, und das ist eine Aussage und kein Rest.** Der Kern sagt die Beschränkung nicht zu (B11, D-59); was den Kanal bei diesem Client steuert, ist allein der **Betriebsmodus** – `auto`, `accept-edits` und `smart` weisen jeden Abruf ab, `dangerous` lässt jeden durch. **Der organisatorische Ersatz** ist die Freigabezeile des Overlays, und sie hat nach D-65 keine technische Seite | `[NICHT ABBILDBAR]` | **gemessen**, `tests/protocols/2026-09-22-ap2-rest-devin-desktop.md` Abschnitt 6. Der Kern sagt diese Beschränkung nicht zu (B11, D-59); die Zeile hält fest, warum sie es auch nicht könnte |
116
+
117
+ ### H – Hooks
118
+
119
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
120
+ |---|---|---|---|---|
121
+ | H1 | Prüfung vor Werkzeugausführung | `hooks.PreToolUse` in `.devin/config.json`; Matcher auf lesende, schreibende und ausführende Werkzeuge | `[TECHNISCH]` | **beobachtet** (AP2, `tests/protocols/2026-09-11-AP2-devin-desktop.md`). Die Hooks stehen in der Berechtigungsdatei, weil der Client eine eigene Hook-Datei nicht liest (D-32) |
122
+ | H2 | Prüfung kann **blockieren** | Exit-Code 2 des Hook-Befehls bricht die Operation ab. **Fail-closed** (`hook_fail_closed: true`): Das Eingabeschema ist gegen eine Installation belegt, damit ist die Bedingung aus D-31 erfüllt | `[TECHNISCH]` | **beobachtet**: Ein Lesezugriff auf eine Secret-Datei wurde blockiert – in einer Umgebung ohne Regeltexte und bei ausgeschalteter Berechtigungsschranke, dort kann nichts als Anweisung gewirkt haben |
123
+ | H3 | Statusmeldung beim Sitzungsstart | `SessionStart` mit `hook-overlay-status.py` in `.devin/config.json` | `[TECHNISCH]` | `[DOK]` **`QD-13`** Mechanismus (Zuordnung `K-62`); **die Meldung selbst ist nicht beobachtet**. Der Agent nannte den Overlay-Status zwar, konnte ihn aber aus den Regeltexten haben (AP2-DD-10) |
124
+ | H4 | Eingabeschema und Pfadidentität des Schutz-Hooks | Wie beim Pack `claude-code`: Ereignisprüfung, **unprüfbar** als eigener Ausgang (blockiert, weil dieses Pack `hook_fail_closed: true` führt), Prüfung der Operation statt des Umschlags, Pfadidentität über den aufgelösten Pfad, alle Pfadmuster ohne Rücksicht auf Groß-/Kleinschreibung. Eine Angabe `/c/…` löst der Hook unter Windows in beiden Lesarten auf – dieser Client liest sie als `C:\c\…` (D-285), eine MSYS-Shell als `C:\…` (D-491, `K-96`). **Grenze:** Ein Hook prüft **vor** dem Zugriff; eine zwischenzeitlich umgebogene Verknüpfung kann er nicht ausschließen (`CR-2026-047` E5) | `[TECHNISCH]`, mit benannter Zeitlücke | **Gemessen am 2026-09-13** (`tests/protocols/2026-09-13-B06-gegenpruefung.md`, Befund **B06**): Die fünf Hook-Aufzeichnungen dieses Packs führen `hook_event_name`, `prompt_id`, `session_id`, `tool_input`, `tool_name`, `tool_use_id` – **kein** `transcript_path` und **kein** `cwd`. Der Fehlblockade-Befund des anderen Packs tritt hier deshalb nicht auf; **das ist eine Eigenschaft dieses Schemas, keine des Hooks** |
125
+
126
+ ### A – Agentenprofile
127
+
128
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
129
+ |---|---|---|---|---|
130
+ | A1 | Rein lesendes Reviewprofil | `.devin/agents/fw-reviewer.md` | `[TECHNISCH]` | **Profilwirkung erhoben am 2026-09-22 und belegt** (D-284, `tests/protocols/2026-09-22-ap2-rest-devin-desktop.md` Abschnitt 7): Das `allowed-tools` eines Subagentenprofils **bestimmt den Werkzeugbestand des Unteragenten.** Das Vollzugriffsprofil des Clients ruft `exec` und `write` auf; eine synthetische Sonde mit `read, grep, glob` und neutralem Rollentext ruft **kein** Werkzeug auf, und `fw-reviewer` verhält sich wie die Sonde. **Das Profil steht in der Sitzung**, mit seiner eigenen Beschreibung und vor den beiden eingebauten Profilen des Clients. **Der Beleg kommt nicht aus der Mitschrift:** `--export` führt den Unteragenten nicht (D-282) – gemessen über einen Aufzeichnungs-Hook mit Positivkontrolle. **Grenze:** Belegt ist der **Werkzeugbestand**, nicht die Reichweite je Werkzeug. Mechanismus `[DOK]` **`QD-14`** (Zuordnung `K-62`); Startwerkzeug `run_subagent`, erhoben am selben Tag |
131
+ | A2 | Rein lesendes Analyseprofil für Modus M1 | Subagent-Profil `subagent_explore` | `[TECHNISCH]` | `[DOK]` **`QD-14`** (Zuordnung `K-62`: eingebaute Profile); übernommen mit `CR-2026-025` |
132
+
133
+ ### M – Modi und Sitzungsfreigaben
134
+
135
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
136
+ |---|---|---|---|---|
137
+ | M1 | Standardmodus fragt bei Schreiben und Befehlen zurück | Modus `Normal` (CLI: `auto`) | `[TECHNISCH]` | `[DOK]` (QD-11); die CLI-Namen abgeglichen am 2026-09-11 gegen 3.9.19 (ERH-08) |
138
+ | M2 | Modus ohne Rückfragen ausschließbar | `Bypass` (CLI: `dangerous`, auch über `DEVIN_PERMISSION_MODE`) ist per D-05 untersagt. **Eine Sperre des Modus selbst ist bei diesem Client nicht dokumentiert; was es gibt, ist die Begrenzung seiner Wirkung** durch die Terminal Permissions der Organisationsebene, die laut Team-Dokumentation den höchsten Vorrang haben und von lokalen wie projektseitigen Konfigurationen nicht überschrieben werden – sie greifen also auch bei gewähltem Bypass | `[TEXTUELL]` | `[DOK]` für die Wirkungsbegrenzung (QD-16); **nicht beobachtet** – ohne Team-Plan mit Admin-Kontrollen nicht beobachtbar (K-05). Abgeglichen am 2026-09-11 gegen 3.9.19. Bei `claude-code` ist die Modus-Sperre selbst dokumentiert und belegt (AP2-CC-05) – die Packs unterscheiden sich hier. 🔴 **Nachtrag 2026-09-18 (`FW-AK-01`), und er trifft die tragende Hälfte dieser Zeile:** Die Wirkungsbegrenzung steht und fällt damit, dass die Organisationsebene **unüberschreibbar** ist – `QD-12` sagt das unverändert (*„Organization-level (enterprise) settings can **never** be overridden by project or user config"*). **In der verbindlichen Zielspanne dieses Packs galt es nicht.** Der Changelog weist zu 3.10.31 (2026-09-16) aus: *„Restricted Mode blocks restricted workspace settings written in nested object form, not just the dotted form (CVE-2026-81376)."* Bis einschließlich 3.10.27 wurde dieselbe eingeschränkte Einstellung also **je nach Schreibweise** durchgesetzt oder nicht – und `QD-12` verwendet in seinen Beispielen die verschachtelte Form und nennt den Restricted Mode mit keinem Wort. **Die Zielspanne `3.9.x` liegt vollständig vor der Behebung.** Das ist die Bauform von D-150 im Produkt: dieselbe Regel in zwei Ausdrucksformen, durchgesetzt nur in einer. Das Framework hat die eigene Entsprechung mit Prüfung 54 geschlossen (D-155) |
139
+ | M3 | Freigabe auf die Sitzung begrenzbar | Sitzungsfreigaben „einmalig" und „für die Sitzung" | `[TECHNISCH]` | `[DOK]` **`QD-11`** (Zuordnung `K-62`: Sitzungs-Grant-Stufen). Dieselbe Zusage beim Schwesterpack ist **nicht** zugeordnet – dort führt keine der sechs Seiten die Grant-Stufen (`K-62`) |
140
+ | M4 | Eigener Planungsmodus für Modus M2 | Plan-Modus mit persistenter Plan-Datei unter `~/.devin/plans/plan-<session>.md`; die Datei liegt außerhalb des Repositorys | `[TECHNISCH]` | `[DOK]` **`QD-3`, `QD-4`** (Zuordnung `K-62`: der Modus aus `QD-3`, die persistente Plan-Datei aus `QD-4`); übernommen mit `CR-2026-025` |
141
+ | M5 | Eigener Nur-Lese-Modus für Modus M1 | Plan-Modus („read-only research“) | `[TECHNISCH]` | `[DOK]` **`QD-3`** (Zuordnung `K-62`); übernommen mit `CR-2026-025` |
142
+ | M6 | Modus mit selbsttätiger Übernahme von Dateiänderungen begrenzbar | `Accept Edits` (CLI: `accept-edits`) genehmigt Dateiänderungen im Workspace ohne Rückfrage; nach D-05 nur über dokumentierte Ausnahme bei Kontrollstufe niedrig zulässig. Eine Abschaltung des Modus ist nicht dokumentiert; wirksam ist auch hier allein die Wirkungsbegrenzung der Organisationsebene | `[TEXTUELL]` | `[DOK]` für den Modus (QD-11), `[EMPF]` für die Beschränkung; **nicht beobachtet** (K-05) |
143
+ | M7 | Selbst beurteilender Modus begrenzbar | `Smart` (CLI: `smart`) genehmigt Workspace-Änderungen selbsttätig und beurteilt die übrigen Aktionen nach eigener Sicherheitseinschätzung; nach D-05 nur über dokumentierte Ausnahme bei Kontrollstufe niedrig zulässig. **Ein Modus, der selbst beurteilt, was sicher ist, ersetzt die menschliche Freigabe durch Modellverhalten** – das Framework lässt ihn deshalb nur als Ausnahme zu. Abschaltung nicht dokumentiert; Wirkungsbegrenzung wie M2 | `[TEXTUELL]` | `[DOK]` für den Modus (QD-11), `[EMPF]` für die Beschränkung; **nicht beobachtet** (K-05) |
144
+
145
+ ### X – Externe Anbindung
146
+
147
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
148
+ |---|---|---|---|---|
149
+ | X1 | Keine externe Anbindung ohne Einzelfreigabe | Keine MCP-Konfiguration ausgeliefert, nur die `.example`-Vorlage; Rückfrageregel auf alle MCP-Werkzeuge | `[TECHNISCH]`, **mit zwei benannten Grenzen** | `[DOK]` (`QD-11`, `QD-12`), Stand 2026-09-18. **Erste Grenze:** Der Mechanismus deckt die Werkzeuganbindung. Das **fremde Agentenprotokoll**, das D-10 ebenfalls standardmäßig deaktiviert stellt, deckt er nicht – und der clientseitige Schalter ist entfallen: Changelog 3.10.23 (2026-09-10), *„ACP is always enabled — the Enable ACP toggle is gone."* Die Freigabezeile des Overlays bleibt als **organisatorische Auflage** in Kraft und hat für diesen Client keine technische Seite mehr (`K-65`). **Zweite Grenze:** Die organisationsseitige Skillquelle (`QD-9`, *„Indexed repos"*) speist Skills aus allen angebundenen Repositorien in **jede** Sitzung ein, bevor überhaupt geklont wird. Sie liegt außerhalb jeder Datei, die das Framework schreibt, und die Teameinstellungen (`QD-16`) nennen sie nicht (`K-64`) |
150
+ | X2 | Art und Ort der Codebasis-Indexierung bekannt | Kein Mechanismus zur Steuerung bekannt | `[NICHT ABBILDBAR]` | `BELEG OFFEN (dauerhaft)` – von außen nicht zu beobachten, Stand 2026-09-22 (`K-20`, D-292). **Kein Ersatz durch das Framework:** Was ein Client indexiert und wohin er es gibt, ist von außen nicht zu beobachten – weder die Installation noch der Validator sehen es. Die Zusage entfällt für diesen Client; K-20 hält die Frage ohne Frist offen. Nach D-41 eine **Fähigkeitszusage**, keine Kernzusage. **Nachtrag 2026-09-18 (`FW-AK-01`): der erste dokumentierte Datenpunkt, und er ist schmal.** `QD-9` sagt: *„Devin discovers skills from two sources, merged together at the start of every session: 1. Indexed repos — Devin's backend indexes `SKILL.md` files across all repositories connected to your organization."* Damit ist für **einen** Gegenstand – Skilldateien – gesagt, dass eine serverseitige Indexierung stattfindet und woher sie speist. **Über die Codebasis sagt es nichts**, der Beleg bleibt offen, und ein Steuerungsmechanismus ist weiter nicht dokumentiert (`K-64`) |
151
+
152
+ ## 3. Zusammenfassung der Durchsetzungstiefe
153
+
154
+ > **Zählregel (normativ für diese Tabelle):** Eine Zeile zählt bei ihrer **schwächsten** Einstufung. Trägt sie zwei Angaben je Zugriffskanal – `[TECHNISCH]` für direktes Lesen und Schreiben, `[TEXTUELL]` für Shell und Unterprozess –, zählt sie als `[TEXTUELL]`. Das folgt D-47: Zugesagt wird je Kanal, was gemessen ist; eine Zeile, deren Zusage in einem Kanal nur als Anweisung trägt, ist nicht technisch durchgesetzt. Prüfung 31 rechnet die Summen aus der Matrix nach (D-60).
155
+
156
+ | Klasse | Anzahl | davon Kernzusagen |
157
+ |---|---|---|
158
+ | `[TECHNISCH]` | **21 von 36** | 3 von 6 (B1, B2, B6) |
159
+ | `[TEXTUELL]` | **13 von 36** | 3 von 6 (B3, B4, B5 – Shell und Unterprozess) |
160
+ | `[NICHT ABBILDBAR]` | **2 von 36** | 0 |
161
+
162
+ **Belegstand:** Genau eine Zeile sagt `BELEG OFFEN` – **X2**, und dauerhaft (`K-20`, D-292): Was ein Client indexiert, ist von außen nicht zu beobachten. Ein Verweisbeleg (*„wie B3"*) erbt den Beleg seines Ziels (D-266); B4, B5, B6 und B8 sind deshalb mit `B3` belegt (D-297). ⚠️ Diese Angabe rechnet keine Prüfung nach. **Gegen eine Installation geprüft sind** S3, B3, B10 und A1 (2026-09-22, `CR-2026-120`, D-277 bis D-287: S3 und A1 tragen, B10 ist widerlegt, B3 trägt mit benannter Grenze) sowie H1, H2 (AP2) und R5, R6, S5 (2026-09-11). R4 und B9 sind zum Schlechteren, M2 durch den richtigen Mechanismus aufgelöst.
163
+
164
+ ## 4. Kernzusagen ohne technische Durchsetzung
165
+
166
+ Alle sechs Kernzusagen (B1 bis B6) sind als `[TECHNISCH]` vorgesehen; B3, B4 und B5 sind es für den direkten Zugriff, für Shell und Unterprozess `[TEXTUELL]` (Abschnitt 3). `AP2` hat **keine** der sechs zurückgenommen – `B3` ist an neun Läufen bestätigt, mit der Mustergrenze aus D-277. Ein Eintrag in diesem Abschnitt ist damit **nicht erforderlich.** ⚠️ **Zwei Grenzen gehören dazu und stehen in der Vorbemerkung des B-Blocks:** Der Modus `--permission-mode dangerous` hebt den `deny`-Korb auf (D-281) – dort trägt der Schutz-Hook –, und die Pfadmuster der Berechtigungsschicht unterscheiden Groß- und Kleinschreibung (D-277, `K-92`).
167
+
168
+ Ergibt eine Prüfung, dass eine der sechs Zusagen nicht technisch durchgesetzt wird, ist sie hier einzutragen und nach der Regel in `.koolie/core/clients/README.md` Abschnitt 4 durch `<SECURITY_CONTACT>` freizugeben.
169
+
170
+ ## 5. Bekannte Abweichungen im Verhalten
171
+
172
+ - **Der Schutz-Hook läuft fail-closed** (`hook_fail_closed: true`, D-31): Das Eingabeschema ist gegen eine Installation belegt (Zeile H2). Die Hook-Aufzeichnungen dieses Clients führen weder `transcript_path` noch `cwd`; der Fehlblockade-Befund des Packs `claude-code` tritt deshalb nicht auf (Zeile H4, Befund B06). Prüfung 17 hält die Zusage an ihrer Wirkung fest.
173
+ - **Der nicht-interaktive Lauf bricht still ab.** Braucht ein Lauf eine Rückfrage, endet er gelegentlich **ohne jede Ausgabe mit Erfolgscode** (`AP2-DD-13`, am 2026-09-11 erneut aufgetreten: ERH-05). Ein leeres Ergebnis ist damit nicht unbedingt ein leeres Ergebnis. **Folge für die in Abschnitt 6 vorgeschriebene Prüfung:** Jeder Nachweislauf bekommt `--export <pfad>` mit – die Mitschrift führt alle Schritte, auch wenn stdout leer bleibt –, und jeder Nachweis aus dem Ausbleiben einer Wirkung trägt eine Positivkontrolle im selben Lauf (Testkatalog Nr. 7).
174
+ - **Die Vertrauensschranke greift im nicht-interaktiven Betrieb.** In einem unbestätigten Verzeichnis scheitert der Print-Modus, solange die Vertrauensprüfung nicht abgeschaltet ist (`--respect-workspace-trust false`) (`AP2-DD-14`). **Folge für Abschnitt 6:** Die vorgeschriebene Prüfung läuft in einem frischen Verzeichnis erst nach dieser Bestätigung. Ein Nachweis, der dafür die Schranke abschaltet, bleibt zulässig, gilt aber nicht für den Normalbetrieb und weist die Bedingung im Protokoll aus (Testkatalog Nr. 7).
175
+ - **Nutzerlokale Konfiguration kann lockern – B9 gilt bei diesem Client nicht.** Die Benutzerkonfiguration (`%APPDATA%\devin\config.json`) setzt sich gegen die projektseitige durch, in beide Richtungen gemessen (K-27, ERH-11). Eine projektseitige Verschärfung ist damit ein Standard, den jede Arbeitsstation still aufheben kann – in einer Datei, die außerhalb des Repositoriums liegt und die niemand im Projekt sieht. Wirksam bleibt sie, wo die Benutzerkonfiguration schweigt; das ist der Normalfall, aber es ist keine Zusage. Was das Framework dagegen setzen kann, steht auf Ebene 2 (Organisation), nicht im Repositorium.
176
+ - **Sechs Skill-Ablagen je Repositorium** (Abschnitt 1, `QD-9`). Das Framework schreibt `.devin/skills/`; `.agents/skills/` empfiehlt der Hersteller. Welche Ablagen der Desktop-Client tatsächlich liest, ist unbestätigt (K-12).
177
+ - **Keine Workflows, keine Memories.** Beides wird vom Client nicht unterstützt `[DOK]`; Skills und versionierte Regeln übernehmen diese Funktion. Für ein Client Pack mit Memory-Mechanismus wäre zu klären, wie das Framework verhindert, dass Wissen an den versionierten Regeln vorbei entsteht.
178
+ - **Sandbox nicht auf allen Betriebssystemen.** Laut Dokumentation unter Windows nicht verfügbar (K-11); der Modus `Autonomous` – in der CLI kein eigener Modus, sondern das Flag `--sandbox` (ERH-08) – ist damit dort nicht absicherbar. D-05 lässt ihn nur zu, wo die Sandbox verfügbar ist; auf der Zielplattform ist er untersagt. Er bekommt **keine** Matrixzeile, weil das Framework hier keine Zusage abbildet, sondern eine Beschränkung benennt, deren Träger auf dieser Plattform fehlt.
179
+ - **Die Modusnamen der Oberfläche und der CLI weichen voneinander ab.** Oberfläche: `Normal`, `Accept Edits`, `Smart`, `Bypass`. CLI (`devin --help`, 2026-09-11): `auto`, `accept-edits`, `smart`, `dangerous`. Die Matrixzeilen M1, M2, M6 und M7 führen beide Namensräume; D-05 nennt die der Oberfläche.
180
+
181
+ ## 6. Installation und Prüfung
182
+
183
+ Die Starter `install.cmd` (Windows) und `install.command` (macOS) in der Wurzel des Archivs fragen Projekt, Client und Overlay-Muster im Dialog ab und rufen `install.py --target` auf. Ohne Dialog, aus dem entpackten Archiv:
184
+
185
+ ```text
186
+ python .koolie/core/install.py --target /pfad/zum/projekt --client devin-desktop
187
+ ```
188
+
189
+ Danach im Projekt:
190
+
191
+ ```text
192
+ python .koolie/core/tests/scripts/validate-framework.py
193
+ ```
194
+
195
+ Ohne `--client` erkennt `install.py` das installierte Pack; bei einer Erstinstallation ist `devin-desktop` der Standard. Ein Projekt, das den Kern schon trägt, wird mit `--update` gehoben.
196
+
197
+ ## 7. Anweisungs- und Konfigurationsquellen außerhalb des Projekts
198
+
199
+ Was dieser Client aus Ablagen **außerhalb des Repositoriums** lädt. Solche Quellen haben nach Regel 2.6 der Prioritätshierarchie **keine Ebene**: Sie dürfen einschränken, nie über die Ebenen 1 bis 4 hinaus erweitern und keine Governance-, Datenschutz- oder Sicherheitsregeln setzen (D-34).
200
+
201
+ **Erhebungsstand: 2026-09-11**, Devin Desktop 3.9.19 / CLI 3000.10.21, erhoben mit `devin rules list`, `devin rules show <name>`, `devin rules paths`, `devin skills list --json`, `devin skills paths` und `devin doctor`, dazu gemessene Kontextläufe in einer Installation ohne Regeltexte (`tests/protocols/2026-09-11-erhebungen-K21-K26.md`).
202
+
203
+ ### 7.1 Anweisungsquellen
204
+
205
+ | Quelle | Ladebedingung | Belegstatus | Maßnahme des Frameworks |
206
+ |---|---|---|---|
207
+ | `~\.codeium\windsurf\memories\global_rules.md` | always-on, in **jedem** Projekt – auch in einem ohne jeden Regeltext | **Gemessen** (`AP2-DD-15`, K-21 Lauf A): Der Inhalt stand wörtlich im Kontext einer Sitzung in einem Verzeichnis ohne Regeltexte | bis `1.12.0` abgeschaltet über `read_config_from.windsurf: false` (R6, gemessen K-21 Lauf B); **seit `1.12.1` zugelassen** (D-411, `K-156`) – gemessen am 2026-09-26: ein Kennwort in der Datei erreicht die Sitzung. `install.py` meldet die Datei, wenn sie nicht leer ist |
208
+ | `.windsurf/` im Projekt (Regeln, Skills); MCP-Server aus Windsurf (`~\.codeium\windsurf\mcp_config.json`) | Regeln always-on nach ihrem Frontmatter | Regeln **gemessen** am 2026-09-26 (Kennwort in `.windsurf/rules/` lädt mit `windsurf: true`); Skills und MCP-Server `[DOK]`, der Ablageort der MCP-Datei nach Windsurf-Konvention, nicht erhoben | seit `1.12.1` zugelassen (D-411); `install.py` meldet `.windsurf/` im Projekt und eine vorhandene `mcp_config.json` |
209
+ | `~\.claude\skills\` | 67 von 81 Skills, Aufrufbarkeit `[user,model]` | **Gemessen** (`AP2-DD-16`, K-24): Ein Skill von dort läuft; seine Werkzeugaufrufe erreichen Berechtigungsschranke und Schutz-Hook | abgeschaltet über `read_config_from.claude: false` (R6); gemessen 69 → 2 Skills (K-23) |
210
+ | `%APPDATA%\devin\AGENTS.md`, `~\.devin\rules\*.md`, `~\.devin\global_rules.md`, `~\.claude\CLAUDE.md` | laut Herstellerdokumentation weitere Ablageorte für Regeln | `[DOK]` (ERH-09); **auf dieser Arbeitsstation nicht erhoben** – die ersten drei sind das eigene Format des Clients und von `read_config_from` **nicht** erfasst | keine; sie bleiben Auskunft |
211
+
212
+ ### 7.2 Konfigurationsquellen
213
+
214
+ Berechtigungen, Hooks und Einstellungen außerhalb des Repositoriums betreffen genau die Linien, auf denen B1 bis B6 stehen.
215
+
216
+ | Quelle | Wirkung | Belegstatus |
217
+ |---|---|---|
218
+ | `%APPDATA%\devin\config.json` (Benutzerkonfiguration) | führt dieselben Schlüssel wie die Projektdatei – Berechtigungen, Hooks, `read_config_from` – und **hat Vorrang**, auch gegenüber einer projektseitigen Verschärfung | **Gemessen in beiden Richtungen** (K-27, ERH-11). Damit ist B9 bei diesem Pack widerlegt |
219
+ | `.devin/config.local.json` | nutzerlokale Überschreibung im Projekt, nicht versioniert | `[DOK]`; dieselbe Lage wie oben |
220
+
221
+ ### 7.3 Was dieser Abschnitt nicht leistet
222
+
223
+ **Eine Auskunft ist keine Schranke, und die Abschaltung ist ein Standard, keine Sperre.** Was in `read_config_from` steht, kann die Benutzerkonfiguration aufheben (7.2) – wirksam ist die Einstellung dort, wo jene schweigt, und das ist der Normalfall.
224
+
225
+ **Ein Abwesenheitsbeleg altert.** Der Erhebungsstand oben ist am Tag der nächsten Clientversion eine Aussage über die Vergangenheit. Prüfung 19 sieht den Unterschied nicht: Sie prüft die **Anwesenheit** dieser Auskunft, nicht ihre Richtigkeit.
226
+
227
+ **Das Register des Clients ist keine zweite Quelle.** Es zeigt mehr, als lädt (ERH-02), und seine Pfadauskunft weniger, als es gibt (ERH-03). Maßgeblich ist dieser Abschnitt, gestützt auf gemessene Kontextläufe.
228
+
229
+ ## 8. Änderungsverlauf
230
+
231
+ | Version | Datum | Änderung | Autor (Rolle) |
232
+ |---|---|---|---|
233
+ | 0.1.0 | 2026-09-10 | angelegt aus dem Ist-Zustand der Laufzeitschicht (`CR-2026-002`) | `<FRAMEWORK_OWNER>` |
234
+ | 0.2.0 | 2026-09-10 | Berechtigungen und Hooks aus dem Pack in den Kern; Semantikabbildung ergänzt (`CR-2026-008`) | `<FRAMEWORK_OWNER>` |
235
+ | 0.3.0 | 2026-09-10 | Overlay-Laufzeitregel und die beiden Vorlagen in den Kern; Pack umfasst vier Dateien (`CR-2026-010`) | `<FRAMEWORK_OWNER>` |
236
+ | 0.3.2 | 2026-09-11 | **Fail-open ausgewiesen statt vorausgesetzt (`CR-2026-026`, D-31).** Das Manifest führt `hook_fail_closed: false`; der Schutz-Hook dieses Packs lässt eine nicht lesbare Eingabe weiter durch, weil das Eingabeschema unbestätigt ist (V3). Prüfung 17 hält die Zusage an ihrer Wirkung fest. Das Pack `claude-code` führt seit diesem Release `true` – die Abweichung steht jetzt in der Matrix, statt aus dem Fehlen einer Angabe zu folgen | `<FRAMEWORK_OWNER>` |
237
+ | 0.3.3 | 2026-09-11 | **Die Hooks liegen in der Berechtigungsdatei (`CR-2026-029`, D-32) und der Schutz-Hook läuft fail-closed (`CR-2026-026`, D-31).** AP2 hat gezeigt, dass aus `.devin/hooks.v1.json` kein Hook ausgeführt wird – H1 bis H3 waren wirkungslos. Mit dem belegten Eingabeschema ist auch die Bedingung für fail-closed erfüllt. H1 und H2 sind jetzt **beobachtet**, nicht nur dokumentiert; H3 bleibt unbeobachtet. Der Matcher deckt zusätzlich das Lesewerkzeug ab (`CR-2026-030`, D-33) | `<FRAMEWORK_OWNER>` |
238
+ | 0.4.0 | 2026-09-11 | **Fünf Zusagen mehr, drei VERIFY-Marker aufgelöst – zwei davon zum Schlechteren.** Neu: R5 und S5 (Aufzählbarkeit der Regelquellen und Skills, beobachtet, mit dem Vorbehalt aus ERH-02/ERH-03), R6 (Importsteuerung, `CR-2026-038`/D-37), M6 und M7 (die beiden Modi, die D-05 regelt und die Matrix nicht führte, `CR-2026-028`). Aufgelöst: **R4** – für diesen Client ist kein Zeichenlimit dokumentiert, die Zahlen bleiben als Vorgabe des Frameworks (`CR-2026-027`); **B9** – die Benutzerkonfiguration hebt eine projektseitige Verschärfung auf, gemessen in beide Richtungen (ERH-11); **M2** – eine Modus-Sperre ist nicht dokumentiert, wirksam ist die Wirkungsbegrenzung der Organisationsebene. Neuer Abschnitt 7 mit den Anweisungs- und Konfigurationsquellen außerhalb des Projekts. **Die Zeilenzahl der Zusammenfassung ist nachgezählt worden: Sie führte „von 26", während die Matrix 29 Zeilen trug** | `<FRAMEWORK_OWNER>` |
239
+ | 0.8.0 | 2026-09-13 | **Neue Zeile H4 und eine Berichtigung, die neun Releases überfällig war (`CR-2026-056`, D-61 bis D-63, Befund B06).** H4 trägt Eingabeschema, Pfadidentität und die Zeitlücke des Schutz-Hooks. Der Fehlblockade-Befund des Packs `claude-code` tritt hier nicht auf – die fünf Hook-Aufzeichnungen dieses Packs führen **kein** `transcript_path` und **kein** `cwd`; das ist eine Eigenschaft des Schemas, keine des Hooks. Abschnitt 5 behauptete seit 0.25.0 fail-open und einen Manifestwert `false`, während Zeile H2 derselben Tabelle das Gegenteil sagte | `<FRAMEWORK_OWNER>` |
240
+ | 0.9.0 | 2026-09-13 | **Das Startwerkzeug für Unteragenten ist als unerhoben deklariert, und der Belegstand war um eine Zeile zu klein (`CR-2026-058`, D-70).** Das Manifest führt `agent_start_tools_absent: ["unerhoben"]` samt Begründung – die leere Liste ist eine Aussage über den **Belegstand**, nicht über den Client; dieses Pack führt Subagenten als Vorschaufunktion (`QD-14`), gemessen ist dort nichts. Prüfung 34 verlangt künftig Nennung oder Erklärung. **Berichtigt:** Der Belegstand nannte **8** offene VERIFY-Marker und zählte B10 nicht mit, obwohl es seinen Marker seit 0.33.0 trägt – es sind **9** | `<FRAMEWORK_OWNER>` |
241
+ | 0.10.0 | 2026-09-13 | **Die nicht abgebildeten Werkzeugverben des Frontmatters sind deklariert – und ein Widerspruch dieses Manifests ist festgehalten (`CR-2026-062`, D-78).** Beide `tool_names`-Blöcke führen `tool_names_unmapped` mit allen fünf Verben des Vokabulars samt Begründung: Dieses Pack bildet die Frontmatter-Werkzeugnamen nicht ab, und wie der Client sie wirklich nennt, ist **unerhoben** – Zeile S3 sagt es seit 0.7.0 selbst. Bis 0.39.0 war die Abwesenheit nur eine leere Abbildung, und ein unbekanntes Verb wurde wörtlich als Werkzeugname durchgereicht. **Festgehalten, nicht behoben:** Dasselbe Manifest erklärt unter `hook_tools_absent`, dieser Client führe kein eigenes Suchwerkzeug – und jede installierte Skilldatei trägt `grep` und `glob` als Werkzeugnamen. Beides kann nicht stimmen; welche Seite falsch ist, entscheidet eine Erhebung | `<FRAMEWORK_OWNER>` |
242
+ | 0.11.0 | 2026-09-14 | **Der Werkzeugbestand dieses Clients ist erhoben, und der Widerspruch aus 0.10.0 ist entschieden (`CR-2026-065`, D-87 bis D-89).** Falsch war `hook_tools_absent`: Der Client führt **zwei** Suchwerkzeuge, `grep` und `find_file_by_name`; der erzeugte Hook-Matcher kannte die Klasse deshalb nicht, und ein Secret kam über `grep` heraus, wo ein `read` blockiert wurde (Läufe H1/H2). Seit diesem Release führt `hook_tools` die Suchklasse, und derselbe Aufruf wird abgewiesen. **Richtig war `glob` im Frontmatter:** Dieser Client führt dort ein **eigenes, normalisiertes Vokabular** (`read, grep, glob, edit, exec, web_search`), das mit seinen Laufzeitnamen nicht übereinstimmt – ein erster Entwurf trug `find_file_by_name` ein, und der Client verwarf es lautlos. Die Abbildung ist deshalb die **Identität**, der Namensraum ist deklariert, und Prüfung 38 ist namensraumbewusst. **Der Skillaufruf ist ein Werkzeugaufruf** (`skill`), über die Berechtigungsdatei aber nicht adressierbar – **K-33 geschlossen, K-34 neu** | `<FRAMEWORK_OWNER>` |
243
+ | 0.11.0 | 2026-09-16 | *(Unter derselben Nummer wie die Zeile davor eingetragen – ein Versehen; die Nummer bleibt stehen, weil der Verlauf nicht umgeschrieben wird, D-397.)* **Die verbindliche Zielversion ist festgelegt, drei Marker der Pfadabbildung sind aufgelöst, und das Pack ist abgenommen (`CR-2026-075`, D-112 bis D-114).** Der Steckbrief führt seit diesem Release **zwei** Versionsangaben statt einer: die verbindliche Zielspanne `3.9.x` (Geltungsbereich) und den gemessenen Punktwert `3.9.19` (Messwert). Beides in einer Zelle zu führen, hat beim Schwesterpack die Festlegung neben dem Messwert verloren gehen lassen. Aufgelöst: **Schemadetails der Berechtigungskonfiguration** (der Client liest `permissions.deny` und führt den `hooks`-Block aus derselben Datei aus; `ask` und `allow` bleiben ungemessen), **Struktur der MCP-Konfiguration** (am Client erzeugt und verglichen) und **`DEVIN_PROJECT_DIR`** (im Hook-Prozess aufgezeichnet). **Zwei der drei Belege lagen seit dem 2026-09-11 beziehungsweise 2026-09-14 in diesem Repositorium** – ein offener Marker ist eine Aussage über den eigenen Belegstand, und auch die veraltet. Der Status geht von `entwurf` auf `pilot`; damit steht kein Modulträger des Frameworks mehr auf `entwurf` | `<FRAMEWORK_OWNER>` |
244
+ | 0.12.0 | 2026-09-18 | **Produktbeobachtung `FW-AK-01` gegen den Stand 3.10.31** (`CR-2026-087`). Alle siebzehn Quellen und der Changelog seit 3.8.20 abgeglichen – **der erste vollständige Abgleich dieses Teils; er stand seit 0.1.0 aus.** Vier Befunde: **Die verbindliche Zielspanne `3.9.x` deckt das ausgelieferte Produkt nicht mehr** und wird nicht stillschweigend mitgezogen (D-157). **Drei der siebzehn Quellen belegen einen Agenten, den der Hersteller zum 2026-09-08 entfernt hat** – `R1` bekommt deshalb den tragfähigen Beleg `QD-6` statt des Cascade-gebundenen `QD-5` (D-159). **`M2` stützt sich auf die Unüberschreibbarkeit der Organisationsebene, und die galt in der Zielspanne dieses Packs nicht** (CVE-2026-81376, behoben erst in 3.10.31) – dieselbe Bauform wie D-150, im Produkt. **Sechs Skill-Suchpfade statt zwei**, zwei davon ohne dokumentierten Schalter, dazu eine organisationsseitige Skillquelle außerhalb jeder Datei des Frameworks (`K-64`, `K-65`) | `<FRAMEWORK_OWNER>` |
245
+ | 0.13.0 | 2026-09-22 | **`AP2` ist zu Ende gefahren – vier Marker aufgelöst, einer bleibt dauerhaft** (`CR-2026-120`, D-277 bis D-289; 70 Sitzungsläufe, siebzehn Messbäume, 0,4718 USD). **S3** zum Schlechteren: Die Frontmatter-Felder erreichen die installierte Datei und begrenzen den Werkzeuggebrauch **nicht** (neun Läufe, in sieben lief `edit` durch). **B10** zum Schlechteren und auf `[NICHT ABBILDBAR]`: Das Abrufwerkzeug heißt `webfetch`, und die Berechtigungsdatei erreicht den Kanal in **keiner** Richtung (acht Läufe, sechs Bäume, drei Schreibweisen). **A1** zum Besseren: Das `allowed-tools` eines Subagentenprofils bestimmt den Werkzeugbestand des Unteragenten. **B3** mit benannter Grenze: `**/` trifft null bis mehrere Ebenen, und die Muster **unterscheiden Groß- und Kleinschreibung**, während NTFS es nicht tut. **Neu in der Vorbemerkung des B-Blocks:** `--permission-mode dangerous` hebt den `deny`-Korb auf; der Schutz-Hook trägt dort weiter. **Neu in der Pfadabbildung:** die Enthaltung zu `ask`/`allow`, das Startwerkzeug `run_subagent` und die drei von zwölf Skills, die das Modell erreichen | `<FRAMEWORK_OWNER>` |
246
+ | 0.14.0 | 2026-09-22 | **Die Markerform ist abgeschafft; die Belegspalte trägt den Nachweisstand** (`CR-2026-121`, D-291, D-292). Zeile `X2` sagt `BELEG OFFEN (dauerhaft)` statt eines fristgebundenen Markers – **die Frage bleibt offen (`K-20`), die Marke nicht**; *eine Frist auf eine Frage, die dauerhaft nicht beobachtbar ist, war nie einlösbar, und die Zeile hat sie achtundneunzig Releases lang getragen.* **Und der Belegstand dieses Packs war seit `0.86.0` falsch** (D-297): Er sagte *„5 der 36"* und zählte B4, B5, B6 und B8 über den Verweis *„wie B3"* mit – **`B3` ist mit `0.86.0` aufgelöst**, und *ein Verweisbeleg erbt den Beleg seines Ziels* (D-266). **Richtig ist 1 von 36**, und die Übersicht in `clients/README.md` sagte das seit `0.86.0`: *zwei Träger desselben Hauses, zwei Zahlen* | `<FRAMEWORK_OWNER>` |
247
+ | 0.14.4 | 2026-09-26 | Vorbemerkung des B-Blocks: **die Startort-Bedingung**, gemessen mit Clientversion 3000.11.1 – im Unterverzeichnis mit eigenem Repositorium laden weder Wurzel-Anweisung noch Berechtigungen und Hooks; eine eigene Installation dort trägt (D-408). 🔴 **`R2` und `R6`: Befund `K-156`** – mit `read_config_from.windsurf: false` lädt der Client die Regelablage `.devin/rules/` nicht (`CR-2026-148`) | `<FRAMEWORK_OWNER>` |
248
+ | 0.14.5 | 2026-09-26 | 🟢 **`K-156` beantwortet: `windsurf` steht auf `true`** (D-411, `CR-2026-149`) – mit `false` lädt die Regelablage auch unter 3000.11.3 nicht. Der Preis, gemessen an Kennworten je Kanal: die Anweisungsdatei im Benutzerprofil und `.windsurf/rules/` laden; `install.py` meldet belegte Kanäle. `copilot`, `opencode`, `zed` auf `false`. `R2`: `always_on` und `model_decision` gemessen, **`glob` lädt nicht** (`K-161`). Feste Last mit Regelablage 8.344 Token | `<FRAMEWORK_OWNER>` |
249
+ | 0.14.6 | 2026-09-29 | Zeile B4 folgt dem Erzeugnis: Das Overlay sperrt seit `1.17.0` allein der Schutz-Hook (D-448). Zeile MCP-Konfiguration: die Stichprobe des Owners zu `1.18.0` – `stdio` über `mcp-remote` trägt, die Seitenversion kommt an. Zeile S3: die Werkzeugsperre eines Skills wirkt auch für `exec` (`K-187`). `CR-2026-158`, D-468 | `<FRAMEWORK_OWNER>` |
250
+ | 0.14.8 | 2026-09-30 | **Der eingebaute Skill `upload-secrets` ist eingestuft** (`CR-2026-164`, D-503, `K-94`): Er lädt über die CLI, die die Werte selbst liest; der Schutz-Hook sperrt `cloud drs secret-create`, gemessen in zwei Läufen | `<FRAMEWORK_OWNER>` |
251
+ | 0.14.7 | 2026-09-30 | **Die Schreibweise der Muster ist entschieden** (`CR-2026-163`, D-491, D-492, `K-92`, `K-96`). Zeile B3: Die Semantik des Schutz-Hooks gilt, die Grenze der Berechtigungsschicht bleibt benannt. Zeile H4: `/c/…` in beiden Lesarten | `<FRAMEWORK_OWNER>` |
@@ -0,0 +1,163 @@
1
+ {
2
+ "_comment": "Maschinenlesbare Pfadabbildung dieses Client Packs. Die menschenlesbare Fassung mit Fähigkeitsmatrix steht in CLIENT_PACK.md. install.py und validate-framework.py lesen diese Datei; ohne sie ist ein Client Pack nicht installierbar.",
3
+ "client": "devin-desktop",
4
+ "runtime_dir": ".devin",
5
+ "root_instruction_file": "AGENTS.md",
6
+ "permissions_file": ".devin/config.json",
7
+ "skills_dir": ".devin/skills",
8
+ "agents_dir": ".devin/agents",
9
+ "pack_runtime_dir": ".devin/rules",
10
+ "has_rule_triggers": true,
11
+ "core_skill_prefix": "fw-",
12
+ "core_paths": [
13
+ ".devin/README.md"
14
+ ],
15
+ "seed_paths": [],
16
+ "project_owned_hint": [
17
+ ".devin/rules/2N-overlay-<name>.md (Overlay-Regelerweiterungen)",
18
+ ".devin/rules/40-tech-<name>.md (Packs ohne Quelle im Kern)",
19
+ ".devin/skills/prj-*/ (projektspezifische Skills)",
20
+ ".koolie/project-overlay/tech-packs/** (projekteigene Packs)",
21
+ ".koolie/project-overlay/** (das gesamte Overlay)"
22
+ ],
23
+ "runtime_placeholders": {
24
+ "<RUNTIME_DIR>": ".devin",
25
+ "<ROOT_INSTRUCTION_FILE>": "AGENTS.md",
26
+ "<ROOT_INSTRUCTION_LOCAL>": "AGENTS.local.md",
27
+ "<PERMISSIONS_FILE>": ".devin/config.json",
28
+ "<SKILLS_DIR>": ".devin/skills",
29
+ "<RULES_DIR>": ".devin/rules",
30
+ "<AGENTS_DIR>": ".devin/agents",
31
+ "<HOOKS_FILE>": ".devin/config.json",
32
+ "<MCP_FILE>": ".devin/mcp_config.json",
33
+ "<CLIENT_NAME>": "Devin Desktop"
34
+ },
35
+ "skill_frontmatter": {
36
+ "tools_format": "list",
37
+ "tool_names": {"read": ["read"], "grep": ["grep"], "glob": ["glob"], "edit": ["edit"], "exec": ["exec"]},
38
+ "tool_names_namespace": "eigen",
39
+ "_tool_names_note": "ERHOBEN am 2026-09-14 (tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md, CR-2026-065, D-87, D-88). Die Abbildung ist die IDENTITAET, und das ist ein Messergebnis, kein Nichtstun: Dieser Client fuehrt fuer das Frontmatter ein EIGENES, normalisiertes und geschlossenes Vokabular, das mit seinen Laufzeit-Werkzeugnamen nicht uebereinstimmt. Gemessen an einer Sondendatei, die zwoelf Namen anbot: angenommen wurden read, grep, glob, edit, exec und web_search (Read und Grep gross geschrieben ebenfalls, auf Kleinschreibung normalisiert); VERWORFEN wurden find_file_by_name, write, skill und ein erfundener Name. Das heisst: glob ist hier RICHTIG, obwohl der Client kein Laufzeugwerkzeug dieses Namens fuehrt - das glob-foermige heisst zur Laufzeit find_file_by_name und steht deshalb in hook_tools, nicht hier. Ein erster Entwurf dieses Releases hat genau das verwechselt und find_file_by_name eingetragen; der Client verwarf den Eintrag lautlos, und die Vorabfreigabe schrumpfte von drei Namen auf zwei. Beim Pack claude-code fallen beide Namensraeume zusammen - deshalb ist der Unterschied bis 0.42.0 niemandem aufgefallen. GRENZE: Gemessen ist, welche Namen der Client ANNIMMT, nicht was er mit ihnen tut - Zeile S3 sagt es.",
40
+ "drop_fields": []
41
+ },
42
+ "shared_core": [
43
+ {
44
+ "src": "framework/runtime/root-instruction.md",
45
+ "dst": "<ROOT_INSTRUCTION_FILE>"
46
+ },
47
+ {
48
+ "src": "framework/runtime/rules/00-framework-core.md",
49
+ "dst": "<RULES_DIR>/00-framework-core.md"
50
+ },
51
+ {
52
+ "src": "framework/runtime/rules/10-privacy-security.md",
53
+ "dst": "<RULES_DIR>/10-privacy-security.md"
54
+ },
55
+ {
56
+ "src": "framework/runtime/rules/15-development-rules.md",
57
+ "dst": "<RULES_DIR>/15-development-rules.md"
58
+ },
59
+ {
60
+ "src": "framework/runtime/agents/fw-reviewer.md",
61
+ "dst": "<AGENTS_DIR>/fw-reviewer.md"
62
+ },
63
+ {
64
+ "src": "templates/rules/21-overlay-TEMPLATE.md.template",
65
+ "dst": "<RULES_DIR>/21-overlay-TEMPLATE.md.template"
66
+ },
67
+ {
68
+ "src": "templates/rules/40-tech-TEMPLATE.md.template",
69
+ "dst": "<RULES_DIR>/40-tech-TEMPLATE.md.template"
70
+ },
71
+ {
72
+ "src": "framework/runtime/root-instruction-local.example.md",
73
+ "dst": "<ROOT_INSTRUCTION_LOCAL>.example"
74
+ },
75
+ {
76
+ "src": "framework/runtime/mcp-config.example.json",
77
+ "dst": "<MCP_FILE>.example"
78
+ }
79
+ ],
80
+ "shared_seed": [
81
+ {
82
+ "src": "framework/runtime/permissions.json",
83
+ "dst": "<PERMISSIONS_FILE>"
84
+ },
85
+ {
86
+ "src": "framework/runtime/rules/20-project-overlay.md",
87
+ "dst": "<RULES_DIR>/20-project-overlay.md"
88
+ },
89
+ {
90
+ "src": "templates/project-overlay",
91
+ "dst": ".koolie/project-overlay"
92
+ }
93
+ ],
94
+ "rule_frontmatter": "yaml",
95
+ "root_instruction_imports": [],
96
+ "agent_frontmatter": {
97
+ "tools_field": "allowed-tools",
98
+ "tools_format": "list",
99
+ "tool_names": {"read": ["read"], "grep": ["grep"], "glob": ["glob"], "edit": ["edit"], "exec": ["exec"]},
100
+ "tool_names_namespace": "eigen",
101
+ "_tool_names_note": "Wie skill_frontmatter - dasselbe eigene Frontmatter-Vokabular an der zweiten Stelle, an der es abgebildet wird (2026-09-14, tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md, D-88). Das Agentenprofil fw-reviewer traegt danach unveraendert 'allowed-tools: read, grep, glob'; und seit dem 2026-09-22 ist gemessen, dass dieser Client damit die Zusage A1 EINLOEST: Ein Unteragent mit diesem Profil ruft kein schreibendes Werkzeug auf, das Vollzugriffsprofil des Clients ruft exec und write (D-284). GRENZE: Belegt ist der Werkzeugbestand, nicht die Reichweite je Werkzeug."
102
+ },
103
+ "agent_start_tools": ["run_subagent"],
104
+ "agent_start_tools_absent": [],
105
+ "_agent_start_tools_absent_note": "ERHOBEN am 2026-09-22 (tests/protocols/2026-09-22-ap2-rest-devin-desktop.md, CR-2026-120, D-284). Das Startwerkzeug heisst run_subagent; die Mitschrift fuehrt es unter agent.tool_definitions, und sein Pflichtargument 'profile' nennt das Subagentenprofil. Bis 0.85.2 stand hier ['unerhoben'] mit der Begruendung, der Name sei fuer diesen Client NICHT gemessen und die Erhebung vom 2026-09-13 betreffe ausschliesslich claude-code - das war richtig und ist jetzt eingeloest. Gemessen ist auch die WIRKUNG des Profils: allowed-tools bestimmt den Werkzeugbestand des Unteragenten (Laeufe A1-GH, A1-SH, A1-RH, ueber einen Aufzeichnungs-Hook mit Positivkontrolle, weil --export die Werkzeugaufrufe eines Unteragenten NICHT fuehrt, D-282). Der Client stellt zwei eigene Profile: subagent_explore (lesend) und subagent_general (voller Schreibzugriff). Zeile A1 des Packs traegt damit keinen offenen VERIFY-Marker mehr. GRENZE: Belegt ist der Werkzeugbestand, nicht die Reichweite je Werkzeug.",
106
+ "permission_tools": {
107
+ "read": [
108
+ "Read"
109
+ ],
110
+ "search": [],
111
+ "write": [
112
+ "Write"
113
+ ],
114
+ "exec": [
115
+ "Exec"
116
+ ],
117
+ "fetch": [
118
+ "Fetch"
119
+ ],
120
+ "mcp": [
121
+ "mcp__*"
122
+ ],
123
+ "skill": []
124
+ },
125
+ "_permission_tools_skill_note": "ERHOBEN am 2026-09-14 (tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md, CR-2026-065, D-89; Klaerungspunkt K-33 damit geschlossen). Der Skill-Aufruf IST bei diesem Client ein eigener Werkzeugaufruf: Das Werkzeug heisst skill, der Skillname steht im Argument skill (Laeufe K1, K1b, P2, P3). Die Liste bleibt trotzdem leer, und der Grund ist ein anderer als bisher: Es ist keine Schreibweise bekannt, mit der eine Regel dieser Datei den Aufruf erreicht. Skill(fw-code-explain) laeuft durch (P2), skill(fw-code-explain) laeuft durch (P3) - waehrend Read(**/.env) in derselben Datei und denselben Laeufen abweist (P1b, Kontrolllauf). Eine Regel zu schreiben, die nichts tut, waere die Bauform von D-66 und D-82. ZWEITER WEG, nicht gesucht: Die Slash-Form /fw-name wird CLIENTSEITIG in den Prompt expandiert - im user-Schritt der Mitschrift steht der Inhalt der SKILL.md, nicht der Befehl (K1b). Eine Schranke auf dem Werkzeug erreicht diesen Weg ohnehin nicht. Offen als K-34: ob dieser Client eine wirksame Schreibweise kennt.",
126
+ "permission_tools_bare": [
127
+ "mcp__*"
128
+ ],
129
+ "permission_path_prefix": "",
130
+ "permission_exec_match": "literal",
131
+ "permissions_extra": {},
132
+ "settings_extra": {},
133
+ "_settings_extra_note": "Ausdrueckliche Abwesenheit, keine Luecke (CR-2026-087, D-155). Fuer diesen Client ist keine Einstellung bekannt, die das Framework auf der obersten Ebene der Berechtigungsdatei als Verschaerfung ausliefern muesste: Die Gegenstuecke des Schwesterpacks gibt es hier nicht in dieser Form - Devin Local persistiert keine Memories (docs.devin.ai/desktop/cascade/memories: 'The Devin Local agent - the default agent for new tabs - does not persist memories'), und die organisationsseitige Skillquelle ('Indexed repos', docs.devin.ai/product-guides/skills) kennt keinen clientseitigen Schalter (K-64). Pruefung 54 laesst ein Pack mit leerem Objekt durchlaufen; sie meldet einen Schluessel, der deklariert ist und in der erzeugten Datei fehlt oder auf der falschen Ebene steht.",
134
+ "permissions_note": "Die allow-Regel fuer Suchen entfaellt bei diesem Client und faellt damit auf den strengeren Standard zurueck - NICHT, weil es keine Suche gaebe (das stand hier bis 0.42.0 und ist gemessen falsch), sondern weil die Berechtigungsklasse Read(...) dieses Clients die Suchwerkzeuge mit umfasst: Ein deny Read(**/.env) weist einen grep-Aufruf auf dieselbe Datei ab, gemessen am 2026-09-14 in den Laeufen P4 und W1 (tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md, D-87). Eine eigene Search-Regel waere damit eine zweite Schreibweise fuer dieselbe Zusage.",
135
+ "hook_path_fields": ["file_path", "path"],
136
+ "_hook_path_fields_note": "Wie beim Pack claude-code, an der eigenen Aufzeichnung belegt: Die Hook-Eingaben dieses Clients fuehren tool_input mit file_path. path steht daneben, weil ein zusaetzlich erkanntes Feld eine Verschaerfung ist und die Aufloesung sonst an einer Namensvariante vorbeilaeuft (CR-2026-056 E6).",
137
+ "hook_tools": {"read": ["read"], "search": ["grep", "find_file_by_name"], "exec": ["exec"], "write": ["edit", "write"]},
138
+ "hook_tools_unerhoben": ["mcp"],
139
+ "_hook_tools_unerhoben_note": "Das Verb mcp der Kernquelle (seit 1.20.0, K-184, D-486) ist fuer diesen Client NICHT gemessen: Weder der Werkzeugname eines MCP-Aufrufs in der Hook-Eingabe noch das Ereignis, das ihn traegt, sind an einer Installation aufgezeichnet. Ein Matcher auf eine ungemessene Form waere eine Zusage ohne Mechanismus (D-78); das Verb steht deshalb hier und nicht unter hook_tools_absent. Bis zu einer Messung fragt jeder MCP-Aufruf den Menschen, wo die Berechtigungsschicht es verlangt (D-459); der Inhalt wird vom Schutz-Hook nicht geprueft.",
140
+ "_hook_tools_note": "Die Suchklasse ist ERHOBEN am 2026-09-14 (tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md, CR-2026-065, D-87) und seither hier gefuehrt. Bis 0.42.0 stand sie unter hook_tools_absent mit der Begruendung, dieser Client fuehre kein eigenes Suchwerkzeug - das ist gemessen FALSCH: Er fuehrt zwei, grep (ripgrep) und find_file_by_name (Glob-Muster). Die Folge war gemessen: Der erzeugte Matcher lautete read|exec|edit|write, und in einer Umgebung mit nur diesem Hook kam derselbe Secret-Wert, den ein read-Aufruf nicht bekam, ueber einen grep-Aufruf woertlich heraus (Laeufe H1 und H2). Das Hook-Skript selbst blockiert beides - es wurde nicht gefragt. Entlastung: Wie ausgeliefert trug die Berechtigungsschicht, weil die Klasse Read(...) dieses Clients die Suche mit umfasst (Laeufe P4 und W1); die fail-closed-Schicht (D-31) trug sie nicht, und sie ist die, die eine bearbeitete Berechtigungsdatei ueberleben soll (D-77).",
141
+ "hook_project_dir_var": "DEVIN_PROJECT_DIR",
142
+ "import_control": {
143
+ "key": "read_config_from",
144
+ "value": {
145
+ "agents_standard": true,
146
+ "cursor": false,
147
+ "windsurf": true,
148
+ "claude": false,
149
+ "copilot": false,
150
+ "opencode": false,
151
+ "zed": false
152
+ }
153
+ },
154
+ "_import_control_note": "D-37: Das Framework importiert keine Regel- und Skillquellen fremder Werkzeugformate. agents_standard bleibt true - das ist bei diesem Client das Format der eigenen Wurzel-Anweisungsdatei; es abzuschalten hiesse, das Framework abzuschalten. Wirkung gemessen am 2026-09-11 (K-21, K-23): 67 fremde Skills und der Inhalt einer fremden Regel verschwinden aus dem Kontext. Einstufung [TEXTUELL], nicht [TECHNISCH]: Die Benutzerkonfiguration hat in beide Richtungen Vorrang (K-27, ERH-11). WINDSURF STEHT SEIT 1.12.1 AUF true, UND DAS IST EINE ABWAEGUNG, KEIN VERSEHEN (K-156, D-411): Mit windsurf false laedt Devin CLI 3000.11.1 und 3000.11.3 die EIGENE Regelablage .devin/rules/ nicht - gegen die Herstellerdokumentation, gemessen im Minimalbaum mit Kennworten je Kanal am 2026-09-26. Der Preis: Mit true laden auch .windsurf/rules/ im Projekt und ~/.codeium/windsurf/memories/global_rules.md aus dem Benutzerprofil (D-290), laut Dokumentation dazu Skills und MCP-Server aus Windsurf. Diese Kanaele nennt install.py nach Installation und Hebung, wenn sie auf dem Arbeitsplatz belegt sind (import_channels_report). copilot, opencode und zed sind seit 1.12.1 dokumentierte Schluessel mit Standard true und stehen auf false; die Wirkung von copilot ist NICHT gemessen - .github/skills/ lud im Minimalbaum auch ohne den Schalter nicht.",
155
+ "import_channels_report": [
156
+ {"path": "~/.codeium/windsurf/memories/global_rules.md", "scope": "user", "when": "nonempty", "what": "globale Windsurf-Regel - laedt in JEDER Sitzung als immer aktive Regel (gemessen, K-156)"},
157
+ {"path": "~/.codeium/windsurf/mcp_config.json", "scope": "user", "when": "exists", "what": "MCP-Server aus Windsurf - laut Herstellerdokumentation importiert, Ablageort nach Windsurf-Konvention, nicht erhoben"},
158
+ {"path": ".windsurf", "scope": "project", "when": "exists", "what": "Windsurf-Ablage im Projekt - Regeln laden als Regeln des Projekts (gemessen, K-156)"}
159
+ ],
160
+ "_import_channels_report_note": "Auskunft, keine Schranke (D-411): Die Kanaele, die windsurf true oeffnet, meldet install.py, wenn sie belegt sind - eine nicht leere Datei, eine vorhandene Datei oder ein vorhandenes Verzeichnis. Was darin steht, beurteilt der Mensch.",
161
+ "hook_fail_closed": true,
162
+ "_hook_fail_closed_note": "Das Eingabeschema dieses Clients ist seit 0.25.0 gegen eine Installation belegt: In einer AP2-Sitzung aufgezeichnet wurden die Felder hook_event_name, tool_name, tool_input, session_id, prompt_id und das in der Dokumentation nicht genannte tool_use_id (tests/protocols/2026-09-11-AP2-devin-desktop.md). Damit ist die Bedingung aus D-31 erfuellt und der durchsetzende Hook wird mit --fail-closed aufgerufen. Beobachtet ist auch das Blockieren selbst: Ein Lesezugriff auf eine Secret-Datei wurde abgebrochen - in einer Umgebung ohne Regeltexte und bei ausgeschalteter Berechtigungsschranke."
163
+ }
@@ -0,0 +1,79 @@
1
+ # `.devin/` – Laufzeitschicht für Devin Desktop (Devin Local)
2
+
3
+ Dieses Verzeichnis enthält alles, was Devin Local aus dem Repository liest. Es ist die einzige Devin-spezifische Schicht des Frameworks (Tool Independence). Alle Inhalte sind Konkretisierungen der werkzeugneutralen Regeln in `.koolie/core/framework/`.
4
+
5
+ | Datei / Verzeichnis | Zweck | Belegstatus |
6
+ |---|---|---|
7
+ | `rules/*.md` | Regeldateien mit `trigger`-Frontmatter (Kurzfassungen von Core, Overlay, Packs) | `[DOK]` Mechanismus |
8
+ | `skills/<name>/SKILL.md` | Skills, Aufruf `/name`; Frontmatter `name`, `description`, `argument-hint`, `allowed-tools`, `permissions`, `triggers` | `[DOK]` |
9
+ | `agents/<name>.md` | Subagent-Profile (hier: nur lesender Reviewer) | `[DOK]` |
10
+ | `config.json` | Berechtigungen `deny` / `ask` / `allow` (projektweit, versioniert) **und Lebenszyklus-Hooks** (`PreToolUse`-Secret- und Pfadprüfung, `SessionStart`-Statusmeldung). Erzeugt aus `.koolie/core/framework/runtime/permissions.json` und `hooks.json`; hier trägt das Projekt nur die Platzhalterwerte ein. Dass die Hooks in dieser Datei stehen und nicht in einer eigenen, folgt D-32: In einer Sitzung wurde erhoben, dass der Client aus einer eigenen Hook-Datei (`hooks.v1.json`) **keinen** Hook ausführt, aus `config.json` sofort (`AP2-DD-10`) | `[DOK]` Mechanismus; Hook-Ort **in einer Sitzung erhoben** (AP2, 3.9.19); Regelmenge `[EMPF]`; **Schemadetails in Sitzungen erhoben** – der Client liest `permissions.deny` aus dieser Datei und führt den `hooks`-Block aus ihr aus (2026-09-11 und 2026-09-14, Abschnitt 1 des Client Packs). Ungemessen bleibt die Wirkung von `ask` und `allow` |
11
+ | `config.local.json` (nicht versioniert) | persönliche Überschreibungen; im Framework nur zum Verschärfen zulässig | `[DOK]`; **eine Lockerung verhindert der Client nicht** (ERH-11, Zeile B9 des Packs) |
12
+ | `mcp_config.json.example` | Vorlage für MCP-Server (Standard: keine) | `[DOK]` Dateiname; **Struktur am Client erhoben** (2026-09-16): Container `mcpServers`, je Eintrag `command`, `args` und `transport`. **Der Standardablageort des Clients ist der unversionierte** `mcp_config.local.json` – wer einen Server ohne Angabe des Geltungsbereichs hinzufügt, schreibt nicht in die versionierte Datei |
13
+
14
+ ## Nicht enthalten (bewusst)
15
+
16
+ - `workflows/` – Cascade-Workflows werden von Devin Local nicht unterstützt `[DOK]`; Skills übernehmen diese Funktion.
17
+ - `memories` – Devin Local persistiert keine Memories `[DOK]`; Wissen wird ausschließlich über versionierte Regeln, Overlay-Dokumente und Skills bereitgestellt.
18
+ - `.windsurf/` – Legacy-Pfad, wird nicht gepflegt (`.gitignore`).
19
+ - `hooks.v1.json` – seit 0.25.0 **nicht mehr erzeugt** (D-32). Der Client führt aus dieser Datei keinen Hook aus; die Hook-Konfiguration steht in `config.json`. Eine Installation von vor 0.25.0 trägt die Datei weiterhin: `install.py --update` legt die neue Fassung an, **löscht die verwaiste Datei aber nicht**. Sie ist von Hand zu entfernen; der Validator meldet sie bis dahin als Warnung.
20
+
21
+ ## Berechtigungsmodi (Permission Modes) und Framework-Vorgabe
22
+
23
+ | Modus laut Dokumentation `[DOK]` | Verhalten | Framework-Vorgabe |
24
+ |---|---|---|
25
+ | Normal | Lesen automatisch; Schreiben und Befehle fragen | **Standard** für alle Kontrollstufen |
26
+ | Accept Edits | Workspace-Änderungen automatisch; Shell fragt | nur Kontrollstufe niedrig, nur mit Overlay-Freigabe |
27
+ | Smart | Änderungen automatisch; „sichere" Aktionen automatisch | untersagt (D-05), Ausnahme nur über Ausnahmeprozess |
28
+ | Bypass | alles automatisch | **untersagt** (D-05) |
29
+ | Autonomous (mit Sandbox) | Shell und Fetch automatisch im Sandkasten; Dateiänderungen fragen | nur über Ausnahmeprozess und mit Sandbox-Nachweis |
30
+
31
+ ## Sitzungsfreigaben
32
+
33
+ Beim Bestätigen einer Anfrage bietet Devin Local an, die Freigabe einmalig, für die Sitzung, für das Projekt, lokal für das Projekt oder global zu speichern `[DOK]`. Im Framework sind nur **einmalig** und **für die Sitzung** zulässig. Projekt- und globale Freigaben verändern `.devin/config.json` beziehungsweise die Benutzerkonfiguration und erfordern einen Änderungsantrag.
34
+
35
+ ## Regelablage (`rules/`)
36
+
37
+ Die Regelablage enthält die clientspezifische Laufzeitfassung der Framework-Regeln. Die kanonische, werkzeugneutrale Langform liegt in `.koolie/core/framework/`. Bei Widersprüchen gilt die Langform; die Laufzeitfassung wird dann korrigiert.
38
+
39
+ > **Warum dieser Abschnitt hier steht und nicht in `rules/`.** Der Client führt **jede** Datei der Regelablage in seinem Regelregister und macht sie damit ladbar – auch eine, die keine Regel ist. Bis 0.25.0 lag dort eine eigene README; der Client führte sie mit Trigger `manual` (`AP2-DD-17`). Seit 0.26.0 gilt: **Die Regelablage enthält ausschließlich Regeln** (D-36). Registriert wird, was *in* der Ablage liegt, nicht was daneben liegt.
40
+
41
+ ### Mechanismus (Belegstatus)
42
+
43
+ | Aussage | Status |
44
+ |---|---|
45
+ | Devin Local liest Regeldateien aus `.devin/rules/*.md` (bevorzugt) und aus dem Legacy-Pfad `.windsurf/rules/` | `[DOK]` |
46
+ | `AGENTS.md` im Workspace-Root wird als always-on-Regel behandelt und in dieselbe Regel-Engine eingespeist | `[DOK]` |
47
+ | Frontmatter-Felder `description`, `trigger` (`always_on`, `manual`, `model_decision`, `agent`, `glob`), `globs` | `[DOK]` |
48
+ | Root-Regeln werden beim Sitzungsstart geladen, Regeln in Unterverzeichnissen erst beim Zugriff auf das Verzeichnis | `[DOK]` |
49
+ | `.devin/` hat Vorrang vor `.windsurf/`; persönliche `*.local.md`-Dateien überschreiben geteilte Pendants | `[DOK]` |
50
+ | Eine Datei **ohne** Frontmatter führt der Client mit Aktivierung `manual` – gemessen mit `devin rules show` (K-25) | in einer Sitzung erhoben (2026-09-11) |
51
+ | Zeichenlimits: `AGENTS.md` und die Regeln mit `always_on` zusammen höchstens 40.000 Zeichen (verbindlich, D-387); 12.000 Zeichen je Regeldatei, 6.000 Zeichen für `20-project-overlay.md` als SOLL-Grenzen – **Vorgabe des Frameworks, keine Produkteigenschaft** | `[EMPF]`. Die Zahlen stammen aus der Cascade-Dokumentation; für Devin Local nennt der Hersteller **keine** Grenze (zweimal geprüft am 2026-09-11 gegen 3.9.19, `CR-2026-027`). Der Validator prüft weiter dagegen |
52
+ | Bedeutung der Trigger: `always_on` = vollständiger Inhalt in jedem Prompt; `model_decision` = nur Beschreibung im Prompt, Inhalt bei Relevanz; `glob` = bei Lesen/Ändern passender Dateien; `manual` = nur bei ausdrücklicher Erwähnung | `[DOK]` |
53
+
54
+ ### Nummernschema und Ebenenzuordnung (Framework-Konvention `[KONZ]`)
55
+
56
+ | Präfix | Ebene der Prioritätshierarchie | Trigger | Pflege |
57
+ |---|---|---|---|
58
+ | `00-` | 3 Framework Core | `always_on` | Framework Owner |
59
+ | `10-` | 3 Framework Core (Datenschutz/Sicherheit) | `model_decision` | Framework Owner |
60
+ | `15-` | 3 Framework Core (Entwicklungsregeln) | `model_decision` | Framework Owner |
61
+ | `20-` | 4 Project Overlay | `always_on` | Projekt (Overlay Owner) |
62
+ | `30-` | 6 Role Packs | `model_decision` | Modul-Owner |
63
+ | `40-` | 5 Technology Packs | `glob` | Modul-Owner |
64
+
65
+ Die Nummern bilden die Ladereihenfolge im Dateisystem ab, nicht die Priorität. Die Priorität regelt `AGENTS.md` Abschnitt 2 beziehungsweise `.koolie/core/governance/PRIORITY_HIERARCHY.md`.
66
+
67
+ ### Regeln für die Regelablage
68
+
69
+ - **Dort liegt nur, was Regel ist.** Ein erklärender Text gehört hierher, nicht dorthin (D-36). Der Validator meldet eine Datei in der Vorlage der Regelablage, die dem Nummernschema nicht folgt.
70
+ - `AGENTS.md` und die Regeln mit `always_on` bleiben zusammen unter 40.000 Zeichen (verbindlich, D-387). Jede Datei SOLL unter 12.000 Zeichen bleiben, `20-project-overlay.md` unter 6.000 Zeichen, damit die Summe der always-on-Inhalte klein bleibt (Least Context).
71
+ - Dateien mit Endung `.template` sind Vorlagen und werden nicht als Regeln gelesen (Konvention des Frameworks; der Client liest laut Dokumentation `*.md`).
72
+ - Änderungen an `00-`, `10-`, `15-` nur über Framework-Änderungsantrag; `20-` über den Overlay-Prozess des Projekts; `30-`, `40-` über den jeweiligen Modul-Owner.
73
+ - `.koolie/core/tests/scripts/validate-framework.py` prüft Frontmatter, Zeichenlimits und verbotene Inhalte.
74
+
75
+ **Migration aus einer Installation vor 0.26.0:** `install.py --update` legt diese Fassung an, **löscht die alte README der Regelablage aber nicht.** Sie ist von Hand zu entfernen; solange sie liegt, führt der Client sie weiterhin als Regel.
76
+
77
+ ## Validierung
78
+
79
+ `python3 .koolie/core/tests/scripts/validate-framework.py` prüft dieses Verzeichnis (JSON-Gültigkeit, Kernregeln in `config.json`, Frontmatter der Regeln und Skills, Zeichenlimits, verbotene Inhalte).