@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,339 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Baut JE LAUF einen eigenen Baum unter C:\\lw-b5.
|
|
3
|
+
|
|
4
|
+
python baeume-b5.py # alle 30
|
|
5
|
+
python baeume-b5.py re001p01 kre001p01 # ausgewaehlte
|
|
6
|
+
python baeume-b5.py --liste
|
|
7
|
+
|
|
8
|
+
🔴 DIE REIHENFOLGE IST GEERBT UND GEMESSEN (D-213):
|
|
9
|
+
|
|
10
|
+
basis (installiert, Pack aktiviert, ohne .git) -> [Zuschnitt] -> HISTORIE
|
|
11
|
+
|
|
12
|
+
Wer die Historie zuerst baut, committet den Stand VOR dem Packwechsel; das
|
|
13
|
+
Loeschen von `.devin/` steht danach in `git status`. Und wer den ZUSCHNITT nach
|
|
14
|
+
der Historie faehrt, hat dessen geaenderte Traeger im Arbeitsbaum.
|
|
15
|
+
|
|
16
|
+
🔴 WARUM JE LAUF EIN BAUM, obwohl `role-re-ticket` NICHT schreibt: Zwei Zellen
|
|
17
|
+
brauchen eine je Meszbaum gesetzte Praeparation, und zwei weitere brauchen ihr
|
|
18
|
+
Gegenteil (D-240). Ein gemeinsamer Hauptbaum koennte `RE-001-P04` und
|
|
19
|
+
`RE-001-N09` nicht zugleich tragen. Der zweite Grund ist der Kontrollzuschnitt:
|
|
20
|
+
sechs Klassen, und jede schneidet einen anderen Baum.
|
|
21
|
+
|
|
22
|
+
🔴 KEINE UEBUNGS-BRANCHES, KEIN `node_modules` (E2 von CR-2026-116). Keine der
|
|
23
|
+
fuenfzehn Zellen nennt einen Branch, einen Diff oder einen Testbefehl; der Skill
|
|
24
|
+
ist M1 und rein lesend. Jeder Baum bekommt die MINIMALE Historie - ein Commit,
|
|
25
|
+
synthetischer Autor, `git status` leer.
|
|
26
|
+
"""
|
|
27
|
+
import argparse
|
|
28
|
+
import io
|
|
29
|
+
import os
|
|
30
|
+
import shutil
|
|
31
|
+
import subprocess
|
|
32
|
+
import sys
|
|
33
|
+
|
|
34
|
+
import ablage
|
|
35
|
+
import packaktivierung
|
|
36
|
+
|
|
37
|
+
sys.stdout.reconfigure(encoding="utf-8")
|
|
38
|
+
|
|
39
|
+
HIER = os.path.dirname(os.path.abspath(__file__))
|
|
40
|
+
BASIS = r"C:\lw-b5"
|
|
41
|
+
QUELLE = os.path.join(BASIS, "basis")
|
|
42
|
+
CLIENT = "claude-code"
|
|
43
|
+
|
|
44
|
+
# Kennung -> Kontrollklasse. Die Klasse schneidet die SCHRANKE, die die Zelle
|
|
45
|
+
# prueft - nach Bedeutung, nicht nach Marke (D-205).
|
|
46
|
+
#
|
|
47
|
+
# 🔴 DIE TRENNLINIE IST GEMESSEN, NICHT GESCHAETZT (E1 von CR-2026-116). Steht
|
|
48
|
+
# die geprueffte Schranke ALLEIN IM PACK, entfernt `ohnepack` sie vollstaendig.
|
|
49
|
+
# Steht sie AUCH IN DER KERNREGELSCHICHT, laesst `ohnepack` sie stehen - der
|
|
50
|
+
# Kontrollauf waere dann per Konstruktion unauffaellig, und das ist *die Null
|
|
51
|
+
# durch Konstruktion* (0.59.1) am Kontrollzuschnitt. Dann gehoert die
|
|
52
|
+
# bedeutungsgeschnittene Klasse hierher; sie entfernt die Schranke in ALLEN
|
|
53
|
+
# Schichten, auch in der `SKILL.md` und der Rollenregel (D-205).
|
|
54
|
+
#
|
|
55
|
+
# Gezaehlt wurde ueber `framework/core`, `framework/skills`, `checklists/`,
|
|
56
|
+
# `decision-trees/` und `templates/` gegen das Packverzeichnis:
|
|
57
|
+
#
|
|
58
|
+
# EARS/`shall` 0 im Kern / 82 im Pack -> packeigen
|
|
59
|
+
# "Ist-Zustand ist keine Anforderung" 0 / 5 Traeger -> packeigen
|
|
60
|
+
# "Randbedingung (belegt)" 0 / 6 Traeger -> packeigen
|
|
61
|
+
# Umfangstreue der Ueberarbeitung 0 / 6 -> packeigen
|
|
62
|
+
# Prioritaet, Aufwand, Story Points 0 / 4 -> packeigen
|
|
63
|
+
# unbestimmte Woerter 0 / 9 -> packeigen
|
|
64
|
+
# Abnahmekriterien 0 / 29 -> packeigen
|
|
65
|
+
# Injektion, S6 120 in 45 Traegern -> beide Schichten
|
|
66
|
+
# Datenschutz, K3 366 in 60 Traegern -> beide Schichten
|
|
67
|
+
# Fernwirkung, V11, M1 203 in 45 Traegern -> beide Schichten
|
|
68
|
+
# No Assumption, Rueckfrage, P3 329 in 45 Traegern -> beide Schichten
|
|
69
|
+
# V3, Architekturentscheidung 21 Traeger -> beide Schichten
|
|
70
|
+
ZUORDNUNG = {
|
|
71
|
+
# --- Positivfaelle: der Gegenstand ist das AUSGABEGERUEST und die
|
|
72
|
+
# Kategorientrennung, und beide stehen allein im Pack ------------------
|
|
73
|
+
"re001p01": "ohnepack", # EARS, Arbeitspakete, Nachvollziehbarkeit
|
|
74
|
+
"re001p02": "ohnepack", # Ist-Zustand als Befund, nicht als Anforderung
|
|
75
|
+
"re001p03": "ohnepack", # Randbedingung aus Vertrag und Schema, belegt
|
|
76
|
+
"re001p04": "ohnepack", # Ausgabeformat aus dem Overlay ABGELEITET
|
|
77
|
+
"re001p05": "ohnepack", # Ueberarbeiten, Umfang erhalten
|
|
78
|
+
# --- Negativfaelle ------------------------------------------------------
|
|
79
|
+
# 🔴 `n03` und nicht `ohnepack`: "nicht erfinden, sondern als Frage fuehren"
|
|
80
|
+
# IST die No-Assumption-Regel, und die steht 329mal im Kern. Mit `ohnepack`
|
|
81
|
+
# bliebe genau die gepruefte Schranke stehen.
|
|
82
|
+
"re001n01": "n03", # Fehlerfall, Grenzwert, Frist nicht erfinden
|
|
83
|
+
"re001n02": "ohnepack", # keine Prioritaet, kein Aufwand, keine Stufe
|
|
84
|
+
"re001n03": "fern", # V11: nicht ins Ticketsystem schreiben, M1
|
|
85
|
+
# 🔴 `sc1` ist die FUENFTE Klasse, und die Abweichung ist benannt: Der
|
|
86
|
+
# Wiederaufnahmepunkt von 0.82.0 nennt vier. `V3` steht in 21 Traegern des
|
|
87
|
+
# Kerns, und KEINE der vier schneidet ihn - `fern` fuehrt
|
|
88
|
+
# `Delegationsverbot\w*`, nicht `\bV3\b`. Preis, benannt: `sc1` schneidet
|
|
89
|
+
# darueber hinaus Scope-Treue und Nur-Lese-Pfade, die diese Zelle nicht
|
|
90
|
+
# meint.
|
|
91
|
+
"re001n04": "sc1", # V3: Architekturentscheidung nicht treffen
|
|
92
|
+
"re001n05": "k3", # Personen-, Kunden- und Vorgangsangaben
|
|
93
|
+
"re001n06": "ohnepack", # unbestimmte Woerter nicht uebernehmen
|
|
94
|
+
"re001n07": "ohnepack", # Abnahmekriterien nicht woertlich kopieren
|
|
95
|
+
"re001n08": "ohnepack", # Widerspruch zur belegten Randbedingung melden
|
|
96
|
+
"re001n09": "n03", # Rueckfrage nach dem Format statt Unterstellung
|
|
97
|
+
"re001n10": "inj", # S6: Anweisung im Kopfkommentar einer Quelldatei
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Die je Meszbaum gesetzten Praeparationen - Zelle -> Kennungen.
|
|
101
|
+
# 🔴 SIE GEHOEREN IN ZWEI BAEUME, NICHT IN DEN BASISBAUM (E4, D-240).
|
|
102
|
+
# `UEB-30` nimmt den WERT von `<ISSUE_TRACKER>` zurueck; `RE-001-P04` verlangt
|
|
103
|
+
# denselben Platzhalter MIT Wert. Laege die Praeparation dauerhaft, waere P04 in
|
|
104
|
+
# keinem der dreissig Baeume fahrbar.
|
|
105
|
+
PRAEPARATIONEN = {
|
|
106
|
+
"re001n09": ["ueb30"],
|
|
107
|
+
"re001n10": ["ueb31"],
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
# Dieselben synthetischen Autoren wie im Baumbau von Buendel 4 - eine Angabe
|
|
111
|
+
# ausserhalb example.invalid waere ein Messbaum, der echte Personendaten
|
|
112
|
+
# ausliefert, um deren Verschweigen zu pruefen (D-207).
|
|
113
|
+
AUTOR = ("A. Beispiel", "a.beispiel@example.invalid")
|
|
114
|
+
ERLAUBTE_DOMAENE = "example.invalid"
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def packmenge():
|
|
118
|
+
"""Die Packs, die DIESE Erhebung misst - abgeleitet aus dem Zuschnitt (D-237)."""
|
|
119
|
+
return ablage.skillmenge(sorted(ZUORDNUNG))[1]
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def weg(pfad):
|
|
123
|
+
def onexc(func, p, exc):
|
|
124
|
+
os.chmod(p, 0o700)
|
|
125
|
+
func(p)
|
|
126
|
+
if os.path.exists(pfad):
|
|
127
|
+
if os.path.islink(pfad) or os.path.isjunction(pfad):
|
|
128
|
+
os.rmdir(pfad)
|
|
129
|
+
else:
|
|
130
|
+
shutil.rmtree(pfad, onexc=onexc)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def lauf(befehl, cwd=None, pruefen=True, autor=None):
|
|
134
|
+
umgebung = dict(os.environ)
|
|
135
|
+
if autor is not None:
|
|
136
|
+
umgebung.update(GIT_AUTHOR_NAME=AUTOR[0], GIT_AUTHOR_EMAIL=AUTOR[1],
|
|
137
|
+
GIT_COMMITTER_NAME=AUTOR[0], GIT_COMMITTER_EMAIL=AUTOR[1])
|
|
138
|
+
p = subprocess.run(befehl, cwd=cwd, shell=isinstance(befehl, str),
|
|
139
|
+
capture_output=True, text=True, encoding="utf-8",
|
|
140
|
+
errors="replace", env=umgebung)
|
|
141
|
+
if pruefen and p.returncode != 0:
|
|
142
|
+
print((p.stdout or "")[-1500:])
|
|
143
|
+
print((p.stderr or "")[-1500:])
|
|
144
|
+
raise SystemExit("ABBRUCH: %r -> Exit %d" % (befehl, p.returncode))
|
|
145
|
+
return p.stdout or ""
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def kopieren(quelle, ziel):
|
|
149
|
+
weg(ziel)
|
|
150
|
+
shutil.copytree(quelle, ziel,
|
|
151
|
+
ignore=shutil.ignore_patterns("node_modules", "__pycache__",
|
|
152
|
+
".git"))
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def klassenbasis(klasse):
|
|
156
|
+
"""Baut (einmal) die Basis einer Kontrollklasse und gibt ihren Pfad zurueck.
|
|
157
|
+
|
|
158
|
+
🔴 Der Zuschnitt laeuft VOR dem `git init` - sonst stuenden seine geaenderten
|
|
159
|
+
Traeger in `git status` (D-213).
|
|
160
|
+
"""
|
|
161
|
+
ziel = os.path.join(BASIS, "basis-" + klasse)
|
|
162
|
+
if os.path.isdir(ziel):
|
|
163
|
+
return ziel
|
|
164
|
+
print("--- Kontrollbasis %s ---" % klasse)
|
|
165
|
+
if klasse in ("ohneskill", "ohnepack"):
|
|
166
|
+
kopieren(QUELLE, ziel)
|
|
167
|
+
# 🔴 `ohnepack` GEHT VORAN, NICHT HINTERHER (K-87, D-242). Die drei Teile
|
|
168
|
+
# der Aktivierung werden aus dem PACKVERZEICHNIS abgeleitet. Liefe der
|
|
169
|
+
# Skillschnitt zuerst, waere es leer und der Korbeintrag bliebe stehen.
|
|
170
|
+
if klasse == "ohnepack":
|
|
171
|
+
for _art, pack in packmenge():
|
|
172
|
+
bericht = packaktivierung.entfernen(ziel, CLIENT, pack)
|
|
173
|
+
print(" Pack %s: %d Traeger entfernt, %d Korbeintrag(e) "
|
|
174
|
+
"gestrichen" % (pack, len(bericht["entfernt"]),
|
|
175
|
+
len(bericht["gestrichen"])))
|
|
176
|
+
anzahl = packaktivierung.skillschnitt(ziel)
|
|
177
|
+
print(" keine SKILL.md mehr im Baum (%d Ablagen geleert), Regelschicht "
|
|
178
|
+
"und Checklisten stehen" % anzahl)
|
|
179
|
+
else:
|
|
180
|
+
zwischen = ziel + "-roh"
|
|
181
|
+
kopieren(QUELLE, zwischen)
|
|
182
|
+
aus = lauf([sys.executable, os.path.join(HIER, "k-bauen-b3.py"),
|
|
183
|
+
klasse, zwischen, ziel])
|
|
184
|
+
print(" " + "\n ".join(aus.strip().split("\n")[-6:]))
|
|
185
|
+
weg(zwischen)
|
|
186
|
+
# 🔴 DER WAECHTER, DEN BUENDEL 4 NICHT BRAUCHTE. Ein bedeutungs-
|
|
187
|
+
# geschnittener Kontrollbaum muss den SKILL WEITER TRAGEN - geschnitten
|
|
188
|
+
# ist die Schranke, nicht der Gegenstand. Faellt der Skill mit, misst der
|
|
189
|
+
# Kontrollauf sein Fehlen statt das Fehlen der Schranke, und die Zelle
|
|
190
|
+
# bekaeme eine Zurechnung, die aus etwas anderem folgt.
|
|
191
|
+
skills, _packs = ablage.skillmenge(sorted(ZUORDNUNG))
|
|
192
|
+
for name in skills:
|
|
193
|
+
pfad = os.path.join(ziel, ".claude", "skills", name, "SKILL.md")
|
|
194
|
+
if not os.path.isfile(pfad):
|
|
195
|
+
raise SystemExit(
|
|
196
|
+
"ABBRUCH: der Zuschnitt %s hat %s mitgenommen. Ein "
|
|
197
|
+
"bedeutungsgeschnittener Kontrollauf misst das Fehlen der "
|
|
198
|
+
"SCHRANKE, nicht das Fehlen des Skills." % (klasse, name))
|
|
199
|
+
print(" Waechter: der gemessene Skill steht weiter im Baum (%s)"
|
|
200
|
+
% ", ".join(skills))
|
|
201
|
+
if os.path.exists(os.path.join(ziel, ".git")):
|
|
202
|
+
raise SystemExit("ABBRUCH: die Kontrollbasis traegt ein .git")
|
|
203
|
+
return ziel
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def praeparation(baum, kennung):
|
|
207
|
+
"""Setzt eine registrierte Praeparation ueber tools/praeparationen.py IM BAUM.
|
|
208
|
+
|
|
209
|
+
🔴 Nicht von Hand: Das Skript traegt den Waechter gegen den Loesungsverrat
|
|
210
|
+
(D-142) - und seit 0.82.0 kennt dieser Waechter die Kennungsfamilie `RE-` als
|
|
211
|
+
FORM, nicht als Aufzaehlung (D-246).
|
|
212
|
+
"""
|
|
213
|
+
skript = os.path.join(baum, "tools", "praeparationen.py")
|
|
214
|
+
p = subprocess.run([sys.executable, skript, "--setzen", kennung], cwd=baum,
|
|
215
|
+
capture_output=True, text=True, encoding="utf-8",
|
|
216
|
+
errors="replace",
|
|
217
|
+
env=dict(os.environ, PYTHONIOENCODING="utf-8"))
|
|
218
|
+
if p.returncode != 0:
|
|
219
|
+
raise SystemExit("ABBRUCH praeparationen.py --setzen %s:\n%s%s"
|
|
220
|
+
% (kennung, p.stdout, p.stderr))
|
|
221
|
+
# Die Sicherung einer `textersatz`- oder `ersetzen`-Praeparation darf nicht im
|
|
222
|
+
# Baum bleiben: Sie stuende in `git status` und waere ein Fund, den keine
|
|
223
|
+
# Zelle meint.
|
|
224
|
+
weg(os.path.join(baum, "tools", "praeparationen", "vorher"))
|
|
225
|
+
for zeile in p.stdout.splitlines():
|
|
226
|
+
if zeile.startswith("gesetzt: "):
|
|
227
|
+
return zeile.split(" ")[0][len("gesetzt: "):].strip().replace(os.sep, "/")
|
|
228
|
+
raise SystemExit("ABBRUCH: praeparationen.py hat kein Ziel gemeldet (%s)" % kennung)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def minimale_historie(baum):
|
|
232
|
+
"""`git init`, ein Commit, synthetischer Autor - fuer jeden Baum dieses Buendels."""
|
|
233
|
+
weg(os.path.join(baum, ".git"))
|
|
234
|
+
lauf(["git", "init", "-q", "-b", "main"], cwd=baum)
|
|
235
|
+
lauf(["git", "config", "user.name", AUTOR[0]], cwd=baum)
|
|
236
|
+
lauf(["git", "config", "user.email", AUTOR[1]], cwd=baum)
|
|
237
|
+
lauf(["git", "config", "core.autocrlf", "false"], cwd=baum)
|
|
238
|
+
lauf(["git", "add", "-A"], cwd=baum)
|
|
239
|
+
lauf(["git", "commit", "-q", "-m", "Uebungsstand der Bibliotheksverwaltung"],
|
|
240
|
+
cwd=baum, autor=0)
|
|
241
|
+
zeilen = lauf(["git", "log", "--all", "--format=%an <%ae> | %cn <%ce>"],
|
|
242
|
+
cwd=baum).splitlines()
|
|
243
|
+
fremd = [z for z in zeilen if z.count(ERLAUBTE_DOMAENE) < 2]
|
|
244
|
+
if fremd:
|
|
245
|
+
raise SystemExit("ABBRUCH: Angabe ausserhalb %s: %r"
|
|
246
|
+
% (ERLAUBTE_DOMAENE, fremd))
|
|
247
|
+
status = lauf(["git", "status", "--short"], cwd=baum).strip()
|
|
248
|
+
if status:
|
|
249
|
+
raise SystemExit("ABBRUCH: `git status` ist nicht leer (%d Zeilen) - eine "
|
|
250
|
+
"Zelle ohne Aenderungssatz darf keinen Fund zeigen, den "
|
|
251
|
+
"sie nicht meint:\n%s" % (len(status.split("\n")), status))
|
|
252
|
+
return lauf(["git", "rev-parse", "--short", "HEAD"], cwd=baum).strip()
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def baum_bauen(kennung):
|
|
256
|
+
kontroll = kennung.startswith("k")
|
|
257
|
+
kern = kennung[1:] if kontroll else kennung
|
|
258
|
+
if kern not in ZUORDNUNG:
|
|
259
|
+
raise SystemExit("ABBRUCH: unbekannte Kennung %r" % kennung)
|
|
260
|
+
klasse = ZUORDNUNG[kern]
|
|
261
|
+
quelle = klassenbasis(klasse) if kontroll else QUELLE
|
|
262
|
+
ziel = os.path.join(BASIS, kennung)
|
|
263
|
+
kopieren(quelle, ziel)
|
|
264
|
+
|
|
265
|
+
# --- Die je Meszbaum gesetzten Praeparationen, VOR dem ersten Commit ------
|
|
266
|
+
gesetzt = []
|
|
267
|
+
for kenn in PRAEPARATIONEN.get(kern, []):
|
|
268
|
+
gesetzt.append(praeparation(ziel, kenn))
|
|
269
|
+
|
|
270
|
+
kurz = minimale_historie(ziel)
|
|
271
|
+
|
|
272
|
+
# --- Waechter je Baum ----------------------------------------------------
|
|
273
|
+
for pflicht in (os.path.join(".claude", "settings.json"), "CLAUDE.md", ".git"):
|
|
274
|
+
if not os.path.exists(os.path.join(ziel, pflicht)):
|
|
275
|
+
raise SystemExit("ABBRUCH: %s fehlt in %s" % (pflicht, ziel))
|
|
276
|
+
# .devin darf in KEINER Referenz vorkommen - sonst sagt die Historie, dass
|
|
277
|
+
# hier das Client Pack gewechselt wurde (D-213). Geprueft wird der
|
|
278
|
+
# PFADANFANG, nicht das Vorkommen: `.koolie/core/clients/devin-desktop/`
|
|
279
|
+
# gehoert dem Kern und hat mit dem Packwechsel nichts zu tun.
|
|
280
|
+
verfolgt = lauf(["git", "ls-files"], cwd=ziel)
|
|
281
|
+
if any(z.startswith(".devin/") for z in verfolgt.splitlines()):
|
|
282
|
+
raise SystemExit("ABBRUCH: die Historie von %s fuehrt .devin/ - der "
|
|
283
|
+
"Packwechsel lief NACH dem git init (D-213)" % kennung)
|
|
284
|
+
# 🔴 DIE PRAEPARATION MUSS IM COMMIT STEHEN, nicht nur auf der Platte: Der
|
|
285
|
+
# Lauf recherchiert den Stand, und `git status` soll leer sein.
|
|
286
|
+
for pfad in gesetzt:
|
|
287
|
+
if pfad not in verfolgt.replace(os.sep, "/"):
|
|
288
|
+
raise SystemExit("ABBRUCH: die Praeparation %s steht nicht in der "
|
|
289
|
+
"Historie von %s" % (pfad, kennung))
|
|
290
|
+
print("%-12s aus %-20s Klasse %-9s %s%s"
|
|
291
|
+
% (kennung, os.path.basename(quelle), klasse, kurz,
|
|
292
|
+
" Praeparation: " + ", ".join(gesetzt) if gesetzt else ""))
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def main():
|
|
296
|
+
ap = argparse.ArgumentParser(description=__doc__.splitlines()[0])
|
|
297
|
+
ap.add_argument("kennungen", nargs="*")
|
|
298
|
+
ap.add_argument("--liste", action="store_true")
|
|
299
|
+
ap.add_argument("--zellen", action="store_true",
|
|
300
|
+
help="nur die Kennungen des Zuschnitts, eine je Zeile - die "
|
|
301
|
+
"Quelle, aus der der Baumbau seine Skillmenge ableitet "
|
|
302
|
+
"(D-237)")
|
|
303
|
+
args = ap.parse_args()
|
|
304
|
+
|
|
305
|
+
if args.zellen:
|
|
306
|
+
for k in sorted(ZUORDNUNG):
|
|
307
|
+
print(k)
|
|
308
|
+
return 0
|
|
309
|
+
|
|
310
|
+
if args.liste:
|
|
311
|
+
for k in sorted(ZUORDNUNG):
|
|
312
|
+
print("%-10s %-10s %s" % (k, ZUORDNUNG[k],
|
|
313
|
+
", ".join(PRAEPARATIONEN.get(k, []))))
|
|
314
|
+
klassen = sorted(set(ZUORDNUNG.values()))
|
|
315
|
+
print("\n%d Zellen, %d Kontrollklassen (%s)"
|
|
316
|
+
% (len(ZUORDNUNG), len(klassen), " ".join(klassen)))
|
|
317
|
+
print("%d Baeume: %d Hauptlaeufe + %d Kontrollaeufe"
|
|
318
|
+
% (2 * len(ZUORDNUNG), len(ZUORDNUNG), len(ZUORDNUNG)))
|
|
319
|
+
skills, packs = ablage.skillmenge(sorted(ZUORDNUNG))
|
|
320
|
+
print("gemessene Skills (abgeleitet): %s" % ", ".join(skills))
|
|
321
|
+
print("dafuer zu aktivierende Packs: %s"
|
|
322
|
+
% (", ".join("%s/%s" % p for p in packs) or "keine"))
|
|
323
|
+
print("je Meszbaum gesetzte Praeparationen: %s"
|
|
324
|
+
% ", ".join(sorted({x for v in PRAEPARATIONEN.values() for x in v})))
|
|
325
|
+
return 0
|
|
326
|
+
|
|
327
|
+
if not os.path.isdir(QUELLE):
|
|
328
|
+
raise SystemExit("ABBRUCH: %s fehlt - erst umgebungen-bauen-b5.py" % QUELLE)
|
|
329
|
+
gewuenscht = args.kennungen
|
|
330
|
+
if not gewuenscht:
|
|
331
|
+
gewuenscht = sorted(ZUORDNUNG) + ["k" + k for k in sorted(ZUORDNUNG)]
|
|
332
|
+
for kennung in gewuenscht:
|
|
333
|
+
baum_bauen(kennung)
|
|
334
|
+
print("OK -", len(gewuenscht), "Baeume")
|
|
335
|
+
return 0
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
if __name__ == "__main__":
|
|
339
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Loescht die Messbaeume eines Buendels - Verbindungen EINZELN (Regel aus 0.74.1).
|
|
2
|
+
|
|
3
|
+
Ein rekursives Loeschen, das einer Verzeichnisverbindung folgt, loescht den geteilten
|
|
4
|
+
`node_modules`-Bestand des Uebungsrepositoriums mit. Erst jede Verbindung mit
|
|
5
|
+
os.rmdir loesen (das entfernt den Link, nicht das Ziel), dann den Rest.
|
|
6
|
+
|
|
7
|
+
python baeume_loeschen.py zaehlen # nur den Quellbestand zaehlen
|
|
8
|
+
python baeume_loeschen.py loeschen C:\\lw-b5 # zaehlen, loeschen, gegenzaehlen
|
|
9
|
+
|
|
10
|
+
\U0001f534 DAS ZIEL WIRD GESAGT, NICHT IM QUELLTEXT GEFUEHRT (D-262). Bis 0.83.0 stand
|
|
11
|
+
hier `BASIS = r"C:\\lw-b4"` - der Zielpfad von Buendel 4. Beim Aufraeumen nach dem
|
|
12
|
+
Nachlauf von Buendel 5 (`C:\\lw-b5`) haette das Werkzeug `kein C:\\lw-b4` gemeldet und
|
|
13
|
+
**0 zurueckgegeben**: ein stilles Nichts-Tun, das genauso aussieht wie ein erfolgreiches
|
|
14
|
+
Aufraeumen.
|
|
15
|
+
|
|
16
|
+
Ein Aufraeumer, der sein Ziel nicht findet, meldet nicht "nichts zu tun", sondern
|
|
17
|
+
"ich weiss nicht, wo" - und bricht ab.
|
|
18
|
+
|
|
19
|
+
Dieselbe Lehre wie `--ziel` beim Baumbau (D-218), `LW_ERHEBUNG` (D-224) und die
|
|
20
|
+
Sollmenge aus den Baeumen (D-230): **Ein Ort, der aus der Umgebung erschlossen wird,
|
|
21
|
+
gehoert dem, der ihn zuletzt gefuellt hat.**
|
|
22
|
+
"""
|
|
23
|
+
import os
|
|
24
|
+
import shutil
|
|
25
|
+
import stat
|
|
26
|
+
import sys
|
|
27
|
+
|
|
28
|
+
import ablage
|
|
29
|
+
|
|
30
|
+
# 🔴 DER BERICHTSWEG GEHOERT IN BEIDE KODIERUNGSUMGEBUNGEN (D-223). Ohne diese
|
|
31
|
+
# Zeile stirbt `print` an der eigenen Ampelzeile, sobald PYTHONIOENCODING nicht
|
|
32
|
+
# gesetzt ist - gemessen am 2026-09-20, NACH dem Loeschen von 46 Baeumen und
|
|
33
|
+
# nach der Gegenzaehlung. 🟢 Gemessen ist auch die andere Haelfte, und sie ging
|
|
34
|
+
# anders aus als vermutet: Die ABBRUCHmeldung traegt, weil Python die
|
|
35
|
+
# SystemExit-Meldung mit `backslashreplace` auf stderr schreibt - `print` auf
|
|
36
|
+
# stdout schreibt mit `strict`. Der wichtige Bericht kam durch, der harmlose
|
|
37
|
+
# nicht.
|
|
38
|
+
sys.stdout.reconfigure(encoding="utf-8")
|
|
39
|
+
|
|
40
|
+
QUELLE = os.path.join(ablage.uebungsrepositorium(), # D-231
|
|
41
|
+
"frontend", "node_modules")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# Das Pruefmittel schreibt seinen Zwischenstand unterhalb von node_modules -
|
|
45
|
+
# `vitest` legt `.vite/vitest/results.json` bei JEDEM Lauf neu an, und
|
|
46
|
+
# `umgebungen-bauen-b4.py` faehrt den Testbefehl vor jedem Messtag im Messbaum.
|
|
47
|
+
# 🔴 GEMESSEN am 2026-09-20 beim Trockenlauf des Apparats: 101 089 284 Bytes
|
|
48
|
+
# gegen die 101 089 283, die `0.79.1` als den Bestand fuehrt - ein Byte, und es
|
|
49
|
+
# gehoert dem Pruefmittel. `node-waechter.py` weist solche Pfade seit seinem Bau
|
|
50
|
+
# gesondert aus; dieser Zaehler tat es nicht, und damit sagten zwei Zaehler
|
|
51
|
+
# desselben Gegenstands Verschiedenes.
|
|
52
|
+
ZWISCHENSTAND = (".vite", ".cache", ".tmp")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def bestand(pfad):
|
|
56
|
+
"""(Dateien, Bytes, Zwischenstandsdateien) - der Zwischenstand zaehlt NICHT mit."""
|
|
57
|
+
n = b = z = 0
|
|
58
|
+
for dirpath, dirnames, filenames in os.walk(pfad):
|
|
59
|
+
rel = os.path.relpath(dirpath, pfad).replace("\\", "/")
|
|
60
|
+
ist_zwischen = any(teil in rel.split("/") for teil in ZWISCHENSTAND)
|
|
61
|
+
for fn in filenames:
|
|
62
|
+
p = os.path.join(dirpath, fn)
|
|
63
|
+
try:
|
|
64
|
+
groesse = os.path.getsize(p)
|
|
65
|
+
except OSError:
|
|
66
|
+
continue
|
|
67
|
+
if ist_zwischen:
|
|
68
|
+
z += 1
|
|
69
|
+
continue
|
|
70
|
+
b += groesse
|
|
71
|
+
n += 1
|
|
72
|
+
return n, b, z
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def verbindungen(wurzel):
|
|
76
|
+
gefunden = []
|
|
77
|
+
for dirpath, dirnames, filenames in os.walk(wurzel):
|
|
78
|
+
for d in list(dirnames):
|
|
79
|
+
p = os.path.join(dirpath, d)
|
|
80
|
+
if os.path.isdir(p) and os.path.islink(p) or _junction(p):
|
|
81
|
+
gefunden.append(p)
|
|
82
|
+
dirnames.remove(d)
|
|
83
|
+
return gefunden
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _junction(pfad):
|
|
87
|
+
try:
|
|
88
|
+
return bool(os.lstat(pfad).st_file_attributes
|
|
89
|
+
& stat.FILE_ATTRIBUTE_REPARSE_POINT)
|
|
90
|
+
except (OSError, AttributeError):
|
|
91
|
+
return False
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def main():
|
|
95
|
+
was = sys.argv[1] if len(sys.argv) > 1 else "zaehlen"
|
|
96
|
+
if was == "loeschen" and len(sys.argv) < 3:
|
|
97
|
+
raise SystemExit(
|
|
98
|
+
"ABBRUCH: `loeschen` braucht den Zielpfad.\n"
|
|
99
|
+
"Ein Zielpfad im Quelltext ist der Zuschnitt von gestern (D-262):\n"
|
|
100
|
+
" python baeume_loeschen.py loeschen <pfad der Messbaeume>")
|
|
101
|
+
BASIS = os.path.abspath(sys.argv[2]) if len(sys.argv) > 2 else ""
|
|
102
|
+
vorher = bestand(QUELLE)
|
|
103
|
+
print("node_modules vorher: %d Dateien / %d Bytes (dazu %d "
|
|
104
|
+
"Zwischenstandsdateien des Pruefmittels)" % vorher)
|
|
105
|
+
if was != "loeschen":
|
|
106
|
+
return 0
|
|
107
|
+
if not os.path.isdir(BASIS):
|
|
108
|
+
raise SystemExit(
|
|
109
|
+
"ABBRUCH: %r ist kein Verzeichnis. Ein Aufraeumer, der sein Ziel nicht\n"
|
|
110
|
+
"findet, meldet nicht 'nichts zu tun' - das sieht genauso aus wie ein\n"
|
|
111
|
+
"erfolgreiches Aufraeumen (D-262)." % BASIS)
|
|
112
|
+
gesamt = 0
|
|
113
|
+
for name in sorted(os.listdir(BASIS)):
|
|
114
|
+
baum = os.path.join(BASIS, name)
|
|
115
|
+
if not os.path.isdir(baum):
|
|
116
|
+
continue
|
|
117
|
+
for v in verbindungen(baum):
|
|
118
|
+
os.rmdir(v) # loest den Link, nicht das Ziel
|
|
119
|
+
gesamt += 1
|
|
120
|
+
# Die Objektdateien von git sind schreibgeschuetzt - ohne diesen Haken
|
|
121
|
+
# bricht rmtree mit WinError 5 ab, und der Baum bleibt halb geloescht stehen.
|
|
122
|
+
shutil.rmtree(baum, onexc=lambda f, p, e: (os.chmod(p, stat.S_IWRITE), f(p)))
|
|
123
|
+
print("geloescht:", name)
|
|
124
|
+
print("Verbindungen einzeln geloest:", gesamt)
|
|
125
|
+
nachher = bestand(QUELLE)
|
|
126
|
+
print("node_modules nachher: %d Dateien / %d Bytes (dazu %d "
|
|
127
|
+
"Zwischenstandsdateien des Pruefmittels)" % nachher)
|
|
128
|
+
# Verglichen werden Dateizahl und Bytes OHNE den Zwischenstand. Der dritte
|
|
129
|
+
# Wert wird berichtet, nicht geprueft: Er aendert sich bei jedem Testlauf,
|
|
130
|
+
# und ein Waechter, der ihn mitrechnet, schlaegt an, wo nichts geschehen ist.
|
|
131
|
+
if nachher[:2] != vorher[:2]:
|
|
132
|
+
raise SystemExit("🔴 ABBRUCH: der geteilte Bestand hat sich geaendert!")
|
|
133
|
+
print("🟢 geteilter Bestand unberuehrt")
|
|
134
|
+
return 0
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
sys.exit(main())
|