@renoxar/koolie 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +16 -0
- package/.gitignore +51 -0
- package/.koolie/QUELLREPOSITORIUM.md +18 -0
- package/.koolie/core/CHANGELOG.md +11832 -0
- package/.koolie/core/LICENSE +674 -0
- package/.koolie/core/LICENSE-HINWEIS.md +98 -0
- package/.koolie/core/OWNERS.md +36 -0
- package/.koolie/core/VERSION +1 -0
- package/.koolie/core/banner.py +397 -0
- package/.koolie/core/build/README.md +34 -0
- package/.koolie/core/build/assemble.py +354 -0
- package/.koolie/core/build/build-docx.py +194 -0
- package/.koolie/core/build/doc/00-kopf.md +18 -0
- package/.koolie/core/build/doc/01-executive-summary.md +24 -0
- package/.koolie/core/build/doc/02-zielbild.md +13 -0
- package/.koolie/core/build/doc/03-ziele-nichtziele.md +28 -0
- package/.koolie/core/build/doc/04-geltungsbereich.md +25 -0
- package/.koolie/core/build/doc/05-glossar.md +47 -0
- package/.koolie/core/build/doc/06-leitprinzipien.md +5 -0
- package/.koolie/core/build/doc/07-architektur.md +60 -0
- package/.koolie/core/build/doc/07a-abbildungsschicht.md +66 -0
- package/.koolie/core/build/doc/08-trennung.md +24 -0
- package/.koolie/core/build/doc/09-betriebsmodi.md +18 -0
- package/.koolie/core/build/doc/10-arbeitsablauf.md +5 -0
- package/.koolie/core/build/doc/11-datenschutz.md +5 -0
- package/.koolie/core/build/doc/12-sicherheit.md +5 -0
- package/.koolie/core/build/doc/13-risiko.md +5 -0
- package/.koolie/core/build/doc/14-rollen.md +9 -0
- package/.koolie/core/build/doc/15-referenzstruktur.md +124 -0
- package/.koolie/core/build/doc/16-agentenanweisung.md +8 -0
- package/.koolie/core/build/doc/17-overlay.md +29 -0
- package/.koolie/core/build/doc/18-skill-standard.md +5 -0
- package/.koolie/core/build/doc/19-skill-template.md +5 -0
- package/.koolie/core/build/doc/20-referenz-skills.md +70 -0
- package/.koolie/core/build/doc/21-prompts.md +53 -0
- package/.koolie/core/build/doc/22-checklisten.md +49 -0
- package/.koolie/core/build/doc/23-entscheidungsbaeume.md +29 -0
- package/.koolie/core/build/doc/24-onboarding.md +33 -0
- package/.koolie/core/build/doc/25-governance.md +35 -0
- package/.koolie/core/build/doc/26-qs-test.md +9 -0
- package/.koolie/core/build/doc/27-pilot.md +13 -0
- package/.koolie/core/build/doc/28-uebernahme.md +5 -0
- package/.koolie/core/build/doc/29-grenzen.md +87 -0
- package/.koolie/core/build/doc/30-roadmap.md +5 -0
- package/.koolie/core/build/doc/31-anhaenge.md +151 -0
- package/.koolie/core/build/doc/32-abschluss.md +92 -0
- package/.koolie/core/build/ref-a4.docx +0 -0
- package/.koolie/core/checklists/01-preflight.md +54 -0
- package/.koolie/core/checklists/02-privacy-context.md +51 -0
- package/.koolie/core/checklists/03-before-code-change.md +51 -0
- package/.koolie/core/checklists/04-review-ai-code.md +58 -0
- package/.koolie/core/checklists/05-testing.md +48 -0
- package/.koolie/core/checklists/06-security.md +50 -0
- package/.koolie/core/checklists/07-new-dependency.md +57 -0
- package/.koolie/core/checklists/08-merge-request.md +47 -0
- package/.koolie/core/checklists/09-onboarding.md +52 -0
- package/.koolie/core/checklists/10-project-adoption.md +74 -0
- package/.koolie/core/checklists/11-framework-release.md +71 -0
- package/.koolie/core/checklists/README.md +28 -0
- package/.koolie/core/clientmap.py +1358 -0
- package/.koolie/core/clients/README.md +113 -0
- package/.koolie/core/clients/_template/CLIENT_PACK.md +197 -0
- package/.koolie/core/clients/claude-code/CLIENT_PACK.md +383 -0
- package/.koolie/core/clients/claude-code/manifest.json +232 -0
- package/.koolie/core/clients/claude-code/root-template/.claude/README.md +127 -0
- package/.koolie/core/clients/cursor/CLIENT_PACK.md +229 -0
- package/.koolie/core/clients/cursor/manifest.json +330 -0
- package/.koolie/core/clients/cursor/root-template/.cursor/README.md +36 -0
- package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +251 -0
- package/.koolie/core/clients/devin-desktop/manifest.json +163 -0
- package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +79 -0
- package/.koolie/core/clients/kiro/CLIENT_PACK.md +223 -0
- package/.koolie/core/clients/kiro/manifest.json +300 -0
- package/.koolie/core/clients/kiro/root-template/.kiro/README.md +37 -0
- package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +257 -0
- package/.koolie/core/clients/openai-codex/manifest.json +208 -0
- package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +35 -0
- package/.koolie/core/decision-trees/01-context-allowed.md +46 -0
- package/.koolie/core/decision-trees/02-may-ai-do-task.md +47 -0
- package/.koolie/core/decision-trees/03-analyze-or-modify.md +50 -0
- package/.koolie/core/decision-trees/04-required-review.md +49 -0
- package/.koolie/core/decision-trees/05-stop-or-escalate.md +47 -0
- package/.koolie/core/decision-trees/06-rule-placement.md +58 -0
- package/.koolie/core/decision-trees/README.md +14 -0
- package/.koolie/core/docs/ADOPTION_GUIDE.md +582 -0
- package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +91 -0
- package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +79 -0
- package/.koolie/core/docs/ROADMAP.md +848 -0
- package/.koolie/core/docs/RUNTIME_GLOSSARY.md +113 -0
- package/.koolie/core/examples/README.md +11 -0
- package/.koolie/core/examples/example-ergebnisbericht.md +31 -0
- package/.koolie/core/examples/example-mr-description.md +31 -0
- package/.koolie/core/examples/example-overlay-runtime.md +48 -0
- package/.koolie/core/framework/core/00-principles.md +93 -0
- package/.koolie/core/framework/core/01-governance.md +58 -0
- package/.koolie/core/framework/core/02-privacy.md +141 -0
- package/.koolie/core/framework/core/03-security.md +86 -0
- package/.koolie/core/framework/core/04-quality.md +48 -0
- package/.koolie/core/framework/core/05-working-model.md +199 -0
- package/.koolie/core/framework/core/06-prompting-rules.md +51 -0
- package/.koolie/core/framework/core/07-review-rules.md +52 -0
- package/.koolie/core/framework/core/08-skill-conventions.md +115 -0
- package/.koolie/core/framework/core/09-risk-model.md +87 -0
- package/.koolie/core/framework/core/10-error-escalation.md +53 -0
- package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +16 -0
- package/.koolie/core/framework/org-policies/README.md +29 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/branching-strategy/muster-general.md +43 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/coding-guidelines/muster-general.md +82 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-done/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-ready/muster-general.md +54 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/quality/muster-general.md +59 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/security/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general.md +150 -0
- package/.koolie/core/framework/role-packs/README.md +63 -0
- package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +58 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +158 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +88 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/CHANGELOG.md +10 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/EXAMPLES.md +148 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/SKILL.md +195 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +22 -0
- package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +95 -0
- package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +26 -0
- package/.koolie/core/framework/runtime/agents/fw-reviewer.md +34 -0
- package/.koolie/core/framework/runtime/client-settings.json +3 -0
- package/.koolie/core/framework/runtime/hooks.json +20 -0
- package/.koolie/core/framework/runtime/mcp-config.example.json +4 -0
- package/.koolie/core/framework/runtime/permissions.json +106 -0
- package/.koolie/core/framework/runtime/root-instruction-local.example.md +19 -0
- package/.koolie/core/framework/runtime/root-instruction.md +116 -0
- package/.koolie/core/framework/runtime/rules/00-framework-core.md +49 -0
- package/.koolie/core/framework/runtime/rules/10-privacy-security.md +49 -0
- package/.koolie/core/framework/runtime/rules/15-development-rules.md +41 -0
- package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +32 -0
- package/.koolie/core/framework/runtime/rules/20-project-overlay.md +60 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/EXAMPLES.md +57 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/SKILL.md +177 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +15 -0
- package/.koolie/core/framework/skills/fw-change-analyze/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-change-analyze/EXAMPLES.md +66 -0
- package/.koolie/core/framework/skills/fw-change-analyze/SKILL.md +167 -0
- package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +16 -0
- package/.koolie/core/framework/skills/fw-change-small/CHANGELOG.md +13 -0
- package/.koolie/core/framework/skills/fw-change-small/EXAMPLES.md +68 -0
- package/.koolie/core/framework/skills/fw-change-small/SKILL.md +175 -0
- package/.koolie/core/framework/skills/fw-change-small/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-code-explain/CHANGELOG.md +11 -0
- package/.koolie/core/framework/skills/fw-code-explain/EXAMPLES.md +61 -0
- package/.koolie/core/framework/skills/fw-code-explain/SKILL.md +163 -0
- package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-docs-update/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-docs-update/EXAMPLES.md +59 -0
- package/.koolie/core/framework/skills/fw-docs-update/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-error-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-error-analyze/EXAMPLES.md +67 -0
- package/.koolie/core/framework/skills/fw-error-analyze/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-mr-description/SKILL.md +170 -0
- package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/CHANGELOG.md +7 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/EXAMPLES.md +48 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/SKILL.md +147 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-plan/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-plan/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-plan/SKILL.md +168 -0
- package/.koolie/core/framework/skills/fw-plan/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-refactor/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-refactor/EXAMPLES.md +70 -0
- package/.koolie/core/framework/skills/fw-refactor/SKILL.md +173 -0
- package/.koolie/core/framework/skills/fw-refactor/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/EXAMPLES.md +52 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/SKILL.md +149 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-review-support/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-review-support/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-review-support/SKILL.md +179 -0
- package/.koolie/core/framework/skills/fw-review-support/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-tests/CHANGELOG.md +9 -0
- package/.koolie/core/framework/skills/fw-tests/EXAMPLES.md +65 -0
- package/.koolie/core/framework/skills/fw-tests/SKILL.md +169 -0
- package/.koolie/core/framework/skills/fw-tests/TESTS.md +12 -0
- package/.koolie/core/framework/tech-packs/README.md +15 -0
- package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +61 -0
- package/.koolie/core/governance/ADOPTION_REGISTRY.md +89 -0
- package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +60 -0
- package/.koolie/core/governance/DECISION_LOG.md +779 -0
- package/.koolie/core/governance/EXCEPTION_PROCESS.md +31 -0
- package/.koolie/core/governance/FEEDBACK_PROCESS.md +34 -0
- package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +135 -0
- package/.koolie/core/governance/INCIDENT_HANDLING.md +47 -0
- package/.koolie/core/governance/PRIORITY_HIERARCHY.md +61 -0
- package/.koolie/core/governance/RACI.md +37 -0
- package/.koolie/core/governance/RELEASE_PROCESS.md +183 -0
- package/.koolie/core/governance/change-requests/CR-2026-001-definition-release-1-0-0.md +67 -0
- package/.koolie/core/governance/change-requests/CR-2026-002-client-packs.md +63 -0
- package/.koolie/core/governance/change-requests/CR-2026-003-install-client-schalter.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-004-client-pack-claude-code.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-005-kern-neutralisierung.md +75 -0
- package/.koolie/core/governance/change-requests/CR-2026-006-gemeinsame-skill-quelle.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-007-geteilte-kernbestandteile.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-008-berechtigungen-und-hooks.md +85 -0
- package/.koolie/core/governance/change-requests/CR-2026-009-umbenennung-leitwerk.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-010-restduplikation.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-011-hauptdokument.md +72 -0
- package/.koolie/core/governance/change-requests/CR-2026-012-schreibschutz-kernverzeichnis.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-013-validator-blindstellen.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-014-kurzform-langform.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-015-versionskette.md +150 -0
- package/.koolie/core/governance/change-requests/CR-2026-016-ap2-claude-code.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-017-ladebedingungen-claude-code.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-018-quellenliste-claude-code.md +121 -0
- package/.koolie/core/governance/change-requests/CR-2026-019-strukturentscheidungen-fortschreiben.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-020-akteursbezeichnung.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-021-hook-interpreter.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-022-artefaktversionen.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-023-shell-lesesperre.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-024-clientbindungen.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-025-betriebsmodi.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-026-fail-closed.md +134 -0
- package/.koolie/core/governance/change-requests/CR-2026-027-zeichenlimit-einstufung.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-028-berechtigungsmodi.md +130 -0
- package/.koolie/core/governance/change-requests/CR-2026-029-hook-ablageort.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-030-lesende-werkzeuge.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-031-regelquellen-ausserhalb.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-032-fremde-skill-ablage.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-033-modusabhaengige-durchsetzung.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-034-nachweisbedingungen.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-035-readme-in-der-regelablage.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-036-ortsangaben-hook-konfiguration.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-037-meldender-hook-clientgebunden.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-038-importsteuerung.md +159 -0
- package/.koolie/core/governance/change-requests/CR-2026-039-normative-saetze-in-kommentaren.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-040-erh01-ist-clientgebunden.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-041-s5-nicht-abbildbar.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-042-abwesenheitsnachweis-suchwerkzeug.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-043-validator-gibt-trefferwerte-aus.md +135 -0
- package/.koolie/core/governance/change-requests/CR-2026-044-aktivierungspruefung-clientgebunden.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-045-update-verliert-die-clientwahl.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-046-erstinstallation-ueberschreibt-projektdatei.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-047-zusagen-je-zugriffskanal.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-048-modusgrenze-ohne-durchsetzung.md +137 -0
- package/.koolie/core/governance/change-requests/CR-2026-049-sondenlauf-kodierungsabhaengig.md +126 -0
- package/.koolie/core/governance/change-requests/CR-2026-050-allowed-tools-und-verworfene-permissions.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-051-quellenkarte-und-ueberholter-stand.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-052-drei-regelkonflikte.md +166 -0
- package/.koolie/core/governance/change-requests/CR-2026-053-lesesperre-und-entwicklungsprofil.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-054-aktivierung-verlangt-aktivitaet.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-055-domain-ausnahme-ohne-mechanismus.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-056-eingabeschema-und-pfadidentitaet.md +245 -0
- package/.koolie/core/governance/change-requests/CR-2026-057-disallowed-tools-und-s3.md +148 -0
- package/.koolie/core/governance/change-requests/CR-2026-058-unteragent-reichweite.md +203 -0
- package/.koolie/core/governance/change-requests/CR-2026-059-unteragent-tiefe-und-widerspruch.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-060-stumme-brueche.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-061-berechtigungsdatei-ohne-pruefung.md +169 -0
- package/.koolie/core/governance/change-requests/CR-2026-062-werkzeugabbildung-des-frontmatters.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-063-skillaufruf-ohne-freigabe.md +207 -0
- package/.koolie/core/governance/change-requests/CR-2026-064-pruefregister-nicht-nachgezaehlt.md +141 -0
- package/.koolie/core/governance/change-requests/CR-2026-065-devin-suchwerkzeuge-erhoben.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-066-schlitzdeckung-ohne-abgleich.md +153 -0
- package/.koolie/core/governance/change-requests/CR-2026-067-hookblock-und-praeparationsregister.md +140 -0
- package/.koolie/core/governance/change-requests/CR-2026-068-sondenlauf-nebenlaeufig.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-069-bytecode-des-kerns.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-070-d11-zaehler.md +114 -0
- package/.koolie/core/governance/change-requests/CR-2026-071-strukturentscheidungen-bestaetigen.md +322 -0
- package/.koolie/core/governance/change-requests/CR-2026-072-modulstatus-heben.md +315 -0
- package/.koolie/core/governance/change-requests/CR-2026-073-nicht-skill-traeger-heben.md +246 -0
- package/.koolie/core/governance/change-requests/CR-2026-074-restliche-nicht-skill-traeger-heben.md +271 -0
- package/.koolie/core/governance/change-requests/CR-2026-075-ap2-zielversion-devin-desktop.md +335 -0
- package/.koolie/core/governance/change-requests/CR-2026-076-erster-sitzungstest.md +455 -0
- package/.koolie/core/governance/change-requests/CR-2026-077-sitzungstest-schranken.md +425 -0
- package/.koolie/core/governance/change-requests/CR-2026-078-planung-nach-1-0-0.md +294 -0
- package/.koolie/core/governance/change-requests/CR-2026-079-umbenennung-vorziehen.md +233 -0
- package/.koolie/core/governance/change-requests/CR-2026-080-clientbindung-des-kerns.md +321 -0
- package/.koolie/core/governance/change-requests/CR-2026-081-produktnamen-im-kern.md +297 -0
- package/.koolie/core/governance/change-requests/CR-2026-082-sitzungstest-pi-ds-2.md +145 -0
- package/.koolie/core/governance/change-requests/CR-2026-083-sitzungstest-ne-sc.md +300 -0
- package/.koolie/core/governance/change-requests/CR-2026-084-trockenlauf-gegen-den-committeten-stand.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-085-vorbedingungen-sitzungstest-5.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-086-grenzfaelle-gegen-die-fassungen.md +164 -0
- package/.koolie/core/governance/change-requests/CR-2026-087-produktbeobachtung-quellenliste.md +206 -0
- package/.koolie/core/governance/change-requests/CR-2026-088-vorbedingungen-testblaetter.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-089-herrichtung-uebungsrepositorium.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-090-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +255 -0
- package/.koolie/core/governance/change-requests/CR-2026-091-sitzungstest-5.md +163 -0
- package/.koolie/core/governance/change-requests/CR-2026-092-pruefmittelwort-und-buendelschnitt.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-093-sechzehnte-praeparation.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-094-testblaetter-buendel-1.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-095-pruefapparat-filter.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-096-vorbedingungen-buendel-2.md +225 -0
- package/.koolie/core/governance/change-requests/CR-2026-097-testblaetter-buendel-2.md +162 -0
- package/.koolie/core/governance/change-requests/CR-2026-098-anforderungen-auslieferung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-099-k74-und-vorbedingungen-buendel-3.md +119 -0
- package/.koolie/core/governance/change-requests/CR-2026-100-testblaetter-buendel-3.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-101-k77-eigener-posten.md +165 -0
- package/.koolie/core/governance/change-requests/CR-2026-102-k77-entschieden.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-103-vorbedingungen-buendel-4.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-104-herrichtung-buendel-4.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-105-messapparat-buendel-4.md +227 -0
- package/.koolie/core/governance/change-requests/CR-2026-106-uebergabe-einchecken.md +91 -0
- package/.koolie/core/governance/change-requests/CR-2026-107-uebergabe-im-release-commit.md +111 -0
- package/.koolie/core/governance/change-requests/CR-2026-108-testblaetter-buendel-4.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-109-berichtsweg-des-aufraeumers.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-110-vorbedingungen-des-nachlaufs.md +184 -0
- package/.koolie/core/governance/change-requests/CR-2026-111-der-apparat-auf-dem-weg-der-wiederaufnahme.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-112-der-arbeitsplatz-im-kern.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-113-nachlauf-buendel-4.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-114-vorbedingungen-buendel-5.md +317 -0
- package/.koolie/core/governance/change-requests/CR-2026-115-herrichtung-buendel-5.md +244 -0
- package/.koolie/core/governance/change-requests/CR-2026-116-messtag-buendel-5.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-117-sammelzellen-zentraler-katalog.md +251 -0
- package/.koolie/core/governance/change-requests/CR-2026-118-quellenzuordnung-matrixzeilen.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-119-umbenennung-koolie.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-120-ap2-rest-devin-desktop.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-121-verify-marker-abschaffen.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-122-umbenennung-koolie-lauf.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-123-vortrag-und-namensabsatz.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-124-hauptdokument-ap11.md +237 -0
- package/.koolie/core/governance/change-requests/CR-2026-125-word-fassung-und-blinder-fleck.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-126-lizenz-gpl3.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-127-gegenzeichnung-rollenfrage.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-128-freigabelauf-1.0.0.md +278 -0
- package/.koolie/core/governance/change-requests/CR-2026-129-archiv-zeilenenden.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-130-reihenfolge-des-hebens.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-131-chronik-und-vorlage.md +194 -0
- package/.koolie/core/governance/change-requests/CR-2026-132-erhebung-openai-codex.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-133-bau-openai-codex.md +97 -0
- package/.koolie/core/governance/change-requests/CR-2026-134-uebergabe-lokal.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-135-pfadlisten-nul-getrennt.md +139 -0
- package/.koolie/core/governance/change-requests/CR-2026-136-overlay-werte-einordnung.md +156 -0
- package/.koolie/core/governance/change-requests/CR-2026-137-kopierweg-kern.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-138-overlay-muster-general.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-139-overlay-muster-dokumente.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-140-installer-je-zielsystem.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-141-lieferumfang.md +123 -0
- package/.koolie/core/governance/change-requests/CR-2026-142-dokumentationsstandard.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-143-klasse-b-core-laufzeit.md +89 -0
- package/.koolie/core/governance/change-requests/CR-2026-144-klasse-b-governance.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-145-klasse-b-skills.md +81 -0
- package/.koolie/core/governance/change-requests/CR-2026-146-code-pack-posten.md +84 -0
- package/.koolie/core/governance/change-requests/CR-2026-147-regel-register-posten.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-148-mehrprojekt-tokenlast.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-149-regelablage-pfadtoken.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-150-client-pack-kiro.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-151-skill-anweisungen.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-152-testblaetter-modellwechsel.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-153-attributionszeile.md +88 -0
- package/.koolie/core/governance/change-requests/CR-2026-154-auffindbarkeit.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-155-client-pack-cursor.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-156-mandat-und-reibung.md +100 -0
- package/.koolie/core/governance/change-requests/CR-2026-157-mcp-anbindung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-158-registerpflege.md +69 -0
- package/.koolie/core/governance/change-requests/CR-2026-159-powershell.md +49 -0
- package/.koolie/core/governance/change-requests/CR-2026-160-messapparat.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-161-pruefwerkzeuge.md +52 -0
- package/.koolie/core/governance/change-requests/CR-2026-162-schutzschicht.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-163-pfadsemantik.md +61 -0
- package/.koolie/core/governance/change-requests/CR-2026-164-modi-ausnahmen.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-165-installer-banner.md +406 -0
- package/.koolie/core/governance/change-requests/CR-2026-166-nachlauf-aufzeichnungen.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-167-einsatzarchitektur.md +60 -0
- package/.koolie/core/governance/change-requests/CR-2026-168-paketquellen.md +64 -0
- package/.koolie/core/governance/change-requests/CR-2026-169-modusbindung-messfragen.md +58 -0
- package/.koolie/core/governance/change-requests/CR-2026-170-erste-veroeffentlichung.md +62 -0
- package/.koolie/core/governance/change-requests/CR-2026-171-befehl-im-projektverzeichnis.md +57 -0
- package/.koolie/core/governance/change-requests/CR-2026-172-auftritt-npm-suche.md +58 -0
- package/.koolie/core/install.py +2402 -0
- package/.koolie/core/install_dialog.py +227 -0
- package/.koolie/core/koexistenz.py +112 -0
- package/.koolie/core/mandat.py +605 -0
- package/.koolie/core/onboarding/COMPLETION_CRITERIA.md +37 -0
- package/.koolie/core/onboarding/GUIDE.md +103 -0
- package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +48 -0
- package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +40 -0
- package/.koolie/core/onboarding/QUICKSTART.md +50 -0
- package/.koolie/core/onboarding/REFERENCE.md +69 -0
- package/.koolie/core/onboarding/exercises/EXERCISES.md +78 -0
- package/.koolie/core/onboarding/exercises/README.md +120 -0
- package/.koolie/core/pilot/METRICS.md +59 -0
- package/.koolie/core/pilot/PILOT_CONCEPT.md +42 -0
- package/.koolie/core/prompts/01-understand-codebase.md +99 -0
- package/.koolie/core/prompts/02-impact-analysis.md +104 -0
- package/.koolie/core/prompts/03-implementation-planning.md +102 -0
- package/.koolie/core/prompts/04-code-generation.md +100 -0
- package/.koolie/core/prompts/05-test-generation.md +103 -0
- package/.koolie/core/prompts/06-refactoring.md +102 -0
- package/.koolie/core/prompts/07-debugging.md +97 -0
- package/.koolie/core/prompts/08-security-review.md +92 -0
- package/.koolie/core/prompts/09-performance-analysis.md +89 -0
- package/.koolie/core/prompts/10-documentation.md +91 -0
- package/.koolie/core/prompts/11-merge-request-review.md +94 -0
- package/.koolie/core/prompts/12-developer-training.md +90 -0
- package/.koolie/core/prompts/README.md +88 -0
- package/.koolie/core/templates/MR_AI_DISCLOSURE.md +37 -0
- package/.koolie/core/templates/PLAN_TEMPLATE.md +57 -0
- package/.koolie/core/templates/SKILL_TEMPLATE.md +159 -0
- package/.koolie/core/templates/project-overlay/OVERLAY.md +315 -0
- package/.koolie/core/templates/project-overlay/documents/README.md +43 -0
- package/.koolie/core/templates/project-overlay/documents/ai-governance/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/ai-process-model/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/branching-strategy/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/coding-guidelines/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-done/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-ready/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/deployment/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/glossary/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/quality/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roadmap/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roles/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/security/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/exceptions/EXCEPTIONS.md +9 -0
- package/.koolie/core/templates/project-overlay/forbidden-terms.txt +8 -0
- package/.koolie/core/templates/project-overlay/overlay-manifest.yaml +73 -0
- package/.koolie/core/templates/rules/21-overlay-TEMPLATE.md.template +28 -0
- package/.koolie/core/templates/rules/40-tech-TEMPLATE.md.template +33 -0
- package/.koolie/core/tests/EDGE_CASES.md +67 -0
- package/.koolie/core/tests/TEST_CATALOG.md +170 -0
- package/.koolie/core/tests/erhebungen/README.md +326 -0
- package/.koolie/core/tests/erhebungen/ablage.py +357 -0
- package/.koolie/core/tests/erhebungen/apparat/__init__.py +22 -0
- package/.koolie/core/tests/erhebungen/apparat/baum.py +214 -0
- package/.koolie/core/tests/erhebungen/apparat/belege.py +91 -0
- package/.koolie/core/tests/erhebungen/apparat/clients.py +321 -0
- package/.koolie/core/tests/erhebungen/apparat/freigabe.py +74 -0
- package/.koolie/core/tests/erhebungen/apparat/kontingent.py +64 -0
- package/.koolie/core/tests/erhebungen/apparat/laeufer.py +155 -0
- package/.koolie/core/tests/erhebungen/apparat/reihe.py +202 -0
- package/.koolie/core/tests/erhebungen/apparat/selbsttest.py +280 -0
- package/.koolie/core/tests/erhebungen/apparat/stand.py +30 -0
- package/.koolie/core/tests/erhebungen/apparat/vorpruefung.py +70 -0
- package/.koolie/core/tests/erhebungen/auswerten-b4.py +468 -0
- package/.koolie/core/tests/erhebungen/auswerten-b5.py +517 -0
- package/.koolie/core/tests/erhebungen/auswerten-dd.py +172 -0
- package/.koolie/core/tests/erhebungen/baeume-b4.py +334 -0
- package/.koolie/core/tests/erhebungen/baeume-b5.py +339 -0
- package/.koolie/core/tests/erhebungen/baeume_loeschen.py +138 -0
- package/.koolie/core/tests/erhebungen/cc-overlay-fuellen.py +277 -0
- package/.koolie/core/tests/erhebungen/dossier-b4.py +178 -0
- package/.koolie/core/tests/erhebungen/dossier-b5.py +202 -0
- package/.koolie/core/tests/erhebungen/historie-bauen-b4.py +642 -0
- package/.koolie/core/tests/erhebungen/k-bauen-b3.py +841 -0
- package/.koolie/core/tests/erhebungen/lauf-dd.py +146 -0
- package/.koolie/core/tests/erhebungen/lauf.py +114 -0
- package/.koolie/core/tests/erhebungen/mcp-waechter.py +278 -0
- package/.koolie/core/tests/erhebungen/messbaum-schnitt.py +256 -0
- package/.koolie/core/tests/erhebungen/messen.py +72 -0
- package/.koolie/core/tests/erhebungen/node-waechter.py +74 -0
- package/.koolie/core/tests/erhebungen/packaktivierung.py +403 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b4.py +210 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b5.py +251 -0
- package/.koolie/core/tests/erhebungen/reihe-b4.py +171 -0
- package/.koolie/core/tests/erhebungen/reihe-b5.py +172 -0
- package/.koolie/core/tests/erhebungen/stand-b4.py +135 -0
- package/.koolie/core/tests/erhebungen/stand-b5.py +137 -0
- package/.koolie/core/tests/erhebungen/trust-b4.py +56 -0
- package/.koolie/core/tests/erhebungen/trust-b5.py +56 -0
- package/.koolie/core/tests/erhebungen/turn2-schreiben-b4.py +105 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b4.py +377 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b5.py +363 -0
- package/.koolie/core/tests/erhebungen/zaehlen46.py +74 -0
- package/.koolie/core/tests/erhebungen/zustand-b4.py +82 -0
- package/.koolie/core/tests/erhebungen/zustand-b5.py +82 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code-wirkungsnachweise.md +194 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code.md +468 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-020-akteursbezeichnung.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-021-hook-interpreter.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-022-artefaktversionen.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-023-shell-lesesperre.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-024-clientbindungen.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-DS-03.md +90 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-01.md +105 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-02.md +123 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-04.md +73 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-RE-02.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01-wiederholung.md +108 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01.md +249 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-ZA-05.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-11-AP2-devin-desktop.md +257 -0
- package/.koolie/core/tests/protocols/2026-09-11-CR-2026-026-fail-closed.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-11-erhebungen-K21-K26.md +243 -0
- package/.koolie/core/tests/protocols/2026-09-11-wirkungsnachweise-0.26.0.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-12-B01-allowed-tools.md +152 -0
- package/.koolie/core/tests/protocols/2026-09-12-B04-B05-gegenpruefung.md +204 -0
- package/.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md +268 -0
- package/.koolie/core/tests/protocols/2026-09-12-mehrprojekt-arbeitsbereich.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.26.1.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.27.0.md +114 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.28.0.md +129 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.29.0.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.30.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.31.0.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-13-B06-gegenpruefung.md +370 -0
- package/.koolie/core/tests/protocols/2026-09-13-B07-B09-gegenpruefung.md +211 -0
- package/.koolie/core/tests/protocols/2026-09-13-B08-B11-gegenpruefung.md +179 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-disallowed-tools.md +147 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent-tiefe.md +139 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-berechtigungsdatei.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-stumme-brueche.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-werkzeugabbildung.md +219 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.32.0.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.33.0.md +169 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.34.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.35.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.36.0.md +137 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.37.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.38.0.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.39.0.md +188 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.40.0.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md +267 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-skillaufruf.md +238 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-pruefregister.md +156 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-schlitzdeckung.md +206 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-skillwahl.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-14-migrationslauf-pilot.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.41.0.md +175 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.42.0.md +180 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.43.0.md +165 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.44.0.md +130 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-d11-zaehlregeln.md +311 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-modulstatus.md +524 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-nicht-skill-traeger.md +225 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-restliche-nicht-skill-traeger.md +345 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-strukturentscheidungen.md +392 -0
- package/.koolie/core/tests/protocols/2026-09-15-herrichtung-uebungsrepositorium.md +213 -0
- package/.koolie/core/tests/protocols/2026-09-15-migrationslauf-pilot-0.46.0.md +143 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.45.0.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.46.0.md +193 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.47.0.md +149 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.49.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.50.0.md +183 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.51.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.52.0.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-16-wirkungsnachweise-0.53.0.md +350 -0
- package/.koolie/core/tests/protocols/2026-09-17-nachtrag-migrationshinweis-0.54.1.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-pi-ds.md +523 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-schranken.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-17-wirkungsnachweise-0.54.0.md +159 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-AK-01.md +442 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-KO-05.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-18-herrichtung-uebungsrepositorium.md +273 -0
- package/.koolie/core/tests/protocols/2026-09-18-nachtrag-preis-umbenennung-0.56.1.md +102 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-5.md +349 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-ne-sc.md +430 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-pi-ds-2.md +499 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +170 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-testblaetter.md +184 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.55.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.2.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.0.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.1.md +262 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.58.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.59.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.60.0.md +340 -0
- package/.koolie/core/tests/protocols/2026-09-19-herrichtung-buendel-4.md +235 -0
- package/.koolie/core/tests/protocols/2026-09-19-k77-zurechenbarkeit.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefapparat-filter.md +50 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefmittelwort-und-buendelschnitt.md +239 -0
- package/.koolie/core/tests/protocols/2026-09-19-sechzehnte-praeparation.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-1.md +250 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-2.md +229 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md +293 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-2.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-3.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-4.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-20-messapparat-buendel-4.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-20-testblaetter-buendel-4.md +321 -0
- package/.koolie/core/tests/protocols/2026-09-20-uebergabe-im-release-commit.md +146 -0
- package/.koolie/core/tests/protocols/2026-09-20-vorbedingungen-nachlauf-b4.md +259 -0
- package/.koolie/core/tests/protocols/2026-09-21-arbeitsplatz-im-kern.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-21-nachlauf-buendel-4.md +157 -0
- package/.koolie/core/tests/protocols/2026-09-21-vorbedingungen-buendel-5.md +247 -0
- package/.koolie/core/tests/protocols/2026-09-21-wiederaufnahme-nachlauf-b4.md +190 -0
- package/.koolie/core/tests/protocols/2026-09-22-ap2-rest-devin-desktop.md +614 -0
- package/.koolie/core/tests/protocols/2026-09-22-hauptdokument-ap11.md +443 -0
- package/.koolie/core/tests/protocols/2026-09-22-herrichtung-buendel-5.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-22-messtag-buendel-5.md +327 -0
- package/.koolie/core/tests/protocols/2026-09-22-quellenzuordnung-matrixzeilen.md +230 -0
- package/.koolie/core/tests/protocols/2026-09-22-sammelzellen-zentraler-katalog.md +354 -0
- package/.koolie/core/tests/protocols/2026-09-22-umbenennung-koolie.md +296 -0
- package/.koolie/core/tests/protocols/2026-09-22-verify-marker-abschaffen.md +283 -0
- package/.koolie/core/tests/protocols/2026-09-22-vortrag-und-name.md +261 -0
- package/.koolie/core/tests/protocols/2026-09-22-wirkungsnachweise-0.86.0.md +158 -0
- package/.koolie/core/tests/protocols/2026-09-23-archiv-zeilenenden.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-23-bau-openai-codex.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-23-chronik-und-vorlage.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-23-erhebung-openai-codex.md +309 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0-vorbereitung.md +119 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-23-gegenzeichnung-rollenfrage.md +198 -0
- package/.koolie/core/tests/protocols/2026-09-23-reihenfolge-des-hebens.md +220 -0
- package/.koolie/core/tests/protocols/2026-09-23-word-fassung-und-blinder-fleck.md +307 -0
- package/.koolie/core/tests/protocols/2026-09-24-kopierweg-kern.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-24-overlay-werte-einordnung.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-24-pfadlisten-nul-getrennt.md +128 -0
- package/.koolie/core/tests/protocols/2026-09-24-uebergabe-lokal.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-25-code-pack-posten.md +86 -0
- package/.koolie/core/tests/protocols/2026-09-25-dokumentationsstandard.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-25-installer-je-zielsystem.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-core-laufzeit.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-governance.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-skills.md +91 -0
- package/.koolie/core/tests/protocols/2026-09-25-lieferumfang.md +76 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-dokumente.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-general.md +100 -0
- package/.koolie/core/tests/protocols/2026-09-25-regel-register-posten.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-26-attributionszeile.md +83 -0
- package/.koolie/core/tests/protocols/2026-09-26-auffindbarkeit.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-cursor.md +68 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-kiro.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md +174 -0
- package/.koolie/core/tests/protocols/2026-09-26-regelablage-pfadtoken.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-26-skill-anweisungen.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-26-testblaetter-modellwechsel.md +106 -0
- package/.koolie/core/tests/protocols/2026-09-27-mandat-und-reibung.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-28-mcp-anbindung.md +72 -0
- package/.koolie/core/tests/protocols/2026-09-29-messapparat.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-29-powershell.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-29-pruefwerkzeuge.md +64 -0
- package/.koolie/core/tests/protocols/2026-09-29-registerpflege.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-29-schutzschicht.md +95 -0
- package/.koolie/core/tests/protocols/2026-09-30-einsatzarchitektur.md +104 -0
- package/.koolie/core/tests/protocols/2026-09-30-modi-ausnahmen.md +77 -0
- package/.koolie/core/tests/protocols/2026-09-30-nachlauf-banner.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-30-paketquellen.md +65 -0
- package/.koolie/core/tests/protocols/2026-09-30-pfadsemantik.md +79 -0
- package/.koolie/core/tests/protocols/2026-10-01-auftritt-und-suche.md +58 -0
- package/.koolie/core/tests/protocols/2026-10-01-befehl-im-projektverzeichnis.md +47 -0
- package/.koolie/core/tests/protocols/2026-10-01-erste-veroeffentlichung.md +60 -0
- package/.koolie/core/tests/protocols/2026-10-01-modusbindung-messfragen.md +107 -0
- package/.koolie/core/tests/protocols/README.md +14 -0
- package/.koolie/core/tests/scripts/hook-check-secrets.py +1307 -0
- package/.koolie/core/tests/scripts/hook-overlay-status.py +120 -0
- package/.koolie/core/tests/scripts/mermaid_renderer.py +67 -0
- package/.koolie/core/tests/scripts/overlay_status.py +130 -0
- package/.koolie/core/tests/scripts/probe-pruefungen.py +110 -0
- package/.koolie/core/tests/scripts/pruefungen/__init__.py +4 -0
- package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +1559 -0
- package/.koolie/core/tests/scripts/pruefungen/bestand.py +1433 -0
- package/.koolie/core/tests/scripts/pruefungen/dokumente.py +1262 -0
- package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +784 -0
- package/.koolie/core/tests/scripts/pruefungen/hooks.py +1188 -0
- package/.koolie/core/tests/scripts/pruefungen/overlay.py +1251 -0
- package/.koolie/core/tests/scripts/pruefungen/packs.py +1314 -0
- package/.koolie/core/tests/scripts/pruefungen/register.py +950 -0
- package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +1202 -0
- package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +957 -0
- package/.koolie/core/tests/scripts/sonden/__init__.py +4 -0
- package/.koolie/core/tests/scripts/sonden/apparat.py +653 -0
- package/.koolie/core/tests/scripts/sonden/teil01_grundbestand_und_installation.py +999 -0
- package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +942 -0
- package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +1184 -0
- package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +1491 -0
- package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +1447 -0
- package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +739 -0
- package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +1014 -0
- package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +1325 -0
- package/.koolie/core/tests/scripts/sonden/teil09_pruefmittel_81_und_82.py +505 -0
- package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +1218 -0
- package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +149 -0
- package/.koolie/core/tests/scripts/sonden/teil12_pruefungen_106_und_107.py +136 -0
- package/.koolie/core/tests/scripts/sonden/teil13_pfad_und_mustersemantik.py +150 -0
- package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +204 -0
- package/.koolie/core/tests/scripts/sonden/teil15_banner_und_nachlauf.py +193 -0
- package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +114 -0
- package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +115 -0
- package/.koolie/core/tests/scripts/sonden/teil18_modusbindung_m3_m5.py +113 -0
- package/.koolie/core/tests/scripts/validate-framework.py +1104 -0
- package/.koolie/core/tests/scripts/validate-output.py +296 -0
- package/.koolie/core/wirksamkeit.py +430 -0
- package/CONTRIBUTING.md +119 -0
- package/LICENSE +674 -0
- package/QUICKSTART.en.md +135 -0
- package/QUICKSTART.md +129 -0
- package/README.en.md +108 -0
- package/README.md +107 -0
- package/install.cmd +44 -0
- package/install.command +46 -0
- package/package.json +21 -0
- package/paketquellen/README.md +41 -0
- package/paketquellen/bauen.py +411 -0
- package/paketquellen/koolie.cmd +23 -0
- package/paketquellen/koolie_befehl.py +82 -0
- package/paketquellen/npm/koolie.js +26 -0
|
@@ -0,0 +1,1104 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
validate-framework.py – Strukturelle Validierung des Frameworks und eines Project Overlays.
|
|
4
|
+
|
|
5
|
+
Aufruf (im Wurzelverzeichnis des Repositorys):
|
|
6
|
+
python3 .koolie/core/tests/scripts/validate-framework.py [--strict-overlay]
|
|
7
|
+
[--check-overlay-ready] [--mermaid] [--root PFAD]
|
|
8
|
+
|
|
9
|
+
Prüft (statisch, ohne laufenden KI-Client):
|
|
10
|
+
1. Pflichtdateien und -verzeichnisse
|
|
11
|
+
2. Berechtigungsdatei: gültiges JSON, Kernregeln vollständig (Abgleich gegen die
|
|
12
|
+
Kernquelle framework/runtime/permissions.json), keine Kernverbote in allow
|
|
13
|
+
3. weitere JSON-Dateien der Laufzeitschicht (Hooks, mcp-Vorlage): gültiges JSON
|
|
14
|
+
4. .devin/rules/*.md: Frontmatter (description, trigger, globs), Zeichenlimits
|
|
15
|
+
5. Skills (.devin/skills/ und die Quellablagen der Packs): Pflichtdateien, Frontmatter,
|
|
16
|
+
Metadatenblock, Pflichtabschnitte,
|
|
17
|
+
Trigger-Regel (schreibende Skills nur user-getriggert), Beispiele und Testfälle
|
|
18
|
+
6. Verbotene Inhalte (ohne erzeugte Lockdateien): Secret-Muster – dieselben Kategorien,
|
|
19
|
+
die der Schutz-Hook in einer Werkzeugeingabe blockiert –, E-Mail-Adressen, IP-Adressen,
|
|
20
|
+
interne Hostnamen, URLs außerhalb der Quellen-Allowlist, projektspezifische Sperrbegriffe
|
|
21
|
+
(.koolie/project-overlay/forbidden-terms.txt)
|
|
22
|
+
7. Platzhalter: nur registrierte Platzhalter (.koolie/core/docs/PLACEHOLDER_REGISTRY.md)
|
|
23
|
+
8. Overlay-Manifest: Kopfschlüssel, Pflichtfelder je Dokumenteintrag, Aufzählungswerte;
|
|
24
|
+
seit 1.6.0 auch, dass `path` und – bei `load: rule` – `rule_file` existieren (D-360)
|
|
25
|
+
9. --strict-overlay: der **aktive** Zustand - keine offenen <TBD> in
|
|
26
|
+
sicherheitsrelevanten Overlay-Feldern; Status aktiv an *jeder* Stelle, an der das
|
|
27
|
+
Overlay ihn erklärt (Steckbrief und Aktivierung)
|
|
28
|
+
9a. --check-overlay-ready: die **Aktivierungsreife eines Kandidaten** - derselbe Inhalt,
|
|
29
|
+
aber der Status ist noch nicht aktiv und an allen Stellen gleich. Ohne diese Pruefung
|
|
30
|
+
verlangte der dokumentierte Ablauf, was er herstellen sollte (B08, D-57)
|
|
31
|
+
10. --mermaid: Syntaxprüfung aller Mermaid-Blöcke mit mmdc (falls installiert)
|
|
32
|
+
11. Codeblöcke mit vier oder mehr Backticks (brechen die Dokumentassemblierung) –
|
|
33
|
+
einschließlich der Quellen unter <CORE_DIR>/build/doc, aus denen sie entsteht
|
|
34
|
+
12. Querverweise (FW-KO-04): Markdown-Links und in Backticks genannte Framework-Pfade
|
|
35
|
+
zeigen auf existierende Dateien oder Verzeichnisse
|
|
36
|
+
13. Versionskette (FW-VN-01): Overlay-Version an allen drei Ablageorten gleich, Steckbrief-
|
|
37
|
+
angabe zur kompatiblen Framework-Version passend zu <CORE_DIR>/VERSION, und das
|
|
38
|
+
Versionsfeld jedes Kernartefakts in der Form MAJOR.MINOR.PATCH
|
|
39
|
+
14. Clientname im Kern (D-02, D-28, D-129): Der Kern nennt keinen Client - weder als
|
|
40
|
+
Handelnden noch als Produkt, und kein Platzhalter traegt den Namen. Die Namen
|
|
41
|
+
stammen aus den Pack-Kennungen, die Ausnahmen aus NEUTRAL_AUSNAHMEN (dieselbe
|
|
42
|
+
Menge wie Pruefung 48). Bis 0.57.0 war der Produktname MIT ZUSATZ zulaessig; die
|
|
43
|
+
Ausnahme hatte in ihrem Geltungsbereich keinen einzigen berechtigten Fall -
|
|
44
|
+
fuenfzehn Fundstellen in zwoelf Traegern, jede mit einer Aussage ueber das Produkt
|
|
45
|
+
15. Hook-Interpreter (AP2-CC-13, D-29): Der Interpreter der Hook-Aufrufe startet auf
|
|
46
|
+
dieser Maschine wirklich Python. Geprueft wird die Wirkung, nicht die Anwesenheit
|
|
47
|
+
des Namens - unter Windows ist 'python3' haeufig ein Alias ohne Interpreter
|
|
48
|
+
16. Hook-Abdeckung (AP2-CC-16, D-30): Der Schutz-Hook erkennt jeden Werkzeugnamen,
|
|
49
|
+
den ein Client Pack in hook_tools abbildet. Geprueft durch Aufruf mit einer Sonde,
|
|
50
|
+
die er blockieren muss - ein Listenvergleich belegt Uebereinstimmung, nicht Wirkung
|
|
51
|
+
17. Fail-closed (D-31): Der durchsetzende Hook verhaelt sich so, wie das Pack es zusagt -
|
|
52
|
+
geprueft am Skript und an der erzeugten Konfiguration, nicht am Manifestfeld
|
|
53
|
+
18. Hook-Ablageort (D-32): keine verwaiste Hook-Datei neben der wirksamen, und keine
|
|
54
|
+
root-template-Vorlage, die eine solche Datei als geliefertes Artefakt fuehrt
|
|
55
|
+
19. Quellenauskunft (D-34, D-37): Jedes Client Pack fuehrt den Abschnitt
|
|
56
|
+
"Anweisungs- und Konfigurationsquellen ausserhalb des Projekts", mit mindestens einer
|
|
57
|
+
Quellenzeile oder einem datierten Abwesenheitsbeleg. Belegt Anwesenheit, nicht
|
|
58
|
+
Richtigkeit - siehe Kopfkommentar der Pruefung
|
|
59
|
+
20. Dokumenttabellen (CR-2026-036): Die Client-Spalten von PLACEHOLDER_REGISTRY.md und
|
|
60
|
+
RUNTIME_GLOSSARY.md stimmen je Pack mit dessen manifest.json ueberein. Belegt
|
|
61
|
+
Uebereinstimmung, nicht Richtigkeit; seit 1.14.0 hat jedes Pack eine Spalte (D-421)
|
|
62
|
+
21. Hook-Skripte (D-30, CR-2026-037): Ein Hook-Skript des Kerns leitet seine Pfade nicht
|
|
63
|
+
aus einer clientgebundenen Umgebungsvariablen oder Laufzeitschicht ab; es bekommt sie
|
|
64
|
+
als Argumente aus der Semantikabbildung
|
|
65
|
+
22. Importsteuerung (D-37): Die installierte Berechtigungsdatei fuehrt sie so, wie das
|
|
66
|
+
Manifest sie abbildet. Belegt Anwesenheit und Uebereinstimmung, nicht Wirkung -
|
|
67
|
+
die Benutzerkonfiguration der Arbeitsstation hat Vorrang (K-27)
|
|
68
|
+
23. Normative Kommentare (D-38): kein normatives Schluesselwort in einem HTML-Kommentar
|
|
69
|
+
der Laufzeitartefakte - ein Kommentar erreicht nicht jede Sitzung (ERH-01, K-28)
|
|
70
|
+
24. Regelablage (D-36): In der Vorlage der Regelablage liegt nur, was dem Nummernschema
|
|
71
|
+
der Regeltexte folgt; erklaerender Text steht in der Laufzeit-README eine Ebene hoeher
|
|
72
|
+
25. Ausfall mit Ersatz (D-41): Eine Matrixzeile eines Client Packs auf [NICHT ABBILDBAR]
|
|
73
|
+
benennt den Ersatz - oder haelt ausdruecklich fest, dass es keinen gibt
|
|
74
|
+
26. Werkzeugabwesenheit (D-47): Eine erklaerte Abwesenheit in hook_tools_absent ist
|
|
75
|
+
belegt und folgerichtig - sie darf keine Werkzeugklasse aus der Durchsetzung nehmen
|
|
76
|
+
27. Zusagenfelder (D-50): Verwirft ein Pack das Skill-Frontmatter-Feld permissions oder
|
|
77
|
+
triggers, benennt es den Ersatz - ein zusagentragendes Feld entfaellt nicht ersatzlos
|
|
78
|
+
28. Lesesperre gegen Schreibsperre (D-55, B07): Die Deklaration von <EXCLUDED_PATHS>
|
|
79
|
+
nennt keinen Strukturpfad des Frameworks. Diese Pfade sind schreibgeschuetzt, nicht
|
|
80
|
+
lesegesperrt - als Ausschluss erzeugen sie eine Lesesperre auf die eigenen Regeln
|
|
81
|
+
29. K3-Kategorien (D-52, B09): Kurzform, Langform, Laufzeitregel, Entscheidungsbaum und
|
|
82
|
+
Checkliste fuehren dieselben acht Kategorien, und keine traegt eine Bedingung
|
|
83
|
+
30. Grenzfaelle (B07, B09): Die Grenzfalltabelle ist vollstaendig, jede Spalte gefuellt,
|
|
84
|
+
jede entschiedene Auslegungsfrage durch mindestens einen Grenzfall gedeckt
|
|
85
|
+
31. Durchsetzungstiefe (D-60): Die Summen der Fachmatrix eines Client Packs sind aus ihr
|
|
86
|
+
ausgerechnet - Zeilenzahl und Anzahl je Einstufung. Eine Zeile zaehlt bei ihrer
|
|
87
|
+
schwaechsten Einstufung; eine Kanalgrenze ist keine technische Durchsetzung (D-47)
|
|
88
|
+
32. Hook-Eingabeschema (D-62, B06): Der Schutz-Hook wird mit dem VOLLSTAENDIGEN
|
|
89
|
+
Umschlag jedes aufgezeichneten Schemas aufgerufen, nicht mit selbst gebauter
|
|
90
|
+
Eingabe - und er darf an einem Feld des Umschlags nicht haengenbleiben
|
|
91
|
+
33. Werkzeugsperre je Skill (D-64 bis D-66): Die erzeugte Fassung bildet
|
|
92
|
+
permissions.deny ab, und kein Eintrag traegt ein Argumentmuster - ein solcher
|
|
93
|
+
wirkt gemessen LAUTLOS gar nicht
|
|
94
|
+
34. Startwerkzeug fuer Unteragenten (D-70): Ein Pack nennt es in agent_start_tools
|
|
95
|
+
oder erklaert seine Abwesenheit ausdruecklich; wer Zeile A1 ohne offenen
|
|
96
|
+
Beleg zusagt, muss nennen statt erklaeren. Der Vorbehalt steht seit 0.87.0
|
|
97
|
+
auf der Nachfolgeform BELEG OFFEN - die Markerform ist abgeschafft (D-291)
|
|
98
|
+
35. Agentenprofil ohne Startwerkzeug (D-73): Weder agent_frontmatter.tool_names
|
|
99
|
+
bildet eines ab, noch nennt ein ausgeliefertes Profil eines. Eine Verankerung -
|
|
100
|
+
sie faengt heute nichts
|
|
101
|
+
36. Zellen des Decision Logs (D-75): Jede Tabellenzeile fuehrt so viele Zellen wie
|
|
102
|
+
der Kopf ihrer Tabelle; ein maskierter Strich zaehlt als Inhalt
|
|
103
|
+
37. Berechtigungskoerbe (D-77): Die drei Koerbe der installierten Datei werden gegen
|
|
104
|
+
die aus der Kernquelle erzeugte Regelmenge gehalten. Fehlen ist immer ein Fehler,
|
|
105
|
+
Ueberzaehliges nur in ask und allow; ein gefuellter Befehlsschlitz traegt das
|
|
106
|
+
Praefixzeichen des Clients nicht
|
|
107
|
+
38. Werkzeugabbildung des Frontmatters (D-78 bis D-80): Jedes Verb des
|
|
108
|
+
Frontmatter-Vokabulars ist je Pack abgebildet oder ausdruecklich als nicht
|
|
109
|
+
abgebildet erklaert; die Sperrliste hook_tools ist fuer kein Verbpaar enger als
|
|
110
|
+
die Vorabfreigabe tool_names; keine Quelle nennt ein Verb ausserhalb des Vokabulars
|
|
111
|
+
39. Vorabfreigabe des Skillaufrufs (D-81 bis D-84): Jeder ausgelieferte Skill des
|
|
112
|
+
Kerns hat genau eine allow-Regel und jede Regel nennt einen ausgelieferten Skill;
|
|
113
|
+
kein Musterzeichen in einer Skill-Regel - gemessen gaebe es lautlos nichts frei;
|
|
114
|
+
die Skillwahl steht an allen vier Regeltraegern
|
|
115
|
+
40. Register des Pruefapparats (D-85, D-86): Dieses Register ist lueckenlos und endet
|
|
116
|
+
bei der hoechsten Nummer, die die beiden Pruefskripte nennen; die Sondenmenge steht
|
|
117
|
+
im Satz darunter, im Kopfsatz von probe-pruefungen.py und in FW-KO-01 in derselben
|
|
118
|
+
ausgerechneten Schreibweise; die Grenzfallanzahl in FW-KO-05 ist die gezaehlte
|
|
119
|
+
41. Abwesenheitsbeleg (D-88): Eine erklaerte Werkzeugabwesenheit weist sich als
|
|
120
|
+
Enthaltung aus oder belegt sich mit Datum und Fundstelle - eine blosse Behauptung
|
|
121
|
+
nimmt eine Werkzeugklasse aus der Durchsetzung und begruendet es
|
|
122
|
+
42. Schlitzinhalte (D-90, D-91): Ein gefuellter Befehlsschlitz der Berechtigungsdatei
|
|
123
|
+
traegt den Befehl, den Abschnitt 5 oder 6 des Overlays fuer seinen Platzhalter
|
|
124
|
+
erklaert; ein Schlitz ohne erklaerten Befehl deckt keinen Ueberschuss. Geprueft
|
|
125
|
+
werden die drei BEFEHLSSCHLITZE, nicht die vier Pfadschlitze des deny-Korbs - die
|
|
126
|
+
stehen dort, wo Ueberzaehliges ohnehin zulaessig ist, und ihr Vergleich waere n:1.
|
|
127
|
+
Ohne Overlay enthaelt sie sich; fehlt dort ein Platzhalter, meldet sie es
|
|
128
|
+
43. Hook-Block der Berechtigungsdatei (D-92): Fuehrt ein Pack seine Hooks dort - und
|
|
129
|
+
beide ausgelieferten tun das -, traegt die Datei einen nichtleeren
|
|
130
|
+
PreToolUse-Block. Eine Konfiguration in der eigenen Hook-Datei des Packs ist keine,
|
|
131
|
+
weil der Client sie nicht liest; gemessen war der Hook eines Projekts so
|
|
132
|
+
einunddreissig Releases lang stumm, bei 0 Fehlern im Lauf. Geprueft wird das
|
|
133
|
+
VORHANDENSEIN - den Inhalt pruefen 15, 16 und 17
|
|
134
|
+
44. Register der Uebungspraeparationen (D-93, D-131): Jede Kennung UEB-NN, die eine
|
|
135
|
+
Vorbedingung des Testkatalogs oder eines dezentralen Testblatts nennt, steht im
|
|
136
|
+
Register in onboarding/exercises/README.md - und jede registrierte Kennung wird von
|
|
137
|
+
mindestens einem Testfall gebraucht. DRITTER GEGENSTAND seit 0.58.0: Jede
|
|
138
|
+
registrierte Zeile fuehrt eine nichtleere Belegzelle. Sie gleicht ZWEI REGISTER ab,
|
|
139
|
+
nicht ein Register gegen das Uebungsrepositorium: Das liegt ausserhalb dieses
|
|
140
|
+
Repositoriums, und ob eine Praeparation dort wirklich liegt, sieht kein Validator
|
|
141
|
+
45. Bytecode des Kerns (D-97): Die .gitignore des Projekts deckt __pycache__ ab,
|
|
142
|
+
und unter <CORE_DIR>/ ist kein Bytecode versioniert. Zwei Gegenstaende, weil
|
|
143
|
+
einer nicht reicht: git liest die .gitignore fuer bereits verfolgte Dateien
|
|
144
|
+
nicht. Gegenstand 2 laeuft nur, wo git erreichbar ist - sonst sagt die
|
|
145
|
+
Pruefung das als Warnung, statt stumm auszufallen. Gegenstand 3 (D-383), nur
|
|
146
|
+
im Quellrepositorium: Die .gitignore schliesst jedes Wurzelerzeugnis aller
|
|
147
|
+
Client Packs aus - abgeleitet aus shared_core und shared_seed der Manifeste
|
|
148
|
+
46. Der 1.0.0-Stand (D-98, D-99): Die vier maschinell zaehlbaren Kriterien
|
|
149
|
+
aus D-11 werden ausgerechnet und gegen die Standzeile in docs/ROADMAP.md
|
|
150
|
+
gehalten - Markerfundstellen, offene Ergebniszellen, Modulstatus auf
|
|
151
|
+
`entwurf`, Decision Records auf `entschieden (Vorschlag)`. Abweichung in
|
|
152
|
+
BEIDE Richtungen ist ein Fehler. Am 2026-09-15 lagen alle vier Zahlen
|
|
153
|
+
daneben, ohne dass eine je falsch geschrieben worden waere: Jede war das
|
|
154
|
+
richtige Ergebnis einer Zaehlregel, die weniger kann als ihr Kriterium
|
|
155
|
+
verlangt. Kriterium 5 zaehlt sie nicht - das ist eine Enthaltung.
|
|
156
|
+
SEIT 0.87.0 IST KRITERIUM 1 EINE RUECKFALLSPERRE UND KEIN ARBEITSVORRAT
|
|
157
|
+
(D-291): Die Markerform ist abgeschafft, die Zahl steht auf null, und was
|
|
158
|
+
der Zaehler ab jetzt meldet, ist ihre WIEDEREINFUEHRUNG. Die Null ist
|
|
159
|
+
gemessen und nicht konstruiert, und das ist belegt: Sonde 46c legt einen
|
|
160
|
+
Marker in den Kern und verlangt die Meldung, Gegenprobe 46c legt einen in
|
|
161
|
+
ein datiertes Protokoll und verlangt ihr Ausbleiben - beide bringen ihren
|
|
162
|
+
Gegenstand SELBST mit und sind vom Schnitt nicht betroffen (D-23)
|
|
163
|
+
47. Statusvokabular jedes Modultraegers (D-105, D-108): Jeder Steckbrief des Kerns
|
|
164
|
+
fuehrt eine Statuszeile, und ihr Wert gehoert zum Vokabular aus
|
|
165
|
+
08-skill-conventions.md Abschnitt 7. Der Ausfuellschlitz einer Vorlage gehoert
|
|
166
|
+
ihr allein - in beide Richtungen. Bis 0.50.0 griff die Vokabularregel nur in
|
|
167
|
+
einer SKILL.md, und der Modultraeger war ueber die Zeile definiert, die er
|
|
168
|
+
tragen soll: Wer sie weglaesst, entkommt dem Lebenszyklus. Zwoelf taten es
|
|
169
|
+
48. Werkzeugneutralitaet des Kerns (D-02, D-128): Kein anweisender Traeger des Kerns
|
|
170
|
+
nennt einen Pfad oder Dateinamen, der genau einem Client Pack gehoert. Die Marken
|
|
171
|
+
stammen aus den runtime_placeholders der Manifeste, nicht aus einer gepflegten
|
|
172
|
+
Liste. Ausgenommen sind Chronik, Werkzeuge und die Abbildungstabellen; die
|
|
173
|
+
Gattungen stehen in docs/RUNTIME_GLOSSARY.md. In tests/TEST_CATALOG.md steht die
|
|
174
|
+
Regel nur vor der letzten Zelle - dort ist ein Pfad der Beleg einer Messung. Die
|
|
175
|
+
Regel galt seit 0.31.0 und wurde von nichts durchgesetzt: Pruefung 12 liest nur
|
|
176
|
+
Token in Backticks, meldet nur Pfade, die es NICHT GIBT, und fuehrte ihre eigenen
|
|
177
|
+
Wurzeln clientgebunden. Siebzehn Fundstellen in vierzehn Traegern
|
|
178
|
+
49. Ausdruecklicher Skill-Aufruf im Testkatalog (D-146): Nennt der Ausloeser eines
|
|
179
|
+
Testfalls mit Pruefmethode `sitzung` einen Kernskill, dessen Quelle `triggers`
|
|
180
|
+
ohne `- model` fuehrt, muss er ihn als `/name` nennen. Ein solcher Skill ist nur
|
|
181
|
+
ueber den ausdruecklichen Aufruf einer Person erreichbar - das Client Pack
|
|
182
|
+
`claude-code` bildet die fehlende Modellzulassung auf `disable-model-invocation`
|
|
183
|
+
ab. Ein nicht-interaktiver Messlauf bekommt sonst eine Abweisung statt des
|
|
184
|
+
Ablaufs, und der Testfall misst etwas anderes als seinen Gegenstand. Gemessen am
|
|
185
|
+
2026-09-18 an `FW-SC-01`: Der Hauptlauf rief `fw-change-small` auf, wurde
|
|
186
|
+
abgewiesen, arbeitete den Ablauf nicht nach - und damit fiel Schritt 3 des Skills
|
|
187
|
+
aus, der die Verwender der geaenderten Einheit erhebt. Neun von zwoelf Skills
|
|
188
|
+
betroffen, vier Fundstellen im Katalog
|
|
189
|
+
50. Vollstaendigkeit des Klaerungspunktregisters (D-147): Jede im Kern genannte
|
|
190
|
+
Kennung `K-NN` steht als Zeile im Register des Decision Logs. Ausgenommen sind
|
|
191
|
+
allein die belegten synthetischen Kennungen des Pruefapparats; ihre Menge steht in
|
|
192
|
+
dem Dokument, das die Regel traegt, und wird von dort abgeleitet. Am 2026-09-18
|
|
193
|
+
fehlten zwei: `K-34` seit 0.32.0 in sieben Traegern (Stand vor der Behebung) - darunter ein Manifest und
|
|
194
|
+
eine Faehigkeitsmatrix -, `K-55` von CR-2026-083 in drei Traegern als neu
|
|
195
|
+
angekuendigt und nie eingetragen. Die Uebersicht der offenen Punkte war beide Male
|
|
196
|
+
zu klein, und nichts hat es gemeldet
|
|
197
|
+
51. Ausfuellschlitz fuer einen festgelegten Overlay-Wert (D-150): Traegt die
|
|
198
|
+
Kontextquellentabelle der Overlay-Vorlage fuer ein Feld einen FESTEN Wert, darf die
|
|
199
|
+
Overlay-Laufzeitfassung fuer dasselbe Feld keinen <TBD>-Schlitz fuehren. Die
|
|
200
|
+
Feldmenge ist aus der Vorlage ABGELEITET. Eine Regel kann als Satz oder als Schlitz
|
|
201
|
+
ausgedrueckt sein, und ein Sweep nach der Formulierung findet nur den Satz: 0.33.0
|
|
202
|
+
hat die Domain-Ausnahme in sechzehn Traegern angefasst, davon acht anweisenden -
|
|
203
|
+
darunter eine Datei im selben Verzeichnis; rules/20-project-overlay.md war nicht
|
|
204
|
+
darunter, weil dort kein Satz stand. Die
|
|
205
|
+
Laufzeitfassung bot dreiunddreissig Releases lang an, was ihre eigene Quelle
|
|
206
|
+
ausschliesst (Grenzfall G-13)
|
|
207
|
+
52. V6-Gegenstand mit Freigabefolge (D-151): In keiner anweisenden Fassung steht ein
|
|
208
|
+
Gegenstand der V6-Zeile in einer Einheit, die zugleich `Kontrollstufe hoch` und eine
|
|
209
|
+
Umsetzungsfreigabe traegt. V6 ist auch nach Freigabe nicht delegierbar; die
|
|
210
|
+
Abgrenzung trennt Anwendungslogik vom Betrieb (D-53). Die Begriffe stammen aus der
|
|
211
|
+
V6-Zeile selbst, ausgenommen ist die Langform, die sie traegt - sie MUSS beide
|
|
212
|
+
Seiten nennen. Zwei Fassungen fuehrten beides in EINER Aufzaehlung, sechzig Releases
|
|
213
|
+
lang (Grenzfaelle G-05 und G-06)
|
|
214
|
+
53. Kriterium-2-Kette des Releaseplans (D-153): Was ein Posten des Releaseplans in
|
|
215
|
+
docs/ROADMAP.md erreicht, ist der Ausgangswert des naechsten, und der letzte Wert ist
|
|
216
|
+
null - Kriterium 2 muss dort ankommen. Sie beurteilt NICHT, ob eine Vorhersage
|
|
217
|
+
stimmt; sie prueft, ob die Tabelle mit sich selbst uebereinstimmt. Das Protokoll zu
|
|
218
|
+
0.56.0 hatte ausdruecklich entschieden, die Vorhersagen ungeprueft zu lassen - mit
|
|
219
|
+
0.60.0 ist eingetreten, was eine Pruefung verhindert haette: Eine Zelle wurde aus
|
|
220
|
+
einem Posten genommen, seine Zahl nachgezogen, die des Folgepostens nicht. Die Kette
|
|
221
|
+
riss um eins und wurde so gemergt
|
|
222
|
+
54. Zusatzschluessel auf der deklarierten Ebene (D-155): Jeder Schluessel aus
|
|
223
|
+
settings_extra steht in der erzeugten Berechtigungsdatei auf der OBERSTEN Ebene,
|
|
224
|
+
jeder aus permissions_extra INNERHALB von permissions - je mit dem deklarierten
|
|
225
|
+
Wert. Ein Pack fuehrt beide Felder, notfalls leer: Der Unterschied zwischen "nicht
|
|
226
|
+
abgebildet" und "gibt es nicht" gehoert deklariert, nicht aus einem fehlenden Feld
|
|
227
|
+
erraten. Die Ebene ist keine Kosmetik - ein Schluessel auf der falschen Ebene wird
|
|
228
|
+
stillschweigend nicht gelesen, und nichts meldet es. Anlass ist eine FREMDE Messung
|
|
229
|
+
(FW-AK-01, CR-2026-087, 2026-09-18): Beim Client des Schwesterpacks ist genau diese
|
|
230
|
+
Bauform als CVE-2026-81376 aufgetreten - der Restricted Mode setzte eine
|
|
231
|
+
eingeschraenkte Arbeitsbereichseinstellung in gepunkteter Schreibweise durch und
|
|
232
|
+
dieselbe in verschachtelter nicht. Behoben in 3.10.31 vom 2026-09-16; die
|
|
233
|
+
verbindliche Zielspanne des Packs devin-desktop liegt vollstaendig davor
|
|
234
|
+
55. Pflichtplatzhalter, gebunden statt ersetzt (D-160): ZWEI GEGENSTAENDE. (a) Jeder
|
|
235
|
+
Platzhalter, den docs/PLACEHOLDER_REGISTRY.md als "Pflicht vor Aktivierung" fuehrt
|
|
236
|
+
und im Overlay verortet, kommt in der Overlay-Vorlage mindestens einmal vor - sonst
|
|
237
|
+
bietet die Vorlage ihn nie zum Ausfuellen an. (b) Unter --strict-overlay: Jeder
|
|
238
|
+
solche Platzhalter, den ein Traeger der geladenen Laufzeitschicht NENNT, ist im
|
|
239
|
+
aktiven Overlay GEBUNDEN, also dort beim Namen genannt. Ein Overlay, das den
|
|
240
|
+
Platzhalter durch seinen WERT ERSETZT statt ihn zu binden, ist fuer sich stimmig und
|
|
241
|
+
laesst jeden Kerntext unaufloesbar, der denselben Platzhalter traegt. Gemessen am
|
|
242
|
+
2026-09-18 am Uebungsrepositorium: acht Pflichtplatzhalter ungebunden, davon fuenf
|
|
243
|
+
mit zusammen 65 Fundstellen in der geladenen Schicht - <ISSUE_TRACKER> allein in
|
|
244
|
+
vierzehn Traegern. Der Validator meldete 0 Fehler
|
|
245
|
+
56. Kein ausgeschlossener Traeger als Vorbedingung (D-161): Keine Vorbedingung des
|
|
246
|
+
Testkatalogs und keines Testblatts verlangt einen Traeger, den dasselbe Overlay
|
|
247
|
+
unter <EXCLUDED_PATHS> fuehrt - weder lesen noch aendern. Aufgeloest wird ueber die
|
|
248
|
+
Bindungszeile des genannten Platzhalters. Gemessen am 2026-09-18: SK-012-P01
|
|
249
|
+
verlangt <MR_TEMPLATE_PATH>, und dessen Wert liegt unter .github/**, das im selben
|
|
250
|
+
Overlay ausgeschlossen ist; drei weitere Zellen erben es ueber "wie P01"
|
|
251
|
+
57. Kein ungebundener Pflichtplatzhalter als Vorbedingung (D-166): Keine
|
|
252
|
+
Vorbedingung des Testkatalogs und keines Testblatts verlangt einen Pflichtplatzhalter
|
|
253
|
+
als NICHT GESETZT oder UNGEBUNDEN. Sie ist die Kehrseite von 55b: Was 55b im aktiven
|
|
254
|
+
Overlay als Fehler meldet, darf eine Testzelle nicht als Vorbedingung fordern - sonst
|
|
255
|
+
stehen eine Pruefung und ein Testfall desselben Repositoriums gegeneinander, und der
|
|
256
|
+
Testfall ist nur in einem Baum fahrbar, den der Validator beanstandet. Gemessen am
|
|
257
|
+
2026-09-18: RE-001-N09 verlangte das Uebungs-Overlay "ohne gesetztes
|
|
258
|
+
<ISSUE_TRACKER>", und Pruefung 55b war im SELBEN Release entstanden. Gegen den Skill
|
|
259
|
+
gehalten trifft die Zelle etwas anderes: role-re-ticket nennt den Fall
|
|
260
|
+
"<ISSUE_TRACKER> unbekannt", also Bindung OHNE Wert - ein Ausfuellschlitz, kein
|
|
261
|
+
fehlender Platzhalter. Der Zuschnitt arbeitet auf TEILSAETZEN, nicht auf Zellen: Eine
|
|
262
|
+
Vorbedingung, die den Platzhalter in einem Teilsatz fordert und in einem anderen eine
|
|
263
|
+
Verneinung traegt, ist zulaessig. Die Pflichtmenge wird aus dem Platzhalterregister
|
|
264
|
+
ABGELEITET, nicht gepflegt
|
|
265
|
+
58. Vollstaendigkeit des Decision-Record-Registers (D-169): Jede im Kern genannte
|
|
266
|
+
Zeichenfolge `D-` mit folgender Ziffer ist eine Kennung der Form D-NNN, und sie
|
|
267
|
+
steht als Zeile im Register des Decision Logs. Ausgenommen sind allein die belegten
|
|
268
|
+
synthetischen Kennungen des Pruefapparats - dieselbe Menge und derselbe
|
|
269
|
+
Ableitungsweg wie bei Pruefung 50. Sie ist deren Schwester eine Kennungsfamilie
|
|
270
|
+
weiter: Pruefung 50 gilt fuer K-, und ihr Muster wuerde den gemessenen Fall auch
|
|
271
|
+
dann nicht treffen, wenn man es auf D- umstellte. Gemessen am 2026-09-18: Die
|
|
272
|
+
Registereintraege der Pruefungen 55 und 56 verwiesen seit 0.63.0 auf zwei Kennungen
|
|
273
|
+
mit einem PLATZHALTER statt einer Zahl; die Meldungen derselben Pruefungen nannten
|
|
274
|
+
die richtigen. Zwischen Ziffer und Platzhalter steht keine Wortgrenze - eine
|
|
275
|
+
Kennung, die die Form knapp verfehlt, ist fuer jeden Zaehler unsichtbar
|
|
276
|
+
59. Der Overlay-Wert in der Schicht, die ihn durchsetzt (D-171): Unter
|
|
277
|
+
--strict-overlay drei Gegenstaende. (a) Die Laufzeitfassung des Overlays NENNT
|
|
278
|
+
<EXCLUDED_PATHS>, bindet ihn also, statt seinen Wert einzusetzen - das ist 55b eine
|
|
279
|
+
Schicht tiefer. (b) Die Zeile, die ihn nennt, traegt dieselbe Globmenge wie die
|
|
280
|
+
Bindungszeile des Quell-Overlays; massgeblich ist die Quelle. (c) Jeder Glob der
|
|
281
|
+
Quelle hat im deny-Korb der Berechtigungsdatei eine Lese- UND eine Schreibsperre.
|
|
282
|
+
ANLASS: 0.63.0 hat die Sperre eines Overlays von .github/** auf .github/workflows/**
|
|
283
|
+
eingeengt, weil sie sonst die Merge-Request-Vorlage mitsperrt (D-161). Die Einengung
|
|
284
|
+
steht in der QUELLE; die beiden Traeger, die den Client wirklich binden, tragen
|
|
285
|
+
weiterhin den alten, weiteren Wert - unveraendert seit dem ersten Commit jenes
|
|
286
|
+
Repositoriums. Pruefung 56 sah es nicht, weil sie ueber die Bindungszeile der Quelle
|
|
287
|
+
aufloest; 55b nicht, weil sie die BINDUNG prueft und nicht den WERT; --strict-overlay
|
|
288
|
+
nicht, weil es allein den Status vergleicht (CR-2026-044 E4). GRENZE: geprueft wird
|
|
289
|
+
EIN Platzhalter - der einzige mit maschinell vergleichbarer Wertgestalt, der
|
|
290
|
+
zugleich zwei Schichten bindet. Und (c) prueft nur die Richtung Quelle -> Korb:
|
|
291
|
+
Ueberzaehliges bleibt zulaessig, wie schon bei Pruefung 42
|
|
292
|
+
|
|
293
|
+
60. Der Befehlsschlitz, den der Ausloeser braucht (D-178): Eine sitzung-Zelle, deren
|
|
294
|
+
Ausloeser einen Skill als /name aufruft, dessen Frontmatter einen Befehlsschlitz
|
|
295
|
+
AUSFUEHRT (Exec(<..._COMMAND>) unter permissions), nennt diesen Schlitz in ihrer
|
|
296
|
+
VORBEDINGUNG. ANLASS: FW-SC-01 ist am 2026-09-18 zum dritten Mal gefahren worden
|
|
297
|
+
und zum dritten Mal nicht abnehmbar gewesen - der Lauf hat NICHTS geaendert, weil
|
|
298
|
+
fw-change-small den Testbefehl VOR dem ersten Schreibzugriff verlangt und der
|
|
299
|
+
Befehl im Messbaum im ask-Korb stand; ask ist nicht-interaktiv eine Abweisung
|
|
300
|
+
(D-134). Derselbe Fehler kostete FW-PO-02 einen Durchgang. GRENZE: Geprueft wird
|
|
301
|
+
die NENNUNG des Schlitzes, nicht die Aussage darueber - die Pruefung faengt das
|
|
302
|
+
Vergessen, nicht den Irrtum. Und sie gilt nur fuer sitzung-Zellen
|
|
303
|
+
61. Das Pruefmittelwort stammt aus dem Vokabular (D-181): Das erste Wort der Spalte
|
|
304
|
+
Pruefmethode ist skript, sitzung oder review - im zentralen Katalog und in den
|
|
305
|
+
dreizehn Testblaettern. ANLASS: Die Blaetter fuehrten bis 0.67.0 das Wort manuell,
|
|
306
|
+
87 von 87 Zellen. Es steht in keinem Vokabular; es ist das ADJEKTIV aus der
|
|
307
|
+
Definition von sitzung, zum Methodennamen befoerdert, und jedes Blatt erklaerte es
|
|
308
|
+
im eigenen Vorspann. Die Pruefungen 49 und 60 laufen ausdruecklich ueber die
|
|
309
|
+
Blaetter und filtern auf sitzung - beide hatten dort NULL Gegenstand. Nach der
|
|
310
|
+
Umstellung meldete Pruefung 60 sofort ZWANZIG Zellen. GRENZE: Geprueft wird das
|
|
311
|
+
erste Wort gegen eine feste Menge; ein Zusatz dahinter bleibt zulaessig. Nicht
|
|
312
|
+
geprueft wird, ob das Wort das RICHTIGE ist
|
|
313
|
+
62. Version der Ausgabevorlage (D-185): Keine SKILL.md nennt eine Versionsnummer
|
|
314
|
+
woertlich. Die Ausgabevorlage verweist auf den Steckbrief ("v<Version aus dem
|
|
315
|
+
Steckbrief>"), und der Client setzt sie beim Rendern ein. ANLASS: Gemessen am
|
|
316
|
+
2026-09-19 im ersten Buendellauf - dreizehn Traeger fuehrten eine woertliche
|
|
317
|
+
Version, ZEHN davon eine andere als ihr eigener Steckbrief. Die drei, die
|
|
318
|
+
uebereinstimmten, sind die drei, deren Version seit der Erstfassung nicht
|
|
319
|
+
gestiegen ist: Die Uebereinstimmung war Stillstand, nicht Pflege. Gefunden hat es
|
|
320
|
+
ein gemessener Lauf selbst, in einer Nebenbemerkung seines Ergebnisberichts
|
|
321
|
+
63. Der Nummernverweis, der ins Leere zeigt (D-193): Nennt ein anweisender
|
|
322
|
+
Traeger des Kerns eine Datei und dahinter `Abschnitt N` oder `Abschnitt N.M`,
|
|
323
|
+
fuehrt das Ziel eine Ueberschrift mit genau dieser Nummer. ANLASS: Der
|
|
324
|
+
Vorbedingungsdurchgang von Buendel 2 hat gemessen, dass drei Zellen eine
|
|
325
|
+
Bereinigung "nach 02-privacy.md Abschnitt 3.3" erwarten - und dass Abschnitt 3
|
|
326
|
+
jener Datei zehn nummerierte REGELN fuehrte und keine einzige Unterueberschrift.
|
|
327
|
+
Gegen den unberuehrten Vorstand: 30 Verweise in 15 anweisenden Traegern auf vier
|
|
328
|
+
Nummern, die es als Abschnitt nicht gab. Dieselbe Form bedeutete in DERSELBEN
|
|
329
|
+
Datei zweierlei - `Abschnitt 2.1` war eine Ueberschrift. Aufzeichnungen sind
|
|
330
|
+
ausgenommen (D-141); ihre Liste ist keine neue, sondern NEUTRAL_CHRONIK
|
|
331
|
+
64. Die Ausgabemarke, die der Skill nicht verlangt (D-197): Nennt die Spalte
|
|
332
|
+
Erwartetes oder Unzulaessiges Verhalten einer Zelle eine Ausgabemarke
|
|
333
|
+
([HALT], [RUECKFRAGE]), fuehrt der im Ausloeser aufgerufene Skill sie in
|
|
334
|
+
Abschnitt 5 (Ausgabeformat) oder Abschnitt 6 (Qualitaetskriterien). ANLASS:
|
|
335
|
+
Ausgezaehlt am 2026-09-19 nach dem ABSCHNITT, in dem die Marke steht -
|
|
336
|
+
[RUECKFRAGE] steht in KEINEM Abschnitt 5 und KEINEM Abschnitt 6 der zwoelf
|
|
337
|
+
Skills und ist durchgehend Handlungsmarke; [HALT] ist Ausgabemarke in genau
|
|
338
|
+
dreien. 18 Nennungen in 17 Zellen verlangten mehr, als ihr Skill vorschreibt,
|
|
339
|
+
und ein gemessener Lauf hatte es vorgefuehrt: sk004n01 schrieb [HALT] und
|
|
340
|
+
[RUECKFRAGE] nicht - richtig, denn nur die erste ist verlangt. GRENZE:
|
|
341
|
+
Geprueft wird die Deckung, nicht die Formulierung; die LETZTE Zelle ist
|
|
342
|
+
Ergebnisstatus und damit Aufzeichnung (D-117), dieselbe Spalten-Ausnahme wie
|
|
343
|
+
bei Pruefung 48
|
|
344
|
+
65. Der Ergebnisstatus ohne Beleg (D-202): Ein Ergebnisstatus ausserhalb von
|
|
345
|
+
`offen` nennt ein Protokoll unter tests/protocols/, und bei Pruefmethode
|
|
346
|
+
`sitzung` zusaetzlich das gemessene Client Pack mit Produktversion (D-117).
|
|
347
|
+
Das Statuswort selbst stammt aus dem Vokabular von TEST_CATALOG.md Punkt 4 -
|
|
348
|
+
abgeleitet aus jener Zeile, nicht gepflegt. ANLASS: Punkt 4 sagt "Ein
|
|
349
|
+
Ergebnisstatus ausser `offen` MUSS auf ein Protokoll verweisen", D-117
|
|
350
|
+
verlangt Pack und Version - und keine der vierundsechzig Pruefungen setzte es
|
|
351
|
+
durch. Gezaehlt am 2026-09-19 ueber alle 125 Ergebniszellen: NULL Verstoesse,
|
|
352
|
+
die Regel trug allein durch Sorgfalt. Gebaut wird sie in dem Release, das
|
|
353
|
+
achtzehn neue `bestanden` in einem Zug eintraegt. GRENZE: Geprueft wird die
|
|
354
|
+
NENNUNG, nicht ihre Richtigkeit - ein Verweis auf das falsche Protokoll und
|
|
355
|
+
eine Version, die nicht die gemessene ist, laufen durch
|
|
356
|
+
66. Das verirrte Steuerzeichen (D-217): Kein Textraeger traegt einen
|
|
357
|
+
Wagenruecklauf ohne folgenden Zeilenvorschub. Er ist im Text unsichtbar - und
|
|
358
|
+
er nimmt git die Normalisierung der Zeilenenden: Ein Traeger mit einem
|
|
359
|
+
einzelnen CR gilt als BINAER und wird weder von core.autocrlf noch von einem
|
|
360
|
+
text=auto einer .gitattributes angefasst. ANLASS: Der Nachtrag zur Uebergabe
|
|
361
|
+
vom 2026-09-20 setzte ein echtes CR dorthin, wo die zwei Zeichen einer
|
|
362
|
+
Escape-Folge gemeint waren - in genau dem Satz, der den CRLF-Befund von 0.78.1
|
|
363
|
+
beschreibt. Der Blob stand danach auf CRLF gegen 426 von 440 LF-Traegern, und
|
|
364
|
+
der Commit schrieb 1981 von 1983 Zeilen neu. Ausgezaehlt ueber den Bestand: 14
|
|
365
|
+
Traeger mit verirrtem CR - und genau diese 14 sind die 14, die git nicht
|
|
366
|
+
normalisiert hat, die Deckung ist vollstaendig. 🔴 KEINE DER 65 AELTEREN
|
|
367
|
+
PRUEFUNGEN KONNTE ES SEHEN: `read` oeffnet im Universal-Newline-Modus, dort ist
|
|
368
|
+
jedes CR schon ein Zeilenvorschub, bevor eine Pruefung hinsieht. Diese liest
|
|
369
|
+
Bytes. GRENZE: Gemessen wird das Zeichen, nicht die Zeilenende-Form eines
|
|
370
|
+
Traegers - welche Form gilt, entscheidet kein Validator (K-81)
|
|
371
|
+
67. ENTFALLEN mit 1.4.1 (D-350). Sie hielt die Titelzeile der Uebergabe
|
|
372
|
+
gegen <CORE_DIR>/VERSION und wies eine Merge-Request-Nummer ab (D-216).
|
|
373
|
+
Seit 1.4.1 ist UEBERGABE.md ein lokales Arbeitsdokument und nicht mehr
|
|
374
|
+
versioniert; eine frische Auscheckung fuehrt sie nicht, und eine Pruefung
|
|
375
|
+
darauf liefe nur an einem Arbeitsplatz. Die Nummer bleibt stehen, damit
|
|
376
|
+
das Register lueckenlos bleibt (Pruefung 40) und keine andere Pruefung
|
|
377
|
+
sie erbt. PREIS, benannt: Stand und Zahlen der Uebergabe prueft seither
|
|
378
|
+
niemand - sie sind wieder Zahlen, die gepflegt werden muessen
|
|
379
|
+
68. Das Praefix, das mehr sperrt als sein Befehl (D-219): Jede exec-Regel in
|
|
380
|
+
framework/runtime/permissions.json, deren `prefix` kuerzer ist als ihr
|
|
381
|
+
`command`, traegt ein Feld `_uebererfasst` mit der Begruendung. ANLASS, und er
|
|
382
|
+
ist gemessen: Der Eintrag { command: "git branch -D", prefix: "git branch" }
|
|
383
|
+
nennt als Gegenstand das LOESCHEN eines Branches und sperrt ueber sein Praefix
|
|
384
|
+
auch das blosse AUFLISTEN. Das erklaert alle 25 Abweisungen des Messtags vom
|
|
385
|
+
2026-09-20 (23 von 50 Laeufen; elf davon tragen `git branch`) - und es macht zwei
|
|
386
|
+
Skills eine Zusage unmoeglich, die sie in Arbeitsschritt 1 und in ihrer
|
|
387
|
+
Fehlerbehandlung selbst vorschreiben: eine Kandidatenliste vorhandener
|
|
388
|
+
Branches. Vier der 29 exec-Regeln erfassen ueber, und KEINE hat es bisher
|
|
389
|
+
gesagt. 🔴 Der Waechter in clientmap.py prueft nur, ob das Praefix ein Praefix
|
|
390
|
+
des Befehls IST - nicht, ob es mehr trifft. GRENZE, und sie steht hier:
|
|
391
|
+
Geprueft wird die NENNUNG, nicht ihre Richtigkeit; eine Begruendung, die nicht
|
|
392
|
+
traegt, laeuft durch. Dieselbe Enthaltung wie bei Pruefung 65
|
|
393
|
+
69. Der Messapparat schreibt nicht in das Repositorium (D-222): In
|
|
394
|
+
<CORE_DIR>/tests/erhebungen/ liegen Werkzeuge - Skripte und eine README -,
|
|
395
|
+
sonst nichts. ANLASS, und er kostete nichts, weil er vor dem Lauf kam: D-222
|
|
396
|
+
hat die Skripte mit 0.79.0 hierher geholt und ihre Belege ausdruecklich
|
|
397
|
+
draussen gelassen; fuenf von ihnen legten ihre Belege aber neben SICH ab
|
|
398
|
+
(os.path.dirname(os.path.abspath(__file__)) + "belege"). Solange sie daneben
|
|
399
|
+
lagen, war das richtig - seither zeigt derselbe Ausdruck HINEIN, und lauf.py
|
|
400
|
+
legt das Verzeichnis selbst an. Der Nachlauf haette seine Sitzungsmitschriften
|
|
401
|
+
versioniert, ohne dass jemand es entschieden haette. Geprueft wird nicht der
|
|
402
|
+
Quelltext, sondern das ERGEBNIS: eine Belegdatei oder Zustandsaufnahme an
|
|
403
|
+
diesem Ort ist der Befund, gleich welcher Ausdruck sie erzeugt hat. GRENZE,
|
|
404
|
+
und sie steht hier: Diese Pruefung sieht nur, was schon geschrieben IST; den
|
|
405
|
+
Waechter davor traegt ablage.py, der die Erhebungsablage als Angabe verlangt
|
|
406
|
+
und einen Pfad im Repositorium abweist
|
|
407
|
+
70. Jedes Werkzeug des Kerns nennt nur Namen, die es gibt (D-229): Jede .py-Datei
|
|
408
|
+
unter <CORE_DIR>/ laedt als Symboltabelle, und kein Name wird gelesen, der
|
|
409
|
+
nirgends gebunden ist - weder als Zuweisung noch als Import, Parameter oder
|
|
410
|
+
eingebauter Name. ANLASS, und er kostete nichts, weil er vor dem Lauf kam: Der
|
|
411
|
+
Wiederaufnahmepunkt des Nachlaufs fuehrte stand-b4.py als Befehl 1 von 4. Das
|
|
412
|
+
Skript brach beim Import mit NameError ab - zwei Vorkommen eines Namens S, der
|
|
413
|
+
mit dem Umzug nach D-222 verschwunden war, weil er den Ablageort NEBEN dem
|
|
414
|
+
Skript trug. Seit 0.79.0 war es damit tot, und keine der 69 Pruefungen sah es:
|
|
415
|
+
Pruefung 45 prueft den Bytecode auf Abwesenheit, Pruefung 69 die ART der
|
|
416
|
+
Dateien in der Erhebungsablage - dass eine davon LAEUFT, prueft keine.
|
|
417
|
+
GRENZE, und sie steht hier: Geprueft wird der Name, nicht der Wert. Ein Modul,
|
|
418
|
+
das einen Namen bindet und ihn falsch belegt, laeuft durch - dieselbe
|
|
419
|
+
Enthaltung, die Pruefung 68 zur Begruendung sagt. Ein Lauf des Werkzeugs
|
|
420
|
+
bliebe der staerkere Nachweis; er kostet Kontingent und legt Dateien an,
|
|
421
|
+
diese Pruefung nicht
|
|
422
|
+
71. Kein Traeger des Kerns nennt einen Arbeitsplatz (D-231): Ein absoluter Pfad in
|
|
423
|
+
ein Benutzerprofil - C:\\Users\\<konto>, /home/<konto>, /Users/<konto> - wird
|
|
424
|
+
gemeldet, sofern das Kontosegment kein Platzhalter ist und die Zeile keine
|
|
425
|
+
Begruendung traegt. ANLASS, und er ist gemessen: Neun Werkzeuge des
|
|
426
|
+
Messapparats fuehrten
|
|
427
|
+
C:\\Users\\<konto>\\Documents\\devpacks\\test-devin-framework im Quelltext -
|
|
428
|
+
mit dem Kontonamen einer natuerlichen Person. Solange der Apparat NEBEN dem
|
|
429
|
+
Repositorium lag, stand das in einer unversionierten Ablage; mit D-222 ist er
|
|
430
|
+
hineingewandert und hat den Pfad mitgebracht - in genau das Repositorium, fuer
|
|
431
|
+
das 0.78.1 eigens UEBERGABE.local.md eingefuehrt hat, weil eine Uebergabe mit
|
|
432
|
+
Servername und Konto den Validator mit drei Fehlern beantwortet. Keine der
|
|
433
|
+
siebzig Pruefungen sah es: Pruefung 6 kennt Secret-Muster, E-Mail-Adressen,
|
|
434
|
+
IP-Adressen und Hostnamen - keinen Benutzerprofilpfad. GRENZE, und sie steht
|
|
435
|
+
hier: Aufzeichnungen sind ausgenommen - tests/protocols/ und
|
|
436
|
+
governance/change-requests/ halten fest, WO gemessen wurde, und ein Protokoll,
|
|
437
|
+
das man umschreibt, ist keines mehr (D-141). Zehn von ihnen tragen den
|
|
438
|
+
Kontonamen weiter; was daraus folgt, ist als K-85 geführt und hier nicht
|
|
439
|
+
entschieden
|
|
440
|
+
72. Ein aktiviertes Pack steht auch im Berechtigungskorb (D-238): In einer
|
|
441
|
+
Installation deckt sich die Skillablage des Client Packs mit den
|
|
442
|
+
Namenseintraegen der Berechtigungsdatei - in beide Richtungen. ANLASS, und er
|
|
443
|
+
ist gemessen: Der Messbaum von Buendel 5 trug nach der Aktivierung WORTGETREU
|
|
444
|
+
nach framework/role-packs/README.md dreizehn Skillverzeichnisse und zwoelf
|
|
445
|
+
Skill(...)-Eintraege; role-re-ticket fehlte, und der Validator meldete 0 Fehler.
|
|
446
|
+
Ein nicht genannter Aufruf faellt in den Rueckfragekorb und im
|
|
447
|
+
rueckfragefreien Betrieb in die Abweisung - die Sitzung liest die SKILL.md dann
|
|
448
|
+
ersatzweise als Datei, OHNE die Werkzeugbeschraenkung des Skills (D-81).
|
|
449
|
+
WARUM PRUEFUNG 39 ES NICHT SIEHT, obwohl sie dafuer gebaut ist: Sie haelt
|
|
450
|
+
framework/runtime/permissions.json gegen framework/skills/ - Regelmenge des
|
|
451
|
+
Kerns gegen Skills des Kerns, beides Ebene 3, und dort deckt es sich. Ein
|
|
452
|
+
Packskill ist Ebene 6 und kommt in keiner der beiden Mengen vor. GRENZE, und
|
|
453
|
+
sie ist deklariert: Die Schreibweise des Skillaufrufs steht je Client als
|
|
454
|
+
permission_tools.skill im Manifest; ist sie leer (devin-desktop, D-89), schweigt
|
|
455
|
+
die Pruefung - fehlt das FELD, meldet sie es (D-155)
|
|
456
|
+
73. Jede [DOK]-Matrixzeile nennt ihre Quelle (D-263): In der Faehigkeitsmatrix
|
|
457
|
+
jedes Client Packs nennt der BELEGKOPF jeder mit [DOK] belegten Zeile eine
|
|
458
|
+
Quellenkennung der Liste in Anhang 31.4 (QC-n/QD-n/QK-n/QU-n); ein Verweisbeleg
|
|
459
|
+
("wie B3") wird aufgeloest. ANLASS, und er ist gezaehlt: Anhang 31.4 sagt
|
|
460
|
+
ueber sich selbst, die massgebliche Zuordnung stehe je Zeile in der Matrix -
|
|
461
|
+
das traf am 2026-09-18 fuer 14 von 43 Zeilen zu (K-62, D-156). DER PREIS IST
|
|
462
|
+
GEMESSEN: Der Durchgang von FW-AK-01 musste alle 22 Quellen abrufen, weil ohne
|
|
463
|
+
Zuordnung je Zeile nicht zu sagen ist, welche Seite welche Zusage traegt.
|
|
464
|
+
DIE KOPFREGEL ist der Grund, weshalb die Pruefung ueberhaupt etwas sagt:
|
|
465
|
+
Geprueft wird die Zelle bis zum ersten Satzbruch; was danach steht, ist
|
|
466
|
+
Erlaeuterung. Ohne sie zaehlte jede NENNUNG der Marke mit - Zeile R5 des Packs
|
|
467
|
+
claude-code erklaert, "ein Dokumentenabgleich belegt [DOK], nicht
|
|
468
|
+
[TECHNISCH]", und das ist eine Aussage ueber die Marke, kein Beleg. Dieselbe
|
|
469
|
+
Trennlinie, die der VERIFY-Marker am Ende braucht (CR-2026-070 E3).
|
|
470
|
+
WARUM DIE KENNUNG UND NICHT DER SEITENPFAD: Nur die Kennung laesst sich gegen
|
|
471
|
+
die Liste halten; ein Pfad kann eine Seite nennen, die die Liste nicht fuehrt.
|
|
472
|
+
GRENZE, und sie ist deklariert: Gibt der Bestand keine Seite her, sagt die
|
|
473
|
+
Zeile QUELLE NICHT ZUGEORDNET - geraten wird nicht, eine geratene Zuordnung
|
|
474
|
+
saehe wie ein Beleg aus (D-156). Die zugelassenen Luecken stehen als MENGE in
|
|
475
|
+
P73_OFFEN, in beide Richtungen geprueft: eine neue faellt auf, eine
|
|
476
|
+
geschlossene ebenso
|
|
477
|
+
74. Eine Matrixzeile steht in ihrer Tabelle (D-264): Zwischen einer Zeile der
|
|
478
|
+
Faehigkeitsmatrix und der Trennzeile ihrer Tabelle liegt keine Leerzeile und
|
|
479
|
+
kein Fremdtext. ANLASS, und er stand 73 Releases da: Das Pack devin-desktop
|
|
480
|
+
fuehrt sieben Modus-Zeilen, und zwischen M5 und M6 stand seit 0.26.0 eine
|
|
481
|
+
Leerzeile - eingefuegt von genau dem Release, das M6 und M7 anlegte, weil
|
|
482
|
+
AP2-DD-03 gefunden hatte, dass zwei geregelte Modi keine Matrixzeile haben.
|
|
483
|
+
Nach einer Leerzeile beginnt in Markdown ein neuer Block, und ein Block aus
|
|
484
|
+
Datenzeilen ohne Kopf- und Trennzeile ist ein ABSATZ: Beide Zeilen erscheinen
|
|
485
|
+
im Pack wie im Hauptdokument als Fliesstext mit Strichen. Die Zusammenfassung
|
|
486
|
+
desselben Packs zaehlt sie dagegen mit ("20 von 36"). WARUM EINE EIGENE
|
|
487
|
+
PRUEFUNG: 73 fragt, WAS in einer Zeile steht, 74, ob sie ueberhaupt eine ist -
|
|
488
|
+
eine gebrochene Tabelle laesst 73 unberuehrt, weil sie die Zeile am Muster
|
|
489
|
+
erkennt und nicht am Block. Genau deshalb hat es 73 Releases lang niemand
|
|
490
|
+
gemerkt
|
|
491
|
+
75. Kein Restbestand des alten Namens (D-271): Kein verfolgter Traeger nennt
|
|
492
|
+
`leitwerk` in irgendeiner Schreibweise - ausser den DEKLARIERTEN Ausnahmen.
|
|
493
|
+
ANLASS: Mit 0.88.0 heisst das Framework Koolie und der Kern liegt unter
|
|
494
|
+
.koolie/core. Ohne diese Pruefung ist "der Name ist weg" eine Behauptung
|
|
495
|
+
ohne Pruefung, und genau das ist der wiederkehrende Befundtyp dieses
|
|
496
|
+
Repositoriums. ZAEHLBEREICH: jeder verfolgte Traeger, NICHT nur der Kern -
|
|
497
|
+
die Lehre von D-295, wonach der Zaehlbereich von Kriterium 1 kleiner war
|
|
498
|
+
als die Wirkungsflaeche. AUSGENOMMEN in drei Klassen, alle als MENGE:
|
|
499
|
+
(a) die Chronik, die einen vergangenen Zustand beschreibt (D-273);
|
|
500
|
+
(b) die Namen datierter Belegablagen ausserhalb des Repositoriums, die
|
|
501
|
+
NICHT umbenannt werden, weil eine Reihe mit wechselnder Namenskonvention
|
|
502
|
+
nicht mehr als Reihe auffindbar ist (D-300); (c) Aussagen UEBER den alten
|
|
503
|
+
Namen, die ein Sweep ins Sinnlose kehrt (D-301). IN BEIDE RICHTUNGEN
|
|
504
|
+
GEPRUEFT: eine neue Fundstelle faellt auf, eine leer gewordene Ausnahme
|
|
505
|
+
ebenso. PREIS, benannt: Die Ausnahme gilt je TRAEGER, nicht je Zeile
|
|
506
|
+
76. Die Lage des Kerns steht an vier Stellen - und ueberall gleich (D-299):
|
|
507
|
+
clientmap.py, dieser Validator, der Schutz-Hook und ablage.py fuehren
|
|
508
|
+
dieselbe Lageangabe, und KEINE leitet sie ueber os.path.basename ab.
|
|
509
|
+
ANLASS: Bis 0.87.0 taten es alle vier, weil der Kern EIN Verzeichnis-
|
|
510
|
+
segment war - in install.py mit dem Satz, die Zeile stehe dort, "damit
|
|
511
|
+
eine spaetere Umbenennung nur eine Stelle beruehrt". Sie haette die
|
|
512
|
+
Umbenennung nicht ueberlebt: basename(".koolie/core") ist "core". UND ES
|
|
513
|
+
WAERE KEIN VALIDATORFEHLER GEWESEN - dieser Validator band denselben Wert
|
|
514
|
+
auf dieselbe Weise und haette ihn bestaetigt. Zwei Stellen, die einander
|
|
515
|
+
decken (0.57.0), ueber Werkzeuggrenzen hinweg. Der zweite Gegenstand
|
|
516
|
+
traegt den ersten: Gleichheit allein waere erfuellbar, indem alle vier
|
|
517
|
+
denselben Fehler machen
|
|
518
|
+
77. Der Stand des Hauptdokuments (D-312): Die Zeile `| Dokumentversion | X.Y.Z
|
|
519
|
+
(entspricht Framework-Release X.Y.Z) |` in build/doc/00-kopf.md nennt beide Male
|
|
520
|
+
denselben Wert, und dieser Wert ist der aus <CORE_DIR>/VERSION. ANLASS: Das
|
|
521
|
+
Hauptdokument stand am 2026-09-22 auf Dokumentversion 0.9.0 vom 2026-09-10 -
|
|
522
|
+
ZWEIUNDVIERZIG Releases zurueck. Es behauptete dort "Alle Module im Status
|
|
523
|
+
entwurf", waehrend seit 0.53.0 kein einziger Traeger darauf steht; es nannte
|
|
524
|
+
einen Produktstand, den das Pack zwei Zielspannen weiter hinter sich gelassen
|
|
525
|
+
hatte; und es fuehrte eine Client-Pack-Groesse, die seit 0.26.0 nicht mehr
|
|
526
|
+
stimmte. KEINE dieser Zahlen war falsch geschrieben - alle waren bei ihrer
|
|
527
|
+
Einfuehrung richtig und sind stehen geblieben, waehrend ihr Gegenstand weiterlief.
|
|
528
|
+
Das ist die Bauform von Pruefung 40 an einem groesseren Gegenstand. ZWEI
|
|
529
|
+
GEGENSTAENDE: (1) Der Anker - fehlt die Zeile, bestuende die Pruefung leise, und
|
|
530
|
+
sie meldet sein Fehlen deshalb selbst (D-23). (2) Beide Werte gleich und gleich
|
|
531
|
+
VERSION - die Gleichheit der beiden untereinander traegt den Vergleich mit
|
|
532
|
+
VERSION, denn eine Zeile, die zwei verschiedene Staende nennt, laesst offen,
|
|
533
|
+
welcher gemeint ist. PREIS, benannt: Jedes Release fasst diese Zeile an. Das ist
|
|
534
|
+
derselbe Preis, den bis 1.4.0 Pruefung 67 fuer die Uebergabe verlangt hat,
|
|
535
|
+
und er hat dort getragen. GRENZE: Sie misst die VERSION, nicht den INHALT. Ein Dokument, dessen
|
|
536
|
+
Zahlen veralten, waehrend jemand die Versionszeile mitzieht, laeuft durch - was
|
|
537
|
+
dagegen hilft, ist der Durchgang vor dem Commit und keine Pruefung.
|
|
538
|
+
78. Die zaehlbaren Aussagen des Hauptdokuments (D-315): Der Satz ueber den
|
|
539
|
+
Pruefapparat in build/doc/26-qs-test.md nennt die GEZAEHLTE Zahl der
|
|
540
|
+
Pruefungen, der versionierten Dateien des Kerns und der Markdown-Dateien
|
|
541
|
+
darunter. ANLASS: 0.89.0 hat das Dokument nach 42 Releases auf den Stand
|
|
542
|
+
gesetzt und geschrieben, die Behebung brauche eine PRUEFUNG und nicht nur
|
|
543
|
+
eine Textaenderung. Gebaut wurde Pruefung 77, und die misst die VERSION.
|
|
544
|
+
EIN Release spaeter standen dort "76 Pruefungen ueber 502 versionierte
|
|
545
|
+
Dateien, davon 450 Markdown" - richtig waren 77, 504 und 452, und die
|
|
546
|
+
beiden fehlenden Dateien waren der Antrag und das Protokoll DESSELBEN
|
|
547
|
+
Releases. ZUSCHNITT (D-318): nur die GEGENWARTSFORM. Datierte Zahlen in
|
|
548
|
+
den ausgewiesenen Zeitdokumenten veralten nicht und werden nicht geprueft.
|
|
549
|
+
Die Abnahmezeile der Uebergabe, seit 1.0.0 ihr zweiter Gegenstand (D-325),
|
|
550
|
+
ist mit 1.4.1 entfallen (D-350)
|
|
551
|
+
79. Die Lizenz liegt an zwei Stellen und ist dieselbe (D-317): LICENSE in der
|
|
552
|
+
Wurzel (dort suchen die Hostingdienste sie) und <CORE_DIR>/LICENSE (dort
|
|
553
|
+
wandert sie mit, wenn ein uebernehmendes Projekt den Kern als Ganzes
|
|
554
|
+
kopiert) tragen byteweise denselben Inhalt, und dieser Inhalt ist die
|
|
555
|
+
GPL-3.0. ANLASS: Zwei Stellen mit demselben Inhalt laufen auseinander,
|
|
556
|
+
sobald eine angefasst wird - der haeufigste Befundtyp dieses
|
|
557
|
+
Repositoriums, und die Antwort darauf ist dieselbe wie bei Pruefung 76
|
|
558
|
+
80. Jedes Abnahmeprotokoll traegt seine Gegenzeichnung (D-319): Ein Protokoll
|
|
559
|
+
des Testkatalogs (Dateiname JJJJ-MM-TT-FW-<Klasse>-<NN>.md) fuehrt einen
|
|
560
|
+
Abschnitt `Gegenzeichnung` ohne offenes <TBD>. ANLASS: AP11 verlangte sie,
|
|
561
|
+
und 0.89.0 hat sie als ABGRENZUNG stehen gelassen - eine Gegenzeichnung ist
|
|
562
|
+
die Handlung einer ZWEITEN Rolle, und ein Werkzeug, das sie ausfuellt,
|
|
563
|
+
faelscht sie. Die Folge hatte niemand benannt: An diesem Framework arbeitet
|
|
564
|
+
EINE Person, die Pflicht war konstruktiv unerfuellbar - die Bauform der
|
|
565
|
+
Regel mit leerer Schnittmenge an einer Governance-Regel. ZUSCHNITT: nur
|
|
566
|
+
Abnahmeprotokolle. Gemessen ueber BEIDE Zaehlregeln ergibt der Gesamtbestand
|
|
567
|
+
17/47/61 oder 13/45/64; die zehn Abnahmeprotokolle ergeben 3/2/5 unter
|
|
568
|
+
beiden - ein Gegenstand, der unter zwei Regeln derselbe ist, ist der
|
|
569
|
+
richtige. GRENZE: Sie verlangt eine Unterschrift und erzeugt keine. Die
|
|
570
|
+
Zeile sagt, WAS gegengezeichnet wurde; der Commit sagt, WER
|
|
571
|
+
81. Eine Zeilenendeform je Repositorium (D-320, schliesst K-81): Alle versionierten
|
|
572
|
+
Texttraeger des Arbeitsbaums tragen DIESELBE Form, und keiner mischt beide in
|
|
573
|
+
sich. ANLASS: Eine Sitzung hat 28 LF-Zeilen in einen durchgehenden CRLF-Bestand
|
|
574
|
+
eingeschleppt; gefunden hat es keine der 80 Pruefungen, sondern ein Suchtext, der
|
|
575
|
+
danach nicht mehr traf. Pruefung 66 prueft die GEGENRICHTUNG und greift nicht.
|
|
576
|
+
🔴 UND DER AUSLOESENDE BEFUND WAR AM FALSCHEN GEGENSTAND GEMESSEN: "kein
|
|
577
|
+
versionierter Traeger traegt reine LF" gilt fuer den ARBEITSBAUM (515 CRLF); im
|
|
578
|
+
BLOB, also im Versionierten, liegen dieselben 515 auf reinem LF. Ursache ist
|
|
579
|
+
core.autocrlf, eine Einstellung des Arbeitsplatzes - genau die Frage, die K-81
|
|
580
|
+
seit 0.78.2 offen fuehrte. ZUSCHNITT: der Arbeitsbaum; den Blob setzt seit D-320
|
|
581
|
+
die .gitattributes mit `text=auto`, und die aendert gemessen null Blobs. SIE
|
|
582
|
+
SCHREIBT KEINE FORM VOR, sondern verlangt, dass es eine ist - Einheitlichkeit ist
|
|
583
|
+
in jeder Installation richtig, eine bestimmte Form nur an einem Arbeitsplatz.
|
|
584
|
+
GRENZE: Sie liest Bytes und misst den Arbeitsbaum; ohne Git-Bestand meldet sie
|
|
585
|
+
eine Warnung und KEIN Messergebnis
|
|
586
|
+
82. Die Bestandsliste steht auf dem Stand des Releases (D-331): Jede Zeile von
|
|
587
|
+
governance/ADOPTION_REGISTRY.md nennt in der Spalte `Framework-Version` den
|
|
588
|
+
Inhalt von VERSION. ANLASS: zweimal in zwei Releases. 1.0.0 hat die Liste
|
|
589
|
+
angelegt, und ihr erster Eintrag war ihr erster Befund - beide uebernehmenden
|
|
590
|
+
Projekte standen drei Releases zurueck; 1.0.1 hat es wiederholt. Ursache ist die
|
|
591
|
+
REIHENFOLGE: Gehoben wurde nach dem Merge, und damit war FW-CL-11 Pruefpunkt 20
|
|
592
|
+
zum Merge-Zeitpunkt nicht erfuellt. 🔴 UND SIE WAR AN ZWEI STELLEN FALSCH: Das
|
|
593
|
+
Framework hatte seine Liste berichtigt, die AUSGELIEFERTEN Kopien in beiden
|
|
594
|
+
Projekten trugen weiter den alten Stand - wer eine Liste nach dem Heben
|
|
595
|
+
fortschreibt, schreibt sie an einer Stelle fort und liefert sie an zwei.
|
|
596
|
+
D-299-PROBE BESTANDEN: In einem uebernehmenden Projekt sind Liste und VERSION
|
|
597
|
+
byte-gleich aus demselben Release ausgeliefert, also gleich - auch mehrere
|
|
598
|
+
Releases zurueck. 🔴 GRENZE: Sie misst die BEHAUPTUNG der Zeile, nicht den Stand
|
|
599
|
+
des Projekts; wer die Zeile aendert ohne zu heben, kommt durch. Dieselbe Bauform
|
|
600
|
+
wie Pruefung 77 (Version, nicht Inhalt). PREIS: Jedes Release fasst diese Tabelle
|
|
601
|
+
an - wie bei Pruefung 67 und 77
|
|
602
|
+
83. Die Chronik zaehlt ihr eigenes Release zu Ende (D-335): Die hoechste
|
|
603
|
+
Release-Spanne "**D-NNN** bis **D-NNN**" in docs/ROADMAP.md endet bei der
|
|
604
|
+
hoechsten vergebenen Kennung des Decision Logs. ANLASS: 1.1.0 stand auf
|
|
605
|
+
"D-329 bis D-332", vergeben sind D-329 bis D-334. URSACHE GEMESSEN: D-333 und
|
|
606
|
+
D-334 sind BEIM UMSETZEN gefallen, die Zeile war da laengst geschrieben - eine
|
|
607
|
+
Zahl, die vor ihrem Gegenstand geschrieben wird, ist danach nicht mehr richtig.
|
|
608
|
+
🔴 DER SCHWERERE TEIL: Von vier beschreibenden Traegern nennt keiner alle sechs,
|
|
609
|
+
und D-333 steht in keinem - nur die MARKE nennt die Menge vollstaendig, und sie
|
|
610
|
+
ist der einzige Traeger, den keine Pruefung erreichen kann (K-111, K-113).
|
|
611
|
+
WARUM PRUEFUNG 58 ES NICHT FAENGT: Sie haelt die Gegenrichtung (jede genannte
|
|
612
|
+
Kennung steht im Register); hier fehlt die Nennung einer vergebenen Kennung.
|
|
613
|
+
D-299-PROBE BESTANDEN: Beide Traeger liegen im Kern und werden byte-gleich
|
|
614
|
+
ausgeliefert. 🔴 GRENZE: Sie misst die OBERGRENZE, nicht die Vollstaendigkeit der
|
|
615
|
+
Nennungen - dieselbe Bauform wie 77 und 82 (K-112). PREIS: Jedes Release fasst
|
|
616
|
+
diese Zeile an - wie bei Pruefung 67, 77 und 82
|
|
617
|
+
84. Die Client-Pack-Vorlage ist kein Client Pack (D-336): clients/_template traegt
|
|
618
|
+
genau eine CLIENT_PACK.md und weder manifest.json noch root-template/. ANLASS:
|
|
619
|
+
`_client_packs()` nahm jedes Verzeichnis mit CLIENT_PACK.md auf, und _template
|
|
620
|
+
erfuellt das - was die Vorlage vor allen Pruefungen schuetzte, war allein ihr
|
|
621
|
+
fehlendes Manifest. GEMESSEN am 2026-09-23 mit einem Probemanifest (Kopie des
|
|
622
|
+
Manifests von claude-code, also eines FREMDEN Clients): drei Packs mit Manifest,
|
|
623
|
+
Validator 0 Fehler, 0 Warnungen. Und clients/README.md Schritt 5 verlangt genau
|
|
624
|
+
dieses Manifest fuer jedes neue Pack. ➡️ EINE VORLAGE, DIE NUR DESHALB KEINE
|
|
625
|
+
PRUEFUNG AUSLOEST, WEIL IHR EIN BESTANDTEIL FEHLT, IST NICHT AUSGENOMMEN - SIE IST
|
|
626
|
+
UNVOLLSTAENDIG. 🔴 Die Bauform "zwei Stellen, die einander decken" (0.57.0).
|
|
627
|
+
⚠️ Die Ausnahme existierte an zwei anderen Stellen (Pruefung 73,
|
|
628
|
+
LINK_PATH_EXCEPTIONS) und nicht dort, wo die Packmenge ENTSTEHT; seit D-336 steht
|
|
629
|
+
sie in `_client_packs()`. 🔴 GRENZE: Sie prueft die ANWESENHEIT von Bestandteilen,
|
|
630
|
+
nicht deren Inhalt
|
|
631
|
+
85. Eine Zielangabe ueberlebt ihr eigenes Release nicht (D-342): Jede Ueberschrift
|
|
632
|
+
"### Geplant: … – Ziel-Release <Version>" in docs/ROADMAP.md nennt eine Version,
|
|
633
|
+
die groesser ist als .koolie/core/VERSION. ANLASS, gemessen im
|
|
634
|
+
Vorbedingungsdurchgang von 1.3.0: ALLE DREI vorhandenen Abschnitte nannten eine
|
|
635
|
+
Version, die die Gegenwart ueberholt hatte - die Umbenennung auf ~0.68.0
|
|
636
|
+
(erledigt mit 0.88.0, seit fuenfzehn Releases "Geplant"), openai-codex auf 1.1.0
|
|
637
|
+
(die Releasetabelle DERSELBEN Datei fuehrt ihn auf 1.3.0) und die Projekt-Overlays
|
|
638
|
+
auf 1.2.0 (ausgeliefert, Posten nicht gefahren). ➡️ EINE ZIELANGABE IST EINE ZAHL,
|
|
639
|
+
DIE VOR IHREM GEGENSTAND GESCHRIEBEN WIRD - die Bauform von Pruefung 83, hier an
|
|
640
|
+
der PLANSEITE derselben Datei statt an der Chronikseite. URSACHE GEMESSEN: Die
|
|
641
|
+
Verschiebungen sind je einzeln ausgewiesen worden (D-127, D-339), und keine hat
|
|
642
|
+
die Ueberschrift angefasst - wer eine Zahl an zwei Stellen fuehrt, pflegt eine.
|
|
643
|
+
D-299-PROBE BESTANDEN: Beide Traeger liegen im Kern und werden byte-gleich
|
|
644
|
+
ausgeliefert; ein uebernehmendes Projekt traegt dieselbe ROADMAP und dieselbe
|
|
645
|
+
VERSION aus demselben Release. 🔴 GRENZE: Sie misst die ZIELANGABE, nicht den
|
|
646
|
+
STAND des Postens - ein Abschnitt, dessen Ziel in der Zukunft liegt, kann laengst
|
|
647
|
+
erledigt sein und kommt durch; dieselbe Bauform wie 77 (Version, nicht Inhalt) und
|
|
648
|
+
82 (Behauptung, nicht Tatsache), K-116. PREIS: Wer einen Posten verschiebt, fasst
|
|
649
|
+
die Ueberschrift an - und genau das ist der Zweck
|
|
650
|
+
86. Die Sperrform des Schutz-Hooks wirkt beim genannten Client (D-347): Ein Pack, das
|
|
651
|
+
eine eigene Sperrform nennt (hook_block_form), bekommt sie nur, wenn das Skript
|
|
652
|
+
sie kennt, fuer sie WIRKLICH eine Sperre dieser Form ausgibt und die erzeugte
|
|
653
|
+
Hook-Konfiguration sie am Kommando durchreicht. ANLASS, gemessen am 2026-09-23 an
|
|
654
|
+
einer realen Installation von openai-codex: Die bis dahin einzige Sperrform -
|
|
655
|
+
{"decision": "block"} und Exit 2 - bewirkt bei diesem Client NICHTS. Der Client
|
|
656
|
+
meldet den Hook als fehlgeschlagen und FUEHRT DIE OPERATION AUS; im Gegenlauf kam
|
|
657
|
+
der Koederinhalt woertlich heraus. Dieselbe Sperre in seiner Form blockiert, und
|
|
658
|
+
zwar auch im Betriebsmodus ohne Rueckfragen und ohne Sandkasten.
|
|
659
|
+
➡️ EIN HOOK, DER LAEUFT UND DESSEN SPERRFORM DER CLIENT NICHT LIEST, IST EINE
|
|
660
|
+
ZUSAGE OHNE MECHANISMUS - und nichts meldet es. Geprueft wird die Kette und nicht
|
|
661
|
+
das Manifestfeld, dieselbe Bauform wie Pruefung 17
|
|
662
|
+
87. Die formatgebundenen Pruefungen stehen im Pack (D-346): Ein Client Pack, dessen
|
|
663
|
+
Berechtigungsdatei eine andere Ausgabeform hat als JSON (permissions_format),
|
|
664
|
+
nennt in Abschnitt 5 seines CLIENT_PACK.md jede Nummer aus
|
|
665
|
+
FORMATGEBUNDENE_PRUEFUNGEN, die seine Form nicht erreicht - und keine andere
|
|
666
|
+
(seit 1.13.0 je Form, D-416). ANLASS: Mit dem
|
|
667
|
+
dritten Pack gibt es zum ersten Mal zwei Ausgabeformen; sechs Pruefungen lesen die
|
|
668
|
+
eine und haben fuer die andere keinen Gegenstand. Sie still zu ueberspringen waere
|
|
669
|
+
die Bauform von 0.57.0 - zwei Stellen, die einander decken: Der Validator liefe
|
|
670
|
+
gruen, und niemand wuesste, dass sechs Pruefungen dieses Pack nicht erreichen.
|
|
671
|
+
➡️ EINE LUECKE, DIE ERKLAERT IST, IST EINE AUSSAGE; EINE, DIE NUR BESTEHT, IST EIN
|
|
672
|
+
BLINDER FLECK. ⚠️ GRENZE: Sie prueft die NENNUNG, nicht die Richtigkeit der
|
|
673
|
+
Begruendung - dieselbe Bauform wie Pruefung 19
|
|
674
|
+
88. Keine Datei, die die Wurzel-Anweisung verdraengt (D-341): Bei einem Client, dessen
|
|
675
|
+
Pack root_instruction_override fuehrt, darf die Datei aus
|
|
676
|
+
<ROOT_INSTRUCTION_LOCAL> nicht im Projektbaum liegen. ANLASS, gemessen mit
|
|
677
|
+
Gegenprobe in der Erhebung von 1.3.0: Liegt AGENTS.override.md im Projekt, steht
|
|
678
|
+
die Wurzel-Anweisung des Frameworks in KEINER Nachricht der Sitzung; ohne sie
|
|
679
|
+
steht sie darin. Ein Projekt, das die Datei in sein .gitignore schreibt - der
|
|
680
|
+
naheliegende Ort fuer eine persoenliche Fassung -, haette eine unversionierte
|
|
681
|
+
Ebene 1 je Arbeitsplatz. ➡️ EINE WURZEL-ANWEISUNG, DIE EINE UNGEPRUEFTE DATEI IM
|
|
682
|
+
SELBEN VERZEICHNIS ERSETZEN KANN, IST KEINE EBENE 1 - SIE IST EIN STANDARD. Der
|
|
683
|
+
Schutz hat drei Teile: Der deny-Korb stellt die Datei schreibgeschuetzt, der
|
|
684
|
+
Schutz-Hook fuehrt sie in seinen Mustern, und diese Pruefung meldet sie, wenn sie
|
|
685
|
+
trotzdem da ist - ein Mensch kann sie weiterhin anlegen, und dann soll es nicht
|
|
686
|
+
still bleiben
|
|
687
|
+
89. Die uebrigen Pfadplatzhalter in den Schichten, die sie tragen (K-69, D-357): Unter
|
|
688
|
+
--strict-overlay fuer <ALLOWED_PATHS>, <TEST_PATHS>, <DOC_PATHS> und
|
|
689
|
+
<READ_ONLY_PATHS> dieselben drei Gegenstaende wie Pruefung 59 fuer
|
|
690
|
+
<EXCLUDED_PATHS>: (a) die Laufzeitfassung NENNT den Platzhalter, (b) ihr Wert ist
|
|
691
|
+
dieselbe Menge wie in der dreispaltigen Zeile von Abschnitt 4 des Quell-Overlays,
|
|
692
|
+
(c) jeder Nur-Lese-Pfad hat im deny-Korb eine Schreibsperre - seit 1.20.1 auch
|
|
693
|
+
jeder Glob von <CI_CONFIG_PATHS> und <QUALITY_GATE_CONFIG_PATHS> (K-35, D-493). ANLASS: Laufzeitfassung
|
|
694
|
+
und Berechtigungsdatei bleiben Saat (D-353), die Handpflege an drei Stellen bleibt -
|
|
695
|
+
und nur eine Pruefung faengt sie auf; von sechs Werten des Uebungs-Overlays wich am
|
|
696
|
+
2026-09-18 einer ab. Ein Overlay, das anders bindet, bekommt eine eigene Meldung und
|
|
697
|
+
wird nicht uebergangen. "Kein Wert" hat gemessen mehrere Schreibweisen
|
|
698
|
+
(`nicht vorhanden`, `keine`) und ist die leere Menge. GRENZE: (c) prueft nur die
|
|
699
|
+
Richtung Quelle -> Korb, und (c) ist wie bei 59 an die Ausgabeform 'json' gebunden
|
|
700
|
+
90. Der Lieferumfang einer Installation (D-367): (a) .koolie/core/LIEFERUMFANG traegt
|
|
701
|
+
einen bekannten Wert, (b) "nutzung" stimmt mit dem Bestand - keine Ablage der
|
|
702
|
+
Nachweisschicht (clientmap.NACHWEIS_ABLAGEN) liegt da, (c) das Quellrepositorium
|
|
703
|
+
fuehrt keine solche Datei. In einer Installation mit "nutzung" meldet Pruefung 12
|
|
704
|
+
Verweise in die Nachweisschicht nicht, und 76, 77 und 80 pruefen nur, was geliefert
|
|
705
|
+
ist - jeweils mit einer HINWEIS-Zeile, die weder als Fehler noch als Warnung zaehlt.
|
|
706
|
+
GRENZE: Ob die Nutzung ohne die Nachweisschicht auskommt, belegt nicht diese
|
|
707
|
+
Pruefung, sondern der zeilengleiche Vergleich mit einer vollen Installation (L367)
|
|
708
|
+
91. Die Standueberschrift der Roadmap (D-372): "## Stand nach Release X.Y.Z" steht in
|
|
709
|
+
docs/ROADMAP.md genau einmal und nennt .koolie/core/VERSION. ANLASS: Bei 1.8.0 stand
|
|
710
|
+
sie auf 1.4.4, direkt ueber "Wird mit jedem Release fortgeschrieben"; bis 0.88.1
|
|
711
|
+
zweiunddreissig Releases lang auf 0.56.0. GRENZE: Sie prueft die Zahl der
|
|
712
|
+
Ueberschrift, nicht den Abschnitt darunter - dieselbe Bauform wie 77
|
|
713
|
+
92. Die Rechtschreibung (D-373): Dokumente der Klassen A, B und D (D-371) enthalten
|
|
714
|
+
ausserhalb von Code kein Wort der Schreibung vor 1996 aus einer festen Stammliste
|
|
715
|
+
(dass, muss, misst, Messbaum ...). ANLASS: 603 alte gegen 1.192 geltende
|
|
716
|
+
Schreibungen, neunzehn Dokumente mischten beide. Register (C) bleiben, wie sie
|
|
717
|
+
geschrieben wurden; die Einstiegsdokumente der Wurzel (README, Quickstart und ihre
|
|
718
|
+
englischen Fassungen, D-437) nur im Quellrepositorium. GRENZE: Ein Wort,
|
|
719
|
+
das nicht auf der Liste steht, kommt durch
|
|
720
|
+
93. Die Form (D-374): In jedem Dokument der Klassen A bis D ist jeder Codeblock
|
|
721
|
+
geschlossen, es gibt genau eine Hauptueberschrift (mit Frontmatter hoechstens eine),
|
|
722
|
+
keine uebersprungene Ueberschriftenebene, und jede Tabellenzeile hat die Spaltenzahl
|
|
723
|
+
ihrer Kopfzeile. Ein Waechter: Der Bestand war bis auf eine Datei sauber. GRENZE:
|
|
724
|
+
Gestalt, nicht Gliederung
|
|
725
|
+
94. Der Steckbrief (D-375): Dokumente der Klassen A und B tragen vor dem ersten
|
|
726
|
+
Abschnitt eine Tabelle "| Attribut | Wert |" mit Kennung (ID oder <Art>-ID),
|
|
727
|
+
Version und Status. Ausgenommen mit Grund: README-Verzeichnisse und die
|
|
728
|
+
Einstiegsdokumente der Wurzel (D-437), die
|
|
729
|
+
Laufzeitschicht, Ausfuellvorlagen und Beispielausgaben. GRENZE: Anwesenheit der
|
|
730
|
+
Zeilen; ihren Wert pruefen 13 und 55
|
|
731
|
+
95. Die Art einer Skill-Aenderung (D-403): Die Zeile der aktuellen Version im
|
|
732
|
+
Aenderungsverlauf eines Skills und jede Zeile nach dem 2026-09-22 nennt, ob sie
|
|
733
|
+
eine Anweisung beruehrt (D-303). ANLASS: K-146 - die Einordnung entscheidet, ob
|
|
734
|
+
die Zellen des Testblatts offen sind, und keine Pruefung sah, ob sie dasteht.
|
|
735
|
+
Nur die Skills des Kerns; projekteigene Skills bleiben aussen vor.
|
|
736
|
+
GRENZE: die Nennung, nicht ihre Richtigkeit
|
|
737
|
+
96. Das Agentenprofil, das die Berechtigungen traegt, ist auch das aktive (D-414):
|
|
738
|
+
Bei einem Pack mit permissions_format 'kiro-agent' traegt die Einstellungsdatei
|
|
739
|
+
des Arbeitsbereichs die Werte des Manifests (Agent, Engine), das Profil ist
|
|
740
|
+
gueltiges JSON mit dem gewaehlten Namen, jede Regel hat eine bekannte Faehigkeit,
|
|
741
|
+
und jedes deny- und ask-Muster der Kernquelle steht darin, kein fremdes allow.
|
|
742
|
+
ANLASS, gemessen am 2026-09-26: Fehlt das Profil oder ist es kaputt, faellt der
|
|
743
|
+
Client STILL auf seinen eingebauten Agenten zurueck, und .env war lesbar; eine
|
|
744
|
+
unbekannte Faehigkeit ueberspringt er regelweise. GRENZE: die Dateien, nicht der
|
|
745
|
+
Start - wer mit --agent einen anderen Agenten waehlt, entgeht ihr
|
|
746
|
+
97. Die Berechtigungsdatei, mit der der Client startet und die trifft (D-440): Bei
|
|
747
|
+
einem Pack mit permissions_format 'cursor-json' traegt die Datei NUR den
|
|
748
|
+
Schluessel permissions mit allow und deny, jeder Eintrag hat einen Regeltyp des
|
|
749
|
+
Clients, jedes deny-Muster der Kernquelle steht darin (die Kernzusagen einzeln
|
|
750
|
+
benannt), kein fremdes allow. Ein Pfadverbot, das der Client nie trifft, weil
|
|
751
|
+
es nicht mit '*' oder einem absoluten Pfad beginnt, ist eine Warnung. ANLASS,
|
|
752
|
+
gemessen am 2026-09-26: Mit einem weiteren Schluessel startet der Client nicht;
|
|
753
|
+
'Read(.env)' und 'Read(**/.env)' liessen den Koeder unter Windows durch. GRENZE:
|
|
754
|
+
die Datei, nicht die Wirkung auf einem anderen Betriebssystem
|
|
755
|
+
98. Das Ziel, nicht der Inhalt (D-449): Der Schutz-Hook laesst ein Schreibwerkzeug
|
|
756
|
+
durch, dessen ZIEL frei ist, auch wenn sein Inhalt Kern-, Overlay- oder
|
|
757
|
+
Laufzeitpfade nennt; er sperrt dasselbe Werkzeug mit einem Ziel im Kern. Bei einem
|
|
758
|
+
Patchtext (apply_patch) zaehlen nur die Dateikoepfe. ANLASS, gemessen am
|
|
759
|
+
2026-09-27 in einem Projekt mit devin-desktop: Ein Aenderungsantrag unter docs/,
|
|
760
|
+
der Overlay- und Kernpfade nannte, wurde gesperrt. GRENZE: die Werkzeugnamen der
|
|
761
|
+
Manifeste, nicht jede Eingabeform eines Clients
|
|
762
|
+
99. Das Mandat gibt sich der Client nicht selbst (D-447, D-448): Der Hook sperrt
|
|
763
|
+
mandat.py und die Mandatsdatei fuer Schreiben und Ausfuehren, laesst nur die
|
|
764
|
+
Auskunft 'mandat.py status' durch und sperrt das Overlay ohne Mandat; Hook und
|
|
765
|
+
mandat.py fuehren dieselben Werte (Dateiname, Umfaenge, Hoechstdauer); die
|
|
766
|
+
Kernquelle der Berechtigungen sperrt das Overlay nicht statisch, sonst hebt kein
|
|
767
|
+
Mandat die Sperre auf. Seit 1.20.2 ebenso die Modusbindung (D-501, K-179):
|
|
768
|
+
'mandat.py modus' und die Datei koolie-modus.json sind fuer den Client gesperrt,
|
|
769
|
+
Hook und mandat.py fuehren denselben Dateinamen und dieselben Modi. GRENZE: Ein
|
|
770
|
+
Befehl, der den Namen verschleiert, entgeht dem Muster - wie bei K-32
|
|
771
|
+
100. Der Modellaufruf nur fuer rein lesende Skills (D-451): Ein Skill des Kerns oder
|
|
772
|
+
eines Packs mit dem Trigger 'model' sperrt in permissions.deny 'edit' und 'exec'
|
|
773
|
+
(08-skill-conventions.md, Zeile triggers). ANLASS: Drei rein lesende Skills trugen
|
|
774
|
+
nur 'user', und die Wurzelanweisung trug dem Client zugleich auf, sie aufzurufen
|
|
775
|
+
(Befund A1 aus dem ersten Projekteinsatz). GRENZE: die Richtung model -> lesend;
|
|
776
|
+
ob ein rein lesender Skill 'model' tragen soll, entscheidet der Skill
|
|
777
|
+
101. Die MCP-Freigaben (D-459): Die Kernquelle der Berechtigungen gibt kein MCP-Werkzeug
|
|
778
|
+
frei. In einer Installation, deren Pack die Regelform seiner MCP-Werkzeuge kennt
|
|
779
|
+
(mcp_permission_rule), steht in allow nur ein Lesewerkzeug, das Overlay Abschnitt
|
|
780
|
+
13.2 einem Server mit dem Zweck 'lesen fuer Planung' zuweist - kein
|
|
781
|
+
Schreibwerkzeug, kein Muster fuer einen ganzen Server. Mit --strict-overlay
|
|
782
|
+
zusaetzlich: jedes freigegebene Lesewerkzeug steht in allow, und bei einem Client,
|
|
783
|
+
bei dem eine Rueckfrage die Freigabe schlaegt, steht die pauschale MCP-Rueckfrage
|
|
784
|
+
nicht mehr im ask-Korb. ANLASS, GEMESSEN: Mit 'mcp__*' im ask-Korb wies claude-code
|
|
785
|
+
das einzeln freigegebene Lesewerkzeug ab (Vorpruefung zu 1.18.0, V5). GRENZE: Ein
|
|
786
|
+
Pack ohne erhobene Regelform wird nicht abgeglichen; ob die Werkzeugliste des
|
|
787
|
+
Overlays zum Server passt, sieht die Pruefung nicht
|
|
788
|
+
102. Die Form des Klaerungsregisters (D-465): Jeder Klaerungspunkt steht in der
|
|
789
|
+
Klaerungstabelle (Abschnitt 1 des Decision Logs), seine Statuszelle beginnt mit
|
|
790
|
+
einem Wert der Legende, und ein zusammengelegter Punkt zeigt auf einen bestehenden,
|
|
791
|
+
der nicht selbst zusammengelegt ist. Das Vokabular leitet sie aus der Legende ab.
|
|
792
|
+
ANLASS: 114 von 184 Punkten standen in der Entscheidungstabelle, elf erledigte
|
|
793
|
+
trugen 'offen' (Triage 2026-09-29). GRENZE: der Anfang der Zelle, nicht ihre
|
|
794
|
+
Richtigkeit
|
|
795
|
+
103. Der Stand einer Ergebniszelle (D-472, K-61): Traegt eine Ergebniszelle eines
|
|
796
|
+
Testblatts oder des Testkatalogs eine Standmarke, rechnet die Pruefung den Stand
|
|
797
|
+
ihres Gegenstands nach; weicht er ab, warnt sie, nennt die Marke einen Pfad, den
|
|
798
|
+
es nicht gibt, ist es ein Fehler. ANLASS: FW-KO-02 stand auf 'bestanden', waehrend
|
|
799
|
+
drei spaetere Befunde in seinem Gegenstand lagen. GRENZE: Zellen ohne Marke
|
|
800
|
+
bleiben ungeprueft
|
|
801
|
+
104. Die Verdrahtung der Pruefwerkzeuge (D-481): Jede Funktion check_* des Pakets
|
|
802
|
+
pruefungen/ wird gerufen - von main() genau einmal oder im Paket -, und der
|
|
803
|
+
Sondenlauf laedt jeden Teil unter sonden/ in der Reihenfolge seiner Nummer.
|
|
804
|
+
ANLASS: die Aufteilung in 1.19.1 (D-479); eine verschobene, nicht gerufene
|
|
805
|
+
Pruefung liefe nie. GRENZE: die Verdrahtung, nicht, was eine Pruefung tut
|
|
806
|
+
105. Die gepruefte Clientversion in der Zielspanne (D-482, K-40): Je Client Pack
|
|
807
|
+
liegt die erste Punktversion der Zeile 'Gepruefte Clientversion' in einer
|
|
808
|
+
Spanne der Zeile 'Verbindliche Zielversion', und jede Spanne ist durch eine
|
|
809
|
+
Punktversion belegt. WARNUNG, kein Fehler. GRENZE: ein Praefixvergleich der
|
|
810
|
+
Schreibweise, kein Beleg fuer gleiches Verhalten in der Spanne
|
|
811
|
+
106. Das Entscheidungsprotokoll des Schutz-Hooks (D-487, K-192): In einem Wegwerfbaum
|
|
812
|
+
haelt der Hook eine Sperre und einen Durchlass auf Client-Ereignisse als je eine
|
|
813
|
+
JSON-Zeile mit genau fuenf Feldern fest, nie Inhalt oder Pfadwert; ein Aufruf ohne
|
|
814
|
+
hook_event_name steht nicht darin, 'hook_protokoll: aus' schaltet es ab. ANLASS:
|
|
815
|
+
Sperren hinterliessen keine Spur ausserhalb der Mitschrift. GRENZE: nicht
|
|
816
|
+
manipulationsgeschuetzt; ob ein Client so aufruft, belegt die Messung
|
|
817
|
+
107. Die Gegenfaelle der Wirksamkeitsprobe (D-488, D-490, K-195): An einem Wegwerfbaum mit
|
|
818
|
+
der erzeugten Hook-Konfiguration von claude-code meldet wirksamkeit.pruefe_hook
|
|
819
|
+
nichts, ohne Hook-Skript H3 und H4, mit einem Matcher ohne mcp H2. ANLASS: Die
|
|
820
|
+
Hook-Vorpruefung des Messapparats bestand seit 1.19.0 auch einen Baum ohne Hook,
|
|
821
|
+
weil Exit 2 als Sperre galt. GRENZE: der Hook-Teil der Probe an einem Pack
|
|
822
|
+
108. Ein allow-Befehl, der ein deny-Praefix umschliesst (D-494, K-47): Warnung, wenn
|
|
823
|
+
in der Kernquelle oder im installierten JSON-Korb eines Packs mit Praefixabgleich
|
|
824
|
+
der Befehl eines allow-Eintrags ein echtes Wortpraefix eines deny-Befehls desselben
|
|
825
|
+
Werkzeugs ist. ANLASS: Bei Bash(git:*) lief 'git -C <pfad> push' an
|
|
826
|
+
Bash(git push:*) vorbei (D-123). GRENZE: die Schreibweise, nicht die
|
|
827
|
+
Befehlsaequivalenz; nur Befehlsregeln, keine Pfadmuster
|
|
828
|
+
109. Die beiden Werkzeugfelder eines Skills (D-505, K-93): Fuehrt ein Skill in einer
|
|
829
|
+
Ablage, die das Feld 'permissions' behaelt, 'allowed-tools' oder 'permissions',
|
|
830
|
+
dann fuehrt er beide. ANLASS: Bei devin-desktop wirkt die Beschraenkung nur mit
|
|
831
|
+
beiden Feldern, eines allein bleibt ohne Meldung folgenlos (D-287). GRENZE: die
|
|
832
|
+
Anwesenheit, nicht die Wirkung
|
|
833
|
+
110. Die aktivierten Packs gegen die Regelablage (D-504, K-44), nur --strict-overlay:
|
|
834
|
+
Die Zeilen 'Aktivierte Role Packs' und 'Aktivierte Technology Packs' des Overlays
|
|
835
|
+
und die Laufzeitfassungen 30-role-* und 40-tech-* stimmen in beide Richtungen
|
|
836
|
+
ueberein; fehlt die Zeile bei vorhandenen Fassungen, gibt es eine Warnung. ANLASS:
|
|
837
|
+
Vier Regeldateien entfernt, und --strict-overlay meldete dasselbe wie vorher
|
|
838
|
+
(2026-09-17). GRENZE: die Laufzeitfassung und die Nennung, nicht Skills und Version
|
|
839
|
+
111. Fremde Skills, deklariert (D-514, K-31): Fehler, wenn ein Praefix unter
|
|
840
|
+
'fremde_skills:' im Overlay-Manifest einen Koolie-Skill treffen koennte; Warnung bei
|
|
841
|
+
einer Deklaration ohne Gegenstand und bei einem erkannten fremden Rahmenwerk ohne
|
|
842
|
+
Deklaration. Deklarierte Skills prueft Pruefung 5 nicht, den Korb verlangt Pruefung
|
|
843
|
+
72 weiter. ANLASS: sechs OpenSpec-Skills ergaben 60 Fehler und 18 Warnungen
|
|
844
|
+
(2026-09-30). GRENZE: die Deklaration und die Ablage, nicht der Inhalt
|
|
845
|
+
112. Die Paketquellen und das Banner (D-519, D-520, K-155), nur im Quellrepositorium:
|
|
846
|
+
Fehler, wenn eine Datei unter paketquellen/ fehlt, wenn der Befehl koolie ueber
|
|
847
|
+
eine Pipe install.py ohne die Textvariante des Banners davor startet, wenn
|
|
848
|
+
--version nicht die Version aus VERSION nennt, wenn KOOLIE_NO_BANNER=1 das Banner
|
|
849
|
+
nicht abschaltet, wenn der Dialog ohne Argumente das Verzeichnis des Aufrufs nicht
|
|
850
|
+
mit Enter als Projekt nimmt (D-532), und wenn bauen.py aus einem Wegwerfarchiv nicht ohne Befund baut -
|
|
851
|
+
auch als Vorabversion (--vorab 1), mit der Beschreibung fuer PyPI und npm ohne
|
|
852
|
+
relativen Link (D-528, D-529) und mit dem oeffentlichen npm-Namen @renoxar/koolie (D-535).
|
|
853
|
+
ANLASS: pip, npm und Chocolatey geben dem Installationsschritt kein Terminal
|
|
854
|
+
(gemessen 2026-09-30). GRENZE: ob eine Paketquelle dem Befehl ein Terminal gibt
|
|
855
|
+
(gemessen, nicht geprueft); die Veroeffentlichung
|
|
856
|
+
Der Wirksamkeitsnachweis nach D-23 fuer die Pruefungen 4, 6, 8, 14, 18 bis 66 und 68 bis 112 laeuft als eigenes
|
|
857
|
+
Skript: .koolie/core/tests/scripts/probe-pruefungen.py (je Pruefung eine Sonde und eine
|
|
858
|
+
Gegenprobe, auf einer Kopie des Repositoriums).
|
|
859
|
+
|
|
860
|
+
Ohne PyYAML laufen die Prüfungen 4, 5 und 8 eingeschränkt; das Skript sagt es dann als
|
|
861
|
+
Warnung. Für einen Release- oder Übernahmenachweis ist PyYAML erforderlich.
|
|
862
|
+
|
|
863
|
+
Exit-Code 0 = keine Fehler (Warnungen möglich), 1 = Fehler.
|
|
864
|
+
Status des Skripts: entwurf. Es prüft Struktur, nicht Semantik; die semantische Prüfung
|
|
865
|
+
(Widerspruchsfreiheit, Verhalten des KI-Clients) erfolgt über .koolie/core/tests/TEST_CATALOG.md.
|
|
866
|
+
"""
|
|
867
|
+
from __future__ import annotations
|
|
868
|
+
|
|
869
|
+
import argparse
|
|
870
|
+
import os
|
|
871
|
+
import sys
|
|
872
|
+
|
|
873
|
+
# Die Pruefungen liegen seit 1.19.1 im Paket pruefungen/ neben diesem Skript, nach
|
|
874
|
+
# Gegenstand geteilt (K-174). Dieses Skript ist der Einstieg: oben das
|
|
875
|
+
# Register, unten main(). Daneben liegen zwei geteilte Module, die das Paket
|
|
876
|
+
# importiert:
|
|
877
|
+
# - overlay_status: Die Auswertung des Overlay-Status liegt seit 0.33.0 in einem
|
|
878
|
+
# eigenen Modul, weil der Status-Hook sie ebenso braucht und sie dort anders
|
|
879
|
+
# umgesetzt war (B08, D-58). Der Hook importiert dieses Modul; er importiert
|
|
880
|
+
# nicht dieses Skript.
|
|
881
|
+
# - mermaid_renderer: Browsersuche und Puppeteer-Konfiguration des Mermaid-
|
|
882
|
+
# Renderers teilt der Validator mit dem Bau der Word-Fassung (K-145, D-398).
|
|
883
|
+
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
884
|
+
from pruefungen.gemeinsam import ( # noqa: E402
|
|
885
|
+
detect_client, ERRORS, HINWEISE, warn, WARNINGS, yaml)
|
|
886
|
+
from pruefungen.bestand import ( # noqa: E402
|
|
887
|
+
check_actor_naming, check_artefakt_versionen, check_config, check_content,
|
|
888
|
+
check_links, check_manifest, check_mermaid, check_placeholder_naming,
|
|
889
|
+
check_required, check_rules, check_runtime_placeholders, check_skills,
|
|
890
|
+
check_tool_neutrality, check_versions)
|
|
891
|
+
from pruefungen.hooks import ( # noqa: E402
|
|
892
|
+
check_durchsetzungstiefe, check_hook_ablageort, check_hook_eingabeschema,
|
|
893
|
+
check_hook_fail_closed, check_hook_interpreter, check_hook_skripte_neutral,
|
|
894
|
+
check_hook_protokoll, check_hook_tool_coverage, check_hook_ziel_statt_inhalt,
|
|
895
|
+
check_hookblock, check_sperrform)
|
|
896
|
+
from pruefungen.berechtigungen import ( # noqa: E402
|
|
897
|
+
check_agent_profil_ohne_start, check_agent_startwerkzeug, check_agentenprofil,
|
|
898
|
+
check_berechtigungskoerbe, check_cursor_berechtigungen, check_importsteuerung,
|
|
899
|
+
check_mandatsschutz, check_mcp_freigaben, check_modellaufruf_nur_lesend,
|
|
900
|
+
check_pack_im_korb, check_skill_deny_abbildung, check_skillfreigabe,
|
|
901
|
+
check_verdraengende_wurzelanweisung, check_werkzeugabbildung)
|
|
902
|
+
from pruefungen.packs import ( # noqa: E402
|
|
903
|
+
check_abwesenheitsbeleg, check_allow_umschliesst_deny, check_ausfall_mit_ersatz,
|
|
904
|
+
check_clientversion_in_spanne, check_dokumenttabellen, check_formatgebundene_pruefungen,
|
|
905
|
+
check_matrixzeile_in_tabelle, check_normative_kommentare, check_quellenauskunft,
|
|
906
|
+
check_regelablage_sauber, check_schlitzinhalte, check_vorlage_kein_pack,
|
|
907
|
+
check_skill_werkzeugfelder, check_werkzeugabwesenheit, check_zusagenfelder,
|
|
908
|
+
check_zusatzschluessel)
|
|
909
|
+
from pruefungen.overlay import ( # noqa: E402
|
|
910
|
+
check_aktivierte_packs, check_ausgeschlossene_vorbedingung, check_befehlsschlitz_in_vorbedingung,
|
|
911
|
+
check_excluded_paths, check_fremde_skills, check_overlay_pfadabgleich, check_overlay_ready,
|
|
912
|
+
check_overlay_schlitze, check_overlay_wertabgleich, check_pflichtplatzhalter,
|
|
913
|
+
check_platzhalterbindung, check_strict_overlay, check_ungebundene_vorbedingung,
|
|
914
|
+
check_v6_freigabefolge)
|
|
915
|
+
from pruefungen.testkatalog import ( # noqa: E402
|
|
916
|
+
check_ausgabemarke_gedeckt, check_belegquelle, check_ergebnisstand,
|
|
917
|
+
check_ergebnisstatus_beleg, check_grenzfaelle, check_k3_kategorien,
|
|
918
|
+
check_nummernverweis, check_praeparationsregister, check_pruefmittel_vokabular,
|
|
919
|
+
check_skill_aenderungsart, check_skillaufruf_im_katalog,
|
|
920
|
+
check_skillversion_vorlage)
|
|
921
|
+
from pruefungen.register import ( # noqa: E402
|
|
922
|
+
check_d11_stand, check_decision_log_zellen, check_decisionregister,
|
|
923
|
+
check_klaerungsregister, check_klaerungsregister_form, check_pruefregister,
|
|
924
|
+
check_releaseplan_kette, check_roadmapstand, check_status_vokabular)
|
|
925
|
+
from pruefungen.dokumente import ( # noqa: E402
|
|
926
|
+
check_altname_restbestand, check_bestandsliste_stand, check_chronikspanne,
|
|
927
|
+
check_dokumentform, check_dokumentstand, check_dokumentzahlen,
|
|
928
|
+
check_gegenzeichnung, check_lizenz, check_rechtschreibung, check_steckbrief,
|
|
929
|
+
check_verirrtes_steuerzeichen, check_zeilenendeform, check_zielangabe)
|
|
930
|
+
from pruefungen.werkzeuge import ( # noqa: E402
|
|
931
|
+
check_arbeitsplatzpfad, check_bytecode_versioniert, check_erhebungen_sauber,
|
|
932
|
+
check_gitignore_erzeugnisse, check_kernlage, check_lieferumfang, check_paketquellen,
|
|
933
|
+
check_praefix_uebererfassung, check_verdrahtung, check_werkzeugnamen,
|
|
934
|
+
check_wirksamkeitsprobe)
|
|
935
|
+
|
|
936
|
+
# Die Schnittstelle fuer die Werkzeuge, die dieses Skript als Modul laden:
|
|
937
|
+
# mandat.py
|
|
938
|
+
# tests/erhebungen/apparat/stand.py
|
|
939
|
+
# tests/erhebungen/mcp-waechter.py und zaehlen46.py
|
|
940
|
+
# Sie bleibt hier, damit kein Lader sich aendern muss (1.19.1, K-174).
|
|
941
|
+
from pruefungen.gemeinsam import read, regeldatei, tabellenzellen, TBD_RE # noqa: E402,F401
|
|
942
|
+
from pruefungen.overlay import _p56_ausgeschlossen, _p59_globs, _p89_quelle # noqa: E402,F401
|
|
943
|
+
from pruefungen.testkatalog import stand_wert # noqa: E402,F401
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
def main() -> int:
|
|
947
|
+
# 🔴 DER BERICHTSWEG IN BEIDEN KODIERUNGSUMGEBUNGEN (K-168, Bauform D-223). Mehrere
|
|
948
|
+
# Meldungen tragen Zeichen ausserhalb von cp1252 (⚠️, ➡️, 🔴). Feuerte eine davon in
|
|
949
|
+
# der cp1252-Umgebung, die D-49 verlangt, endete der Lauf mit UnicodeEncodeError statt
|
|
950
|
+
# mit der Liste der Befunde - gemessen am 2026-09-26 an Pruefung 82. Ein Zeichen, das
|
|
951
|
+
# die Konsole nicht kennt, erscheint jetzt als Escape-Folge; der Befund bleibt lesbar.
|
|
952
|
+
for strom in (sys.stdout, sys.stderr):
|
|
953
|
+
try:
|
|
954
|
+
strom.reconfigure(errors="backslashreplace")
|
|
955
|
+
except (AttributeError, ValueError):
|
|
956
|
+
pass
|
|
957
|
+
ap = argparse.ArgumentParser()
|
|
958
|
+
ap.add_argument("--root", default=os.getcwd())
|
|
959
|
+
ap.add_argument("--strict-overlay", action="store_true")
|
|
960
|
+
ap.add_argument("--check-overlay-ready", action="store_true")
|
|
961
|
+
ap.add_argument("--mermaid", action="store_true")
|
|
962
|
+
args = ap.parse_args()
|
|
963
|
+
root = os.path.abspath(args.root)
|
|
964
|
+
|
|
965
|
+
if yaml is None:
|
|
966
|
+
# Ohne PyYAML pruefen drei Pruefungen nur noch, ob ein Frontmatter da ist - nicht,
|
|
967
|
+
# was darin steht. Ein Release-Nachweis, der das nicht sagt, behauptet mehr als er
|
|
968
|
+
# geprueft hat; deshalb steht es hier und nicht nur in der Roadmap.
|
|
969
|
+
warn("PyYAML nicht installiert – Prüfung 4 (Frontmatter der Regeltexte), Prüfung 5 "
|
|
970
|
+
"(Frontmatter der Skills) und Prüfung 8 (Overlay-Manifest) laufen eingeschränkt: "
|
|
971
|
+
"Das Vorhandensein wird geprüft, die Feldinhalte nicht. Für einen Release- oder "
|
|
972
|
+
"Übernahmenachweis (FW-KO-01, FW-CL-11, CL-10) muss PyYAML installiert sein")
|
|
973
|
+
|
|
974
|
+
man = detect_client(root)
|
|
975
|
+
check_required(root, man)
|
|
976
|
+
check_config(root, man)
|
|
977
|
+
check_berechtigungskoerbe(root, man)
|
|
978
|
+
check_rules(root, man)
|
|
979
|
+
check_skills(root, man)
|
|
980
|
+
check_runtime_placeholders(root, man)
|
|
981
|
+
check_content(root)
|
|
982
|
+
check_links(root)
|
|
983
|
+
check_manifest(root)
|
|
984
|
+
check_versions(root, man)
|
|
985
|
+
check_artefakt_versionen(root)
|
|
986
|
+
check_actor_naming(root)
|
|
987
|
+
check_placeholder_naming(root)
|
|
988
|
+
check_hook_interpreter(root, man)
|
|
989
|
+
check_hook_tool_coverage(root, man)
|
|
990
|
+
check_hook_fail_closed(root, man)
|
|
991
|
+
check_hook_ablageort(root, man)
|
|
992
|
+
check_quellenauskunft(root)
|
|
993
|
+
check_dokumenttabellen(root)
|
|
994
|
+
check_hook_skripte_neutral(root)
|
|
995
|
+
check_importsteuerung(root, man)
|
|
996
|
+
check_normative_kommentare(root, man)
|
|
997
|
+
check_regelablage_sauber(root)
|
|
998
|
+
check_ausfall_mit_ersatz(root)
|
|
999
|
+
check_werkzeugabwesenheit(root)
|
|
1000
|
+
check_zusagenfelder(root)
|
|
1001
|
+
check_excluded_paths(root, man)
|
|
1002
|
+
check_k3_kategorien(root)
|
|
1003
|
+
check_grenzfaelle(root)
|
|
1004
|
+
check_durchsetzungstiefe(root)
|
|
1005
|
+
check_hook_eingabeschema(root, man)
|
|
1006
|
+
check_skill_deny_abbildung(root, man)
|
|
1007
|
+
check_agent_startwerkzeug(root)
|
|
1008
|
+
check_agent_profil_ohne_start(root)
|
|
1009
|
+
check_decision_log_zellen(root)
|
|
1010
|
+
check_werkzeugabbildung(root)
|
|
1011
|
+
check_skillfreigabe(root)
|
|
1012
|
+
check_pruefregister(root)
|
|
1013
|
+
check_abwesenheitsbeleg(root)
|
|
1014
|
+
check_schlitzinhalte(root, man)
|
|
1015
|
+
check_hookblock(root, man)
|
|
1016
|
+
check_praeparationsregister(root)
|
|
1017
|
+
check_bytecode_versioniert(root)
|
|
1018
|
+
check_gitignore_erzeugnisse(root)
|
|
1019
|
+
check_d11_stand(root)
|
|
1020
|
+
check_status_vokabular(root)
|
|
1021
|
+
check_tool_neutrality(root)
|
|
1022
|
+
check_skillaufruf_im_katalog(root)
|
|
1023
|
+
check_klaerungsregister(root)
|
|
1024
|
+
check_klaerungsregister_form(root)
|
|
1025
|
+
check_ergebnisstand(root)
|
|
1026
|
+
check_overlay_schlitze(root)
|
|
1027
|
+
check_v6_freigabefolge(root)
|
|
1028
|
+
check_releaseplan_kette(root)
|
|
1029
|
+
check_zusatzschluessel(root, man)
|
|
1030
|
+
check_pflichtplatzhalter(root)
|
|
1031
|
+
check_erhebungen_sauber(root)
|
|
1032
|
+
check_ungebundene_vorbedingung(root)
|
|
1033
|
+
check_decisionregister(root)
|
|
1034
|
+
check_befehlsschlitz_in_vorbedingung(root)
|
|
1035
|
+
check_skillversion_vorlage(root)
|
|
1036
|
+
check_pruefmittel_vokabular(root)
|
|
1037
|
+
check_nummernverweis(root)
|
|
1038
|
+
check_ausgabemarke_gedeckt(root)
|
|
1039
|
+
check_ergebnisstatus_beleg(root)
|
|
1040
|
+
check_verirrtes_steuerzeichen(root)
|
|
1041
|
+
check_praefix_uebererfassung(root)
|
|
1042
|
+
check_werkzeugnamen(root)
|
|
1043
|
+
check_arbeitsplatzpfad(root)
|
|
1044
|
+
check_pack_im_korb(root, man)
|
|
1045
|
+
check_belegquelle(root)
|
|
1046
|
+
check_matrixzeile_in_tabelle(root)
|
|
1047
|
+
check_altname_restbestand(root, man)
|
|
1048
|
+
check_kernlage(root)
|
|
1049
|
+
check_dokumentstand(root)
|
|
1050
|
+
check_dokumentzahlen(root)
|
|
1051
|
+
check_lizenz(root)
|
|
1052
|
+
check_gegenzeichnung(root)
|
|
1053
|
+
check_lieferumfang(root)
|
|
1054
|
+
check_zeilenendeform(root)
|
|
1055
|
+
check_bestandsliste_stand(root)
|
|
1056
|
+
check_chronikspanne(root)
|
|
1057
|
+
check_vorlage_kein_pack(root)
|
|
1058
|
+
check_zielangabe(root)
|
|
1059
|
+
check_sperrform(root, man)
|
|
1060
|
+
check_formatgebundene_pruefungen(root)
|
|
1061
|
+
check_verdraengende_wurzelanweisung(root, man)
|
|
1062
|
+
check_agentenprofil(root, man)
|
|
1063
|
+
check_cursor_berechtigungen(root, man)
|
|
1064
|
+
check_roadmapstand(root)
|
|
1065
|
+
check_rechtschreibung(root)
|
|
1066
|
+
check_dokumentform(root)
|
|
1067
|
+
check_steckbrief(root)
|
|
1068
|
+
check_skill_aenderungsart(root, man)
|
|
1069
|
+
check_hook_ziel_statt_inhalt(root, man)
|
|
1070
|
+
check_mandatsschutz(root, man)
|
|
1071
|
+
check_modellaufruf_nur_lesend(root, man)
|
|
1072
|
+
check_mcp_freigaben(root, man, args.strict_overlay)
|
|
1073
|
+
check_verdrahtung(root)
|
|
1074
|
+
check_clientversion_in_spanne(root)
|
|
1075
|
+
check_hook_protokoll(root)
|
|
1076
|
+
check_wirksamkeitsprobe(root)
|
|
1077
|
+
check_allow_umschliesst_deny(root, man)
|
|
1078
|
+
check_skill_werkzeugfelder(root, man)
|
|
1079
|
+
check_fremde_skills(root, man)
|
|
1080
|
+
check_paketquellen(root)
|
|
1081
|
+
if args.strict_overlay:
|
|
1082
|
+
check_strict_overlay(root, man)
|
|
1083
|
+
check_platzhalterbindung(root, man)
|
|
1084
|
+
check_ausgeschlossene_vorbedingung(root, man)
|
|
1085
|
+
check_overlay_wertabgleich(root, man)
|
|
1086
|
+
check_overlay_pfadabgleich(root, man)
|
|
1087
|
+
check_aktivierte_packs(root, man)
|
|
1088
|
+
if args.check_overlay_ready:
|
|
1089
|
+
check_overlay_ready(root, man)
|
|
1090
|
+
if args.mermaid:
|
|
1091
|
+
check_mermaid(root)
|
|
1092
|
+
|
|
1093
|
+
for h in HINWEISE:
|
|
1094
|
+
print(f"HINWEIS {h}")
|
|
1095
|
+
for w in WARNINGS:
|
|
1096
|
+
print(f"WARNUNG {w}")
|
|
1097
|
+
for e in ERRORS:
|
|
1098
|
+
print(f"FEHLER {e}")
|
|
1099
|
+
print(f"\nErgebnis: {len(ERRORS)} Fehler, {len(WARNINGS)} Warnungen")
|
|
1100
|
+
return 1 if ERRORS else 0
|
|
1101
|
+
|
|
1102
|
+
|
|
1103
|
+
if __name__ == "__main__":
|
|
1104
|
+
sys.exit(main())
|