Spaces:
Paused
Paused
Download scripts/update_dissertation_results.py from ThomasHeisig/Brain-5D-Space: direct link, hf CLI and curl.
- Browser
- Download file 8.03 kB
-
https://huggingface.co/spaces/ThomasHeisig/Brain-5D-Space/resolve/main/scripts/update_dissertation_results.py
- Command line
-
hf download hf://spaces/ThomasHeisig/Brain-5D-Space/scripts/update_dissertation_results.py
-
curl -L -o update_dissertation_results.py https://huggingface.co/spaces/ThomasHeisig/Brain-5D-Space/resolve/main/scripts/update_dissertation_results.py
8.03 kB
| """Append verified Brain-5D experiment results to the dissertation basis DOCX.""" | |
| from __future__ import annotations | |
| import json | |
| from pathlib import Path | |
| from statistics import fmean | |
| import yaml | |
| from docx import Document | |
| ROOT = Path(__file__).resolve().parents[1] | |
| DOCX = ROOT / "docs/06-research/KI_Die_geliehene_Intelligenz_Kontrollverlust_Embodiment_Dissertationsbasis.docx" | |
| RESEARCH = ROOT / "research" | |
| MARKER = "Empirischer Brain-5D-Nachtrag" | |
| def read_json(path: Path) -> dict: | |
| return json.loads(path.read_text(encoding="utf-8")) | |
| def runs(experiment_id: str) -> list[dict]: | |
| return read_json(RESEARCH / "experiments" / experiment_id / "DATA" / "runs.json") | |
| def main() -> None: | |
| document = Document(DOCX) | |
| if any(MARKER in paragraph.text for paragraph in document.paragraphs): | |
| print(f"{DOCX} already contains {MARKER}") | |
| return | |
| questions = yaml.safe_load( | |
| (RESEARCH / "registry/questions.yaml").read_text(encoding="utf-8") | |
| ) | |
| document.add_page_break() | |
| document.add_heading(MARKER, level=1) | |
| document.add_paragraph( | |
| "Stand: 7. September 2026. Dieser Nachtrag dokumentiert technische Brain-5D-Läufe " | |
| "aus dem Forschungsregister. Die Angaben wurden aus Manifesten, deterministischen " | |
| "Statistiken und DATA-Artefakten übernommen. Ein abgeschlossener Lauf ist keine " | |
| "automatische wissenschaftliche Evidenz; Dirty-Tree- und Human-Review-Gates bleiben " | |
| "maßgeblich." | |
| ) | |
| document.add_heading("Ergebnisübersicht", level=2) | |
| table = document.add_table(rows=1, cols=6) | |
| table.style = "Table Grid" | |
| headers = ["Forschungsfrage", "Experiment", "Modus", "Umfang", "Technisches Ergebnis", "Evidenzstatus"] | |
| for cell, text in zip(table.rows[0].cells, headers): | |
| cell.text = text | |
| rows = [ | |
| ( | |
| "RQ-SNN-001", | |
| "EXP-SNN-001-R2", | |
| "CONFIRMATORY", | |
| "20 Läufe; 10 Seeds; 100.000 Ticks", | |
| "20/20 Stabilitätspässe; 0 Laufzeitfehler; Kontroll- und Tonic-Drive-Bedingung vollständig.", | |
| "Review pending; Dirty Source Tree; kontrollierter Runner, keine Generalisierung auf den Vollkern.", | |
| ), | |
| ( | |
| "RQ-REPL-001", | |
| "EXP-REPL-0001-R1", | |
| "REPLICATION", | |
| "40 Läufe; 20 Seeds; 256 Ticks", | |
| "Recurrence off/on vollständig ausgeführt; 0 Laufzeitfehler; Effektrichtung über alle Seeds konsistent.", | |
| "Review pending; Dirty Source Tree; deskriptiv, kein registrierter Inferenztest.", | |
| ), | |
| ( | |
| "RQ-LIFE-001", | |
| "EXP-LIFE-0001-R1", | |
| "EXPLORATORY", | |
| "20 Läufe; 20 Seeds; drei Tasks", | |
| "Alle drei Tasks in allen Läufen erfolgreich; retained success fraction = 1.0.", | |
| "Vorläuferscreen; kein Beleg für Catastrophic-Forgotten im Shared-Network-Sinn.", | |
| ), | |
| ( | |
| "RQ-SUITE-001", | |
| "EXP-GEN-0033-R1", | |
| "EXPLORATORY", | |
| "57 Teilruns; 3 Seeds; bis 100.000 Ticks", | |
| "Science-Suite vollständig; Tickvertrag erfüllt; 0 Laufzeitfehler; DATA und Statistik vorhanden.", | |
| "Diagnostik-/Omnibuslauf; keine Primärevidenz für die enthaltenen Fachfragen.", | |
| ), | |
| ] | |
| for row in rows: | |
| cells = table.add_row().cells | |
| for cell, text in zip(cells, row): | |
| cell.text = text | |
| document.add_heading("RQ-SNN-001: Langzeitstabilität", level=2) | |
| snn = runs("EXP-SNN-001-R2") | |
| tonic = [item for item in snn if item["condition"] == "tonic_drive"] | |
| control = [item for item in snn if item["condition"] == "no_input_control"] | |
| document.add_paragraph( | |
| f"Der eingefrorene Runner absolvierte {len(snn)} Läufe mit jeweils " | |
| f"{snn[0]['metrics']['ticks_executed']:,} Ticks. Alle {len(snn)} Läufe erfüllten " | |
| "die registrierten Kriterien für finite Zustände und unveränderte Topologie. " | |
| f"Unter Tonic Drive lag die mittlere Aktivität bei " | |
| f"{fmean(item['metrics']['post_burn_in_mean_spikes'] for item in tonic):.0f} " | |
| "Spikes pro 1.000-Tick-Fenster; CV und relative Drift lagen jeweils bei 0.0. " | |
| f"Die No-Input-Kontrolle blieb mit {len(control)} von {len(control)} Pässen ruhig." | |
| ) | |
| document.add_paragraph( | |
| "Interpretationsgrenze: Der Runner verwendet ein kontrolliertes Kleinnetzwerk. " | |
| "Das Ergebnis stützt die technische Stabilität dieses Versuchsaufbaus, nicht " | |
| "automatisch die Stabilität des vollständigen produktiven Brain-5D-Netzes." | |
| ) | |
| document.add_heading("RQ-REPL-001: Unabhängige Replikation", level=2) | |
| repl = runs("EXP-REPL-0001-R1") | |
| off = [item for item in repl if item["condition"] == "recurrence_off"] | |
| on = [item for item in repl if item["condition"] == "recurrence_on"] | |
| document.add_paragraph( | |
| f"Die Replikation umfasst {len(repl)} Läufe über 20 unabhängige Seeds und " | |
| "beide Rekurrenzarme. Ohne Rekurrenz wurden im Mittel 3 Spikes, 2 synaptische " | |
| "Ereignisse und Rekurrenzereignisse 0 beobachtet. Mit Rekurrenz wurden im Mittel " | |
| "33 Spikes, 33 synaptische Ereignisse, 10 Rekurrenzereignisse und eine " | |
| "Propagationstiefe von 61 beobachtet. Die Werte waren über die Seeds identisch " | |
| f"({len(off)} Kontroll- und {len(on)} Treatmentläufe; keine Runtime-Fehler)." | |
| ) | |
| document.add_paragraph( | |
| "Die Differenzen sind deskriptive Ergebnisse. Der Lauf enthält keinen registrierten " | |
| "Inferenztest und wurde aus einem Dirty Source Tree erzeugt; deshalb wird keine " | |
| "allgemeine Kausal- oder Signifikanzbehauptung in die Dissertation übernommen." | |
| ) | |
| document.add_heading("RQ-LIFE-001: Learning-Interference-Screen", level=2) | |
| life = runs("EXP-LIFE-0001-R1") | |
| successes = [item["metrics"]["task_successes"] for item in life] | |
| document.add_paragraph( | |
| f"Der explorative Vorläuferscreen umfasst {len(life)} Seeds. In jedem Lauf waren " | |
| f"alle drei Task-Ergebnisse positiv ({sum(all(item) for item in successes)}/{len(successes)} " | |
| "Läufe; retained success fraction = 1.0). Der Reset transienten neuronalen " | |
| "Zustands zwischen unabhängigen Tasks wurde protokollspezifisch ergänzt, während " | |
| "gelernte Gewichte erhalten blieben." | |
| ) | |
| document.add_paragraph( | |
| "Dieser Screen prüft unabhängige Task-Instanzen und ist ausdrücklich kein Nachweis " | |
| "gegen Catastrophic Forgetting in einem gemeinsamen sequenziellen Netzwerk." | |
| ) | |
| document.add_heading("RQ-SUITE-001: Science-Suite-Diagnostik", level=2) | |
| suite_manifest = read_json(RESEARCH / "experiments" / "EXP-GEN-0033-R1" / "manifest.json") | |
| document.add_paragraph( | |
| f"Die vollständige Suite erzeugte {suite_manifest['results']['run_count']} Teilruns " | |
| "unter gemeinsamer Provenienz. Der Tickvertrag bis 100.000 Ticks wurde erfüllt; " | |
| "Laufzeitfehler traten nicht auf. Die Suite bleibt eine technische Omnibus-Diagnostik " | |
| "und ersetzt keine spezifischen, präregistrierten Fachprotokolle." | |
| ) | |
| document.add_heading("Wissenschaftlicher Gesamtstatus", level=2) | |
| document.add_paragraph( | |
| "Die neuen Läufe erweitern den empirischen Anschluss der Dissertation. Sie zeigen " | |
| "reproduzierbare technische Resultate unter den jeweils angegebenen Bedingungen. " | |
| "Alle vier Ergebnislinien wurden jedoch mit Dirty-Tree-Provenienz geführt; zudem " | |
| "stehen Human Reviews aus. Die Forschungsfragen werden daher nicht als bestätigt " | |
| "oder widerlegt markiert. Die primären Belege bleiben die verlinkten Manifeste, " | |
| "Summaries, DATA- und Statistikdateien im Repository." | |
| ) | |
| document.add_paragraph( | |
| "Repository-Artefakte: research/experiments/EXP-SNN-001-R2, " | |
| "EXP-REPL-0001-R1, EXP-LIFE-0001-R1 und EXP-GEN-0033-R1." | |
| ) | |
| document.save(DOCX) | |
| print(f"Updated {DOCX}") | |
| if __name__ == "__main__": | |
| main() |