feat(programs): start the Environmental Knowledge Program — domains, not architecture
The architecture is stable; from here the value comes from DOMAINS, not more software. Phase B is organized as law-first Domain Knowledge Programs, each delivering the same production line: Corpus -> Obligations -> Capabilities -> Transition Patterns -> Playbooks -> Reference Scenarios -> Completeness. No new runtime framework (Freeze v1.0). - knowledge/programs/README.md: reusable Domain Program blueprint (production line, per-stage ownership, law-first ordering, planned programs Environmental/Automotive/IEC62443/Functional-Safety). - knowledge/programs/environmental.yaml: the Environmental domain as DATA. Law-first: B1 Environmental Regulatory Corpus (water/chemicals/emissions/energy/waste/product-responsibility — law + obligations only) -> B2 Capability Model -> B3 Transition Patterns (ISO 14001 -> corpus, built LAST). ISO 14001 is a source state, NOT the domain. - Ownership handoffs: B1 -> Legal Knowledge, B2 -> Compliance Execution, B3+/playbooks/reference -> Reasoning. Coordinate via the board; no session builds another's artifacts. - reference suite: "Domain Knowledge Programs" section renders the program stages + a measurable Completeness baseline (6 areas, 0 assessed today) that flips automatically as stages land. - ADR-008: from architecture to domains; Phase B as law-first programs; architecture frozen. 6 program-contract tests (law-first order + ownership pinned), check-loc 0. Knowledge data + ADR + reference harness = non-runtime -> no deploy (ADR-001). No new module, no runtime change. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -139,3 +139,38 @@ def completeness_section() -> None:
|
||||
("Begründete Ausschlüsse (Korpus/Anwendbarkeit)", "PASS", "%d Ausschlüsse, alle mit Grund" % len(rep.exclusions)),
|
||||
("Fortschritts-Doku je Domäne", "PASS", "Environmental offen→validated bei Korpus-Landung"),
|
||||
])
|
||||
|
||||
|
||||
def domain_programs_section(base_dir) -> None:
|
||||
"""Render the Domain Knowledge Programs section (kept here so generate.py stays under the LOC budget)."""
|
||||
import os
|
||||
import yaml
|
||||
from compliance.completeness import assess_completeness
|
||||
|
||||
pdir = os.path.join(base_dir, "..", "knowledge", "programs")
|
||||
progs = [yaml.safe_load(open(os.path.join(pdir, f), encoding="utf-8"))
|
||||
for f in sorted(os.listdir(pdir)) if f.endswith(".yaml")]
|
||||
w("## Domain Knowledge Programs — ab jetzt Domänen, nicht Architektur")
|
||||
w("")
|
||||
w('_Die Runtime-Architektur ist eingefroren. Eine neue Domäne = Daten + Wissen, die jede Sicht automatisch erweitern. Produktionsstraße: Corpus→Obligations→Capabilities→Transition→Playbooks→Reference→Completeness. **Law-first: Recht → Pflichten → Capabilities → Managementsystem → Delta.**_')
|
||||
w("")
|
||||
for p in progs:
|
||||
w("**%s** — _%s_ (status: `%s`)" % (p["name"], p["customer_question"], p["status"]))
|
||||
w("")
|
||||
w("| Stufe | Artefakt | Owner | Status |")
|
||||
w("|---|---|---|---|")
|
||||
for s in p.get("stages", []):
|
||||
w("| %s | %s | %s | **%s** |" % (s["id"], s["name"], s["owner"], s["status"]))
|
||||
w("")
|
||||
areas = next((s.get("areas", []) for s in p.get("stages", []) if s.get("id") == "B1"), [])
|
||||
if areas:
|
||||
rep = assess_completeness(identified_regulations=areas, corpus_status={}) # all unknown -> open baseline
|
||||
w("- **Baseline (Completeness):** %s — die 6 Bereiche: %s" % (rep.completeness_summary, ", ".join(areas)))
|
||||
w("")
|
||||
w("_Jedes Programm liefert dieselben Artefakte; Status `open/blocked` kippt automatisch, wenn die Stufen landen — Reference Suite + Completeness dokumentieren den Fortschritt je Domäne._")
|
||||
w("")
|
||||
coverage_table([
|
||||
("Domain Program Blueprint (wiederverwendbar)", "PASS", "Corpus→…→Completeness, law-first, Ownership je Stufe"),
|
||||
("Environmental Program (Daten)", "PASS", "B1@Legal-KG · B2@Execution · B3@Reasoning (blocked)"),
|
||||
("Phase B = Domänen, keine Architektur", "PASS", "kein neues Runtime-Framework (Freeze, ADR-008)"),
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user