Spaces:
Sleeping
Sleeping
Sync B2 live proof evidence
Browse files- docs/assets/agent-handoff-report.json +1 -1
- docs/assets/agent-handoff-report.md +1 -1
- docs/assets/b2-live-proof-evidence.json +56 -0
- docs/assets/final-submission-control.json +14 -28
- docs/assets/final-submission-control.md +6 -6
- docs/assets/live-credential-handoff.json +11 -8
- docs/assets/live-credential-handoff.md +2 -4
- docs/assets/public-api-smoke-evidence.json +8 -8
- docs/assets/public-space-sync-report.json +11 -11
- docs/assets/public-space-sync-report.md +6 -6
- docs/assets/public-space-upload-report.json +7 -7
- docs/assets/public-space-upload-report.md +5 -5
- docs/assets/secret-scan-report.json +5 -3
- docs/assets/secret-scan-report.md +2 -2
- docs/assets/submission-audit-report.json +4 -10
- docs/assets/submission-audit-report.md +4 -5
- docs/assets/submission-bundle-manifest.json +38 -38
- docs/assets/submission-bundle-manifest.md +24 -24
- docs/todo.md +12 -0
- src/proofframe/storage.py +10 -0
- tasks.json +7 -7
- tests/test_integrations.py +12 -0
docs/assets/agent-handoff-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.agent_handoff.v1",
|
| 3 |
-
"created_at": "2026-
|
| 4 |
"ok": true,
|
| 5 |
"mode": "handoff_ready",
|
| 6 |
"repo_root": "/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.agent_handoff.v1",
|
| 3 |
+
"created_at": "2026-07-01T10:56:41Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "handoff_ready",
|
| 6 |
"repo_root": "/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe",
|
docs/assets/agent-handoff-report.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
Mode: `handoff_ready`
|
| 4 |
OK: `true`
|
| 5 |
-
Created: `2026-
|
| 6 |
Repo root: `/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe`
|
| 7 |
|
| 8 |
## AGENTS.md
|
|
|
|
| 2 |
|
| 3 |
Mode: `handoff_ready`
|
| 4 |
OK: `true`
|
| 5 |
+
Created: `2026-07-01T10:56:41Z`
|
| 6 |
Repo root: `/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe`
|
| 7 |
|
| 8 |
## AGENTS.md
|
docs/assets/b2-live-proof-evidence.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"ok": true,
|
| 3 |
+
"base_url": "http://127.0.0.1:8088",
|
| 4 |
+
"generation_backend": "mock",
|
| 5 |
+
"storage_backend": "b2",
|
| 6 |
+
"judge_brief_schema": "proofframe.judge_brief.v1",
|
| 7 |
+
"judge_safe_to_submit": false,
|
| 8 |
+
"judge_crosswalk_schema": "proofframe.judge_crosswalk.v1",
|
| 9 |
+
"judge_crosswalk_mode": "pre_live_crosswalk_ready",
|
| 10 |
+
"judge_crosswalk_safe_to_submit": false,
|
| 11 |
+
"judge_crosswalk_rows": 4,
|
| 12 |
+
"judge_decision_brief_schema": "proofframe.judge_decision_brief.v1",
|
| 13 |
+
"judge_decision_brief_mode": "pre_live_decision_ready",
|
| 14 |
+
"judge_decision_brief_safe_to_submit": false,
|
| 15 |
+
"judge_decision_brief_checks": 6,
|
| 16 |
+
"judge_evidence_index_schema": "proofframe.judge_evidence_index.v1",
|
| 17 |
+
"judge_evidence_index_mode": "pre_live_evidence_index_ready",
|
| 18 |
+
"judge_evidence_index_safe_to_submit": false,
|
| 19 |
+
"judge_evidence_index_links": 18,
|
| 20 |
+
"judge_final_closeout_schema": "proofframe.final_closeout_status.v1",
|
| 21 |
+
"judge_final_closeout_mode": "waiting_for_credentials",
|
| 22 |
+
"judge_final_closeout_health_ok": true,
|
| 23 |
+
"judge_final_closeout_safe_to_submit": false,
|
| 24 |
+
"judge_final_closeout_gates": 12,
|
| 25 |
+
"judge_video_publish_kit_schema": "proofframe.final_video_publish_kit.v1",
|
| 26 |
+
"judge_video_publish_kit_mode": "ready_for_final_upload",
|
| 27 |
+
"judge_video_publish_kit_safe_to_submit": false,
|
| 28 |
+
"judge_video_publish_kit_final_video_ready": false,
|
| 29 |
+
"judge_video_publish_kit_upload_checks": 4,
|
| 30 |
+
"judge_recording_schema": "proofframe.recording_assets.v1",
|
| 31 |
+
"judge_recording_mode": "mock_recording_ready",
|
| 32 |
+
"judge_recording_final_video_ready": false,
|
| 33 |
+
"judge_recording_shots": 6,
|
| 34 |
+
"judge_devpost_schema": "proofframe.devpost_form_kit.v1",
|
| 35 |
+
"judge_devpost_mode": "pre_live_form_ready",
|
| 36 |
+
"judge_devpost_final_form_ready": false,
|
| 37 |
+
"judge_devpost_fields": 19,
|
| 38 |
+
"judge_submit_checklist_schema": "proofframe.devpost_submission_checklist.v1",
|
| 39 |
+
"judge_submit_checklist_mode": "pre_submit_blocked",
|
| 40 |
+
"judge_submit_checklist_safe_to_submit": false,
|
| 41 |
+
"judge_submit_checklist_preflight": 6,
|
| 42 |
+
"campaign_id": "cmp_eb50ee437435",
|
| 43 |
+
"asset_id": "ast_fd2992abc237",
|
| 44 |
+
"asset_provider": "mock",
|
| 45 |
+
"asset_model": "mock-svg-v1",
|
| 46 |
+
"asset_storage_backend": "b2",
|
| 47 |
+
"asset_storage_key": "campaigns/cmp_eb50ee437435/media/cmp_eb50ee437435-variant-1.svg",
|
| 48 |
+
"asset_public_url_present": false,
|
| 49 |
+
"asset_status": "approved",
|
| 50 |
+
"asset_sha256": "f9fa34f549049d8a7a3873dab0208092e55545e2919bf928c0c07c8f2a651f56",
|
| 51 |
+
"manifest_storage_backend": "b2",
|
| 52 |
+
"manifest_key": "campaigns/cmp_eb50ee437435/manifests/cmp_eb50ee437435-manifest.json",
|
| 53 |
+
"manifest_sha256": "052cd97c85012c95ce479033e48acca3901028e579c1f3217e60a0f26126f980",
|
| 54 |
+
"packet_bytes": 998,
|
| 55 |
+
"judge_demo_campaign_id": "cmp_2606dc339088"
|
| 56 |
+
}
|
docs/assets/final-submission-control.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_submission_control.v1",
|
| 3 |
-
"created_at": "2026-07-
|
| 4 |
"ok": true,
|
| 5 |
"control_health_ok": true,
|
| 6 |
"mode": "pre_live_control",
|
|
@@ -32,18 +32,18 @@
|
|
| 32 |
"mode": "pre_live_safe",
|
| 33 |
"summary": {
|
| 34 |
"required": 6,
|
| 35 |
-
"done":
|
| 36 |
"blocked": 0,
|
| 37 |
-
"doing":
|
| 38 |
"todo": 3,
|
| 39 |
"missing": 0
|
| 40 |
},
|
| 41 |
"evidence_status": "missing",
|
| 42 |
-
"b2_evidence_status": "
|
| 43 |
"packet_status": "pre_live_packet_pending"
|
| 44 |
},
|
| 45 |
"task_statuses": {
|
| 46 |
-
"T020": "
|
| 47 |
"T021": "doing",
|
| 48 |
"T040": "done",
|
| 49 |
"T041": "todo",
|
|
@@ -325,23 +325,16 @@
|
|
| 325 |
"active_role_cwd_ok": null
|
| 326 |
},
|
| 327 |
"b2_live_evidence": {
|
| 328 |
-
"ok":
|
| 329 |
-
"status": "
|
| 330 |
"path": "docs/assets/b2-live-proof-evidence.json",
|
| 331 |
-
"findings": [
|
| 332 |
-
{
|
| 333 |
-
"field": "docs/assets/b2-live-proof-evidence.json",
|
| 334 |
-
"detail": "Evidence file is missing or invalid JSON."
|
| 335 |
-
}
|
| 336 |
-
]
|
| 337 |
},
|
| 338 |
"credential_handoff": {
|
| 339 |
"present": true,
|
| 340 |
"mode": "missing_live_env",
|
| 341 |
"ready": false,
|
| 342 |
"missing_ids": [
|
| 343 |
-
"b2_key_id",
|
| 344 |
-
"b2_application_key",
|
| 345 |
"genblaze_api_key"
|
| 346 |
],
|
| 347 |
"secret_policy": "Report records only variable names and presence; credential values are never printed."
|
|
@@ -458,8 +451,8 @@
|
|
| 458 |
{
|
| 459 |
"id": "b2_live_proof",
|
| 460 |
"label": "Backblaze B2 live proof captured",
|
| 461 |
-
"ok":
|
| 462 |
-
"detail": "T020 is
|
| 463 |
"evidence": "tasks.json, docs/assets/b2-live-proof-evidence.json, and docs/assets/final-live-proof-evidence.json"
|
| 464 |
},
|
| 465 |
{
|
|
@@ -473,7 +466,7 @@
|
|
| 473 |
"id": "credential_handoff",
|
| 474 |
"label": "Live credential handoff is ready",
|
| 475 |
"ok": false,
|
| 476 |
-
"detail": "Credential handoff mode is missing_live_env; missing ids:
|
| 477 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 478 |
},
|
| 479 |
{
|
|
@@ -534,13 +527,6 @@
|
|
| 534 |
"detail": "Devpost submission checklist mode is pre_submit_blocked; safe_to_submit is False.",
|
| 535 |
"evidence": "docs/assets/devpost-submission-checklist.json"
|
| 536 |
},
|
| 537 |
-
{
|
| 538 |
-
"id": "b2_live_proof",
|
| 539 |
-
"label": "Backblaze B2 live proof captured",
|
| 540 |
-
"ok": false,
|
| 541 |
-
"detail": "T020 is doing; B2 evidence status is missing; final evidence status is missing.",
|
| 542 |
-
"evidence": "tasks.json, docs/assets/b2-live-proof-evidence.json, and docs/assets/final-live-proof-evidence.json"
|
| 543 |
-
},
|
| 544 |
{
|
| 545 |
"id": "genblaze_live_proof",
|
| 546 |
"label": "Genblaze live proof captured",
|
|
@@ -552,7 +538,7 @@
|
|
| 552 |
"id": "credential_handoff",
|
| 553 |
"label": "Live credential handoff is ready",
|
| 554 |
"ok": false,
|
| 555 |
-
"detail": "Credential handoff mode is missing_live_env; missing ids:
|
| 556 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 557 |
},
|
| 558 |
{
|
|
@@ -601,13 +587,13 @@
|
|
| 601 |
"warnings": [],
|
| 602 |
"next_actions": [
|
| 603 |
"Complete .env.final.local with B2_KEY_ID, B2_APPLICATION_KEY, and Genblaze/GMI API key values.",
|
| 604 |
-
"Run the B2 live proof runner and save sanitized B2 evidence.",
|
| 605 |
"Run the final B2 plus Genblaze proof runner and save sanitized final evidence.",
|
| 606 |
"Record and upload the public demo video after live proof is captured.",
|
| 607 |
"Verify the public video URL with python scripts/public_video_check.py --verify-url --strict-final.",
|
| 608 |
"Regenerate the final Devpost submission checklist after the form kit and final control gates are current.",
|
| 609 |
"Run and mark the final secret scan after live evidence/video assets are ready.",
|
| 610 |
-
"Run final submission audit after proof, video, and secret scan pass."
|
|
|
|
| 611 |
],
|
| 612 |
"operator_commands": [
|
| 613 |
"python scripts/final_env_wizard.py --prefill-non-secret --output .env.final.local",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_submission_control.v1",
|
| 3 |
+
"created_at": "2026-07-01T11:26:25Z",
|
| 4 |
"ok": true,
|
| 5 |
"control_health_ok": true,
|
| 6 |
"mode": "pre_live_control",
|
|
|
|
| 32 |
"mode": "pre_live_safe",
|
| 33 |
"summary": {
|
| 34 |
"required": 6,
|
| 35 |
+
"done": 2,
|
| 36 |
"blocked": 0,
|
| 37 |
+
"doing": 1,
|
| 38 |
"todo": 3,
|
| 39 |
"missing": 0
|
| 40 |
},
|
| 41 |
"evidence_status": "missing",
|
| 42 |
+
"b2_evidence_status": "verified",
|
| 43 |
"packet_status": "pre_live_packet_pending"
|
| 44 |
},
|
| 45 |
"task_statuses": {
|
| 46 |
+
"T020": "done",
|
| 47 |
"T021": "doing",
|
| 48 |
"T040": "done",
|
| 49 |
"T041": "todo",
|
|
|
|
| 325 |
"active_role_cwd_ok": null
|
| 326 |
},
|
| 327 |
"b2_live_evidence": {
|
| 328 |
+
"ok": true,
|
| 329 |
+
"status": "verified",
|
| 330 |
"path": "docs/assets/b2-live-proof-evidence.json",
|
| 331 |
+
"findings": []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 332 |
},
|
| 333 |
"credential_handoff": {
|
| 334 |
"present": true,
|
| 335 |
"mode": "missing_live_env",
|
| 336 |
"ready": false,
|
| 337 |
"missing_ids": [
|
|
|
|
|
|
|
| 338 |
"genblaze_api_key"
|
| 339 |
],
|
| 340 |
"secret_policy": "Report records only variable names and presence; credential values are never printed."
|
|
|
|
| 451 |
{
|
| 452 |
"id": "b2_live_proof",
|
| 453 |
"label": "Backblaze B2 live proof captured",
|
| 454 |
+
"ok": true,
|
| 455 |
+
"detail": "T020 is done; B2 evidence status is verified; final evidence status is missing.",
|
| 456 |
"evidence": "tasks.json, docs/assets/b2-live-proof-evidence.json, and docs/assets/final-live-proof-evidence.json"
|
| 457 |
},
|
| 458 |
{
|
|
|
|
| 466 |
"id": "credential_handoff",
|
| 467 |
"label": "Live credential handoff is ready",
|
| 468 |
"ok": false,
|
| 469 |
+
"detail": "Credential handoff mode is missing_live_env; missing ids: genblaze_api_key.",
|
| 470 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 471 |
},
|
| 472 |
{
|
|
|
|
| 527 |
"detail": "Devpost submission checklist mode is pre_submit_blocked; safe_to_submit is False.",
|
| 528 |
"evidence": "docs/assets/devpost-submission-checklist.json"
|
| 529 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 530 |
{
|
| 531 |
"id": "genblaze_live_proof",
|
| 532 |
"label": "Genblaze live proof captured",
|
|
|
|
| 538 |
"id": "credential_handoff",
|
| 539 |
"label": "Live credential handoff is ready",
|
| 540 |
"ok": false,
|
| 541 |
+
"detail": "Credential handoff mode is missing_live_env; missing ids: genblaze_api_key.",
|
| 542 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 543 |
},
|
| 544 |
{
|
|
|
|
| 587 |
"warnings": [],
|
| 588 |
"next_actions": [
|
| 589 |
"Complete .env.final.local with B2_KEY_ID, B2_APPLICATION_KEY, and Genblaze/GMI API key values.",
|
|
|
|
| 590 |
"Run the final B2 plus Genblaze proof runner and save sanitized final evidence.",
|
| 591 |
"Record and upload the public demo video after live proof is captured.",
|
| 592 |
"Verify the public video URL with python scripts/public_video_check.py --verify-url --strict-final.",
|
| 593 |
"Regenerate the final Devpost submission checklist after the form kit and final control gates are current.",
|
| 594 |
"Run and mark the final secret scan after live evidence/video assets are ready.",
|
| 595 |
+
"Run final submission audit after proof, video, and secret scan pass.",
|
| 596 |
+
"Submit Devpost after every preceding control item is green, then generate the public submission receipt."
|
| 597 |
],
|
| 598 |
"operator_commands": [
|
| 599 |
"python scripts/final_env_wizard.py --prefill-non-secret --output .env.final.local",
|
docs/assets/final-submission-control.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Mode: `pre_live_control`
|
| 4 |
Control health OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
-
Created: `2026-07-
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
|
@@ -19,8 +19,8 @@ Repository: https://github.com/adjcjh777/backblaze-proofframe
|
|
| 19 |
## Submission Gate
|
| 20 |
|
| 21 |
- Mode: `pre_live_safe`
|
| 22 |
-
- Tasks: `
|
| 23 |
-
- B2 evidence: `
|
| 24 |
- Live evidence: `missing`
|
| 25 |
- Devpost packet: `pre_live_packet_pending`
|
| 26 |
|
|
@@ -49,9 +49,9 @@ Repository: https://github.com/adjcjh777/backblaze-proofframe
|
|
| 49 |
| OK | Final launch plan exposes the current operator step | Launch plan mode is ready_for_credential_entry; current phase is credential_entry; next command is python scripts/final_env_wizard.py --output .env.final.local --missing-only --force. | `docs/assets/final-launch-plan.json` |
|
| 50 |
| OK | Recording assets are ready | Recording assets mode is mock_recording_ready; public mock verified is False. | `docs/assets/recording-assets.json` |
|
| 51 |
| OK | Control input reports match expected schemas | All input report schemas are current. | `docs/assets/*.json readiness reports` |
|
| 52 |
-
|
|
| 53 |
| PENDING | Genblaze live proof captured | T021 is doing; final evidence status is missing. | `tasks.json and docs/assets/final-live-proof-evidence.json` |
|
| 54 |
-
| PENDING | Live credential handoff is ready | Credential handoff mode is missing_live_env; missing ids:
|
| 55 |
| PENDING | Final public demo video URL is ready | Storyboard mode is mock_storyboard_ready; public video ready is False. | `docs/assets/demo-storyboard.json` |
|
| 56 |
| PENDING | Final public demo video URL is accessible and safe | Public video check mode is pending_video_url; safe_to_submit is False. | `docs/assets/public-video-check.json` |
|
| 57 |
| PENDING | Final recording gate is ready | Demo readiness mode is pre_live_mock_ready; final recording ready is False. | `docs/assets/demo-readiness-report.json` |
|
|
@@ -63,13 +63,13 @@ Repository: https://github.com/adjcjh777/backblaze-proofframe
|
|
| 63 |
## Next Actions
|
| 64 |
|
| 65 |
- Complete .env.final.local with B2_KEY_ID, B2_APPLICATION_KEY, and Genblaze/GMI API key values.
|
| 66 |
-
- Run the B2 live proof runner and save sanitized B2 evidence.
|
| 67 |
- Run the final B2 plus Genblaze proof runner and save sanitized final evidence.
|
| 68 |
- Record and upload the public demo video after live proof is captured.
|
| 69 |
- Verify the public video URL with python scripts/public_video_check.py --verify-url --strict-final.
|
| 70 |
- Regenerate the final Devpost submission checklist after the form kit and final control gates are current.
|
| 71 |
- Run and mark the final secret scan after live evidence/video assets are ready.
|
| 72 |
- Run final submission audit after proof, video, and secret scan pass.
|
|
|
|
| 73 |
|
| 74 |
## Operator Commands
|
| 75 |
|
|
|
|
| 3 |
Mode: `pre_live_control`
|
| 4 |
Control health OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
+
Created: `2026-07-01T11:26:25Z`
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
|
|
|
| 19 |
## Submission Gate
|
| 20 |
|
| 21 |
- Mode: `pre_live_safe`
|
| 22 |
+
- Tasks: `2 / 6` done
|
| 23 |
+
- B2 evidence: `verified`
|
| 24 |
- Live evidence: `missing`
|
| 25 |
- Devpost packet: `pre_live_packet_pending`
|
| 26 |
|
|
|
|
| 49 |
| OK | Final launch plan exposes the current operator step | Launch plan mode is ready_for_credential_entry; current phase is credential_entry; next command is python scripts/final_env_wizard.py --output .env.final.local --missing-only --force. | `docs/assets/final-launch-plan.json` |
|
| 50 |
| OK | Recording assets are ready | Recording assets mode is mock_recording_ready; public mock verified is False. | `docs/assets/recording-assets.json` |
|
| 51 |
| OK | Control input reports match expected schemas | All input report schemas are current. | `docs/assets/*.json readiness reports` |
|
| 52 |
+
| OK | Backblaze B2 live proof captured | T020 is done; B2 evidence status is verified; final evidence status is missing. | `tasks.json, docs/assets/b2-live-proof-evidence.json, and docs/assets/final-live-proof-evidence.json` |
|
| 53 |
| PENDING | Genblaze live proof captured | T021 is doing; final evidence status is missing. | `tasks.json and docs/assets/final-live-proof-evidence.json` |
|
| 54 |
+
| PENDING | Live credential handoff is ready | Credential handoff mode is missing_live_env; missing ids: genblaze_api_key. | `docs/assets/live-credential-handoff.json` |
|
| 55 |
| PENDING | Final public demo video URL is ready | Storyboard mode is mock_storyboard_ready; public video ready is False. | `docs/assets/demo-storyboard.json` |
|
| 56 |
| PENDING | Final public demo video URL is accessible and safe | Public video check mode is pending_video_url; safe_to_submit is False. | `docs/assets/public-video-check.json` |
|
| 57 |
| PENDING | Final recording gate is ready | Demo readiness mode is pre_live_mock_ready; final recording ready is False. | `docs/assets/demo-readiness-report.json` |
|
|
|
|
| 63 |
## Next Actions
|
| 64 |
|
| 65 |
- Complete .env.final.local with B2_KEY_ID, B2_APPLICATION_KEY, and Genblaze/GMI API key values.
|
|
|
|
| 66 |
- Run the final B2 plus Genblaze proof runner and save sanitized final evidence.
|
| 67 |
- Record and upload the public demo video after live proof is captured.
|
| 68 |
- Verify the public video URL with python scripts/public_video_check.py --verify-url --strict-final.
|
| 69 |
- Regenerate the final Devpost submission checklist after the form kit and final control gates are current.
|
| 70 |
- Run and mark the final secret scan after live evidence/video assets are ready.
|
| 71 |
- Run final submission audit after proof, video, and secret scan pass.
|
| 72 |
+
- Submit Devpost after every preceding control item is green, then generate the public submission receipt.
|
| 73 |
|
| 74 |
## Operator Commands
|
| 75 |
|
docs/assets/live-credential-handoff.json
CHANGED
|
@@ -60,25 +60,30 @@
|
|
| 60 |
{
|
| 61 |
"id": "b2_key_id",
|
| 62 |
"label": "Backblaze B2 key id",
|
| 63 |
-
"ok":
|
| 64 |
"accepted_names": [
|
| 65 |
"B2_KEY_ID"
|
| 66 |
],
|
| 67 |
-
"present_names": [
|
|
|
|
|
|
|
| 68 |
"expected": null,
|
| 69 |
-
"remediation": "
|
| 70 |
},
|
| 71 |
{
|
| 72 |
"id": "b2_application_key",
|
| 73 |
"label": "Backblaze B2 application key",
|
| 74 |
-
"ok":
|
| 75 |
"accepted_names": [
|
| 76 |
"B2_APPLICATION_KEY",
|
| 77 |
"B2_APP_KEY"
|
| 78 |
],
|
| 79 |
-
"present_names": [
|
|
|
|
|
|
|
|
|
|
| 80 |
"expected": null,
|
| 81 |
-
"remediation": "
|
| 82 |
},
|
| 83 |
{
|
| 84 |
"id": "genblaze_api_key",
|
|
@@ -157,8 +162,6 @@
|
|
| 157 |
}
|
| 158 |
],
|
| 159 |
"missing_ids": [
|
| 160 |
-
"b2_key_id",
|
| 161 |
-
"b2_application_key",
|
| 162 |
"genblaze_api_key"
|
| 163 |
],
|
| 164 |
"next_commands": [
|
|
|
|
| 60 |
{
|
| 61 |
"id": "b2_key_id",
|
| 62 |
"label": "Backblaze B2 key id",
|
| 63 |
+
"ok": true,
|
| 64 |
"accepted_names": [
|
| 65 |
"B2_KEY_ID"
|
| 66 |
],
|
| 67 |
+
"present_names": [
|
| 68 |
+
"B2_KEY_ID"
|
| 69 |
+
],
|
| 70 |
"expected": null,
|
| 71 |
+
"remediation": ""
|
| 72 |
},
|
| 73 |
{
|
| 74 |
"id": "b2_application_key",
|
| 75 |
"label": "Backblaze B2 application key",
|
| 76 |
+
"ok": true,
|
| 77 |
"accepted_names": [
|
| 78 |
"B2_APPLICATION_KEY",
|
| 79 |
"B2_APP_KEY"
|
| 80 |
],
|
| 81 |
+
"present_names": [
|
| 82 |
+
"B2_APPLICATION_KEY",
|
| 83 |
+
"B2_APP_KEY"
|
| 84 |
+
],
|
| 85 |
"expected": null,
|
| 86 |
+
"remediation": ""
|
| 87 |
},
|
| 88 |
{
|
| 89 |
"id": "genblaze_api_key",
|
|
|
|
| 162 |
}
|
| 163 |
],
|
| 164 |
"missing_ids": [
|
|
|
|
|
|
|
| 165 |
"genblaze_api_key"
|
| 166 |
],
|
| 167 |
"next_commands": [
|
docs/assets/live-credential-handoff.md
CHANGED
|
@@ -12,10 +12,8 @@ This report records only variable names and presence checks. It never prints, ha
|
|
| 12 |
- OK ProofFrame generation backend mode: `PROOFFRAME_GENERATION_BACKEND`; present `PROOFFRAME_GENERATION_BACKEND`; expected `genblaze`.
|
| 13 |
- OK Backblaze B2 S3 endpoint: `B2_ENDPOINT_URL`, `B2_S3_ENDPOINT_URL`; present `B2_ENDPOINT_URL`.
|
| 14 |
- OK Backblaze B2 bucket: `B2_BUCKET`; present `B2_BUCKET`.
|
| 15 |
-
-
|
| 16 |
-
|
| 17 |
-
- MISSING Backblaze B2 application key: `B2_APPLICATION_KEY`, `B2_APP_KEY`; present none.
|
| 18 |
-
Remediation: Set B2_APPLICATION_KEY or B2_APP_KEY.
|
| 19 |
- MISSING Genblaze/GMI API key: `GENBLAZE_API_KEY`, `GMI_API_KEY`; present none.
|
| 20 |
Remediation: Set GENBLAZE_API_KEY or GMI_API_KEY.
|
| 21 |
- OK Genblaze image model: `GENBLAZE_IMAGE_MODEL`; present `GENBLAZE_IMAGE_MODEL`.
|
|
|
|
| 12 |
- OK ProofFrame generation backend mode: `PROOFFRAME_GENERATION_BACKEND`; present `PROOFFRAME_GENERATION_BACKEND`; expected `genblaze`.
|
| 13 |
- OK Backblaze B2 S3 endpoint: `B2_ENDPOINT_URL`, `B2_S3_ENDPOINT_URL`; present `B2_ENDPOINT_URL`.
|
| 14 |
- OK Backblaze B2 bucket: `B2_BUCKET`; present `B2_BUCKET`.
|
| 15 |
+
- OK Backblaze B2 key id: `B2_KEY_ID`; present `B2_KEY_ID`.
|
| 16 |
+
- OK Backblaze B2 application key: `B2_APPLICATION_KEY`, `B2_APP_KEY`; present `B2_APPLICATION_KEY`, `B2_APP_KEY`.
|
|
|
|
|
|
|
| 17 |
- MISSING Genblaze/GMI API key: `GENBLAZE_API_KEY`, `GMI_API_KEY`; present none.
|
| 18 |
Remediation: Set GENBLAZE_API_KEY or GMI_API_KEY.
|
| 19 |
- OK Genblaze image model: `GENBLAZE_IMAGE_MODEL`; present `GENBLAZE_IMAGE_MODEL`.
|
docs/assets/public-api-smoke-evidence.json
CHANGED
|
@@ -39,18 +39,18 @@
|
|
| 39 |
"judge_submit_checklist_mode": "pre_submit_blocked",
|
| 40 |
"judge_submit_checklist_safe_to_submit": false,
|
| 41 |
"judge_submit_checklist_preflight": 6,
|
| 42 |
-
"campaign_id": "
|
| 43 |
-
"asset_id": "
|
| 44 |
"asset_provider": "mock",
|
| 45 |
"asset_model": "mock-svg-v1",
|
| 46 |
"asset_storage_backend": "local",
|
| 47 |
-
"asset_storage_key": "
|
| 48 |
"asset_public_url_present": true,
|
| 49 |
"asset_status": "approved",
|
| 50 |
-
"asset_sha256": "
|
| 51 |
"manifest_storage_backend": "local",
|
| 52 |
-
"manifest_key": "
|
| 53 |
-
"manifest_sha256": "
|
| 54 |
-
"packet_bytes":
|
| 55 |
-
"judge_demo_campaign_id": "
|
| 56 |
}
|
|
|
|
| 39 |
"judge_submit_checklist_mode": "pre_submit_blocked",
|
| 40 |
"judge_submit_checklist_safe_to_submit": false,
|
| 41 |
"judge_submit_checklist_preflight": 6,
|
| 42 |
+
"campaign_id": "cmp_10428c4206cc",
|
| 43 |
+
"asset_id": "ast_00b8d0a4c815",
|
| 44 |
"asset_provider": "mock",
|
| 45 |
"asset_model": "mock-svg-v1",
|
| 46 |
"asset_storage_backend": "local",
|
| 47 |
+
"asset_storage_key": "cmp_10428c4206cc/cmp_10428c4206cc-variant-1.svg",
|
| 48 |
"asset_public_url_present": true,
|
| 49 |
"asset_status": "approved",
|
| 50 |
+
"asset_sha256": "b6bd6098e34e84c2d2785c1a0c7a06f772e9b84bf38c09b9227dd81b2308eb55",
|
| 51 |
"manifest_storage_backend": "local",
|
| 52 |
+
"manifest_key": "cmp_10428c4206cc/cmp_10428c4206cc-manifest.json",
|
| 53 |
+
"manifest_sha256": "cb8bdec32a26e905303c22283f981527915167cb10456d8d7c7fc58bb2e2510b",
|
| 54 |
+
"packet_bytes": 1533,
|
| 55 |
+
"judge_demo_campaign_id": "cmp_f991d6029dfb"
|
| 56 |
}
|
docs/assets/public-space-sync-report.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_sync.v1",
|
| 3 |
-
"created_at": "2026-07-01T10:
|
| 4 |
"ok": true,
|
| 5 |
"mode": "public_space_synced",
|
| 6 |
"space_id": "ADJCJH/backblaze-proofframe",
|
| 7 |
"public_host": "https://adjcjh-backblaze-proofframe.hf.space",
|
| 8 |
-
"expected_sha": "
|
| 9 |
"observed": {
|
| 10 |
-
"space_sha": "
|
| 11 |
-
"runtime_sha": "
|
| 12 |
"runtime_stage": "RUNNING",
|
| 13 |
"domain_ready": true,
|
| 14 |
-
"last_modified": "2026-
|
| 15 |
"health": {
|
| 16 |
"ready": true,
|
| 17 |
"storage_backend": "local",
|
|
@@ -32,9 +32,9 @@
|
|
| 32 |
},
|
| 33 |
"handoff_mode": "handoff_ready",
|
| 34 |
"event_snapshot": {
|
| 35 |
-
"checked_at": "2026-
|
| 36 |
-
"age_days":
|
| 37 |
-
"participant_count_observed":
|
| 38 |
"submission_open": true,
|
| 39 |
"requirements_ok": true,
|
| 40 |
"criteria_ok": true
|
|
@@ -215,14 +215,14 @@
|
|
| 215 |
"id": "space_metadata",
|
| 216 |
"label": "Space metadata points at the expected commit",
|
| 217 |
"ok": true,
|
| 218 |
-
"detail": "Space sha is
|
| 219 |
"evidence": "https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe"
|
| 220 |
},
|
| 221 |
{
|
| 222 |
"id": "runtime_ready",
|
| 223 |
"label": "Space runtime is running the expected commit",
|
| 224 |
"ok": true,
|
| 225 |
-
"detail": "Runtime stage is RUNNING; runtime sha is
|
| 226 |
"evidence": "https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe/runtime"
|
| 227 |
},
|
| 228 |
{
|
|
@@ -236,7 +236,7 @@
|
|
| 236 |
"id": "raw_event_snapshot",
|
| 237 |
"label": "Raw Devpost event snapshot is public and fresh",
|
| 238 |
"ok": true,
|
| 239 |
-
"detail": "Event snapshot schema is proofframe.devpost_event_snapshot.v1; submission_open=True; age_days=
|
| 240 |
"evidence": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/devpost-event-snapshot.json"
|
| 241 |
},
|
| 242 |
{
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_sync.v1",
|
| 3 |
+
"created_at": "2026-07-01T10:56:54Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "public_space_synced",
|
| 6 |
"space_id": "ADJCJH/backblaze-proofframe",
|
| 7 |
"public_host": "https://adjcjh-backblaze-proofframe.hf.space",
|
| 8 |
+
"expected_sha": "abb09ea8fa92cae185fb08d65ae6419d85bc3c0e",
|
| 9 |
"observed": {
|
| 10 |
+
"space_sha": "abb09ea8fa92cae185fb08d65ae6419d85bc3c0e",
|
| 11 |
+
"runtime_sha": "abb09ea8fa92cae185fb08d65ae6419d85bc3c0e",
|
| 12 |
"runtime_stage": "RUNNING",
|
| 13 |
"domain_ready": true,
|
| 14 |
+
"last_modified": "2026-07-01T10:55:40.000Z",
|
| 15 |
"health": {
|
| 16 |
"ready": true,
|
| 17 |
"storage_backend": "local",
|
|
|
|
| 32 |
},
|
| 33 |
"handoff_mode": "handoff_ready",
|
| 34 |
"event_snapshot": {
|
| 35 |
+
"checked_at": "2026-07-01T10:54:19Z",
|
| 36 |
+
"age_days": 0,
|
| 37 |
+
"participant_count_observed": 439,
|
| 38 |
"submission_open": true,
|
| 39 |
"requirements_ok": true,
|
| 40 |
"criteria_ok": true
|
|
|
|
| 215 |
"id": "space_metadata",
|
| 216 |
"label": "Space metadata points at the expected commit",
|
| 217 |
"ok": true,
|
| 218 |
+
"detail": "Space sha is abb09ea8fa92cae185fb08d65ae6419d85bc3c0e; expected abb09ea8fa92cae185fb08d65ae6419d85bc3c0e.",
|
| 219 |
"evidence": "https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe"
|
| 220 |
},
|
| 221 |
{
|
| 222 |
"id": "runtime_ready",
|
| 223 |
"label": "Space runtime is running the expected commit",
|
| 224 |
"ok": true,
|
| 225 |
+
"detail": "Runtime stage is RUNNING; runtime sha is abb09ea8fa92cae185fb08d65ae6419d85bc3c0e; domain ready is True.",
|
| 226 |
"evidence": "https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe/runtime"
|
| 227 |
},
|
| 228 |
{
|
|
|
|
| 236 |
"id": "raw_event_snapshot",
|
| 237 |
"label": "Raw Devpost event snapshot is public and fresh",
|
| 238 |
"ok": true,
|
| 239 |
+
"detail": "Event snapshot schema is proofframe.devpost_event_snapshot.v1; submission_open=True; age_days=0; participants=439.",
|
| 240 |
"evidence": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/devpost-event-snapshot.json"
|
| 241 |
},
|
| 242 |
{
|
docs/assets/public-space-sync-report.md
CHANGED
|
@@ -2,21 +2,21 @@
|
|
| 2 |
|
| 3 |
Mode: `public_space_synced`
|
| 4 |
OK: `true`
|
| 5 |
-
Created: `2026-07-01T10:
|
| 6 |
Space: `ADJCJH/backblaze-proofframe`
|
| 7 |
Public host: https://adjcjh-backblaze-proofframe.hf.space
|
| 8 |
-
Expected sha: `
|
| 9 |
-
Runtime sha: `
|
| 10 |
Runtime stage: `RUNNING`
|
| 11 |
|
| 12 |
## Checks
|
| 13 |
|
| 14 |
| Status | Check | Detail | Evidence |
|
| 15 |
| --- | --- | --- | --- |
|
| 16 |
-
| OK | Space metadata points at the expected commit | Space sha is
|
| 17 |
-
| OK | Space runtime is running the expected commit | Runtime stage is RUNNING; runtime sha is
|
| 18 |
| OK | Raw handoff report is public and ready | Handoff schema is proofframe.agent_handoff.v1; mode is handoff_ready. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/agent-handoff-report.json |
|
| 19 |
-
| OK | Raw Devpost event snapshot is public and fresh | Event snapshot schema is proofframe.devpost_event_snapshot.v1; submission_open=True; age_days=
|
| 20 |
| OK | Raw final launch plan is public and phase-aware | Launch plan schema is proofframe.final_launch_plan.v1; mode is ready_for_credential_entry; current phase is credential_entry. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-launch-plan.json |
|
| 21 |
| OK | Raw B2 key scope checklist is public and no-secret | Checklist schema is proofframe.b2_key_scope_checklist.v1; safe_to_commit=True; bucket=proofframe-demo-a6b4e49; prefix=campaigns/; confirmation=required_before_key_creation; required=['listAllBucketNames', 'writeFiles']. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/b2-key-scope-checklist.json |
|
| 22 |
| OK | Raw judge brief is public and claim-safe | Judge brief schema is proofframe.judge_brief.v1; safe_to_submit is False. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-brief.json |
|
|
|
|
| 2 |
|
| 3 |
Mode: `public_space_synced`
|
| 4 |
OK: `true`
|
| 5 |
+
Created: `2026-07-01T10:56:54Z`
|
| 6 |
Space: `ADJCJH/backblaze-proofframe`
|
| 7 |
Public host: https://adjcjh-backblaze-proofframe.hf.space
|
| 8 |
+
Expected sha: `abb09ea8fa92cae185fb08d65ae6419d85bc3c0e`
|
| 9 |
+
Runtime sha: `abb09ea8fa92cae185fb08d65ae6419d85bc3c0e`
|
| 10 |
Runtime stage: `RUNNING`
|
| 11 |
|
| 12 |
## Checks
|
| 13 |
|
| 14 |
| Status | Check | Detail | Evidence |
|
| 15 |
| --- | --- | --- | --- |
|
| 16 |
+
| OK | Space metadata points at the expected commit | Space sha is abb09ea8fa92cae185fb08d65ae6419d85bc3c0e; expected abb09ea8fa92cae185fb08d65ae6419d85bc3c0e. | https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe |
|
| 17 |
+
| OK | Space runtime is running the expected commit | Runtime stage is RUNNING; runtime sha is abb09ea8fa92cae185fb08d65ae6419d85bc3c0e; domain ready is True. | https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe/runtime |
|
| 18 |
| OK | Raw handoff report is public and ready | Handoff schema is proofframe.agent_handoff.v1; mode is handoff_ready. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/agent-handoff-report.json |
|
| 19 |
+
| OK | Raw Devpost event snapshot is public and fresh | Event snapshot schema is proofframe.devpost_event_snapshot.v1; submission_open=True; age_days=0; participants=439. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/devpost-event-snapshot.json |
|
| 20 |
| OK | Raw final launch plan is public and phase-aware | Launch plan schema is proofframe.final_launch_plan.v1; mode is ready_for_credential_entry; current phase is credential_entry. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-launch-plan.json |
|
| 21 |
| OK | Raw B2 key scope checklist is public and no-secret | Checklist schema is proofframe.b2_key_scope_checklist.v1; safe_to_commit=True; bucket=proofframe-demo-a6b4e49; prefix=campaigns/; confirmation=required_before_key_creation; required=['listAllBucketNames', 'writeFiles']. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/b2-key-scope-checklist.json |
|
| 22 |
| OK | Raw judge brief is public and claim-safe | Judge brief schema is proofframe.judge_brief.v1; safe_to_submit is False. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-brief.json |
|
docs/assets/public-space-upload-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_upload.v1",
|
| 3 |
-
"created_at": "2026-
|
| 4 |
"mode": "uploaded",
|
| 5 |
"ok": true,
|
| 6 |
"execute": true,
|
|
@@ -8,7 +8,7 @@
|
|
| 8 |
"repo_type": "space",
|
| 9 |
"revision": "main",
|
| 10 |
"space_raw_base": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main",
|
| 11 |
-
"commit_message": "Sync ProofFrame public Space after
|
| 12 |
"ignore_patterns": [
|
| 13 |
".git/**",
|
| 14 |
".venv/**",
|
|
@@ -51,9 +51,9 @@
|
|
| 51 |
]
|
| 52 |
},
|
| 53 |
"file_plan": {
|
| 54 |
-
"total_files":
|
| 55 |
-
"included_count":
|
| 56 |
-
"excluded_count":
|
| 57 |
"included_samples": [
|
| 58 |
".dockerignore",
|
| 59 |
".env.example",
|
|
@@ -125,8 +125,8 @@
|
|
| 125 |
"upload": {
|
| 126 |
"attempted": true,
|
| 127 |
"ok": true,
|
| 128 |
-
"commit_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/commit/
|
| 129 |
-
"commit_oid": "
|
| 130 |
},
|
| 131 |
"secret_probe": {
|
| 132 |
"attempted": true,
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_upload.v1",
|
| 3 |
+
"created_at": "2026-07-01T10:55:49Z",
|
| 4 |
"mode": "uploaded",
|
| 5 |
"ok": true,
|
| 6 |
"execute": true,
|
|
|
|
| 8 |
"repo_type": "space",
|
| 9 |
"revision": "main",
|
| 10 |
"space_raw_base": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main",
|
| 11 |
+
"commit_message": "Sync ProofFrame public Space after event refresh",
|
| 12 |
"ignore_patterns": [
|
| 13 |
".git/**",
|
| 14 |
".venv/**",
|
|
|
|
| 51 |
]
|
| 52 |
},
|
| 53 |
"file_plan": {
|
| 54 |
+
"total_files": 14982,
|
| 55 |
+
"included_count": 210,
|
| 56 |
+
"excluded_count": 14772,
|
| 57 |
"included_samples": [
|
| 58 |
".dockerignore",
|
| 59 |
".env.example",
|
|
|
|
| 125 |
"upload": {
|
| 126 |
"attempted": true,
|
| 127 |
"ok": true,
|
| 128 |
+
"commit_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/commit/abb09ea8fa92cae185fb08d65ae6419d85bc3c0e",
|
| 129 |
+
"commit_oid": "abb09ea8fa92cae185fb08d65ae6419d85bc3c0e"
|
| 130 |
},
|
| 131 |
"secret_probe": {
|
| 132 |
"attempted": true,
|
docs/assets/public-space-upload-report.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Mode: `uploaded`
|
| 4 |
OK: `true`
|
| 5 |
Execute: `true`
|
| 6 |
-
Created: `2026-
|
| 7 |
Repo: `ADJCJH/backblaze-proofframe`
|
| 8 |
Revision: `main`
|
| 9 |
Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
@@ -11,8 +11,8 @@ Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
| 11 |
## Safety
|
| 12 |
|
| 13 |
- Required ignore patterns OK: `true`
|
| 14 |
-
- Included files: `
|
| 15 |
-
- Excluded files: `
|
| 16 |
- Included sensitive files: `none`
|
| 17 |
|
| 18 |
## Sensitive File Checks
|
|
@@ -25,8 +25,8 @@ Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
| 25 |
## Upload
|
| 26 |
|
| 27 |
- Upload OK: `true`
|
| 28 |
-
- Commit: `
|
| 29 |
-
- Commit URL: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/commit/
|
| 30 |
|
| 31 |
## Secret Probe
|
| 32 |
|
|
|
|
| 3 |
Mode: `uploaded`
|
| 4 |
OK: `true`
|
| 5 |
Execute: `true`
|
| 6 |
+
Created: `2026-07-01T10:55:49Z`
|
| 7 |
Repo: `ADJCJH/backblaze-proofframe`
|
| 8 |
Revision: `main`
|
| 9 |
Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
|
|
| 11 |
## Safety
|
| 12 |
|
| 13 |
- Required ignore patterns OK: `true`
|
| 14 |
+
- Included files: `210`
|
| 15 |
+
- Excluded files: `14772`
|
| 16 |
- Included sensitive files: `none`
|
| 17 |
|
| 18 |
## Sensitive File Checks
|
|
|
|
| 25 |
## Upload
|
| 26 |
|
| 27 |
- Upload OK: `true`
|
| 28 |
+
- Commit: `abb09ea8fa92cae185fb08d65ae6419d85bc3c0e`
|
| 29 |
+
- Commit URL: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/commit/abb09ea8fa92cae185fb08d65ae6419d85bc3c0e
|
| 30 |
|
| 31 |
## Secret Probe
|
| 32 |
|
docs/assets/secret-scan-report.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.secret_scan.v1",
|
| 3 |
-
"created_at": "2026-07-
|
| 4 |
"mode": "clear",
|
| 5 |
"ok": true,
|
| 6 |
"root": ".",
|
| 7 |
"findings": [],
|
| 8 |
"counts": {
|
| 9 |
-
"scanned_text_files":
|
| 10 |
"inventoried_binary_files": 6,
|
| 11 |
"skipped_local_secret_files": 1,
|
| 12 |
-
"skipped_hard_files":
|
| 13 |
"findings": 0
|
| 14 |
},
|
| 15 |
"coverage": {
|
|
@@ -40,6 +40,7 @@
|
|
| 40 |
"docs/assets/award-readiness-report.md",
|
| 41 |
"docs/assets/b2-key-scope-checklist.json",
|
| 42 |
"docs/assets/b2-key-scope-checklist.md",
|
|
|
|
| 43 |
"docs/assets/b2-live-setup.json",
|
| 44 |
"docs/assets/b2-live-setup.md",
|
| 45 |
"docs/assets/demo-readiness-report.json",
|
|
@@ -228,6 +229,7 @@
|
|
| 228 |
"tests/test_submission_bundle.py",
|
| 229 |
"tests/test_submission_gate.py",
|
| 230 |
"tests/test_task_cli.py",
|
|
|
|
| 231 |
"var/storage/cmp_0fd2f50b9713/cmp_0fd2f50b9713-manifest.json",
|
| 232 |
"var/storage/cmp_16201908a885/cmp_16201908a885-manifest.json",
|
| 233 |
"var/storage/cmp_1917ba0aa34c/cmp_1917ba0aa34c-manifest.json",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.secret_scan.v1",
|
| 3 |
+
"created_at": "2026-07-01T11:26:36Z",
|
| 4 |
"mode": "clear",
|
| 5 |
"ok": true,
|
| 6 |
"root": ".",
|
| 7 |
"findings": [],
|
| 8 |
"counts": {
|
| 9 |
+
"scanned_text_files": 236,
|
| 10 |
"inventoried_binary_files": 6,
|
| 11 |
"skipped_local_secret_files": 1,
|
| 12 |
+
"skipped_hard_files": 14652,
|
| 13 |
"findings": 0
|
| 14 |
},
|
| 15 |
"coverage": {
|
|
|
|
| 40 |
"docs/assets/award-readiness-report.md",
|
| 41 |
"docs/assets/b2-key-scope-checklist.json",
|
| 42 |
"docs/assets/b2-key-scope-checklist.md",
|
| 43 |
+
"docs/assets/b2-live-proof-evidence.json",
|
| 44 |
"docs/assets/b2-live-setup.json",
|
| 45 |
"docs/assets/b2-live-setup.md",
|
| 46 |
"docs/assets/demo-readiness-report.json",
|
|
|
|
| 229 |
"tests/test_submission_bundle.py",
|
| 230 |
"tests/test_submission_gate.py",
|
| 231 |
"tests/test_task_cli.py",
|
| 232 |
+
"var/live-proof/b2-uvicorn.log",
|
| 233 |
"var/storage/cmp_0fd2f50b9713/cmp_0fd2f50b9713-manifest.json",
|
| 234 |
"var/storage/cmp_16201908a885/cmp_16201908a885-manifest.json",
|
| 235 |
"var/storage/cmp_1917ba0aa34c/cmp_1917ba0aa34c-manifest.json",
|
docs/assets/secret-scan-report.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
| 2 |
|
| 3 |
Mode: `clear`
|
| 4 |
OK: `true`
|
| 5 |
-
Created: `2026-07-
|
| 6 |
|
| 7 |
## Counts
|
| 8 |
|
| 9 |
-
- Scanned text files: `
|
| 10 |
- Inventoried binary files: `6`
|
| 11 |
- Skipped local secret files: `1`
|
| 12 |
- Findings: `0`
|
|
|
|
| 2 |
|
| 3 |
Mode: `clear`
|
| 4 |
OK: `true`
|
| 5 |
+
Created: `2026-07-01T11:26:36Z`
|
| 6 |
|
| 7 |
## Counts
|
| 8 |
|
| 9 |
+
- Scanned text files: `236`
|
| 10 |
- Inventoried binary files: `6`
|
| 11 |
- Skipped local secret files: `1`
|
| 12 |
- Findings: `0`
|
docs/assets/submission-audit-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_audit.v1",
|
| 3 |
-
"created_at": "2026-07-
|
| 4 |
"mode": "pre_submit_audit_blocked",
|
| 5 |
"ok": false,
|
| 6 |
"root": ".",
|
|
@@ -15,7 +15,7 @@
|
|
| 15 |
"T042"
|
| 16 |
],
|
| 17 |
"task_statuses": {
|
| 18 |
-
"T020": "
|
| 19 |
"T021": "doing",
|
| 20 |
"T040": "done",
|
| 21 |
"T041A": "todo",
|
|
@@ -24,7 +24,7 @@
|
|
| 24 |
},
|
| 25 |
"final_evidence_path": "docs/assets/final-live-proof-evidence.json",
|
| 26 |
"section_counts": {
|
| 27 |
-
"tasks":
|
| 28 |
"files": 0,
|
| 29 |
"schemas": 0,
|
| 30 |
"final_evidence": 1,
|
|
@@ -34,12 +34,6 @@
|
|
| 34 |
"final_control": 1
|
| 35 |
},
|
| 36 |
"findings": [
|
| 37 |
-
{
|
| 38 |
-
"gate": "T020",
|
| 39 |
-
"status": "doing",
|
| 40 |
-
"detail": "Integrate Backblaze B2-compatible storage is not done.",
|
| 41 |
-
"evidence": "tasks.json"
|
| 42 |
-
},
|
| 43 |
{
|
| 44 |
"gate": "T021",
|
| 45 |
"status": "doing",
|
|
@@ -133,7 +127,7 @@
|
|
| 133 |
{
|
| 134 |
"gate": "final_submission_control.blocking_items",
|
| 135 |
"status": "blocked",
|
| 136 |
-
"detail": "Unexpected blockers remain before audit sign-off:
|
| 137 |
"evidence": "docs/assets/final-submission-control.json"
|
| 138 |
}
|
| 139 |
],
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_audit.v1",
|
| 3 |
+
"created_at": "2026-07-01T11:26:25Z",
|
| 4 |
"mode": "pre_submit_audit_blocked",
|
| 5 |
"ok": false,
|
| 6 |
"root": ".",
|
|
|
|
| 15 |
"T042"
|
| 16 |
],
|
| 17 |
"task_statuses": {
|
| 18 |
+
"T020": "done",
|
| 19 |
"T021": "doing",
|
| 20 |
"T040": "done",
|
| 21 |
"T041A": "todo",
|
|
|
|
| 24 |
},
|
| 25 |
"final_evidence_path": "docs/assets/final-live-proof-evidence.json",
|
| 26 |
"section_counts": {
|
| 27 |
+
"tasks": 2,
|
| 28 |
"files": 0,
|
| 29 |
"schemas": 0,
|
| 30 |
"final_evidence": 1,
|
|
|
|
| 34 |
"final_control": 1
|
| 35 |
},
|
| 36 |
"findings": [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
{
|
| 38 |
"gate": "T021",
|
| 39 |
"status": "doing",
|
|
|
|
| 127 |
{
|
| 128 |
"gate": "final_submission_control.blocking_items",
|
| 129 |
"status": "blocked",
|
| 130 |
+
"detail": "Unexpected blockers remain before audit sign-off: credential_handoff, devpost_submission_checklist, final_recording, final_secret_scan, genblaze_live_proof, public_video, public_video_check",
|
| 131 |
"evidence": "docs/assets/final-submission-control.json"
|
| 132 |
}
|
| 133 |
],
|
docs/assets/submission-audit-report.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
| 2 |
|
| 3 |
Mode: `pre_submit_audit_blocked`
|
| 4 |
OK: `false`
|
| 5 |
-
Created: `2026-07-
|
| 6 |
Final evidence: `docs/assets/final-live-proof-evidence.json`
|
| 7 |
|
| 8 |
## Task Statuses
|
| 9 |
|
| 10 |
-
- T020: `
|
| 11 |
- T021: `doing`
|
| 12 |
- T040: `done`
|
| 13 |
- T041A: `todo`
|
|
@@ -16,7 +16,7 @@ Final evidence: `docs/assets/final-live-proof-evidence.json`
|
|
| 16 |
|
| 17 |
## Section Findings
|
| 18 |
|
| 19 |
-
- tasks:
|
| 20 |
- files: OK
|
| 21 |
- schemas: OK
|
| 22 |
- final_evidence: 1 finding(s)
|
|
@@ -27,7 +27,6 @@ Final evidence: `docs/assets/final-live-proof-evidence.json`
|
|
| 27 |
|
| 28 |
## Findings
|
| 29 |
|
| 30 |
-
- `T020` [doing]: Integrate Backblaze B2-compatible storage is not done. Evidence: `tasks.json`
|
| 31 |
- `T021` [doing]: Integrate Genblaze-compatible generation is not done. Evidence: `tasks.json`
|
| 32 |
- `T041A` [todo]: Run final secret scan is not done. Evidence: `tasks.json`
|
| 33 |
- `final-live-proof-evidence` [missing]: docs/assets/final-live-proof-evidence.json is missing or invalid JSON. Evidence: `docs/assets/final-live-proof-evidence.json`
|
|
@@ -43,7 +42,7 @@ Final evidence: `docs/assets/final-live-proof-evidence.json`
|
|
| 43 |
- `demo_readiness.final_recording_ready` [incomplete]: Final recording readiness gate is not ready. Evidence: `docs/assets/demo-readiness-report.json`
|
| 44 |
- `recording_assets.final_video_ready` [incomplete]: Recording assets do not verify the final public video. Evidence: `docs/assets/recording-assets.json`
|
| 45 |
- `live_credential_handoff.ready_for_live_proof` [incomplete]: Live credential handoff is not ready. Evidence: `docs/assets/live-credential-handoff.json`
|
| 46 |
-
- `final_submission_control.blocking_items` [blocked]: Unexpected blockers remain before audit sign-off:
|
| 47 |
|
| 48 |
## Next Commands
|
| 49 |
|
|
|
|
| 2 |
|
| 3 |
Mode: `pre_submit_audit_blocked`
|
| 4 |
OK: `false`
|
| 5 |
+
Created: `2026-07-01T11:26:25Z`
|
| 6 |
Final evidence: `docs/assets/final-live-proof-evidence.json`
|
| 7 |
|
| 8 |
## Task Statuses
|
| 9 |
|
| 10 |
+
- T020: `done`
|
| 11 |
- T021: `doing`
|
| 12 |
- T040: `done`
|
| 13 |
- T041A: `todo`
|
|
|
|
| 16 |
|
| 17 |
## Section Findings
|
| 18 |
|
| 19 |
+
- tasks: 2 finding(s)
|
| 20 |
- files: OK
|
| 21 |
- schemas: OK
|
| 22 |
- final_evidence: 1 finding(s)
|
|
|
|
| 27 |
|
| 28 |
## Findings
|
| 29 |
|
|
|
|
| 30 |
- `T021` [doing]: Integrate Genblaze-compatible generation is not done. Evidence: `tasks.json`
|
| 31 |
- `T041A` [todo]: Run final secret scan is not done. Evidence: `tasks.json`
|
| 32 |
- `final-live-proof-evidence` [missing]: docs/assets/final-live-proof-evidence.json is missing or invalid JSON. Evidence: `docs/assets/final-live-proof-evidence.json`
|
|
|
|
| 42 |
- `demo_readiness.final_recording_ready` [incomplete]: Final recording readiness gate is not ready. Evidence: `docs/assets/demo-readiness-report.json`
|
| 43 |
- `recording_assets.final_video_ready` [incomplete]: Recording assets do not verify the final public video. Evidence: `docs/assets/recording-assets.json`
|
| 44 |
- `live_credential_handoff.ready_for_live_proof` [incomplete]: Live credential handoff is not ready. Evidence: `docs/assets/live-credential-handoff.json`
|
| 45 |
+
- `final_submission_control.blocking_items` [blocked]: Unexpected blockers remain before audit sign-off: credential_handoff, devpost_submission_checklist, final_recording, final_secret_scan, genblaze_live_proof, public_video, public_video_check Evidence: `docs/assets/final-submission-control.json`
|
| 46 |
|
| 47 |
## Next Commands
|
| 48 |
|
docs/assets/submission-bundle-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_bundle.v1",
|
| 3 |
-
"created_at": "2026-
|
| 4 |
"project": "ProofFrame",
|
| 5 |
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
|
| 6 |
"public_demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
|
|
@@ -20,9 +20,9 @@
|
|
| 20 |
"mode": "pre_live_safe",
|
| 21 |
"summary": {
|
| 22 |
"required": 6,
|
| 23 |
-
"done":
|
| 24 |
"blocked": 0,
|
| 25 |
-
"doing":
|
| 26 |
"todo": 3,
|
| 27 |
"missing": 0
|
| 28 |
},
|
|
@@ -111,11 +111,11 @@
|
|
| 111 |
]
|
| 112 |
},
|
| 113 |
"next_actions": [
|
| 114 |
-
"Run a live Backblaze B2 asset and manifest proof.",
|
| 115 |
"Run a live Genblaze generation proof and capture provider metadata.",
|
| 116 |
"Run the final submission audit after live proofs are captured.",
|
| 117 |
"Run the final secret scan before recording or submitting.",
|
| 118 |
-
"Submit the Devpost project after every preceding gate is done."
|
|
|
|
| 119 |
]
|
| 120 |
},
|
| 121 |
"closeout_gate": {
|
|
@@ -137,7 +137,7 @@
|
|
| 137 |
"present": true,
|
| 138 |
"schema": "proofframe.secret_scan.v1",
|
| 139 |
"schema_ok": true,
|
| 140 |
-
"created_at": "2026-
|
| 141 |
"ready": true,
|
| 142 |
"fresh_after_receipt": true,
|
| 143 |
"findings": []
|
|
@@ -148,7 +148,7 @@
|
|
| 148 |
"present": true,
|
| 149 |
"schema": "proofframe.final_submission_control.v1",
|
| 150 |
"schema_ok": true,
|
| 151 |
-
"created_at": "2026-
|
| 152 |
"ready": false,
|
| 153 |
"fresh_after_receipt": true,
|
| 154 |
"findings": [
|
|
@@ -162,7 +162,7 @@
|
|
| 162 |
"present": true,
|
| 163 |
"schema": "proofframe.final_closeout_status.v1",
|
| 164 |
"schema_ok": true,
|
| 165 |
-
"created_at": "2026-
|
| 166 |
"ready": false,
|
| 167 |
"fresh_after_receipt": true,
|
| 168 |
"findings": [
|
|
@@ -339,7 +339,7 @@
|
|
| 339 |
"label": "Machine-readable Devpost event snapshot",
|
| 340 |
"present": true,
|
| 341 |
"bytes": 2492,
|
| 342 |
-
"sha256": "
|
| 343 |
},
|
| 344 |
{
|
| 345 |
"id": "devpost_event_snapshot_md",
|
|
@@ -347,7 +347,7 @@
|
|
| 347 |
"label": "Human-readable Devpost event snapshot",
|
| 348 |
"present": true,
|
| 349 |
"bytes": 1443,
|
| 350 |
-
"sha256": "
|
| 351 |
},
|
| 352 |
{
|
| 353 |
"id": "agent_handoff_script",
|
|
@@ -363,7 +363,7 @@
|
|
| 363 |
"label": "Machine-readable Agent handoff report",
|
| 364 |
"present": true,
|
| 365 |
"bytes": 2253,
|
| 366 |
-
"sha256": "
|
| 367 |
},
|
| 368 |
{
|
| 369 |
"id": "agent_handoff_md",
|
|
@@ -371,7 +371,7 @@
|
|
| 371 |
"label": "Human-readable Agent handoff report",
|
| 372 |
"present": true,
|
| 373 |
"bytes": 1571,
|
| 374 |
-
"sha256": "
|
| 375 |
},
|
| 376 |
{
|
| 377 |
"id": "public_space_sync_script",
|
|
@@ -387,7 +387,7 @@
|
|
| 387 |
"label": "Machine-readable public Space sync report",
|
| 388 |
"present": true,
|
| 389 |
"bytes": 20606,
|
| 390 |
-
"sha256": "
|
| 391 |
},
|
| 392 |
{
|
| 393 |
"id": "public_space_sync_md",
|
|
@@ -395,7 +395,7 @@
|
|
| 395 |
"label": "Human-readable public Space sync report",
|
| 396 |
"present": true,
|
| 397 |
"bytes": 8673,
|
| 398 |
-
"sha256": "
|
| 399 |
},
|
| 400 |
{
|
| 401 |
"id": "public_space_upload_script",
|
|
@@ -410,8 +410,8 @@
|
|
| 410 |
"path": "docs/assets/public-space-upload-report.json",
|
| 411 |
"label": "Machine-readable public Space upload report",
|
| 412 |
"present": true,
|
| 413 |
-
"bytes":
|
| 414 |
-
"sha256": "
|
| 415 |
},
|
| 416 |
{
|
| 417 |
"id": "public_space_upload_md",
|
|
@@ -419,7 +419,7 @@
|
|
| 419 |
"label": "Human-readable public Space upload report",
|
| 420 |
"present": true,
|
| 421 |
"bytes": 1372,
|
| 422 |
-
"sha256": "
|
| 423 |
},
|
| 424 |
{
|
| 425 |
"id": "public_demo_screenshot_script",
|
|
@@ -802,16 +802,16 @@
|
|
| 802 |
"path": "docs/assets/final-submission-control.json",
|
| 803 |
"label": "Machine-readable final control report",
|
| 804 |
"present": true,
|
| 805 |
-
"bytes":
|
| 806 |
-
"sha256": "
|
| 807 |
},
|
| 808 |
{
|
| 809 |
"id": "final_submission_control_md",
|
| 810 |
"path": "docs/assets/final-submission-control.md",
|
| 811 |
"label": "Human-readable final control report",
|
| 812 |
"present": true,
|
| 813 |
-
"bytes":
|
| 814 |
-
"sha256": "
|
| 815 |
},
|
| 816 |
{
|
| 817 |
"id": "final_closeout_status_script",
|
|
@@ -827,7 +827,7 @@
|
|
| 827 |
"label": "Machine-readable final closeout status",
|
| 828 |
"present": true,
|
| 829 |
"bytes": 12592,
|
| 830 |
-
"sha256": "
|
| 831 |
},
|
| 832 |
{
|
| 833 |
"id": "final_closeout_status_md",
|
|
@@ -922,16 +922,16 @@
|
|
| 922 |
"path": "docs/assets/submission-audit-report.json",
|
| 923 |
"label": "Machine-readable submission audit report",
|
| 924 |
"present": true,
|
| 925 |
-
"bytes":
|
| 926 |
-
"sha256": "
|
| 927 |
},
|
| 928 |
{
|
| 929 |
"id": "submission_audit_md",
|
| 930 |
"path": "docs/assets/submission-audit-report.md",
|
| 931 |
"label": "Human-readable submission audit report",
|
| 932 |
"present": true,
|
| 933 |
-
"bytes":
|
| 934 |
-
"sha256": "
|
| 935 |
},
|
| 936 |
{
|
| 937 |
"id": "devpost_receipt_script",
|
|
@@ -1002,8 +1002,8 @@
|
|
| 1002 |
"path": "docs/assets/secret-scan-report.json",
|
| 1003 |
"label": "Machine-readable secret scan report",
|
| 1004 |
"present": true,
|
| 1005 |
-
"bytes":
|
| 1006 |
-
"sha256": "
|
| 1007 |
},
|
| 1008 |
{
|
| 1009 |
"id": "secret_scan_md",
|
|
@@ -1011,7 +1011,7 @@
|
|
| 1011 |
"label": "Human-readable secret scan report",
|
| 1012 |
"present": true,
|
| 1013 |
"bytes": 846,
|
| 1014 |
-
"sha256": "
|
| 1015 |
},
|
| 1016 |
{
|
| 1017 |
"id": "b2_live_setup_json",
|
|
@@ -1043,7 +1043,7 @@
|
|
| 1043 |
"label": "Machine-readable B2 key scope checklist",
|
| 1044 |
"present": true,
|
| 1045 |
"bytes": 8235,
|
| 1046 |
-
"sha256": "
|
| 1047 |
},
|
| 1048 |
{
|
| 1049 |
"id": "b2_key_scope_checklist_md",
|
|
@@ -1098,16 +1098,16 @@
|
|
| 1098 |
"path": "docs/assets/live-credential-handoff.json",
|
| 1099 |
"label": "Machine-readable live credential handoff",
|
| 1100 |
"present": true,
|
| 1101 |
-
"bytes":
|
| 1102 |
-
"sha256": "
|
| 1103 |
},
|
| 1104 |
{
|
| 1105 |
"id": "live_env_handoff_md",
|
| 1106 |
"path": "docs/assets/live-credential-handoff.md",
|
| 1107 |
"label": "Human-readable live credential handoff",
|
| 1108 |
"present": true,
|
| 1109 |
-
"bytes":
|
| 1110 |
-
"sha256": "
|
| 1111 |
},
|
| 1112 |
{
|
| 1113 |
"id": "final_env_wizard",
|
|
@@ -1131,7 +1131,7 @@
|
|
| 1131 |
"label": "Machine-readable post-credential live proof plan",
|
| 1132 |
"present": true,
|
| 1133 |
"bytes": 8435,
|
| 1134 |
-
"sha256": "
|
| 1135 |
},
|
| 1136 |
{
|
| 1137 |
"id": "post_credential_live_proof_md",
|
|
@@ -1139,7 +1139,7 @@
|
|
| 1139 |
"label": "Human-readable post-credential live proof plan",
|
| 1140 |
"present": true,
|
| 1141 |
"bytes": 2780,
|
| 1142 |
-
"sha256": "
|
| 1143 |
},
|
| 1144 |
{
|
| 1145 |
"id": "public_claim_lint",
|
|
@@ -1218,8 +1218,8 @@
|
|
| 1218 |
"path": "tasks.json",
|
| 1219 |
"label": "Machine-readable task board",
|
| 1220 |
"present": true,
|
| 1221 |
-
"bytes":
|
| 1222 |
-
"sha256": "
|
| 1223 |
},
|
| 1224 |
{
|
| 1225 |
"id": "local_ui_smoke",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_bundle.v1",
|
| 3 |
+
"created_at": "2026-07-01T11:26:25Z",
|
| 4 |
"project": "ProofFrame",
|
| 5 |
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
|
| 6 |
"public_demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
|
|
|
|
| 20 |
"mode": "pre_live_safe",
|
| 21 |
"summary": {
|
| 22 |
"required": 6,
|
| 23 |
+
"done": 2,
|
| 24 |
"blocked": 0,
|
| 25 |
+
"doing": 1,
|
| 26 |
"todo": 3,
|
| 27 |
"missing": 0
|
| 28 |
},
|
|
|
|
| 111 |
]
|
| 112 |
},
|
| 113 |
"next_actions": [
|
|
|
|
| 114 |
"Run a live Genblaze generation proof and capture provider metadata.",
|
| 115 |
"Run the final submission audit after live proofs are captured.",
|
| 116 |
"Run the final secret scan before recording or submitting.",
|
| 117 |
+
"Submit the Devpost project after every preceding gate is done.",
|
| 118 |
+
"Capture final live proof evidence JSON."
|
| 119 |
]
|
| 120 |
},
|
| 121 |
"closeout_gate": {
|
|
|
|
| 137 |
"present": true,
|
| 138 |
"schema": "proofframe.secret_scan.v1",
|
| 139 |
"schema_ok": true,
|
| 140 |
+
"created_at": "2026-07-01T11:26:17Z",
|
| 141 |
"ready": true,
|
| 142 |
"fresh_after_receipt": true,
|
| 143 |
"findings": []
|
|
|
|
| 148 |
"present": true,
|
| 149 |
"schema": "proofframe.final_submission_control.v1",
|
| 150 |
"schema_ok": true,
|
| 151 |
+
"created_at": "2026-07-01T11:26:25Z",
|
| 152 |
"ready": false,
|
| 153 |
"fresh_after_receipt": true,
|
| 154 |
"findings": [
|
|
|
|
| 162 |
"present": true,
|
| 163 |
"schema": "proofframe.final_closeout_status.v1",
|
| 164 |
"schema_ok": true,
|
| 165 |
+
"created_at": "2026-07-01T10:54:27Z",
|
| 166 |
"ready": false,
|
| 167 |
"fresh_after_receipt": true,
|
| 168 |
"findings": [
|
|
|
|
| 339 |
"label": "Machine-readable Devpost event snapshot",
|
| 340 |
"present": true,
|
| 341 |
"bytes": 2492,
|
| 342 |
+
"sha256": "5b7c1f2277d121b89dbc3c1d02ee646dbfbf9d52af4b2d481c5d270aba4f9d14"
|
| 343 |
},
|
| 344 |
{
|
| 345 |
"id": "devpost_event_snapshot_md",
|
|
|
|
| 347 |
"label": "Human-readable Devpost event snapshot",
|
| 348 |
"present": true,
|
| 349 |
"bytes": 1443,
|
| 350 |
+
"sha256": "cc2e49b18ae1776d0942e2dfedd8d2da093c61a5e086eb06b2e4033b1aaf9b9b"
|
| 351 |
},
|
| 352 |
{
|
| 353 |
"id": "agent_handoff_script",
|
|
|
|
| 363 |
"label": "Machine-readable Agent handoff report",
|
| 364 |
"present": true,
|
| 365 |
"bytes": 2253,
|
| 366 |
+
"sha256": "d4912010b69b8a18efb7101abb4840e4fbce51afb6ea4cfe39d854e21815e9ca"
|
| 367 |
},
|
| 368 |
{
|
| 369 |
"id": "agent_handoff_md",
|
|
|
|
| 371 |
"label": "Human-readable Agent handoff report",
|
| 372 |
"present": true,
|
| 373 |
"bytes": 1571,
|
| 374 |
+
"sha256": "04348bf2d799f2f0fdc8d41b167f19b1bcbe63c27d433d27610ac576885e4de0"
|
| 375 |
},
|
| 376 |
{
|
| 377 |
"id": "public_space_sync_script",
|
|
|
|
| 387 |
"label": "Machine-readable public Space sync report",
|
| 388 |
"present": true,
|
| 389 |
"bytes": 20606,
|
| 390 |
+
"sha256": "ad473ba938336977638e60008c9c8fc82c7b6f529962ad65a34a5b1b0a49e8a8"
|
| 391 |
},
|
| 392 |
{
|
| 393 |
"id": "public_space_sync_md",
|
|
|
|
| 395 |
"label": "Human-readable public Space sync report",
|
| 396 |
"present": true,
|
| 397 |
"bytes": 8673,
|
| 398 |
+
"sha256": "3ada1f215d807d27e5185d97c77ec68f5268a253ffe59c29cce8879ee55abff8"
|
| 399 |
},
|
| 400 |
{
|
| 401 |
"id": "public_space_upload_script",
|
|
|
|
| 410 |
"path": "docs/assets/public-space-upload-report.json",
|
| 411 |
"label": "Machine-readable public Space upload report",
|
| 412 |
"present": true,
|
| 413 |
+
"bytes": 4144,
|
| 414 |
+
"sha256": "f638daa8afd5ba7448632ca565afff9868c7c0822d6c33a8be6ca6a7d07f623e"
|
| 415 |
},
|
| 416 |
{
|
| 417 |
"id": "public_space_upload_md",
|
|
|
|
| 419 |
"label": "Human-readable public Space upload report",
|
| 420 |
"present": true,
|
| 421 |
"bytes": 1372,
|
| 422 |
+
"sha256": "cd5387813c1d989e496c494d95e04abc6f4d3b7b767dcfc4f132fe304c33b175"
|
| 423 |
},
|
| 424 |
{
|
| 425 |
"id": "public_demo_screenshot_script",
|
|
|
|
| 802 |
"path": "docs/assets/final-submission-control.json",
|
| 803 |
"label": "Machine-readable final control report",
|
| 804 |
"present": true,
|
| 805 |
+
"bytes": 23805,
|
| 806 |
+
"sha256": "599c0b971d58455bb5daa78e68e61fade629406021e96cb58e2731b89d558f9e"
|
| 807 |
},
|
| 808 |
{
|
| 809 |
"id": "final_submission_control_md",
|
| 810 |
"path": "docs/assets/final-submission-control.md",
|
| 811 |
"label": "Human-readable final control report",
|
| 812 |
"present": true,
|
| 813 |
+
"bytes": 7096,
|
| 814 |
+
"sha256": "580504b86d270bfe7d4a40da3015394d1adca02d217f0fcf6c2b36230b7b7a9f"
|
| 815 |
},
|
| 816 |
{
|
| 817 |
"id": "final_closeout_status_script",
|
|
|
|
| 827 |
"label": "Machine-readable final closeout status",
|
| 828 |
"present": true,
|
| 829 |
"bytes": 12592,
|
| 830 |
+
"sha256": "532bd71fdd7485ee1d6956f429304f8cec36b3af5b1623f8fba2945ecbe619bc"
|
| 831 |
},
|
| 832 |
{
|
| 833 |
"id": "final_closeout_status_md",
|
|
|
|
| 922 |
"path": "docs/assets/submission-audit-report.json",
|
| 923 |
"label": "Machine-readable submission audit report",
|
| 924 |
"present": true,
|
| 925 |
+
"bytes": 5759,
|
| 926 |
+
"sha256": "1abdb4af1b0c4e9726be4d7d91d03c374ac4bc4f3061581d85ab5b8ae2621b09"
|
| 927 |
},
|
| 928 |
{
|
| 929 |
"id": "submission_audit_md",
|
| 930 |
"path": "docs/assets/submission-audit-report.md",
|
| 931 |
"label": "Human-readable submission audit report",
|
| 932 |
"present": true,
|
| 933 |
+
"bytes": 4362,
|
| 934 |
+
"sha256": "fe2134a30bbfb05aa22d169f6eb4fed5a2ab8931c58d3f61f55660fe96fb6ed2"
|
| 935 |
},
|
| 936 |
{
|
| 937 |
"id": "devpost_receipt_script",
|
|
|
|
| 1002 |
"path": "docs/assets/secret-scan-report.json",
|
| 1003 |
"label": "Machine-readable secret scan report",
|
| 1004 |
"present": true,
|
| 1005 |
+
"bytes": 12005,
|
| 1006 |
+
"sha256": "fa4482048de6bcc086601a110f091644e31e398d98ff5f7420183965c0e4ee5d"
|
| 1007 |
},
|
| 1008 |
{
|
| 1009 |
"id": "secret_scan_md",
|
|
|
|
| 1011 |
"label": "Human-readable secret scan report",
|
| 1012 |
"present": true,
|
| 1013 |
"bytes": 846,
|
| 1014 |
+
"sha256": "d960c02de5417f75d8834ed0816056cb8e42440a4dd24bd9970982962fc42498"
|
| 1015 |
},
|
| 1016 |
{
|
| 1017 |
"id": "b2_live_setup_json",
|
|
|
|
| 1043 |
"label": "Machine-readable B2 key scope checklist",
|
| 1044 |
"present": true,
|
| 1045 |
"bytes": 8235,
|
| 1046 |
+
"sha256": "b72f6e8b2cc55e1fb08b62adddae0d6b99e365fda32e81c645f56edc09892736"
|
| 1047 |
},
|
| 1048 |
{
|
| 1049 |
"id": "b2_key_scope_checklist_md",
|
|
|
|
| 1098 |
"path": "docs/assets/live-credential-handoff.json",
|
| 1099 |
"label": "Machine-readable live credential handoff",
|
| 1100 |
"present": true,
|
| 1101 |
+
"bytes": 4499,
|
| 1102 |
+
"sha256": "b862543b787de78a63ed4d290441d766f1dd050777ed8039309c3e45000bca0c"
|
| 1103 |
},
|
| 1104 |
{
|
| 1105 |
"id": "live_env_handoff_md",
|
| 1106 |
"path": "docs/assets/live-credential-handoff.md",
|
| 1107 |
"label": "Human-readable live credential handoff",
|
| 1108 |
"present": true,
|
| 1109 |
+
"bytes": 2167,
|
| 1110 |
+
"sha256": "dd631bc9450e50e56b6560d46e6f75066ccd5a6f1935d656e157361ce3568125"
|
| 1111 |
},
|
| 1112 |
{
|
| 1113 |
"id": "final_env_wizard",
|
|
|
|
| 1131 |
"label": "Machine-readable post-credential live proof plan",
|
| 1132 |
"present": true,
|
| 1133 |
"bytes": 8435,
|
| 1134 |
+
"sha256": "58391cf9121b1711a67a005aa8f81c828cdb608f082b7fe412a5c6ee7778f232"
|
| 1135 |
},
|
| 1136 |
{
|
| 1137 |
"id": "post_credential_live_proof_md",
|
|
|
|
| 1139 |
"label": "Human-readable post-credential live proof plan",
|
| 1140 |
"present": true,
|
| 1141 |
"bytes": 2780,
|
| 1142 |
+
"sha256": "919c0e75c22a559c1fa6977ff95d327851e798399b2ce8cb47717f173fbff0a9"
|
| 1143 |
},
|
| 1144 |
{
|
| 1145 |
"id": "public_claim_lint",
|
|
|
|
| 1218 |
"path": "tasks.json",
|
| 1219 |
"label": "Machine-readable task board",
|
| 1220 |
"present": true,
|
| 1221 |
+
"bytes": 72989,
|
| 1222 |
+
"sha256": "74f1d6a55d1ee436747062ad0440aa4c780a41032ea628a0f3bebcb79d2f4919"
|
| 1223 |
},
|
| 1224 |
{
|
| 1225 |
"id": "local_ui_smoke",
|
docs/assets/submission-bundle-manifest.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# ProofFrame Submission Bundle
|
| 2 |
|
| 3 |
-
Created: `2026-
|
| 4 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 5 |
Public mock demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 6 |
Devpost packet mode: `pre_live_safe`
|
|
@@ -9,7 +9,7 @@ Final gate ready: `false`
|
|
| 9 |
|
| 10 |
## Current Gate
|
| 11 |
|
| 12 |
-
- Tasks:
|
| 13 |
- Live evidence: `missing`
|
| 14 |
- Devpost copy packet: `pre_live_packet_pending`
|
| 15 |
- Final reports: `incomplete`
|
|
@@ -17,11 +17,11 @@ Final gate ready: `false`
|
|
| 17 |
|
| 18 |
## Next Actions
|
| 19 |
|
| 20 |
-
- Run a live Backblaze B2 asset and manifest proof.
|
| 21 |
- Run a live Genblaze generation proof and capture provider metadata.
|
| 22 |
- Run the final submission audit after live proofs are captured.
|
| 23 |
- Run the final secret scan before recording or submitting.
|
| 24 |
- Submit the Devpost project after every preceding gate is done.
|
|
|
|
| 25 |
|
| 26 |
## Artifacts
|
| 27 |
|
|
@@ -38,17 +38,17 @@ Final gate ready: `false`
|
|
| 38 |
- `docs/assets/devpost-submission-packet.json` (6270 bytes, sha256 `92b06cc47f68c410...`) - Machine-readable Devpost copy
|
| 39 |
- `docs/assets/devpost-submission-packet.md` (5159 bytes, sha256 `00e03e34b62dfdfc...`) - Human-readable Devpost copy
|
| 40 |
- `scripts/devpost_event_snapshot.py` (19728 bytes, sha256 `1389e03af0d481ea...`) - Official Devpost event snapshot checker
|
| 41 |
-
- `docs/assets/devpost-event-snapshot.json` (2492 bytes, sha256 `
|
| 42 |
-
- `docs/assets/devpost-event-snapshot.md` (1443 bytes, sha256 `
|
| 43 |
- `scripts/agent_handoff_check.py` (14559 bytes, sha256 `3ef180b6a92eb987...`) - Agent Bus and Codex handoff path checker
|
| 44 |
-
- `docs/assets/agent-handoff-report.json` (2253 bytes, sha256 `
|
| 45 |
-
- `docs/assets/agent-handoff-report.md` (1571 bytes, sha256 `
|
| 46 |
- `scripts/public_space_sync.py` (84964 bytes, sha256 `52280330d9e7605b...`) - Public Hugging Face Space sync verifier
|
| 47 |
-
- `docs/assets/public-space-sync-report.json` (20606 bytes, sha256 `
|
| 48 |
-
- `docs/assets/public-space-sync-report.md` (8673 bytes, sha256 `
|
| 49 |
- `scripts/public_space_upload.py` (12920 bytes, sha256 `38e4c3e665478e0b...`) - No-secret public Hugging Face Space upload helper
|
| 50 |
-
- `docs/assets/public-space-upload-report.json` (
|
| 51 |
-
- `docs/assets/public-space-upload-report.md` (1372 bytes, sha256 `
|
| 52 |
- `scripts/public_demo_screenshot.py` (8926 bytes, sha256 `3eb5b0a003e383dd...`) - Public judge-mode screenshot verifier
|
| 53 |
- `docs/assets/public-demo-screenshot-report.json` (2421 bytes, sha256 `e8ce08735a86a920...`) - Machine-readable public screenshot report
|
| 54 |
- `docs/assets/public-demo-screenshot-report.md` (1418 bytes, sha256 `dce44c3bc2188131...`) - Human-readable public screenshot report
|
|
@@ -96,10 +96,10 @@ Final gate ready: `false`
|
|
| 96 |
- `docs/assets/award-readiness-report.json` (11377 bytes, sha256 `66417f6e0c2a15d9...`) - Machine-readable award readiness report
|
| 97 |
- `docs/assets/award-readiness-report.md` (4390 bytes, sha256 `5be57ca5d9cab53d...`) - Human-readable award readiness report
|
| 98 |
- `scripts/final_submission_control.py` (32644 bytes, sha256 `6514cbdf2bfe8998...`) - Final submission control tower
|
| 99 |
-
- `docs/assets/final-submission-control.json` (
|
| 100 |
-
- `docs/assets/final-submission-control.md` (
|
| 101 |
- `scripts/final_closeout_status.py` (19027 bytes, sha256 `fef94acd01449141...`) - No-secret final closeout status report
|
| 102 |
-
- `docs/assets/final-closeout-status.json` (12592 bytes, sha256 `
|
| 103 |
- `docs/assets/final-closeout-status.md` (2467 bytes, sha256 `218ef848c482db51...`) - Human-readable final closeout status
|
| 104 |
- `scripts/final_operator_brief.py` (15912 bytes, sha256 `1e01afa36b48d9b8...`) - No-secret final operator brief
|
| 105 |
- `docs/assets/final-operator-brief.json` (10142 bytes, sha256 `4fb10abaa1f654cf...`) - Machine-readable final operator brief
|
|
@@ -111,8 +111,8 @@ Final gate ready: `false`
|
|
| 111 |
- `docs/assets/final-rehearsal-checklist.json` (17103 bytes, sha256 `ae398d43c900e40f...`) - Machine-readable final rehearsal checklist
|
| 112 |
- `docs/assets/final-rehearsal-checklist.md` (7404 bytes, sha256 `026e07a2a99bf616...`) - Human-readable final rehearsal checklist
|
| 113 |
- `scripts/submission_audit.py` (20684 bytes, sha256 `0f9a378c203bf7b6...`) - Pre-submit audit gate
|
| 114 |
-
- `docs/assets/submission-audit-report.json` (
|
| 115 |
-
- `docs/assets/submission-audit-report.md` (
|
| 116 |
- `scripts/devpost_submission_receipt.py` (9209 bytes, sha256 `76c55e8ff1aeaa52...`) - Public-safe Devpost submission receipt generator
|
| 117 |
- `docs/assets/devpost-submission-receipt.json` (1298 bytes, sha256 `bf646cf968665c8c...`) - Machine-readable Devpost submission receipt
|
| 118 |
- `docs/assets/devpost-submission-receipt.md` (996 bytes, sha256 `af2fa18349d5c017...`) - Human-readable Devpost submission receipt
|
|
@@ -121,24 +121,24 @@ Final gate ready: `false`
|
|
| 121 |
- `docs/verification.md` (12499 bytes, sha256 `c92fd26c877d5c5f...`) - Local, CI, Docker, and live proof runbook
|
| 122 |
- `.env.final.example` (363 bytes, sha256 `fb5fad4f14e2b0ad...`) - Redacted final B2 plus Genblaze env template
|
| 123 |
- `scripts/secret_scan.py` (11105 bytes, sha256 `02aec3a4a6e9fd47...`) - Final secret scanner
|
| 124 |
-
- `docs/assets/secret-scan-report.json` (
|
| 125 |
-
- `docs/assets/secret-scan-report.md` (846 bytes, sha256 `
|
| 126 |
- `docs/assets/b2-live-setup.json` (719 bytes, sha256 `a377923f48e112b1...`) - Non-secret B2 bucket setup record
|
| 127 |
- `docs/assets/b2-live-setup.md` (864 bytes, sha256 `863b2a02e3d2824f...`) - Human-readable B2 bucket setup record
|
| 128 |
- `scripts/b2_key_scope_checklist.py` (17240 bytes, sha256 `bb1e6140f10aa3ac...`) - No-secret Backblaze B2 application key scope checklist
|
| 129 |
-
- `docs/assets/b2-key-scope-checklist.json` (8235 bytes, sha256 `
|
| 130 |
- `docs/assets/b2-key-scope-checklist.md` (4527 bytes, sha256 `2fa660a7e0e19d0e...`) - Human-readable B2 key scope checklist
|
| 131 |
- `scripts/genblaze_contract_check.py` (12455 bytes, sha256 `58bf94bc7d994415...`) - No-secret Genblaze/B2 SDK contract checker
|
| 132 |
- `docs/assets/genblaze-contract-report.json` (5919 bytes, sha256 `0e30a126a206f946...`) - Machine-readable Genblaze SDK contract report
|
| 133 |
- `docs/assets/genblaze-contract-report.md` (3166 bytes, sha256 `6bb4bdb7c7a39915...`) - Human-readable Genblaze SDK contract report
|
| 134 |
- `scripts/run_b2_live_proof.py` (5781 bytes, sha256 `9678c0292a70cc0b...`) - One-command B2 storage proof runner
|
| 135 |
- `scripts/live_env_handoff.py` (9451 bytes, sha256 `39c8de0b58c132c3...`) - Redacted live credential handoff gate
|
| 136 |
-
- `docs/assets/live-credential-handoff.json` (
|
| 137 |
-
- `docs/assets/live-credential-handoff.md` (
|
| 138 |
- `scripts/final_env_wizard.py` (18690 bytes, sha256 `0fd664973da43311...`) - Local final credential env wizard
|
| 139 |
- `scripts/post_credential_live_proof.py` (17600 bytes, sha256 `244d2ecd9bb2f791...`) - Post-credential live proof sequence runner
|
| 140 |
-
- `docs/assets/post-credential-live-proof-plan.json` (8435 bytes, sha256 `
|
| 141 |
-
- `docs/assets/post-credential-live-proof-plan.md` (2780 bytes, sha256 `
|
| 142 |
- `scripts/claim_lint.py` (5190 bytes, sha256 `d8e9f53dfee772a1...`) - Fail-closed public claim lint
|
| 143 |
- `scripts/demo_readiness.py` (8661 bytes, sha256 `d38ad138a2ca0d78...`) - Demo recording readiness gate
|
| 144 |
- `docs/assets/demo-readiness-report.json` (3893 bytes, sha256 `ebd13ea05535dba2...`) - Machine-readable demo readiness report
|
|
@@ -148,7 +148,7 @@ Final gate ready: `false`
|
|
| 148 |
- `docs/assets/recording-assets.md` (3867 bytes, sha256 `e3d2ef5dd86dfe33...`) - Human-readable recording asset report
|
| 149 |
- `scripts/run_final_live_proof.py` (5814 bytes, sha256 `c6b9dc2fc9d7c670...`) - One-command final B2 plus Genblaze proof runner
|
| 150 |
- `docs/submission.md` (4000 bytes, sha256 `b702417f1345fe39...`) - Registration and submission plan
|
| 151 |
-
- `tasks.json` (
|
| 152 |
- `docs/assets/proofframe-local-ui-smoke.png` (364927 bytes, sha256 `cca671ad38bda4dc...`) - Local UI screenshot
|
| 153 |
- `docs/assets/proofframe-review-console-smoke.png` (343618 bytes, sha256 `30620a33e3c7ab28...`) - Review console screenshot
|
| 154 |
- `docs/assets/proofframe-hf-public-smoke.png` (741074 bytes, sha256 `5d6f68f7a4a2fdee...`) - Public mock demo screenshot
|
|
|
|
| 1 |
# ProofFrame Submission Bundle
|
| 2 |
|
| 3 |
+
Created: `2026-07-01T11:26:25Z`
|
| 4 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 5 |
Public mock demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 6 |
Devpost packet mode: `pre_live_safe`
|
|
|
|
| 9 |
|
| 10 |
## Current Gate
|
| 11 |
|
| 12 |
+
- Tasks: 2 done / 6 required; 1 doing, 0 blocked, 3 todo.
|
| 13 |
- Live evidence: `missing`
|
| 14 |
- Devpost copy packet: `pre_live_packet_pending`
|
| 15 |
- Final reports: `incomplete`
|
|
|
|
| 17 |
|
| 18 |
## Next Actions
|
| 19 |
|
|
|
|
| 20 |
- Run a live Genblaze generation proof and capture provider metadata.
|
| 21 |
- Run the final submission audit after live proofs are captured.
|
| 22 |
- Run the final secret scan before recording or submitting.
|
| 23 |
- Submit the Devpost project after every preceding gate is done.
|
| 24 |
+
- Capture final live proof evidence JSON.
|
| 25 |
|
| 26 |
## Artifacts
|
| 27 |
|
|
|
|
| 38 |
- `docs/assets/devpost-submission-packet.json` (6270 bytes, sha256 `92b06cc47f68c410...`) - Machine-readable Devpost copy
|
| 39 |
- `docs/assets/devpost-submission-packet.md` (5159 bytes, sha256 `00e03e34b62dfdfc...`) - Human-readable Devpost copy
|
| 40 |
- `scripts/devpost_event_snapshot.py` (19728 bytes, sha256 `1389e03af0d481ea...`) - Official Devpost event snapshot checker
|
| 41 |
+
- `docs/assets/devpost-event-snapshot.json` (2492 bytes, sha256 `5b7c1f2277d121b8...`) - Machine-readable Devpost event snapshot
|
| 42 |
+
- `docs/assets/devpost-event-snapshot.md` (1443 bytes, sha256 `cc2e49b18ae1776d...`) - Human-readable Devpost event snapshot
|
| 43 |
- `scripts/agent_handoff_check.py` (14559 bytes, sha256 `3ef180b6a92eb987...`) - Agent Bus and Codex handoff path checker
|
| 44 |
+
- `docs/assets/agent-handoff-report.json` (2253 bytes, sha256 `d4912010b69b8a18...`) - Machine-readable Agent handoff report
|
| 45 |
+
- `docs/assets/agent-handoff-report.md` (1571 bytes, sha256 `04348bf2d799f2f0...`) - Human-readable Agent handoff report
|
| 46 |
- `scripts/public_space_sync.py` (84964 bytes, sha256 `52280330d9e7605b...`) - Public Hugging Face Space sync verifier
|
| 47 |
+
- `docs/assets/public-space-sync-report.json` (20606 bytes, sha256 `ad473ba938336977...`) - Machine-readable public Space sync report
|
| 48 |
+
- `docs/assets/public-space-sync-report.md` (8673 bytes, sha256 `3ada1f215d807d27...`) - Human-readable public Space sync report
|
| 49 |
- `scripts/public_space_upload.py` (12920 bytes, sha256 `38e4c3e665478e0b...`) - No-secret public Hugging Face Space upload helper
|
| 50 |
+
- `docs/assets/public-space-upload-report.json` (4144 bytes, sha256 `f638daa8afd5ba74...`) - Machine-readable public Space upload report
|
| 51 |
+
- `docs/assets/public-space-upload-report.md` (1372 bytes, sha256 `cd5387813c1d989e...`) - Human-readable public Space upload report
|
| 52 |
- `scripts/public_demo_screenshot.py` (8926 bytes, sha256 `3eb5b0a003e383dd...`) - Public judge-mode screenshot verifier
|
| 53 |
- `docs/assets/public-demo-screenshot-report.json` (2421 bytes, sha256 `e8ce08735a86a920...`) - Machine-readable public screenshot report
|
| 54 |
- `docs/assets/public-demo-screenshot-report.md` (1418 bytes, sha256 `dce44c3bc2188131...`) - Human-readable public screenshot report
|
|
|
|
| 96 |
- `docs/assets/award-readiness-report.json` (11377 bytes, sha256 `66417f6e0c2a15d9...`) - Machine-readable award readiness report
|
| 97 |
- `docs/assets/award-readiness-report.md` (4390 bytes, sha256 `5be57ca5d9cab53d...`) - Human-readable award readiness report
|
| 98 |
- `scripts/final_submission_control.py` (32644 bytes, sha256 `6514cbdf2bfe8998...`) - Final submission control tower
|
| 99 |
+
- `docs/assets/final-submission-control.json` (23805 bytes, sha256 `599c0b971d58455b...`) - Machine-readable final control report
|
| 100 |
+
- `docs/assets/final-submission-control.md` (7096 bytes, sha256 `580504b86d270bfe...`) - Human-readable final control report
|
| 101 |
- `scripts/final_closeout_status.py` (19027 bytes, sha256 `fef94acd01449141...`) - No-secret final closeout status report
|
| 102 |
+
- `docs/assets/final-closeout-status.json` (12592 bytes, sha256 `532bd71fdd7485ee...`) - Machine-readable final closeout status
|
| 103 |
- `docs/assets/final-closeout-status.md` (2467 bytes, sha256 `218ef848c482db51...`) - Human-readable final closeout status
|
| 104 |
- `scripts/final_operator_brief.py` (15912 bytes, sha256 `1e01afa36b48d9b8...`) - No-secret final operator brief
|
| 105 |
- `docs/assets/final-operator-brief.json` (10142 bytes, sha256 `4fb10abaa1f654cf...`) - Machine-readable final operator brief
|
|
|
|
| 111 |
- `docs/assets/final-rehearsal-checklist.json` (17103 bytes, sha256 `ae398d43c900e40f...`) - Machine-readable final rehearsal checklist
|
| 112 |
- `docs/assets/final-rehearsal-checklist.md` (7404 bytes, sha256 `026e07a2a99bf616...`) - Human-readable final rehearsal checklist
|
| 113 |
- `scripts/submission_audit.py` (20684 bytes, sha256 `0f9a378c203bf7b6...`) - Pre-submit audit gate
|
| 114 |
+
- `docs/assets/submission-audit-report.json` (5759 bytes, sha256 `1abdb4af1b0c4e97...`) - Machine-readable submission audit report
|
| 115 |
+
- `docs/assets/submission-audit-report.md` (4362 bytes, sha256 `fe2134a30bbfb05a...`) - Human-readable submission audit report
|
| 116 |
- `scripts/devpost_submission_receipt.py` (9209 bytes, sha256 `76c55e8ff1aeaa52...`) - Public-safe Devpost submission receipt generator
|
| 117 |
- `docs/assets/devpost-submission-receipt.json` (1298 bytes, sha256 `bf646cf968665c8c...`) - Machine-readable Devpost submission receipt
|
| 118 |
- `docs/assets/devpost-submission-receipt.md` (996 bytes, sha256 `af2fa18349d5c017...`) - Human-readable Devpost submission receipt
|
|
|
|
| 121 |
- `docs/verification.md` (12499 bytes, sha256 `c92fd26c877d5c5f...`) - Local, CI, Docker, and live proof runbook
|
| 122 |
- `.env.final.example` (363 bytes, sha256 `fb5fad4f14e2b0ad...`) - Redacted final B2 plus Genblaze env template
|
| 123 |
- `scripts/secret_scan.py` (11105 bytes, sha256 `02aec3a4a6e9fd47...`) - Final secret scanner
|
| 124 |
+
- `docs/assets/secret-scan-report.json` (12005 bytes, sha256 `fa4482048de6bcc0...`) - Machine-readable secret scan report
|
| 125 |
+
- `docs/assets/secret-scan-report.md` (846 bytes, sha256 `d960c02de5417f75...`) - Human-readable secret scan report
|
| 126 |
- `docs/assets/b2-live-setup.json` (719 bytes, sha256 `a377923f48e112b1...`) - Non-secret B2 bucket setup record
|
| 127 |
- `docs/assets/b2-live-setup.md` (864 bytes, sha256 `863b2a02e3d2824f...`) - Human-readable B2 bucket setup record
|
| 128 |
- `scripts/b2_key_scope_checklist.py` (17240 bytes, sha256 `bb1e6140f10aa3ac...`) - No-secret Backblaze B2 application key scope checklist
|
| 129 |
+
- `docs/assets/b2-key-scope-checklist.json` (8235 bytes, sha256 `b72f6e8b2cc55e1f...`) - Machine-readable B2 key scope checklist
|
| 130 |
- `docs/assets/b2-key-scope-checklist.md` (4527 bytes, sha256 `2fa660a7e0e19d0e...`) - Human-readable B2 key scope checklist
|
| 131 |
- `scripts/genblaze_contract_check.py` (12455 bytes, sha256 `58bf94bc7d994415...`) - No-secret Genblaze/B2 SDK contract checker
|
| 132 |
- `docs/assets/genblaze-contract-report.json` (5919 bytes, sha256 `0e30a126a206f946...`) - Machine-readable Genblaze SDK contract report
|
| 133 |
- `docs/assets/genblaze-contract-report.md` (3166 bytes, sha256 `6bb4bdb7c7a39915...`) - Human-readable Genblaze SDK contract report
|
| 134 |
- `scripts/run_b2_live_proof.py` (5781 bytes, sha256 `9678c0292a70cc0b...`) - One-command B2 storage proof runner
|
| 135 |
- `scripts/live_env_handoff.py` (9451 bytes, sha256 `39c8de0b58c132c3...`) - Redacted live credential handoff gate
|
| 136 |
+
- `docs/assets/live-credential-handoff.json` (4499 bytes, sha256 `b862543b787de78a...`) - Machine-readable live credential handoff
|
| 137 |
+
- `docs/assets/live-credential-handoff.md` (2167 bytes, sha256 `dd631bc9450e50e5...`) - Human-readable live credential handoff
|
| 138 |
- `scripts/final_env_wizard.py` (18690 bytes, sha256 `0fd664973da43311...`) - Local final credential env wizard
|
| 139 |
- `scripts/post_credential_live_proof.py` (17600 bytes, sha256 `244d2ecd9bb2f791...`) - Post-credential live proof sequence runner
|
| 140 |
+
- `docs/assets/post-credential-live-proof-plan.json` (8435 bytes, sha256 `58391cf9121b1711...`) - Machine-readable post-credential live proof plan
|
| 141 |
+
- `docs/assets/post-credential-live-proof-plan.md` (2780 bytes, sha256 `919c0e75c22a559c...`) - Human-readable post-credential live proof plan
|
| 142 |
- `scripts/claim_lint.py` (5190 bytes, sha256 `d8e9f53dfee772a1...`) - Fail-closed public claim lint
|
| 143 |
- `scripts/demo_readiness.py` (8661 bytes, sha256 `d38ad138a2ca0d78...`) - Demo recording readiness gate
|
| 144 |
- `docs/assets/demo-readiness-report.json` (3893 bytes, sha256 `ebd13ea05535dba2...`) - Machine-readable demo readiness report
|
|
|
|
| 148 |
- `docs/assets/recording-assets.md` (3867 bytes, sha256 `e3d2ef5dd86dfe33...`) - Human-readable recording asset report
|
| 149 |
- `scripts/run_final_live_proof.py` (5814 bytes, sha256 `c6b9dc2fc9d7c670...`) - One-command final B2 plus Genblaze proof runner
|
| 150 |
- `docs/submission.md` (4000 bytes, sha256 `b702417f1345fe39...`) - Registration and submission plan
|
| 151 |
+
- `tasks.json` (72989 bytes, sha256 `74f1d6a55d1ee436...`) - Machine-readable task board
|
| 152 |
- `docs/assets/proofframe-local-ui-smoke.png` (364927 bytes, sha256 `cca671ad38bda4dc...`) - Local UI screenshot
|
| 153 |
- `docs/assets/proofframe-review-console-smoke.png` (343618 bytes, sha256 `30620a33e3c7ab28...`) - Review console screenshot
|
| 154 |
- `docs/assets/proofframe-hf-public-smoke.png` (741074 bytes, sha256 `5d6f68f7a4a2fdee...`) - Public mock demo screenshot
|
docs/todo.md
CHANGED
|
@@ -34,6 +34,18 @@ python3 scripts/task.py doing T020 --note "Live B2 proof in progress"
|
|
| 34 |
5. Run the final secret scan, strict form/storyboard/readiness gates, and `python scripts/submission_audit.py --strict-final`.
|
| 35 |
6. Keep public claims frozen with `docs/public_claim_freeze.md` until real B2 and Genblaze evidence exists and the strict audit is green.
|
| 36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
## Recently Completed
|
| 38 |
|
| 39 |
| Task | Result |
|
|
|
|
| 34 |
5. Run the final secret scan, strict form/storyboard/readiness gates, and `python scripts/submission_audit.py --strict-final`.
|
| 35 |
6. Keep public claims frozen with `docs/public_claim_freeze.md` until real B2 and Genblaze evidence exists and the strict audit is green.
|
| 36 |
|
| 37 |
+
## Current Final Gate Status
|
| 38 |
+
|
| 39 |
+
Last refreshed: `2026-07-01`.
|
| 40 |
+
|
| 41 |
+
| Task | True status | Evidence |
|
| 42 |
+
| --- | --- | --- |
|
| 43 |
+
| T020 | `done` | B2 live proof passed with scoped standard key against bucket `proofframe-demo-a6b4e49` and prefix `campaigns/`; sanitized evidence is saved at `docs/assets/b2-live-proof-evidence.json`. Generation remains mock until T021. |
|
| 44 |
+
| T021 | `doing` | Genblaze adapter and SDK packages are ready; live proof still waits for local `GENBLAZE_API_KEY` entry. |
|
| 45 |
+
| T041 | `todo` | `docs/assets/submission-audit-report.json` is regenerated in `pre_submit_audit_blocked` mode with 17 findings. |
|
| 46 |
+
| T041A | `todo` | `docs/assets/secret-scan-report.json` is clear for the current pre-final tree; final scan remains after live proof, final public video, and Devpost artifacts exist. |
|
| 47 |
+
| T042 | `todo` | Official Devpost snapshot is fresh, `submission_open=true`, and observed participants are `439`; final submission waits for live proof, public video, strict audit, and receipt capture. |
|
| 48 |
+
|
| 49 |
## Recently Completed
|
| 50 |
|
| 51 |
| Task | Result |
|
src/proofframe/storage.py
CHANGED
|
@@ -24,6 +24,13 @@ def _manifest_bytes(manifest: CampaignManifest) -> bytes:
|
|
| 24 |
return manifest.model_dump_json(indent=2).encode("utf-8")
|
| 25 |
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
class LocalStorageBackend:
|
| 28 |
"""Filesystem storage used for tests and credential-free demos."""
|
| 29 |
|
|
@@ -90,6 +97,9 @@ class B2StorageBackend:
|
|
| 90 |
|
| 91 |
name = "b2"
|
| 92 |
|
|
|
|
|
|
|
|
|
|
| 93 |
@classmethod
|
| 94 |
def from_settings(cls, settings: Settings) -> "B2StorageBackend":
|
| 95 |
settings.require_b2()
|
|
|
|
| 24 |
return manifest.model_dump_json(indent=2).encode("utf-8")
|
| 25 |
|
| 26 |
|
| 27 |
+
def _endpoint_with_scheme(endpoint_url: str) -> str:
|
| 28 |
+
endpoint = endpoint_url.strip()
|
| 29 |
+
if endpoint and "://" not in endpoint:
|
| 30 |
+
return f"https://{endpoint}"
|
| 31 |
+
return endpoint
|
| 32 |
+
|
| 33 |
+
|
| 34 |
class LocalStorageBackend:
|
| 35 |
"""Filesystem storage used for tests and credential-free demos."""
|
| 36 |
|
|
|
|
| 97 |
|
| 98 |
name = "b2"
|
| 99 |
|
| 100 |
+
def __post_init__(self) -> None:
|
| 101 |
+
self.endpoint_url = _endpoint_with_scheme(self.endpoint_url)
|
| 102 |
+
|
| 103 |
@classmethod
|
| 104 |
def from_settings(cls, settings: Settings) -> "B2StorageBackend":
|
| 105 |
settings.require_b2()
|
tasks.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"project": "ProofFrame",
|
| 3 |
-
"updated_at": "2026-
|
| 4 |
"tasks": [
|
| 5 |
{
|
| 6 |
"id": "T001",
|
|
@@ -115,9 +115,9 @@
|
|
| 115 |
"title": "Integrate Backblaze B2-compatible storage",
|
| 116 |
"phase": "P2 Integrations",
|
| 117 |
"owner": "executor",
|
| 118 |
-
"status": "
|
| 119 |
"done_criteria": "B2 backend stores an asset and manifest using env-only credentials.",
|
| 120 |
-
"notes": "B2
|
| 121 |
},
|
| 122 |
{
|
| 123 |
"id": "T021",
|
|
@@ -126,7 +126,7 @@
|
|
| 126 |
"owner": "executor",
|
| 127 |
"status": "doing",
|
| 128 |
"done_criteria": "Generation adapter records provider/model metadata and fails closed without config.",
|
| 129 |
-
"notes": "Genblaze/
|
| 130 |
},
|
| 131 |
{
|
| 132 |
"id": "T084",
|
|
@@ -675,7 +675,7 @@
|
|
| 675 |
"owner": "reviewer",
|
| 676 |
"status": "todo",
|
| 677 |
"done_criteria": "Reviewer signs off on rules, secrets, claims, and public artifacts.",
|
| 678 |
-
"notes": ""
|
| 679 |
},
|
| 680 |
{
|
| 681 |
"id": "T041A",
|
|
@@ -684,7 +684,7 @@
|
|
| 684 |
"owner": "reviewer",
|
| 685 |
"status": "todo",
|
| 686 |
"done_criteria": "Secret scan covers repo, docs, screenshots, exported manifests, logs, and demo evidence before submission.",
|
| 687 |
-
"notes": "
|
| 688 |
},
|
| 689 |
{
|
| 690 |
"id": "T041B",
|
|
@@ -711,7 +711,7 @@
|
|
| 711 |
"owner": "controller",
|
| 712 |
"status": "todo",
|
| 713 |
"done_criteria": "Devpost submission is accepted before 2026-08-04 05:00 Asia/Shanghai.",
|
| 714 |
-
"notes": ""
|
| 715 |
},
|
| 716 |
{
|
| 717 |
"id": "T042A",
|
|
|
|
| 1 |
{
|
| 2 |
"project": "ProofFrame",
|
| 3 |
+
"updated_at": "2026-07-01T11:25:32Z",
|
| 4 |
"tasks": [
|
| 5 |
{
|
| 6 |
"id": "T001",
|
|
|
|
| 115 |
"title": "Integrate Backblaze B2-compatible storage",
|
| 116 |
"phase": "P2 Integrations",
|
| 117 |
"owner": "executor",
|
| 118 |
+
"status": "done",
|
| 119 |
"done_criteria": "B2 backend stores an asset and manifest using env-only credentials.",
|
| 120 |
+
"notes": "B2 live proof passed with scoped standard key against bucket proofframe-demo-a6b4e49 and prefix campaigns/; sanitized evidence saved at docs/assets/b2-live-proof-evidence.json. Generation remains mock until T021."
|
| 121 |
},
|
| 122 |
{
|
| 123 |
"id": "T021",
|
|
|
|
| 126 |
"owner": "executor",
|
| 127 |
"status": "doing",
|
| 128 |
"done_criteria": "Generation adapter records provider/model metadata and fails closed without config.",
|
| 129 |
+
"notes": "Genblaze/GMI adapter and SDK packages remain ready; 2026-07-01 final proof preflight confirms model and genblaze_core/genblaze_gmicloud/genblaze_s3 are available, but live proof is still blocked by missing local GENBLAZE_API_KEY."
|
| 130 |
},
|
| 131 |
{
|
| 132 |
"id": "T084",
|
|
|
|
| 675 |
"owner": "reviewer",
|
| 676 |
"status": "todo",
|
| 677 |
"done_criteria": "Reviewer signs off on rules, secrets, claims, and public artifacts.",
|
| 678 |
+
"notes": "2026-07-01 submission audit report regenerated in pre_submit_audit_blocked mode with 17 findings; final audit cannot pass until B2/Genblaze live evidence, final video, final secret scan, and Devpost receipt exist."
|
| 679 |
},
|
| 680 |
{
|
| 681 |
"id": "T041A",
|
|
|
|
| 684 |
"owner": "reviewer",
|
| 685 |
"status": "todo",
|
| 686 |
"done_criteria": "Secret scan covers repo, docs, screenshots, exported manifests, logs, and demo evidence before submission.",
|
| 687 |
+
"notes": "2026-07-01 pre-final secret scan report is clear and committed; final secret scan remains todo after live proof, final public video, and Devpost submission artifacts are generated."
|
| 688 |
},
|
| 689 |
{
|
| 690 |
"id": "T041B",
|
|
|
|
| 711 |
"owner": "controller",
|
| 712 |
"status": "todo",
|
| 713 |
"done_criteria": "Devpost submission is accepted before 2026-08-04 05:00 Asia/Shanghai.",
|
| 714 |
+
"notes": "Devpost submission remains todo; official event snapshot refreshed 2026-07-01 with submission_open=true and observed participants=439, but final submission must wait for live proof, public video, strict audit, and receipt capture."
|
| 715 |
},
|
| 716 |
{
|
| 717 |
"id": "T042A",
|
tests/test_integrations.py
CHANGED
|
@@ -162,3 +162,15 @@ def test_b2_backend_puts_media_and_manifest_with_fake_client():
|
|
| 162 |
assert len(fake.puts) == 2
|
| 163 |
assert fake.puts[0]["Bucket"] == "proof-bucket"
|
| 164 |
assert fake.puts[0]["Metadata"]["sha256"] == stored_media.sha256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
assert len(fake.puts) == 2
|
| 163 |
assert fake.puts[0]["Bucket"] == "proof-bucket"
|
| 164 |
assert fake.puts[0]["Metadata"]["sha256"] == stored_media.sha256
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
def test_b2_backend_normalizes_endpoint_without_scheme():
|
| 168 |
+
backend = B2StorageBackend(
|
| 169 |
+
endpoint_url="s3.us-west-004.backblazeb2.com",
|
| 170 |
+
bucket="proof-bucket",
|
| 171 |
+
key_id="key-id",
|
| 172 |
+
application_key="application-key",
|
| 173 |
+
client=FakeS3Client(),
|
| 174 |
+
)
|
| 175 |
+
|
| 176 |
+
assert backend.endpoint_url == "https://s3.us-west-004.backblazeb2.com"
|