@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,193 @@
|
|
|
1
|
+
"""Sonden zu 1.20.3: das Banner des Installationsdialogs (CR-2026-165, D-506, D-507).
|
|
2
|
+
|
|
3
|
+
Teil des Sondenskripts probe-pruefungen.py, seit 1.19.1 in Module geteilt (K-174). Die
|
|
4
|
+
Einheiten melden sich beim Laden dieses Moduls an; der Einstieg laedt die Module in der
|
|
5
|
+
Reihenfolge ihrer Nummer, und das ist die Reihenfolge der Ausgabe (D-49). Ein Modul liest
|
|
6
|
+
nur aus dem Apparat und aus frueheren Teilen.
|
|
7
|
+
|
|
8
|
+
Das Banner ist keine Pruefung, sondern ein Werkzeug - die Einheiten sind Wirkungsnachweise
|
|
9
|
+
wie T362 fuer den Kopierweg. Die Referenz ist der Antrag selbst: Anhang 5.1, 5.2, 5.4 und
|
|
10
|
+
5.5 von CR-2026-165 tragen die Ausgabe zeichengenau, mit `<FRAMEWORK_OWNER>` an der Stelle
|
|
11
|
+
des Namens (D-323). Eine Aenderung am Design aendert also Antrag und Asset zusammen - oder
|
|
12
|
+
diese Einheiten melden sie."""
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import importlib.util
|
|
16
|
+
import io
|
|
17
|
+
import os
|
|
18
|
+
import re
|
|
19
|
+
import sys
|
|
20
|
+
|
|
21
|
+
from .apparat import (
|
|
22
|
+
aufraeumen, buendel, ersetze, kopie, lies, melde, notiz, P, Praeparationsfehler,
|
|
23
|
+
QUELLE, schreib, unterprozess)
|
|
24
|
+
|
|
25
|
+
KERN_REL = ".koolie/core"
|
|
26
|
+
CR_165 = ".koolie/core/governance/change-requests/CR-2026-165-installer-banner.md"
|
|
27
|
+
PLATZHALTER = "<FRAMEWORK_OWNER>"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _banner_laden(kern: str):
|
|
31
|
+
spec = importlib.util.spec_from_file_location("banner_sonde_%d" % id(kern),
|
|
32
|
+
os.path.join(kern, "banner.py"))
|
|
33
|
+
modul = importlib.util.module_from_spec(spec)
|
|
34
|
+
spec.loader.exec_module(modul)
|
|
35
|
+
return modul
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _referenz(text: str, abschnitt: str) -> list:
|
|
39
|
+
"""Der erste ```text-Block nach der Ueberschrift des Abschnitts im Antrag."""
|
|
40
|
+
m = re.search(r"^#+ " + re.escape(abschnitt) + r" .*?\n```text\n(.*?)```",
|
|
41
|
+
text.replace("\r\n", "\n"), re.S | re.M)
|
|
42
|
+
if not m:
|
|
43
|
+
raise Praeparationsfehler("CR-2026-165: Referenzblock %s nicht gefunden" % abschnitt)
|
|
44
|
+
return m.group(1).rstrip("\n").split("\n")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class _Strom(io.StringIO):
|
|
48
|
+
"""Ein Ausgabestrom, der sich als Terminal ausgibt."""
|
|
49
|
+
|
|
50
|
+
def __init__(self, terminal: bool = True, kodierung: str = "utf-8") -> None:
|
|
51
|
+
super().__init__()
|
|
52
|
+
self._terminal, self._kodierung = terminal, kodierung
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def encoding(self) -> str:
|
|
56
|
+
return self._kodierung
|
|
57
|
+
|
|
58
|
+
def isatty(self) -> bool:
|
|
59
|
+
return self._terminal
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _dialog(kern: str, *argv, env=None, kodierung="utf-8"):
|
|
63
|
+
umgebung = dict(os.environ)
|
|
64
|
+
umgebung.pop("KOOLIE_NO_BANNER", None)
|
|
65
|
+
umgebung.update(env or {})
|
|
66
|
+
return unterprozess([sys.executable, os.path.join(kern, "install_dialog.py"), *argv],
|
|
67
|
+
input="q\n", env=umgebung, kodierung=kodierung)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def sonden_installer_banner() -> None:
|
|
71
|
+
kern = os.path.join(QUELLE, *KERN_REL.split("/"))
|
|
72
|
+
b = _banner_laden(kern)
|
|
73
|
+
antrag = lies(P(QUELLE, *CR_165.split("/")))
|
|
74
|
+
ph = {"jahr": "2026", "name": PLATZHALTER, "lizenz": "GPL-3.0"}
|
|
75
|
+
|
|
76
|
+
# --- T506a-d: die vier Referenzen des Antrags -----------------------------------
|
|
77
|
+
voll = b.rendern_voll("0.1.0", ph)
|
|
78
|
+
ok = [z for z, _ in voll] == _referenz(antrag, "5.1")
|
|
79
|
+
melde("SONDE", "T506a", ok, "Die Vollvariante entspricht Anhang 5.1 des Antrags zeichengenau "
|
|
80
|
+
"(25 Zeilen, der Hund ueber dem Rahmen)")
|
|
81
|
+
ok = [k.rstrip() for _, k in voll] == [z.rstrip() for z in _referenz(antrag, "5.2")]
|
|
82
|
+
melde("SONDE", "T506b", ok, "Die Farbzonen der Vollvariante entsprechen der Zonenkarte 5.2")
|
|
83
|
+
ok = [z for z, _ in b.rendern_kompakt("0.1.0", ph)] == _referenz(antrag, "5.4")
|
|
84
|
+
melde("SONDE", "T506c", ok, "Die Kompaktvariante entspricht Anhang 5.4 zeichengenau")
|
|
85
|
+
ok = [z for z, _ in b.rendern_text("0.1.0", ph)] == _referenz(antrag, "5.5")
|
|
86
|
+
melde("SONDE", "T506d", ok, "Die Textvariante entspricht Anhang 5.5 und ist ASCII")
|
|
87
|
+
|
|
88
|
+
# --- T506e: Auswahl nach Abschnitt 6 --------------------------------------------
|
|
89
|
+
fall = [({}, True, "utf-8", 80, False, True, "voll"),
|
|
90
|
+
({}, True, "utf-8", 79, False, True, "kompakt"),
|
|
91
|
+
({}, True, "utf-8", 66, False, True, "kompakt"),
|
|
92
|
+
({}, True, "utf-8", 65, False, True, "text"),
|
|
93
|
+
({}, False, "utf-8", 120, False, True, "text"),
|
|
94
|
+
({}, True, "cp1252", 120, False, True, "text"),
|
|
95
|
+
({}, True, "utf-8", 80, True, True, "kompakt"),
|
|
96
|
+
({}, True, "utf-8", 81, True, True, "voll"),
|
|
97
|
+
({"WT_SESSION": "x"}, True, "utf-8", 80, True, True, "voll"),
|
|
98
|
+
({"WT_SESSION": "x"}, True, "utf-8", 120, True, False, "text"),
|
|
99
|
+
({"KOOLIE_NO_BANNER": "1"}, True, "utf-8", 120, False, True, None)]
|
|
100
|
+
falsch = [f for f in fall if b.variante_waehlen(*f[:6]) != f[6]]
|
|
101
|
+
melde("SONDE", "T506e", not falsch,
|
|
102
|
+
"Die Auswahl folgt der Tabelle: Breite 80/66, Pipe, Kodierung, alte Windows-Konsole "
|
|
103
|
+
"ab 81, Terminalsteuerung, Abschaltung")
|
|
104
|
+
if falsch:
|
|
105
|
+
notiz(" abweichend: %r" % [(f[3], f[4], f[6]) for f in falsch])
|
|
106
|
+
|
|
107
|
+
# --- T506f: Farbstufe und NO_COLOR ------------------------------------------------
|
|
108
|
+
stufen = [({"COLORTERM": "truecolor"}, True, "true"), ({"COLORTERM": "24bit"}, True, "true"),
|
|
109
|
+
({"TERM": "xterm-256color"}, True, "256"), ({"WT_SESSION": "x"}, True, "true"),
|
|
110
|
+
({}, True, "mono"), ({"COLORTERM": "truecolor"}, False, "mono"),
|
|
111
|
+
({"COLORTERM": "truecolor", "NO_COLOR": ""}, True, "mono"),
|
|
112
|
+
({"COLORTERM": "truecolor", "TERM": "dumb"}, True, "mono")]
|
|
113
|
+
falsch = [s for s in stufen if b.farbstufe(s[0], s[1]) != s[2]]
|
|
114
|
+
farbig, ohne = _Strom(), _Strom()
|
|
115
|
+
b.ausgeben(farbig, umgebung={"COLORTERM": "truecolor"}, variante="voll")
|
|
116
|
+
b.ausgeben(ohne, umgebung={"COLORTERM": "truecolor", "NO_COLOR": "1"}, variante="voll")
|
|
117
|
+
zweihundert = b.rendern("voll", "256", "0.1.0", ph)
|
|
118
|
+
ok = (not falsch and "\x1b[" in farbig.getvalue() and "\x1b" not in ohne.getvalue()
|
|
119
|
+
and re.sub("\x1b\\[[0-9;]*m", "", farbig.getvalue()) == ohne.getvalue()
|
|
120
|
+
and "38;5;80" in "".join(zweihundert) and "38;2;" not in "".join(zweihundert))
|
|
121
|
+
melde("SONDE", "T506f", ok, "Farbe nur im Terminal und ohne NO_COLOR; ohne Farbe formgleich "
|
|
122
|
+
"und ohne ein einziges Steuerzeichen; 256 Farben mit den Indizes")
|
|
123
|
+
if falsch:
|
|
124
|
+
notiz(" Farbstufe abweichend: %r" % falsch)
|
|
125
|
+
|
|
126
|
+
# --- T506g: der Dialog ueber eine Pipe und die beiden Schalter ---------------------
|
|
127
|
+
version = lies(os.path.join(kern, "VERSION")).strip()
|
|
128
|
+
p = _dialog(kern)
|
|
129
|
+
zeilen = p.stdout.splitlines()
|
|
130
|
+
ok_pipe = (p.returncode == 1 and zeilen[:1] == ["KOOLIE v" + version]
|
|
131
|
+
and "\x1b" not in p.stdout and zeilen[4:6] == ["", "Koolie %s - Installation in "
|
|
132
|
+
"ein Projekt" % version])
|
|
133
|
+
p1 = _dialog(kern, "--no-banner")
|
|
134
|
+
p2 = _dialog(kern, env={"KOOLIE_NO_BANNER": "1"})
|
|
135
|
+
ok_aus = all(q.returncode == 1 and q.stdout.startswith("Koolie %s - Installation" % version)
|
|
136
|
+
for q in (p1, p2))
|
|
137
|
+
melde("SONDE", "T506g", ok_pipe and ok_aus,
|
|
138
|
+
"Ueber eine Pipe gibt der Dialog die Textvariante ohne Farbe aus, gefolgt von genau "
|
|
139
|
+
"einer Leerzeile; --no-banner und KOOLIE_NO_BANNER=1 unterdruecken sie")
|
|
140
|
+
if not (ok_pipe and ok_aus):
|
|
141
|
+
notiz(" Pipe %s, Schalter %s: %s" % (ok_pipe, ok_aus, " | ".join(zeilen[:6])))
|
|
142
|
+
|
|
143
|
+
# --- T506h: ASCII ohne Ausnahme -------------------------------------------------
|
|
144
|
+
p = _dialog(kern, kodierung="ascii")
|
|
145
|
+
ok = (p.returncode == 1 and "UnicodeEncodeError" not in p.stderr
|
|
146
|
+
and "Nichts installiert" in p.stdout and p.stdout.startswith("KOOLIE v"))
|
|
147
|
+
melde("SONDE", "T506h", ok, "Mit ASCII als Ausgabekodierung kommt die Textvariante, "
|
|
148
|
+
"umschrieben, ohne UnicodeEncodeError")
|
|
149
|
+
|
|
150
|
+
# --- T506i/j: ein defektes Asset, ein nicht ladbares Modul -----------------------
|
|
151
|
+
wurzel = kopie()
|
|
152
|
+
try:
|
|
153
|
+
kk = P(wurzel, *KERN_REL.split("/"))
|
|
154
|
+
ersetze(P(kk, "banner.py"), ("HUND_ZONEN = (\r\n", "HUND_ZONEN = None and (\r\n"))
|
|
155
|
+
p = unterprozess([sys.executable, P(kk, "banner.py"), "--variante", "voll"])
|
|
156
|
+
ok = p.returncode == 0 and p.stdout.startswith("KOOLIE v") and "Traceback" not in p.stderr
|
|
157
|
+
melde("SONDE", "T506i", ok, "Ein defektes Asset faellt auf die Textvariante zurueck, "
|
|
158
|
+
"ohne Abbruch")
|
|
159
|
+
schreib(P(kk, "banner.py"), "raise RuntimeError('Sonde T506j')\r\n")
|
|
160
|
+
p = _dialog(kk)
|
|
161
|
+
ok = (p.returncode == 1 and p.stdout.startswith("Koolie ")
|
|
162
|
+
and "Nichts installiert" in p.stdout)
|
|
163
|
+
melde("SONDE", "T506j", ok, "Ein Banner-Modul, das nicht laedt, haelt den Dialog nicht "
|
|
164
|
+
"auf - er beginnt mit seiner ersten Zeile")
|
|
165
|
+
finally:
|
|
166
|
+
aufraeumen(os.path.dirname(wurzel))
|
|
167
|
+
|
|
168
|
+
# --- T506k: Fusszeile und Version aus ihren Quellen ------------------------------
|
|
169
|
+
hinweis = lies(os.path.join(kern, "LICENSE-HINWEIS.md"))
|
|
170
|
+
m = re.search(r"^Copyright © (\d{4}) (.+?)\r?$", hinweis, re.M)
|
|
171
|
+
fuss = b.fuss_lesen()
|
|
172
|
+
ok = (m is not None and fuss == {"jahr": m.group(1), "name": m.group(2), "lizenz": "GPL-3.0"}
|
|
173
|
+
and "SPDX-Kennung: `GPL-3.0-only`" in hinweis and b.version_lesen() == version)
|
|
174
|
+
wurzel = kopie()
|
|
175
|
+
try:
|
|
176
|
+
kk = P(wurzel, *KERN_REL.split("/"))
|
|
177
|
+
pf = P(kk, "LICENSE-HINWEIS.md")
|
|
178
|
+
t = lies(pf)
|
|
179
|
+
if t.count(m.group(0) if m else "\x00") != 1:
|
|
180
|
+
raise Praeparationsfehler("LICENSE-HINWEIS.md: Copyright-Zeile nicht genau einmal")
|
|
181
|
+
schreib(pf, t.replace(m.group(0), "Copyright liegt beim Rechteinhaber"))
|
|
182
|
+
p = unterprozess([sys.executable, P(kk, "banner.py"), "--variante", "text"])
|
|
183
|
+
ohne_name = p.stdout.splitlines()[3:4] == ["GPL-3.0 - " + b.REPOSITORIUM]
|
|
184
|
+
finally:
|
|
185
|
+
aufraeumen(os.path.dirname(wurzel))
|
|
186
|
+
melde("SONDE", "T506k", ok and ohne_name,
|
|
187
|
+
"Name, Jahr und Lizenz kommen aus dem Lizenzhinweis, die Version aus VERSION; fehlt "
|
|
188
|
+
"die Copyright-Zeile, entfaellt der Name")
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
buendel(sonden_installer_banner,
|
|
192
|
+
"Das Banner des Installationsdialogs gegen die Referenzen des Antrags, seine Auswahl "
|
|
193
|
+
"und sein Verhalten im Fehlerfall (CR-2026-165, D-506, D-507)")
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""Sonden zur Koexistenz mit fremden Agenten-Rahmenwerken (1.21.0): die Deklaration fremder
|
|
2
|
+
Skills und ihre Grenze (Pruefung 111, K-31), der Korb, den Pruefung 72 weiter verlangt, und
|
|
3
|
+
die Auskunft von install.py.
|
|
4
|
+
|
|
5
|
+
Teil des Sondenskripts probe-pruefungen.py, seit 1.19.1 in Module geteilt (K-174). Die
|
|
6
|
+
Einheiten melden sich beim Laden dieses Moduls an; der Einstieg laedt die Module in der
|
|
7
|
+
Reihenfolge ihrer Nummer, und das ist die Reihenfolge der Ausgabe (D-49). Ein Modul liest
|
|
8
|
+
nur aus dem Apparat und aus frueheren Teilen."""
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import json
|
|
12
|
+
import os
|
|
13
|
+
import sys
|
|
14
|
+
|
|
15
|
+
from .apparat import (
|
|
16
|
+
aufraeumen, buendel, installation, lies, melde, Praeparationsfehler, schreib, unterprozess,
|
|
17
|
+
validator_ausgabe)
|
|
18
|
+
|
|
19
|
+
# Nachgebildet nach OpenSpec 1.13.2 (gemessen 2026-09-30): Frontmatter mit Feldern, die
|
|
20
|
+
# Koolie nicht kennt, keine Metadatenzeilen, keine Testblaetter. SYNTHETISCH.
|
|
21
|
+
FREMDER_SKILL = ("---\nname: openspec-explore\ndescription: Explore ideas before a change. "
|
|
22
|
+
"SYNTHETISCH\nlicense: MIT\n---\n\n# Explore\n\nSYNTHETISCH\n")
|
|
23
|
+
M111_STRUKTUR = "openspec-explore: EXAMPLES.md fehlt"
|
|
24
|
+
M111_OFFEN = "(openspec-*) sind nicht deklariert"
|
|
25
|
+
M111_UNZULAESSIG = "das Praefix koennte einen Koolie-Skill treffen"
|
|
26
|
+
M111_OHNE = "eine Deklaration ohne Gegenstand"
|
|
27
|
+
M72_FREMD = "der Skill 'openspec-explore' liegt in"
|
|
28
|
+
M37_FREMD = "Skill(openspec-*)"
|
|
29
|
+
M_AUSKUNFT = "fremdes Agenten-Rahmenwerk neben Koolie"
|
|
30
|
+
M_DEKLARIEREN = "fremde_skills: openspec-"
|
|
31
|
+
M111_BLOCK = "eines fremden Generators"
|
|
32
|
+
M_ABBRUCH = "markierte(n) Block/Bloecke eines fremden Generators"
|
|
33
|
+
BLOCK = "\n<!-- OPENSPEC:START -->\nSYNTHETISCH\n<!-- OPENSPEC:END -->\n"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _manifest(root: str) -> str:
|
|
37
|
+
return os.path.join(root, ".koolie", "project-overlay", "overlay-manifest.yaml")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _deklarieren(root: str, wert: str, urstand: str) -> None:
|
|
41
|
+
schreib(_manifest(root), urstand.rstrip("\n") + "\nfremde_skills: %s\n" % wert)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _install(root: str) -> str:
|
|
45
|
+
p = unterprozess([sys.executable, os.path.join(root, ".koolie", "core", "install.py"),
|
|
46
|
+
"--client", "claude-code", "--root", root])
|
|
47
|
+
return (p.stdout or "") + (p.stderr or "")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def sonden_fremde_skills() -> None:
|
|
51
|
+
"""Pruefung 111 und die Auskunft an einer claude-code-Installation mit einem fremden Skill."""
|
|
52
|
+
root = installation("claude-code")
|
|
53
|
+
try:
|
|
54
|
+
aus = _install(root)
|
|
55
|
+
melde("GEGENPROBE", "111a", M_AUSKUNFT not in aus,
|
|
56
|
+
"Eine Installation ohne fremdes Rahmenwerk - keine Auskunft")
|
|
57
|
+
ablage = os.path.join(root, ".claude", "skills", "openspec-explore")
|
|
58
|
+
os.makedirs(ablage)
|
|
59
|
+
schreib(os.path.join(ablage, "SKILL.md"), FREMDER_SKILL)
|
|
60
|
+
os.makedirs(os.path.join(root, "openspec"))
|
|
61
|
+
schreib(os.path.join(root, "openspec", "config.yaml"), "schema: spec-driven\n")
|
|
62
|
+
aus = _install(root)
|
|
63
|
+
melde("SONDE", "111b", M_AUSKUNFT in aus and M_DEKLARIEREN in aus,
|
|
64
|
+
"install.py erkennt OpenSpec an Ablage und Skill und nennt die Deklaration")
|
|
65
|
+
aus = validator_ausgabe(root)
|
|
66
|
+
melde("SONDE", "111c", M111_STRUKTUR in aus and M111_OFFEN in aus,
|
|
67
|
+
"Ohne Deklaration prueft Pruefung 5 den fremden Skill als Koolie-Skill, und "
|
|
68
|
+
"Pruefung 111 nennt die fehlende Deklaration")
|
|
69
|
+
urstand = lies(_manifest(root))
|
|
70
|
+
_deklarieren(root, "openspec-", urstand)
|
|
71
|
+
aus = validator_ausgabe(root)
|
|
72
|
+
melde("GEGENPROBE", "111d", M111_STRUKTUR not in aus and M111_OFFEN not in aus,
|
|
73
|
+
"Deklariert - Pruefung 5 nimmt ihn aus, Pruefung 111 ist still")
|
|
74
|
+
melde("SONDE", "111e", M72_FREMD in aus,
|
|
75
|
+
"Den Korb verlangt Pruefung 72 weiter (D-238): ein fremder Skill ist ein "
|
|
76
|
+
"Werkzeug der Sitzung wie jeder andere")
|
|
77
|
+
perm = os.path.join(root, ".claude", "settings.json")
|
|
78
|
+
einstellungen = json.loads(lies(perm))
|
|
79
|
+
einstellungen["permissions"]["ask"].append("Skill(openspec-*)")
|
|
80
|
+
schreib(perm, json.dumps(einstellungen, ensure_ascii=False, indent=2) + "\n")
|
|
81
|
+
aus = validator_ausgabe(root)
|
|
82
|
+
melde("GEGENPROBE", "111f", M72_FREMD not in aus and M37_FREMD not in aus,
|
|
83
|
+
"Skill(openspec-*) im ask-Korb deckt den deklarierten Skill und gilt nicht "
|
|
84
|
+
"als Ausweitung")
|
|
85
|
+
_deklarieren(root, "fw-, speckit-", urstand)
|
|
86
|
+
testblatt = os.path.join(root, ".claude", "skills", "fw-plan", "TESTS.md")
|
|
87
|
+
if not os.path.isfile(testblatt):
|
|
88
|
+
raise Praeparationsfehler("fw-plan/TESTS.md fehlt in der Installation")
|
|
89
|
+
os.remove(testblatt)
|
|
90
|
+
aus = validator_ausgabe(root)
|
|
91
|
+
melde("SONDE", "111g", M111_UNZULAESSIG in aus and "fw-plan: TESTS.md fehlt" in aus,
|
|
92
|
+
"'fw-' als fremdes Praefix wird gemeldet und nimmt nichts aus - der Koolie-Skill "
|
|
93
|
+
"bleibt geprueft")
|
|
94
|
+
melde("SONDE", "111h", M111_OHNE in aus,
|
|
95
|
+
"Ein deklariertes Praefix ohne Skill ('speckit-') wird gemeldet")
|
|
96
|
+
wurzel = os.path.join(root, "CLAUDE.md")
|
|
97
|
+
schreib(wurzel, lies(wurzel) + BLOCK)
|
|
98
|
+
aus = validator_ausgabe(root)
|
|
99
|
+
melde("SONDE", "111i", M111_BLOCK in aus,
|
|
100
|
+
"Pruefung 111 warnt vor dem markierten Block eines Generators in der "
|
|
101
|
+
"Wurzel-Anweisung (Budget, K-185)")
|
|
102
|
+
p = unterprozess([sys.executable, os.path.join(root, ".koolie", "core", "install.py"),
|
|
103
|
+
"--client", "claude-code", "--root", root, "--update"])
|
|
104
|
+
melde("SONDE", "111j", p.returncode != 0 and M_ABBRUCH in (p.stdout or "") + (p.stderr or "")
|
|
105
|
+
and BLOCK.strip() in lies(wurzel),
|
|
106
|
+
"install.py --update bricht vor dem Block ab, statt ihn mit der Wurzel-Anweisung "
|
|
107
|
+
"zu ueberschreiben - und der Block bleibt stehen (D-515)")
|
|
108
|
+
finally:
|
|
109
|
+
aufraeumen(os.path.dirname(root))
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
buendel(sonden_fremde_skills,
|
|
113
|
+
"Pruefung 111 und die Auskunft zu fremden Rahmenwerken an einer claude-code-"
|
|
114
|
+
"Installation: sieben Sonden, drei Gegenproben")
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Sonden zu den Paketquellen (1.22.0): der Befehl koolie mit dem Banner vor install.py und
|
|
2
|
+
der Bau der Pakete aus einem Release-Archiv (Pruefung 112, K-155).
|
|
3
|
+
|
|
4
|
+
Teil des Sondenskripts probe-pruefungen.py, seit 1.19.1 in Module geteilt (K-174). Die
|
|
5
|
+
Einheiten melden sich beim Laden dieses Moduls an; der Einstieg laedt die Module in der
|
|
6
|
+
Reihenfolge ihrer Nummer, und das ist die Reihenfolge der Ausgabe (D-49). Ein Modul liest
|
|
7
|
+
nur aus dem Apparat und aus frueheren Teilen."""
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
from .apparat import buendel, ersetze, fehlerfrei, gegenprobe, melde, P, sonde
|
|
13
|
+
|
|
14
|
+
BEFEHL = "paketquellen/koolie_befehl.py"
|
|
15
|
+
BAUEN = "paketquellen/bauen.py"
|
|
16
|
+
M112 = "(Pruefung 112"
|
|
17
|
+
M112_BANNER = "startet install.py ohne das Banner davor"
|
|
18
|
+
M112_SCHALTER = "KOOLIE_NO_BANNER=1 schaltet das Banner nicht ab"
|
|
19
|
+
M112_VERSION = "'--version' liefert"
|
|
20
|
+
M112_BAU = "baut aus einem Wegwerfarchiv nicht ohne Befund"
|
|
21
|
+
M112_FEHLT = "paketquellen/koolie.cmd: fehlt"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _p(root: str, rel: str) -> str:
|
|
25
|
+
return P(root, rel.replace("/", os.sep))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# --- Pruefung 112: Die Paketquellen und das Banner (CR-2026-168, D-519, D-520) ---------
|
|
29
|
+
#
|
|
30
|
+
# Jede Sonde nimmt dem Befehl oder dem Bau genau eine Zusage: das Banner vor install.py,
|
|
31
|
+
# den Schalter, die Version, das Fehlen eines npm-Installationsskripts, eine Datei des
|
|
32
|
+
# Befehls. Die Suchtexte enthalten kein Zeilenende - die Kopie traegt die Form des
|
|
33
|
+
# Arbeitsbaums.
|
|
34
|
+
def _112_ohne_banner(root: str) -> None:
|
|
35
|
+
ersetze(_p(root, BEFEHL), (" banner_ausgeben(argv)", " pass # SYNTHETISCH"))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _112_schalter(root: str) -> None:
|
|
39
|
+
ersetze(_p(root, BEFEHL), ("banner.ausgeben(argv=argv, version=version())",
|
|
40
|
+
"banner.ausgeben(argv=argv, version=version(), umgebung={})"))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _112_version(root: str) -> None:
|
|
44
|
+
ersetze(_p(root, BEFEHL), ('print(f"koolie {version()}")', 'print("koolie 0.0.0")'))
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _112_npm_skript(root: str) -> None:
|
|
48
|
+
ersetze(_p(root, BAUEN), ('"engines": {"node": ">=16"},',
|
|
49
|
+
'"engines": {"node": ">=16"}, '
|
|
50
|
+
'"scripts": {"postinstall": "node SYNTHETISCH"},'))
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _112_ohne_huelle(root: str) -> None:
|
|
54
|
+
os.remove(_p(root, "paketquellen/koolie.cmd"))
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
sonde("112a", "Ein Befehl koolie, der install.py ohne das Banner startet, wird gemeldet - auf "
|
|
58
|
+
"den Wegen der Paketquellen erschiene es nicht", _112_ohne_banner, M112_BANNER)
|
|
59
|
+
sonde("112b", "Ein Befehl, der KOOLIE_NO_BANNER nicht an das Banner weitergibt, wird gemeldet",
|
|
60
|
+
_112_schalter, M112_SCHALTER)
|
|
61
|
+
sonde("112c", "Ein Befehl, dessen --version nicht die Version aus VERSION nennt, wird gemeldet",
|
|
62
|
+
_112_version, M112_VERSION)
|
|
63
|
+
sonde("112d", "Ein npm-Paket mit Installationsskript wird gemeldet - bauen.py prueft es nach",
|
|
64
|
+
_112_npm_skript, M112_BAU)
|
|
65
|
+
sonde("112e", "Fehlt die Huelle koolie.cmd fuer Scoop, wird es gemeldet", _112_ohne_huelle,
|
|
66
|
+
M112_FEHLT)
|
|
67
|
+
# Seit 1.24.0 (D-528, D-529): die Beschreibung fuer PyPI und npm mit absoluten Links und
|
|
68
|
+
# die Vorabversion fuer TestPyPI.
|
|
69
|
+
def _112_relative_links(root: str) -> None:
|
|
70
|
+
ersetze(_p(root, BAUEN), (" return RELATIVER_LINK.sub(absolut, text)",
|
|
71
|
+
" return text # SYNTHETISCH"))
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _112_vorab(root: str) -> None:
|
|
75
|
+
ersetze(_p(root, BAUEN), ('return f"{version}.dev{vorab}", f"{version}-dev.{vorab}"',
|
|
76
|
+
'return f"{version}.dev{vorab}", version'))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _112_vorgabe(root: str) -> None:
|
|
80
|
+
ersetze(_p(root, BEFEHL), (', "--vorgabe", os.getcwd()]).returncode', ']).returncode'))
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
sonde("112i", "Ein Befehl, der dem Dialog das Verzeichnis des Aufrufs nicht als Vorgabe gibt, "
|
|
84
|
+
"wird gemeldet - uvx, pipx run und npx starten ihn im Projekt", _112_vorgabe,
|
|
85
|
+
"nimmt das Verzeichnis des Aufrufs")
|
|
86
|
+
def _112_npm_privat(root: str) -> None:
|
|
87
|
+
ersetze(_p(root, BAUEN), ('"publishConfig": {"access": "public"},', ''))
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
sonde("112j", "Ein npm-Paket mit Scope ohne oeffentlichen Zugang wird gemeldet - npm wiese "
|
|
91
|
+
"das Hochladen ab", _112_npm_privat, M112_BAU)
|
|
92
|
+
sonde("112g", "Ein Bau, der die Links der Beschreibung relativ laesst, wird gemeldet - auf PyPI "
|
|
93
|
+
"und npm fuehrten sie ins Leere", _112_relative_links, M112_BAU)
|
|
94
|
+
sonde("112h", "Eine Vorabversion, deren npm-Paket die Version der Marke traegt, wird gemeldet - "
|
|
95
|
+
"sie belegte die Version vor der Signatur", _112_vorab, M112_BAU)
|
|
96
|
+
gegenprobe("112", "Der ausgelieferte Befehl gibt das Banner vor install.py aus, und bauen.py "
|
|
97
|
+
"baut ohne Befund", None, M112)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
# --- Der Waechter der Gegenproben (D-522) ------------------------------------------------
|
|
101
|
+
#
|
|
102
|
+
# Eine Gegenprobe bestand bis 1.21.0, sobald "0 Fehler" irgendwo in der Ausgabe stand - also
|
|
103
|
+
# auch bei "10 Fehler". Gefunden an der Gegenprobe zu 112, die an einem Baum mit zehn offenen
|
|
104
|
+
# Fehlern bestand. Die Sonde haelt die Unterscheidung an der Ergebniszeile fest.
|
|
105
|
+
def sonden_ergebniszeile() -> None:
|
|
106
|
+
"""Der Apparat unterscheidet 0 Fehler von 10 Fehlern."""
|
|
107
|
+
melde("SONDE", "112f", not fehlerfrei("Ergebnis: 10 Fehler, 0 Warnungen")
|
|
108
|
+
and not fehlerfrei("Ergebnis: 20 Fehler, 3 Warnungen"),
|
|
109
|
+
"Eine Gegenprobe besteht nicht mehr an einem Lauf mit zehn oder zwanzig Fehlern")
|
|
110
|
+
melde("GEGENPROBE", "112f", fehlerfrei("Ergebnis: 0 Fehler, 2 Warnungen"),
|
|
111
|
+
"Ein Lauf ohne Fehler, mit Warnungen, gilt weiter als fehlerfrei")
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
buendel(sonden_ergebniszeile,
|
|
115
|
+
"Der Waechter der Gegenproben liest die Ergebniszeile: eine Sonde, eine Gegenprobe")
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"""Sonden zur Modusbindung M3 bis M5 (1.23.0, CR-2026-169, K-201): mandat.py kopiert die
|
|
2
|
+
Pfadliste des Modus aus dem Overlay in die Bindung, und der Schutz-Hook wertet sie als
|
|
3
|
+
Globs aus - mit Nur-Lese-Pfaden, Umfang, Namensvettern, Punktsegmenten und dem Glob mitten
|
|
4
|
+
im Pfad. Dazu die Gegenprobe zu Pruefung 99: ein abweichender Rumpf von glob_muster.
|
|
5
|
+
|
|
6
|
+
Teil des Sondenskripts probe-pruefungen.py, seit 1.19.1 in Module geteilt (K-174). Die
|
|
7
|
+
Einheiten melden sich beim Laden dieses Moduls an; der Einstieg laedt die Module in der
|
|
8
|
+
Reihenfolge ihrer Nummer, und das ist die Reihenfolge der Ausgabe (D-49). Ein Modul liest
|
|
9
|
+
nur aus dem Apparat und aus frueheren Teilen."""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import json
|
|
13
|
+
import os
|
|
14
|
+
import sys
|
|
15
|
+
|
|
16
|
+
from .apparat import (
|
|
17
|
+
aufraeumen, buendel, installation, lies, melde, schreib, strict_ausgabe, unterprozess)
|
|
18
|
+
from .teil14_modi_ausnahmen_skills import _hook, _modus_setzen, _schreiben
|
|
19
|
+
|
|
20
|
+
MODUS = os.path.join(".git", "koolie-modus.json")
|
|
21
|
+
|
|
22
|
+
# Die Werte haben die Gestalten, die in den drei gemessenen Overlays vorkommen: Praefix,
|
|
23
|
+
# Einzeldatei, Glob mitten im Pfad (Uebung) und "nicht vorhanden" (otp-generator).
|
|
24
|
+
OVERLAY_ABSCHNITT_4 = """
|
|
25
|
+
## 4. Pfade
|
|
26
|
+
|
|
27
|
+
| Zweck | Platzhalter | Wert | Hinweis |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| Erlaubte Pfade (Lesen und Ändern in M3) | `<ALLOWED_PATHS>` | `src/**`, `test/**`, `README.md` | Sonde |
|
|
30
|
+
| Testpfade (Ändern in M4) | `<TEST_PATHS>` | `test/**`, `src/**/*.test.ts` | Sonde |
|
|
31
|
+
| Dokumentationspfade (Ändern in M5) | `<DOC_PATHS>` | `nicht vorhanden` | Sonde |
|
|
32
|
+
| Nur-Lese-Pfade (Lesen erlaubt, Ändern nie) | `<READ_ONLY_PATHS>` | `src/api/**` | Sonde |
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _binden(root: str, *argv: str):
|
|
37
|
+
mandat = os.path.join(root, ".koolie", "core", "mandat.py")
|
|
38
|
+
return unterprozess([sys.executable, mandat, "modus", *argv])
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _frei(root: str, rel: str) -> bool:
|
|
42
|
+
return _hook(root, _schreiben(rel)) == 0
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def sonden_modusbindung_m3_m5() -> None:
|
|
46
|
+
"""M3 bis M5 an einer echten Installation: Bindung aus dem Overlay, Auswertung im Hook."""
|
|
47
|
+
root = installation("claude-code")
|
|
48
|
+
try:
|
|
49
|
+
os.makedirs(os.path.join(root, ".git"), exist_ok=True)
|
|
50
|
+
overlay = os.path.join(root, ".koolie", "project-overlay", "OVERLAY.md")
|
|
51
|
+
# Ersetzt, nicht angehaengt: Die Vorlage traegt dieselben Zeilen mit <TBD>, und
|
|
52
|
+
# gelesen wird die erste.
|
|
53
|
+
schreib(overlay, "# Overlay\n" + OVERLAY_ABSCHNITT_4)
|
|
54
|
+
|
|
55
|
+
p = _binden(root, "M3", "--minuten", "5")
|
|
56
|
+
daten = json.loads(lies(os.path.join(root, MODUS))) if p.returncode == 0 else {}
|
|
57
|
+
melde("SONDE", "K201a", daten.get("pfade") == ["src/**", "test/**", "README.md"]
|
|
58
|
+
and daten.get("nur_lesen") == ["src/api/**"],
|
|
59
|
+
"mandat.py modus M3 kopiert <ALLOWED_PATHS> und <READ_ONLY_PATHS> in die Bindung")
|
|
60
|
+
melde("SONDE", "K201b", _frei(root, "src/a/B.java") and _frei(root, "README.md")
|
|
61
|
+
and not _frei(root, "docs/x.md") and not _frei(root, "README.md.bak"),
|
|
62
|
+
"M3: Praefix und Einzeldatei frei, alles Uebrige gesperrt")
|
|
63
|
+
melde("SONDE", "K201c", not _frei(root, "src/api/v1.yaml"),
|
|
64
|
+
"M3: ein Nur-Lese-Pfad innerhalb der erlaubten Pfade bleibt gesperrt")
|
|
65
|
+
melde("SONDE", "K201d", not _frei(root, "src2/x.java")
|
|
66
|
+
and not _frei(root, "src/../docs/x.md") and not _frei(root, "../draussen/x"),
|
|
67
|
+
"M3: Namensvetter, Punktsegment und ein Ziel ausserhalb fuehren nicht hinein")
|
|
68
|
+
melde("SONDE", "K201e", _frei(root, "SRC/a.java"),
|
|
69
|
+
"M3: ohne Gross- und Kleinschreibung wie jeder Pfadvergleich des Hooks (D-492)")
|
|
70
|
+
|
|
71
|
+
p = _binden(root, "M3", "--umfang", "src/billing/**", "--minuten", "5")
|
|
72
|
+
melde("SONDE", "K201f", p.returncode == 0 and _frei(root, "src/billing/R.java")
|
|
73
|
+
and not _frei(root, "src/other/R.java") and not _frei(root, "test/T.java"),
|
|
74
|
+
"M3 mit --umfang: nur die Schnittmenge aus Umfang und <ALLOWED_PATHS>")
|
|
75
|
+
p = _binden(root, "M3", "--umfang", "docs/**", "--minuten", "5")
|
|
76
|
+
melde("SONDE", "K201g", p.returncode == 0 and not _frei(root, "docs/a.md"),
|
|
77
|
+
"M3: ein Umfang ausserhalb von <ALLOWED_PATHS> oeffnet nichts")
|
|
78
|
+
|
|
79
|
+
p = _binden(root, "M4", "--minuten", "5")
|
|
80
|
+
melde("SONDE", "K201h", p.returncode == 0 and _frei(root, "test/T.java")
|
|
81
|
+
and _frei(root, "src/ui/knopf.test.ts") and not _frei(root, "src/ui/knopf.ts"),
|
|
82
|
+
"M4: Testpfade frei, auch der Glob mitten im Pfad; Produktivcode gesperrt")
|
|
83
|
+
|
|
84
|
+
os.remove(os.path.join(root, MODUS))
|
|
85
|
+
p = _binden(root, "M5", "--minuten", "5")
|
|
86
|
+
melde("SONDE", "K201i", p.returncode == 2
|
|
87
|
+
and not os.path.exists(os.path.join(root, MODUS)),
|
|
88
|
+
"M5 ohne <DOC_PATHS> bindet nicht - eine Bindung, die nichts erlaubt, ist M1")
|
|
89
|
+
p = _binden(root, "M3", "--umfang", "../x/**", "--minuten", "5")
|
|
90
|
+
melde("SONDE", "K201j", p.returncode == 2
|
|
91
|
+
and not os.path.exists(os.path.join(root, MODUS)),
|
|
92
|
+
"Ein Umfang mit '..' wird abgelehnt, und nichts wird geschrieben")
|
|
93
|
+
|
|
94
|
+
_modus_setzen(root, "M3") # gueltig in Zeit und Projekt, aber ohne "pfade"
|
|
95
|
+
melde("GEGENPROBE", "K201k", _frei(root, "docs/x.md"),
|
|
96
|
+
"Eine Bindung ohne Pfade ist kaputt und sperrt nichts (wie bei M2, D-501)")
|
|
97
|
+
_binden(root, "aus")
|
|
98
|
+
melde("GEGENPROBE", "K201l", _frei(root, "docs/x.md"),
|
|
99
|
+
"mandat.py modus aus hebt auch M3 bis M5 auf")
|
|
100
|
+
|
|
101
|
+
mandat = os.path.join(root, ".koolie", "core", "mandat.py")
|
|
102
|
+
melde("GEGENPROBE", "K201n", "glob_muster" not in strict_ausgabe(root),
|
|
103
|
+
"Pruefung 99: gleichlautende Funktionen glob_muster melden nichts")
|
|
104
|
+
schreib(mandat, lies(mandat).replace('raus + "[^/]*", i + 1', 'raus + ".*", i + 1', 1))
|
|
105
|
+
melde("SONDE", "K201m", "glob_muster" in strict_ausgabe(root),
|
|
106
|
+
"Pruefung 99: ein '*', das in mandat.py ueber '/' hinweg trifft, wird gemeldet")
|
|
107
|
+
finally:
|
|
108
|
+
aufraeumen(os.path.dirname(root))
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
buendel(sonden_modusbindung_m3_m5,
|
|
112
|
+
"Die Modusbindung fuer M3 bis M5 an einer claude-code-Installation: Kopie aus dem "
|
|
113
|
+
"Overlay, Globs, Nur-Lese-Pfade, Umfang, Ausbruch, leere Liste, Aufheben")
|