backblaze-proofframe / tests /test_devpost_submission_preview.py
ADJCJH's picture
Sync Devpost submission preview
36ebc46 verified
Raw
History Blame Contribute Delete
8.27 kB
import importlib.util
import json
from pathlib import Path
SCRIPT_PATH = Path(__file__).resolve().parents[1] / "scripts" / "devpost_submission_preview.py"
SPEC = importlib.util.spec_from_file_location("devpost_submission_preview", SCRIPT_PATH)
devpost_submission_preview = importlib.util.module_from_spec(SPEC)
assert SPEC.loader is not None
SPEC.loader.exec_module(devpost_submission_preview)
def write_json(root: Path, relative_path: str, payload: dict) -> None:
path = root / relative_path
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(json.dumps(payload), encoding="utf-8")
def packet(*, live: bool = False) -> dict:
return {
"schema": "proofframe.devpost_packet.v1",
"mode": "post_live_verified" if live else "pre_live_safe",
"project_name": "ProofFrame",
"tagline": "B2-ready provenance desk for GenAI media.",
"one_liner": "ProofFrame turns generated media into evidence packets.",
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
"demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
"video_url": "https://youtu.be/final-proof" if live else "TBD after final B2 and Genblaze proof.",
"short_description": "A review desk for generated media evidence packets.",
"b2_usage": "B2 live proof is a final submission gate.",
"genblaze_usage": "Genblaze live proof is a final submission gate.",
"accomplishments": ["Working product.", "Public mock demo."],
"whats_next": ["Live B2 proof.", "Live Genblaze proof."],
}
def form_kit(*, live: bool = False) -> dict:
return {
"schema": "proofframe.devpost_form_kit.v1",
"mode": "final_form_ready" if live else "pre_live_form_ready",
"mock_form_ready": True,
"final_form_ready": live,
"public_video_ready": live,
"fields": [
{
"id": "project_name",
"label": "Project name",
"ok_for_mock": True,
"ok_for_final": True,
},
{
"id": "video_url",
"label": "Demo video URL",
"ok_for_mock": True,
"ok_for_final": live,
},
],
}
def screenshot_report(*, ok: bool = True) -> dict:
return {
"schema": "proofframe.public_demo_screenshot.v1",
"mode": "public_judge_screenshot_ready" if ok else "public_judge_screenshot_blocked",
"ok": ok,
"safe_to_commit": True,
"screenshot": {
"path": "docs/assets/proofframe-hf-public-smoke.png",
"bytes": 741074 if ok else 100,
"width": 1440,
"height": 2692,
},
"markers": {"visible_ok": ok, "html_ok": ok},
}
def public_space_sync(*, ok: bool = True) -> dict:
return {
"schema": "proofframe.public_space_sync.v1",
"mode": "public_space_synced" if ok else "public_space_mismatch",
"ok": ok,
"observed": {
"public_demo_screenshot": {
"ok": ok,
"visible_ok": ok,
"html_ok": ok,
}
},
}
def final_control(*, live: bool = False) -> dict:
return {
"schema": "proofframe.final_submission_control.v1",
"mode": "final_ready" if live else "pre_live_control",
"safe_to_submit": live,
"blocking_items": []
if live
else [
{
"id": "b2_live_proof",
"label": "Backblaze B2 live proof captured",
"detail": "T020 is doing.",
"evidence": "tasks.json",
},
{
"id": "genblaze_live_proof",
"label": "Genblaze live proof captured",
"detail": "T021 is doing.",
"evidence": "tasks.json",
},
],
}
def write_fixtures(root: Path, *, live: bool = False, screenshot_ok: bool = True) -> None:
write_json(root, "docs/assets/devpost-submission-packet.json", packet(live=live))
write_json(root, "docs/assets/devpost-form-kit.json", form_kit(live=live))
write_json(
root,
"docs/assets/judge-brief.json",
{
"schema": "proofframe.judge_brief.v1",
"judge_opening_30s": "ProofFrame is a media operations desk.",
"links": {
"public_demo": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
"repository": "https://github.com/adjcjh777/backblaze-proofframe",
},
},
)
write_json(
root,
"docs/assets/judge-crosswalk.json",
{
"schema": "proofframe.judge_crosswalk.v1",
"mode": "final_crosswalk_ready" if live else "pre_live_crosswalk_ready",
"safe_to_submit": live,
"official_criteria": [{"name": "Production Readiness", "present": True}],
"rows": [{"id": "production"}],
},
)
write_json(root, "docs/assets/public-demo-screenshot-report.json", screenshot_report(ok=screenshot_ok))
write_json(root, "docs/assets/public-space-sync-report.json", public_space_sync(ok=screenshot_ok))
write_json(root, "docs/assets/final-submission-control.json", final_control(live=live))
write_json(
root,
"docs/assets/devpost-submission-checklist.json",
{
"schema": "proofframe.devpost_submission_checklist.v1",
"mode": "ready" if live else "pre_submit_blocked",
"safe_to_submit": live,
},
)
write_json(
root,
"docs/assets/submission-audit-report.json",
{
"schema": "proofframe.submission_audit.v1",
"mode": "final_submit_ready" if live else "pre_submit_audit_blocked",
"ok": live,
},
)
write_json(
root,
"docs/assets/secret-scan-report.json",
{"schema": "proofframe.secret_scan.v1", "mode": "clear", "ok": True},
)
def test_devpost_submission_preview_is_shareable_but_not_submittable_before_live_proof(tmp_path):
write_fixtures(tmp_path)
preview = devpost_submission_preview.build_preview(tmp_path)
assert preview["schema"] == "proofframe.devpost_submission_preview.v1"
assert preview["mode"] == "pre_live_preview_ready"
assert preview["safe_to_share"] is True
assert preview["safe_to_submit"] is False
assert preview["field_rollup"]["mock_ready"] is True
assert preview["field_rollup"]["final_ready"] is False
assert {item["id"] for item in preview["submission_readiness"]["final_blockers"]} == {
"b2_live_proof",
"genblaze_live_proof",
}
assert "Do not claim completed live Backblaze B2 storage" in preview["claim_boundary"][1]
def test_devpost_submission_preview_blocks_when_public_screenshot_is_not_verified(tmp_path):
write_fixtures(tmp_path, screenshot_ok=False)
preview = devpost_submission_preview.build_preview(tmp_path)
assert preview["mode"] == "preview_blocked"
assert preview["safe_to_share"] is False
assert "Regenerate the public judge-mode screenshot report." in preview["next_actions"]
def test_devpost_submission_preview_can_be_final_ready_after_live_gates(tmp_path):
write_fixtures(tmp_path, live=True)
preview = devpost_submission_preview.build_preview(tmp_path)
assert preview["mode"] == "final_preview_ready"
assert preview["safe_to_share"] is True
assert preview["safe_to_submit"] is True
assert preview["submission_readiness"]["final_blockers"] == []
def test_devpost_submission_preview_writes_outputs(tmp_path):
write_fixtures(tmp_path)
preview = devpost_submission_preview.build_preview(tmp_path)
json_path = tmp_path / "out" / "preview.json"
markdown_path = tmp_path / "out" / "preview.md"
devpost_submission_preview.write_outputs(preview, json_path, markdown_path)
saved = json.loads(json_path.read_text(encoding="utf-8"))
markdown = markdown_path.read_text(encoding="utf-8")
assert saved["schema"] == "proofframe.devpost_submission_preview.v1"
assert "# ProofFrame Devpost Submission Preview" in markdown
assert "## Final Blockers" in markdown