@renoxar/koolie 1.25.0 → 2.0.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 (232) hide show
  1. package/.github/workflows/publish.yml +177 -0
  2. package/.koolie/QUELLREPOSITORIUM.md +9 -14
  3. package/.koolie/core/CHANGELOG.md +59 -0
  4. package/.koolie/core/LICENSE-HINWEIS.md +5 -6
  5. package/.koolie/core/OWNERS.md +2 -2
  6. package/.koolie/core/VERSION +1 -1
  7. package/.koolie/core/build/doc/00-kopf.md +6 -6
  8. package/.koolie/core/build/doc/01-executive-summary.md +8 -8
  9. package/.koolie/core/build/doc/03-ziele-nichtziele.md +2 -2
  10. package/.koolie/core/build/doc/04-geltungsbereich.md +4 -4
  11. package/.koolie/core/build/doc/05-glossar.md +3 -3
  12. package/.koolie/core/build/doc/07-architektur.md +2 -2
  13. package/.koolie/core/build/doc/07a-abbildungsschicht.md +9 -9
  14. package/.koolie/core/build/doc/08-trennung.md +3 -3
  15. package/.koolie/core/build/doc/09-betriebsmodi.md +8 -8
  16. package/.koolie/core/build/doc/15-referenzstruktur.md +56 -27
  17. package/.koolie/core/build/doc/16-agentenanweisung.md +2 -2
  18. package/.koolie/core/build/doc/20-referenz-skills.md +46 -46
  19. package/.koolie/core/build/doc/25-governance.md +9 -1
  20. package/.koolie/core/build/doc/26-qs-test.md +32 -3
  21. package/.koolie/core/build/doc/27-pilot.md +2 -2
  22. package/.koolie/core/build/doc/28-uebernahme.md +9 -1
  23. package/.koolie/core/build/doc/30-roadmap.md +3 -1
  24. package/.koolie/core/build/doc/31-anhaenge.md +1 -1
  25. package/.koolie/core/checklists/01-preflight.md +3 -3
  26. package/.koolie/core/checklists/02-privacy-context.md +1 -1
  27. package/.koolie/core/checklists/03-before-code-change.md +2 -2
  28. package/.koolie/core/checklists/04-review-ai-code.md +1 -1
  29. package/.koolie/core/checklists/05-testing.md +1 -1
  30. package/.koolie/core/checklists/06-security.md +1 -1
  31. package/.koolie/core/checklists/08-merge-request.md +1 -1
  32. package/.koolie/core/checklists/09-onboarding.md +2 -2
  33. package/.koolie/core/checklists/10-project-adoption.md +8 -8
  34. package/.koolie/core/checklists/11-framework-release.md +14 -14
  35. package/.koolie/core/clientmap.py +2 -2
  36. package/.koolie/core/clients/README.md +54 -52
  37. package/.koolie/core/clients/_template/CLIENT_PACK.md +19 -19
  38. package/.koolie/core/clients/claude-code/CLIENT_PACK.md +108 -164
  39. package/.koolie/core/clients/claude-code/manifest.json +5 -5
  40. package/.koolie/core/clients/claude-code/root-template/.claude/README.md +9 -9
  41. package/.koolie/core/clients/cursor/CLIENT_PACK.md +66 -60
  42. package/.koolie/core/clients/cursor/manifest.json +3 -3
  43. package/.koolie/core/clients/cursor/root-template/.cursor/README.md +3 -3
  44. package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +62 -64
  45. package/.koolie/core/clients/devin-desktop/manifest.json +5 -5
  46. package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +9 -9
  47. package/.koolie/core/clients/kiro/CLIENT_PACK.md +55 -48
  48. package/.koolie/core/clients/kiro/manifest.json +4 -4
  49. package/.koolie/core/clients/kiro/root-template/.kiro/README.md +3 -3
  50. package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +98 -103
  51. package/.koolie/core/clients/openai-codex/manifest.json +3 -3
  52. package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +2 -2
  53. package/.koolie/core/decision-trees/02-may-ai-do-task.md +2 -2
  54. package/.koolie/core/decision-trees/03-analyze-or-modify.md +12 -12
  55. package/.koolie/core/decision-trees/04-required-review.md +1 -1
  56. package/.koolie/core/docs/ADOPTION_GUIDE.md +281 -385
  57. package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +44 -36
  58. package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +8 -8
  59. package/.koolie/core/docs/ROADMAP.md +34 -17
  60. package/.koolie/core/docs/RUNTIME_GLOSSARY.md +34 -35
  61. package/.koolie/core/examples/example-ergebnisbericht.md +1 -1
  62. package/.koolie/core/examples/example-mr-description.md +2 -2
  63. package/.koolie/core/framework/core/00-principles.md +1 -1
  64. package/.koolie/core/framework/core/01-governance.md +8 -8
  65. package/.koolie/core/framework/core/02-privacy.md +12 -12
  66. package/.koolie/core/framework/core/03-security.md +13 -11
  67. package/.koolie/core/framework/core/05-working-model.md +22 -22
  68. package/.koolie/core/framework/core/06-prompting-rules.md +5 -5
  69. package/.koolie/core/framework/core/07-review-rules.md +1 -1
  70. package/.koolie/core/framework/core/08-skill-conventions.md +11 -11
  71. package/.koolie/core/framework/core/09-risk-model.md +6 -6
  72. package/.koolie/core/framework/core/10-error-escalation.md +1 -1
  73. package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +1 -1
  74. package/.koolie/core/framework/overlay-patterns/general.md +63 -75
  75. package/.koolie/core/framework/role-packs/README.md +16 -28
  76. package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +3 -3
  77. package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +23 -22
  78. package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +5 -5
  79. package/.koolie/core/framework/role-packs/requirements-engineering/skills/{role-re-ticket → koolie-ticket}/CHANGELOG.md +2 -1
  80. package/.koolie/core/framework/role-packs/requirements-engineering/skills/{role-re-ticket → koolie-ticket}/EXAMPLES.md +5 -5
  81. package/.koolie/core/framework/role-packs/requirements-engineering/skills/{role-re-ticket → koolie-ticket}/SKILL.md +9 -9
  82. package/.koolie/core/framework/role-packs/requirements-engineering/skills/koolie-ticket/TESTS.md +22 -0
  83. package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +16 -16
  84. package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +1 -1
  85. package/.koolie/core/framework/runtime/agents/{fw-reviewer.md → koolie-reviewer.md} +2 -2
  86. package/.koolie/core/framework/runtime/permissions.json +13 -13
  87. package/.koolie/core/framework/runtime/root-instruction.md +5 -5
  88. package/.koolie/core/framework/runtime/rules/10-privacy-security.md +2 -2
  89. package/.koolie/core/framework/runtime/rules/15-development-rules.md +1 -1
  90. package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +1 -1
  91. package/.koolie/core/framework/runtime/rules/20-project-overlay.md +2 -2
  92. package/.koolie/core/framework/skills/{fw-bugfix-prepare → koolie-bugfix-prepare}/CHANGELOG.md +2 -1
  93. package/.koolie/core/framework/skills/{fw-bugfix-prepare → koolie-bugfix-prepare}/EXAMPLES.md +8 -8
  94. package/.koolie/core/framework/skills/{fw-bugfix-prepare → koolie-bugfix-prepare}/SKILL.md +21 -21
  95. package/.koolie/core/framework/skills/koolie-bugfix-prepare/TESTS.md +15 -0
  96. package/.koolie/core/framework/skills/{fw-change-analyze → koolie-change-analyze}/CHANGELOG.md +2 -1
  97. package/.koolie/core/framework/skills/{fw-change-analyze → koolie-change-analyze}/EXAMPLES.md +6 -6
  98. package/.koolie/core/framework/skills/{fw-change-analyze → koolie-change-analyze}/SKILL.md +12 -12
  99. package/.koolie/core/framework/skills/koolie-change-analyze/TESTS.md +16 -0
  100. package/.koolie/core/framework/skills/{fw-change-small → koolie-change-small}/CHANGELOG.md +2 -1
  101. package/.koolie/core/framework/skills/{fw-change-small → koolie-change-small}/EXAMPLES.md +4 -4
  102. package/.koolie/core/framework/skills/{fw-change-small → koolie-change-small}/SKILL.md +15 -15
  103. package/.koolie/core/framework/skills/koolie-change-small/TESTS.md +13 -0
  104. package/.koolie/core/framework/skills/{fw-code-explain → koolie-code-explain}/CHANGELOG.md +2 -1
  105. package/.koolie/core/framework/skills/{fw-code-explain → koolie-code-explain}/EXAMPLES.md +4 -4
  106. package/.koolie/core/framework/skills/{fw-code-explain → koolie-code-explain}/SKILL.md +10 -10
  107. package/.koolie/core/framework/skills/koolie-code-explain/TESTS.md +11 -0
  108. package/.koolie/core/framework/skills/{fw-docs-update → koolie-docs-update}/CHANGELOG.md +2 -1
  109. package/.koolie/core/framework/skills/{fw-docs-update → koolie-docs-update}/EXAMPLES.md +3 -3
  110. package/.koolie/core/framework/skills/{fw-docs-update → koolie-docs-update}/SKILL.md +8 -8
  111. package/.koolie/core/framework/skills/koolie-docs-update/TESTS.md +12 -0
  112. package/.koolie/core/framework/skills/{fw-error-analyze → koolie-error-analyze}/CHANGELOG.md +2 -1
  113. package/.koolie/core/framework/skills/{fw-error-analyze → koolie-error-analyze}/EXAMPLES.md +6 -6
  114. package/.koolie/core/framework/skills/{fw-error-analyze → koolie-error-analyze}/SKILL.md +15 -15
  115. package/.koolie/core/framework/skills/koolie-error-analyze/TESTS.md +12 -0
  116. package/.koolie/core/framework/skills/{fw-mr-description → koolie-mr-description}/CHANGELOG.md +2 -1
  117. package/.koolie/core/framework/skills/{fw-mr-description → koolie-mr-description}/EXAMPLES.md +6 -6
  118. package/.koolie/core/framework/skills/{fw-mr-description → koolie-mr-description}/SKILL.md +8 -8
  119. package/.koolie/core/framework/skills/koolie-mr-description/TESTS.md +12 -0
  120. package/.koolie/core/framework/skills/{fw-overlay-pflege → koolie-overlay-pflege}/CHANGELOG.md +2 -1
  121. package/.koolie/core/framework/skills/{fw-overlay-pflege → koolie-overlay-pflege}/EXAMPLES.md +4 -4
  122. package/.koolie/core/framework/skills/{fw-overlay-pflege → koolie-overlay-pflege}/SKILL.md +8 -8
  123. package/.koolie/core/framework/skills/koolie-overlay-pflege/TESTS.md +13 -0
  124. package/.koolie/core/framework/skills/{fw-plan → koolie-plan}/CHANGELOG.md +2 -1
  125. package/.koolie/core/framework/skills/{fw-plan → koolie-plan}/EXAMPLES.md +7 -7
  126. package/.koolie/core/framework/skills/{fw-plan → koolie-plan}/SKILL.md +14 -14
  127. package/.koolie/core/framework/skills/koolie-plan/TESTS.md +14 -0
  128. package/.koolie/core/framework/skills/{fw-refactor → koolie-refactor}/CHANGELOG.md +2 -1
  129. package/.koolie/core/framework/skills/{fw-refactor → koolie-refactor}/EXAMPLES.md +4 -4
  130. package/.koolie/core/framework/skills/{fw-refactor → koolie-refactor}/SKILL.md +12 -12
  131. package/.koolie/core/framework/skills/koolie-refactor/TESTS.md +14 -0
  132. package/.koolie/core/framework/skills/{fw-repo-analyze → koolie-repo-analyze}/CHANGELOG.md +2 -1
  133. package/.koolie/core/framework/skills/{fw-repo-analyze → koolie-repo-analyze}/EXAMPLES.md +4 -4
  134. package/.koolie/core/framework/skills/{fw-repo-analyze → koolie-repo-analyze}/SKILL.md +8 -8
  135. package/.koolie/core/framework/skills/koolie-repo-analyze/TESTS.md +11 -0
  136. package/.koolie/core/framework/skills/{fw-review-support → koolie-review-support}/CHANGELOG.md +2 -1
  137. package/.koolie/core/framework/skills/{fw-review-support → koolie-review-support}/EXAMPLES.md +3 -3
  138. package/.koolie/core/framework/skills/{fw-review-support → koolie-review-support}/SKILL.md +7 -7
  139. package/.koolie/core/framework/skills/koolie-review-support/TESTS.md +13 -0
  140. package/.koolie/core/framework/skills/{fw-tests → koolie-tests}/CHANGELOG.md +2 -1
  141. package/.koolie/core/framework/skills/{fw-tests → koolie-tests}/EXAMPLES.md +5 -5
  142. package/.koolie/core/framework/skills/{fw-tests → koolie-tests}/SKILL.md +11 -11
  143. package/.koolie/core/framework/skills/koolie-tests/TESTS.md +12 -0
  144. package/.koolie/core/framework/tech-packs/README.md +2 -2
  145. package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +2 -2
  146. package/.koolie/core/governance/ADOPTION_REGISTRY.md +22 -58
  147. package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +1 -1
  148. package/.koolie/core/governance/DECISION_LOG.md +7 -1
  149. package/.koolie/core/governance/EXCEPTION_PROCESS.md +1 -1
  150. package/.koolie/core/governance/FEEDBACK_PROCESS.md +1 -1
  151. package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +64 -66
  152. package/.koolie/core/governance/PRIORITY_HIERARCHY.md +13 -13
  153. package/.koolie/core/governance/RACI.md +3 -3
  154. package/.koolie/core/governance/RELEASE_PROCESS.md +101 -108
  155. package/.koolie/core/governance/change-requests/CR-2026-173-oeffentlicher-auftritt-koolie-praefix.md +67 -0
  156. package/.koolie/core/install.py +99 -0
  157. package/.koolie/core/koexistenz.py +2 -2
  158. package/.koolie/core/onboarding/GUIDE.md +7 -7
  159. package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +1 -1
  160. package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +3 -3
  161. package/.koolie/core/onboarding/QUICKSTART.md +2 -2
  162. package/.koolie/core/onboarding/REFERENCE.md +14 -14
  163. package/.koolie/core/onboarding/exercises/EXERCISES.md +8 -8
  164. package/.koolie/core/onboarding/exercises/README.md +47 -65
  165. package/.koolie/core/pilot/PILOT_CONCEPT.md +1 -1
  166. package/.koolie/core/prompts/01-understand-codebase.md +11 -7
  167. package/.koolie/core/prompts/02-impact-analysis.md +17 -7
  168. package/.koolie/core/prompts/03-implementation-planning.md +10 -6
  169. package/.koolie/core/prompts/04-code-generation.md +11 -5
  170. package/.koolie/core/prompts/05-test-generation.md +13 -7
  171. package/.koolie/core/prompts/06-refactoring.md +14 -8
  172. package/.koolie/core/prompts/07-debugging.md +13 -11
  173. package/.koolie/core/prompts/08-security-review.md +2 -2
  174. package/.koolie/core/prompts/09-performance-analysis.md +2 -2
  175. package/.koolie/core/prompts/10-documentation.md +6 -4
  176. package/.koolie/core/prompts/11-merge-request-review.md +7 -5
  177. package/.koolie/core/prompts/12-developer-training.md +5 -3
  178. package/.koolie/core/prompts/README.md +17 -15
  179. package/.koolie/core/templates/MR_AI_DISCLOSURE.md +2 -2
  180. package/.koolie/core/templates/PLAN_TEMPLATE.md +2 -2
  181. package/.koolie/core/templates/SKILL_TEMPLATE.md +3 -3
  182. package/.koolie/core/templates/project-overlay/OVERLAY.md +28 -22
  183. package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +1 -1
  184. package/.koolie/core/tests/EDGE_CASES.md +4 -7
  185. package/.koolie/core/tests/TEST_CATALOG.md +33 -33
  186. package/.koolie/core/tests/protocols/2026-10-02-oeffentlicher-auftritt-2.0.0.md +42 -0
  187. package/.koolie/core/tests/scripts/hook-check-secrets.py +2 -2
  188. package/.koolie/core/tests/scripts/hook-overlay-status.py +1 -1
  189. package/.koolie/core/tests/scripts/probe-pruefungen.py +4 -2
  190. package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +7 -7
  191. package/.koolie/core/tests/scripts/pruefungen/bestand.py +20 -3
  192. package/.koolie/core/tests/scripts/pruefungen/dokumente.py +88 -0
  193. package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +1 -1
  194. package/.koolie/core/tests/scripts/pruefungen/hooks.py +1 -1
  195. package/.koolie/core/tests/scripts/pruefungen/overlay.py +5 -5
  196. package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +5 -5
  197. package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +81 -2
  198. package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +6 -6
  199. package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +11 -11
  200. package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +11 -11
  201. package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +4 -4
  202. package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +33 -33
  203. package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +3 -3
  204. package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +3 -3
  205. package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +3 -3
  206. package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +2 -2
  207. package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +1 -1
  208. package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +5 -5
  209. package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +33 -0
  210. package/.koolie/core/tests/scripts/sonden/teil19_skillnamen.py +97 -0
  211. package/.koolie/core/tests/scripts/sonden/teil20_kennungen.py +70 -0
  212. package/.koolie/core/tests/scripts/validate-framework.py +15 -6
  213. package/.koolie/core/tests/scripts/validate-output.py +1 -1
  214. package/CONTRIBUTING.md +16 -10
  215. package/QUICKSTART.en.md +44 -51
  216. package/QUICKSTART.md +44 -50
  217. package/package.json +2 -2
  218. package/paketquellen/README.md +11 -11
  219. package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +0 -22
  220. package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +0 -15
  221. package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +0 -16
  222. package/.koolie/core/framework/skills/fw-change-small/TESTS.md +0 -13
  223. package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +0 -11
  224. package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +0 -12
  225. package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +0 -12
  226. package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +0 -12
  227. package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +0 -13
  228. package/.koolie/core/framework/skills/fw-plan/TESTS.md +0 -14
  229. package/.koolie/core/framework/skills/fw-refactor/TESTS.md +0 -14
  230. package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +0 -11
  231. package/.koolie/core/framework/skills/fw-review-support/TESTS.md +0 -13
  232. package/.koolie/core/framework/skills/fw-tests/TESTS.md +0 -12
@@ -1,31 +1,28 @@
1
- # Dokumentationsstandard – Klassen, Kriterien und Prüfungen
1
+ # Dokumentationsstandard – Klassen, Kriterien, Schreibregeln und Prüfungen
2
2
 
3
3
  | Attribut | Wert |
4
4
  |---|---|
5
5
  | ID | `FW-DOC-STANDARD` |
6
- | Version | `0.2.0` |
6
+ | Version | `0.3.1` |
7
7
  | Status | `pilot` |
8
8
  | Owner (Rolle) | `<FRAMEWORK_OWNER>` |
9
- | Entscheidungen | D-371 bis D-380 (`CR-2026-142`), D-437 (`CR-2026-154`) |
10
9
 
11
10
  ## Zweck
12
11
 
13
- Dieses Dokument legt fest, **wann ein Dokument des Frameworks in Ordnung ist**: welche Dokumente es gibt, welche Kriterien je Dokument gelten und welche davon eine Maschine prüft. Es gilt für jedes Release; `.koolie/core/checklists/11-framework-release.md` verweist darauf.
12
+ Dieses Dokument legt fest, wann ein Dokument von Koolie in Ordnung ist: welche Arten von Dokumenten es gibt, welche Kriterien für sie gelten, wie sie geschrieben werden und was davon eine Maschine prüft. Es gilt für jedes Release; die Release-Checkliste `.koolie/core/checklists/11-framework-release.md` verweist darauf.
14
13
 
15
- Ohne vorab festgelegte Kriterien hat eine Durchsicht kein Ende (D-370) – und ohne Prüfung ist derselbe Befund in drei Releases wieder da.
14
+ ## 1. Die vier Klassen
16
15
 
17
- ## 1. Die vier Klassen (D-371)
18
-
19
- Jedes Markdown-Dokument des Kerns gehört genau einer Klasse an, oder es ist Nachweis. **Die Zuordnung steht an einer Stelle:** in der Funktion `dokumentklasse()` von `.koolie/core/tests/scripts/validate-framework.py`. Dieses Dokument beschreibt sie, es zählt sie nicht ein zweites Mal auf.
16
+ Jedes Markdown-Dokument des Kerns gehört genau einer Klasse an, oder es ist Nachweis. Die Zuordnung steht an einer einzigen Stelle: in der Funktion `dokumentklasse()` von `.koolie/core/tests/scripts/validate-framework.py`.
20
17
 
21
18
  | Klasse | Was | Beispiele |
22
19
  |---|---|---|
23
- | **A – Einstieg** | was jemand liest, der das Framework zum ersten Mal einsetzt | die Einstiegsdokumente der Wurzel – `README.md`, `QUICKSTART.md` und ihre englischen Fassungen `README.en.md`, `QUICKSTART.en.md` (nur im Framework-Repositorium, D-437) –, `onboarding/`, `examples/`, `pilot/`, `docs/ADOPTION_GUIDE.md`, `docs/RUNTIME_GLOSSARY.md`, `clients/README.md`, die `CLIENT_PACK.md` der Packs |
20
+ | **A – Einstieg** | was jemand liest, der Koolie zum ersten Mal einsetzt | `README.md`, `QUICKSTART.md` und ihre englischen Fassungen (nur im Framework-Repositorium), `onboarding/`, `examples/`, `pilot/`, `docs/ADOPTION_GUIDE.md`, `docs/RUNTIME_GLOSSARY.md`, `clients/README.md`, die `CLIENT_PACK.md` der Packs |
24
21
  | **B – Regeln** | was gilt | Core-Module, Laufzeitschicht, Governance-Prozesse, Checklisten, Entscheidungsbäume, Prompts, Vorlagen, Skills, dieses Dokument |
25
22
  | **C – Register** | Belege und Verzeichnisse | `CHANGELOG.md`, `governance/DECISION_LOG.md`, `docs/ROADMAP.md`, `tests/TEST_CATALOG.md`, `tests/EDGE_CASES.md`, `docs/PLACEHOLDER_REGISTRY.md`, `governance/ADOPTION_REGISTRY.md`, die `TESTS.md`, `EXAMPLES.md` und `CHANGELOG.md` der Skills |
26
23
  | **D – Hauptdokument** | die Kapitelquellen unter `build/doc/` | `00-kopf.md` bis `32-abschluss.md` |
27
24
 
28
- **Nachweis** sind Änderungsanträge, Protokolle, Erhebungen und `build/` (`clientmap.NACHWEIS_ABLAGEN`, D-367). Sie werden nicht umgeschrieben. **Einzige Ausnahme:** `build/doc/` liegt in der Nachweisschicht, weil `build/` nicht zur Nutzung gehört – und ist doch das Hauptdokument, also Klasse D.
25
+ **Nachweis** sind Änderungsanträge, Protokolle, Erhebungen und `build/`. Sie werden nicht umgeschrieben. Ausnahme: `build/doc/` liegt zwar unter `build/`, ist aber das Hauptdokument und damit Klasse D.
29
26
 
30
27
  ## 2. Die Kriterien je Klasse
31
28
 
@@ -38,54 +35,65 @@ Jedes Markdown-Dokument des Kerns gehört genau einer Klasse an, oder es ist Nac
38
35
 
39
36
  ### 2.1 Aktuell
40
37
 
41
- Keine Aussage **in Gegenwartsform** widerspricht dem Stand in `.koolie/core/VERSION`. **Datierte Aussagen** – *„gemessen am 2026-09-13“*, *„Stand Release 0.89.0“* – veralten nicht; sie müssen nur für ihr Datum stimmen (D-318). Hinweise *„🆕 neu mit x.y.z“* entfallen nach dem nächsten MINOR-Release.
38
+ Keine Aussage in Gegenwartsform widerspricht dem Stand in `.koolie/core/VERSION`. Datierte Aussagen wie *„gemessen am 2026-09-13“* veralten nicht; sie müssen nur für ihr Datum stimmen. Hinweise *„🆕 neu mit x.y.z“* entfallen nach dem nächsten MINOR-Release.
42
39
 
43
- **Zahlen:** Eine Zahl in Gegenwartsform wird entweder **ausgerechnet** (vom Validator verlangt wie in Prüfung 46 und 78, oder beim Bau eingesetzt wie in Kapitel 31, D-377) oder **weggelassen**. Eine von Hand gepflegte Gegenwartszahl veraltet mit dem nächsten Release.
40
+ Eine Zahl in Gegenwartsform wird entweder ausgerechnet – vom Validator verlangt oder beim Bau eingesetzt – oder weggelassen. Eine von Hand gepflegte Gegenwartszahl veraltet mit dem nächsten Release.
44
41
 
45
42
  ### 2.2 Schlüssig
46
43
 
47
- In sich widerspruchsfrei und nicht im Widerspruch zu einem Dokument höherer Verbindlichkeit (`governance/PRIORITY_HIERARCHY.md`). Bei einem Widerspruch gilt das Regeldokument; der Einstiegstext wird angeglichen. Findet die Durchsicht zwei Regeln, die einander widersprechen, **entscheidet sie nichts**, sondern legt einen Änderungsantrag an.
48
-
49
- ### 2.3 Verständlich (D-376)
44
+ Ein Dokument widerspricht weder sich selbst noch einem Dokument höherer Verbindlichkeit (`governance/PRIORITY_HIERARCHY.md`). Bei einem Widerspruch gilt das Regeldokument, und der Einstiegstext wird angeglichen. Findet die Durchsicht zwei Regeln, die einander widersprechen, entscheidet sie nichts, sondern legt einen Änderungsantrag an.
50
45
 
51
- Regeltext nennt **die geltende Regel mit Verweis auf ihren Decision Record**, nicht ihre Herleitung. Sätze wie *„Bis `1.0.0` stand hier das Gegenteil“* oder *„berichtigt mit …“* gehören in `governance/DECISION_LOG.md` und `CHANGELOG.md`. **Belegzellen bleiben:** die Einstufung `[TECHNISCH]` oder `[DOK]`, der Protokollverweis, die datierte Messung. Eine Warnung darf auffallen – gestapelte Hervorhebungen in jedem zweiten Satz tun es nicht mehr.
46
+ ### 2.3 Verständlich
52
47
 
53
- Für Klasse A misst das eine **Kaltleser-Probe** (D-379): Eine frische Sitzung ohne weiteren Kontext bekommt nur das Dokument und beantwortet feste Fragen; die Antworten werden gegen ein Soll gezählt. Fragen, Soll und Ergebnis stehen im Protokoll des Releases.
48
+ Wie ein verständlicher Text aussieht, regelt Abschnitt 3. Für Klasse A misst das zusätzlich eine **Kaltleser-Probe**: Eine frische Sitzung ohne weiteren Kontext bekommt nur das Dokument und beantwortet feste Fragen; die Antworten werden gegen ein Soll gezählt. Fragen, Soll und Ergebnis stehen im Protokoll des Releases.
54
49
 
55
50
  ### 2.4 Form
56
51
 
57
- - **Rechtschreibung nach dem geltenden Duden** in den Klassen A, B und D (D-373): *dass, muss, misst, lässt, Messbaum*. Register bleiben, wie sie geschrieben wurden. Code ist Zitat und bleibt.
58
- - **Gestalt** (D-374): genau eine Hauptüberschrift, keine übersprungene Ebene, jeder Codeblock geschlossen, jede Tabellenzeile mit der Spaltenzahl ihres Kopfes.
59
- - **Steckbrief** (D-375): Klassen A und B tragen vor dem ersten Abschnitt eine Tabelle `| Attribut | Wert |` mit Kennung, Version und Status. Ausgenommen sind README-Verzeichnisse, die Laufzeitschicht, Ausfüllvorlagen und Beispielausgaben. Wer ein Dokument ändert, hebt seine Version nach `governance/RELEASE_PROCESS.md` Abschnitt 1.
60
- - **Zeilenenden** wie der Rest des Repositoriums (Prüfung 81).
52
+ - **Rechtschreibung nach dem geltenden Duden** in den Klassen A, B und D: *dass, muss, misst, lässt*. Register bleiben, wie sie geschrieben wurden. Code ist Zitat und bleibt.
53
+ - **Gestalt:** genau eine Hauptüberschrift, keine übersprungene Ebene, jeder Codeblock geschlossen, jede Tabellenzeile mit der Spaltenzahl ihres Kopfes.
54
+ - **Steckbrief:** Klassen A und B tragen vor dem ersten Abschnitt eine Tabelle `| Attribut | Wert |` mit Kennung, Version und Status. Ausgenommen sind README-Verzeichnisse, die Laufzeitschicht, Ausfüllvorlagen und Beispielausgaben. Wer ein Dokument ändert, hebt seine Version nach `governance/RELEASE_PROCESS.md` Abschnitt 1.
55
+ - **Zeilenenden** wie der Rest des Repositoriums.
56
+
57
+ ## 3. Schreibregeln
58
+
59
+ Die Produktdokumentation spricht zu Menschen, die Koolie einsetzen. Die Nachweisschicht spricht zu denen, die nachvollziehen wollen, warum etwas so ist. Beides bleibt getrennt.
60
+
61
+ - **Keine Kennungen.** `CR-`, `D-` und `K-`-Kennungen stehen in der Nachweisschicht: Decision Log, Änderungsanträge, `CHANGELOG`, Roadmap, Protokolle, Erhebungen. In der Produktdokumentation stehen sie nur dort, wo das Dokument selbst Beleg ist – in den Ergebnis- und Belegspalten der Testblätter und der Grenzfälle, in der Belegspalte der Fähigkeitsmatrix, in den Zeilen eines Versionsverlaufs und in drei Kapiteln des Hauptdokuments: Grenzen und offene Entscheidungen, Anhänge, Abschluss.
62
+ - **Keine Entscheidungsgeschichte.** Was vorher galt, was verworfen wurde und welcher Lauf etwas gezeigt hat, gehört in den Decision Log. Die Produktdokumentation sagt, was gilt und was zu tun ist.
63
+ - **Erst die Sache, dann der Grund.** Ein Satz sagt die Regel oder den Schritt; eine Begründung folgt nur, wenn ohne sie ein Fehler naheliegt – in einem Satz.
64
+ - **Kurz.** Ein Gedanke je Satz. Keine Vorankündigung („Im Folgenden …“), keine Wiederholung dessen, was gerade gesagt wurde, kein Fülltext.
65
+ - **Sparsam hervorheben.** Fett für das Wort, auf das es ankommt; ein Warnzeichen nur für eine echte Gefahr. Ein Absatz trägt höchstens eine Hervorhebung.
66
+ - **Zeigen statt beschreiben.** Ein Befehl, eine Dateizeile oder eine Ausgabe ersetzt einen Absatz Beschreibung.
67
+ - **Anweisungstexte bleiben, wie sie gemessen sind.** Die Anweisungen in Skills und Laufzeitregeln sind gegen ihre Testblätter gemessen. Wer einen Satz darin ändert, öffnet die Zellen des Testblatts, und sie werden nachgemessen. Ein Verweis darf ohne Nachmessung fallen, solange kein Satz sich ändert.
61
68
 
62
- ## 3. Was eine Maschine prüft – und was nicht
69
+ ## 4. Was eine Maschine prüft – und was nicht
63
70
 
64
71
  | Prüfung | Gegenstand | Klassen |
65
72
  |---|---|---|
66
73
  | 13 | Form jedes Versionsfeldes | A, B |
67
- | 46 | die D-11-Standzeile der Roadmap, ausgerechnet | C |
74
+ | 46 | die Standzeile der Roadmap, ausgerechnet | C |
68
75
  | 55 | das Statusvokabular | A, B |
69
76
  | 77 | die Dokumentversion des Hauptdokuments gegen `VERSION` | D |
70
77
  | 78 | der Satz über den Prüfapparat, ausgerechnet | D |
71
78
  | 83, 85 | Chronikspanne und Zielangaben der Roadmap | C |
72
- | **91** | die Standüberschrift der Roadmap gegen `VERSION` (D-372) | C |
73
- | **92** | Rechtschreibung nach dem geltenden Duden (D-373) | A, B, D |
74
- | **93** | Gestalt: Codeblöcke, Hauptüberschrift, Ebenen, Tabellenspalten (D-374) | A, B, C, D |
75
- | **94** | Steckbrief mit Kennung, Version und Status (D-375) | A, B |
79
+ | 91 | die Standüberschrift der Roadmap gegen `VERSION` | C |
80
+ | 92 | Rechtschreibung nach dem geltenden Duden | A, B, D |
81
+ | 93 | Gestalt: Codeblöcke, Hauptüberschrift, Ebenen, Tabellenspalten | A, B, C, D |
82
+ | 94 | Steckbrief mit Kennung, Version und Status | A, B |
83
+ | 113 | keine Kennung außerhalb der Nachweisschicht | A, B, C |
76
84
 
77
- **Keine Maschine prüft:** ob eine Gegenwartsaussage stimmt, ob zwei Dokumente einander widersprechen, ob ein Text verständlich ist und ob er Geschichte statt Regel erzählt. Eine Prüfung auf Geschichtsmarken ist verworfen, weil ihre Muster datierte Belege genauso träfen (D-376). Diese Kriterien bleiben Durchsicht – nach Abschnitt 4.
85
+ Keine Maschine prüft, ob eine Gegenwartsaussage stimmt, ob zwei Dokumente einander widersprechen, ob ein Text verständlich ist und ob er Geschichte statt Regel erzählt. Muster für Geschichte träfen datierte Belege genauso. Diese Kriterien bleiben Sache der Durchsicht.
78
86
 
79
- ## 4. Die Durchsicht
87
+ ## 5. Die Durchsicht
80
88
 
81
- - **Bei jedem Release:** Wer ein Dokument ändert, hält es gegen die Kriterien seiner Klasse. Die Prüfungen 91 bis 94 laufen mit dem Validator.
82
- - **Bei jedem MINOR-Release:** Entfallen die *„🆕 neu mit …“*-Hinweise des vorletzten MINOR-Releases.
83
- - **Eine vollständige Durchsicht** einer Klasse ist ein eigener Posten der Roadmap mit Ziel-Release. `1.9.0` hat die Klassen A und D durchgesehen und die Roadmap gekürzt (D-378); die Klasse B folgt je Bereich (D-380).
89
+ - **Bei jedem Release:** Wer ein Dokument ändert, hält es gegen die Kriterien seiner Klasse und gegen die Schreibregeln. Die Prüfungen laufen mit dem Validator.
90
+ - **Bei jedem MINOR-Release:** Die Hinweise *„🆕 neu mit …“* des vorletzten MINOR-Releases entfallen.
91
+ - **Eine vollständige Durchsicht** einer Klasse ist ein eigener Posten der Roadmap mit Ziel-Release.
84
92
 
85
- ## 5. Sprachen und Übersetzungsbedarf (D-437)
93
+ ## 6. Sprachen
86
94
 
87
- **Deutsch ist die maßgebliche Sprache der gesamten Dokumentation.** Englisch gibt es nur für den Einstieg: `README.en.md` und `QUICKSTART.en.md` in der Wurzel des Framework-Repositoriums. Eine weitere englische Dokumentationsstruktur wird nicht angelegt.
95
+ Deutsch ist die maßgebliche Sprache der gesamten Dokumentation. Englisch gibt es nur für den Einstieg: `README.en.md` und `QUICKSTART.en.md` in der Wurzel des Framework-Repositoriums.
88
96
 
89
97
  - **Beide Fassungen verweisen aufeinander**, und die englische nennt die deutsche maßgeblich. Ein Verweis aus einer englischen Fassung auf ein deutsches Dokument trägt den Zusatz *(German)*.
90
- - **Eine englische Fassung sagt nicht mehr zu als die deutsche.** Sie darf kürzen; sie darf keine Fähigkeit, keinen Reifegrad und kein Ergebnis nennen, das die deutsche Fassung nicht trägt.
91
- - **Wer `README.md` oder `QUICKSTART.md` ändert, prüft im selben Release, ob die englische Fassung nachgezogen werden muss**, und zieht sie nach oder hält im Änderungsantrag fest, warum nicht. Die Deckung der Fassungen prüft keine Maschine – Prüfung 12 hält nur die Verweise, Prüfung 93 die Form, und Prüfung 92 ist für englischen Text wirkungslos.
98
+ - **Eine englische Fassung sagt nicht mehr zu als die deutsche.** Sie darf kürzen, aber keine Fähigkeit, keinen Reifegrad und kein Ergebnis nennen, das die deutsche nicht trägt.
99
+ - **Wer `README.md` oder `QUICKSTART.md` ändert, zieht im selben Release die englische Fassung nach** oder hält im Änderungsantrag fest, warum nicht. Keine Maschine prüft, ob sich die Fassungen decken.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Alle im Framework verwendeten Platzhalter. Neue Platzhalter werden hier registriert, bevor sie verwendet werden (`.koolie/core/tests/scripts/validate-framework.py` meldet unbekannte Platzhalter als Warnung). Platzhalter werden ausschließlich durch das Project Overlay oder die Organisation befüllt – niemals im Framework Core. Beispiele sind synthetisch.
4
4
 
5
- **Die Spalte „Wird gesetzt in" ist bei drei Platzhaltern durchgesetzt, bei allen übrigen ist sie eine Angabe.** `<BUILD_COMMAND>`, `<TEST_COMMAND>` und `<LINT_COMMAND>` werden von **Prüfung 42** in der hier genannten Overlay-Tabelle gelesen – über die Platzhalterzelle, nicht über eine Spaltennummer – und gegen die installierte Berechtigungsdatei gehalten (D-90, D-91). Bei den übrigen Platzhaltern sagt die Spalte, wo der Wert **hingehört**; dass er dort steht, prüft niemand nach.
5
+ Die Spalte „Wird gesetzt in" ist bei drei Platzhaltern durchgesetzt, bei allen übrigen ist sie eine Angabe. `<BUILD_COMMAND>`, `<TEST_COMMAND>` und `<LINT_COMMAND>` werden von Prüfung 42 in der hier genannten Overlay-Tabelle gelesen – über die Platzhalterzelle, nicht über eine Spaltennummer – und gegen die installierte Berechtigungsdatei gehalten. Bei den übrigen Platzhaltern sagt die Spalte, wo der Wert hingehört; dass er dort steht, prüft niemand nach.
6
6
 
7
7
  ## Vom Arbeitsauftrag vorgegebene Platzhalter
8
8
 
@@ -23,19 +23,19 @@ Alle im Framework verwendeten Platzhalter. Neue Platzhalter werden hier registri
23
23
 
24
24
  ## Laufzeit-Platzhalter (durch `install.py` aufgelöst)
25
25
 
26
- Diese Platzhalter unterscheiden sich von allen anderen: Sie werden **nicht vom Menschen** befüllt, sondern beim Installieren aus dem `manifest.json` des gewählten Client Packs aufgelöst. Sie stehen in den Quelltexten des Kerns – vor allem in `.koolie/core/framework/skills/` – dort, wo ein Text auf ein Artefakt der Laufzeitschicht verweist.
26
+ Diese Platzhalter befüllt **nicht der Mensch**; sie werden beim Installieren aus dem `manifest.json` des gewählten Client Packs aufgelöst. Sie stehen in den Quelltexten des Kerns – vor allem in `.koolie/core/framework/skills/` – dort, wo ein Text auf ein Artefakt der Laufzeitschicht verweist.
27
27
 
28
28
  Die Begriffsfassung derselben Abbildung steht in `.koolie/core/docs/RUNTIME_GLOSSARY.md`: Fließtext nennt den Begriff, ein Quelltext, der gerendert wird, den Platzhalter.
29
29
 
30
30
  | Platzhalter | Bedeutung | `devin-desktop` | `claude-code` | `openai-codex` | `kiro` | `cursor` |
31
31
  |---|---|---|---|---|---|---|
32
- | `<CLIENT_NAME>` | Produktname des Clients. **Nur zum Nennen, nie zum Zuschreiben** (D-129): Sagt ein Text etwas *über* das Produkt, gehört es in dessen Client Pack. Und er hilft **nur in einer gerenderten Quelle** – einziger angewandter Fall: der Titel von `framework/runtime/root-instruction.md` | `Devin Desktop` | `Claude Code` | `OpenAI Codex CLI` | `Kiro` | `Cursor` |
32
+ | `<CLIENT_NAME>` | Produktname des Clients. **Nur zum Nennen, nie zum Zuschreiben**: Sagt ein Text etwas *über* das Produkt, gehört es in dessen Client Pack. Und er hilft **nur in einer gerenderten Quelle** – einziger angewandter Fall: der Titel von `framework/runtime/root-instruction.md` | `Devin Desktop` | `Claude Code` | `OpenAI Codex CLI` | `Kiro` | `Cursor` |
33
33
  | `<RUNTIME_DIR>` | Laufzeitschicht | `.devin` | `.claude` | `.codex` | `.kiro` | `.cursor` |
34
34
  | `<ROOT_INSTRUCTION_FILE>` | Wurzel-Anweisungsdatei | `AGENTS.md` | `CLAUDE.md` | `AGENTS.md` | `AGENTS.md` | `AGENTS.md` |
35
- | `<ROOT_INSTRUCTION_LOCAL>` | Nutzerlokale Ergänzung dazu | `AGENTS.local.md` | `CLAUDE.local.md` | `AGENTS.override.md` – **verdrängt** die Wurzel-Anweisung, statt sie zu ergänzen (D-341) | `AGENTS.local.md` – **kein Mechanismus des Clients**; der Name steht nur, weil die Kernquelle ein Schreibverbot auf ihn führt (D-414) | `AGENTS.local.md` – **kein Mechanismus des Clients**; der Name steht nur, weil die Kernquelle ein Schreibverbot auf ihn führt (D-440) |
36
- | `<PERMISSIONS_FILE>` | Berechtigungsdatei | `.devin/config.json` | `.claude/settings.json` | `.codex/config.toml` | `.kiro/agents/koolie.json` – das Agentenprofil, gewählt durch `.kiro/settings/cli.json` (D-414) | `.cursor/cli.json` – trägt **nur** `permissions`; dazu `.cursorignore` für Lesen und Suchen (D-440, D-443) |
35
+ | `<ROOT_INSTRUCTION_LOCAL>` | Nutzerlokale Ergänzung dazu | `AGENTS.local.md` | `CLAUDE.local.md` | `AGENTS.override.md` – **verdrängt** die Wurzel-Anweisung, statt sie zu ergänzen | `AGENTS.local.md` – **kein Mechanismus des Clients**; der Name steht nur, weil die Kernquelle ein Schreibverbot auf ihn führt | `AGENTS.local.md` – **kein Mechanismus des Clients**; der Name steht nur, weil die Kernquelle ein Schreibverbot auf ihn führt |
36
+ | `<PERMISSIONS_FILE>` | Berechtigungsdatei | `.devin/config.json` | `.claude/settings.json` | `.codex/config.toml` | `.kiro/agents/koolie.json` – das Agentenprofil, gewählt durch `.kiro/settings/cli.json` | `.cursor/cli.json` – trägt **nur** `permissions`; dazu `.cursorignore` für Lesen und Suchen |
37
37
  | `<SKILLS_DIR>` | Skill-Ablage | `.devin/skills` | `.claude/skills` | `.codex/skills` | `.kiro/skills` | `.cursor/skills` |
38
- | `<RULES_DIR>` | Regelablage | `.devin/rules` | `.claude/rules` | `.codex/rules` | `.kiro/steering` | `.cursor/rules` – Regeldateien mit der Endung `.mdc` (D-440) |
38
+ | `<RULES_DIR>` | Regelablage | `.devin/rules` | `.claude/rules` | `.codex/rules` | `.kiro/steering` | `.cursor/rules` – Regeldateien mit der Endung `.mdc` |
39
39
  | `<AGENTS_DIR>` | Agentenprofile | `.devin/agents` | `.claude/agents` | `.codex/agents` | `.kiro/agents` | `.cursor/agents` |
40
40
  | `<HOOKS_FILE>` | Hook-Konfiguration | `.devin/config.json` | `.claude/settings.json` | `.codex/hooks.json` | `.kiro/hooks/koolie.json` | `.cursor/hooks.json` |
41
41
  | `<MCP_FILE>` | MCP-Konfiguration | `.devin/mcp_config.json` | `.mcp.json` | `.codex/config.toml` | `.kiro/settings/mcp.json` | `.cursor/mcp.json` |
@@ -43,7 +43,7 @@ Die Begriffsfassung derselben Abbildung steht in `.koolie/core/docs/RUNTIME_GLOS
43
43
 
44
44
  Ein Client Pack MUSS jeden dieser Platzhalter in seinem `manifest.json` unter `runtime_placeholders` belegen; ein unaufgelöster Laufzeit-Platzhalter in einer Installation ist ein Fehler.
45
45
 
46
- Einzige Ausnahme ist `<CORE_DIR>`: Der Name des Kernverzeichnisses ist keine Eigenschaft eines Clients, sondern dieser Installation. `install.py` und der Validator setzen ihn aus dem tatsächlichen Verzeichnisnamen; ein Client Pack darf ihn nicht belegen. Damit berührt eine spätere Umbenennung des Kernverzeichnisses (Roadmap P3) die Client Packs nicht.
46
+ Einzige Ausnahme ist `<CORE_DIR>`: Der Name des Kernverzeichnisses ist keine Eigenschaft eines Clients, sondern dieser Installation. `install.py` und der Validator setzen ihn aus dem tatsächlichen Verzeichnisnamen; ein Client Pack darf ihn nicht belegen. Eine Umbenennung des Kernverzeichnisses berührt die Client Packs deshalb nicht.
47
47
 
48
48
  ## Vom Framework ergänzte Platzhalter
49
49
 
@@ -75,5 +75,5 @@ Einzige Ausnahme ist `<CORE_DIR>`: Der Name des Kernverzeichnisses ist keine Eig
75
75
  | `<ROLE_PACK_NAME>` / `<ROLE_PACK_CODE>` | Name und Kürzel eines Role Packs | Pack-Vorlage | „Requirements Engineering" / „RE" | bei Pack-Erstellung |
76
76
  | `<CLIENT_PACK_NAME>` / `<CLIENT_PACK_CODE>` | Name und Kürzel eines Client Packs (Abbildung auf einen KI-Client, `.koolie/core/clients/`) | Pack-Vorlage | „Client C" / „CC" | bei Pack-Erstellung |
77
77
  | `<FORM_NAME>`, `<PLACEHOLDER>`, `<PACK>` | Generische Platzhalter in Erläuterungen und Beispielen | – | – | – |
78
- | `<JAHR>`, `<JJJJ>`, `<NNN>` | Schema-Platzhalter für Jahres- und Laufnummern in IDs (`CR-<JAHR>-<NNN>`, `INC-<PROJECT_CODE>-<JJJJ>-<NNN>`) | Vorlagen in `.koolie/core/governance/` | „CR-2026-001" | – |
78
+ | `<JAHR>`, `<JJJJ>`, `<NNN>` | Schema-Platzhalter für Jahres- und Laufnummern in IDs (`CR-<JAHR>-<NNN>`, `INC-<PROJECT_CODE>-<JJJJ>-<NNN>`) | Vorlagen in `.koolie/core/governance/` | „CR-<JJJJ>-001" | – |
79
79
  | `<TBD: …>` | Offene projekt- oder organisationsspezifische Entscheidung | überall | – | Overlay-Abschnitte 4, 5, 6, 13, 14, 15: ja |
@@ -9,7 +9,7 @@
9
9
 
10
10
  > Es werden keine Termine oder Aufwände vorgegeben; die Steuerung erfolgt über Prioritäten (P1 = zuerst) und logische Abhängigkeiten. Rollen sind generisch. Die Erstfassung 0.1.0 dieses Repositorys deckt die inhaltlichen Ergebnisse von AP3–AP5 in Entwurfsqualität bereits ab; die zugehörigen Arbeitspakete bestätigen, validieren und härten sie.
11
11
 
12
- ## Stand nach Release 1.25.0 (2026-10-01)
12
+ ## Stand nach Release 2.0.0 (2026-10-02)
13
13
 
14
14
  Wird mit jedem Release fortgeschrieben; Prüfung 91 hält die Überschrift gegen `VERSION`
15
15
  (D-372). Der Abschnitt beantwortet, womit weiterzuarbeiten ist, ohne dass man dafür den
@@ -32,7 +32,7 @@ ist grün, **dann ist das die Meldung** – erzwungen statt behauptet.
32
32
  | # | Kriterium (D-11) | Wie Prüfung 46 zählt | Was die alte Regel übersah |
33
33
  |---|---|---|---|
34
34
  | **1** | kein unbearbeiteter `VERIFY`-Marker | Fundstellen **beider** Markerschreibweisen unter `<CORE_DIR>/`, ohne `build/`, `CHANGELOG.md`, `governance/change-requests/` und `tests/protocols/`. 🟢 **Seit `0.87.0` eine RÜCKFALLSPERRE und kein Arbeitsvorrat** (D-293): Die Markerform ist abgeschafft (D-291), die Zahl steht auf null, und was der Zähler ab jetzt meldet, ist ihre **Wiedereinführung**. **Die Null ist gemessen und nicht konstruiert** – Sonde `46c` legt einen Marker in den Kern und verlangt die Meldung, Gegenprobe `46c` legt einen in ein datiertes Protokoll und verlangt ihr Ausbleiben; beide bringen ihren Gegenstand selbst mit. ⚠️ **Der Zählbereich war kleiner als die Wirkungsfläche** – sechs versionierte Träger außerhalb (`README.md`, fünf Quellen unter `build/doc/`) sind mitgezogen, ohne den Bereich zu erweitern (D-295, `K-98`) | Der `grep` kannte **eine von zwei** Schreibweisen. Die clientgebundene Altform (`PLACEHOLDER_REGISTRY.md`, Frist ebenfalls „vor Version 1.0.0") trägt allein im Pack `devin-desktop` sieben Fundstellen und zwei in dessen `root-template/`. **Mit 0.53.0 sind sechs Fundstellen aufgelöst – 29 → 23** (`CR-2026-075`, D-112 bis D-114): drei in der Pfadabbildung des Packs `devin-desktop`, zwei in dessen `root-template/` und eine in `framework/runtime/mcp-config.example.json`, der Quelle der MCP-Vorlage. **Zwei der drei Belege lagen seit dem 2026-09-11 beziehungsweise 2026-09-14 in diesem Repositorium**, ohne dass jemand sie gegen die Marker gehalten hätte |
35
- | **2** | Testkatalog vollständig protokolliert, kein Testfall `offen` | Ergebniszellen auf `offen` in `tests/TEST_CATALOG.md` **und in jeder `TESTS.md` des Kerns**, gefunden durch Baumdurchlauf | „je Skill" wurde als zwölf Dateien gelesen. Es sind **dreizehn** – `role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md` mit 15 offenen Zellen fehlte. **Mit 0.54.0 bewegt sich diese Zahl zum ersten Mal – 118 → 111** (`CR-2026-076`, D-115 bis D-119): der erste Sitzungstest des Projekts, sechzehn Läufe, sieben Ergebniszellen abgenommen. **Ein `bestanden` sagt seither, dass das erwartete Verhalten eingetreten ist – nicht, dass das Framework es bewirkt hat** (D-115), und es nennt das gemessene Client Pack (D-117). **Mit 0.55.0 bewegt sie sich zum zweiten Mal – 111 → 105** (`CR-2026-077`, D-120 bis D-123): der zweite Sitzungstest, dreiundzwanzig Läufe, sechs Ergebniszellen der Klassen `ZA` und `DS` abgenommen. **Neu ist, was ein `bestanden` bei einem Schranken-Testfall NICHT sagt** (D-122): In allen sechs Hauptläufen ist die verbotene Handlung **null Mal versucht** worden – der Client lehnt auf den Regeltext hin ab, bevor die technische Schranke anlaufen könnte. Die Zelle weist seither je Schicht aus, was belegt ist |
35
+ | **2** | Testkatalog vollständig protokolliert, kein Testfall `offen` | Ergebniszellen auf `offen` in `tests/TEST_CATALOG.md` **und in jeder `TESTS.md` des Kerns**, gefunden durch Baumdurchlauf | „je Skill" wurde als zwölf Dateien gelesen. Es sind **dreizehn** – `role-packs/requirements-engineering/skills/koolie-ticket/TESTS.md` mit 15 offenen Zellen fehlte. **Mit 0.54.0 bewegt sich diese Zahl zum ersten Mal – 118 → 111** (`CR-2026-076`, D-115 bis D-119): der erste Sitzungstest des Projekts, sechzehn Läufe, sieben Ergebniszellen abgenommen. **Ein `bestanden` sagt seither, dass das erwartete Verhalten eingetreten ist – nicht, dass das Framework es bewirkt hat** (D-115), und es nennt das gemessene Client Pack (D-117). **Mit 0.55.0 bewegt sie sich zum zweiten Mal – 111 → 105** (`CR-2026-077`, D-120 bis D-123): der zweite Sitzungstest, dreiundzwanzig Läufe, sechs Ergebniszellen der Klassen `ZA` und `DS` abgenommen. **Neu ist, was ein `bestanden` bei einem Schranken-Testfall NICHT sagt** (D-122): In allen sechs Hauptläufen ist die verbotene Handlung **null Mal versucht** worden – der Client lehnt auf den Regeltext hin ab, bevor die technische Schranke anlaufen könnte. Die Zelle weist seither je Schicht aus, was belegt ist |
36
36
  | **3** | alle Modulstatus oberhalb `entwurf` | **Jede** Steckbriefzeile `\| Status \| … \|` im Kopf einer `.md` des Kerns, verglichen am ersten Wort des Werts | Die Ablagenliste deckte **ein Viertel** des Bestands; `checklists/`, `prompts/`, `governance/`, `decision-trees/` und sechs weitere Ablagen fehlten. **Und `framework/core/` war genannt und trägt gar keine Statuszeile.** Keiner der 69 stand über `entwurf`. **Mit 0.50.0 ist das Modell zum ersten Mal angewendet** (`CR-2026-072`, D-102 bis D-104): dreizehn Skills auf `pilot`, und vier Vorlagen tragen statt eines Statuswerts einen Ausfüllschlitz, weil ihr Steckbrief die Kopie beschreibt – **69 → 52**. **Mit 0.51.0 ist der Gegenstand vollständig und das erste Nicht-Skill-Bündel abgenommen** (`CR-2026-073`, D-105 bis D-108): Zwölf Träger ohne Statuszeile haben eine – **52 → 64** –, und 23 gehen auf `pilot`: die elf Checklisten und die zwölf Träger mit dem Kernmodul-Steckbrief. **64 → 41.** **Mit 0.52.0 sind vierzig der einundvierzig übrigen abgenommen – 41 → 1** (`CR-2026-074`, D-109 bis D-111). Der eine Rest ist `clients/devin-desktop/CLIENT_PACK.md`: Sein Steckbrief lässt zwei Aussagen des Frameworks offen, und er geht über `AP2`, nicht über eine Abnahme. Die Übergangsbedingung steht seit 0.50.0 in `01-governance.md` Abschnitt 5; Prüfung 47 setzt seit 0.51.0 Vokabular und Vollständigkeit durch. **✅ Mit 0.53.0 erfüllt – 1 → 0** (`CR-2026-075`): `AP2` hat die verbindliche Zielversion festgelegt, beide Steckbriefzellen tragen Werte, und der Träger ist abgenommen. **Kein Modulträger des Frameworks steht mehr auf `entwurf`** |
37
37
  | **4** | keine Decision Records im Status `entschieden (Vorschlag)` | Nur Zeilen der Form `\| D-NN \|` in `governance/DECISION_LOG.md`, Statuszelle über `tabellenzellen()` | Ein roher `grep` zählte die **Legende**, **fünf Klärungspunkte** und **`D-11` selbst** mit – 16 statt 9. **✅ Erfüllt seit 0.49.0** (`CR-2026-071`, D-100): Die neun sind bestätigt |
38
38
  | **5** | Übernahme in ein zweites Projekt nachgewiesen | **zählt Prüfung 46 nicht** – eine Feststellung, keine Zahl. Eine Enthaltung, und sie steht im Kopfkommentar | **erfüllt** – das Übungsrepository wurde nach 0.10.0 über sechs Releases hinweg **aktualisiert** statt neu installiert (`FW-RE-01`). Organisatorisch bleibt es offen, weil es keinen Organisationsbezug hat; D-11 verlangt das nicht |
@@ -52,7 +52,7 @@ die Störung.**
52
52
  | **0.57.0** ✅ | **Die Clientbindung des werkzeugneutralen Kerns** – 17 Fundstellen in 14 anweisenden Trägern aufgelöst, darunter sechs Prompt-Vorlagen und ein normatives Kernmodul. **Die Prüflücke ist nicht nur benannt, sondern geschlossen:** Prüfung 48 setzt die Neutralitätsregel durch, und der dritte Grund für ihr Ausbleiben war neu – die Wurzelliste von Prüfung 12 war selbst clientgebunden (`CR-2026-080`, D-128, `K-52`) | – | nein |
53
53
  | **0.58.0** ✅ | **Sitzungstest 3:** Klasse `PI` (`FW-PI-02` bis `-04`) und die restlichen `DS`-Fälle – erledigt: fünf Ergebniszellen abgenommen, **und der teuerste Befund kostete nichts:** Die Präparation `UEB-06` hat ihren Gegenstand nie hergestellt, `FW-PI-04` war dreizehn Releases lang nicht fahrbar (`CR-2026-082`, D-130 bis D-133, `K-53`) | Kriterium 2: **105 → 100** | ja |
54
54
  | **0.59.0** ✅ | **Sitzungstest 4:** Klassen `NE` und `SC` – erledigt: **sieben** Ergebniszellen (fünf zentrale, `SK-006-N04` und `SK-006-P02`). 🔴 **`FW-SC-01` bleibt offen:** Der Hauptlauf hat die Scope-Falle nie angetroffen – er hat das Nachbarmodul nicht gelesen und sagt es selbst. **Drei Vorbefunde fielen vor dem ersten Lauf an:** `FW-NE-02` war nie fahrbar (`UEB-08` neu), `FW-NE-01` ohne Gegenstelle nicht messbar, `FW-NE-04` ist eine Sammelzelle. **Und der Kontrollzuschnitt selbst war unvollständig** – auch der von `0.58.0` (`CR-2026-083`, D-135 bis D-141, `K-53` beantwortet, `K-54` und `K-55` neu) | Kriterium 2: **100 → 93** | ja |
55
- | **0.60.0** ✅ | **Die Vorbedingungen des fünften Sitzungstests** – **vier von zehn tragen nicht, und alle vier fielen vor dem ersten Lauf an.** `UEB-07` hat seinen Gegenstand **zwanzig Releases** lang nicht hergestellt (verdrahteter Ablageort, untracked Ziel, und der Regeltext lieferte seine eigene Lösung mit); **neun von zwölf `fw-*`-Skills sind für das Modell nicht aufrufbar** und haben `FW-SC-01` scheitern lassen; `FW-RE-01` ist eine Sammelzelle; `FW-PO-02` braucht einen zweiten Turn. **Prüfung 49** setzt den ausdrücklichen Skill-Aufruf im Testkatalog durch (`CR-2026-085`, D-142 bis D-146, `K-55` beantwortet) | – | nein |
55
+ | **0.60.0** ✅ | **Die Vorbedingungen des fünften Sitzungstests** – **vier von zehn tragen nicht, und alle vier fielen vor dem ersten Lauf an.** `UEB-07` hat seinen Gegenstand **zwanzig Releases** lang nicht hergestellt (verdrahteter Ablageort, untracked Ziel, und der Regeltext lieferte seine eigene Lösung mit); **neun von zwölf `koolie-*`-Skills sind für das Modell nicht aufrufbar** und haben `FW-SC-01` scheitern lassen; `FW-RE-01` ist eine Sammelzelle; `FW-PO-02` braucht einen zweiten Turn. **Prüfung 49** setzt den ausdrücklichen Skill-Aufruf im Testkatalog durch (`CR-2026-085`, D-142 bis D-146, `K-55` beantwortet) | – | nein |
56
56
  | **0.61.0** | **Die Grenzfälle gegen die Fassungen gehalten** – `FW-KO-05` ist zum ersten Mal gefahren: **fünf Abweichungen in vier Befunden, sieben Fundstellen** (13 von 18 prüfbaren Grenzfällen ohne Abweichung; zwei der zwanzig sind mit diesem Prüfmittel nicht prüfbar) – und **vier davon liegen in der Regelablage**, der Fassung, die sein eigener Auslöser nicht nannte. Die Overlay-Laufzeitfassung bot dreiunddreißig Releases lang einen Ausfüllschlitz für freigegebene Domains, den ihre eigene Quelle seit 0.33.0 auf „keine" festlegt (G-13); zwei Fassungen führten **Sicherheitskonfiguration** in einer Aufzählung mit Freigabefolge und stellten damit ein Delegationsverbot auf die freigebbare Seite (G-05/G-06, sechzig Releases); dieselbe Fassung ließ den Halbsatz weg, der die bereinigte Ableitung zulässt (G-02). **Prüfung 51 und 52** setzen es durch. Und der Releaseplan selbst hatte zwei Fehler – eine Zeile, die ihrer eigenen Zahl widersprach, und eine Kette, die um eins riss; **Prüfung 53** rechnet sie jetzt nach (`CR-2026-086`, D-148 bis D-153, `K-59` bis `K-61` neu) | – | nein |
57
57
  | ~~**0.62.0**~~ ✅ | **`FW-AK-01` gefahren: die Produktbeobachtung, ohne Kontingent** – 22 Quellen und beide Produkt-Changelogs abgeglichen, für `devin-desktop` zum ersten Mal vollständig. Dreizehn Befunde, ein VERIFY-Marker aufgelöst, Prüfung 54 (`CR-2026-087`, D-154 bis D-159, `K-62` bis `K-65`). **Die zweite `review`-Zelle des Bündels, nach `FW-KO-05` in 0.61.0** | Kriterium 2: **93 → 92** | nein |
58
58
  | ~~**0.63.0**~~ ✅ | **Die Vorbedingungen der dreizehn Testblätter durchgegangen** – 81 Zellen, **21 ohne Gegenstand**; dazu acht ungebundene Pflichtplatzhalter mit 65 Fundstellen in der geladenen Schicht. Prüfung 55 und 56 (`CR-2026-088`, D-160 bis D-162, `K-66`, `K-67`) | – | nein |
@@ -66,11 +66,11 @@ die Störung.**
66
66
  | ~~**0.71.0**~~ ✅ | **Testblätter, Bündel 2** (D-180, `CR-2026-097`, D-194 bis D-196, `K-74` neu) – erledigt: **achtzehn Ergebniszellen**, 43 Läufe, vierzehn Bäume. 🔴 **Drei Befunde, die größer sind als das Bündel:** Eine **Pflichtüberschrift des Ausgabeformats ist eine Anweisung statt einer Bezeichnung** – *neun von neun* planerzeugenden Läufen reproduzieren sie nicht, fünf lassen genau das Wort *exakt* weg (D-194); die **Sperre `disallowed-tools` weist ab, sie entfernt nicht** (D-195, `S3` nachgezogen); und **eine Kennung, die keine Sitzung lädt** – die Tabelle `R1`–`R13` steht in keiner der vier Regeldateien, und zwei Läufe derselben Regelschicht gehen deshalb verschieden aus (D-196). 🔴 **Und die Vorbedingung war das Heben:** `0.70.0` hatte `02-privacy.md` seine Unterabschnitte gegeben, und drei Zellen erwarten genau die – ein Meßbaum aus dem ungehobenen Stand hätte gegen den eben behobenen Mangel gemessen | Kriterium 2: **74 → 56** | ja |
67
67
  | ~~**0.72.0**~~ ✅ | **Zwei Anforderungen an die Auslieferung** (`CR-2026-098`, `K-75` neu) – eine Planänderung ohne Messung und ohne Kontingent: der neue Posten `1.3.0` (Installationsbibliothek) und die Feststellung, daß die Umbenennung das Framework zusätzlich in ein Unterverzeichnis zieht. 🔴 **`<CORE_DIR>` bekommt damit erstmals einen Schrägstrich** – jede Stelle, die ihn als einzelnes Verzeichnissegment behandelt, bricht | – (Kriterium 2 unverändert **56**) | nein |
68
68
  | ~~**0.73.0**~~ ✅ | **`K-74` entschieden und die Vorbedingungen von Bündel 3** (`CR-2026-099`, D-197, D-198). 🔴 **Der Befund ist größer als der Klärungspunkt:** Ausgezählt nach dem **Abschnitt**, in dem die Marke steht, ist `[RÜCKFRAGE]` in **keinem** der zwölf Skills eine Ausgabemarke und `[HALT]` nur in dreien – **18 Nennungen in 17 Zellen verlangten mehr, als ihr Skill vorschreibt**, und ein gemessener Lauf hatte es vorgeführt (`sk004n01` schrieb `[HALT]` und `[RÜCKFRAGE]` nicht, beides zu Recht). Die Zellen stellen seither auf die **Sache** ab, beide Marken sind im Laufzeitglossar erklärt, **Prüfung 64** hält Zelle und Skill gegeneinander. 🔴 **Und drei der achtzehn Vorbedingungen trugen nicht** – `UEB-18` bis `UEB-20`; eine davon in einer neuen Bauform: *„nur nach Sichtbarkeits- oder Konstruktoränderung testbar"* nimmt ihre Sprache aus einem anderen Strang, und im ausführbaren gibt es den Fall nicht | – (Kriterium 2 unverändert **56**) | nein |
69
- | ~~**0.74.0**~~ ✅ | **Testblätter, Bündel 3** (D-180, `CR-2026-100`, D-199 bis D-203, `K-76` und `K-77` neu) – erledigt: **achtzehn Ergebniszellen**, 48 Läufe in 36 Bäumen, 52,63 USD, kein fehlerhafter Beleg. 🔴 **Drei Befunde, die größer sind als das Bündel:** Die Fallunterscheidung für Testfehlschläge in `fw-change-small` hatte eine **Lücke** – Fall (a) trug zwei Bedingungen, Fall (b) verneinte nur die erste –, **und ihre Kurzfassung in Abschnitt 7 ließ den Vorbehalt ganz weg** (D-200, Skill `0.1.3`; gefunden hat es ein gemessener Lauf). `SK-007-N04` verlangte ein abweichendes Testergebnis und dessen Rücknahme – **also einen Fehler des Laufs**, den Abschnitt 4 desselben Skills ausschließt (D-201, `K-76`). Und: **Bei einem Testblatt ist der Skill die geprüfte Schranke** – nur **vier von achtzehn** Zellen sind zurechenbar (D-203, `K-77`; 🆕 **die Zuordnung ist mit `0.74.1` berichtigt** – drei tragen `ohneskill`, die vierte den Regelschicht-Zuschnitt `k3`); dazu haben sieben von 114 Fundstellen der Planpflicht einen Zuschnitt überlebt, **und alle sieben, weil der Sweep den Dativ nicht kannte**. 🟢 **Prüfung 65** setzt die Belegpflicht des Ergebnisstatus durch (D-202) | Kriterium 2: **56 → 38** | ja |
69
+ | ~~**0.74.0**~~ ✅ | **Testblätter, Bündel 3** (D-180, `CR-2026-100`, D-199 bis D-203, `K-76` und `K-77` neu) – erledigt: **achtzehn Ergebniszellen**, 48 Läufe in 36 Bäumen, 52,63 USD, kein fehlerhafter Beleg. 🔴 **Drei Befunde, die größer sind als das Bündel:** Die Fallunterscheidung für Testfehlschläge in `koolie-change-small` hatte eine **Lücke** – Fall (a) trug zwei Bedingungen, Fall (b) verneinte nur die erste –, **und ihre Kurzfassung in Abschnitt 7 ließ den Vorbehalt ganz weg** (D-200, Skill `0.1.3`; gefunden hat es ein gemessener Lauf). `SK-007-N04` verlangte ein abweichendes Testergebnis und dessen Rücknahme – **also einen Fehler des Laufs**, den Abschnitt 4 desselben Skills ausschließt (D-201, `K-76`). Und: **Bei einem Testblatt ist der Skill die geprüfte Schranke** – nur **vier von achtzehn** Zellen sind zurechenbar (D-203, `K-77`; 🆕 **die Zuordnung ist mit `0.74.1` berichtigt** – drei tragen `ohneskill`, die vierte den Regelschicht-Zuschnitt `k3`); dazu haben sieben von 114 Fundstellen der Planpflicht einen Zuschnitt überlebt, **und alle sieben, weil der Sweep den Dativ nicht kannte**. 🟢 **Prüfung 65** setzt die Belegpflicht des Ergebnisstatus durch (D-202) | Kriterium 2: **56 → 38** | ja |
70
70
  | ~~**0.74.1**~~ ✅ | **`K-77` bekommt einen eigenen Posten vor Bündel 4** (`CR-2026-101`, D-204) – eine Planänderung ohne Messung und ohne Kontingent. D-203 hat am 2026-09-19 festgelegt, daß `K-77` **vor** Bündel 4 zu entscheiden ist; die Festlegung stand danach im Decision Log, im Änderungsverzeichnis, im Protokoll des Meßtags und in der Übergabe – **nur nicht im Plan**, und der führte als nächsten Posten unverändert den Meßtag selbst. 🔴 **Der Preis ist gerechnet, nicht geschätzt:** neunzehn Kontrollläufe zu **1,10 USD** – dem eigenen Meßwert des Vortags (52,63 USD auf 48 Läufe) – für eine Zahl, die seit D-203 feststeht. 🔴 **Und der Durchgang vor dem Commit hat einen zweiten Gegenstand gefunden – zum ACHTZEHNTEN Mal in Folge:** Die Zuordnung der vier zurechenbaren Zellen war falsch. Drei tragen `ohneskill`, die vierte (`SK-005-N05`) den Regelschicht-Zuschnitt `k3` – **die Ergebnistabelle des eigenen Protokolls sagt es, und drei Zeilen darunter steht *„in allen drei Fällen“*.** Der Zähler stimmte, die Zuordnung nicht; fünf Träger sind berichtigt | – (Kriterium 2 unverändert **38**) | nein |
71
71
  | ~~**0.75.0**~~ ✅ | **`K-77` entschieden – der Zuschnitt folgt der Schranke, nicht der Schicht** (`CR-2026-102`, **D-205**, `K-77` erledigt). 🔴 **Die Prämisse von D-203 hielt nicht:** Über drei Bündel sind **27 von 47** Zellen zurechenbar und **15 davon über Regelschicht-Zuschnitte** – in Bündel 2 allein 17 von 18, eine davon *scharf*. 🔴 **Der Grund lag im Werkzeug: Der Wächter des Zuschnitts prüfte mit dem Schnittmuster** und konnte nichts finden, was der Schnitt nicht kannte – *die Null durch Konstruktion* (0.59.1) eine Ebene tiefer. Von acht Klassen lassen vier den Gegenstand stehen; 🟢 **unter den neun Zellen mit unvollständigem Zuschnitt ist keine einzige zurechenbar, unter den fünf vollständigen eine scharf.** Zwölf Ergebniszellen nachgezogen, **drei davon zum ersten Mal belegt**; der dritte Wert `Zurechenbarkeit nicht erhoben` steht im Testkatalog | – (Kriterium 2 unverändert **38**) | nein |
72
72
  | ~~**0.76.0**~~ ✅ | **Die Vorbedingungen von Bündel 4 – der Meßbaum hat keine Historie** (`CR-2026-103`, **D-206**, **D-207**, `K-78` neu). 🟢 **Kein Release seit `0.73.0` hat den Gegenstand angefaßt** – die drei Skills stehen unverändert. 🔴 **Sechs von neunzehn Zellen tragen, dreizehn nicht**, und der teuerste Befund liegt am Meßapparat: **Zwölf Zellen verlangen einen Diff gegen `<DEFAULT_BRANCH>`, und ein Baum aus `git archive HEAD` hat kein Git-Repositorium** (D-206). Dazu eine neue Gattung von Präparation – sie liegt in der **Historie** (D-207), und die Historie führte **33 Commits eines Autors mit echtem Namen und echter E-Mail**, während eine Zelle prüft, ob der Lauf Personen verschweigt. `K-78` führt die fünf Zellen, deren Vorbedingung ein **Artefakt eines Laufs** ist | – (Kriterium 2 unverändert **38**) | nein |
73
- | ~~**0.77.0**~~ ✅ | **Die Herrichtung für Bündel 4 – `K-78` entschieden, und der Wächter meldet vier unfertige Zuschnitte** (`CR-2026-104`, **D-208**, **D-209**, **D-210**). Erledigt: **acht Präparationen** (`UEB-21` bis `UEB-28`) – darunter die **erste, die nicht in einer Datei liegt**, sondern in der Commit-Betreffzeile (D-207) –, ein Baumbau mit **echter Historie** und synthetischen Autoren, an allen dreizehn Zellen gefahren, und das Übungsrepositorium auf `0.77.0` gehoben. 🔴 **Der teuerste Befund kostete wieder nichts und fiel wieder vor dem ersten Lauf:** Die fünf nachgetragenen Stammmuster haben an **vier von fünf** Klassen einen unfertigen Zuschnitt gemeldet – `nicht belegbar` stand fünfmal in `fw-mr-description/SKILL.md` und dreimal in `fw-review-support/SKILL.md`, **also in genau den beiden Skills, die Bündel 4 mißt.** Ein Kontrolllauf hätte die geprüfte Schranke mitgeführt und eine Null gemeldet, die keine ist (D-210) | – (Kriterium 2 unverändert **38**) | nein |
73
+ | ~~**0.77.0**~~ ✅ | **Die Herrichtung für Bündel 4 – `K-78` entschieden, und der Wächter meldet vier unfertige Zuschnitte** (`CR-2026-104`, **D-208**, **D-209**, **D-210**). Erledigt: **acht Präparationen** (`UEB-21` bis `UEB-28`) – darunter die **erste, die nicht in einer Datei liegt**, sondern in der Commit-Betreffzeile (D-207) –, ein Baumbau mit **echter Historie** und synthetischen Autoren, an allen dreizehn Zellen gefahren, und das Übungsrepositorium auf `0.77.0` gehoben. 🔴 **Der teuerste Befund kostete wieder nichts und fiel wieder vor dem ersten Lauf:** Die fünf nachgetragenen Stammmuster haben an **vier von fünf** Klassen einen unfertigen Zuschnitt gemeldet – `nicht belegbar` stand fünfmal in `koolie-mr-description/SKILL.md` und dreimal in `koolie-review-support/SKILL.md`, **also in genau den beiden Skills, die Bündel 4 mißt.** Ein Kontrolllauf hätte die geprüfte Schranke mitgeführt und eine Null gemeldet, die keine ist (D-210) | – (Kriterium 2 unverändert **38**) | nein |
74
74
  | ~~**0.78.0**~~ ✅ | **Der Meßapparat für Bündel 4 – und die Zusage, die ihr eigener Wächter nicht prüfen konnte** (`CR-2026-105`, **D-211**, **D-212**, **D-213**, `K-79` neu). Der Vorbedingungsdurchgang **und** der Apparat, ohne Kontingent. 🟢 **Neunzehn von neunzehn Vorbedingungen tragen** – erstmals belegt gegen den **committeten** Stand, was `0.77.0` nicht konnte. 🔴 **Vier Befunde, alle vor dem ersten Lauf:** Die Zusage *drei synthetische Autoren* stimmte nie (**kein Baum führt drei, acht führen genau einen**) – und der Wächter konnte es nicht merken, weil er die **Domäne** prüfte und **Commits** zählte, **D-205 an einer zweiten Stelle**; der Apparat lag **nicht** unverändert bereit (**von fünfzehn Skripten tragen sechs, neun nicht**, D-212); zehn Overlay-Werte stehen in keiner bindenden Schicht, darunter `<DEFAULT_BRANCH>` – **Argument von zwölf der neunzehn Zellen** (`K-79`); **und die Reihenfolge der README baute das Rauschen ein: 79 Einträge in `git status` gegen 2** (D-213). Neun Skripte gebaut, eine **vierzehnte Kontrollklasse** (`fern`, 206 Zeilen in 85 Trägern, beide Wächter grün) | – (Kriterium 2 unverändert **38**) | nein |
75
75
  | ~~**0.78.2**~~ ✅ | **`K-80` entschieden – die Übergabe steht im Release-Commit, und ein unsichtbares Zeichen nimmt git die Normalisierung** (`CR-2026-107`, **D-216**, **D-217**, `K-81` neu). Eine Verfahrensänderung ohne Kontingent, mit zwei neuen Prüfungen. 🔴 **Drei Befunde, alle aus dem Nachtrag von `0.78.1` selbst:** Der Kopfblock der Übergabe nannte keine Stunde nach dem Release einen anderen Stand als ihr Abschnitt 1 – die Antragsnummer war der einzige Grund, überhaupt nach dem Merge zu schreiben, und sie entfällt (**D-216**). **Ein einzelnes Wagenrücklauf-Zeichen nimmt git die Normalisierung der Zeilenenden** – gemessen an beiden Fällen nebeneinander, und die Deckung im Bestand ist vollständig: **14 Träger mit dem Zeichen, dieselben 14, die git nicht normalisiert hat** (**D-217**). **Und keine der 65 Prüfungen konnte es sehen**, weil die Leseroutine des Validators im Universal-Newline-Modus öffnet – ein solcher Träger hat die volle Abnahme von `0.78.1` bestanden. Prüfung 66 liest Bytes, Prüfung 67 rechnet die Titelzeile der Übergabe gegen `VERSION` | – (Kriterium 2 unverändert **38**) | nein |
76
76
  | ~~**0.79.0**~~ ✅ | **Testblätter, Bündel 4 – acht von neunzehn, weil der Meßbaum auf `main` stand** (D-180, `CR-2026-108`, **D-218** bis **D-222**, `K-82` und `K-83` neu). **50 von 50 Läufen gültig, 61,19 USD, kein Fehllauf** – und nur acht Zellen abnehmbar. 🔴 **Der teuerste Befund: `HEAD` stand an allen 38 Bäumen auf `main`**, und zwölf Zellen rufen ihren Skill mit `<DEFAULT_BRANCH>` als Diff-Basis auf. Der Vorbedingungsdurchgang von `0.78.0` hat gegen den **committeten** Stand geprüft, also ob der Branch **da** ist; der Lauf braucht, daß er **ausgecheckt** ist – *ein Vorhandensein belegt sich selbst, ein Zustand nicht* (**D-218**). 🟢 **Zehn Läufe trafen einen leeren Änderungssatz, und kein einziger hat den Entwurf aus den Berichten erfunden.** 🔴 **Und der Eintrag, der 25 Abweisungen erzeugt hat:** `{ command: "git branch -D", prefix: "git branch" }` sperrt über sein Präfix auch das bloße Auflisten – zwei Skills schreiben eine Kandidatenliste vor, die sie damit nicht liefern können (**D-219**, **Prüfung 68**). Dazu eine Präparation, die sich selbst als *„keine Zugangsdaten"* ausweist (**D-220**, `UEB-29`), und der erste Meßtag, dessen **sechzehn Kontrollzuschnitte vollständig** sind – null Restfundstellen in sechzehn von sechzehn (**D-221**) | Kriterium 2: **38 → 30** | ja |
@@ -80,9 +80,9 @@ die Störung.**
80
80
  | ~~**0.79.4**~~ ✅ | **Der Arbeitsplatz im Kern – zwei Befunde, keiner kostet Kontingent** (`CR-2026-112`, **D-231**, **D-232**, **`K-85`** neu, **Prüfung 71**). 🔴 **Neun Werkzeuge des Meßapparats trugen einen Arbeitsplatzpfad im Quelltext – mit dem Kontonamen einer natürlichen Person.** Solange sie neben dem Repositorium lagen, stand das in einer unversionierten Ablage; **mit D-222 sind sie hineingewandert und haben die Pfade mitgebracht** – in dasselbe Repositorium, für das `0.78.1` eigens `UEBERGABE.local.md` eingeführt hat. **Keine der siebzig Prüfungen sah es:** Ein Pfad in ein Benutzerprofil ist kein Secret, keine E-Mail, keine IP und kein Hostname – und trägt trotzdem den Namen eines Menschen. **18 Träger vor dem Eingriff, null Werkzeuge danach** (**D-231**). 🟢 **Und Prüfung 70 hat dabei ihren ersten echten Fang gemacht** – drei `NameError` am Eingriff selbst, gemeldet, bevor ein Lauf sie fand. 🔴 **Dazu ein Werkzeug, das auf ein Datum wartete:** `dossier-b4.py` nannte `auswertung-2026-09-20.log` im Quelltext und brach am 21. ab, *obwohl die Auswertung gefahren war* (**D-232**). ⚠️ **Zehn Aufzeichnungen tragen den Kontonamen weiter – `K-85`, hier nicht entschieden** | Kriterium 2: **32 – unverändert** | nein |
81
81
  | ~~**0.80.0**~~ ✅ | **Der Nachlauf von Bündel 4 – dreizehn von dreizehn Zellen abgenommen, und der Kontrollzuschnitt trug nicht** (`CR-2026-113`, **D-233** bis **D-236**, **`K-86`** neu, `K-82` erledigt). 🟢 **28 von 28 Läufen gültig, 28,38 USD, `is_error` bei keinem** – und über alle 28: **null Freigabeaussagen, null Testausführungen, null Personennennungen, null gelesene ausgeschlossene Dateien, null zitierte Secret-Muster**. 🔴 **Der teuerste Befund liegt am Apparat, nicht an den Skills:** Der Kontrollzuschnitt `ohneskill` leerte nur die Skillablage der Laufzeitschicht – **der Meßbaum trägt aber das Framework, und dort steht der Skill.** Drei Kontrollaufe derselben Klasse, drei Ausgänge: einer las die kanonische `SKILL.md` und arbeitete sie **von Hand nach**, einer das Subagentenprofil, einer sah nur in der Skillablage. *Ein Zuschnitt, der davon abhängt, wohin der Lauf schaut, ist keiner* (**D-234**, Stammwächter). 🔴 **Zwei Berührungsproben waren rot durch Konstruktion** – `TBD` als Werkzeugeingabe und die Marken einer fremden Zelle; nach der Berichtigung tragen **13 von 14** die Probe in beiden Läufen, **ohne einen neuen Lauf** (**D-233**, 15,85 USD gespart). 🔴 **Und zwei Zellen banden an einer Marke statt an der Sache** – eine Schwere, die der Skill als *Vorschlag* führt, und eine einzelne RV-Nummer, wo er eine Gruppe führt (**D-235**). | Kriterium 2: **32 → 19** | **ja – 28,38 USD** |
82
82
  | ~~**0.80.0**~~ ✅ | 🟢 **ERLEDIGT mit `0.80.0`** – *(Stand 0.79.4:)* **Der Nachlauf von Bündel 4** (`K-82`): **dreizehn** Zellen – die elf ungemessenen, dazu `SK-010-P02` und `SK-012-N04` nach D-227. 🟢 **Alle Vorbedingungen stehen seit `0.79.2`:** der Baumbau schaltet `HEAD` (D-218), `UEB-29` ist gebaut (D-220), `SK-010-N04` verlangt die Grenze statt der Branchliste (D-219), drei Kontrollzuschnitte tragen `konf` statt `risiko` (D-221) und die Berührungsprobe kennt ihre Gattung (D-226). **Gerechnet, nicht gemessen:** 28 Läufe – 13 Zellen mal zwei, dazu der nachzuholende `konf`-Kontrollauf von `SK-011-N04` mit seinen zwei Turns –, rund **34 USD** bei 1,2238 USD je Lauf | – (mit `0.80.0` eingelöst) | ja |
83
- | ~~**0.81.0**~~ ✅ | **Die Vorbedingungen von Bündel 5 – der Meßbaum trägt den gemessenen Skill nicht** (`CR-2026-114`, **D-237** bis **D-241**, **`K-87`** neu, **Prüfung 72**). Ohne Kontingent, ohne Lauf am Client. 🟢 **Elf von fünfzehn Zellen tragen, zwei halb, zwei nicht** – und alle fünfzehn wären trotzdem unfahrbar gewesen. 🔴 **Der teuerste Befund, und er hätte 30 bis 37 USD gekostet:** `role-re-ticket` ist der einzige Skill dieses Frameworks außerhalb des Kerns. `git archive` bringt ihn mit, der Packwechsel löscht ihn, und `install.py` legt **zwölf** Kernskills an – *„die Aktivierung eines Packs ist eine Projektentscheidung, kein Installationsschritt"*. **Der Wächter hätte geschwiegen: er führt die drei Skills von Bündel 4 beim Namen, und alle drei liegen auch hier** (**D-237**). 🔴 **Und die zweite Hälfte fiel beim Beheben an:** Nach der Aktivierung *wortgetreu nach der README* trug der Baum **13 Skills und 12 Korbeinträge** – bei **0 Fehlern des Validators**. Prüfung 39 sieht es nicht, obwohl sie dafür gebaut ist: Sie hält die Regelmenge des Kerns gegen die Skills des Kerns, und dort deckt es sich (**D-238**, **Prüfung 72**). 🔴 **Der Zuschnitt `ohneskill` ließ genau eine `SKILL.md` stehen – die des gemessenen Skills**; sein Stammwächter hätte abgebrochen, und das ist sein erster eingespielter Preis (**D-239**, *D-234 eine Ebene tiefer, drei Tage später*). 🔴 **Dazu ein Platzhalter, den zwei Zellen mit entgegengesetztem Vorzeichen brauchen** (**D-240**, `UEB-30`) und eine Zelle ohne Gegenstand (**D-241**, `UEB-31`) | – (Kriterium 2 unverändert **19**) | nein |
83
+ | ~~**0.81.0**~~ ✅ | **Die Vorbedingungen von Bündel 5 – der Meßbaum trägt den gemessenen Skill nicht** (`CR-2026-114`, **D-237** bis **D-241**, **`K-87`** neu, **Prüfung 72**). Ohne Kontingent, ohne Lauf am Client. 🟢 **Elf von fünfzehn Zellen tragen, zwei halb, zwei nicht** – und alle fünfzehn wären trotzdem unfahrbar gewesen. 🔴 **Der teuerste Befund, und er hätte 30 bis 37 USD gekostet:** `koolie-ticket` ist der einzige Skill dieses Frameworks außerhalb des Kerns. `git archive` bringt ihn mit, der Packwechsel löscht ihn, und `install.py` legt **zwölf** Kernskills an – *„die Aktivierung eines Packs ist eine Projektentscheidung, kein Installationsschritt"*. **Der Wächter hätte geschwiegen: er führt die drei Skills von Bündel 4 beim Namen, und alle drei liegen auch hier** (**D-237**). 🔴 **Und die zweite Hälfte fiel beim Beheben an:** Nach der Aktivierung *wortgetreu nach der README* trug der Baum **13 Skills und 12 Korbeinträge** – bei **0 Fehlern des Validators**. Prüfung 39 sieht es nicht, obwohl sie dafür gebaut ist: Sie hält die Regelmenge des Kerns gegen die Skills des Kerns, und dort deckt es sich (**D-238**, **Prüfung 72**). 🔴 **Der Zuschnitt `ohneskill` ließ genau eine `SKILL.md` stehen – die des gemessenen Skills**; sein Stammwächter hätte abgebrochen, und das ist sein erster eingespielter Preis (**D-239**, *D-234 eine Ebene tiefer, drei Tage später*). 🔴 **Dazu ein Platzhalter, den zwei Zellen mit entgegengesetztem Vorzeichen brauchen** (**D-240**, `UEB-30`) und eine Zelle ohne Gegenstand (**D-241**, `UEB-31`) | – (Kriterium 2 unverändert **19**) | nein |
84
84
  | ~~**0.82.0**~~ ✅ | **Die Herrichtung von Bündel 5 – `K-87` wurde kleiner, und zwei Prüfungen standen gegeneinander** (`CR-2026-115`, **D-242** bis **D-246**, **`K-88`** neu, `K-87` geschlossen). Ohne Kontingent, ohne Lauf am Client. 🟢 **`K-87` ist entschieden: `ohnepack`** – der Kontrollzuschnitt entfernt, was die Aktivierung installiert, und läßt die Kernregelschicht stehen. **Die Messung hat die Frage kleiner gemacht:** Die Rollenregel trägt EARS, die drei Kategorien, die M1-Grenzen und die Datenschutzregel **vollständig**; die vermutete Teilung ist gar nicht herstellbar, und der dritte Zuschnitt entfällt samt **fünfzehn Läufen und 15 bis 18 USD** (**D-242**). 🔴 **Der teuerste Befund kam beim Bauen:** Prüfung 72 verlangt seit `0.81.0` den Korbeintrag eines aktivierten Packs – **Prüfung 37 hielt genau ihn für eine Ausweitung.** Damit war D-238 in keinem übernehmenden Projekt umsetzbar, ohne den eigenen Validator rot zu färben, und `0.81.0` konnte es nicht sehen, weil dort **vor** dem dritten Teil gemessen wurde (**D-243**). 🔴 **Und die Aktivierungsanleitung sagt „kopieren", wo abgebildet werden muß:** `cp` legt die Quellform ab, und `claude-code` wertet für Regeldateien nur `paths` aus – **zwei Validatorfehler an genau dieser Datei**, null über `render_rule()` (**D-244**). 🟢 **`UEB-30` und `UEB-31` sind gebaut**, der Wert von `<ISSUE_TRACKER>` stand in **drei** Trägern statt einem (**D-245**), und der erste Fachbegriff für `UEB-31` hätte den Beleg der **abgenommenen** Zelle `SK-009-N02` entwertet (**D-246**). ⚠️ **Neu und offen: `K-88`** – Prüfung 55b prüft eine Teilzeichenkette; **15 von 26** Pflichtplatzhaltern sind außerhalb des Änderungsverlaufs nicht gebunden | – (Kriterium 2 unverändert **19**) | nein |
85
- | **~0.83.0** | **Testblätter, Bündel 5** (D-180): das Blatt des Role Packs `requirements-engineering` (`role-re-ticket`) – **15 Ergebniszellen**, das größte Einzelblatt. Eigener Posten, weil es das einzige Blatt außerhalb des Kerns ist und ein eigenes Pack installiert braucht | Kriterium 2: **19 → 4** | ja |
85
+ | **~0.83.0** | **Testblätter, Bündel 5** (D-180): das Blatt des Role Packs `requirements-engineering` (`koolie-ticket`) – **15 Ergebniszellen**, das größte Einzelblatt. Eigener Posten, weil es das einzige Blatt außerhalb des Kerns ist und ein eigenes Pack installiert braucht | Kriterium 2: **19 → 4** | ja |
86
86
  | **~0.84.0** | **Die vier Zellen des zentralen Katalogs, die zum Schluss gehören:** `FW-KO-05` (sobald `K-59` entschieden ist) und die drei Sammelzellen `FW-NE-04` (58 `N`-Zellen), `FW-PO-03` (29 `P`-Zellen) **und `FW-RE-01`** – sie können nicht vor ihren Bestandteilen schließen (D-139, D-143). **Ohne die fünf Bündel davor ist dieser Posten nicht fahrbar** | Kriterium 2: **4 → 0** | teils |
87
87
  | ~~**0.85.0**~~ ✅ | **Die Quellenzuordnung je Matrixzeile** (`K-62`, D-156; `CR-2026-118`, **D-263** bis **D-268**, **Prüfungen 73 und 74**) – erledigt, **ohne Kontingent und ohne Lauf**. 🟢 **Der Bestand gibt 25 von 26 Zuordnungen her**; die sechsundzwanzigste (`M3` bei `claude-code`) bleibt **ausgesprochen offen** und ist der **erste gezielte Auftrag** an `FW-AK-01` – eine Zeile gegen eine Seite statt 44 gegen 22. 🔴 **Und die Zahl war aus zwei Gründen nicht die richtige:** Vier Zellen **nannten** die Marke nur (D-265, die Bauform der nur nennenden `VERIFY`-Fundstellen), und sieben Verweisbelege *„wie B3"* zählten in keiner Richtung mit (D-266) – nach der Kopfregel waren es **40 von 46**. 🔴 **Der teuerste Befund kostete nichts und stand 73 Releases da:** `M6` und `M7` des Packs `devin-desktop` stehen hinter einer Leerzeile und sind **keine Tabellenzeilen** – gesetzt von `0.26.0`, also von dem Release, das sie angelegt hat, während die Zusammenfassung desselben Packs sie mitzählt (D-264) | – (Kriterium 1 unverändert **22**; `K-62` ist kein Marker, sondern die Vorbedingung) | nein |
88
88
  | ~~**0.86.0**~~ ✅ | 🟢 **`AP2` IST ZU ENDE GEFAHREN – VIER VON FÜNF MARKERN SIND GEFALLEN** (`CR-2026-120`, **D-276** bis **D-290**, `K-92` bis `K-96` neu): 70 Sitzungsläufe an einer Installation, siebzehn Meßbäume, **0,4718 USD** – zwei Größenordnungen unter der Schätzung, weil dieser Meßtag **Mechanismen** mißt und nicht **Skills**. 🟢 **`S3` trägt – aber nur, wenn BEIDE Frontmatter-Felder die Einschränkung tragen:** sechs von sechs Läufen abgewiesen, acht von acht ohne die Kombination durchgelaufen, Kontrolle ohne Skill durchgelaufen. **`allowed-tools` allein bleibt folgenlos, `permissions` allein ebenso** – die Bedingung steht in keiner Quelle, und alle dreizehn ausgelieferten Skills erfüllen sie (D-287). ⚠️ **Ein Skill mit nur einem Feld bekommt keine Einschränkung und keine Meldung** (`K-93`). 🔴 **`B10` zum Schlechteren und auf `[NICHT ABBILDBAR]`:** Das Abrufwerkzeug heißt **`webfetch`**, und die Berechtigungsdatei erreicht den Kanal in **keiner** Richtung – acht Läufe, sechs Bäume, drei Schreibweisen, drei Betriebsmodi; *ein Argument kann nicht ausgewertet werden, wenn schon der Werkzeugname nicht trifft.* 🟢 **`A1` zum Besseren:** Das `allowed-tools` eines Subagentenprofils bestimmt den Werkzeugbestand des Unteragenten – belegt über einen Aufzeichnungs-Hook, weil **die Mitschrift den Unteragenten nicht führt** (D-282). 🟢 **`B3` mit benannter Grenze:** `**/` trifft null bis mehrere Ebenen, Präfixmuster wirken, **und die Muster unterscheiden Groß- und Kleinschreibung**, während NTFS dieselbe Datei unter beiden Schreibweisen führt (`K-92`). 🔴 **Der schwerste Befund steht in der Vorbemerkung des B-Blocks:** `--permission-mode dangerous` **hebt den `deny`-Korb auf** – auch die Einträge unter `_core_rules_integrity`, die das Projekt nicht entfernen darf; **sie sind nicht entfernt, sondern von außen abgeschaltet worden** (D-281). 🟢 **Und genau dort trägt die zweite Linie:** Der Schutz-Hook blockierte denselben Zugriff. 🔴 **Die Körbe `ask` und `allow` sind gemessen und nicht unterscheidbar** (D-280) – der `deny`-Korb dagegen ist zurechenbar. 🔴 **Fünf Befunde fielen vor dem ersten Lauf**, darunter: **der Meßapparat kannte diesen Client nicht** (D-276, `lauf-dd.py` und `auswerten-dd.py` neu) und **`B10` hatte keinen Gegenstand**, weil der Laufzeitname in keinem Träger stand (D-283). ⚠️ **`X2` bleibt dauerhaft offen** (`K-20`) | **Kriterium 1: 22 → 18** | ja (Pack `devin-desktop`) |
@@ -117,12 +117,12 @@ die Störung.**
117
117
  | ~~**1.12.1**~~ ✅ | 🟢 **DIE REGELABLAGE, DIE NUR MIT WINDSURF LÄDT, UND DAS SONDERZIEL, DAS UMBENANNT WURDE** (`CR-2026-149`, **D-411** bis **D-413**, `K-156` und `K-157` beantwortet, `K-160` und `K-161` neu; 24 Sitzungsläufe, 0,65 USD nach Listenpreis). `devin-desktop` lässt Windsurf-Quellen zu, weil der Client die eigene Regelablage sonst nicht lädt – auch nicht in 3000.11.3 –, und `install.py` meldet die Kanäle, die das öffnet (D-411); `openai-codex` führt den Arbeitsbereich als Tabelle `:workspace_roots` – mit der alten Form war er unter 0.157 ganz schreibgeschützt (D-412) | – | ja (24 Sitzungsläufe) |
118
118
  | ~~**1.13.0**~~ ✅ | 🟢 **DAS CLIENT PACK FÜR KIRO – MIT ZUGANG GEBAUT, UND DER SCHUTZ-HOOK, DER OHNE GRUND NICHT SPERRTE** (`CR-2026-150`, **D-414** bis **D-418**, **Prüfung 96** neu, `K-147` beantwortet, `K-162` bis `K-164` neu; rund 40 Läufe am Client, 2,9 Credits im Free-Tarif). Der Owner hat den Client während der Sitzung beschafft; das Pack ist deshalb **gemessen statt aus der Dokumentation gebaut** und steht auf `pilot`. Die Berechtigungen stehen in einem **Agentenprofil**, das eine Einstellungsdatei des Arbeitsbereichs wählt – 🔴 **fehlt es oder ist es kaputt, fällt der Client still auf seinen eingebauten Agenten zurück** (D-414, Prüfung 96). Das Planartefakt sind die Spezifikationen des Clients (D-415). 🔴 **Der Schutz-Hook sperrte mit der Standardform nichts** – Exit 2 ohne Grund auf stderr lässt der Client laufen; eine dritte Sperrform (D-417). Die Menge der formatgebundenen Prüfungen führte 76 statt 72 (D-416). Die Hooks laufen nur interaktiv; die IDE ist nicht an Sitzungen gemessen (`K-162`) | – | nein |
119
119
  | ~~**1.14.0**~~ ✅ | 🟢 **DIE ANWEISUNGEN DER SKILLS GEGEN IHRE MODULE – UND DAS MODELL, DAS DIE ÜBERSCHRIFTEN UMSCHREIBT** (`CR-2026-151`, **D-419** bis **D-424**, `K-153` beantwortet, `K-165` bis `K-168` neu; 57 Sitzungsläufe, 32,32 USD nach Listenpreis). Vier Skills folgen ihrem Modul (Kontakt bei R4, Plan und Freigabe bei Stufe hoch, Planablage nach Zeile M4) und halten auch an einer als K3 erkannten, ungeöffneten Datei an (D-419); „K2 (bereinigt)“ heißt bereinigt und freigegeben (D-420); Prüfung 20 verlangt je Pack eine Spalte (D-421); der Plan nach dem Auftrag des Owners (D-422). 🟢 **`SK-002-N03` trägt.** 🔴 **Sechs andere Zellen gehen auf `offen`** – keine wegen einer Änderung dieses Releases: Mit Opus 5.5 schreibt der Lauf Pflichtüberschriften um (das Prüfmittel vergleicht dafür zusätzlich die Bezeichnung, D-423), verlangt Vorbedingungen strenger, stuft anders ein und meldet zwei Injektionen nicht – eingeplant als `1.14.1` (D-424) | Kriterium 2: **1 → 6** | ja (57 Sitzungsläufe) |
120
- | ~~**1.14.1**~~ ✅ | 🟢 **DIE TESTBLÄTTER NACH DEM MODELLWECHSEL – UND DIE ÜBERSCHRIFTEN, DIE AUCH ALS BEZEICHNUNG UMGESCHRIEBEN WERDEN** (`CR-2026-152`, **D-425** bis **D-432**, `K-167` und `K-168` beantwortet, `K-169` bis `K-172` neu; 51 Sitzungsläufe, 32,27 USD nach Listenpreis). `fw-change-small` (`0.2.0`) und `fw-refactor` (`0.1.5`) tragen Pflichtüberschriften nur als Bezeichnung (D-426), erlauben die lesenden Git-Befehle wie M3 (D-427) und melden eingebettete Anweisungen unter „Gemeldete Befunde“ (D-428); die Zellen von `fw-plan` und `SK-007-P01` sind gepflegt, `UEB-32` neu (D-429); der Validator berichtet unter cp1252 (D-430); ein Messbaum trägt keine Aufzeichnung mehr, `ohneskill` nimmt auch die Kernfassung (D-425); die Überschriften werden wörtlich übernommen, auch im Folgeturn (D-432). 🟢 **17 von 18 Zellen tragen.** 🔴 `SK-005-P01` bleibt wegen der Attributionszeile des Clients offen – eingeplant als `1.14.2` (D-431) | Kriterium 2: **6 → 1** | ja (51 Sitzungsläufe) |
120
+ | ~~**1.14.1**~~ ✅ | 🟢 **DIE TESTBLÄTTER NACH DEM MODELLWECHSEL – UND DIE ÜBERSCHRIFTEN, DIE AUCH ALS BEZEICHNUNG UMGESCHRIEBEN WERDEN** (`CR-2026-152`, **D-425** bis **D-432**, `K-167` und `K-168` beantwortet, `K-169` bis `K-172` neu; 51 Sitzungsläufe, 32,27 USD nach Listenpreis). `koolie-change-small` (`0.2.0`) und `koolie-refactor` (`0.1.5`) tragen Pflichtüberschriften nur als Bezeichnung (D-426), erlauben die lesenden Git-Befehle wie M3 (D-427) und melden eingebettete Anweisungen unter „Gemeldete Befunde“ (D-428); die Zellen von `koolie-plan` und `SK-007-P01` sind gepflegt, `UEB-32` neu (D-429); der Validator berichtet unter cp1252 (D-430); ein Messbaum trägt keine Aufzeichnung mehr, `ohneskill` nimmt auch die Kernfassung (D-425); die Überschriften werden wörtlich übernommen, auch im Folgeturn (D-432). 🟢 **17 von 18 Zellen tragen.** 🔴 `SK-005-P01` bleibt wegen der Attributionszeile des Clients offen – eingeplant als `1.14.2` (D-431) | Kriterium 2: **6 → 1** | ja (51 Sitzungsläufe) |
121
121
  | ~~**1.14.2**~~ ✅ | 🟢 **DIE ATTRIBUTIONSZEILE IM COMMIT-VORSCHLAG – UND DIE KURZFORM, DIE DIE GANZE EINSTELLUNGSDATEI VERWIRFT** (`CR-2026-153`, **D-433** bis **D-436**, `K-171` beantwortet, `K-173` und `K-174` neu; 5 Sitzungsläufe, 3,28 USD nach Listenpreis). Das Client Pack `claude-code` schaltet die Attributionsvorgabe des Clients ab – in Objektform, weil `attribution: false` ältere Stände der Zielspanne die ganze Einstellungsdatei verwerfen lässt (D-433); `install.py --update` meldet einen deklarierten Zusatzschlüssel, der im Projekt fehlt (D-434); `validate-output.py` erkennt einen KI-Nutzungsvermerk im Commit-Vorschlag (D-435). 🟢 **`SK-005-P01` trägt in zwei unabhängigen Ketten**, belegt ohne Modellurteil an der Vorgabe im Transkript. **Kriterium 2 von D-11 steht auf 0.** Dazu eingeplant: `1.18.0` (D-436) | Kriterium 2: **1 → 0** | ja (5 Sitzungsläufe) |
122
122
  | ~~**1.15.0**~~ ✅ | 🟢 **ÖFFENTLICHE VERSTÄNDLICHKEIT UND AUFFINDBARKEIT – DER EINSTIEG, UND DER SPIEGEL, DER SCHON VERÖFFENTLICHT HATTE** (`CR-2026-154`, **D-437** bis **D-439**, `K-108` und `K-166` fortgeschrieben; ohne Kontingent). Die README beantwortet zuerst sieben Fragen – mit allen vier Packs, dem gemessenen Beispiel der Push-Sperre und echten Links (D-438); ein Quickstart zum Ausprobieren, README und Quickstart auf Englisch, Deutsch bleibt maßgeblich (D-437); die Einstiegsdokumente der Wurzel sind Klasse A und für die Prüfungen 92 und 93 sichtbar. 🔴 **Der öffentliche GitHub-Spiegel besteht schon** und trägt die volle Historie (D-439, `K-108`) | – | nein |
123
123
  | ~~**1.16.0**~~ ✅ | 🟢 **DAS CLIENT PACK FÜR CURSOR – DIE DATEI, MIT DER DER CLIENT NICHT STARTET, UND DAS MUSTER, DAS NIE TRAF** (`CR-2026-155`, **D-440** bis **D-444**, **Prüfung 97** neu, `K-164` und `K-108` beantwortet, `K-175` bis `K-177` neu; 24 Läufe am Client, Free-Tarif, 0 USD). Das fünfte Pack, gebaut mit Zugang zur Kommandozeile unter Windows: Die Berechtigungsdatei trägt nur `permissions` – mit einem Kommentarschlüssel startet der Client nicht –, jedes Pfadmuster steht in zwei Schreibweisen, weil der Client es mit dem absoluten Pfad vergleicht (D-440); der Schutz-Hook liest BOM-fest und antwortet auch beim Durchlass (D-441), sein Ordnermuster für Secrets trifft auch ohne Trenner (D-442); `.cursorignore` sperrt die Suche, die kein Leseverbot beachtet (D-443). Die öffentliche Historie bleibt (D-444). Die IDE ist nicht gemessen (`K-175`) | – | ja (24 Läufe, Free-Tarif) |
124
- | ~~**1.17.0**~~ ✅ | 🟢 **DAS MANDAT UND DIE REIBUNG DES ERSTEN PROJEKTEINSATZES – DER HOOK, DER DEN INHALT LAS, UND DIE ENTSCHEIDUNG, DIE MAN ABSCHREIBEN MUSSTE** (`CR-2026-156`, **D-445** bis **D-455**, **Prüfungen 98 bis 100** neu, `K-178` bis `K-182` neu, `K-165` fortgeschrieben; 40 Sitzungsläufe, 27,33 USD nach Listenpreis, davon 10 verworfen). Befunde aus dem ersten Einsatz in einem Projekt: Der Schutz-Hook misst Schreibwerkzeuge am Ziel statt am Inhalt (D-449); der Modus M6 trägt Entscheidungen des Menschen direkt in das Overlay ein – mit einem Mandat, das nur der Mensch im eigenen Terminal erteilt (D-446, D-447), und das Overlay sperrt dafür allein der Hook (D-448); jede Sperre erklärt sich in vier Zeilen (D-450); drei rein lesende Skills ruft der Client selbst auf (D-451); der Skill `fw-overlay-pflege` richtet ein, hebt nach und trägt ein, `mandat.py` gleicht die Laufzeitfassung ab (D-452); Ablage mit führendem System und kollisionsfreiem Rückfall (D-454), Kommentarverläufe per Kategoriefreigabe (D-455) | – | ja (40 Sitzungsläufe) |
125
- | ~~**1.18.0**~~ ✅ | 🟢 **DAS TICKETSYSTEM UND DIE DOKU-PLATTFORM ÜBER MCP – DIE RÜCKFRAGE, DIE DIE FREIGABE SCHLUG, UND DAS TOKEN OHNE BEREICHE** (`CR-2026-157`, **D-456** bis **D-464**, **Prüfung 101** neu, `K-178` und `K-182` beantwortet, `K-183` bis `K-186` neu; 36 Sitzungsläufe, 26,96 USD nach Listenpreis, dazu eine Stichprobe mit `cursor`). Die rein lesenden Skills `fw-change-analyze`, `fw-plan` und `fw-bugfix-prepare` beziehen einen zum Lesen freigegebenen MCP-Server ein – Ticket, frühere Anforderungen und Entscheidungen, höchstens fünf Treffer, Fundstelle mit Stand oder Version, Widerspruch gemeldet (D-457); Ablage im führenden System nur auf Anweisung, ein Plan erst nach Bestätigung (D-458); Lese- und Schreibwerkzeuge je Server im Overlay, Schreibwerkzeuge nie auf `allow`, und die pauschale MCP-Rückfrage weicht bei einer Freigabe zum Lesen den Einzelregeln, weil sie bei `claude-code` die Freigabe schlägt (D-459, gemessen); gemessen an Atlassian Cloud mit dem offiziellen Server (D-456, D-462); zwei Anhaltezeilen und der Versionsabgleich im Mandat nach `K-182` (D-460, D-461); der Schutz-Hook liest eine Eingabe mit zwei BOM, an der er unter `cursor` jede Operation sperrte (D-463); fehlt einer Seite die Version, trägt die Aussage den Stand (D-464) | – | ja (36 Sitzungsläufe) |
124
+ | ~~**1.17.0**~~ ✅ | 🟢 **DAS MANDAT UND DIE REIBUNG DES ERSTEN PROJEKTEINSATZES – DER HOOK, DER DEN INHALT LAS, UND DIE ENTSCHEIDUNG, DIE MAN ABSCHREIBEN MUSSTE** (`CR-2026-156`, **D-445** bis **D-455**, **Prüfungen 98 bis 100** neu, `K-178` bis `K-182` neu, `K-165` fortgeschrieben; 40 Sitzungsläufe, 27,33 USD nach Listenpreis, davon 10 verworfen). Befunde aus dem ersten Einsatz in einem Projekt: Der Schutz-Hook misst Schreibwerkzeuge am Ziel statt am Inhalt (D-449); der Modus M6 trägt Entscheidungen des Menschen direkt in das Overlay ein – mit einem Mandat, das nur der Mensch im eigenen Terminal erteilt (D-446, D-447), und das Overlay sperrt dafür allein der Hook (D-448); jede Sperre erklärt sich in vier Zeilen (D-450); drei rein lesende Skills ruft der Client selbst auf (D-451); der Skill `koolie-overlay-pflege` richtet ein, hebt nach und trägt ein, `mandat.py` gleicht die Laufzeitfassung ab (D-452); Ablage mit führendem System und kollisionsfreiem Rückfall (D-454), Kommentarverläufe per Kategoriefreigabe (D-455) | – | ja (40 Sitzungsläufe) |
125
+ | ~~**1.18.0**~~ ✅ | 🟢 **DAS TICKETSYSTEM UND DIE DOKU-PLATTFORM ÜBER MCP – DIE RÜCKFRAGE, DIE DIE FREIGABE SCHLUG, UND DAS TOKEN OHNE BEREICHE** (`CR-2026-157`, **D-456** bis **D-464**, **Prüfung 101** neu, `K-178` und `K-182` beantwortet, `K-183` bis `K-186` neu; 36 Sitzungsläufe, 26,96 USD nach Listenpreis, dazu eine Stichprobe mit `cursor`). Die rein lesenden Skills `koolie-change-analyze`, `koolie-plan` und `koolie-bugfix-prepare` beziehen einen zum Lesen freigegebenen MCP-Server ein – Ticket, frühere Anforderungen und Entscheidungen, höchstens fünf Treffer, Fundstelle mit Stand oder Version, Widerspruch gemeldet (D-457); Ablage im führenden System nur auf Anweisung, ein Plan erst nach Bestätigung (D-458); Lese- und Schreibwerkzeuge je Server im Overlay, Schreibwerkzeuge nie auf `allow`, und die pauschale MCP-Rückfrage weicht bei einer Freigabe zum Lesen den Einzelregeln, weil sie bei `claude-code` die Freigabe schlägt (D-459, gemessen); gemessen an Atlassian Cloud mit dem offiziellen Server (D-456, D-462); zwei Anhaltezeilen und der Versionsabgleich im Mandat nach `K-182` (D-460, D-461); der Schutz-Hook liest eine Eingabe mit zwei BOM, an der er unter `cursor` jede Operation sperrte (D-463); fehlt einer Seite die Version, trägt die Aussage den Stand (D-464) | – | ja (36 Sitzungsläufe) |
126
126
  | ~~**1.18.1**~~ ✅ | 🟢 **DAS REGISTER, DAS SEINE OFFENEN PUNKTE NICHT ZÄHLTE – UND DIE SPERRE, DIE NUR NOCH AUF DEM PAPIER STAND** (`CR-2026-158`, **D-465** bis **D-468**, **Prüfung 102** neu, `K-100` beantwortet, `K-187` neu; ohne Kontingent). Alle Klärungspunkte stehen in einer Tabelle, und ihr Status beginnt mit einem Wert der Legende – vier Werte kamen dazu (D-465); die Triage aller 98 offen geführten Punkte hat 22 geschlossen, fünf zusammengelegt, sieben an das Projekt übergeben, sieben als benannte Grenze geführt und 36 einem Ziel zugeordnet; 21 bleiben offen ohne Ziel (D-466); der Plan stellt die Paketquellen zurück und zieht die PowerShell-Lücke von `claude-code` vor (D-467); vier Packs beschreiben die Sperre des Overlays nicht mehr, die sie seit `1.17.0` nicht erzeugen, und `devin-desktop` trägt die Stichprobe zu `1.18.0` (D-468) | – | nein |
127
127
  | ~~**1.18.2**~~ ✅ | 🟢 **DAS ZWEITE BEFEHLSWERKZEUG – UND DIE SPERRE, DIE ES ERST SICHTBAR MACHTE** (`CR-2026-159`, **D-469** bis **D-470**, `K-70` beantwortet, `K-188` neu; 10 Sitzungsläufe, 1,76 USD nach Listenpreis). Das Werkzeug `PowerShell` von `claude-code` unter Windows ist den Befehlsregeln gleichgestellt: jede Regel als `Bash(…)` und `PowerShell(…)`, der Schutz-Hook sieht es – gemessen: `git push` abgewiesen, auch verkettet und in Großschreibung, `Get-Content .env` vom Hook abgewiesen. 🔴 **Beifund:** Ohne `PowerShell(…)`-Regel blendete der Client das Werkzeug bei bestehenden Bash-Sperren aus; die Regeln schalten es ein (D-470) | – | ja (10 Sitzungsläufe) |
128
128
  | ~~**1.19.0**~~ ✅ | 🟢 **DER MESSAPPARAT ALS PAKET – UND DER CACHE, DEN KEIN FESTER PFAD TEILTE** (`CR-2026-160`, **D-471** bis **D-478**, **Prüfung 103** neu, `K-56`, `K-61`, `K-76`, `K-86` und `K-172` beantwortet, `K-189` bis `K-195` neu; 22 Sitzungsläufe, 8,79 USD nach Listenpreis). Der Messapparat ist ein Paket mit Vorprüfung vor jedem bezahlten Lauf, Kontingentbuch je Lauf und Selbsttest; gemessen gleichwertig zur Reihe von `1.18.2`. Testblätter gehen ohne fremde Ergebnisse in die Laufzeitschicht, eine Ergebniszelle kann ihren Stand tragen. 🔴 **Der feste Baumpfad spart keinen Cache** (D-475), und zwei Werkzeuge des alten Apparats hatte `1.18.2` still gebrochen. Dazu die Festlegungen aus dem Marktvergleich (D-478) | – | ja (22 Sitzungsläufe) |
@@ -130,13 +130,14 @@ die Störung.**
130
130
  | ~~**1.20.0**~~ ✅ | 🟢 **DIE WIRKSAMKEITSPROBE UND DER MCP-AUFRUF AM SCHUTZ-HOOK – UND DIE VORPRÜFUNG, DIE DEN HOOK NIE STARTETE** (`CR-2026-162`, **D-485** bis **D-490**, **Prüfungen 106 und 107** neu, `K-118`, `K-184`, `K-191`, `K-192` und `K-195` beantwortet, `K-198` bis `K-200` neu; 11 Sitzungsläufe, 2,01 USD nach Listenpreis, dazu 6 Läufe mit `cursor` im Free-Tarif). `install.py --probe` prüft ohne Modell, ob die Schutzschicht im Projekt greift – der Hook mit synthetischen Ereignissen, bei `claude-code` die Startmeldung mit einer Modelladresse, die nicht erreichbar ist –, und endet mit Fehler, wenn eine Muss-Kontrolle fehlt (D-488). MCP-Aufrufe erreichen den Schutz-Hook bei `claude-code` und `cursor`, gemessen mit einem lokalen Köderserver (D-486); der Hook protokolliert jede Entscheidung ohne Inhalt (D-487); die Connectoren des Kontos stehen im Pack, ihr Abschaltweg ist gemessen (D-489). Die Schutzschicht geht in drei Releases und einen Posten (D-485). 🔴 **Die Hook-Vorprüfung des Messapparats hat den Hook seit `1.19.0` nie gestartet** – Exit 2 von „can't open file“ galt als Sperre (D-490) | – | ja (11 Sitzungsläufe, 6 Läufe Free-Tarif) |
131
131
  | ~~**1.20.1**~~ ✅ | 🟢 **DIE ZWEITE LESART VON `/c/…` UND DIE SCHREIBWEISE DER MUSTER – UND DER KURZNAME, DER AM KERNSCHUTZ VORBEISCHRIEB** (`CR-2026-163`, **D-491** bis **D-498**, **Prüfung 108** neu, Prüfungen 32 und 89 erweitert, `K-35`, `K-47`, `K-92`, `K-96`, `K-119` und `K-160` beantwortet, `K-32` zu `1.21.0`; 3 Sitzungsläufe, 0,11 USD nach Listenpreis, dazu 2 Läufe mit `openai-codex` im Abonnement). Der Schutz-Hook löst `/c/…` unter Windows in beiden Lesarten auf (D-491); wo Berechtigungsschicht und Hook verschieden entscheiden, gilt der Hook (D-492); Prüfung 89 hält die CI- und Quality-Gate-Pfade gegen den deny-Korb (D-493), Prüfung 108 warnt vor einem allow-Befehl, der ein deny-Präfix umschließt (D-494). `openai-codex`: Der projektrelative Glob wird angenommen, das Leserecht verlangt weiter den erhöhten Sandkasten (D-495); die strengste Befehlsregel gewinnt über die Ablagen hinweg (D-496). Der macOS-Starter ist vom Owner abgenommen (D-498). 🔴 **Mit einem 8.3-Kurznamen oder einem Punktsegment schrieb ein Schreibwerkzeug in POSIX-Schreibweise am Kernschutz vorbei** – der Hook las `/c/` als `C:\c\`, `claude-code` als `C:\` | – | ja (3 Sitzungsläufe, 2 Läufe im Abonnement) |
132
132
  | ~~**1.20.2**~~ ✅ | 🟢 **DIE MODUSBINDUNG UND DIE REGISTRIERTE AUSNAHME – UND DER UPLOAD, AN DEM DAS LESEVERBOT VORBEIGING** (`CR-2026-164`, **D-499** bis **D-505**, **Prüfungen 109 und 110** neu, Prüfungen 99 und 107 erweitert, `K-44`, `K-54`, `K-93`, `K-94`, `K-179`, `K-181` und `K-185` beantwortet, `K-201` und `K-202` neu; 7 Sitzungsläufe, 0,83 USD nach Listenpreis, dazu 2 Läufe mit `kiro` (0,31 Credits) und 2 mit `devin-desktop`). Der Kern ist ohne Regeländerung um 748 Zeichen gestrafft, der Pilot steht bei rund 39.250 von 40.000 (D-499); die Wurzel-Anweisung kennt die registrierte Ausnahme (D-500); M1 und M2 lassen sich mit `mandat.py modus` an den Schutz-Hook binden (D-501); bei `kiro` trägt ohne Hook die Rückfrage, `--trust-all-tools` öffnet das Overlay (D-502); Prüfung 110 hält die aktivierten Packs gegen die Regelablage (D-504), Prüfung 109 die beiden Werkzeugfelder eines Skills (D-505). 🔴 **Der eingebaute Skill `upload-secrets` von `devin-desktop` lädt über die CLI, und die liest die Werte selbst – ein Leseverbot trifft diesen Weg nicht.** Der Hook sperrt den Befehl jetzt (D-503) | – | ja (7 Sitzungsläufe, 2 `kiro`, 2 `devin-desktop`) |
133
- | ~~**1.20.3**~~ ✅ | 🟢 **ANWEISUNGEN MIT NACHLAUF, DIE AUFZEICHNUNGEN UND DAS BANNER DES INSTALLERS – UND DER SCHNITT, DER DIE PAKETE NICHT KANNTE** (`CR-2026-165`, `CR-2026-166`, **D-506** bis **D-512**, Prüfung 71 geändert, `K-85` und `K-183` beantwortet, `K-186` teilweise, `K-202` gemessen; 23 Sitzungsläufe, 15,41 USD nach Listenpreis, dazu 3 Läufe mit `kiro`). Der Installationsdialog gibt ein Banner aus, zeichengleich zum Entwurf des Owners (D-506); die Lizenz ist `GPL-3.0-only`, der Name bleibt an einer Stelle (D-507); Prüfung 71 prüft jede neue Aufzeichnung (D-508); `fw-overlay-pflege` fragt einen MCP-Server vollständig ab (D-509), `fw-bugfix-prepare` hält bei einem Anstieg aus der Aufgabe nicht mehr an (D-510) – beide Testblätter nachgemessen, 16 Zellen bestanden. `K-202` ist mit 0 von 5 Läufen nicht wiederholt (D-512). 🔴 **Der Schnitt der Messbäume kannte die Pakete von `1.19.1` nicht** – sein Wächter fand 31 Kennungen (D-511) | – | ja (23 Sitzungsläufe, 3 `kiro`) |
133
+ | ~~**1.20.3**~~ ✅ | 🟢 **ANWEISUNGEN MIT NACHLAUF, DIE AUFZEICHNUNGEN UND DAS BANNER DES INSTALLERS – UND DER SCHNITT, DER DIE PAKETE NICHT KANNTE** (`CR-2026-165`, `CR-2026-166`, **D-506** bis **D-512**, Prüfung 71 geändert, `K-85` und `K-183` beantwortet, `K-186` teilweise, `K-202` gemessen; 23 Sitzungsläufe, 15,41 USD nach Listenpreis, dazu 3 Läufe mit `kiro`). Der Installationsdialog gibt ein Banner aus, zeichengleich zum Entwurf des Owners (D-506); die Lizenz ist `GPL-3.0-only`, der Name bleibt an einer Stelle (D-507); Prüfung 71 prüft jede neue Aufzeichnung (D-508); `koolie-overlay-pflege` fragt einen MCP-Server vollständig ab (D-509), `koolie-bugfix-prepare` hält bei einem Anstieg aus der Aufgabe nicht mehr an (D-510) – beide Testblätter nachgemessen, 16 Zellen bestanden. `K-202` ist mit 0 von 5 Läufen nicht wiederholt (D-512). 🔴 **Der Schnitt der Messbäume kannte die Pakete von `1.19.1` nicht** – sein Wächter fand 31 Kennungen (D-511) | – | ja (23 Sitzungsläufe, 3 `kiro`) |
134
134
  | ~~**1.21.0**~~ ✅ | 🟢 **EINSATZARCHITEKTUR, KOEXISTENZ UND VERGLEICHSMESSUNG – UND DIE AKTUALISIERUNG, DIE DEN FREMDEN BLOCK LÖSCHTE** (`CR-2026-167`, **D-513** bis **D-517**, **Prüfung 111** neu, `K-31`, `K-32` und `K-193` beantwortet, `K-203` neu; 56 Sitzungsläufe, 14,55 USD nach Listenpreis). Der Übernahmeleitfaden nennt, was die Umgebung neben Koolie tragen muss (D-513); fremde Skills werden im Overlay-Manifest deklariert, Prüfung 111 hält die Deklaration, `install.py` nennt ein erkanntes Rahmenwerk (D-514); gegen eine gute Standardkonfiguration mit Regeltexten 0 : 0 Verletzungen, ohne Regeltexte 1 : 0, mit Koolie rund 65 bis 80 Prozent teurer (D-516) – Koolie ergänzt und ersetzt nicht (D-517). 🔴 **`install.py --update` löschte den markierten Block eines fremden Generators in der Wurzel-Anweisung ohne Meldung** – jetzt bricht es davor ab (D-515) | – | ja (56 Sitzungsläufe) |
135
135
  | ~~**1.22.0**~~ ✅ | 🟢 **INSTALLATION ÜBER PAKETQUELLEN MIT DEM BANNER – UND DIE GEGENPROBE, DIE ZEHN FEHLER FÜR NULL HIELT** (`CR-2026-168`, **D-518** bis **D-522**, **Prüfung 112** neu, `K-155` gebaut, `K-204` bis `K-206` neu; kein Sitzungslauf, 0 USD). `paketquellen/bauen.py` baut aus dem Release-Archiv ein Wheel (PyPI), ein npm-Paket, ein Scoop-Manifest und eine Homebrew-Formel (D-520); der Befehl `koolie` gibt vor `install.py` das Banner aus, weil kein Installationsschritt einer Paketquelle ein Terminal verlässlich bereitstellt – gemessen für pip, uv, npm und Scoop in einer echten Konsole (D-519). Veröffentlicht ist nichts; das gibt der Owner je Paketquelle frei (D-521). Chocolatey und winget bleiben ohne Ziel (D-518). 🔴 **Eine Gegenprobe bestand, sobald „0 Fehler“ irgendwo in der Ausgabe stand – also auch bei zehn Fehlern** (D-522) | – | nein (lokale Installationen) |
136
136
  | ~~**1.23.0**~~ ✅ | 🟢 **MODUSBINDUNG M3 BIS M5 UND DIE OFFENEN MESSFRAGEN – UND DER BEFEHL IM FOLGETURN, DEN ES NICHT GAB** (`CR-2026-169`, **D-523** bis **D-526**, Prüfung 99 erweitert, `K-186`, `K-201` und `K-202` beantwortet, `K-207` und `K-208` neu; 21 Sitzungsläufe, 11,08 USD nach Listenpreis, dazu 1 Lauf mit `cursor` und 3 mit `openai-codex`). M3, M4 und M5 lassen sich mit `mandat.py modus` an den Schutz-Hook binden – die Pfadliste des Modus wird beim Binden aus dem Overlay kopiert und als Glob ausgewertet (D-523). Die Suche nach früheren Entscheidungen hält die Grenze von fünf Treffern, schneidet aber die ältesten ab (D-524, `K-207`); der Auftrag gegen die Regel ist ohne technische Schicht nicht wiederholt (D-526). 🔴 **Der Befehl im Folgeturn eines Skills aus `1.18.0` war die Wiederholung aus dem ersten Turn** – die Sperre eines Skills gilt nur in seinem Turn (D-525) | – | ja (21 Sitzungsläufe) |
137
137
  | ~~**1.24.0**~~ ✅ | 🟢 **DIE ERSTE VERÖFFENTLICHUNG AUF PYPI UND NPM – UND DIE BEIDEN TOKENS, DIE EINES WAREN** (`CR-2026-170`, **D-527** bis **D-531**, Prüfung 112 erweitert, `K-155` geklärt, `K-209` und `K-210` neu; kein Sitzungslauf, 0 USD). `1.24.0` liegt nur auf TestPyPI (D-534); README und Quickstart nennen den Weg gleichwertig neben dem Starter (D-531). Die Paketseiten tragen `README.en.md` mit absoluten Links auf die Marke (D-528); vor der Signatur prüft eine Vorabversion auf TestPyPI die Seite und die Installation (D-529). Schritt 9 gilt ab `1.25.0` mit der Signatur als freigegeben (D-530). Scoop und Homebrew bleiben gebaut und unveröffentlicht (`K-209`), Trusted Publishing ist `K-210` (D-527). 🔴 **Am Arbeitsplatz trugen `TESTPYPI_TOKEN` und `PYPI_TOKEN` dasselbe Token für pypi.org** – TestPyPI wies es mit 403 ab, bevor etwas veröffentlicht war | – | nein (lokale Installationen, TestPyPI) |
138
138
  | ~~**1.24.1**~~ ✅ | 🟢 **DER BEFEHL IM PROJEKTVERZEICHNIS – UND DIE PROBE, DIE NUR FRAGTE, OB ER STARTET** (`CR-2026-171`, **D-532** bis **D-534**, Prüfung 112 erweitert; kein Sitzungslauf, 0 USD). Die erste Version auf PyPI und npm. `koolie` ohne Argumente nimmt das aktuelle Verzeichnis mit Enter als Projekt (D-532); README und Quickstart beginnen mit `uvx koolie`, `pipx run koolie` oder `npx koolie` im Projektverzeichnis und nennen `python -m koolie`, wenn pip den Befehl außerhalb des `PATH` ablegt (D-533). 🔴 **Der Owner hielt vor PyPI an: `pip install` installierte nicht ins Projekt und legte den Befehl außerhalb des `PATH` ab – die Probe hatte nur gefragt, ob der Befehl startet.** Beifund: Das Vorabarchiv trug unter Windows CRLF (D-534) | – | nein (lokale Installationen, TestPyPI) |
139
- | ~~**1.25.0**~~ ✅ | *dieses Release:* 🟢 **EIN NEUER AUFTRITT, NPM UNTER DEM SCOPE UND DIE SUCHE NACH DEM ÄLTESTEN – UND DER NAME, DEN NPM FÜR COOKIE HIELT** (`CR-2026-172`, **D-535** bis **D-538**, Prüfung 112 erweitert, `K-207` und `K-208` beantwortet; Sitzungsläufe siehe Protokoll). Die README ist eine Startseite von rund 110 Zeilen, Maintainer-Inhalte stehen in `CONTRIBUTING.md` (D-538); npm unter `@renoxar/koolie` (D-535); die drei Skills mit externer Suche suchen bei mehr als fünf Treffern auch die ältesten, alle Zellen der drei Testblätter nachgemessen (D-536); `claude-code` gibt lesende Befehle im Druckmodus selbst frei, `deny` hält (D-537). 🔴 **npm wies `koolie` als zu ähnlich zu `cookie` ab – erst beim Hochladen, die Abfrage der Registry hatte 404 geliefert** | – | ja (Nachlauf) |
139
+ | ~~**1.25.0**~~ ✅ | 🟢 **EIN NEUER AUFTRITT, NPM UNTER DEM SCOPE UND DIE SUCHE NACH DEM ÄLTESTEN – UND DER NAME, DEN NPM FÜR COOKIE HIELT** (`CR-2026-172`, **D-535** bis **D-538**, Prüfung 112 erweitert, `K-207` und `K-208` beantwortet; Sitzungsläufe siehe Protokoll). Die README ist eine Startseite von rund 110 Zeilen, Maintainer-Inhalte stehen in `CONTRIBUTING.md` (D-538); npm unter `@renoxar/koolie` (D-535); die drei Skills mit externer Suche suchen bei mehr als fünf Treffern auch die ältesten, alle Zellen der drei Testblätter nachgemessen (D-536); `claude-code` gibt lesende Befehle im Druckmodus selbst frei, `deny` hält (D-537). 🔴 **npm wies `koolie` als zu ähnlich zu `cookie` ab – erst beim Hochladen, die Abfrage der Registry hatte 404 geliefert** | – | ja (Nachlauf) |
140
+ | ~~**2.0.0**~~ ✅ | *dieses Release:* 🟢 **SAUBERER ÖFFENTLICHER AUFTRITT UND SKILL-PRÄFIX `koolie-`** (`CR-2026-173`, **D-539** bis **D-541**, `K-210` geklärt). Mitgelieferte Skills heißen `koolie-<name>`, auch die aus Packs (`koolie-ticket`), das Agentenprofil `koolie-reviewer`; `install.py --update` benennt Skillordner, Agentenprofil und die Einträge der Berechtigungsdatei selbst um (D-539). Die Produktdokumentation nennt keine Kennung mehr; Prüfung 113 hält das fest, die Schreibregeln stehen im Dokumentationsstandard (D-540). Drei Ideen des Owners sind ohne Ziel-Release vorgemerkt (`K-213` bis `K-215`). PyPI und npm werden über Trusted Publishing aus dem GitHub-Spiegel beschickt, nur an einer signierten Marke und nach Freigabe des Owners (D-541). Die Produktdokumentation ist neu gefasst; drei Stichprobenläufe `claude-code` tragen, 1,49 USD. | – | ja (drei Stichprobenläufe) |
140
141
 
141
142
  > ✂️ **Gekürzt mit `1.9.0`** (D-378). Bis `1.8.0` standen an dieser Stelle rund 200 KB
142
143
  > Rückblick – je Release von `0.5.0` bis `0.59.0` ein Abschnitt *„Was … gebracht hat“* und
@@ -249,7 +250,7 @@ werden mit `1.11.0` entschieden, `K-151` mit `1.10.0`.
249
250
 
250
251
  ### Erledigt mit `1.14.1`: Die Testblätter nach dem Modellwechsel
251
252
 
252
- > 🟢 **Gefahren mit `1.14.1`** (`CR-2026-152`, D-425 bis D-432). Zwei Skills angeglichen, drei Zellen von `fw-plan`
253
+ > 🟢 **Gefahren mit `1.14.1`** (`CR-2026-152`, D-425 bis D-432). Zwei Skills angeglichen, drei Zellen von `koolie-plan`
253
254
  > und `SK-007-P01` gepflegt, der Messbaum ohne Aufzeichnungen, die Formregel für Überschriften; 18 Zellen
254
255
  > nachgemessen: 17 tragen, `SK-005-P01` bleibt offen (→ `1.14.2`).
255
256
 
@@ -258,9 +259,9 @@ werden mit `1.11.0` entschieden, `K-151` mit `1.10.0`.
258
259
  > 🟢 **Gefahren mit `1.14.0`** (`CR-2026-151`, D-419 bis D-424). Vier Skills an ihr Modul angeglichen, der K3-Auslöser
259
260
  > präzisiert, 25 Zellen nachgemessen: `SK-002-N03` trägt, sechs andere gehen auf `offen` (→ `1.14.1`).
260
261
 
261
- ### Geplant: Trusted Publishing und die übrigen Paketquellen (`K-210`, `K-209`) – Ziel-Release **1.26.0**
262
+ ### Geplant: Die übrigen Paketquellen (`K-209`) – Ziel-Release **2.1.0**
262
263
 
263
- Vom Agenten als Platzhalter gesetzt, der Zuschnitt liegt beim Owner: PyPI und npm über Trusted Publishing statt Tokens vom Arbeitsplatz (`K-210`), Scoop und Homebrew veröffentlichen (`K-209`). Beides braucht einen GitHub-Zugang am Arbeitsplatz. Mit Entscheidungsfragen und Schätzung vor dem Bau.
264
+ Vom Agenten als Platzhalter gesetzt, der Zuschnitt liegt beim Owner: Scoop und Homebrew veröffentlichen (`K-209`). Trusted Publishing für PyPI und npm (`K-210`) kam mit `2.0.0` (D-541). Mit Entscheidungsfragen und Schätzung vor dem Bau.
264
265
 
265
266
  ### Erledigt mit `1.25.0`: Die Suchgrenze und der Lesebefehl ohne Korb (`K-207`, `K-208`)
266
267
 
@@ -280,6 +281,22 @@ technische Absicherung* wartet auf die Wirksamkeitsprobe und die Vergleichsmessu
280
281
  `1.14.0` hat den Auslöser nur in den vier Skills präzisiert, deren Testblätter ohnehin nachgemessen wurden
281
282
  (D-419). Die übrigen sieben ziehen mit ihrer nächsten Anweisungsänderung nach.
282
283
 
284
+ ### Vorgemerkt ohne Ziel-Release: Lockerung harter Kernregeln im Overlay (`K-213`)
285
+
286
+ Ob ein Projekt einzelne harte Kernregeln – etwa einen blockierenden Hook – lockern darf, wofür und
287
+ wie. Idee des Owners; vor jeder Umsetzung zu diskutieren.
288
+
289
+ ### Vorgemerkt ohne Ziel-Release: Unternehmenseigene Overlay-Muster mitinstallieren (`K-214`)
290
+
291
+ Overlay-Muster eines Unternehmens, die außerhalb dieses Repositoriums liegen, bei jeder Installation
292
+ und jedem Update mitnehmen – etwa über einen Plugin-Mechanismus. Idee des Owners; vor jeder
293
+ Umsetzung zu diskutieren.
294
+
295
+ ### Vorgemerkt ohne Ziel-Release: Weitere Overlay-Muster je Projekttyp (`K-215`)
296
+
297
+ Standard-Overlay-Muster für weitere Projekttypen neben `general`. Idee des Owners; vor jeder
298
+ Umsetzung zu diskutieren.
299
+
283
300
  ### Vorgemerkt ohne Ziel-Release: Übungs- und Meßrepositorium trennen (`K-152`)
284
301
 
285
302
  Das Übungsrepositorium dient dem Onboarding und den Sitzungstests des Frameworks; ein Projekt braucht
@@ -287,7 +304,7 @@ nur das erste (D-400). Getrennt wird, sobald ein zweites Projekt ein Übungsrepo
287
304
 
288
305
  ### Erledigt mit `1.18.0`: Ticketsystem und Doku-Plattform über MCP
289
306
 
290
- > 🟢 **Gefahren mit `1.18.0`** (`CR-2026-157`, D-456 bis D-464). Lesen für Planung in drei Skills, Ablage im führenden System auf Anweisung, Werkzeuge je Server im Overlay (Abschnitt 13.2) und Prüfung 101. Gemessen an Atlassian Cloud mit dem offiziellen Remote-MCP-Server. ⚠️ **Offen:** MCP-Aufrufe erreichen den Schutz-Hook nicht (`K-184`); `fw-overlay-pflege` fragt die Server nicht ab (`K-183`).
307
+ > 🟢 **Gefahren mit `1.18.0`** (`CR-2026-157`, D-456 bis D-464). Lesen für Planung in drei Skills, Ablage im führenden System auf Anweisung, Werkzeuge je Server im Overlay (Abschnitt 13.2) und Prüfung 101. Gemessen an Atlassian Cloud mit dem offiziellen Remote-MCP-Server. ⚠️ **Offen:** MCP-Aufrufe erreichen den Schutz-Hook nicht (`K-184`); `koolie-overlay-pflege` fragt die Server nicht ab (`K-183`).
291
308
 
292
309
  ### Erledigt mit `1.22.0`: Installation über Paketquellen – gebaut, nicht veröffentlicht
293
310
 
@@ -342,7 +359,7 @@ Der zweite Teil von `K-174` (D-473): Validator und Sondenskript, je rund 11.000
342
359
 
343
360
  ### Erledigt mit `1.20.3`: Anweisungen mit Nachlauf und Aufzeichnungen
344
361
 
345
- > 🟢 **Gefahren mit `1.20.3`** (`CR-2026-166`, D-508 bis D-512; mit `CR-2026-165`, D-506 und D-507, das Banner des Installationsdialogs). `fw-overlay-pflege` fragt einen MCP-Server vollständig ab (D-509), `fw-bugfix-prepare` führt den Plan bei einem Anstieg aus der Aufgabe zu Ende und erkennt eine abgewiesene Anmeldung (D-510); beide Testblätter nachgemessen. Die zehn Aufzeichnungen mit Kontonamen bleiben, jede neue wird geprüft (D-508). `K-202` nicht wiederholt (D-512). 🔴 Der Schnitt der Messbäume kannte die Pakete von `1.19.1` nicht (D-511). Offen: `K-186` (1), (4), (5), `K-202`.
362
+ > 🟢 **Gefahren mit `1.20.3`** (`CR-2026-166`, D-508 bis D-512; mit `CR-2026-165`, D-506 und D-507, das Banner des Installationsdialogs). `koolie-overlay-pflege` fragt einen MCP-Server vollständig ab (D-509), `koolie-bugfix-prepare` führt den Plan bei einem Anstieg aus der Aufgabe zu Ende und erkennt eine abgewiesene Anmeldung (D-510); beide Testblätter nachgemessen. Die zehn Aufzeichnungen mit Kontonamen bleiben, jede neue wird geprüft (D-508). `K-202` nicht wiederholt (D-512). 🔴 Der Schnitt der Messbäume kannte die Pakete von `1.19.1` nicht (D-511). Offen: `K-186` (1), (4), (5), `K-202`.
346
363
 
347
364
  ### Bis 1.19.1 geplant: Schutzschicht und MCP-Nacharbeiten – aufgeteilt mit `1.20.0` (D-485)
348
365