Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer, web workflow engine and protocol, tooling, docs and task records. Large generated evidence, user-testing archives, build snapshots and imported test assets remain untracked. Co-Authored-By: Claude Code <noreply@anthropic.com>
36 lines
1.2 KiB
Python
Executable File
36 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Transport test double, not Blender behavioral evidence."""
|
|
import hashlib
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
import signal
|
|
import sys
|
|
import time
|
|
|
|
envelope = json.load(sys.stdin)
|
|
request = envelope["request"]
|
|
root = Path(envelope["workspaceRoot"])
|
|
mode = request["properties"].get("mode", "success")
|
|
if mode == "signal":
|
|
os.kill(os.getpid(), signal.SIGTERM)
|
|
time.sleep(10 if mode == "slow" else 0.4)
|
|
if mode == "malformed":
|
|
(root / "result.json").write_text("{")
|
|
sys.exit(0)
|
|
result = {key: request[key] for key in (
|
|
"schemaVersion", "route", "jobId", "sourceBlendSha256", "sourceRevision",
|
|
"blenderBuild", "propertiesSha256", "requestSha256",
|
|
)}
|
|
data = b"transport-result"
|
|
result.update(status="SUCCEEDED", result=["FINISHED"],
|
|
resultSha256=hashlib.sha256(b'["FINISHED"]').hexdigest(),
|
|
resultBlendByteLength=len(data),
|
|
resultBlendSha256=hashlib.sha256(data).hexdigest())
|
|
if mode == "bad-hash":
|
|
result["resultBlendSha256"] = "0" * 64
|
|
if mode == "bad-binding":
|
|
result["sourceRevision"] += 1
|
|
(root / "result.blend").write_bytes(data)
|
|
(root / "result.json").write_text(json.dumps(result))
|