Δ9Φ963-v1.1: kernel egg planter + Live BLE gr.Timer fix (HF Space boot)
Browse files
app.py
CHANGED
|
@@ -580,12 +580,20 @@ with gr.Blocks() as demo:
|
|
| 580 |
return _live_connect(url)
|
| 581 |
return "*Set `LYGO_BLE_WS_URL` or paste tunnel URL and click Connect.*"
|
| 582 |
|
| 583 |
-
|
| 584 |
-
|
| 585 |
-
|
| 586 |
-
|
| 587 |
-
|
| 588 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 589 |
demo.load(_live_boot, inputs=None, outputs=[live_status])
|
| 590 |
|
| 591 |
# ---- Twin Gate Phase 3 — isolated from Standard Beat factory ----
|
|
|
|
| 580 |
return _live_connect(url)
|
| 581 |
return "*Set `LYGO_BLE_WS_URL` or paste tunnel URL and click Connect.*"
|
| 582 |
|
| 583 |
+
_live_outputs = [
|
| 584 |
+
live_ibi,
|
| 585 |
+
live_buf,
|
| 586 |
+
live_hmin,
|
| 587 |
+
live_seed,
|
| 588 |
+
live_plot,
|
| 589 |
+
live_hist,
|
| 590 |
+
live_status,
|
| 591 |
+
]
|
| 592 |
+
live_refresh_btn = gr.Button("Refresh dashboard", variant="secondary")
|
| 593 |
+
live_refresh_btn.click(_live_refresh, inputs=None, outputs=_live_outputs)
|
| 594 |
+
if hasattr(gr, "Timer"):
|
| 595 |
+
live_timer = gr.Timer(0.5, active=True)
|
| 596 |
+
live_timer.tick(_live_refresh, inputs=None, outputs=_live_outputs)
|
| 597 |
demo.load(_live_boot, inputs=None, outputs=[live_status])
|
| 598 |
|
| 599 |
# ---- Twin Gate Phase 3 — isolated from Standard Beat factory ----
|
protocol_stack/BUNDLE_VERSION.txt
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
Δ9Φ963-HF-STACK-BUNDLE-
|
|
|
|
| 1 |
+
Δ9Φ963-HF-STACK-BUNDLE-TWIN-GATE-v7.0-PHASE9
|
protocol_stack/tests/phase7_entropy_last_run.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
| 1 |
{
|
| 2 |
-
"timestamp":
|
| 3 |
"signature": "\u03949\u03a6963-PHASE7-v1.0",
|
| 4 |
"ibi_extraction": {
|
| 5 |
"signature": "\u03949\u03a6963-PHASE7-v1.0",
|
| 6 |
"h_min": 0.2451,
|
| 7 |
"von_neumann_bits": 31,
|
| 8 |
"entropy_sufficient": false,
|
| 9 |
-
"seed_256": "
|
| 10 |
"ibi_count": 32
|
| 11 |
},
|
| 12 |
"api_state_preview": {
|
| 13 |
"frequency": 639,
|
| 14 |
"ethical_vector": [
|
| 15 |
-
0.
|
| 16 |
-
0.
|
| 17 |
-
0.
|
| 18 |
]
|
| 19 |
}
|
| 20 |
}
|
|
|
|
| 1 |
{
|
| 2 |
+
"timestamp": 1782981175.8156164,
|
| 3 |
"signature": "\u03949\u03a6963-PHASE7-v1.0",
|
| 4 |
"ibi_extraction": {
|
| 5 |
"signature": "\u03949\u03a6963-PHASE7-v1.0",
|
| 6 |
"h_min": 0.2451,
|
| 7 |
"von_neumann_bits": 31,
|
| 8 |
"entropy_sufficient": false,
|
| 9 |
+
"seed_256": "ed79c7d1ba4317669e79905e74dd205b618f4f44525a160d559ea0fe17ee91c2",
|
| 10 |
"ibi_count": 32
|
| 11 |
},
|
| 12 |
"api_state_preview": {
|
| 13 |
"frequency": 639,
|
| 14 |
"ethical_vector": [
|
| 15 |
+
0.3549,
|
| 16 |
+
0.7329,
|
| 17 |
+
0.2966
|
| 18 |
]
|
| 19 |
}
|
| 20 |
}
|
protocol_stack/tests/phase9_audit_last_run.json
CHANGED
|
@@ -38,5 +38,5 @@
|
|
| 38 |
}
|
| 39 |
],
|
| 40 |
"all_pass": true,
|
| 41 |
-
"duration_ms":
|
| 42 |
}
|
|
|
|
| 38 |
}
|
| 39 |
],
|
| 40 |
"all_pass": true,
|
| 41 |
+
"duration_ms": 627
|
| 42 |
}
|
protocol_stack/tools/verify_alignment_badge.py
CHANGED
|
@@ -57,6 +57,22 @@ def collect_badge(*, quick: bool = False) -> dict:
|
|
| 57 |
badge["checks"]["stack_demo"] = False
|
| 58 |
badge["stack_error"] = str(exc)
|
| 59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
mesh_art = ROOT / "tests" / "mesh_scale_last_run.json"
|
| 61 |
if mesh_art.is_file():
|
| 62 |
try:
|
|
|
|
| 57 |
badge["checks"]["stack_demo"] = False
|
| 58 |
badge["stack_error"] = str(exc)
|
| 59 |
|
| 60 |
+
reg_path = ROOT / "data" / "kernel_eggs" / "registry.json"
|
| 61 |
+
if reg_path.is_file():
|
| 62 |
+
try:
|
| 63 |
+
kr = json.loads(reg_path.read_text(encoding="utf-8"))
|
| 64 |
+
badge["kernel_egg_registry_merkle_root"] = kr.get("registry_merkle_root")
|
| 65 |
+
ke = ROOT / "tests" / "kernel_eggs_last_run.json"
|
| 66 |
+
if ke.is_file():
|
| 67 |
+
kv = json.loads(ke.read_text(encoding="utf-8"))
|
| 68 |
+
badge["checks"]["kernel_eggs"] = kv.get("all_pass", False)
|
| 69 |
+
else:
|
| 70 |
+
badge["checks"]["kernel_eggs"] = None
|
| 71 |
+
except Exception:
|
| 72 |
+
badge["checks"]["kernel_eggs"] = False
|
| 73 |
+
else:
|
| 74 |
+
badge["checks"]["kernel_eggs"] = None
|
| 75 |
+
|
| 76 |
mesh_art = ROOT / "tests" / "mesh_scale_last_run.json"
|
| 77 |
if mesh_art.is_file():
|
| 78 |
try:
|