Spaces:
Paused
Paused
Sync GitHub main 6bb97fb9a95926f8118bd61bec366af28afa0e5c
Browse files- .gitattributes +4 -0
- .github/workflows/review-portal.yml +6 -2
- .github/workflows/stage1-maintenance-refresh.yml +0 -1
- .github/workflows/stage1-topology-reference-prefreeze.yml +7 -0
- .pre-commit-config.yaml +15 -3
- MIRROR_MANIFEST.json +1 -1
- docs/04-integration/EXTERNAL_REVIEW_DEPLOYMENT.md +26 -2
- docs/05-quality/SCIENTIFIC_MATURITY_METHOD.md +67 -0
- docs/05-quality/STAGE1_REFERENCE_R2_PREFREEZE_20261024.md +50 -0
.gitattributes
CHANGED
|
@@ -1,11 +1,15 @@
|
|
| 1 |
# Keep source and documentation deterministic across Windows/Linux checkouts.
|
| 2 |
* text=auto
|
|
|
|
|
|
|
| 3 |
*.py text eol=lf
|
| 4 |
*.toml text eol=lf
|
| 5 |
*.yaml text eol=lf
|
| 6 |
*.yml text eol=lf
|
| 7 |
*.md text eol=lf
|
| 8 |
*.json text eol=lf
|
|
|
|
|
|
|
| 9 |
*.bib text eol=lf
|
| 10 |
*.cff text eol=lf
|
| 11 |
*.diff text eol=lf
|
|
|
|
| 1 |
# Keep source and documentation deterministic across Windows/Linux checkouts.
|
| 2 |
* text=auto
|
| 3 |
+
research/reviews/DETERMINISM_REPRODUCTION_20261024/artifacts/pip-freeze.txt -text
|
| 4 |
+
research/experiments/EXP-EMB001B-UNSEEN-V4-20261024/pip-freeze.txt -text whitespace=cr-at-eol
|
| 5 |
*.py text eol=lf
|
| 6 |
*.toml text eol=lf
|
| 7 |
*.yaml text eol=lf
|
| 8 |
*.yml text eol=lf
|
| 9 |
*.md text eol=lf
|
| 10 |
*.json text eol=lf
|
| 11 |
+
# Preserve the original failed R2 audit bytes, including its Windows line endings.
|
| 12 |
+
research/calibrations/CAL-S1-TOPO-REFERENCE-DYNAMICS-REUSE-R2/failed-before-format-restoration-20261024.json -text
|
| 13 |
*.bib text eol=lf
|
| 14 |
*.cff text eol=lf
|
| 15 |
*.diff text eol=lf
|
.github/workflows/review-portal.yml
CHANGED
|
@@ -33,7 +33,7 @@ jobs:
|
|
| 33 |
python -m review_portal.build --check
|
| 34 |
python -m compileall -q review_portal
|
| 35 |
- name: API, consent, privacy and statistics tests
|
| 36 |
-
run: python -m pytest review_portal/tests/test_portal.py -q
|
| 37 |
- name: JavaScript contract tests
|
| 38 |
run: |
|
| 39 |
node --check src/dashboard/static/review/app.js
|
|
@@ -43,6 +43,8 @@ jobs:
|
|
| 43 |
run: python -m playwright install --with-deps chromium
|
| 44 |
- name: Browser checks on desktop and mobile
|
| 45 |
run: python -m review_portal.tests.browser_smoke
|
|
|
|
|
|
|
| 46 |
- name: Upload synthetic UI screenshots
|
| 47 |
if: always()
|
| 48 |
uses: actions/upload-artifact@v6
|
|
@@ -68,9 +70,11 @@ jobs:
|
|
| 68 |
steps:
|
| 69 |
- uses: actions/checkout@v7
|
| 70 |
- uses: actions/configure-pages@v6
|
|
|
|
|
|
|
| 71 |
- uses: actions/upload-pages-artifact@v5
|
| 72 |
with:
|
| 73 |
-
path:
|
| 74 |
- name: Publish questionnaire ONLY, never response data or the runtime
|
| 75 |
id: deployment
|
| 76 |
uses: actions/deploy-pages@v5
|
|
|
|
| 33 |
python -m review_portal.build --check
|
| 34 |
python -m compileall -q review_portal
|
| 35 |
- name: API, consent, privacy and statistics tests
|
| 36 |
+
run: python -m pytest review_portal/tests/test_portal.py review_portal/tests/test_static_export.py -q
|
| 37 |
- name: JavaScript contract tests
|
| 38 |
run: |
|
| 39 |
node --check src/dashboard/static/review/app.js
|
|
|
|
| 43 |
run: python -m playwright install --with-deps chromium
|
| 44 |
- name: Browser checks on desktop and mobile
|
| 45 |
run: python -m review_portal.tests.browser_smoke
|
| 46 |
+
- name: Static export under GitHub Pages project subpath
|
| 47 |
+
run: python -m review_portal.tests.browser_static
|
| 48 |
- name: Upload synthetic UI screenshots
|
| 49 |
if: always()
|
| 50 |
uses: actions/upload-artifact@v6
|
|
|
|
| 70 |
steps:
|
| 71 |
- uses: actions/checkout@v7
|
| 72 |
- uses: actions/configure-pages@v6
|
| 73 |
+
- name: Build collection-disabled export package
|
| 74 |
+
run: python -m review_portal.build_static --output "${{ runner.temp }}/review-pages"
|
| 75 |
- uses: actions/upload-pages-artifact@v5
|
| 76 |
with:
|
| 77 |
+
path: ${{ runner.temp }}/review-pages
|
| 78 |
- name: Publish questionnaire ONLY, never response data or the runtime
|
| 79 |
id: deployment
|
| 80 |
uses: actions/deploy-pages@v5
|
.github/workflows/stage1-maintenance-refresh.yml
CHANGED
|
@@ -98,7 +98,6 @@ jobs:
|
|
| 98 |
scripts/verify_stage1_topology_reference_r1.py \
|
| 99 |
scripts/freeze_stage1_topology_reference_r1.py \
|
| 100 |
reference/stage1_topology_brian2/integrator_probe.py \
|
| 101 |
-
reference/stage1_topology_brian2/synapse_probe.py \
|
| 102 |
reference/stage1_topology_brian2/runner.py \
|
| 103 |
tests/test_stage1_reference_replication_contract.py \
|
| 104 |
tests/test_stage1_reference_preflight.py \
|
|
|
|
| 98 |
scripts/verify_stage1_topology_reference_r1.py \
|
| 99 |
scripts/freeze_stage1_topology_reference_r1.py \
|
| 100 |
reference/stage1_topology_brian2/integrator_probe.py \
|
|
|
|
| 101 |
reference/stage1_topology_brian2/runner.py \
|
| 102 |
tests/test_stage1_reference_replication_contract.py \
|
| 103 |
tests/test_stage1_reference_preflight.py \
|
.github/workflows/stage1-topology-reference-prefreeze.yml
CHANGED
|
@@ -52,17 +52,24 @@ jobs:
|
|
| 52 |
run: |
|
| 53 |
test -z "$(git status --porcelain)"
|
| 54 |
python -m pytest tests/test_stage1_reference_replication_contract.py tests/test_stage1_reference_preflight.py tests/test_stage1_reference_r2_contract.py tests/test_stage1_reference_r2_preflight.py -q
|
|
|
|
|
|
|
|
|
|
| 55 |
- name: Audit canonical mechanism semantics
|
|
|
|
| 56 |
run: python scripts/audit_stage1_reference_mechanisms.py
|
| 57 |
- name: Verify reference package independence
|
| 58 |
run: python scripts/check_stage1_reference_independence.py
|
| 59 |
- name: Verify R2 reference seed freshness
|
| 60 |
run: python scripts/check_stage1_reference_seed_freshness_r2.py
|
| 61 |
- name: Validate immutable R1 dynamics parity reuse for R2
|
|
|
|
| 62 |
run: python scripts/verify_stage1_reference_dynamics_reuse_r2.py
|
| 63 |
- name: Run exact R2 topology mapping parity
|
|
|
|
| 64 |
run: python scripts/run_stage1_reference_topology_mapping_r2.py
|
| 65 |
- name: Commit immutable pre-freeze audit artifacts
|
|
|
|
| 66 |
shell: bash
|
| 67 |
run: |
|
| 68 |
git config user.name "github-actions[bot]"
|
|
|
|
| 52 |
run: |
|
| 53 |
test -z "$(git status --porcelain)"
|
| 54 |
python -m pytest tests/test_stage1_reference_replication_contract.py tests/test_stage1_reference_preflight.py tests/test_stage1_reference_r2_contract.py tests/test_stage1_reference_r2_preflight.py -q
|
| 55 |
+
- name: Revalidate frozen R2 without rewriting bound artifacts
|
| 56 |
+
if: hashFiles('research/preregistrations/PREREG-S1-TOPO-REFERENCE-R2.freeze.json') != ''
|
| 57 |
+
run: python scripts/check_stage1_frozen_prefreeze.py
|
| 58 |
- name: Audit canonical mechanism semantics
|
| 59 |
+
if: hashFiles('research/preregistrations/PREREG-S1-TOPO-REFERENCE-R2.freeze.json') == ''
|
| 60 |
run: python scripts/audit_stage1_reference_mechanisms.py
|
| 61 |
- name: Verify reference package independence
|
| 62 |
run: python scripts/check_stage1_reference_independence.py
|
| 63 |
- name: Verify R2 reference seed freshness
|
| 64 |
run: python scripts/check_stage1_reference_seed_freshness_r2.py
|
| 65 |
- name: Validate immutable R1 dynamics parity reuse for R2
|
| 66 |
+
if: hashFiles('research/preregistrations/PREREG-S1-TOPO-REFERENCE-R2.freeze.json') == ''
|
| 67 |
run: python scripts/verify_stage1_reference_dynamics_reuse_r2.py
|
| 68 |
- name: Run exact R2 topology mapping parity
|
| 69 |
+
if: hashFiles('research/preregistrations/PREREG-S1-TOPO-REFERENCE-R2.freeze.json') == ''
|
| 70 |
run: python scripts/run_stage1_reference_topology_mapping_r2.py
|
| 71 |
- name: Commit immutable pre-freeze audit artifacts
|
| 72 |
+
if: hashFiles('research/preregistrations/PREREG-S1-TOPO-REFERENCE-R2.freeze.json') == ''
|
| 73 |
shell: bash
|
| 74 |
run: |
|
| 75 |
git config user.name "github-actions[bot]"
|
.pre-commit-config.yaml
CHANGED
|
@@ -29,22 +29,34 @@ repos:
|
|
| 29 |
language: system
|
| 30 |
pass_filenames: false
|
| 31 |
types: [python]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
# Trailing whitespace, EOF newline, merge conflicts
|
| 33 |
- repo: https://github.com/pre-commit/pre-commit-hooks
|
| 34 |
rev: v5.0.0
|
| 35 |
hooks:
|
| 36 |
- id: trailing-whitespace
|
| 37 |
-
exclude: ^(research/(experiments/|preregistrations/|publications/|registry/evidence/|generated/data/)|docs/99-archive/)
|
| 38 |
args: [--markdown-linebreak-ext=md]
|
| 39 |
- id: end-of-file-fixer
|
| 40 |
# Frozen experiment manifests are evidence artifacts and must not be
|
| 41 |
# byte-rewritten by an automatic formatting hook.
|
| 42 |
-
exclude: ^research/(experiments/|preregistrations/|publications/|registry/evidence/|generated/data/|generated/verification/)
|
| 43 |
- id: check-merge-conflict
|
| 44 |
- id: check-yaml
|
| 45 |
- id: check-toml
|
| 46 |
- id: check-added-large-files
|
| 47 |
# Publication and the explicitly listed immutable trace hashes are checked
|
| 48 |
# by empirical-data-integrity. All other paths retain the 500 KiB cap.
|
| 49 |
-
exclude: ^(research/publications/|research/experiments/EXP-EMP-20260910/(024-embodied_timing_v1|027-brian2_single_neuron_v1)/runs\.json\.gz$|research/experiments/EXP-EMP-20260913-A3/(064-embodied_timing_v1|068-brian2_single_neuron_v1)/runs\.json\.gz$)
|
| 50 |
args: [--maxkb=500]
|
|
|
|
| 29 |
language: system
|
| 30 |
pass_filenames: false
|
| 31 |
types: [python]
|
| 32 |
+
- id: determinism-artifact-integrity
|
| 33 |
+
name: verify immutable determinism reproduction artifacts
|
| 34 |
+
entry: python scripts/verify_determinism_reproduction.py
|
| 35 |
+
language: system
|
| 36 |
+
pass_filenames: false
|
| 37 |
+
always_run: true
|
| 38 |
+
- id: embodiment-v4-artifact-integrity
|
| 39 |
+
name: verify immutable embodiment V4 trace archive
|
| 40 |
+
entry: python scripts/verify_emb001b_unseen_v4.py
|
| 41 |
+
language: system
|
| 42 |
+
pass_filenames: false
|
| 43 |
+
always_run: true
|
| 44 |
# Trailing whitespace, EOF newline, merge conflicts
|
| 45 |
- repo: https://github.com/pre-commit/pre-commit-hooks
|
| 46 |
rev: v5.0.0
|
| 47 |
hooks:
|
| 48 |
- id: trailing-whitespace
|
| 49 |
+
exclude: ^(research/(reviews/DETERMINISM_REPRODUCTION_20261024/artifacts/|experiments/|preregistrations/|publications/|registry/evidence/|generated/data/)|docs/99-archive/)
|
| 50 |
args: [--markdown-linebreak-ext=md]
|
| 51 |
- id: end-of-file-fixer
|
| 52 |
# Frozen experiment manifests are evidence artifacts and must not be
|
| 53 |
# byte-rewritten by an automatic formatting hook.
|
| 54 |
+
exclude: ^research/(reviews/DETERMINISM_REPRODUCTION_20261024/artifacts/|experiments/|preregistrations/|publications/|registry/evidence/|generated/data/|generated/verification/)
|
| 55 |
- id: check-merge-conflict
|
| 56 |
- id: check-yaml
|
| 57 |
- id: check-toml
|
| 58 |
- id: check-added-large-files
|
| 59 |
# Publication and the explicitly listed immutable trace hashes are checked
|
| 60 |
# by empirical-data-integrity. All other paths retain the 500 KiB cap.
|
| 61 |
+
exclude: ^(research/publications/|research/experiments/EXP-EMB001B-UNSEEN-V4-20261024/raw-traces\.zip$|research/experiments/EXP-EMP-20260910/(024-embodied_timing_v1|027-brian2_single_neuron_v1)/runs\.json\.gz$|research/experiments/EXP-EMP-20260913-A3/(064-embodied_timing_v1|068-brian2_single_neuron_v1)/runs\.json\.gz$)
|
| 62 |
args: [--maxkb=500]
|
MIRROR_MANIFEST.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"canonical_repository": "https://github.com/Thomas-Heisig/MHRN",
|
| 3 |
-
"canonical_sha": "
|
| 4 |
"generated_by": ".github/workflows/sync-huggingface.yml",
|
| 5 |
"rolling_mirror": true,
|
| 6 |
"raw_experiment_data_included": false,
|
|
|
|
| 1 |
{
|
| 2 |
"canonical_repository": "https://github.com/Thomas-Heisig/MHRN",
|
| 3 |
+
"canonical_sha": "6bb97fb9a95926f8118bd61bec366af28afa0e5c",
|
| 4 |
"generated_by": ".github/workflows/sync-huggingface.yml",
|
| 5 |
"rolling_mirror": true,
|
| 6 |
"raw_experiment_data_included": false,
|
docs/04-integration/EXTERNAL_REVIEW_DEPLOYMENT.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# External Review Deployment
|
| 2 |
|
| 3 |
-
**Status:**
|
| 4 |
**Scope:** public questionnaire, optional online collection and sanitized descriptive export
|
| 5 |
|
| 6 |
## Security boundary
|
|
@@ -22,10 +22,34 @@ encrypted storage outside Git
|
|
| 22 |
|
| 23 |
## Option 1: GitHub Pages, export-only
|
| 24 |
|
| 25 |
-
The
|
| 26 |
|
| 27 |
This mode has no central response storage. Participants export their JSON/CSV locally. The export is not automatically sent anywhere.
|
| 28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
## Option 2: Hugging Face Docker Space
|
| 30 |
|
| 31 |
Create a public Docker Space and use `review_portal/Dockerfile.huggingface` as the Space Dockerfile. Configure the Space port as `7860`.
|
|
|
|
| 1 |
# External Review Deployment
|
| 2 |
|
| 3 |
+
**Status:** export-only GitHub Pages preparation selected on 24 October 2026; no new deployment or independent approval asserted.
|
| 4 |
**Scope:** public questionnaire, optional online collection and sanitized descriptive export
|
| 5 |
|
| 6 |
## Security boundary
|
|
|
|
| 22 |
|
| 23 |
## Option 1: GitHub Pages, export-only
|
| 24 |
|
| 25 |
+
The workflow `.github/workflows/review-portal.yml` verifies the portal and builds an allowlisted package with `python -m review_portal.build_static --output <new-directory>`. Only this package is uploaded when Pages is enabled. Start publication manually with `publish_pages: true` on `main`; preparation alone does not run this workflow. Avoid enabling the automatic publication variable until the published configuration has been reviewed.
|
| 26 |
|
| 27 |
This mode has no central response storage. Participants export their JSON/CSV locally. The export is not automatically sent anywhere.
|
| 28 |
|
| 29 |
+
The prepared package uses relative assets for the project subpath, explicitly disables API discovery and blocks network connections through `connect-src 'none'`. Admin pages and collector files are excluded. A browser test opens `/MHRN/index.html`, exports a synthetic answer and verifies that no API requests occur. The package includes an export-specific privacy page and SHA-256 manifest. Instrument questions, version and reviewed-materials revision remain unchanged.
|
| 30 |
+
|
| 31 |
+
Local verification on 24 October 2026: 57 Python tests, six JavaScript model tests,
|
| 32 |
+
catalogue byte check, workflow YAML check and the static browser scenario passed.
|
| 33 |
+
The browser scenario verified the project subpath, a synthetic JSON download,
|
| 34 |
+
disabled online controls, privacy page, mobile layout and zero API requests.
|
| 35 |
+
These results verify the prepared package, not the deployed site or independent review.
|
| 36 |
+
|
| 37 |
+
### Selected deployment and acceptance boundaries
|
| 38 |
+
|
| 39 |
+
| Area | Export-only preparation | Remaining production check |
|
| 40 |
+
| --- | --- | --- |
|
| 41 |
+
| Address | `https://thomas-heisig.github.io/MHRN/`; no custom domain purchase | Confirm actual Pages URL and whether an existing site would be replaced |
|
| 42 |
+
| TLS | GitHub Pages-managed HTTPS | Verify actual certificate and HTTPS enforcement after publication |
|
| 43 |
+
| Response storage | Browser memory; optional local draft/export | No central database; users manage their own local files |
|
| 44 |
+
| Backups | Rebuild public assets from reviewed Git commit and package hashes | Keep the release commit/package available; no server response-backup claim |
|
| 45 |
+
| Study settings | Local review context; central collection disabled | Any future collection requires a separate concrete study configuration |
|
| 46 |
+
| Legal/privacy | Export-specific notice with public project contact and GitHub hosting disclosure | Human review of actual deployment and intended use remains open |
|
| 47 |
+
| Independent review | Not asserted by technical tests | Record actual reviewer, scope, findings and conflicts before claiming completion |
|
| 48 |
+
|
| 49 |
+
GitHub reports Pages enabled for this repository, but that is not proof that the prepared package is live. The local GitHub CLI credentials could not be verified; no settings or public site were changed during preparation.
|
| 50 |
+
|
| 51 |
+
GitHub Pages documents both its project URL structure and security-related visitor IP logging in [About Pages](https://docs.github.com/en/pages/getting-started-with-github-pages/what-is-github-pages). HTTPS behavior is described in [Securing Pages](https://docs.github.com/en/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https). Hosting logs are distinct from questionnaire responses. Before central collection, information duties must be assessed against the actual processing; see the [official Article 13 text](https://www.ms.niedersachsen.de/startseite/uber_uns/datenschutzerklaerung-nach-dsgvo-181391.html).
|
| 52 |
+
|
| 53 |
## Option 2: Hugging Face Docker Space
|
| 54 |
|
| 55 |
Create a public Docker Space and use `review_portal/Dockerfile.huggingface` as the Space Dockerfile. Configure the Space port as `7860`.
|
docs/05-quality/SCIENTIFIC_MATURITY_METHOD.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Wie die wissenschaftlichen Reifegrade zu lesen sind
|
| 2 |
+
|
| 3 |
+
Stand 2026-10-24. Die Prozentwerte sind ein **gewichteter Dokumentations- und
|
| 4 |
+
Bearbeitungsindex**, keine Wahrscheinlichkeit einer wahren Hypothese, keine
|
| 5 |
+
Konfidenz, kein Anteil vorhandener Intelligenz und keine biologische Reife.
|
| 6 |
+
Die Gewichte sind Projektentscheidungen, nicht empirisch kalibrierte Parameter.
|
| 7 |
+
|
| 8 |
+
## Kriterien und Berechnung
|
| 9 |
+
|
| 10 |
+
| Kriterium | Gewicht | Was bewertet wird |
|
| 11 |
+
| --- | ---: | --- |
|
| 12 |
+
| Forschungsfrage | 15 % | explizite, zugeordnete RQ/H |
|
| 13 |
+
| Protokoll | 20 % | vorab operationalisierter und eingefrorener Prüfplan |
|
| 14 |
+
| DATA | 20 % | passende, prüfbare Messdaten im ausgewiesenen Geltungsbereich |
|
| 15 |
+
| Reviewte Evidenz | 20 % | fachliche Human Review und kanonische EVID-Promotion |
|
| 16 |
+
| Unabhängige Replikation | 15 % | tatsächlich unabhängige Prüfung/Bestätigung |
|
| 17 |
+
| Attribution | 10 % | nachvollziehbare Quellen- und Beitragszuordnung |
|
| 18 |
+
|
| 19 |
+
Die bestehende Statusskala lautet `met=1`, `partial=0.5`, `open=0`.
|
| 20 |
+
Für jede Stufe gilt `score = Summe(Gewicht × Statuswert)`. Das angezeigte
|
| 21 |
+
Stage-Mittel ist der ungewichtete Mittelwert der elf Stufen 0–10. Es ist
|
| 22 |
+
keine Vollständigkeitsmetrik des Gesamtforschungsprogramms: die Auswahl und
|
| 23 |
+
Granularität der Stufen beeinflussen es. Rundung erfolgt erst zur Anzeige.
|
| 24 |
+
`not_applicable` darf nicht still als Erfolg zählen: im aktuellen Manifest
|
| 25 |
+
sind alle sechs Kriterien anwendbar; eine Änderung braucht einen neuen
|
| 26 |
+
Berechnungsvertrag einschließlich Nennerregel.
|
| 27 |
+
|
| 28 |
+
`partial` ist grob und verlangt eine dokumentierte Begründung. Beispielsweise
|
| 29 |
+
trennt Stufe 1 fachliche Human Review und kanonische Promotion als zwei
|
| 30 |
+
Teilvoraussetzungen. Bei Stufe 0 steht `partial` für einen externen
|
| 31 |
+
Softwarevergleich plus interne Wiederholung, ausdrücklich nicht für eine
|
| 32 |
+
bereits unabhängige Replikation. 0.5 bedeutet weder halbe Sicherheit noch
|
| 33 |
+
eine halbe erfolgreiche Studie. Status und Quellen bleiben fachlich zu prüfen.
|
| 34 |
+
|
| 35 |
+
## Pflichtprüfungen sind nicht verrechenbar
|
| 36 |
+
|
| 37 |
+
Ein hoher Summenwert darf fehlende Freigaben nicht ersetzen. Vor einem Claim
|
| 38 |
+
müssen RQ/H-Zuordnung, Testadäquanz und tatsächliche kausale Intervention,
|
| 39 |
+
vorab festgelegte Auswertung, gültige vollständige DATA, saubere
|
| 40 |
+
Quellprovenienz, fehlerfreie Ausführung und kanonische Human Review passen.
|
| 41 |
+
`EvidenceEngine.promote_validated_experiment` verlangt Source-Freeze und
|
| 42 |
+
Human Review; weitere Eignungsprüfungen erfordern inhaltliche Bewertung und
|
| 43 |
+
sind nicht allein durch diese Prozentrechnung automatisiert. Eine Aussage
|
| 44 |
+
über unabhängige Replikation benötigt einen unabhängigen Nachweis.
|
| 45 |
+
|
| 46 |
+
Diese Voraussetzungen werden **nicht als zusätzliche numerische Abschläge
|
| 47 |
+
oder geheime Caps** in den Index eingerechnet. Sie begrenzen separat, welche
|
| 48 |
+
Aussage zulässig ist. Ein Score von 92.5 % kann daher zusammen mit der Grenze
|
| 49 |
+
„keine unabhängige Replikation“ auftreten. Das ist keine 92.5-%-Bestätigung.
|
| 50 |
+
|
| 51 |
+
## Audit und Korrektur vom 2026-10-24
|
| 52 |
+
|
| 53 |
+
Im bisherigen Dashboardmanifest stimmten nur Stufen 0 und 1 mit der
|
| 54 |
+
angegebenen gewichteten Statussumme überein. Für die anderen neun waren keine
|
| 55 |
+
maschinell nachvollziehbaren Abschläge hinterlegt. Die alten Werte wurden in
|
| 56 |
+
`research/reviews/MANUSCRIPT_FOLLOWUP_20261024/maturity-score-audit.json`
|
| 57 |
+
aufbewahrt. Das aktuelle Dashboard zeigt jetzt die nachgerechnete Summe;
|
| 58 |
+
Kriterienstatus, Quellen, Human Reviews und EVID-Register wurden dabei nicht
|
| 59 |
+
hochgestuft. Die numerische Änderung ist eine Berechnungskorrektur und kein
|
| 60 |
+
neuer Forschungsfortschritt. Historische Publikationswerte bleiben datierte
|
| 61 |
+
Darstellungen und dürfen nicht rückwirkend als so berechnet ausgegeben werden.
|
| 62 |
+
|
| 63 |
+
Die Prüfung `scripts/check_scientific_maturity_integrity.py` kontrolliert nun
|
| 64 |
+
zusätzlich eindeutige vollständige Kriterien und Übereinstimmung von Score
|
| 65 |
+
und Gewichtung. Sie bestätigt interne Konsistenz, nicht wissenschaftliche
|
| 66 |
+
Gültigkeit. Andere technische Gate-/Engineering-Prozentwerte haben andere
|
| 67 |
+
Nenner und dürfen nicht mit diesem Index vermischt werden.
|
docs/05-quality/STAGE1_REFERENCE_R2_PREFREEZE_20261024.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Stage-1 reference R2 — pre-freeze verification, 24 October 2026
|
| 2 |
+
|
| 3 |
+
Status: engineering/method validation only; no confirmatory reference DATA,
|
| 4 |
+
human evidence decision or independent replication is created by these checks.
|
| 5 |
+
|
| 6 |
+
## Source restoration
|
| 7 |
+
|
| 8 |
+
Commit `c6009b4e` reformatted the import in
|
| 9 |
+
`reference/stage1_topology_brian2/synapse_probe.py`. Its bytes consequently
|
| 10 |
+
ceased to match the historical R1 calibration. The probe was restored from
|
| 11 |
+
`28d07e67` only after verifying identical Python ASTs and the exact recorded
|
| 12 |
+
SHA-256 `d05bae8f00b97758cb96662acbb0f2e58cd7860776871b5edf6fd4ed09e576da`.
|
| 13 |
+
The original calibration and its recorded hash were not changed. A regression
|
| 14 |
+
test now guards this byte-preservation contract, including cosmetic edits.
|
| 15 |
+
|
| 16 |
+
The failed pre-restoration audit remains at
|
| 17 |
+
`research/calibrations/CAL-S1-TOPO-REFERENCE-DYNAMICS-REUSE-R2/failed-before-format-restoration-20261024.json`.
|
| 18 |
+
The current result is separate in that directory's `result.json`.
|
| 19 |
+
|
| 20 |
+
## Verified preparation
|
| 21 |
+
|
| 22 |
+
- Python 3.13.14 and Brian2 2.10.1 in an isolated Windows environment.
|
| 23 |
+
- Topology mapping: all 18 cases pass, using calibration seeds separate from evaluation.
|
| 24 |
+
- Immutable dynamics reuse: all nine recorded source hashes match; historical
|
| 25 |
+
integrator, reset and synapse artifacts retain their original bytes.
|
| 26 |
+
- Independence scan: no forbidden imports or canonical target leakage detected.
|
| 27 |
+
- Seed freshness: no collisions at the checked baseline; this check must be
|
| 28 |
+
repeated at the final clean freeze commit.
|
| 29 |
+
- R2 preregistration prose now distinguishes its active seed block from the
|
| 30 |
+
earlier R1 block, without changing the registered seed list or decision bounds.
|
| 31 |
+
|
| 32 |
+
The mapping script supports direct invocation. The freeze script now uses
|
| 33 |
+
`sys.executable` for subprocesses and requires an explicit ISO `--freeze-date`,
|
| 34 |
+
preventing a new freeze from silently inheriting the draft's September date.
|
| 35 |
+
|
| 36 |
+
## Freeze and execution boundary
|
| 37 |
+
|
| 38 |
+
Use a clean, committed tree and Python 3.13 with Brian2 2.10.1. Run the R2
|
| 39 |
+
contract/preflight/freeze-CLI tests before:
|
| 40 |
+
|
| 41 |
+
```text
|
| 42 |
+
python scripts/freeze_stage1_topology_reference_r2.py --freeze-date YYYY-MM-DD
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
Supply the actual freeze date. The script refuses a dirty tree or existing
|
| 46 |
+
freeze. The freeze must bind the source commit, calibration artifacts, runner,
|
| 47 |
+
verifier and preregistered criteria. Its completion is not authorization to run
|
| 48 |
+
the reference evaluation: `execution_authorized` stays false. A subsequent
|
| 49 |
+
human execution-authorization record must bind the reviewed freeze and runner.
|
| 50 |
+
Project-side reference replication can earn partial replication credit only.
|