@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,257 @@
1
+ # Client Pack `openai-codex`
2
+
3
+ | Attribut | Wert |
4
+ |---|---|
5
+ | Modul-ID | `CP-OC` |
6
+ | Ebene | keine – Abbildungsschicht |
7
+ | Version | 0.1.9 |
8
+ | Status | pilot |
9
+ | Owner (Rolle) | `<FRAMEWORK_OWNER>` |
10
+ | Client | OpenAI Codex CLI |
11
+ | Verbindliche Zielversion | `0.156.x` (D-112). Die Spanne ist der Geltungsbereich dieses Packs; der gemessene Punktwert steht in der Zeile darunter (D-113). Für dieses Pack ist die Spanne festgelegt, nicht erhoben – erhoben ist der Punktwert |
12
+ | Geprüfte Clientversion | `0.156.1` – vor dem Erheben festgeschrieben (D-117, D-202). Konto: `plus` |
13
+ | Stand der Produktbeobachtung | **keine**, Stand 2026-09-23. `FW-AK-01` ist für dieses Pack nicht gefahren; es gibt für diesen Client noch keine Quellenliste in Anhang 31.4. Deshalb trägt das Pack keine `[DOK]`-Zeile: Alle Belege stammen aus Messungen am Client selbst, nicht aus seiner Dokumentation |
14
+ | Datum der Prüfung | **2026-09-23** – der Bau (`CR-2026-133`, `tests/protocols/2026-09-23-bau-openai-codex.md`): 30 Messungen am Prompt-Eingang, am Konfigurationsschema, am Regelauswerter und an einer realen Installation, dazu 25 Sitzungsläufe. Zuvor 2026-09-23 – die Erhebung (`CR-2026-132`, `tests/protocols/2026-09-23-erhebung-openai-codex.md`) |
15
+
16
+ > **Belegt, soweit gemessen (Stand 1.4.0).** Die Spalte „Einstufung" nennt die **vorgesehene** Durchsetzungstiefe, die Spalte „Beleg" ihren Nachweisstand: `gemessen` = an diesem Client beobachtet, `[EMPF]` = Vorgabe des Frameworks, `BELEG OFFEN` = noch nicht belegt, mit Grund und Datum in der Zelle – ohne Frist (D-291).
17
+ >
18
+ > **Keine `[DOK]`-Zeile.** Grundlage dieses Packs ist kein Dokumentenabgleich, sondern ein Messmittel: `codex debug prompt-input` gibt die Nachrichten aus, die der Client der nächsten Anfrage voranstellt, ohne eine Anfrage zu stellen (D-344), und `codex execpolicy check` wertet eine Befehlsregel mit dem Auswerter der Engine selbst aus – beides kostenfrei. Eine Messung sagt, was dieser Stand tut; was der Hersteller zusagt, sagt sie nicht. `FW-AK-01` bleibt für dieses Pack offen.
19
+ >
20
+ > 🔴 **Zwei Kernzusagen sind `[NICHT ABBILDBAR]`: `B3` und `B5`.** Damit greift `clients/README.md` Abschnitt 4 vollständig: Begründung hier in Abschnitt 4, dokumentierte Ausnahme im Overlay des aufnehmenden Projekts – und **keine Inbetriebnahme ohne Freigabe durch `<SECURITY_CONTACT>`.**
21
+ >
22
+ > **Wer das Pack einsetzt,** liest zuerst Abschnitt 6 (Installation und die zwei Schritte danach), Abschnitt 1b (die Vertrauensbedingung, ohne die die projektlokale Schicht nicht lädt) und Abschnitt 4 (die Freigabe).
23
+
24
+ ## 1. Pfadabbildung
25
+
26
+ | Rolle des Artefakts | Pfad bei diesem Client | Belegstatus |
27
+ |---|---|---|
28
+ | Wurzel-Anweisungsdatei | `AGENTS.md` | **gemessen** (2026-09-23): Der Prompt-Eingang führt sie als eigene Nachricht `agents_md.instructions`, mit dem vollständigen Text. **Sie ist verdrängbar** – siehe die nächste Zeile |
29
+ | Nutzerlokale Überschreibung | `AGENTS.override.md` | **gemessen, mit Gegenprobe:** Liegt sie im Projekt, steht die Wurzel-Anweisung in **keiner** Nachricht der Sitzung; ohne sie steht sie darin. Sie **ersetzt**, sie ergänzt nicht. `AGENTS.local.md` ist bei diesem Client kein Mechanismus – dieselbe Sonde, kein Treffer. Drei Maßnahmen: Der `deny`-Korb stellt die Datei schreibgeschützt, der Schutz-Hook führt sie in seinen Mustern, **Prüfung 88** meldet sie, wenn sie im Projekt liegt. Das Pack liefert **keine** Beispieldatei dafür aus |
30
+ | Regeldateien | `.codex/rules/*.md` – **ohne Ladebedingung** | **gemessen:** Dieser Client lädt von sich aus **keine** Regeldatei; eine Anweisungsdatei in einem Unterverzeichnis steht nicht vorab im Kontext, und eine Einbindung mit `@` bleibt wirkungslos (drei Sonden, alle negativ). Die Dateien wirken über ihre **Nennung** in der Wurzel-Anweisung (`root_instruction_imports`) – siehe R2 |
31
+ | Befehlsregeln | `.codex/rules/koolie.rules` (erzeugt aus `framework/runtime/permissions.json`) | **gemessen an einer realen Installation:** Der Client lädt `*.rules` aus `.codex/rules/` des Projekts und aus dem Benutzerverzeichnis; ein Befehl, den diese Datei verbietet, wird abgewiesen – und der Client nennt die Begründung dieser Datei wörtlich |
32
+ | Skills | `.codex/skills/<name>/SKILL.md` **und** `.agents/skills/<name>/SKILL.md` | **gemessen mit drei Sonden an drei Orten, eine davon negativ:** Beide Ablagen laden; ein `skills/` an der Projektwurzel lädt **nicht**. Der Prompt-Eingang führt eine Herkunftstabelle der Skillwurzeln. ⚠️ **Skills laden auch ohne Vertrauenseintrag** – der Client sagt es selbst: *„Project-local config, hooks, and exec policies are disabled … but skills still load"* |
33
+ | Subagentenprofile | `.codex/agents/<name>.toml` | **Gestalt gemessen, Abbildung nicht gebaut:** Pflichtfelder `name`, `description`, `developer_instructions`; `permissions` und `tools` werden angenommen, `allowed_tools` verworfen – erhoben über die Meldungen, die ein fehlendes oder unbekanntes Feld erzeugt. Das Framework legt sein Profil weiter als Markdown unter `.codex/agents/` ab; die Wirkung einer Rollendatei ist **unerhoben**, und A1 sagt es |
34
+ | Berechtigungskonfiguration (Pfadseite) | `.codex/config.toml` (erzeugt aus `framework/runtime/permissions.json`) | **gemessen:** Ein Rechteprofil unter `[permissions.<name>]` mit `default_permissions`; die Tabelle `filesystem` bindet **Pfad → Zugriffsart**. Ihre Schlüssel nehmen **kein Muster** (siehe B3), und die Datei lädt nur bei eingetragenem Vertrauen |
35
+ | Hook-Konfiguration | `.codex/hooks.json`, Ereignisse unter dem Schlüssel `hooks` | **gemessen:** `.codex/hooks/hooks.json` wird **nicht** gelesen; eine Datei ohne den Schlüssel `hooks` meldet der Client als *unknown field* und **lädt sie nicht**, startet aber. Ereignisse: `PreToolUse`, `PermissionRequest`, `PostToolUse`, `PreCompact`, `PostCompact`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `SubagentStart`, `SubagentStop`, `Stop`, `Interrupt`. ⚠️ **Jeder Eintrag braucht `"enabled": true`** – ohne das läuft er nicht, und der Client meldet es nicht |
36
+ | MCP-Konfiguration | `.codex/config.toml` unter `[mcp_servers.<name>]` | **gemessen:** Der Client zählt einen projektlokal eingetragenen Server; eine Datei `.mcp.json` bleibt **unbeachtet**. Das Framework liefert **keinen** Server aus |
37
+ | Projektverzeichnis im Hook-Befehl | **keine Variable – das Arbeitsverzeichnis** | **gemessen am Hook-Prozess:** Seine Umgebung führt außer dem Verweis auf das eigene Benutzerverzeichnis des Clients **nichts**; sein **Arbeitsverzeichnis ist das Projektverzeichnis**. Die Abbildung bindet deshalb den relativen Punkt (`hook_project_dir_expr`). Eine Variable, die es nicht gibt, hätte ein Kommando erzeugt, das startet und nichts findet |
38
+
39
+ ## 1a. Semantikabbildung der Berechtigungen
40
+
41
+ Die Regelmenge liegt werkzeugneutral im Kern (`.koolie/core/framework/runtime/permissions.json`) und wird bei der Installation übersetzt (D-18). Was dabei abgebildet wird, steht maschinenlesbar im `manifest.json`; diese Tabelle ist die menschenlesbare Fassung.
42
+
43
+ **Bei diesem Pack zerfällt die Regelmenge in zwei Erzeugnisse** (D-346). Dieser Client kennt keine Regel der Gestalt `Werkzeug(Muster)`. Er bindet **Pfade an eine Zugriffsart** (`.codex/config.toml`) und **Befehle an Präfixmuster** (`.codex/rules/koolie.rules`).
44
+
45
+ | Neutrales Werkzeugverb | Form bei diesem Client | Anmerkung |
46
+ |---|---|---|
47
+ | `read` | – | **Kein Werkzeugname, und kein abbildbares Muster.** Der Lesekorb des Kerns fällt aus; die Begründung steht in B3 und in Abschnitt 4 |
48
+ | `search` | – | Dieser Client führt **kein eigenes Suchwerkzeug**; Suchen läuft über die Shell und damit unter `exec`. Gemessen: Ein Hook-Matcher `Grep` löst in keinem Lauf aus |
49
+ | `write` | Eintrag `"<pfad>" = "read"` in der Tabelle `":workspace_roots"` | Ein Schreibverbot auf einem Teilbaum heißt hier: lesbar, nicht schreibbar. **Nur ohne Muster** – `**/*.lock` fällt aus (B5) |
50
+ | `exec` | `prefix_rule(pattern = [...], decision = "forbidden"\|"prompt"\|"allow")` | Präfixbasiert, **mit dem Auswerter des Clients gemessen**. Grenze wie bei `claude-code`: `git -C . push` trifft `["git","push"]` nicht |
51
+ | `fetch` | – | Kein Mechanismus; der Kern sagt keine Domainbeschränkung zu (B11, D-59). Siehe B10 |
52
+ | `mcp` | – | Keine Rückfrageregel je Server; wirksam ist, dass **kein** Server ausgeliefert wird (X1) |
53
+ | `skill` | – | Kein Mechanismus erhoben |
54
+
55
+ | Weitere Eigenschaft | Wert |
56
+ |---|---|
57
+ | Grundstock des Rechteprofils | `":root" = "read"`; in der Tabelle `":workspace_roots"` `"." = "write"` (seit `1.12.1`, D-412) |
58
+ | Schlüsselform der Pfadseite | absoluter Pfad, `~/`-Pfad oder Sonderziel (`:root`, `:workspace_roots`); die Unterpfade des Arbeitsbereichs als eigene Tabelle `[permissions.<profil>.filesystem.":workspace_roots"]`, relativ, `"."` für den Arbeitsbereich selbst. **Die Form `:workspace/<pfad>` ignoriert Clientversion 0.157** (`K-157`, D-412) |
59
+ | Hook-Werkzeugnamen | `Bash` (Ausführen und damit Lesen und Suchen), `apply_patch` (Schreiben) |
60
+ | Projektverzeichnis im Hook-Befehl | keine Variable – das Arbeitsverzeichnis |
61
+ | Sperrform des Schutz-Hooks | `hookSpecificOutput.permissionDecision = "deny"`, Exit 0 |
62
+
63
+ Die Abbildung ist kein freies Feld: Die Präfixform eines Befehlsverbots muss ein Präfix seiner wörtlichen Form sein, und bei `allow` müssen beide Formen übereinstimmen – sonst scheitert die Installation. Was sich **gar nicht** abbilden lässt, steht in Abschnitt 4 und nicht in einer Ausnahme im Code.
64
+
65
+ ## 1b. Der Vertrauenseintrag – die Bedingung über der ganzen projektlokalen Schicht
66
+
67
+ 🔴 **Konfiguration, Hooks und Befehlsregeln laden nur, wenn das Projekt in der Benutzerkonfiguration des Clients als vertraut eingetragen ist.** A/B gemessen mit zwei Benutzerverzeichnissen und identischem Projekt; der Client sagt es selbst: *„Project-local config, hooks, and exec policies are disabled in the following folders until the project is trusted, but skills still load."*
68
+
69
+ Ein versionierter Träger, der nicht lädt, trägt nichts. Der Eintrag liegt **außerhalb des Repositoriums**, ist je Arbeitsplatz zu setzen und kann vom Framework nicht ausgeliefert werden. Die erzeugte `.codex/config.toml` nennt die Bedingung in ihrem Kopfkommentar; **B1**, **H1** und **H2** tragen sie in ihrer Belegzelle.
70
+
71
+ Der Eintrag wird üblicherweise einmal und beiläufig erteilt: Im Vorbedingungsdurchgang von `1.3.0` lag auf dem Arbeitsplatz des Frameworks ein Eintrag auf das **Benutzerprofil**, der jeden Pfad darunter einschließt – und einer auf den alten Projektnamen.
72
+
73
+ **Die Hooks tragen eine zweite, schärfere Bedingung:** Ein Hook läuft erst, wenn ihm **einzeln vertraut** wurde; das Vertrauen hängt an einem **Hash**. Gemessen am 2026-09-23: Ohne dieses Vertrauen läuft der Schutz-Hook **gar nicht**, der Köderinhalt kommt heraus – und `codex doctor --all` meldet es nicht. **Jede Hebung des Frameworks ändert den Hook und damit den Hash:** Ein Projekt, das nach `install.py --update` nicht erneut vertraut, läuft ab dann ohne Schutz-Hook.
74
+
75
+ ## 2. Fähigkeitsmatrix
76
+
77
+ Einstufung je Zusage: `[TECHNISCH]` erzwungen · `[TEXTUELL]` nur Anweisung · `[NICHT ABBILDBAR]` kein Mechanismus. Regeln in `../README.md` Abschnitt 4.
78
+
79
+ **Zur Belegspalte.** Dieses Pack trägt keine `[DOK]`-Zeile (siehe Vorbemerkung); wo andere Packs eine Quellenkennung führen, steht hier das Wort **gemessen** mit dem Messmittel. Prüfung 73 verlangt eine Quellenkennung nur von `[DOK]`-Zeilen.
80
+
81
+ ### R – Regelladung
82
+
83
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
84
+ |---|---|---|---|---|
85
+ | R1 | Wurzel-Anweisungsdatei wird ungefragt geladen | `AGENTS.md` steht als eigene Nachricht im Prompt jeder Sitzung | `[TECHNISCH]`, **mit benannter Bedingung** | **gemessen** (2026-09-23, `codex debug prompt-input`): Der vollständige Text steht im Prompt. **Die Bedingung ist die Verdrängung:** Liegt `AGENTS.override.md` daneben, steht die Wurzel-Anweisung in **keiner** Nachricht – gemessen mit Gegenprobe. Eine Wurzel-Anweisung, die eine ungeprüfte Datei im selben Verzeichnis ersetzen kann, ist keine Ebene 1, sondern ein Standard. **Prüfung 88** meldet die Datei, der `deny`-Korb stellt sie schreibgeschützt, und der Schutz-Hook führt sie in seinen Mustern |
86
+ | R2 | Regeldateien mit Ladebedingungen | **Kein Mechanismus.** **Ersatz, geliefert:** Die Wurzel-Anweisung **nennt** die Regeldateien mit der Auflage, sie zu Beginn der Sitzung zu lesen (`root_instruction_imports`) | `[NICHT ABBILDBAR]` | **gemessen mit drei Sonden:** Eine Anweisungsdatei in einem Unterverzeichnis steht nicht vorab im Kontext; eine Einbindung mit `@<pfad>` bleibt wirkungslos; nur `AGENTS.md` des Projekts und die gleichnamige Datei im Benutzerverzeichnis des Clients laden ungefragt. Die Mechanik des Ersatzes hat mit diesem Pack ihren ersten Gegenstand (D-348). ⚠️ **Der Ersatz ist schwächer:** Was eine Nennung bewirkt, hängt am Modell und nicht an der Engine |
87
+ | R3 | Regeln an Dateimuster bindbar | **Kein Mechanismus.** **Ersatz:** dieselbe Nennung – ein Technology Pack lädt damit **immer** statt nur bei seinen Dateien | `[NICHT ABBILDBAR]` | wie R2. Die Verschärfung ist benannt: Unbedingtes Laden ist mehr Kontext, keine Lockerung – dieselbe Richtung wie die Abbildung von `model_decision` beim Pack `claude-code`. Ein später hinzugefügtes Technology Pack braucht dafür **kein** erneutes `install.py --update`: Die Nennung führt `<RULES_DIR>/40-*.md` als Muster, *„soweit vorhanden“* (`root_instruction_imports`, D-397) |
88
+ | R4 | Bekanntes Zeichenlimit | **Vorgabe des Frameworks, keine Produkteigenschaft** – Wurzel-Anweisung und die dort genannten Regeln zusammen höchstens 40.000 (verbindlich, D-387); 12.000 je Regeldatei und 6.000 für die Overlay-Laufzeitregel als SOLL-Grenzen, die bei diesem Pack nicht geprüft werden, weil die Regeln über die Wurzel-Anweisung eingebunden sind | `[TEXTUELL]` | `[EMPF]`. **Für diesen Client ist kein Limit erhoben**; der Prompt-Eingang zeigt den vollständigen Text der Wurzel-Anweisung, eine Obergrenze sagt er nicht. `K-19` gilt hier ebenso |
89
+ | R5 | Die geladenen Regelquellen sind vollständig aufzählbar | `codex debug prompt-input` gibt **jede** Nachricht aus, die der Client der nächsten Anfrage voranstellt – ohne eine Anfrage zu stellen | `[TEXTUELL]` | **gemessen, und schärfer als bei beiden Schwesterpacks:** Die Auskunft ist nicht ein Register des Clients über seine Konfiguration, sondern **der Kontext selbst**. Damit ist auch eine **Abwesenheit** ablesbar – die Verdrängung aus R1 ist genau so gefallen. **Trotzdem `[TEXTUELL]`:** Eine Auskunft ist keine Schranke, und sie entsteht nur, wenn ein Mensch das Kommando ausführt |
90
+ | R6 | Keine Importe fremder Werkzeugformate | **Kein Schalter erhoben.** Gemessen ist die Lage: Dieser Client liest `.codex/skills/` und `.agents/skills/` – **nicht** die Skillablage eines fremden Werkzeugs | `[NICHT ABBILDBAR]` | **gemessen** (drei Sonden): Eine dritte, naheliegende Ablage an der Projektwurzel lädt nicht; eine fremde Ablage ist in der Herkunftstabelle des Prompts nicht aufgetaucht. **Ersatz: die Auskunft in Abschnitt 7** – und der gemessene Befund, dass es hier nichts abzuschalten gibt. ⚠️ Das ist eine Aussage über diesen Stand, keine Zusage des Herstellers |
91
+
92
+ ### S – Skills
93
+
94
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
95
+ |---|---|---|---|---|
96
+ | S1 | Versionierte Skills im Repository | `.codex/skills/<name>/SKILL.md` mit Frontmatter | `[TECHNISCH]` | **gemessen:** Ein Skill aus dieser Ablage steht mit Name und Beschreibung im Prompt jeder Sitzung, samt Herkunftswurzel |
97
+ | S2 | Gezielter Aufruf | Der Prompt führt die Skills als Liste mit Beschreibung und Pfad; das Modell liest die `SKILL.md` | `[TEXTUELL]` | **`BELEG OFFEN` für den Aufruf als Werkzeugaufruf** (2026-09-23): Gemessen ist, dass die Skills **im Kontext stehen**; ob dieser Client einen eigenen Werkzeugaufruf oder eine Schrägstrich-Form dafür führt, ist unerhoben. Ohne das ist der Aufruf Modellverhalten |
98
+ | S3 | Werkzeugbeschränkung je Skill | **Unerhoben.** Die Frontmatter-Felder `permissions` und `triggers` erreichen die installierte Fassung **unverändert** – dieses Pack führt sie nicht in `drop_fields` | `[TEXTUELL]` | **`BELEG OFFEN`** (2026-09-23): Ob ein Frontmatter-Feld den Werkzeugbestand eines Skills begrenzt, ist bei diesem Client nicht gemessen, und **ein unbekanntes Frontmatter-Feld meldet er nicht**. Ein geratenes Feld sähe aus wie eine Schranke. **Was trägt, ist die globale Schicht:** die Befehlsregeln und der Schutz-Hook, beide unabhängig vom Skill – weniger als eine Beschränkung je Skill, und das ist die Aussage (Bauform von B01, D-50) |
99
+ | S4 | Schreibende Skills nur benutzergetriggert | Framework-Konvention, statisch geprüft durch `validate-framework.py` | `[TEXTUELL]` | `[EMPF]`. **Ein Feld, mit dem sich ein Skill vom Modellzugriff ausnehmen ließe, ist bei diesem Client unerhoben** – `model_invocation_field` bleibt deshalb leer, und das ist eine Aussage über den Belegstand. **Reichweite:** Die Zusage gilt für die Skill-Ablage, die das Framework schreibt |
100
+ | S5 | Die geladenen Skills sind vollständig aufzählbar, samt Herkunft | Der Prompt-Eingang führt eine **Tabelle der Skillwurzeln** (`r0`, `r1`, …) und je Skill Name, Beschreibung und Pfad relativ zu seiner Wurzel | `[TEXTUELL]` | **gemessen erfüllt, und vollständiger als bei beiden Schwesterpacks:** Die Aufzählung ist nicht ein Kommando, das mehr zeigt als lädt (`devin-desktop`, D-288), sondern **der Sitzungskontext selbst**. Drei Sonden an drei Orten, eine negativ. Zwei eingebaute Skillwurzeln des Clients stehen mit darin – die Auskunft ist damit auch die Stelle, an der man sie sieht |
101
+
102
+ ### B – Berechtigungen
103
+
104
+ > **`[TECHNISCH]` heißt in diesem Block:** Die Engine setzt die Regel durch, **solange der Betriebsmodus die Berechtigungsprüfung nicht abschaltet** (D-35). Für dieses Pack kommen **zwei weitere, gemessene Bedingungen** hinzu:
105
+ >
106
+ > **(1) Der Vertrauenseintrag.** Konfiguration, Hooks und Befehlsregeln laden nur bei eingetragenem Vertrauen (Abschnitt 1b). Ohne ihn trägt von diesem Block **nichts**.
107
+ >
108
+ > **(2) Die Rechtestufe des Betriebssystems.** Auf einem unerhöhten Windows-Arbeitsplatz kann der Sandkasten dieses Clients ein `deny`-Leserecht nicht durchsetzen – und der Client läuft dann gar nicht: *„windows unelevated restricted-token sandbox cannot enforce deny-read restrictions directly; refusing to run unsandboxed"*. Das Verhalten ist fail-closed und damit richtig. Für das Pack heißt es: Die Pfadseite trägt **Schreibverbote**, aber **kein Leseverbot** – der zweite Fall für die Vorbemerkung nach D-35, diesmal abhängig nicht vom **Modus**, sondern vom **Betriebssystem und der Rechtestufe**.
109
+ >
110
+ > **Dort trägt die zweite Linie:** Im Betriebsmodus, der Rückfragen **und** Sandkasten abschaltet, hat der Schutz-Hook denselben Lesezugriff blockiert, den die Berechtigungsschicht durchließ – gemessen mit Gegenlauf, in einem Baum **ohne** Regeltexte. Erste und zweite Linie fallen unter verschiedenen Bedingungen; das ist die empirische Rechtfertigung des Hooks.
111
+ >
112
+ > **(3) Der Startort der Sitzung** (D-408, gemessen am 2026-09-26 mit Clientversion 0.157.0, **ohne Modellaufruf** mit `codex doctor --all` und `codex debug prompt-input`, `tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`). Der Client setzt die Projektwurzel auf die **git-Wurzel** des Startverzeichnisses. Startet die Sitzung in einem Repositorium unterhalb der Installation, lädt er **weder deren Konfigurationsdatei noch deren Wurzel-Anweisung**: Die Konfigurationsschicht meldet dort keinen der Einträge, die sie in der Wurzel meldet, und der Prompteingang trägt keine `AGENTS.md`. Eine eigene Installation im Repositorium lädt. Gemessen ist das **Laden**, nicht die Durchsetzung – die Aufgabenläufe dieses Tages scheiterten an der Anmeldung (D-410). **Nichts meldet einen falschen Startort** (`K-159`).
113
+
114
+ Die mit **Kern** markierten Zeilen sind die Kernzusagen; die Berechtigungsdatei dieses Packs ist TOML und führt keinen Block `_core_rules_integrity` (D-395). Eine Abweichung von `[TECHNISCH]` ist begründungspflichtig.
115
+
116
+ | ID | Zusage des Frameworks | Kern | Mechanismus beim Client | Einstufung | Beleg |
117
+ |---|---|---|---|---|---|
118
+ | B1 | Berechtigungen versioniert im Repository | ja | `.codex/config.toml` (Pfadseite) **und** `.codex/rules/koolie.rules` (Befehlsseite) – beide im Projekt, beide versioniert | `[TECHNISCH]`, **bedingt** | **gemessen:** Beide Träger liegen im Repositorium und werden aus derselben Kernquelle erzeugt. **Die Bedingung steht außerhalb:** Ohne Vertrauenseintrag lädt **keiner von beiden** (Abschnitt 1b, A/B gemessen) |
119
+ | B2 | Verweigern vor Rückfragen vor Erlauben | ja | Die Regelsprache kennt `forbidden`, `prompt` und `allow`; bei mehreren Treffern gilt die **strengste** | `[TECHNISCH]` | **gemessen mit dem Auswerter der Engine selbst** (`codex execpolicy check`, 2026-09-23): Zwei Regeln auf denselben Befehl, `allow` und `forbidden` → `forbidden`; `prompt` und `allow` → `prompt`. **Unabhängig von der Reihenfolge in der Datei** – beide Fälle einmal in jeder Reihenfolge gefahren |
120
+ | B3 | Secret-Dateien per Pfadmuster lesegeschützt | ja | **Kein abbildbarer Mechanismus.** **Ersatz: der Schutz-Hook**, gemessen – siehe Abschnitt 4 | `[NICHT ABBILDBAR]` | **gemessen, und die beiden Gründe verstärken einander.** **(1) Musterform und Versionierbarkeit schließen einander aus:** Ein Musterausdruck ist als Schlüssel nur mit **absolutem** oder `~/`-Vorsatz zulässig – und ein absoluter Pfad in einem versionierten Träger wäre ein Wert dieser Arbeitsstation; ein projektrelativer Schlüssel (`:workspace/…`) nimmt **kein** Muster (*„must be absolute, use `~/…`, or start with `:`"*) – gemessen mit 0.156.1. 🟢 **Nachgemessen am 2026-09-30 mit 0.157.1 (`K-160`, D-495):** Ein projektrelativer Glob unter `:workspace_roots` (`"**/*.env" = "deny"`) wird jetzt **angenommen** – Grund (1) gilt für diese Version nicht mehr. Grund (2) trägt allein: Unerhöht startet `codex sandbox` mit jeder `deny`-Leseregel gar nicht, auch nicht für eine harmlose Datei (*„Restricted read-only access requires the elevated Windows sandbox backend“*); die Kontrolle ohne Regel liest den Köder. **(2) Ein `deny`-Leserecht verlangt den erhöhten Windows-Sandkasten**, und ohne ihn läuft der Client gar nicht. **Ersatz, gemessen:** Der Schutz-Hook blockiert den Lesezugriff auf `.env` – in einem Baum ohne Regeltexte und im Modus ohne Rückfragen und ohne Sandkasten, mit Gegenlauf, in dem der Köderinhalt wörtlich herauskam. **Kernzusage: Abschnitt 4 und Freigabe durch `<SECURITY_CONTACT>`** |
121
+ | B4 | Framework- und Overlay-Artefakte schreibgeschützt | ja | In der Tabelle `":workspace_roots"`: `".koolie/core" = "read"`, `".codex" = "read"`, `"AGENTS.md" = "read"` **und** der Schutz-Hook. **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) – für das Overlay wirkt der Sandkasten damit nicht mehr, Shell-Befehle hält dort nur die Regelschicht | `[TECHNISCH]` für das direkte Schreiben (über den Hook) **und für Shell-Befehle im Sandkasten** (seit `1.12.1` gemessen); **`[TEXTUELL]`, wo der Sandkasten abgeschaltet ist** (M6, B9) | **Der Hook ist gemessen** (2026-09-23, Baum ohne Regeltexte): Ein `apply_patch` auf `.koolie/core/notiz.txt` wurde blockiert; **im Lauf davor, mit der alten Musterform, wurde die Datei angelegt.** Der Befund dahinter: Das Schreibwerkzeug dieses Clients führt **keinen Pfad in einem Feld** – der Pfad steht im **Patchtext**, hinter einem Leerzeichen, und die Pfadmuster des Hooks kannten als Grenze nur den Schrägstrich (D-347). 🟢 **Die Pfadseite ist seit `1.12.1` an ihrer Wirkung gemessen** (D-412, `K-157`), mit Clientversion 0.157.1 und Sandkasten `restricted`: **Ohne Modellaufruf** (`codex sandbox`) sind mit der Tabelle `:workspace_roots` `.koolie/core`, `.koolie/project-overlay` (damals noch in der Tabelle), `.codex` und `AGENTS.md` schreibgeschützt und der übrige Arbeitsbereich schreibbar; **in zwei Sitzungen** (Baum ohne Regeltexte, Hook ohne Vertrauen, also nicht beteiligt) scheitert ein Shell-Befehl auf `.koolie/core` mit *„Zugriff verweigert“*, der Kontrolllauf auf eine freie Datei schreibt. 🔴 **Mit der bis `1.12.0` ausgelieferten Form `:workspace/<pfad>` meldet 0.157 jeden Eintrag als unbekannt und ignoriert ihn – und der GANZE Arbeitsbereich ist schreibgeschützt**, auch die freie Datei. `install.py --update` fasst `config.toml` nicht an; bestehende Installationen ziehen die Tabelle von Hand nach |
122
+ | B5 | CI-, Quality-Gate- und Lockdateien schreibgeschützt | ja | **Kein abbildbarer Mechanismus, und Ersatz: keiner** – der Schutz-Hook deckt diese Pfade nicht; siehe Abschnitt 4 | `[NICHT ABBILDBAR]` | **gemessen:** Die Regeln des Kerns sind hier **Namensmuster** (`**/*.lock`, `**/package-lock.json`, …) und **Platzhalterlisten** (`<CI_CONFIG_PATHS>`, `<QUALITY_GATE_CONFIG_PATHS>`). Für beide gilt dieselbe Schlüsselsyntax wie bei B3: kein Muster ohne absoluten Vorsatz, kein Schlitz auf der Schlüsselseite einer TOML-Tabelle. **Und der Schutz-Hook trägt sie nicht** – seine Muster decken Secrets, die Laufzeitschicht und das Kernverzeichnis, nicht die Lockdateien eines Projekts. **Kernzusage: Abschnitt 4 und Freigabe durch `<SECURITY_CONTACT>`** |
123
+ | B6 | Befehle per Muster verweigerbar | ja | `prefix_rule(pattern = [...], decision = "forbidden")` in `.codex/rules/koolie.rules` | `[TECHNISCH]` | **an einer realen Installation gemessen** (2026-09-23): Der Befehl wurde abgewiesen, **und der Client nannte die Begründung dieser Datei wörtlich** – dieselbe Zurechenbarkeit wie beim `deny`-Korb von `devin-desktop`. Zusätzlich mit dem Auswerter der Engine gegengeprüft: `git push origin main` → `forbidden`, `git status` → `allow`. ⚠️ **Grenze, gemessen und benannt:** `git -C . push` trifft `["git","push"]` **nicht** – dieselbe Grenze wie bei `claude-code`. 🟢 **Über die Ablagen hinweg gemessen am 2026-09-30 (`K-119`, D-496):** Eine Regeldatei im Benutzerverzeichnis des Clients hebt eine des Projekts **nicht** auf – `allow` dort gegen `forbidden` hier und umgekehrt: beide Male abgewiesen, mit der Begründung der verbietenden Datei, das Remote blieb leer; `codex execpolicy check` über beide Dateien liefert in jeder Reihenfolge `forbidden`. Die strengste Entscheidung gewinnt, die Zeile braucht keine Bedingung |
124
+ | B7 | Schreiboperationen fragen zurück | – | `approval_policy = "on-request"` als Standard des Clients | `[TECHNISCH]` für den Modus; **`[TEXTUELL]` für die Regel je Pfad** | **gemessen** (`codex doctor`): Der Standard ist `OnRequest`. **Die `ask`-Regel des Kerns auf alle Schreiboperationen ist hier nicht abbildbar** – dieser Client kennt keine Rückfrageregel je Pfad, nur eine Politik je Sitzung. ⚠️ **Und die projektlokale Schicht kann sie lockern** (B9) |
125
+ | B8 | Netzwerkzugriff standardmäßig unterbunden | – | Netzsandkasten des Clients (`restricted`) **und** die Befehlsregeln auf `curl`, `wget`, `ssh`, `scp` | `[TECHNISCH]` für den Sandkasten und für diese vier Programme; **`[TEXTUELL]` darüber hinaus** | **gemessen** (`codex doctor`: *network sandbox restricted*; die vier Programme stehen im `forbidden`-Korb der erzeugten Regeldatei). ⚠️ **Jedes andere netzfähige Programm ist nicht erfasst**, und die Liste wird bewusst nicht verlängert |
126
+ | B9 | Nutzerlokale Konfiguration kann nur verschärfen | – | **Widerlegt, und zwar im Spiegelbild** | `[TEXTUELL]` | **gemessen mit Gegenprobe** (A/B, zwei Benutzerverzeichnisse): Nicht die nutzerlokale Konfiguration lockert die projektseitige – **die projektlokale lockert den Benutzerstandard.** Mit Vertrauenseintrag schlagen `approval_policy = "never"` und ein Sandkastenmodus ohne Schranken **aus dem Projekt heraus** den Standard des Arbeitsplatzes. Dieselbe Frage, drei Clients, drei Antworten: `claude-code` hält die Richtung, `devin-desktop` kehrt sie um, und hier ist die **lockernde Seite die versionierte**. ⚠️ **Für ein aufnehmendes Projekt heißt das:** Wer die Berechtigungsdatei liest, liest auch, was sie am Arbeitsplatz **aufhebt** |
127
+ | B10 | Externer Abruf auf freigegebene Domains beschränkbar | – | **Kein Mechanismus.** Der Kern sagt die Beschränkung nicht zu (B11, D-59) | `[NICHT ABBILDBAR]` | **Kein Ersatz durch das Framework, und das ist eine Aussage und kein Rest.** Was den Kanal steuert, ist der **Netzsandkasten** des Clients (B8) und die Befehlsregel auf die vier Programme; eine Domainangabe kennt keine der beiden Schichten. **Der organisatorische Ersatz** ist die Freigabezeile des Overlays, und sie hat nach D-65 keine technische Seite |
128
+
129
+ ### H – Hooks
130
+
131
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
132
+ |---|---|---|---|---|
133
+ | H1 | Prüfung vor Werkzeugausführung | `PreToolUse` in `.codex/hooks.json`, Matcher `Bash\|apply_patch` | `[TECHNISCH]`, **doppelt bedingt** | **gemessen an einer realen Installation** (2026-09-23): Der Hook läuft bei jedem Shell- und jedem Schreibaufruf; der Umschlag führt `session_id`, `turn_id`, `transcript_path`, `cwd`, `hook_event_name`, `model`, `permission_mode`, `tool_name`, `tool_input` und `tool_use_id`. **Bedingung 1: `"enabled": true` je Eintrag** – ohne das läuft er nicht, und der Client meldet es nicht. **Bedingung 2: Hook-Vertrauen** – ohne persistiertes Vertrauen läuft er **gar nicht**, der Köderinhalt kommt heraus, und `codex doctor --all` sagt nichts dazu. **Jede Hebung des Frameworks ändert den Hash** (Abschnitt 1b) |
134
+ | H2 | Prüfung kann **blockieren** | `hookSpecificOutput.permissionDecision = "deny"` und **Exit 0** | `[TECHNISCH]` | 🔴 **Gemessen, und der schwerste Befund dieses Packs** (D-347): Die Standardsperrform des Schutz-Hooks – `{"decision": "block"}` und **Exit 2** – bewirkt bei diesem Client **nichts**. Der Client meldet *PreToolUse Failed* und **führt die Operation aus**; im Gegenlauf kam der Köderinhalt wörtlich heraus. **Dieselbe Sperre in der Form, die er liest, blockiert** – gemessen in einem Baum **ohne** Regeltexte und im Modus, der Rückfragen **und** Sandkasten abschaltet, mit Positivkontrolle im selben Baum. Ein Hook, der läuft und dessen Sperrform der Client nicht liest, ist eine Zusage ohne Mechanismus. **Prüfung 86** hält die Kette aus Manifest, Skript und erzeugtem Kommando zusammen |
135
+ | H3 | Statusmeldung beim Sitzungsstart | `SessionStart` mit `hook-overlay-status.py` | `[TECHNISCH]` | **beobachtet** (2026-09-23): Der Hook läuft, und **seine Ausgabe steht im Sitzungskontext** – ein Lauf im Baum ohne Regeltexte hat den Overlay-Status daraus zitiert. Das ist mehr als bei beiden Schwesterpacks, wo die Meldung selbst unbeobachtet blieb |
136
+ | H4 | Eingabeschema und Pfadidentität des Schutz-Hooks | Ereignisprüfung, Pfadidentität über den aufgelösten Pfad, alle Pfadmuster ohne Rücksicht auf Groß-/Kleinschreibung. **`hook_fail_closed` steht auf `false`**. **Grenze:** Ein Hook prüft **vor** dem Zugriff; eine zwischenzeitlich umgebogene Verknüpfung kann er nicht ausschließen (`CR-2026-047` E5, D-397) | `[TECHNISCH]` für die Musterprüfung, **mit zwei benannten Grenzen und der Zeitlücke** | **Das Schema von `PreToolUse` ist aufgezeichnet** (zehn Felder, siehe H1) – **der vollständige Bestand der zwölf Ereignisse ist es nicht**, und deshalb bleibt `hook_fail_closed` auf `false`: Fail-closed bei teilweise erhobenem Schema wäre keine Härtung, sondern eine Sitzung, die bei der ersten unbekannten Eingabeform blockiert (D-31). **Zweite Grenze, gemessen und behoben:** Das Schreibwerkzeug führt **keinen Pfad in einem Feld**; er steht im Patchtext hinter einem Leerzeichen. Die Pfadmuster des Hooks erkennen deshalb auch das Leerzeichen als Grenze – eine **Verschärfung für alle drei Packs** (D-347) |
137
+
138
+ ### A – Agentenprofile
139
+
140
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
141
+ |---|---|---|---|---|
142
+ | A1 | Rein lesendes Reviewprofil | **Nicht abgebildet.** Der Client liest Rollendateien als `.codex/agents/<name>.toml`; das Framework legt sein Profil als Markdown ab | `[NICHT ABBILDBAR]` | **Die Gestalt ist gemessen, die Wirkung nicht** (2026-09-23): Pflichtfelder `name`, `description`, `developer_instructions`; `permissions` wird als Tabelle angenommen, `allowed_tools` verworfen. **Nicht gemessen ist, ob und wie ein Feld den Werkzeugbestand eines Unteragenten begrenzt** – und dieser Client startet Unteragenten (der Prompt führt sechs Werkzeuge dafür). **Ersatz, benannt:** Der Schutz-Hook und die Befehlsregeln wirken unabhängig vom Profil; ob sie einen Unteragenten **erfassen**, ist ebenfalls unerhoben. Eine Abbildung ohne Messung wäre dieselbe Lage, aus der `AP2-CC-13` kam |
143
+ | A2 | Rein lesendes Analyseprofil für Modus M1 | **Kein eingebautes Profil erhoben** | `[NICHT ABBILDBAR]` | **Ersatz, benannt:** der Standardmodus des Clients (`approval_policy = "on-request"`, Sandkasten lesend) – er ist gemessen und wirkt ohne Profil. ⚠️ **Das ist ein Modus und kein Profil**, und der Unterschied ist, dass er für die ganze Sitzung gilt |
144
+
145
+ ### M – Modi und Sitzungsfreigaben
146
+
147
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
148
+ |---|---|---|---|---|
149
+ | M1 | Standardmodus fragt bei Schreiben und Befehlen zurück | `approval_policy = "on-request"`, Sandkasten `read-only` | `[TECHNISCH]` | **gemessen** (`codex doctor`): *approval OnRequest · restricted fs + restricted network*. ⚠️ **Der nicht-interaktive Lauf kennt keine Rückfrage** – dort wird abgewiesen statt gefragt; das ist eine Verschärfung und kein Messwert über den interaktiven Betrieb |
150
+ | M2 | Modus ohne Rückfragen ausschließbar | **Eine Sperre des Modus ist nicht erhoben.** Der Modus selbst heißt `--dangerously-bypass-approvals-and-sandbox` und bezeichnet sich als gefährlich | `[TEXTUELL]` | **Was gemessen ist, ist die Wirkung der zweiten Linie:** In genau diesem Modus hat der Schutz-Hook den Zugriff blockiert, den die Berechtigungsschicht durchließ. ⚠️ **Die Sperre des Modus bleibt unerhoben** – eine Organisationsebene, die ihn ausschlösse, ist für diesen Client nicht gemessen |
151
+ | M3 | Freigabe auf die Sitzung begrenzbar | Der Client kennt eine Freigabe „für die Sitzung" und eine über ein Befehlspräfix | `[TEXTUELL]` | **`BELEG OFFEN`** (2026-09-23): Die Stufen sind in der Bedienoberfläche des Clients benannt; **im nicht-interaktiven Betrieb ist keine davon messbar** – eine Rückfrage an einen Menschen lässt sich so nicht messen. Dieselbe Enthaltung wie bei `devin-desktop` für `ask` und `allow` (D-280) |
152
+ | M4 | Eigener Planungsmodus für Modus M2 | **Unerhoben:** ob der Client einen Planungsmodus mit eigener Plan-Ablage außerhalb des Repositorys führt. Bis dahin ist die Ablage von `fw-plan` und `fw-bugfix-prepare` die Sitzungsausgabe | `[TEXTUELL]` | **`BELEG OFFEN`** (2026-09-25, `K-149`): nicht gemessen; eine Quellenliste gibt es für diesen Client nicht |
153
+ | M6 | Modus mit selbsttätiger Übernahme von Dateiänderungen begrenzbar | Sandkastenmodus `workspace-write` – nach D-05 nur über dokumentierte Ausnahme bei Kontrollstufe niedrig zulässig | `[TEXTUELL]` | `[EMPF]` für die Beschränkung; **eine Abschaltung des Modus ist nicht erhoben**. ⚠️ **Und die projektlokale Schicht kann ihn setzen** (B9) – das ist der Unterschied zu beiden Schwesterpacks |
154
+ | M7 | Modus, der selbst beurteilt, was sicher ist, begrenzbar | **Ein solcher Modus ist für diesen Client nicht erhoben** | `[TEXTUELL]` | **Ersatz, benannt:** Es gibt keinen – die Zusage hat hier keinen Gegenstand, solange kein selbst beurteilender Modus erhoben ist. Eine Zusage ohne Gegenstand ist keine erfüllte Zusage; sie steht hier, damit sie nicht als eine gelesen wird |
155
+
156
+ ### X – Externe Anbindung
157
+
158
+ | ID | Zusage des Frameworks | Mechanismus beim Client | Einstufung | Beleg |
159
+ |---|---|---|---|---|
160
+ | X1 | Keine externe Anbindung ohne Einzelfreigabe | Das Framework liefert **keinen** MCP-Server aus; ein Server wäre eine Tabelle `[mcp_servers.<name>]` in der Berechtigungsdatei | `[TEXTUELL]`, **mit einer benannten Grenze** | **gemessen:** Ohne Eintrag zählt der Client **null** Server; ein projektlokal eingetragener wird gezählt. **Die Grenze:** Eine Rückfrageregel je MCP-Werkzeug – die `ask`-Regel des Kerns – ist bei diesem Client **nicht abbildbar**. Was trägt, ist die Abwesenheit des Eintrags, und die ist eine Framework-Entscheidung, keine Schranke des Clients. ⚠️ **Die Benutzerkonfiguration kann Server führen**, und sie liegt außerhalb des Repositoriums (Abschnitt 7.2) |
161
+ | 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-23 (`K-20`, D-292). **Kein Ersatz durch das Framework:** Was ein Client indexiert und wohin er es gibt, sieht weder die Installation noch der Validator. Nach D-41 eine **Fähigkeitszusage**, keine Kernzusage |
162
+
163
+ ## 3. Zusammenfassung der Durchsetzungstiefe
164
+
165
+ > **Zählregel (normativ für diese Tabelle):** Eine Zeile zählt bei ihrer **schwächsten** Einstufung. Trägt sie zwei Angaben je Zugriffskanal, zählt sie als die schwächere (D-47). Prüfung 31 rechnet die Summen aus der Matrix nach.
166
+
167
+ | Klasse | Anzahl | davon Kernzusagen |
168
+ |---|---|---|
169
+ | `[TECHNISCH]` | **10 von 35** | 3 von 6 (B1, B2, B6) |
170
+ | `[TEXTUELL]` | **16 von 35** | 1 von 6 (B4 – Shell und Unterprozess) |
171
+ | `[NICHT ABBILDBAR]` | **9 von 35** | 2 von 6 (B3, B5) |
172
+
173
+ **Belegstand:** `BELEG OFFEN` sagen **S2**, **S3**, **M3** und **M4**, dazu **X2** dauerhaft. Das ist der schwächste Belegstand der drei Packs, weil dieses Pack am Tag seines Baus entstanden ist: Die Zeilen, die eine reale Installation brauchen, sind gefahren (B2, B4, B6, H1 bis H3, R1, R5, S1, S5), die übrigen nicht. ⚠️ **Die Produktbeobachtung fehlt ganz** – `FW-AK-01` ist für diesen Client nicht gefahren, und es gibt keine Quellenliste.
174
+
175
+ ## 4. Kernzusagen ohne technische Durchsetzung
176
+
177
+ **Zwei der sechs Kernzusagen sind `[NICHT ABBILDBAR]`.** Damit greift `clients/README.md` Abschnitt 4 vollständig: Begründung hier, dokumentierte Ausnahme im Overlay des aufnehmenden Projekts (`.koolie/project-overlay/exceptions/EXCEPTIONS.md`) – und **keine Inbetriebnahme ohne Freigabe durch `<SECURITY_CONTACT>`.**
178
+
179
+ | ID | Einstufung | Warum der Client das nicht durchsetzt | Ersatzmaßnahme | Freigabe |
180
+ |---|---|---|---|---|
181
+ | B3 | `[NICHT ABBILDBAR]` | **Zwei gemessene Gründe, die einander verstärken.** (1) Die Schlüssel der Pfadrechteschicht nehmen ein Muster nur mit **absolutem** oder `~/`-Vorsatz an; ein projektrelativer Schlüssel nimmt keines. **Musterform und Versionierbarkeit schließen einander aus** – und B1 verlangt die Versionierbarkeit. (2) Ein `deny`-Leserecht verlangt den **erhöhten Windows-Sandkasten**; ohne ihn weist der Client den Start ab (fail-closed). Mit 0.157.1 entfällt (1) – der projektrelative Glob wird angenommen –, (2) trägt allein (`K-160`, D-495) | **Ersatz: der Schutz-Hook, und er ist gemessen.** Er blockiert den Lesezugriff auf `.env` in einem Baum ohne Regeltexte und im Modus ohne Rückfragen und ohne Sandkasten, mit Positivkontrolle. ⚠️ **Er trägt die Bedingungen aus H1** – `enabled` und Hook-Vertrauen | `<SECURITY_CONTACT>` |
182
+ | B5 | `[NICHT ABBILDBAR]` | Die Regeln des Kerns sind hier **Namensmuster** (`**/*.lock`) und **Platzhalterlisten** (`<CI_CONFIG_PATHS>`, `<QUALITY_GATE_CONFIG_PATHS>`). Für die Muster gilt derselbe Grund wie bei B3; für die Listen kommt hinzu, dass die Schlüsselseite einer TOML-Tabelle keinen Ausfüllschlitz kennt | 🔴 **Kein vollständiger Ersatz, und das ist die Aussage.** Der Schutz-Hook deckt Secrets, die Laufzeitschicht und das Kernverzeichnis – **nicht** die Lockdateien eines Projekts. Was bleibt, ist die Regelschicht: Die Regeltexte verbieten es, und ein Verstoß ist Modellverhalten. **Ein Projekt mit hoher Kontrollstufe sollte diesen Client dafür nicht einsetzen** | `<SECURITY_CONTACT>` |
183
+
184
+ **B1, B2 und B6 sind `[TECHNISCH]`** – B2 und B6 an der Engine selbst gemessen, B1 über die Lage der Träger, mit der Bedingung des Vertrauenseintrags. **B4** ist es im Kanal *direktes Schreiben* (über den Schutz-Hook); Shell und Unterprozess bleiben `[TEXTUELL]` wie bei beiden Schwesterpacks.
185
+
186
+ ## 5. Bekannte Abweichungen im Verhalten
187
+
188
+ - **Die Berechtigungsschicht zerfällt in zwei Träger; sechs Prüfungen erreichen dieses Pack deshalb nicht, zwei weitere nur zum Teil** (D-346). Die Ausgabeform dieses Packs ist `toml` (`permissions_format`), nicht `json`: Es gibt hier keine Körbe aus `Werkzeug(Muster)`-Zeilen und keinen Block `_core_rules_integrity` – ein unbekannter Schlüssel in der Konfigurationsdatei wird von diesem Client gemeldet und mit `--strict-config` zum Fehler, eine Integritätsliste darin wäre also ein Fremdkörper. Nicht erreicht: **Prüfung 2**, **Prüfung 37**, **Prüfung 42**, **Prüfung 43**, **Prüfung 54** und **Prüfung 72**. 🔴 **Bis `1.12.1` stand hier „76“** – die Menge des Prüfapparats führte die Nummer falsch; die Prüfung der Kernlage erreicht dieses Pack, die Prüfung „jeder Skill in der Berechtigungsdatei“ nicht, und sie enthielt sich still, weil die TOML-Datei nicht als JSON lesbar ist (D-416). Nur zum Teil: **Prüfung 59** und **Prüfung 89** – ihr Gegenstand (c), der Abgleich der ausgeschlossenen und der Nur-Lese-Pfade des Overlays mit dem `deny`-Korb, entfällt; ihre Gegenstände (a) und (b), der Abgleich mit der Laufzeitfassung, laufen auch hier (D-358). Ein Globwert erreicht `.codex/config.toml` ohnehin nur als Teilbaum (`verz/**`) oder als einzelner Dateiname; ein Namensmuster wie `**/*.tfstate` bleibt `[NICHT ABBILDBAR]` wie `B3`. Der Prüfapparat hält diese Liste gegen seine eigene Liste der formatgebundenen Prüfungen – sie wächst und schrumpft mit ihm, nicht mit diesem Absatz.
189
+ - **Die nutzerlokale Wurzel-Anweisung ersetzt, sie ergänzt nicht.** Deshalb liefert dieses Pack für sie **keine** Beispieldatei aus, während beide Schwesterpacks eine mitgeben; eine Vorlage, die zum Anlegen dieser Datei auffordert, wäre eine Anleitung zum lautlosen Abschalten der Ebene 1.
190
+ - **Die projektlokale Schicht kann lockern** (B9). Bei `claude-code` kann eine nutzerlokale Konfiguration nur verschärfen, bei `devin-desktop` setzt sich die Benutzerkonfiguration in beide Richtungen durch – hier ist die **lockernde Seite die versionierte**. Wer die Berechtigungsdatei liest, liest auch, was sie am Arbeitsplatz aufhebt.
191
+ - 🔴 **Ohne Vertrauenseintrag trägt die gesamte projektlokale Schicht nichts** – Konfiguration, Hooks und Befehlsregeln zusammen. Skills laden trotzdem. Das ist die schärfste Bedingung aller drei Packs, und sie liegt außerhalb des Repositoriums.
192
+ - **Der Hook braucht sein eigenes Vertrauen, und es hängt an einem Hash.** Jede Hebung des Frameworks ändert den Hook und damit den Hash; ein Projekt, das danach nicht erneut vertraut, läuft ohne Schutz-Hook, und nichts meldet es. Das gehört in die Übernahme- und in die Hebungsanleitung des aufnehmenden Projekts.
193
+ - **Der Hook-Prozess bekommt kein Projektverzeichnis in der Umgebung**, sondern steht darin. Die Abbildung bindet deshalb den relativen Punkt. Ein Kommando mit einer Variable hätte gestartet und nichts gefunden.
194
+ - **Ein falsch geschriebenes Sonderziel der Pfadseite fällt lautlos durch.** Gemessen: `:quatsch/x` wird angenommen und steht danach im wirksamen Rechteprofil. Das ist das Gegenstück zur guten Nachricht über unbekannte **Schlüssel** – die werden benannt; ein unbekannter **Wert** eines bekannten Schlüssels nicht.
195
+ - **Zwei Mechaniken des Kerns haben mit diesem Pack ihren ersten Gegenstand:** `rule_frontmatter: "comment"` und `root_instruction_imports` (D-348).
196
+
197
+ ## 6. Installation und Prüfung
198
+
199
+ 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:
200
+
201
+ ```text
202
+ python .koolie/core/install.py --target /pfad/zum/projekt --client openai-codex
203
+ ```
204
+
205
+ Danach im Projekt:
206
+
207
+ ```text
208
+ python .koolie/core/tests/scripts/validate-framework.py
209
+ ```
210
+
211
+ Ein Projekt, das den Kern schon trägt, wird mit `--update` gehoben; `install.py --client openai-codex` ohne `--target` installiert im aktuellen Verzeichnis.
212
+
213
+ 🔴 **Danach, und ohne das trägt nichts von Abschnitt B:** das Projekt in der Benutzerkonfiguration des Clients als **vertraut** eintragen und dem Schutz-Hook **einzeln vertrauen** – nach jeder Hebung erneut. Beides liegt außerhalb des Repositoriums und kann vom Framework nicht ausgeliefert werden (Abschnitt 1b); `install.py` nennt beide Schritte nach der Installation und das erneute Hook-Vertrauen nach jeder Hebung (D-395).
214
+
215
+ Vor der ersten produktiven Nutzung sind die Basistests des Testkatalogs (`.koolie/core/tests/TEST_CATALOG.md`, Kennzeichnung „Basis") gegen diesen Client zu fahren und zu protokollieren.
216
+
217
+ ## 7. Anweisungs- und Konfigurationsquellen außerhalb des Projekts
218
+
219
+ **Pflichtabschnitt.** Er führt, 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).
220
+
221
+ **Erhebungsstand: 2026-09-23**, Clientversion `0.156.1`, erhoben mit `codex debug prompt-input`, `codex doctor --all`, `codex execpolicy check` und Sitzungsläufen gegen ein **eigenes Benutzerverzeichnis im Ablagebereich** (`tests/protocols/2026-09-23-bau-openai-codex.md`).
222
+
223
+ ### 7.1 Anweisungsquellen
224
+
225
+ | Quelle | Ladebedingung | Belegstatus | Maßnahme des Frameworks |
226
+ |---|---|---|---|
227
+ | `<Benutzerverzeichnis des Clients>/AGENTS.md` | in **jeder** Sitzung, zusätzlich zur Wurzel-Anweisung des Projekts | **Gemessen** (2026-09-23): Eine Sonde darin stand im Prompt einer Sitzung, die im Projekt nur ihre eigene `AGENTS.md` hatte | **keine** – sie bleibt Auskunft. Das Framework kann eine Datei außerhalb des Repositoriums nicht abschalten, und ein Schalter dafür ist nicht erhoben |
228
+ | `<Benutzerverzeichnis des Clients>/skills/**` | in jeder Sitzung; die Herkunftstabelle des Prompts führt sie | **Gemessen** (2026-09-23): Die Wurzeltabelle des Prompts nennt sie neben den beiden projektlokalen Ablagen | **keine** – Auskunft. Sie ist aber sichtbar: Die Tabelle nennt je Skill seine Wurzel, und damit ist die Herkunft jeder Sitzung ablesbar (S5) |
229
+ | `<Benutzerverzeichnis des Clients>/rules/*.rules` | Befehlsregeln des Arbeitsplatzes | **Gemessen** (2026-09-23): Eine ungültige Datei dort bricht den Sitzungsstart mit einer Meldung ab, die sie nennt | **keine** – Auskunft. ⚠️ **Sie steht neben den projektlokalen Regeln**, und welche Seite bei einem Treffer gewinnt, ist **unerhoben** |
230
+ | `.agents/skills/**` im Projekt | zweite projektlokale Skillablage | **Gemessen** (2026-09-23) | **keine** – das Framework schreibt nur `.codex/skills/`. Die zweite Ablage ist Gegenstand dieser Auskunft (D-34) |
231
+
232
+ ### 7.2 Konfigurationsquellen
233
+
234
+ Berechtigungen, Hooks und Einstellungen außerhalb des Repositoriums betreffen genau die Linien, auf denen B1 bis B6 stehen (`CR-2026-038`).
235
+
236
+ | Quelle | Wirkung | Belegstatus |
237
+ |---|---|---|
238
+ | `<Benutzerverzeichnis des Clients>/config.toml` | **Trägt den Vertrauenseintrag, ohne den die gesamte projektlokale Schicht nicht lädt** – und führt daneben dieselben Schlüssel wie die Projektdatei: Rechteprofile, MCP-Server, Modellwahl | **Gemessen in beiden Richtungen** (A/B mit zwei Benutzerverzeichnissen). ⚠️ **Der Vertrauenseintrag kann auf ein ganzes Elternverzeichnis lauten** und schließt dann jeden Pfad darunter ein – auf dem Arbeitsplatz des Frameworks ist genau das vorgefunden worden |
239
+ | Das Hook-Vertrauen (Hash je Hook) | **Ohne es läuft der Schutz-Hook nicht**, und nichts meldet es | **Gemessen mit Gegenlauf** (2026-09-23): ohne Vertrauen kam der Köderinhalt heraus, mit Vertrauen wurde blockiert |
240
+
241
+ ### 7.3 Was dieser Abschnitt nicht leistet
242
+
243
+ **Eine Auskunft ist keine Schranke** – und bei diesem Client ist sie die **einzige** Maßnahme: Für keine der vier Anweisungsquellen ist ein Schalter erhoben, mit dem das Framework sie abstellen könnte. Das ist der Unterschied zu beiden Schwesterpacks, die eine Importsteuerung ausliefern (R6).
244
+
245
+ **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.
246
+
247
+ ## 8. Änderungsverlauf
248
+
249
+ | Version | Datum | Änderung | Autor (Rolle) |
250
+ |---|---|---|---|
251
+ | 0.1.0 | 2026-09-23 | **Angelegt (`CR-2026-133`, D-346 bis D-349).** Das dritte Client Pack, und das erste, dessen Belege sämtlich aus Messungen am Client stammen statt aus seiner Dokumentation. **Zwei Kernzusagen sind `[NICHT ABBILDBAR]`** – `B3`, weil Musterform und Versionierbarkeit einander ausschließen und ein `deny`-Leserecht den erhöhten Windows-Sandkasten verlangt; `B5` aus demselben Grund und ohne Ersatz im Schutz-Hook. **Die Sperrform des Schutz-Hooks war bei diesem Client wirkungslos** und ist berichtigt; die Pfadmuster des Hooks kannten als Grenze nur den Schrägstrich und trafen den Patchtext des Schreibwerkzeugs nicht. **Drei neue Prüfungen** (86, 87, 88) | `<FRAMEWORK_OWNER>` |
252
+ | 0.1.4 | 2026-09-25 | Der Satz über die mit **Kern** markierten Zeilen nennt, dass diese Berechtigungsdatei keinen Block `_core_rules_integrity` führt (`CR-2026-147`, D-402; seit D-395 verlangt ihn nur eine JSON-Datei). ⚠️ Die Fassungen `0.1.1` bis `0.1.3` haben hier keine Zeile; sie stehen im Änderungsverlauf des Frameworks zu `1.9.1` bis `1.10.0`. Zeile M4 (Planungsmodus) ergänzt, auf die `fw-plan` und `fw-bugfix-prepare` für die Planablage verweisen: `[TEXTUELL]`, `BELEG OFFEN`; Summen und Belegstand nachgezogen (K-149) | `<FRAMEWORK_OWNER>` |
253
+ | 0.1.5 | 2026-09-26 | Vorbemerkung des B-Blocks, Bedingung (3): **der Startort**, gemessen mit Clientversion 0.157.0 ohne Modellaufruf – im Repositorium unterhalb der Installation laden weder Konfiguration noch Wurzel-Anweisung (D-408). 🔴 **`B4`: Befund `K-157`** – 0.157.0 ignoriert die `:workspace`-Pfadeinträge (`CR-2026-148`) | `<FRAMEWORK_OWNER>` |
254
+ | 0.1.6 | 2026-09-26 | 🟢 **`K-157` beantwortet: das Sonderziel heißt `:workspace_roots`** (D-412, `CR-2026-149`) – Unterpfade als eigene Tabelle; keine Startwarnung mehr. `B4`: die Pfadseite gemessen (Sandkasten, ohne Modell und in zwei Sitzungen), `[TECHNISCH]` auch für Shell-Befehle im Sandkasten. Mit der alten Form war unter 0.157 der ganze Arbeitsbereich schreibgeschützt. `B3`: Vorbehalt `K-160` (dokumentierte `deny`-Globs, nicht nachgemessen). Gemessen mit 0.157.1 – außerhalb der Zielspanne `0.156.x`, die unverändert bleibt | `<FRAMEWORK_OWNER>` |
255
+ | 0.1.7 | 2026-09-26 | Abschnitt 5: **Prüfung 72 statt 76** unter den nicht erreichten Prüfungen – die Menge des Prüfapparats führte die Nummer falsch, und Prüfung 72 enthielt sich bei diesem Pack still (`CR-2026-150`, D-416) | `<FRAMEWORK_OWNER>` |
256
+ | 0.1.8 | 2026-09-29 | Zeile B4 folgt dem Erzeugnis: Die Tabelle `:workspace_roots` führt das Overlay seit `1.17.0` nicht mehr, es sperrt allein der Schutz-Hook (D-448) – für Shell-Befehle im Sandkasten ist das Overlay damit nur noch normativ geschützt (`CR-2026-158`, D-468) | `<FRAMEWORK_OWNER>` |
257
+ | 0.1.9 | 2026-09-30 | **Zwei Messungen an 0.157.1** (`CR-2026-163`, D-495, D-496, `K-119`, `K-160`). Zeile B3: Der projektrelative Glob wird angenommen, das `deny`-Leserecht verlangt weiter den erhöhten Sandkasten – die Einstufung bleibt. Zeile B6: Über die Ablagen hinweg gewinnt die strengste Entscheidung | `<FRAMEWORK_OWNER>` |
@@ -0,0 +1,208 @@
1
+ {
2
+ "_comment": "Maschinenlesbare Pfad- und Semantikabbildung dieses Client Packs. Die menschenlesbare Fassung mit Faehigkeitsmatrix steht in CLIENT_PACK.md. DREI DINGE SIND HIER ANDERS ALS BEI DEN BEIDEN AELTEREN PACKS, und alle drei sind gemessen (CR-2026-133, D-346 bis D-348): (1) Die Berechtigungsschicht zerfaellt in ZWEI Traeger - Pfade in der Konfigurationsdatei (TOML, permissions_format), Befehle in einer eigenen Regeldatei (exec_policy_file). Es gibt hier keine Koerbe aus Werkzeug(Muster)-Zeilen, und deshalb auch kein permission_tools. (2) Die gesamte projektlokale Schicht - Konfiguration, Hooks und Befehlsregeln - laedt NUR, wenn das Projekt in der Benutzerkonfiguration des Clients als vertraut eingetragen ist; Skills laden auch ohne. (3) Die Sperrform des Schutz-Hooks ist eine andere: Die bisherige Form blockiert bei diesem Client NICHTS, gemessen mit Gegenlauf. hook_block_form sagt die Form, die er liest.",
3
+ "client": "openai-codex",
4
+ "runtime_dir": ".codex",
5
+ "root_instruction_file": "AGENTS.md",
6
+ "permissions_file": ".codex/config.toml",
7
+ "permissions_format": "toml",
8
+ "_permissions_format_note": "Die Ausgabeform der Berechtigungsdatei. Der Standard ist 'json'; ein Pack, das eine andere Form braucht, SAGT sie und erbt sie nicht durch Schweigen. Pruefung 87 fuehrt die Pruefungen auf, die an die Form 'json' gebunden sind und dieses Pack deshalb nicht erreichen - eine erklaerte Luecke statt einer stillen.",
9
+ "exec_policy_file": ".codex/rules/koolie.rules",
10
+ "_exec_policy_file_note": "Die zweite Haelfte der Berechtigungsschicht. Gemessen am 2026-09-23: Der Client laedt Regeldateien mit der Endung .rules aus <Projekt>/.codex/rules/ und aus dem Benutzerverzeichnis des Clients; ein Befehl, den diese Datei verbietet, wird abgewiesen, und der Client nennt die Begruendung dieser Datei woertlich. Sie liegt projektlokal und ist damit versioniert - das ist die Haelfte von B1, die dieser Client traegt.",
11
+ "skills_dir": ".codex/skills",
12
+ "agents_dir": ".codex/agents",
13
+ "pack_runtime_dir": ".codex/rules",
14
+ "has_rule_triggers": false,
15
+ "core_skill_prefix": "fw-",
16
+ "core_paths": [
17
+ ".codex/README.md"
18
+ ],
19
+ "seed_paths": [],
20
+ "project_owned_hint": [
21
+ ".codex/rules/2N-overlay-<name>.md (Overlay-Regelerweiterungen)",
22
+ ".codex/rules/40-tech-<name>.md (Packs ohne Quelle im Kern)",
23
+ ".codex/config.toml (Projektwerte, MCP-Server, eigene Schluessel)",
24
+ ".codex/skills/prj-*/ (projektspezifische Skills)",
25
+ ".koolie/project-overlay/tech-packs/** (projekteigene Packs)",
26
+ ".koolie/project-overlay/** (das gesamte Overlay)"
27
+ ],
28
+ "_post_steps_note": "Schritte, die install.py nach einer Installation (post_install_steps) und nach einer Hebung (post_update_steps) zusaetzlich nennt, weil ohne sie ein Teil des Packs nicht traegt - hier die Vertrauensbedingung aus CLIENT_PACK.md Abschnitt 1b. Beides liegt ausserhalb des Repositoriums; das Werkzeug kann es nennen, nicht setzen (K-123, D-395).",
29
+ "post_install_steps": [
30
+ "Das Projekt in der Benutzerkonfiguration des Clients als vertraut eintragen - ohne den Eintrag laden Konfiguration, Hooks und Befehlsregeln nicht (CLIENT_PACK.md Abschnitt 1b).",
31
+ "Dem Schutz-Hook einzeln vertrauen - ohne dieses Vertrauen laeuft er nicht, und nichts meldet es (CLIENT_PACK.md Abschnitt 1b)."
32
+ ],
33
+ "post_update_steps": [
34
+ "Dem Schutz-Hook ERNEUT vertrauen: Das Vertrauen haengt an einem Hash, und eine Hebung aendert den Hook. Ohne neues Vertrauen laeuft das Projekt ab jetzt ohne Schutz-Hook, und nichts meldet es (CLIENT_PACK.md Abschnitt 1b)."
35
+ ],
36
+ "runtime_placeholders": {
37
+ "<RUNTIME_DIR>": ".codex",
38
+ "<ROOT_INSTRUCTION_FILE>": "AGENTS.md",
39
+ "<ROOT_INSTRUCTION_LOCAL>": "AGENTS.override.md",
40
+ "<PERMISSIONS_FILE>": ".codex/config.toml",
41
+ "<SKILLS_DIR>": ".codex/skills",
42
+ "<RULES_DIR>": ".codex/rules",
43
+ "<AGENTS_DIR>": ".codex/agents",
44
+ "<HOOKS_FILE>": ".codex/hooks.json",
45
+ "<MCP_FILE>": ".codex/config.toml",
46
+ "<CLIENT_NAME>": "OpenAI Codex CLI"
47
+ },
48
+ "_runtime_placeholders_note": "<ROOT_INSTRUCTION_LOCAL> ist bei diesem Client KEINE Ergaenzung, sondern eine VERDRAENGUNG: Liegt AGENTS.override.md im Projekt, steht die Wurzel-Anweisung des Frameworks in KEINER Nachricht der Sitzung - gemessen mit Gegenprobe am 2026-09-23. Deshalb liefert dieses Pack fuer sie KEINE Beispieldatei aus (shared_core fuehrt sie nicht), waehrend der deny-Korb des Kerns sie schreibgeschuetzt stellt, und deshalb meldet Pruefung 88 ihr Vorhandensein im Projektbaum (bis 1.4.1 stand hier 86 - die Pruefung auf die Sperrform des Hooks). <MCP_FILE> zeigt auf dieselbe Datei wie <PERMISSIONS_FILE>: Dieser Client fuehrt MCP-Server als Tabelle seiner Konfiguration und liest keine eigene MCP-Datei (gemessen: .mcp.json bleibt unbeachtet).",
49
+ "root_instruction_override": true,
50
+ "_root_instruction_override_note": "Dieser Client kennt eine Datei, die die Wurzel-Anweisung nicht ergaenzt, sondern ERSETZT - gemessen mit Gegenprobe am 2026-09-23. Das Feld sagt es ausdruecklich, und Pruefung 88 meldet die Datei, wenn sie im Projekt liegt.",
51
+ "permission_profile_name": "koolie",
52
+ "permission_profile_description": "Rechteprofil des Koolie-Frameworks: Lesen ueberall, Schreiben nur im Arbeitsbereich, und die Traeger des Frameworks und des Overlays nur lesend.",
53
+ "permission_path_special": ":workspace_roots",
54
+ "_permission_path_special_note": "Seit Clientversion 0.157 heisst das Sonderziel des Arbeitsbereichs :workspace_roots und fuehrt seine Unterpfade als eigene Tabelle (\".\" = der Arbeitsbereich selbst). Die bis 1.12.0 ausgelieferte Form :workspace/<pfad> meldet 0.157 als unbekannt und ignoriert sie; gemessen am 2026-09-26 mit codex sandbox ohne Modellaufruf: mit der alten Form ist der GANZE Arbeitsbereich schreibgeschuetzt, mit der neuen ist er schreibbar, und .koolie/core, .codex und AGENTS.md bleiben schreibgeschuetzt (K-157, D-412).",
55
+ "permission_path_base": {
56
+ ":root": "read",
57
+ ":workspace_roots": "write"
58
+ },
59
+ "_permission_path_base_note": "Der Grundstock jedes Profils, und er ist nicht Kosmetik. Gemessen am 2026-09-23: Ein aktives Rechteprofil OHNE ':root = read' erzeugt eine geteilte Leseeinschraenkung, und der unerhoehte Windows-Sandkasten kann sie nicht durchsetzen - der Client BRICHT DANN AB, statt ungesandboxt zu laufen (fail-closed, und damit richtig). Mit dieser Grundlage laeuft er, und ein Schreibverbot auf einem Teilbaum ist ausdrueckbar: Der Teilbaum bekommt 'read'.",
60
+ "permission_tools": {
61
+ "read": [],
62
+ "search": [],
63
+ "write": [],
64
+ "exec": [],
65
+ "fetch": [],
66
+ "mcp": [],
67
+ "skill": []
68
+ },
69
+ "_permission_tools_note": "ALLE LEER, UND DAS IST DIE AUSSAGE ueber den Mechanismus, nicht ueber den Belegstand (D-155, D-238). Die Berechtigungsschicht dieses Clients kennt KEINE Werkzeugnamen: Sie bindet Pfade an eine Zugriffsart und Befehle an Praefixmuster - gemessen am 2026-09-23, samt der Fehlermeldung, mit der sie einen Schluessel abweist, der kein Pfad ist. Eine Regel der Gestalt Werkzeug(Muster) hat hier keinen Ort. Was die Koerbe des Kerns traegt, steht in permission_path_base und permission_profile_name (Pfadseite) und in exec_policy_file (Befehlsseite). Weil damit zwoelf Pruefungen ins Leere liefen, fuehrt der Validator seit 1.4.0 FORMATGEBUNDENE_PRUEFUNGEN, und Pruefung 87 haelt die Liste gegen Abschnitt 5 dieses Packs.",
70
+ "permission_tools_bare": [],
71
+ "permission_path_prefix": "",
72
+ "permission_exec_match": "prefix",
73
+ "permission_exec_suffix": "",
74
+ "_permission_exec_note": "Die Befehlsseite wirkt praefixbasiert - gemessen am 2026-09-23 mit dem Auswerter des Clients selbst: prefix_rule(pattern = [\"git\", \"push\"]) trifft 'git push origin main' und trifft 'git -C . push' NICHT. Das ist dieselbe Breite und dieselbe benannte Grenze wie beim Pack claude-code. Ein Praefixzeichen gibt es hier nicht; die Regelsprache zaehlt Tokens.",
75
+ "hook_handler_extra": {
76
+ "enabled": true
77
+ },
78
+ "_hook_handler_extra_note": "Gemessen am 2026-09-23: Ein Hook-Eintrag ohne 'enabled': true laeuft nicht, und der Client meldet es nicht. Das Feld ist damit die Bedingung dafuer, dass der Schutz-Hook ueberhaupt aufgerufen wird.",
79
+ "hooks_file_wrapper": "hooks",
80
+ "_hooks_file_wrapper_note": "Die Hook-Datei dieses Clients fuehrt die Ereignisse unter einem Schluessel der obersten Ebene. Gemessen am 2026-09-23: Ohne ihn meldet der Client 'unknown field `PreToolUse`' und LAEDT DIE DATEI NICHT - er startet trotzdem. Ein ausgelieferter Schutz-Hook, der nie laeuft, ist genau die Lage von AP2-DD-10.",
81
+ "hook_block_form": "hook-specific-output",
82
+ "_hook_block_form_note": "DER SCHWERSTE BEFUND DIESES PACKS (D-347). Die bisherige Sperrform des Schutz-Hooks - {\"decision\": \"block\"} und Exit 2 - blockiert bei diesem Client NICHTS: Gemessen am 2026-09-23 mit Gegenlauf, der Client meldet 'PreToolUse Failed' und FUEHRT DIE OPERATION AUS; der Koederinhalt kam woertlich heraus. Dieselbe Sperre als hookSpecificOutput.permissionDecision = 'deny' blockiert - und zwar AUCH in dem Modus, der Rueckfragen und Sandkasten abschaltet. Die Abbildung haengt die Form als --sperrform an das Hook-Kommando, aus demselben Grund wie --fail-closed (D-31). Pruefung 86 haelt fest, dass das Skript die genannte Form kennt.",
83
+ "hook_tools": {
84
+ "read": [],
85
+ "search": [],
86
+ "exec": [
87
+ "Bash"
88
+ ],
89
+ "write": [
90
+ "apply_patch"
91
+ ]
92
+ },
93
+ "hook_tools_unerhoben": ["mcp"],
94
+ "_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.",
95
+ "hook_tools_absent": [
96
+ "read",
97
+ "search"
98
+ ],
99
+ "_hook_tools_absent_note": "Dieser Client fuehrt KEIN eigenes Lese- und kein eigenes Suchwerkzeug - Lesen und Suchen laufen ueber die Shell und damit unter dem Werkzeugnamen des Ausfuehrungsverbs. Gemessen am 2026-09-23 an einer realen Installation: Ein Matcher 'Read' und ein Matcher 'Grep' loesen in keinem Lauf aus, waehrend 'Bash' bei jedem Lesezugriff ausloest, den das Modell ueber die Shell faehrt. Die Abwesenheit ist damit erhoben und nicht angenommen; der Kanal ist ueber 'exec' gedeckt und nicht offen. GEMESSEN IST AUSSERDEM EINE ALIASBILDUNG: Die Matcher 'Edit' und 'Write' treffen dasselbe Werkzeug wie 'apply_patch'. Sie stehen hier trotzdem NICHT, weil der Hook sonst je Schreibaufruf dreimal liefe - dieselbe Sperre dreimal ist keine dreifache Sperre. Erhebungsstand 2026-09-23, tests/protocols/2026-09-23-bau-openai-codex.md; was hier fehlt, ist unerhoben.",
100
+ "hook_project_dir_expr": ".",
101
+ "_hook_project_dir_expr_note": "DIESER CLIENT SAGT SEIN PROJEKTVERZEICHNIS NICHT, ER STEHT DARIN. Gemessen am 2026-09-23 an einer realen Installation: Die Umgebung des Hook-Prozesses fuehrt ausser dem Verweis auf ihr eigenes Benutzerverzeichnis keine Variable des Clients - kein Projektverzeichnis, keine Sitzungsangabe -, und sein ARBEITSVERZEICHNIS ist das Projektverzeichnis. Das Kommando bindet deshalb den relativen Punkt und keine Variable. Eine Variable, die es nicht gibt, haette hier ein Kommando erzeugt, das startet und nichts findet - der Befundtyp, der bei AP2-DD-10 acht Releases lang wirkungslose Hooks getragen hat.",
102
+ "hook_fail_closed": false,
103
+ "_hook_fail_closed_note": "Das Eingabeschema dieses Clients ist am 2026-09-23 an einer realen Installation AUFGEZEICHNET - PreToolUse fuehrt session_id, turn_id, transcript_path, cwd, hook_event_name, model, permission_mode, tool_name, tool_input und tool_use_id -, aber der VOLLSTAENDIGE Bestand der Ereignisse und ihrer Umschlaege ist es nicht. Fail-closed bei einem nur teilweise erhobenen Schema waere keine Haertung, sondern eine Sitzung, die bei der ersten unbekannten Eingabeform blockiert (D-31). Der Wert geht auf true, sobald der Bestand erhoben ist; die Zeile H4 des Packs fuehrt die Bedingung.",
104
+ "skill_frontmatter": {
105
+ "tools_format": "list",
106
+ "tool_names": {},
107
+ "_tool_names_note": "LEER, UND DAS IST DIE AUSSAGE: Kein Verb ist abgebildet, alle fuenf stehen in tool_names_unmapped. Die Abbildung waere geraten - der Bestand der Frontmatter-Felder dieses Clients ist unerhoben (2026-09-23, tests/protocols/2026-09-23-bau-openai-codex.md).",
108
+ "tool_names_unmapped": [
109
+ "read",
110
+ "grep",
111
+ "glob",
112
+ "edit",
113
+ "exec"
114
+ ],
115
+ "_tool_names_unmapped_note": "Dieses Pack bildet die Werkzeugverben des Frontmatters NICHT ab, und das ist eine Aussage ueber den Belegstand (Bauform wie hook_tools_absent nach D-47, D-78). Gemessen am 2026-09-23 ist, dass dieser Client Skills aus zwei projektlokalen Ablagen laedt und sie samt Herkunft in den Sitzungskontext stellt. NICHT gemessen ist, ob und wie ein Frontmatter-Feld den Werkzeugbestand eines Skills oder eines Unteragenten begrenzt, und unbekannte Frontmatter-Felder meldet dieser Client nicht. Eine Abbildung ohne Messung waere eine Zusage ohne Mechanismus; die Quellform bleibt deshalb unveraendert stehen, und die Zeilen S3 und A1 des Packs sagen, was das wert ist. Erhebungsstand 2026-09-23, tests/protocols/2026-09-23-bau-openai-codex.md; was hier fehlt, ist unerhoben.",
116
+ "drop_fields": [],
117
+ "_drop_fields_note": "LEER, UND DAS IST DIE ENTSCHEIDUNG (Bauform wie devin-desktop). Die zusagentragenden Felder 'permissions' und 'triggers' erreichen die installierte Fassung unveraendert. Sie zu verwerfen haette nach D-50 einen benannten Ersatz verlangt - und einen Ersatz zu benennen, dessen Feld bei diesem Client unerhoben ist, waere eine geratene Zusage. Ein Feld, das der Client nicht kennt, bleibt wirkungslos; ein Feld, das er kennt und das wir verworfen haetten, waere ein Verlust."
118
+ },
119
+ "shared_core": [
120
+ {
121
+ "src": "framework/runtime/root-instruction.md",
122
+ "dst": "<ROOT_INSTRUCTION_FILE>"
123
+ },
124
+ {
125
+ "src": "framework/runtime/rules/00-framework-core.md",
126
+ "dst": "<RULES_DIR>/00-framework-core.md"
127
+ },
128
+ {
129
+ "src": "framework/runtime/rules/10-privacy-security.md",
130
+ "dst": "<RULES_DIR>/10-privacy-security.md"
131
+ },
132
+ {
133
+ "src": "framework/runtime/rules/15-development-rules.md",
134
+ "dst": "<RULES_DIR>/15-development-rules.md"
135
+ },
136
+ {
137
+ "src": "framework/runtime/agents/fw-reviewer.md",
138
+ "dst": "<AGENTS_DIR>/fw-reviewer.md"
139
+ },
140
+ {
141
+ "src": "templates/rules/21-overlay-TEMPLATE.md.template",
142
+ "dst": "<RULES_DIR>/21-overlay-TEMPLATE.md.template"
143
+ },
144
+ {
145
+ "src": "templates/rules/40-tech-TEMPLATE.md.template",
146
+ "dst": "<RULES_DIR>/40-tech-TEMPLATE.md.template"
147
+ },
148
+ {
149
+ "src": "framework/runtime/hooks.json",
150
+ "dst": "<HOOKS_FILE>"
151
+ },
152
+ {
153
+ "src": "framework/runtime/permissions.json",
154
+ "dst": ".codex/rules/koolie.rules"
155
+ }
156
+ ],
157
+ "_shared_core_note": "ZWEI ABWEICHUNGEN GEGENUEBER DEN AELTEREN PACKS, beide mit gemessenem Grund. (1) Die Beispieldatei zur nutzerlokalen Wurzel-Anweisung wird NICHT ausgeliefert: Bei diesem Client verdraengt AGENTS.override.md die Wurzel-Anweisung vollstaendig, und eine Vorlage, die zum Anlegen dieser Datei auffordert, waere eine Anleitung zum lautlosen Abschalten der Ebene 1. (2) Die MCP-Beispieldatei wird nicht ausgeliefert: Dieser Client liest keine eigene MCP-Datei, sondern eine Tabelle seiner Konfiguration (gemessen). Dafuer steht hier die Befehlsregeldatei - dieselbe Kernquelle wie die Berechtigungsdatei, ein anderes Ziel; sie traegt keine Projektwerte und wird deshalb bei jedem --update neu geschrieben.",
158
+ "shared_seed": [
159
+ {
160
+ "src": "framework/runtime/permissions.json",
161
+ "dst": "<PERMISSIONS_FILE>"
162
+ },
163
+ {
164
+ "src": "framework/runtime/rules/20-project-overlay.md",
165
+ "dst": "<RULES_DIR>/20-project-overlay.md"
166
+ },
167
+ {
168
+ "src": "templates/project-overlay",
169
+ "dst": ".koolie/project-overlay"
170
+ }
171
+ ],
172
+ "rule_frontmatter": "comment",
173
+ "_rule_triggers_note": "KEIN rule_triggers, UND DAS IST EINE AUSSAGE (D-348). Gemessen am 2026-09-23 mit drei Sonden: Dieser Client kennt keine Regeldateien mit Ladebedingungen. Was ungefragt laedt, ist genau die Wurzel-Anweisungsdatei des Projekts (und eine gleichnamige im Benutzerverzeichnis des Clients); eine Anweisungsdatei in einem Unterverzeichnis steht NICHT vorab im Kontext, und eine Einbindung mit '@' bleibt wirkungslos. Der Geltungsbereich ist der Verzeichnisbaum, nicht ein Muster. Der Ersatz ist benannt und wird geliefert: root_instruction_imports nennt die Regeldateien in der Wurzel-Anweisung, mit der Auflage, sie zu Beginn der Sitzung zu lesen. Damit sind R2 und R3 bei diesem Pack [NICHT ABBILDBAR], mit benanntem Ersatz - kein Ladetrigger wird ersatzlos verworfen (D-26, D-27), aber der Ersatz ist schwaecher, und die Zeilen R2 und R3 sagen es.",
174
+ "root_instruction_imports": [
175
+ "- `<RULES_DIR>/00-framework-core.md` (Ebene 3, Rahmenregeln)",
176
+ "- `<RULES_DIR>/10-privacy-security.md` (Ebene 3, Datenschutz und Sicherheit)",
177
+ "- `<RULES_DIR>/15-development-rules.md` (Ebene 3, Entwicklungsregeln)",
178
+ "- `<RULES_DIR>/20-project-overlay.md` (Ebene 4, Project Overlay)",
179
+ "- `<RULES_DIR>/30-*.md` (Ebene 6, Role Packs) und `<RULES_DIR>/40-*.md` (Ebene 5, Technology Packs), soweit vorhanden"
180
+ ],
181
+ "root_instruction_imports_intro": "Dein Client laedt von sich aus nur diese Datei. Die folgenden Regeldateien sind Bestandteil dieser Anweisung und **zu Beginn der Sitzung zu lesen**, bevor du die erste Aufgabe bearbeitest; sie gelten wie der Text dieser Datei:",
182
+ "agent_frontmatter": {
183
+ "tools_field": "allowed-tools",
184
+ "tools_format": "list",
185
+ "tool_names": {},
186
+ "_tool_names_note": "LEER, UND DAS IST DIE AUSSAGE: Kein Verb ist abgebildet, alle fuenf stehen in tool_names_unmapped. Die Abbildung waere geraten - der Bestand der Frontmatter-Felder dieses Clients ist unerhoben (2026-09-23, tests/protocols/2026-09-23-bau-openai-codex.md).",
187
+ "tool_names_unmapped": [
188
+ "read",
189
+ "grep",
190
+ "glob",
191
+ "edit",
192
+ "exec"
193
+ ],
194
+ "_tool_names_unmapped_note": "Dieses Pack bildet die Werkzeugverben des Frontmatters NICHT ab, und das ist eine Aussage ueber den Belegstand (Bauform wie hook_tools_absent nach D-47, D-78). Gemessen am 2026-09-23 ist, dass dieser Client Skills aus zwei projektlokalen Ablagen laedt und sie samt Herkunft in den Sitzungskontext stellt. NICHT gemessen ist, ob und wie ein Frontmatter-Feld den Werkzeugbestand eines Skills oder eines Unteragenten begrenzt, und unbekannte Frontmatter-Felder meldet dieser Client nicht. Eine Abbildung ohne Messung waere eine Zusage ohne Mechanismus; die Quellform bleibt deshalb unveraendert stehen, und die Zeilen S3 und A1 des Packs sagen, was das wert ist. Erhebungsstand 2026-09-23, tests/protocols/2026-09-23-bau-openai-codex.md; was hier fehlt, ist unerhoben.",
195
+ "_agent_role_note": "Das Agentenprofil des Frameworks wird als Markdown unter <AGENTS_DIR> abgelegt. Die Rollendatei, die dieser Client liest, ist eine TOML-Datei mit den Pflichtfeldern name, description und developer_instructions - gemessen am 2026-09-23, samt der Meldung, die ein fehlendes Pflichtfeld erzeugt. Die Abbildung darauf ist NICHT gebaut, weil die Wirkung unerhoben ist; Zeile A1 des Packs fuehrt sie als [NICHT ABBILDBAR] mit benanntem Ersatz."
196
+ },
197
+ "agent_start_tools": [],
198
+ "agent_start_tools_absent": [
199
+ "unerhoben"
200
+ ],
201
+ "_agent_start_tools_absent_note": "Dieser Client startet Unteragenten - der Prompt-Eingang fuehrt am 2026-09-23 die Werkzeuge spawn_agent, followup_task, send_message, wait_agent, interrupt_agent und list_agents in einer eigenen Nachricht auf. NICHT gemessen ist, unter welchem Namen ein solcher Start durch den Schutz-Hook laeuft und ob die Werkzeugaufrufe des Unteragenten den Hook erreichen. Die Namen stehen deshalb NICHT in agent_start_tools: Eine Abbildung ohne Messung waere dieselbe Lage, aus der AP2-CC-13 kam. Pruefung 34 laesst ein Pack mit dieser Erklaerung nur durch, solange Zeile A1 nicht [TECHNISCH] sagt - sie sagt es nicht. Erhebungsstand 2026-09-23, tests/protocols/2026-09-23-bau-openai-codex.md; was hier fehlt, ist unerhoben.",
202
+ "hook_path_fields": [
203
+ "file_path",
204
+ "path",
205
+ "command"
206
+ ],
207
+ "_hook_path_fields_note": "Die Felder von tool_input, die bei diesem Client einen Pfad tragen koennen. Gemessen am 2026-09-23: Das Ausfuehrungswerkzeug fuehrt 'command' mit der vollstaendigen Befehlszeile; das Schreibwerkzeug fuehrt EBENFALLS 'command', und der Pfad steht INNERHALB des Patchtextes ('*** Add File: neu.txt'), nicht in einem eigenen Feld. ➡️ Ein Pfadfeld, das keinen Pfad fuehrt, ist der Grund, warum die Zeile B4 dieses Packs die Musterpruefung ueber den Text und nicht ueber den Feldwert fuehrt. file_path und path stehen vorsorglich; fuer sie ist kein Beleg erhoben."
208
+ }
@@ -0,0 +1,35 @@
1
+ # Laufzeitschicht `.codex/` – was hier liegt und wem es gehört
2
+
3
+ Diese Ablage ist die **Laufzeitform** des Frameworks für den Client `openai-codex`. Die kanonische, werkzeugneutrale Langform steht in `.koolie/core/framework/`; was hier liegt, ist daraus erzeugt (D-02). **Inhaltliche Änderungen gehören in den Kern und laufen als Änderungsantrag** (`.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md`).
4
+
5
+ ## Was hier liegt
6
+
7
+ | Pfad | Inhalt | Wem es gehört |
8
+ |---|---|---|
9
+ | `../AGENTS.md` | Wurzel-Anweisung (Ebene 1). **Sie nennt die Regeldateien unten** – dieser Client lädt sie nicht von sich aus | Framework |
10
+ | `rules/00-*.md`, `rules/10-*.md`, `rules/15-*.md` | Regeltexte des Frameworks (Ebene 3) | Framework |
11
+ | `rules/20-project-overlay.md` | Laufzeitfassung des Project Overlays (Ebene 4) | Projekt |
12
+ | `rules/40-tech-*.md`, `rules/30-*.md` | Technology und Role Packs (Ebenen 5 und 6) | Projekt |
13
+ | `rules/koolie.rules` | **Befehlsregeln** – die Befehlsseite der Berechtigungsschicht | Framework |
14
+ | `config.toml` | **Rechteprofil** – die Pfadseite der Berechtigungsschicht, dazu die Projektwerte | Projekt (aus dem Kern erzeugt) |
15
+ | `hooks.json` | Schutz-Hook und Statusmeldung | Framework |
16
+ | `skills/fw-*/` | Skills des Frameworks | Framework |
17
+ | `agents/` | Agentenprofile | Framework |
18
+
19
+ ## Drei Dinge, die bei diesem Client anders sind
20
+
21
+ **1. Die Regeldateien wirken über ihre Nennung, nicht über einen Ladetrigger.** Dieser Client lädt von sich aus **nur** `AGENTS.md`. Eine Regeldatei in diesem Verzeichnis wirkt, weil die Wurzel-Anweisung sie nennt und zu lesen aufgibt – nicht, weil die Engine sie einspeist. *Was eine Nennung bewirkt, hängt am Modell.*
22
+
23
+ **2. Ohne Vertrauenseintrag trägt diese Ablage nichts.** `config.toml`, `hooks.json` und `rules/*.rules` laden erst, wenn das Projekt in der **Benutzerkonfiguration des Clients** als vertraut eingetragen ist; der Schutz-Hook braucht darüber hinaus sein **eigenes** Vertrauen. Beides liegt außerhalb dieses Repositoriums und ist je Arbeitsplatz zu setzen. **Jede Hebung des Frameworks ändert den Hook – und damit sein Vertrauen.**
24
+
25
+ **3. Eine Datei namens `AGENTS.override.md` würde die Wurzel-Anweisung vollständig ersetzen.** Nicht ergänzen: ersetzen. Das Framework legt sie nicht an und liefert auch keine Vorlage dafür; `validate-framework.py` meldet sie, wenn sie da ist.
26
+
27
+ ## Was hier **nicht** liegt
28
+
29
+ Keine Geheimnisse, keine Zugangsdaten, keine Kunden- oder Personennamen. Die Regeln dazu stehen in `rules/10-privacy-security.md`; der Validator prüft es, und der Schutz-Hook blockiert eine Werkzeugeingabe, die ein Muster dieser Kategorien trägt.
30
+
31
+ ## Prüfen
32
+
33
+ ```text
34
+ python .koolie/core/tests/scripts/validate-framework.py --strict-overlay
35
+ ```