Spaces:
Sleeping
Sleeping
feat: surface ICH M15 MIDD in UI hero, overview card, and audit snapshot
Browse files- stem_ai/app.py +11 -4
stem_ai/app.py
CHANGED
|
@@ -114,6 +114,8 @@ def _finding_cards(result: dict) -> str:
|
|
| 114 |
"No regulatory traceability summary emitted.",
|
| 115 |
)
|
| 116 |
basis_title = basis.get("note", {}).get("title", "Regulatory basis note")
|
|
|
|
|
|
|
| 117 |
|
| 118 |
return "\n".join(
|
| 119 |
[
|
|
@@ -147,6 +149,7 @@ def _finding_cards(result: dict) -> str:
|
|
| 147 |
"### Regulatory Traceability",
|
| 148 |
f"- **Summary:** {traceability_summary}",
|
| 149 |
f"- **{basis_title}:** current official source classes as of {basis.get('as_of', 'current registry month')}",
|
|
|
|
| 150 |
]
|
| 151 |
)
|
| 152 |
|
|
@@ -284,7 +287,8 @@ with gr.Blocks(title=f"STEM BIO-AI — Evidence Scanner v{__version__}", **_bloc
|
|
| 284 |
<p>Deterministic evidence-surface scanner for bio/medical AI repositories.
|
| 285 |
No LLM · No API key · No model runtime · No secrets sent anywhere.<br>
|
| 286 |
Scans README, docs, CI, tests, changelogs, and manifests — returns a T0–T4 triage tier
|
| 287 |
-
with JSON, Markdown, and PDF artifacts
|
|
|
|
| 288 |
</div>
|
| 289 |
"""
|
| 290 |
)
|
|
@@ -326,10 +330,13 @@ with gr.Blocks(title=f"STEM BIO-AI — Evidence Scanner v{__version__}", **_bloc
|
|
| 326 |
</p>
|
| 327 |
</div>
|
| 328 |
<div style="{_CARD_STYLE}">
|
| 329 |
-
<p style="{_CARD_TITLE}">
|
| 330 |
<p style="{_CARD_BODY}">
|
| 331 |
-
|
| 332 |
-
|
|
|
|
|
|
|
|
|
|
| 333 |
</p>
|
| 334 |
</div>
|
| 335 |
<div style="{_CARD_STYLE}">
|
|
|
|
| 114 |
"No regulatory traceability summary emitted.",
|
| 115 |
)
|
| 116 |
basis_title = basis.get("note", {}).get("title", "Regulatory basis note")
|
| 117 |
+
source_ids = basis.get("source_ids", [])
|
| 118 |
+
m15_active = "ich_m15_midd_2026" in source_ids
|
| 119 |
|
| 120 |
return "\n".join(
|
| 121 |
[
|
|
|
|
| 149 |
"### Regulatory Traceability",
|
| 150 |
f"- **Summary:** {traceability_summary}",
|
| 151 |
f"- **{basis_title}:** current official source classes as of {basis.get('as_of', 'current registry month')}",
|
| 152 |
+
f"- **ICH M15 MIDD:** {'✓ aligned — §§2.1.2 Context of Use · §3 Verification/Validation · §4.1 MAP · §4.2 MAR · §4.3 code submission' if m15_active else 'not in registry (update regulatory_basis_registry.v1.json)'}",
|
| 153 |
]
|
| 154 |
)
|
| 155 |
|
|
|
|
| 287 |
<p>Deterministic evidence-surface scanner for bio/medical AI repositories.
|
| 288 |
No LLM · No API key · No model runtime · No secrets sent anywhere.<br>
|
| 289 |
Scans README, docs, CI, tests, changelogs, and manifests — returns a T0–T4 triage tier
|
| 290 |
+
with JSON, Markdown, and PDF artifacts. Rubric items are citation-aligned to
|
| 291 |
+
<strong>ICH M15 MIDD</strong> (Step 4, 2026) and EU AI Act / IMDRF frameworks for regulatory traceability.</p>
|
| 292 |
</div>
|
| 293 |
"""
|
| 294 |
)
|
|
|
|
| 330 |
</p>
|
| 331 |
</div>
|
| 332 |
<div style="{_CARD_STYLE}">
|
| 333 |
+
<p style="{_CARD_TITLE}">Regulatory Frameworks</p>
|
| 334 |
<p style="{_CARD_BODY}">
|
| 335 |
+
<strong>ICH M15 MIDD</strong> (Step 4, 2026) — each rubric item is citation-aligned to
|
| 336 |
+
ICH M15 §§2.1.2 · 3 · 4.1 · 4.2 · 4.3 so MIDD repos see directly applicable FDA/EMA regulatory
|
| 337 |
+
requirement context in the traceability output.<br>
|
| 338 |
+
<strong>AIRI</strong> — MIT AI Risk Repository runtime bundle maps triggered detectors to
|
| 339 |
+
covered risks and known gaps across the curated bio/clinical subset.
|
| 340 |
</p>
|
| 341 |
</div>
|
| 342 |
<div style="{_CARD_STYLE}">
|