# Validation Report — Distal Proxy Atomization Settlement Harness v0.1 BOOT: PASS PACKAGE_HYGIENE: PASS FIXTURE_COUNT: 10/10 SCENARIO_RUNS: PASS RECEIPT_EXPORT: PASS SCHEMA_FILES: PASS NON_OVERCLAIM_BOUNDARY: PASS ## Fixture Results - DPAS-001 Clean Distal Repair: settlement=`REPAIR_ACCEPTED_WITH_SCAR` propagation=`PROPAGATING_WITH_MONITORING` receipt_hash=`e4b549fd3eed36ad...` - DPAS-002 Plausible Reassembly Fraud: settlement=`NON_SETTLEABLE_TRACE_LAUNDERING` propagation=`PROPAGATION_REFUSED` receipt_hash=`e2dc44ebcdc54dce...` - DPAS-003 Split Proxy Field: settlement=`REPAIR_STRAINED_PENDING_REVIEW` propagation=`PROPAGATION_REFUSED` receipt_hash=`d5d2286b67f9c79b...` - DPAS-004 Scar Erasure Attempt: settlement=`NON_SETTLEABLE_TRACE_LAUNDERING` propagation=`PROPAGATION_REFUSED` receipt_hash=`1435a9a802c0bd5e...` - DPAS-005 Memory-as-Permission Failure: settlement=`MUST_STOP_POISONED_MEMORY` propagation=`PROPAGATION_REFUSED` receipt_hash=`7041a96fc5961161...` - DPAS-006 Counter-Synthesis Bypass: settlement=`NON_SETTLEABLE_BOUNDARY_VIOLATION` propagation=`PROPAGATION_REFUSED` receipt_hash=`4c43628e4a984b82...` - DPAS-007 Temporal Mismatch: settlement=`QUARANTINED_TEMPORAL_MISMATCH` propagation=`PROPAGATION_REFUSED` receipt_hash=`d7f7d97e67162d74...` - DPAS-008 Poisoned Memory Boundary: settlement=`MUST_STOP_POISONED_MEMORY` propagation=`PROPAGATION_REFUSED` receipt_hash=`ba0b75cafae513eb...` - DPAS-009 Mandatory Silence Trigger: settlement=`REPAIR_ACCEPTED_WITH_SCAR` propagation=`MANDATORY_SILENCE` receipt_hash=`2610a5fbaf9ea58b...` - DPAS-010 Controlled Re-Propagation: settlement=`REPAIR_ACCEPTED_WITH_SCAR` propagation=`CONTROLLED_REPROPAGATION` receipt_hash=`b1f12903dcae5313...` ## Specific Gate Coverage - TRACE_LAUNDERING_DETECTION: PASS (DPAS-002, DPAS-004) - SCAR_ERASURE_DETECTION: PASS (DPAS-004) - SOURCE_RETURN_FAILURE: PASS (DPAS-002, DPAS-008) - TEMPORAL_MISMATCH_DETECTION: PASS (DPAS-007) - COUNTER_SYNTHESIS_BYPASS_DETECTION: PASS (DPAS-006) - POISONED_MEMORY_BOUNDARY: PASS (DPAS-005, DPAS-008) - MANDATORY_SILENCE_TRIGGER: PASS (DPAS-009) - CONTROLLED_REPROPAGATION: PASS (DPAS-010) FINAL STATUS: HOSTED_PASS_WITH_REVIEWER_NOTES ## Asset Update - X_CARD_ASSET: PASS (`assets/social_card.png` updated for Hugging Face / X link preview display) ## Runtime Compatibility Patch — 2026-06-21 **Patch target:** Hugging Face startup failure caused by `ImportError: cannot import name 'HfFolder' from 'huggingface_hub'`. **Applied fix:** Added `huggingface-hub==0.34.3` to `requirements.txt` while keeping `gradio==4.44.1` and `pydantic==2.10.6` unchanged. **Reason:** The app targets the existing Gradio 4.44.1 UI surface. Pinning the Hub client below the breaking API change restores the `HfFolder` import path expected by this Gradio line without changing application logic, fixtures, receipts, schemas, or X-card assets. **Boundary:** No app logic, fixture data, receipt data, schema content, network calls, subprocess behavior, hidden persistence, or card imagery was changed. ## v0.1.2 Gradio 6.5.1 Runtime Patch Patch purpose: resolve the Hugging Face runtime path that produced `TypeError: unhashable type: 'dict'` during Gradio/Jinja/Starlette template rendering and the downstream localhost accessibility failure. Changes applied: - Upgraded Gradio lock from `gradio==4.44.1` to `gradio==6.5.1`. - Upgraded Pydantic lock from `pydantic==2.10.6` to `pydantic==2.12.5`. - Added `fastapi<1.0` and `starlette<1.0` guards to prevent template-signature drift into Starlette 1.x. - Hardened launch binding with `server_name="0.0.0.0"`, `server_port=int(os.environ.get("PORT", "7860"))`, and `show_error=True`. - No fixture, schema, receipt, social-card, settlement, propagation, or boundary logic was changed. ## v0.1.3 HF SSR Disable Patch Patch purpose: resolve the Hugging Face Gradio 6 startup state reporting `with SSR ⚡ (experimental, to disable set ssr_mode=False in launch())` by explicitly disabling server-side rendering for this Space package. Changes applied: - Added `ssr_mode=False` to `demo.launch(...)`. - Kept `server_name="0.0.0.0"`, `server_port=int(os.environ.get("PORT", "7860"))`, and `show_error=True`. - Kept `gradio==6.5.1`, `pydantic==2.12.5`, `fastapi<1.0`, and `starlette<1.0` unchanged. - No fixture, schema, receipt, social-card, settlement, propagation, or boundary logic was changed. Validation: - Python import: PASS. - Fixture count: PASS, 10/10 loaded. - Scenario runner: PASS on fixture smoke test. - Local root HTTP render: PASS, returned HTTP 200 with SSR disabled. - Package boundary: PASS, no new runtime behavior beyond launch-mode hardening. ## v0.1.4 ASGI Healthcheck Patch - Replaced direct `demo.launch(...)` with a FastAPI + `gr.mount_gradio_app(...)` ASGI wrapper. - Added `/healthz` route for deterministic HF container health probing. - Mounted the Gradio Blocks app at `/` so the user-facing UI remains Gradio, not static HTML. - Added `uvicorn>=0.30,<1.0` to requirements for explicit ASGI serving. - Kept fixtures, schemas, exported receipts, X-card, settlement logic, propagation logic, and boundary docs unchanged.