backblaze-proofframe / tests /test_final_operator_brief.py
ADJCJH's picture
Sync final proof verifier updates
d05817f verified
Raw
History Blame Contribute Delete
12.6 kB
import importlib.util
import json
from pathlib import Path
SCRIPT_PATH = Path(__file__).resolve().parents[1] / "scripts" / "final_operator_brief.py"
SPEC = importlib.util.spec_from_file_location("final_operator_brief", SCRIPT_PATH)
final_operator_brief = importlib.util.module_from_spec(SPEC)
assert SPEC.loader is not None
SPEC.loader.exec_module(final_operator_brief)
def write_file(root: Path, relative_path: str, content: str) -> None:
path = root / relative_path
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(content, encoding="utf-8")
def write_json(root: Path, relative_path: str, payload: dict) -> None:
write_file(root, relative_path, json.dumps(payload))
def write_tasks(root: Path) -> None:
statuses = {
"T020": "doing",
"T021": "doing",
"T040": "done",
"T041": "todo",
"T041A": "todo",
"T042": "todo",
}
write_json(
root,
"tasks.json",
{
"tasks": [
{"id": task_id, "title": task_id, "status": status}
for task_id, status in statuses.items()
]
},
)
def write_ready_fixtures(root: Path) -> None:
write_tasks(root)
write_file(root, ".gitignore", ".env.*\n!.env.final.example\n.env.final.local\n")
write_json(
root,
"docs/assets/b2-live-setup.json",
{
"status": "bucket_created_key_pending",
"bucket_name": "proofframe-demo",
"endpoint": "s3.us-west-004.backblazeb2.com",
"bucket_type": "private",
"prepared_application_key_name": "proofframe-demo-live-proof",
"application_key_status": "form_prepared_not_created",
},
)
write_json(
root,
"docs/assets/b2-key-scope-checklist.json",
{
"schema": "proofframe.b2_key_scope_checklist.v1",
"pre_key_creation_confirmation": {
"status": "required_before_key_creation",
"required_phrase": (
"I confirm ProofFrame B2 key scope: standard key, bucket proofframe-demo, "
"prefix campaigns/, no all-bucket access, no delete/admin permissions, "
"and no secrets in chat/docs/git."
),
"safe_to_store": True,
},
},
)
write_json(
root,
"docs/assets/live-credential-handoff.json",
{
"schema": "proofframe.live_credential_handoff.v1",
"mode": "missing_live_env",
"ok": False,
"source": ".env.final.local",
"missing_ids": ["b2_key_id", "b2_application_key", "genblaze_api_key"],
"required": [
{"id": "storage_backend_mode", "ok": True},
{"id": "generation_backend_mode", "ok": True},
{"id": "b2_endpoint", "ok": True},
{"id": "b2_bucket", "ok": True},
{"id": "b2_key_id", "ok": False},
{"id": "b2_application_key", "ok": False},
{"id": "genblaze_api_key", "ok": False},
{"id": "genblaze_image_model", "ok": True},
],
},
)
write_json(
root,
"docs/assets/devpost-event-snapshot.json",
{"schema": "proofframe.devpost_event_snapshot.v1", "validation": {"ok": True}},
)
write_json(
root,
"docs/assets/recording-assets.json",
{
"schema": "proofframe.recording_assets.v1",
"mock_recording_ready": True,
"public_mock_verified": True,
},
)
write_json(
root,
"docs/assets/public-video-check.json",
{
"schema": "proofframe.public_video_check.v1",
"mode": "pending_video_url",
"safe_to_submit": False,
},
)
write_json(
root,
"docs/assets/award-readiness-report.json",
{
"schema": "proofframe.award_readiness.v1",
"mode": "pre_live_competitive",
"score": 97,
"max_score": 115,
},
)
write_json(
root,
"docs/assets/secret-scan-report.json",
{
"schema": "proofframe.secret_scan.v1",
"mode": "clear",
"ok": True,
},
)
write_json(
root,
"docs/assets/final-submission-control.json",
{
"schema": "proofframe.final_submission_control.v1",
"mode": "pre_live_control",
"safe_to_submit": False,
},
)
write_json(
root,
"docs/assets/submission-audit-report.json",
{
"schema": "proofframe.submission_audit.v1",
"mode": "pre_submit_audit_blocked",
"ok": False,
},
)
write_json(
root,
"docs/assets/final-rehearsal-checklist.json",
{
"schema": "proofframe.final_rehearsal.v1",
"mode": "ready_for_credential_rehearsal",
"ok": True,
},
)
write_json(
root,
"docs/assets/devpost-submission-checklist.json",
{
"schema": "proofframe.devpost_submission_checklist.v1",
"mode": "pre_submit_blocked",
"ok": False,
"safe_to_submit": False,
},
)
write_json(
root,
"docs/assets/devpost-submission-receipt.json",
{
"schema": "proofframe.devpost_submission_receipt.v1",
"mode": "pending_submission",
"ok": False,
},
)
write_json(
root,
"docs/assets/submission-bundle-manifest.json",
{
"schema": "proofframe.submission_bundle.v1",
"mode": "pre_live_safe",
"safe_to_submit": False,
},
)
def test_final_operator_brief_is_ready_for_secret_entry(tmp_path):
write_ready_fixtures(tmp_path)
report = final_operator_brief.build_report(tmp_path)
assert report["mode"] == "credential_entry_ready"
assert report["ready_for_secret_entry"] is True
assert report["safe_to_submit"] is False
assert report["credential_handoff"]["missing_ids"] == [
"b2_key_id",
"b2_application_key",
"genblaze_api_key",
]
assert report["safety_policy"]["env_final_local_ignored"] is True
assert report["b2_pre_key_confirmation"]["status"] == "required_before_key_creation"
assert any("I confirm ProofFrame B2 key scope" in action for action in report["user_actions"])
assert any("least-privilege Backblaze B2" in action for action in report["user_actions"])
assert 'python scripts/devpost_packet.py --post-live --video-url "$PROOFFRAME_PUBLIC_VIDEO_URL"' in report[
"codex_actions_after_credentials"
]
assert report["codex_actions_after_credentials"][0] == (
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks"
)
assert report["codex_actions_after_credentials"][1:4] == [
'python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after live proof"',
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
]
assert not any(
action.startswith("python scripts/run_b2_live_proof.py")
or action.startswith("python scripts/run_final_live_proof.py")
for action in report["codex_actions_after_credentials"]
)
assert "python scripts/submission_audit.py --strict-final" in report["codex_actions_after_credentials"]
assert "python scripts/devpost_submission_preview.py" in report["codex_actions_after_credentials"]
assert "python scripts/devpost_submission_checklist.py --strict-final" in report[
"codex_actions_after_credentials"
]
assert "docs/assets/devpost-submission-preview.json" in report["safety_policy"]["safe_to_commit_after_scan"]
assert any(
action.startswith('python scripts/devpost_submission_receipt.py --project-url "$PROOFFRAME_DEVPOST_PROJECT_URL"')
for action in report["codex_actions_after_credentials"]
)
actions = report["codex_actions_after_credentials"]
receipt_index = next(index for index, action in enumerate(actions) if action.startswith("python scripts/devpost_submission_receipt.py"))
assert actions[receipt_index + 1 :] == [
"python scripts/secret_scan.py",
"python scripts/final_submission_control.py --strict-final",
"python scripts/final_launch_plan.py --strict-final",
"python scripts/devpost_submission_preview.py --strict-final",
"python scripts/submission_bundle.py --strict-final",
'python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after final receipt"',
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
]
assert report["reports"]["secret_scan"]["schema_ok"] is True
assert report["reports"]["public_video_check"]["schema_ok"] is True
assert report["reports"]["submission_audit"]["schema_ok"] is True
assert report["reports"]["final_rehearsal"]["schema_ok"] is True
assert report["reports"]["devpost_submission_checklist"]["schema_ok"] is True
assert report["reports"]["devpost_submission_receipt"]["schema_ok"] is True
assert report["reports"]["submission_bundle"]["schema_ok"] is True
def test_final_operator_brief_is_ready_for_genblaze_live_proof(tmp_path):
write_ready_fixtures(tmp_path)
write_json(
tmp_path,
"tasks.json",
{
"tasks": [
{"id": "T020", "title": "T020", "status": "done"},
{"id": "T021", "title": "T021", "status": "blocked"},
{"id": "T040", "title": "T040", "status": "done"},
{"id": "T041", "title": "T041", "status": "todo"},
{"id": "T041A", "title": "T041A", "status": "todo"},
{"id": "T042", "title": "T042", "status": "todo"},
]
},
)
write_json(
tmp_path,
"docs/assets/live-credential-handoff.json",
{
"schema": "proofframe.live_credential_handoff.v1",
"mode": "live_env_ready",
"ok": True,
"source": ".env.final.local",
"missing_ids": [],
"required": [
{"id": "storage_backend_mode", "ok": True},
{"id": "generation_backend_mode", "ok": True},
{"id": "b2_endpoint", "ok": True},
{"id": "b2_bucket", "ok": True},
{"id": "b2_key_id", "ok": True},
{"id": "b2_application_key", "ok": True},
{"id": "genblaze_api_key", "ok": True},
{"id": "genblaze_image_model", "ok": True},
],
},
)
report = final_operator_brief.build_report(tmp_path)
assert report["mode"] == "genblaze_live_proof_ready"
assert report["ready_for_secret_entry"] is False
assert report["ready_for_genblaze_live_proof"] is True
assert report["credential_handoff"]["missing_ids"] == []
assert any("credential-free local Genblaze Pipeline route" in action for action in report["user_actions"])
def test_final_operator_brief_blocks_unexpected_missing_values(tmp_path):
write_ready_fixtures(tmp_path)
handoff = json.loads((tmp_path / "docs/assets/live-credential-handoff.json").read_text())
handoff["missing_ids"] = ["b2_endpoint", "b2_key_id"]
write_json(tmp_path, "docs/assets/live-credential-handoff.json", handoff)
report = final_operator_brief.build_report(tmp_path)
assert report["ready_for_secret_entry"] is False
assert report["mode"] == "needs_operator_setup"
def test_final_operator_brief_writes_outputs(tmp_path):
write_ready_fixtures(tmp_path)
report = final_operator_brief.build_report(tmp_path)
json_path = tmp_path / "out" / "brief.json"
markdown_path = tmp_path / "out" / "brief.md"
final_operator_brief.write_outputs(report, 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"] == final_operator_brief.SCHEMA
assert "# ProofFrame Final Operator Brief" in markdown
assert "## User Actions" in markdown
assert "I confirm ProofFrame B2 key scope" in markdown