ThomasHeisig commited on
Commit
a4ffada
·
verified ·
1 Parent(s): 3e7d071

Sync GitHub main a02dcc46dc38f6a5cfddfcce49132b171241cfc8 (part 6)

Browse files
src/research/literature_registry.py CHANGED
@@ -7,6 +7,7 @@ relevance matrices for research questions.
7
 
8
  from __future__ import annotations
9
 
 
10
  from pathlib import Path
11
 
12
  from .registry import REPO_ROOT, ResearchRegistry, Source
@@ -14,6 +15,19 @@ from .registry import REPO_ROOT, ResearchRegistry, Source
14
  LITERATURE_DIR = REPO_ROOT / "research" / "literature"
15
 
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  class LiteratureRegistry:
18
  """Manages literature sources and generates reference documents."""
19
 
@@ -61,7 +75,7 @@ class LiteratureRegistry:
61
  [
62
  "",
63
  "---",
64
- f"*Automatisch generiert am {__import__('datetime').datetime.now().strftime('%Y-%m-%d')}*",
65
  ]
66
  )
67
 
 
7
 
8
  from __future__ import annotations
9
 
10
+ import json
11
  from pathlib import Path
12
 
13
  from .registry import REPO_ROOT, ResearchRegistry, Source
 
15
  LITERATURE_DIR = REPO_ROOT / "research" / "literature"
16
 
17
 
18
+ def _generated_on() -> str:
19
+ """Return the canonical release snapshot date for deterministic reports."""
20
+ release_path = REPO_ROOT / "releases" / "current.json"
21
+ try:
22
+ data = json.loads(release_path.read_text(encoding="utf-8"))
23
+ value = data.get("as_of")
24
+ if isinstance(value, str) and value.strip():
25
+ return value.strip()
26
+ except (OSError, json.JSONDecodeError):
27
+ pass
28
+ return "undated"
29
+
30
+
31
  class LiteratureRegistry:
32
  """Manages literature sources and generates reference documents."""
33
 
 
75
  [
76
  "",
77
  "---",
78
+ f"*Automatisch generiert am {_generated_on()}*",
79
  ]
80
  )
81
 
src/research/report_builder.py CHANGED
@@ -13,7 +13,6 @@ from __future__ import annotations
13
 
14
  import json
15
  from collections import Counter
16
- from datetime import datetime
17
  from pathlib import Path
18
  from typing import Any, cast
19
 
@@ -23,6 +22,19 @@ GENERATED_DIR = REPO_ROOT / "research" / "generated"
23
  EVIDENCE_DIR = REPO_ROOT / "research" / "registry" / "evidence"
24
 
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  class EvidenceRecord:
27
  """Typed wrapper for an EVID-*.json record."""
28
 
@@ -162,7 +174,7 @@ class ReportBuilder:
162
  lines = [
163
  "# MHRN Research Catalog",
164
  "",
165
- f"*Generiert am {datetime.now().strftime('%Y-%m-%d')}*",
166
  "",
167
  "## Übersicht",
168
  "",
@@ -261,7 +273,7 @@ class ReportBuilder:
261
  lines = [
262
  "# MHRN Evidence Matrix",
263
  "",
264
- f"*Generiert am {datetime.now().strftime('%Y-%m-%d')}*",
265
  "",
266
  "RQ-Status und Claim-Status sind unterschiedliche wissenschaftliche Zustände und werden nicht gegenseitig abgeleitet.",
267
  "",
@@ -341,7 +353,7 @@ class ReportBuilder:
341
  lines = [
342
  "# MHRN Open Questions",
343
  "",
344
- f"*Generiert am {datetime.now().strftime('%Y-%m-%d')}*",
345
  "",
346
  "Die folgenden Forschungsfragen sind noch offen und warten auf experimentelle Evidenz.",
347
  "",
@@ -388,7 +400,7 @@ class ReportBuilder:
388
  lines = [
389
  "# MHRN Claim Register",
390
  "",
391
- f"*Generiert am {datetime.now().strftime('%Y-%m-%d')}*",
392
  "",
393
  "| Claim | Status | Konfidenz | Evidenzen | Experimente |",
394
  "|-------|--------|-----------|-----------|-------------|",
@@ -484,7 +496,7 @@ class ReportBuilder:
484
  lines = [
485
  "# MHRN Dissertation Map",
486
  "",
487
- f"*Generiert am {datetime.now().strftime('%Y-%m-%d')}*",
488
  "",
489
  "Diese Karte zeigt, wie die Forschungsergebnisse von MHRN in eine",
490
  "Dissertationsstruktur eingeordnet werden können.",
 
13
 
14
  import json
15
  from collections import Counter
 
16
  from pathlib import Path
17
  from typing import Any, cast
18
 
 
22
  EVIDENCE_DIR = REPO_ROOT / "research" / "registry" / "evidence"
23
 
24
 
25
+ def _generated_on() -> str:
26
+ """Return the canonical release snapshot date for deterministic reports."""
27
+ release_path = REPO_ROOT / "releases" / "current.json"
28
+ try:
29
+ data = json.loads(release_path.read_text(encoding="utf-8"))
30
+ value = data.get("as_of")
31
+ if isinstance(value, str) and value.strip():
32
+ return value.strip()
33
+ except (OSError, json.JSONDecodeError):
34
+ pass
35
+ return "undated"
36
+
37
+
38
  class EvidenceRecord:
39
  """Typed wrapper for an EVID-*.json record."""
40
 
 
174
  lines = [
175
  "# MHRN Research Catalog",
176
  "",
177
+ f"*Generiert am {_generated_on()}*",
178
  "",
179
  "## Übersicht",
180
  "",
 
273
  lines = [
274
  "# MHRN Evidence Matrix",
275
  "",
276
+ f"*Generiert am {_generated_on()}*",
277
  "",
278
  "RQ-Status und Claim-Status sind unterschiedliche wissenschaftliche Zustände und werden nicht gegenseitig abgeleitet.",
279
  "",
 
353
  lines = [
354
  "# MHRN Open Questions",
355
  "",
356
+ f"*Generiert am {_generated_on()}*",
357
  "",
358
  "Die folgenden Forschungsfragen sind noch offen und warten auf experimentelle Evidenz.",
359
  "",
 
400
  lines = [
401
  "# MHRN Claim Register",
402
  "",
403
+ f"*Generiert am {_generated_on()}*",
404
  "",
405
  "| Claim | Status | Konfidenz | Evidenzen | Experimente |",
406
  "|-------|--------|-----------|-----------|-------------|",
 
496
  lines = [
497
  "# MHRN Dissertation Map",
498
  "",
499
+ f"*Generiert am {_generated_on()}*",
500
  "",
501
  "Diese Karte zeigt, wie die Forschungsergebnisse von MHRN in eine",
502
  "Dissertationsstruktur eingeordnet werden können.",