| # 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. |
|
|
|
|