Record BTE ComfyUI GX10 restore blocker
This commit is contained in:
@@ -29,3 +29,8 @@ items:
|
||||
status: complete
|
||||
source: INDEX.md
|
||||
owner: ""
|
||||
- id: SVRNTY-VISION-WORK-009
|
||||
title: BTE-WORK-038 ComfyUI GX10 Restore Proof
|
||||
status: blocked-on-gx10-cuda-initialization
|
||||
source: docs/goal-runs/bte-work-038-comfyui-gx10-restore-proof/svrnty-vision-work-009-comfyui-gx10-restore-proof.md
|
||||
owner: jp
|
||||
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"schema": "svrnty-vision.bte-work-038-comfyui-gx10-restore-proof.v1",
|
||||
"timestamp": "2026-06-20T15:53:27Z",
|
||||
"work_item_id": "SVRNTY-VISION-WORK-009",
|
||||
"route": "svrnty-vision",
|
||||
"status": "blocked_on_gx10_cuda_initialization_no_bte_retry",
|
||||
"approval_ref": "APPROVED: BTE-WORK-038 ComfyUI/GX10 restore proof and single third retry",
|
||||
"authority_effect": "provider_route_health_refresh_attempted",
|
||||
"product_ready_claim": false,
|
||||
"provider_gateway_health": {
|
||||
"route_identity": "svrnty-vision",
|
||||
"url_ref": "http://localhost:8092/healthz",
|
||||
"http_status": 200,
|
||||
"body_status": "ok",
|
||||
"version": "0.1.0"
|
||||
},
|
||||
"provider_gateway_health_from_bte_runtime_namespace": {
|
||||
"route_identity": "svrnty-vision",
|
||||
"url_ref": "http://172.20.0.1:8092/healthz",
|
||||
"http_status": 200,
|
||||
"body_status": "ok",
|
||||
"version": "0.1.0"
|
||||
},
|
||||
"local_comfyui_gx10_health_before_refresh": {
|
||||
"route_identity": "local-comfyui-gx10",
|
||||
"host": "gx10-f38f",
|
||||
"url_ref": "http://100.90.100.10:8188",
|
||||
"system_stats_url_ref": "http://100.90.100.10:8188/system_stats",
|
||||
"http_status": 0,
|
||||
"reachability_method": "curl_get_system_stats_and_root",
|
||||
"failure_class": "connection_refused",
|
||||
"tailscale_ping": {
|
||||
"packet_loss_percent": 0,
|
||||
"rtt_avg_ms": 1.441
|
||||
},
|
||||
"ssh_port_open": true
|
||||
},
|
||||
"local_comfyui_gx10_refresh_attempt": {
|
||||
"route_identity": "local-comfyui-gx10",
|
||||
"ssh_target": "svrnty@100.90.100.10",
|
||||
"host": "gx10-f38f",
|
||||
"existing_listener_ports": [
|
||||
8003
|
||||
],
|
||||
"pre_existing_comfyui_process": false,
|
||||
"checkout_ref": "/home/svrnty/comfyui",
|
||||
"command_shape": "cd ~/comfyui && nohup python3 main.py --listen 0.0.0.0 --port 8188 --disable-auto-launch > log 2>&1 &",
|
||||
"started_pid_ref": "291869",
|
||||
"log_ref": "gx10-f38f:/home/svrnty/comfyui/comfyui-bte-work-038-20260620T155144Z.log",
|
||||
"process_stayed_running": false,
|
||||
"failure_class": "cuda_initialization_failed",
|
||||
"failure_summary": "ComfyUI exited before binding port 8188 because torch CUDA initialization failed and CUDA was unavailable to the process.",
|
||||
"raw_log_stored_in_proof": false
|
||||
},
|
||||
"local_comfyui_gx10_health_after_refresh": {
|
||||
"route_identity": "local-comfyui-gx10",
|
||||
"host": "gx10-f38f",
|
||||
"url_ref": "http://100.90.100.10:8188",
|
||||
"system_stats_url_ref": "http://100.90.100.10:8188/system_stats",
|
||||
"http_status": 0,
|
||||
"reachability_method": "bounded_30_poll_curl_get_system_stats",
|
||||
"failure_class": "connection_refused",
|
||||
"required_for_bte_third_retry": 200
|
||||
},
|
||||
"bte_retry_gate": {
|
||||
"bte_third_retry_attempted": false,
|
||||
"reason": "local_comfyui_gx10_health_after_refresh.http_status was not 200",
|
||||
"prior_retry_asset_ref": "5c1eedc5-e281-4c8c-82d3-bc4d764d2111",
|
||||
"prior_retry_saga_ref": "ee27c2b3-a415-47a8-8d75-7bd834f6b99e",
|
||||
"approval_expired_after": "first_failed_or_blocked_provider_live_effect"
|
||||
},
|
||||
"source_refs": {
|
||||
"bte_provider_route_handoff": "../bte/docs/BTE-WORK-038-PROVIDER-ROUTE-HANDOFF.json",
|
||||
"bte_runtime_proof": "../bte/docs/goal-runs/bte-sovereign-creative-supercomputer-product-ready/proof/bte-work-038-runtime-rest-provider-proof.json",
|
||||
"svrnty_vision_agent_contract": "AGENTS.md",
|
||||
"network_skill_reference": "/home/svrnty/.codex/skills/network/SKILL.md"
|
||||
},
|
||||
"tool_effects": {
|
||||
"mutated_svrnty_vision_files": true,
|
||||
"network": true,
|
||||
"provider_gateway_health_checked": true,
|
||||
"remote_comfyui_start_attempted": true,
|
||||
"remote_comfyui_left_running": false,
|
||||
"bte_rest_call": false,
|
||||
"provider_call": false,
|
||||
"local_generation_call": false,
|
||||
"mcp_registration": false,
|
||||
"profile_exposure_change": false,
|
||||
"core_mutation": false,
|
||||
"bte_repo_mutation_from_this_packet": false,
|
||||
"archive_delete_execution": false,
|
||||
"raw_payload_storage": false,
|
||||
"product_ready_claim": false,
|
||||
"release_claim": false,
|
||||
"production_readiness_claim": false
|
||||
},
|
||||
"validation": {
|
||||
"validator": "tools/validate_svrnty_vision_bte_work_038_comfyui_gx10_restore.py",
|
||||
"route_validator": "tools/validate_svrnty_vision_child.py"
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
---
|
||||
type: provider-route-proof
|
||||
id: SVRNTY-VISION-WORK-009
|
||||
status: blocked-on-gx10-cuda-initialization
|
||||
machine_contract: svrnty-vision-work-009-comfyui-gx10-restore-proof.json
|
||||
---
|
||||
|
||||
# Svrnty Vision BTE-WORK-038 ComfyUI/GX10 Restore Proof
|
||||
|
||||
This packet records the provider-route side of the approved `BTE-WORK-038`
|
||||
ComfyUI/GX10 restore proof. It is compact proof metadata only.
|
||||
|
||||
## Result
|
||||
|
||||
- `svrnty-vision` health was proven from the host path: HTTP 200, status `ok`.
|
||||
- `svrnty-vision` health was proven from the BTE runtime namespace path:
|
||||
HTTP 200, status `ok`.
|
||||
- `gx10-f38f` was reachable over Tailscale and SSH.
|
||||
- `http://100.90.100.10:8188/system_stats` and
|
||||
`http://100.90.100.10:8188/` were connection-refused before refresh.
|
||||
- A bounded ComfyUI start was attempted from `/home/svrnty/comfyui`.
|
||||
- ComfyUI exited before binding port 8188 because CUDA initialization failed.
|
||||
- A bounded 30-poll health loop still found port 8188 connection-refused.
|
||||
- The BTE third retry was not attempted because ComfyUI/GX10 health was not
|
||||
HTTP 200.
|
||||
|
||||
## Blocker
|
||||
|
||||
The blocker is `gx10-f38f` CUDA availability for the ComfyUI process, not BTE
|
||||
render parameters and not the `svrnty-vision` gateway. The compact error class
|
||||
is `cuda_initialization_failed`.
|
||||
|
||||
## Payload Posture
|
||||
|
||||
No secrets were read.
|
||||
No raw prompt was stored.
|
||||
No raw provider payload was stored.
|
||||
No generated binary was stored in proof.
|
||||
No BTE REST creative call was made.
|
||||
No provider generation call was made.
|
||||
No Product Ready claim was made.
|
||||
|
||||
## Validation
|
||||
|
||||
- `python3 tools/validate_svrnty_vision_bte_work_038_comfyui_gx10_restore.py`
|
||||
- `python3 tools/validate_svrnty_vision_child.py`
|
||||
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Validate the Svrnty Vision BTE-WORK-038 ComfyUI/GX10 restore proof."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PROOF = (
|
||||
ROOT
|
||||
/ "docs"
|
||||
/ "goal-runs"
|
||||
/ "bte-work-038-comfyui-gx10-restore-proof"
|
||||
/ "svrnty-vision-work-009-comfyui-gx10-restore-proof.json"
|
||||
)
|
||||
REPORT = PROOF.with_suffix(".md")
|
||||
APPROVAL_REF = "APPROVED: BTE-WORK-038 ComfyUI/GX10 restore proof and single third retry"
|
||||
|
||||
|
||||
def require(condition: bool, errors: list[str], code: str) -> None:
|
||||
if not condition:
|
||||
errors.append(code)
|
||||
|
||||
|
||||
def load_json(path: Path, errors: list[str]) -> dict[str, Any]:
|
||||
if not path.exists():
|
||||
errors.append(f"missing:{path.relative_to(ROOT)}")
|
||||
return {}
|
||||
try:
|
||||
payload = json.loads(path.read_text(encoding="utf-8"))
|
||||
except json.JSONDecodeError as exc:
|
||||
errors.append(f"{path.name}:invalid_json:{exc.lineno}:{exc.colno}")
|
||||
return {}
|
||||
if not isinstance(payload, dict):
|
||||
errors.append(f"{path.name}:not_object")
|
||||
return {}
|
||||
return payload
|
||||
|
||||
|
||||
def main() -> int:
|
||||
errors: list[str] = []
|
||||
proof = load_json(PROOF, errors)
|
||||
report = REPORT.read_text(encoding="utf-8") if REPORT.exists() else ""
|
||||
|
||||
require(REPORT.exists(), errors, "report:missing")
|
||||
require(proof.get("schema") == "svrnty-vision.bte-work-038-comfyui-gx10-restore-proof.v1", errors, "schema")
|
||||
require(proof.get("work_item_id") == "SVRNTY-VISION-WORK-009", errors, "work_item_id")
|
||||
require(proof.get("route") == "svrnty-vision", errors, "route")
|
||||
require(proof.get("status") == "blocked_on_gx10_cuda_initialization_no_bte_retry", errors, "status")
|
||||
require(proof.get("approval_ref") == APPROVAL_REF, errors, "approval_ref")
|
||||
require(proof.get("product_ready_claim") is False, errors, "product_ready_claim")
|
||||
|
||||
gateway = proof.get("provider_gateway_health", {})
|
||||
require(gateway.get("http_status") == 200, errors, "gateway:http_status")
|
||||
require(gateway.get("body_status") == "ok", errors, "gateway:body_status")
|
||||
bte_namespace = proof.get("provider_gateway_health_from_bte_runtime_namespace", {})
|
||||
require(bte_namespace.get("http_status") == 200, errors, "bte_namespace:http_status")
|
||||
require(bte_namespace.get("body_status") == "ok", errors, "bte_namespace:body_status")
|
||||
|
||||
before = proof.get("local_comfyui_gx10_health_before_refresh", {})
|
||||
require(before.get("http_status") == 0, errors, "before:http_status")
|
||||
require(before.get("failure_class") == "connection_refused", errors, "before:failure_class")
|
||||
require(before.get("ssh_port_open") is True, errors, "before:ssh")
|
||||
|
||||
refresh = proof.get("local_comfyui_gx10_refresh_attempt", {})
|
||||
require(refresh.get("host") == "gx10-f38f", errors, "refresh:host")
|
||||
require(refresh.get("checkout_ref") == "/home/svrnty/comfyui", errors, "refresh:checkout")
|
||||
require(refresh.get("process_stayed_running") is False, errors, "refresh:process")
|
||||
require(refresh.get("failure_class") == "cuda_initialization_failed", errors, "refresh:failure_class")
|
||||
require(refresh.get("raw_log_stored_in_proof") is False, errors, "refresh:raw_log")
|
||||
|
||||
after = proof.get("local_comfyui_gx10_health_after_refresh", {})
|
||||
require(after.get("http_status") == 0, errors, "after:http_status")
|
||||
require(after.get("failure_class") == "connection_refused", errors, "after:failure_class")
|
||||
require(after.get("required_for_bte_third_retry") == 200, errors, "after:required")
|
||||
|
||||
retry = proof.get("bte_retry_gate", {})
|
||||
require(retry.get("bte_third_retry_attempted") is False, errors, "retry:attempted")
|
||||
require(retry.get("prior_retry_asset_ref") == "5c1eedc5-e281-4c8c-82d3-bc4d764d2111", errors, "retry:asset")
|
||||
require(retry.get("approval_expired_after") == "first_failed_or_blocked_provider_live_effect", errors, "retry:expiry")
|
||||
|
||||
effects = proof.get("tool_effects", {})
|
||||
require(effects.get("remote_comfyui_start_attempted") is True, errors, "effects:start_attempted")
|
||||
require(effects.get("remote_comfyui_left_running") is False, errors, "effects:left_running")
|
||||
for key in (
|
||||
"bte_rest_call",
|
||||
"provider_call",
|
||||
"local_generation_call",
|
||||
"mcp_registration",
|
||||
"profile_exposure_change",
|
||||
"core_mutation",
|
||||
"archive_delete_execution",
|
||||
"raw_payload_storage",
|
||||
"product_ready_claim",
|
||||
"release_claim",
|
||||
"production_readiness_claim",
|
||||
):
|
||||
require(effects.get(key) is False, errors, f"effects:{key}")
|
||||
|
||||
for snippet in (
|
||||
"ComfyUI/GX10 Restore Proof",
|
||||
"HTTP 200, status `ok`",
|
||||
"connection-refused",
|
||||
"cuda_initialization_failed",
|
||||
"BTE third retry was not attempted",
|
||||
"No raw provider payload was stored.",
|
||||
"No Product Ready claim was made.",
|
||||
):
|
||||
require(snippet in report, errors, f"report:missing:{snippet}")
|
||||
|
||||
result = {
|
||||
"ok": not errors,
|
||||
"validator": "svrnty-vision-bte-work-038-comfyui-gx10-restore-v1",
|
||||
"checked": [str(PROOF.relative_to(ROOT)), str(REPORT.relative_to(ROOT))],
|
||||
"errors": errors,
|
||||
"warnings": [],
|
||||
}
|
||||
print(json.dumps(result, indent=2, sort_keys=True))
|
||||
return 0 if result["ok"] else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
@@ -41,6 +41,12 @@ VALIDATORS = [
|
||||
"tools/validate_vision_host_adapter_candidates.py",
|
||||
"tools/validate_vision_package_docker_context.py",
|
||||
]
|
||||
OPTIONAL_PROOF_VALIDATORS = [
|
||||
(
|
||||
"docs/goal-runs/bte-work-038-comfyui-gx10-restore-proof/svrnty-vision-work-009-comfyui-gx10-restore-proof.json",
|
||||
"tools/validate_svrnty_vision_bte_work_038_comfyui_gx10_restore.py",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
def main() -> int:
|
||||
@@ -121,6 +127,30 @@ def main() -> int:
|
||||
validator_outputs[rel] = completed.stdout.strip()
|
||||
if completed.returncode != 0:
|
||||
errors.append(f"validator_failed:{rel}:{completed.stderr.strip()}")
|
||||
for proof_rel, validator_rel in OPTIONAL_PROOF_VALIDATORS:
|
||||
proof_path = ROOT / proof_rel
|
||||
validator_path = ROOT / validator_rel
|
||||
if not proof_path.exists() and not validator_path.exists():
|
||||
continue
|
||||
if not proof_path.exists():
|
||||
errors.append(f"missing:{proof_rel}")
|
||||
continue
|
||||
if not validator_path.exists():
|
||||
errors.append(f"missing:{validator_rel}")
|
||||
continue
|
||||
env = os.environ.copy()
|
||||
env["PYTHONDONTWRITEBYTECODE"] = "1"
|
||||
completed = subprocess.run(
|
||||
[sys.executable, str(validator_path)],
|
||||
cwd=ROOT,
|
||||
env=env,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
)
|
||||
validator_outputs[validator_rel] = completed.stdout.strip()
|
||||
if completed.returncode != 0:
|
||||
errors.append(f"validator_failed:{validator_rel}:{completed.stderr.strip()}")
|
||||
for rel in GENERATED_ARTIFACT_DIRS:
|
||||
if (ROOT / rel).exists():
|
||||
errors.append(f"generated_artifact_residue:{rel}")
|
||||
|
||||
Reference in New Issue
Block a user