Spaces:
Running
Running
Sync ProofFrame public Space after final handoff waits
Browse files- README.md +1 -1
- docs/assets/final-closeout-status.json +1 -1
- docs/assets/final-launch-plan.json +1 -1
- docs/assets/final-operator-brief.json +7 -1
- docs/assets/final-operator-brief.md +6 -0
- docs/assets/final-rehearsal-checklist.json +3 -3
- docs/assets/final-rehearsal-checklist.md +1 -1
- docs/assets/final-submission-control.json +1 -1
- docs/assets/final-submission-control.md +1 -1
- docs/assets/public-space-sync-report.json +10 -10
- docs/assets/public-space-sync-report.md +6 -6
- docs/assets/public-space-upload-report.json +6 -6
- docs/assets/public-space-upload-report.md +4 -4
- docs/assets/secret-scan-report.json +2 -2
- docs/assets/secret-scan-report.md +1 -1
- docs/assets/submission-audit-report.json +1 -1
- docs/assets/submission-audit-report.md +1 -1
- docs/assets/submission-bundle-manifest.json +33 -33
- docs/assets/submission-bundle-manifest.md +22 -22
- docs/todo.md +1 -0
- docs/verification.md +9 -1
- scripts/final_operator_brief.py +6 -0
- scripts/public_space_sync.py +15 -5
- tasks.json +10 -1
- tests/test_final_operator_brief.py +8 -0
- tests/test_public_space_sync.py +10 -0
README.md
CHANGED
|
@@ -119,7 +119,7 @@ python scripts/judge_decision_brief.py
|
|
| 119 |
python scripts/devpost_event_snapshot.py --validate-committed
|
| 120 |
python scripts/agent_handoff_check.py
|
| 121 |
python scripts/public_space_upload.py
|
| 122 |
-
python scripts/public_space_sync.py
|
| 123 |
python scripts/claim_lint.py
|
| 124 |
python scripts/demo_storyboard.py
|
| 125 |
python scripts/demo_video_draft.py --build-video
|
|
|
|
| 119 |
python scripts/devpost_event_snapshot.py --validate-committed
|
| 120 |
python scripts/agent_handoff_check.py
|
| 121 |
python scripts/public_space_upload.py
|
| 122 |
+
python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30
|
| 123 |
python scripts/claim_lint.py
|
| 124 |
python scripts/demo_storyboard.py
|
| 125 |
python scripts/demo_video_draft.py --build-video
|
docs/assets/final-closeout-status.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_closeout_status.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 4 |
"ok": true,
|
| 5 |
"mode": "waiting_for_credentials",
|
| 6 |
"phase": "credential_entry",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_closeout_status.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:34:39Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "waiting_for_credentials",
|
| 6 |
"phase": "credential_entry",
|
docs/assets/final-launch-plan.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_launch_plan.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"ok": false,
|
| 5 |
"mode": "ready_for_credential_entry",
|
| 6 |
"repo_root": "/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_launch_plan.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:34:39Z",
|
| 4 |
"ok": false,
|
| 5 |
"mode": "ready_for_credential_entry",
|
| 6 |
"repo_root": "/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe",
|
docs/assets/final-operator-brief.json
CHANGED
|
@@ -217,6 +217,9 @@
|
|
| 217 |
],
|
| 218 |
"codex_actions_after_credentials": [
|
| 219 |
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks",
|
|
|
|
|
|
|
|
|
|
| 220 |
"python scripts/demo_storyboard.py --strict-final",
|
| 221 |
"python scripts/public_video_check.py --video-url \"$PROOFFRAME_PUBLIC_VIDEO_URL\" --verify-url --strict-final",
|
| 222 |
"python scripts/demo_readiness.py --strict-final",
|
|
@@ -233,7 +236,10 @@
|
|
| 233 |
"python scripts/final_submission_control.py --strict-final",
|
| 234 |
"python scripts/final_launch_plan.py --strict-final",
|
| 235 |
"python scripts/devpost_submission_preview.py --strict-final",
|
| 236 |
-
"python scripts/submission_bundle.py --strict-final"
|
|
|
|
|
|
|
|
|
|
| 237 |
],
|
| 238 |
"safety_policy": {
|
| 239 |
"env_final_local_ignored": true,
|
|
|
|
| 217 |
],
|
| 218 |
"codex_actions_after_credentials": [
|
| 219 |
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks",
|
| 220 |
+
"python scripts/public_space_upload.py --execute --commit-message \"Sync ProofFrame public Space after live proof\"",
|
| 221 |
+
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
|
| 222 |
+
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
|
| 223 |
"python scripts/demo_storyboard.py --strict-final",
|
| 224 |
"python scripts/public_video_check.py --video-url \"$PROOFFRAME_PUBLIC_VIDEO_URL\" --verify-url --strict-final",
|
| 225 |
"python scripts/demo_readiness.py --strict-final",
|
|
|
|
| 236 |
"python scripts/final_submission_control.py --strict-final",
|
| 237 |
"python scripts/final_launch_plan.py --strict-final",
|
| 238 |
"python scripts/devpost_submission_preview.py --strict-final",
|
| 239 |
+
"python scripts/submission_bundle.py --strict-final",
|
| 240 |
+
"python scripts/public_space_upload.py --execute --commit-message \"Sync ProofFrame public Space after final receipt\"",
|
| 241 |
+
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
|
| 242 |
+
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space"
|
| 243 |
],
|
| 244 |
"safety_policy": {
|
| 245 |
"env_final_local_ignored": true,
|
docs/assets/final-operator-brief.md
CHANGED
|
@@ -43,6 +43,9 @@ Safe to submit: `false`
|
|
| 43 |
|
| 44 |
```bash
|
| 45 |
python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks
|
|
|
|
|
|
|
|
|
|
| 46 |
python scripts/demo_storyboard.py --strict-final
|
| 47 |
python scripts/public_video_check.py --video-url "$PROOFFRAME_PUBLIC_VIDEO_URL" --verify-url --strict-final
|
| 48 |
python scripts/demo_readiness.py --strict-final
|
|
@@ -60,6 +63,9 @@ python scripts/final_submission_control.py --strict-final
|
|
| 60 |
python scripts/final_launch_plan.py --strict-final
|
| 61 |
python scripts/devpost_submission_preview.py --strict-final
|
| 62 |
python scripts/submission_bundle.py --strict-final
|
|
|
|
|
|
|
|
|
|
| 63 |
```
|
| 64 |
|
| 65 |
## Safety Policy
|
|
|
|
| 43 |
|
| 44 |
```bash
|
| 45 |
python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks
|
| 46 |
+
python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after live proof"
|
| 47 |
+
python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30
|
| 48 |
+
python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space
|
| 49 |
python scripts/demo_storyboard.py --strict-final
|
| 50 |
python scripts/public_video_check.py --video-url "$PROOFFRAME_PUBLIC_VIDEO_URL" --verify-url --strict-final
|
| 51 |
python scripts/demo_readiness.py --strict-final
|
|
|
|
| 63 |
python scripts/final_launch_plan.py --strict-final
|
| 64 |
python scripts/devpost_submission_preview.py --strict-final
|
| 65 |
python scripts/submission_bundle.py --strict-final
|
| 66 |
+
python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after final receipt"
|
| 67 |
+
python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30
|
| 68 |
+
python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space
|
| 69 |
```
|
| 70 |
|
| 71 |
## Safety Policy
|
docs/assets/final-rehearsal-checklist.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_rehearsal.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"mode": "ready_for_credential_rehearsal",
|
| 5 |
"ok": true,
|
| 6 |
"safe_to_submit": false,
|
|
@@ -36,7 +36,7 @@
|
|
| 36 |
{
|
| 37 |
"id": "public_space_synced",
|
| 38 |
"ok": true,
|
| 39 |
-
"detail": "Runtime sha:
|
| 40 |
"evidence": "docs/assets/public-space-sync-report.json"
|
| 41 |
},
|
| 42 |
{
|
|
@@ -359,7 +359,7 @@
|
|
| 359 |
"final_form_ready": null,
|
| 360 |
"mock_recording_ready": null,
|
| 361 |
"final_video_ready": null,
|
| 362 |
-
"runtime_sha": "
|
| 363 |
"failed_checks": [],
|
| 364 |
"missing_ids": [],
|
| 365 |
"blocking_items": []
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_rehearsal.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:34:39Z",
|
| 4 |
"mode": "ready_for_credential_rehearsal",
|
| 5 |
"ok": true,
|
| 6 |
"safe_to_submit": false,
|
|
|
|
| 36 |
{
|
| 37 |
"id": "public_space_synced",
|
| 38 |
"ok": true,
|
| 39 |
+
"detail": "Runtime sha: 144b65ce7b82065789abd97c39ff4dc9021afc6a.",
|
| 40 |
"evidence": "docs/assets/public-space-sync-report.json"
|
| 41 |
},
|
| 42 |
{
|
|
|
|
| 359 |
"final_form_ready": null,
|
| 360 |
"mock_recording_ready": null,
|
| 361 |
"final_video_ready": null,
|
| 362 |
+
"runtime_sha": "144b65ce7b82065789abd97c39ff4dc9021afc6a",
|
| 363 |
"failed_checks": [],
|
| 364 |
"missing_ids": [],
|
| 365 |
"blocking_items": []
|
docs/assets/final-rehearsal-checklist.md
CHANGED
|
@@ -11,7 +11,7 @@ Next command: `python scripts/final_env_wizard.py --output .env.final.local --mi
|
|
| 11 |
- OK `operator_ready`: Operator brief mode is credential_entry_ready. Evidence: `docs/assets/final-operator-brief.json`
|
| 12 |
- OK `only_expected_secrets_missing`: Missing ids: b2_application_key, b2_key_id, genblaze_api_key. Evidence: `docs/assets/final-operator-brief.json`
|
| 13 |
- OK `launch_plan_at_credential_entry`: Current phase is credential_entry. Evidence: `docs/assets/final-launch-plan.json`
|
| 14 |
-
- OK `public_space_synced`: Runtime sha:
|
| 15 |
- OK `mock_form_ready`: Devpost form mode is pre_live_form_ready. Evidence: `docs/assets/devpost-form-kit.json`
|
| 16 |
- OK `mock_recording_ready`: Recording assets mode is mock_recording_ready. Evidence: `docs/assets/recording-assets.json`
|
| 17 |
- OK `secret_scan_currently_clear`: Secret scan mode is clear. Evidence: `docs/assets/secret-scan-report.json`
|
|
|
|
| 11 |
- OK `operator_ready`: Operator brief mode is credential_entry_ready. Evidence: `docs/assets/final-operator-brief.json`
|
| 12 |
- OK `only_expected_secrets_missing`: Missing ids: b2_application_key, b2_key_id, genblaze_api_key. Evidence: `docs/assets/final-operator-brief.json`
|
| 13 |
- OK `launch_plan_at_credential_entry`: Current phase is credential_entry. Evidence: `docs/assets/final-launch-plan.json`
|
| 14 |
+
- OK `public_space_synced`: Runtime sha: 144b65ce7b82065789abd97c39ff4dc9021afc6a. Evidence: `docs/assets/public-space-sync-report.json`
|
| 15 |
- OK `mock_form_ready`: Devpost form mode is pre_live_form_ready. Evidence: `docs/assets/devpost-form-kit.json`
|
| 16 |
- OK `mock_recording_ready`: Recording assets mode is mock_recording_ready. Evidence: `docs/assets/recording-assets.json`
|
| 17 |
- OK `secret_scan_currently_clear`: Secret scan mode is clear. Evidence: `docs/assets/secret-scan-report.json`
|
docs/assets/final-submission-control.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_submission_control.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 4 |
"ok": true,
|
| 5 |
"control_health_ok": true,
|
| 6 |
"mode": "pre_live_control",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_submission_control.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:34:39Z",
|
| 4 |
"ok": true,
|
| 5 |
"control_health_ok": true,
|
| 6 |
"mode": "pre_live_control",
|
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-06-30T10:
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
|
|
|
| 3 |
Mode: `pre_live_control`
|
| 4 |
Control health OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
+
Created: `2026-06-30T10:34:39Z`
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
docs/assets/public-space-sync-report.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_sync.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 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-06-30T10:
|
| 15 |
"health": {
|
| 16 |
"ready": true,
|
| 17 |
"storage_backend": "local",
|
|
@@ -76,14 +76,14 @@
|
|
| 76 |
"judge_crosswalk_safe_to_submit": false,
|
| 77 |
"judge_decision_brief": {
|
| 78 |
"schema": "proofframe.judge_decision_brief.v1",
|
| 79 |
-
"created_at": "2026-06-
|
| 80 |
"age_days": 0,
|
| 81 |
"mode": "pre_live_decision_ready",
|
| 82 |
"safe_to_share": true,
|
| 83 |
"safe_to_submit": false,
|
| 84 |
"check_count": 6,
|
| 85 |
"space_mode": "public_space_synced",
|
| 86 |
-
"space_sync_checked_at": "2026-06-
|
| 87 |
"evidence_index_link": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-evidence-index.md",
|
| 88 |
"source_state_ok": true,
|
| 89 |
"fresh": 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 |
{
|
|
@@ -271,7 +271,7 @@
|
|
| 271 |
"id": "raw_judge_decision_brief",
|
| 272 |
"label": "Raw judge decision brief is public and claim-safe",
|
| 273 |
"ok": true,
|
| 274 |
-
"detail": "Decision brief schema is proofframe.judge_decision_brief.v1; mode is pre_live_decision_ready; safe_to_submit is False; checks=6; space_mode=public_space_synced; space_sync_checked_at=2026-06-
|
| 275 |
"evidence": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-decision-brief.json"
|
| 276 |
},
|
| 277 |
{
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_sync.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:24:10Z",
|
| 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": "144b65ce7b82065789abd97c39ff4dc9021afc6a",
|
| 9 |
"observed": {
|
| 10 |
+
"space_sha": "144b65ce7b82065789abd97c39ff4dc9021afc6a",
|
| 11 |
+
"runtime_sha": "144b65ce7b82065789abd97c39ff4dc9021afc6a",
|
| 12 |
"runtime_stage": "RUNNING",
|
| 13 |
"domain_ready": true,
|
| 14 |
+
"last_modified": "2026-06-30T10:22:46.000Z",
|
| 15 |
"health": {
|
| 16 |
"ready": true,
|
| 17 |
"storage_backend": "local",
|
|
|
|
| 76 |
"judge_crosswalk_safe_to_submit": false,
|
| 77 |
"judge_decision_brief": {
|
| 78 |
"schema": "proofframe.judge_decision_brief.v1",
|
| 79 |
+
"created_at": "2026-06-30T10:15:25Z",
|
| 80 |
"age_days": 0,
|
| 81 |
"mode": "pre_live_decision_ready",
|
| 82 |
"safe_to_share": true,
|
| 83 |
"safe_to_submit": false,
|
| 84 |
"check_count": 6,
|
| 85 |
"space_mode": "public_space_synced",
|
| 86 |
+
"space_sync_checked_at": "2026-06-30T10:13:57Z",
|
| 87 |
"evidence_index_link": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-evidence-index.md",
|
| 88 |
"source_state_ok": true,
|
| 89 |
"fresh": true
|
|
|
|
| 215 |
"id": "space_metadata",
|
| 216 |
"label": "Space metadata points at the expected commit",
|
| 217 |
"ok": true,
|
| 218 |
+
"detail": "Space sha is 144b65ce7b82065789abd97c39ff4dc9021afc6a; expected 144b65ce7b82065789abd97c39ff4dc9021afc6a.",
|
| 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 144b65ce7b82065789abd97c39ff4dc9021afc6a; domain ready is True.",
|
| 226 |
"evidence": "https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe/runtime"
|
| 227 |
},
|
| 228 |
{
|
|
|
|
| 271 |
"id": "raw_judge_decision_brief",
|
| 272 |
"label": "Raw judge decision brief is public and claim-safe",
|
| 273 |
"ok": true,
|
| 274 |
+
"detail": "Decision brief schema is proofframe.judge_decision_brief.v1; mode is pre_live_decision_ready; safe_to_submit is False; checks=6; space_mode=public_space_synced; space_sync_checked_at=2026-06-30T10:13:57Z; age_days=0; fresh=True.",
|
| 275 |
"evidence": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-decision-brief.json"
|
| 276 |
},
|
| 277 |
{
|
docs/assets/public-space-sync-report.md
CHANGED
|
@@ -2,26 +2,26 @@
|
|
| 2 |
|
| 3 |
Mode: `public_space_synced`
|
| 4 |
OK: `true`
|
| 5 |
-
Created: `2026-06-30T10:
|
| 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=0; participants=404. | 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 |
|
| 23 |
| OK | Raw judge crosswalk is public and claim-safe | Judge crosswalk schema is proofframe.judge_crosswalk.v1; mode is pre_live_crosswalk_ready; safe_to_submit is False. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-crosswalk.json |
|
| 24 |
-
| OK | Raw judge decision brief is public and claim-safe | Decision brief schema is proofframe.judge_decision_brief.v1; mode is pre_live_decision_ready; safe_to_submit is False; checks=6; space_mode=public_space_synced; space_sync_checked_at=2026-06-
|
| 25 |
| OK | Raw judge evidence index is public and claim-safe | Evidence index schema is proofframe.judge_evidence_index.v1; mode is pre_live_evidence_index_ready; safe_to_submit is False; links=18; blockers=10. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-evidence-index.json |
|
| 26 |
| OK | Raw final closeout status is public and closeout-safe | Closeout schema is proofframe.final_closeout_status.v1; mode is waiting_for_credentials; safe_to_submit is False; gates=12. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-closeout-status.json |
|
| 27 |
| OK | Final closeout API matches the raw public status | API closeout schema is proofframe.final_closeout_status.v1; mode is waiting_for_credentials; safe_to_submit is False; gates=12. | https://adjcjh-backblaze-proofframe.hf.space/api/judge/final-closeout |
|
|
|
|
| 2 |
|
| 3 |
Mode: `public_space_synced`
|
| 4 |
OK: `true`
|
| 5 |
+
Created: `2026-06-30T10:24:10Z`
|
| 6 |
Space: `ADJCJH/backblaze-proofframe`
|
| 7 |
Public host: https://adjcjh-backblaze-proofframe.hf.space
|
| 8 |
+
Expected sha: `144b65ce7b82065789abd97c39ff4dc9021afc6a`
|
| 9 |
+
Runtime sha: `144b65ce7b82065789abd97c39ff4dc9021afc6a`
|
| 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 144b65ce7b82065789abd97c39ff4dc9021afc6a; expected 144b65ce7b82065789abd97c39ff4dc9021afc6a. | https://huggingface.co/api/spaces/ADJCJH/backblaze-proofframe |
|
| 17 |
+
| OK | Space runtime is running the expected commit | Runtime stage is RUNNING; runtime sha is 144b65ce7b82065789abd97c39ff4dc9021afc6a; 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=404. | 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 |
|
| 23 |
| OK | Raw judge crosswalk is public and claim-safe | Judge crosswalk schema is proofframe.judge_crosswalk.v1; mode is pre_live_crosswalk_ready; safe_to_submit is False. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-crosswalk.json |
|
| 24 |
+
| OK | Raw judge decision brief is public and claim-safe | Decision brief schema is proofframe.judge_decision_brief.v1; mode is pre_live_decision_ready; safe_to_submit is False; checks=6; space_mode=public_space_synced; space_sync_checked_at=2026-06-30T10:13:57Z; age_days=0; fresh=True. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-decision-brief.json |
|
| 25 |
| OK | Raw judge evidence index is public and claim-safe | Evidence index schema is proofframe.judge_evidence_index.v1; mode is pre_live_evidence_index_ready; safe_to_submit is False; links=18; blockers=10. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/judge-evidence-index.json |
|
| 26 |
| OK | Raw final closeout status is public and closeout-safe | Closeout schema is proofframe.final_closeout_status.v1; mode is waiting_for_credentials; safe_to_submit is False; gates=12. | https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-closeout-status.json |
|
| 27 |
| OK | Final closeout API matches the raw public status | API closeout schema is proofframe.final_closeout_status.v1; mode is waiting_for_credentials; safe_to_submit is False; gates=12. | https://adjcjh-backblaze-proofframe.hf.space/api/judge/final-closeout |
|
docs/assets/public-space-upload-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.public_space_upload.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 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": 209,
|
| 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-06-30T10:22:48Z",
|
| 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 portable proof plan",
|
| 12 |
"ignore_patterns": [
|
| 13 |
".git/**",
|
| 14 |
".venv/**",
|
|
|
|
| 51 |
]
|
| 52 |
},
|
| 53 |
"file_plan": {
|
| 54 |
+
"total_files": 14935,
|
| 55 |
"included_count": 209,
|
| 56 |
+
"excluded_count": 14726,
|
| 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/144b65ce7b82065789abd97c39ff4dc9021afc6a",
|
| 129 |
+
"commit_oid": "144b65ce7b82065789abd97c39ff4dc9021afc6a"
|
| 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-06-30T10:
|
| 7 |
Repo: `ADJCJH/backblaze-proofframe`
|
| 8 |
Revision: `main`
|
| 9 |
Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
@@ -12,7 +12,7 @@ Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
| 12 |
|
| 13 |
- Required ignore patterns OK: `true`
|
| 14 |
- Included files: `209`
|
| 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-06-30T10:22:48Z`
|
| 7 |
Repo: `ADJCJH/backblaze-proofframe`
|
| 8 |
Revision: `main`
|
| 9 |
Raw base: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main
|
|
|
|
| 12 |
|
| 13 |
- Required ignore patterns OK: `true`
|
| 14 |
- Included files: `209`
|
| 15 |
+
- Excluded files: `14726`
|
| 16 |
- Included sensitive files: `none`
|
| 17 |
|
| 18 |
## Sensitive File Checks
|
|
|
|
| 25 |
## Upload
|
| 26 |
|
| 27 |
- Upload OK: `true`
|
| 28 |
+
- Commit: `144b65ce7b82065789abd97c39ff4dc9021afc6a`
|
| 29 |
+
- Commit URL: https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/commit/144b65ce7b82065789abd97c39ff4dc9021afc6a
|
| 30 |
|
| 31 |
## Secret Probe
|
| 32 |
|
docs/assets/secret-scan-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.secret_scan.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 4 |
"mode": "clear",
|
| 5 |
"ok": true,
|
| 6 |
"root": ".",
|
|
@@ -9,7 +9,7 @@
|
|
| 9 |
"scanned_text_files": 233,
|
| 10 |
"inventoried_binary_files": 6,
|
| 11 |
"skipped_local_secret_files": 1,
|
| 12 |
-
"skipped_hard_files":
|
| 13 |
"findings": 0
|
| 14 |
},
|
| 15 |
"coverage": {
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.secret_scan.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:34:40Z",
|
| 4 |
"mode": "clear",
|
| 5 |
"ok": true,
|
| 6 |
"root": ".",
|
|
|
|
| 9 |
"scanned_text_files": 233,
|
| 10 |
"inventoried_binary_files": 6,
|
| 11 |
"skipped_local_secret_files": 1,
|
| 12 |
+
"skipped_hard_files": 14488,
|
| 13 |
"findings": 0
|
| 14 |
},
|
| 15 |
"coverage": {
|
docs/assets/secret-scan-report.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
Mode: `clear`
|
| 4 |
OK: `true`
|
| 5 |
-
Created: `2026-06-30T10:
|
| 6 |
|
| 7 |
## Counts
|
| 8 |
|
|
|
|
| 2 |
|
| 3 |
Mode: `clear`
|
| 4 |
OK: `true`
|
| 5 |
+
Created: `2026-06-30T10:34:40Z`
|
| 6 |
|
| 7 |
## Counts
|
| 8 |
|
docs/assets/submission-audit-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_audit.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 4 |
"mode": "pre_submit_audit_blocked",
|
| 5 |
"ok": false,
|
| 6 |
"root": ".",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_audit.v1",
|
| 3 |
+
"created_at": "2026-06-30T10:34:40Z",
|
| 4 |
"mode": "pre_submit_audit_blocked",
|
| 5 |
"ok": false,
|
| 6 |
"root": ".",
|
docs/assets/submission-audit-report.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
Mode: `pre_submit_audit_blocked`
|
| 4 |
OK: `false`
|
| 5 |
-
Created: `2026-06-30T10:
|
| 6 |
Final evidence: `docs/assets/final-live-proof-evidence.json`
|
| 7 |
|
| 8 |
## Task Statuses
|
|
|
|
| 2 |
|
| 3 |
Mode: `pre_submit_audit_blocked`
|
| 4 |
OK: `false`
|
| 5 |
+
Created: `2026-06-30T10:34:40Z`
|
| 6 |
Final evidence: `docs/assets/final-live-proof-evidence.json`
|
| 7 |
|
| 8 |
## Task Statuses
|
docs/assets/submission-bundle-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_bundle.v1",
|
| 3 |
-
"created_at": "2026-06-30T10:
|
| 4 |
"project": "ProofFrame",
|
| 5 |
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
|
| 6 |
"public_demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
|
|
@@ -137,7 +137,7 @@
|
|
| 137 |
"present": true,
|
| 138 |
"schema": "proofframe.secret_scan.v1",
|
| 139 |
"schema_ok": true,
|
| 140 |
-
"created_at": "2026-06-30T10:
|
| 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-06-30T10:
|
| 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-06-30T10:
|
| 166 |
"ready": false,
|
| 167 |
"fresh_after_receipt": true,
|
| 168 |
"findings": [
|
|
@@ -190,7 +190,7 @@
|
|
| 190 |
"present": true,
|
| 191 |
"schema": "proofframe.final_launch_plan.v1",
|
| 192 |
"schema_ok": true,
|
| 193 |
-
"created_at": "2026-06-
|
| 194 |
"ready": false,
|
| 195 |
"fresh_after_receipt": true,
|
| 196 |
"findings": [
|
|
@@ -234,8 +234,8 @@
|
|
| 234 |
"path": "README.md",
|
| 235 |
"label": "Core public project overview",
|
| 236 |
"present": true,
|
| 237 |
-
"bytes":
|
| 238 |
-
"sha256": "
|
| 239 |
},
|
| 240 |
{
|
| 241 |
"id": "dockerfile",
|
|
@@ -378,8 +378,8 @@
|
|
| 378 |
"path": "scripts/public_space_sync.py",
|
| 379 |
"label": "Public Hugging Face Space sync verifier",
|
| 380 |
"present": true,
|
| 381 |
-
"bytes":
|
| 382 |
-
"sha256": "
|
| 383 |
},
|
| 384 |
{
|
| 385 |
"id": "public_space_sync_json",
|
|
@@ -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",
|
|
@@ -411,7 +411,7 @@
|
|
| 411 |
"label": "Machine-readable public Space upload report",
|
| 412 |
"present": true,
|
| 413 |
"bytes": 4150,
|
| 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",
|
|
@@ -803,7 +803,7 @@
|
|
| 803 |
"label": "Machine-readable final control report",
|
| 804 |
"present": true,
|
| 805 |
"bytes": 24359,
|
| 806 |
-
"sha256": "
|
| 807 |
},
|
| 808 |
{
|
| 809 |
"id": "final_submission_control_md",
|
|
@@ -811,7 +811,7 @@
|
|
| 811 |
"label": "Human-readable final control report",
|
| 812 |
"present": true,
|
| 813 |
"bytes": 7087,
|
| 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",
|
|
@@ -842,24 +842,24 @@
|
|
| 842 |
"path": "scripts/final_operator_brief.py",
|
| 843 |
"label": "No-secret final operator brief",
|
| 844 |
"present": true,
|
| 845 |
-
"bytes":
|
| 846 |
-
"sha256": "
|
| 847 |
},
|
| 848 |
{
|
| 849 |
"id": "final_operator_brief_json",
|
| 850 |
"path": "docs/assets/final-operator-brief.json",
|
| 851 |
"label": "Machine-readable final operator brief",
|
| 852 |
"present": true,
|
| 853 |
-
"bytes":
|
| 854 |
-
"sha256": "
|
| 855 |
},
|
| 856 |
{
|
| 857 |
"id": "final_operator_brief_md",
|
| 858 |
"path": "docs/assets/final-operator-brief.md",
|
| 859 |
"label": "Human-readable final operator brief",
|
| 860 |
"present": true,
|
| 861 |
-
"bytes":
|
| 862 |
-
"sha256": "
|
| 863 |
},
|
| 864 |
{
|
| 865 |
"id": "final_launch_plan_script",
|
|
@@ -875,7 +875,7 @@
|
|
| 875 |
"label": "Machine-readable final launch plan",
|
| 876 |
"present": true,
|
| 877 |
"bytes": 5690,
|
| 878 |
-
"sha256": "
|
| 879 |
},
|
| 880 |
{
|
| 881 |
"id": "final_launch_plan_md",
|
|
@@ -899,7 +899,7 @@
|
|
| 899 |
"label": "Machine-readable final rehearsal checklist",
|
| 900 |
"present": true,
|
| 901 |
"bytes": 17103,
|
| 902 |
-
"sha256": "
|
| 903 |
},
|
| 904 |
{
|
| 905 |
"id": "final_rehearsal_md",
|
|
@@ -907,7 +907,7 @@
|
|
| 907 |
"label": "Human-readable final rehearsal checklist",
|
| 908 |
"present": true,
|
| 909 |
"bytes": 7404,
|
| 910 |
-
"sha256": "
|
| 911 |
},
|
| 912 |
{
|
| 913 |
"id": "submission_audit_script",
|
|
@@ -923,7 +923,7 @@
|
|
| 923 |
"label": "Machine-readable submission audit report",
|
| 924 |
"present": true,
|
| 925 |
"bytes": 5925,
|
| 926 |
-
"sha256": "
|
| 927 |
},
|
| 928 |
{
|
| 929 |
"id": "submission_audit_md",
|
|
@@ -931,7 +931,7 @@
|
|
| 931 |
"label": "Human-readable submission audit report",
|
| 932 |
"present": true,
|
| 933 |
"bytes": 4459,
|
| 934 |
-
"sha256": "
|
| 935 |
},
|
| 936 |
{
|
| 937 |
"id": "devpost_receipt_script",
|
|
@@ -978,8 +978,8 @@
|
|
| 978 |
"path": "docs/verification.md",
|
| 979 |
"label": "Local, CI, Docker, and live proof runbook",
|
| 980 |
"present": true,
|
| 981 |
-
"bytes":
|
| 982 |
-
"sha256": "
|
| 983 |
},
|
| 984 |
{
|
| 985 |
"id": "final_env_template",
|
|
@@ -1003,7 +1003,7 @@
|
|
| 1003 |
"label": "Machine-readable secret scan report",
|
| 1004 |
"present": true,
|
| 1005 |
"bytes": 11871,
|
| 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",
|
|
@@ -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-06-30T10:34:40Z",
|
| 4 |
"project": "ProofFrame",
|
| 5 |
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
|
| 6 |
"public_demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
|
|
|
|
| 137 |
"present": true,
|
| 138 |
"schema": "proofframe.secret_scan.v1",
|
| 139 |
"schema_ok": true,
|
| 140 |
+
"created_at": "2026-06-30T10:34:40Z",
|
| 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-06-30T10:34:39Z",
|
| 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-06-30T10:34:39Z",
|
| 166 |
"ready": false,
|
| 167 |
"fresh_after_receipt": true,
|
| 168 |
"findings": [
|
|
|
|
| 190 |
"present": true,
|
| 191 |
"schema": "proofframe.final_launch_plan.v1",
|
| 192 |
"schema_ok": true,
|
| 193 |
+
"created_at": "2026-06-30T10:34:39Z",
|
| 194 |
"ready": false,
|
| 195 |
"fresh_after_receipt": true,
|
| 196 |
"findings": [
|
|
|
|
| 234 |
"path": "README.md",
|
| 235 |
"label": "Core public project overview",
|
| 236 |
"present": true,
|
| 237 |
+
"bytes": 15754,
|
| 238 |
+
"sha256": "363988b5191f54bfdaffffc045485215ec612b19f7f215773956a2397f5a489c"
|
| 239 |
},
|
| 240 |
{
|
| 241 |
"id": "dockerfile",
|
|
|
|
| 378 |
"path": "scripts/public_space_sync.py",
|
| 379 |
"label": "Public Hugging Face Space sync verifier",
|
| 380 |
"present": true,
|
| 381 |
+
"bytes": 84964,
|
| 382 |
+
"sha256": "52280330d9e7605b093a6e3a6749b7ee5336621711c3a41692007b53fa42aaed"
|
| 383 |
},
|
| 384 |
{
|
| 385 |
"id": "public_space_sync_json",
|
|
|
|
| 387 |
"label": "Machine-readable public Space sync report",
|
| 388 |
"present": true,
|
| 389 |
"bytes": 20606,
|
| 390 |
+
"sha256": "79bb420f3af13169bacbca15c44765c59707d410644540771027893714f81b6e"
|
| 391 |
},
|
| 392 |
{
|
| 393 |
"id": "public_space_sync_md",
|
|
|
|
| 395 |
"label": "Human-readable public Space sync report",
|
| 396 |
"present": true,
|
| 397 |
"bytes": 8673,
|
| 398 |
+
"sha256": "f88d08314f5d10e9ae5a4b90639e04317bbdd30d0e863bf9d48bcc5e38603036"
|
| 399 |
},
|
| 400 |
{
|
| 401 |
"id": "public_space_upload_script",
|
|
|
|
| 411 |
"label": "Machine-readable public Space upload report",
|
| 412 |
"present": true,
|
| 413 |
"bytes": 4150,
|
| 414 |
+
"sha256": "ba7d18ffa6c81e74bf0695bb88e8b4a450e00ac4a69e603e987d6c7815a7e90d"
|
| 415 |
},
|
| 416 |
{
|
| 417 |
"id": "public_space_upload_md",
|
|
|
|
| 419 |
"label": "Human-readable public Space upload report",
|
| 420 |
"present": true,
|
| 421 |
"bytes": 1372,
|
| 422 |
+
"sha256": "54004f7b2da7855d97a41398664d97449684bf2c75243e0682df9695edb1fb03"
|
| 423 |
},
|
| 424 |
{
|
| 425 |
"id": "public_demo_screenshot_script",
|
|
|
|
| 803 |
"label": "Machine-readable final control report",
|
| 804 |
"present": true,
|
| 805 |
"bytes": 24359,
|
| 806 |
+
"sha256": "9296e8833cc97cebc405d532d46dd2809d828611fead5fc55039217dcde6b96c"
|
| 807 |
},
|
| 808 |
{
|
| 809 |
"id": "final_submission_control_md",
|
|
|
|
| 811 |
"label": "Human-readable final control report",
|
| 812 |
"present": true,
|
| 813 |
"bytes": 7087,
|
| 814 |
+
"sha256": "25a37efea59f5a07ec9313e4deddadcef6846f7f1f1236111e9d862be27971ac"
|
| 815 |
},
|
| 816 |
{
|
| 817 |
"id": "final_closeout_status_script",
|
|
|
|
| 827 |
"label": "Machine-readable final closeout status",
|
| 828 |
"present": true,
|
| 829 |
"bytes": 12592,
|
| 830 |
+
"sha256": "97c97abad3ba39e273d37afd89d91364dc92879d86a623be2dbd99690de3d15d"
|
| 831 |
},
|
| 832 |
{
|
| 833 |
"id": "final_closeout_status_md",
|
|
|
|
| 842 |
"path": "scripts/final_operator_brief.py",
|
| 843 |
"label": "No-secret final operator brief",
|
| 844 |
"present": true,
|
| 845 |
+
"bytes": 15912,
|
| 846 |
+
"sha256": "1e01afa36b48d9b801bd36ee1c92b91be1d3586121562efd823f8007ed4ba76a"
|
| 847 |
},
|
| 848 |
{
|
| 849 |
"id": "final_operator_brief_json",
|
| 850 |
"path": "docs/assets/final-operator-brief.json",
|
| 851 |
"label": "Machine-readable final operator brief",
|
| 852 |
"present": true,
|
| 853 |
+
"bytes": 10142,
|
| 854 |
+
"sha256": "4fb10abaa1f654cfc874bd96c03f31c663533ca60943e38c67ae603e34dc51f0"
|
| 855 |
},
|
| 856 |
{
|
| 857 |
"id": "final_operator_brief_md",
|
| 858 |
"path": "docs/assets/final-operator-brief.md",
|
| 859 |
"label": "Human-readable final operator brief",
|
| 860 |
"present": true,
|
| 861 |
+
"bytes": 4526,
|
| 862 |
+
"sha256": "42f6a85163235033082406d68039c45789700542afd1913a608508fcef6e47fe"
|
| 863 |
},
|
| 864 |
{
|
| 865 |
"id": "final_launch_plan_script",
|
|
|
|
| 875 |
"label": "Machine-readable final launch plan",
|
| 876 |
"present": true,
|
| 877 |
"bytes": 5690,
|
| 878 |
+
"sha256": "2f74c7c3b603e5125baccd05d750bf2a8ffbd3f06c1e4cfcb4017f48d408b041"
|
| 879 |
},
|
| 880 |
{
|
| 881 |
"id": "final_launch_plan_md",
|
|
|
|
| 899 |
"label": "Machine-readable final rehearsal checklist",
|
| 900 |
"present": true,
|
| 901 |
"bytes": 17103,
|
| 902 |
+
"sha256": "ae398d43c900e40fca63a368e0277448cf042f93d8c11f27831d3999414b54a1"
|
| 903 |
},
|
| 904 |
{
|
| 905 |
"id": "final_rehearsal_md",
|
|
|
|
| 907 |
"label": "Human-readable final rehearsal checklist",
|
| 908 |
"present": true,
|
| 909 |
"bytes": 7404,
|
| 910 |
+
"sha256": "026e07a2a99bf6166f016e8edd6b37899fd91b9ed2e108b30a342b20643b03f0"
|
| 911 |
},
|
| 912 |
{
|
| 913 |
"id": "submission_audit_script",
|
|
|
|
| 923 |
"label": "Machine-readable submission audit report",
|
| 924 |
"present": true,
|
| 925 |
"bytes": 5925,
|
| 926 |
+
"sha256": "da4f79c9f66a7e6e226b01f0a9fdfc23b91b6ff06eefbaf70d1a0ae269ad8897"
|
| 927 |
},
|
| 928 |
{
|
| 929 |
"id": "submission_audit_md",
|
|
|
|
| 931 |
"label": "Human-readable submission audit report",
|
| 932 |
"present": true,
|
| 933 |
"bytes": 4459,
|
| 934 |
+
"sha256": "76f29f258d5b4cef623a85d357df9a3b404afecfdda76c817b4e543bde1f64a5"
|
| 935 |
},
|
| 936 |
{
|
| 937 |
"id": "devpost_receipt_script",
|
|
|
|
| 978 |
"path": "docs/verification.md",
|
| 979 |
"label": "Local, CI, Docker, and live proof runbook",
|
| 980 |
"present": true,
|
| 981 |
+
"bytes": 12499,
|
| 982 |
+
"sha256": "c92fd26c877d5c5fbef51af2cb37bcb3f9be37bed4cc2027d5640717c8636a27"
|
| 983 |
},
|
| 984 |
{
|
| 985 |
"id": "final_env_template",
|
|
|
|
| 1003 |
"label": "Machine-readable secret scan report",
|
| 1004 |
"present": true,
|
| 1005 |
"bytes": 11871,
|
| 1006 |
+
"sha256": "f228cd4b487d25b998eda59eb0db975aad6441865bd4a27f402e96193ea3b666"
|
| 1007 |
},
|
| 1008 |
{
|
| 1009 |
"id": "secret_scan_md",
|
|
|
|
| 1011 |
"label": "Human-readable secret scan report",
|
| 1012 |
"present": true,
|
| 1013 |
"bytes": 846,
|
| 1014 |
+
"sha256": "044ccc76b693ebdef875f791f1c09ebe54abcb3c2ef2aab1b3557ef47c5bbe9e"
|
| 1015 |
},
|
| 1016 |
{
|
| 1017 |
"id": "b2_live_setup_json",
|
|
|
|
| 1218 |
"path": "tasks.json",
|
| 1219 |
"label": "Machine-readable task board",
|
| 1220 |
"present": true,
|
| 1221 |
+
"bytes": 72478,
|
| 1222 |
+
"sha256": "76c2bf237562c2ec633d5c305c2140a408e22c789914981620a6231ddb9630bc"
|
| 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-06-30T10:
|
| 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`
|
|
@@ -25,7 +25,7 @@ Final gate ready: `false`
|
|
| 25 |
|
| 26 |
## Artifacts
|
| 27 |
|
| 28 |
-
- `README.md` (
|
| 29 |
- `Dockerfile` (522 bytes, sha256 `6764f101746a802d...`) - Docker deployment image contract
|
| 30 |
- `.dockerignore` (214 bytes, sha256 `29e12906fc6e9af3...`) - Docker build context secret exclusion policy
|
| 31 |
- `scripts/docker_smoke.py` (13273 bytes, sha256 `4e900d7da53d329c...`) - Docker build and API smoke verifier
|
|
@@ -43,12 +43,12 @@ Final gate ready: `false`
|
|
| 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 `87711b3b8a5b1515...`) - Machine-readable Agent handoff report
|
| 45 |
- `docs/assets/agent-handoff-report.md` (1571 bytes, sha256 `b64f0c7769d5867c...`) - Human-readable Agent handoff report
|
| 46 |
-
- `scripts/public_space_sync.py` (
|
| 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` (4150 bytes, sha256 `
|
| 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,33 +96,33 @@ 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` (24359 bytes, sha256 `
|
| 100 |
-
- `docs/assets/final-submission-control.md` (7087 bytes, sha256 `
|
| 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` (
|
| 105 |
-
- `docs/assets/final-operator-brief.json` (
|
| 106 |
-
- `docs/assets/final-operator-brief.md` (
|
| 107 |
- `scripts/final_launch_plan.py` (17492 bytes, sha256 `dc2766d5f424c1ac...`) - No-secret final launch phase plan
|
| 108 |
-
- `docs/assets/final-launch-plan.json` (5690 bytes, sha256 `
|
| 109 |
- `docs/assets/final-launch-plan.md` (4596 bytes, sha256 `7747b3177be9562a...`) - Human-readable final launch plan
|
| 110 |
- `scripts/final_rehearsal.py` (18265 bytes, sha256 `7b0b844fcce35158...`) - No-secret final submission rehearsal checklist
|
| 111 |
-
- `docs/assets/final-rehearsal-checklist.json` (17103 bytes, sha256 `
|
| 112 |
-
- `docs/assets/final-rehearsal-checklist.md` (7404 bytes, sha256 `
|
| 113 |
- `scripts/submission_audit.py` (20684 bytes, sha256 `0f9a378c203bf7b6...`) - Pre-submit audit gate
|
| 114 |
-
- `docs/assets/submission-audit-report.json` (5925 bytes, sha256 `
|
| 115 |
-
- `docs/assets/submission-audit-report.md` (4459 bytes, sha256 `
|
| 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
|
| 119 |
- `docs/evidence_package.md` (21706 bytes, sha256 `82c45621486c175e...`) - Evidence package plan
|
| 120 |
- `docs/public_claim_freeze.md` (4089 bytes, sha256 `735b9188feae74ea...`) - Verified-claim boundary
|
| 121 |
-
- `docs/verification.md` (
|
| 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` (11871 bytes, sha256 `
|
| 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
|
|
@@ -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-06-30T10:34:40Z`
|
| 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`
|
|
|
|
| 25 |
|
| 26 |
## Artifacts
|
| 27 |
|
| 28 |
+
- `README.md` (15754 bytes, sha256 `363988b5191f54bf...`) - Core public project overview
|
| 29 |
- `Dockerfile` (522 bytes, sha256 `6764f101746a802d...`) - Docker deployment image contract
|
| 30 |
- `.dockerignore` (214 bytes, sha256 `29e12906fc6e9af3...`) - Docker build context secret exclusion policy
|
| 31 |
- `scripts/docker_smoke.py` (13273 bytes, sha256 `4e900d7da53d329c...`) - Docker build and API smoke verifier
|
|
|
|
| 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 `87711b3b8a5b1515...`) - Machine-readable Agent handoff report
|
| 45 |
- `docs/assets/agent-handoff-report.md` (1571 bytes, sha256 `b64f0c7769d5867c...`) - 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 `79bb420f3af13169...`) - Machine-readable public Space sync report
|
| 48 |
+
- `docs/assets/public-space-sync-report.md` (8673 bytes, sha256 `f88d08314f5d10e9...`) - 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` (4150 bytes, sha256 `ba7d18ffa6c81e74...`) - Machine-readable public Space upload report
|
| 51 |
+
- `docs/assets/public-space-upload-report.md` (1372 bytes, sha256 `54004f7b2da7855d...`) - 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` (24359 bytes, sha256 `9296e8833cc97ceb...`) - Machine-readable final control report
|
| 100 |
+
- `docs/assets/final-submission-control.md` (7087 bytes, sha256 `25a37efea59f5a07...`) - 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 `97c97abad3ba39e2...`) - 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
|
| 106 |
+
- `docs/assets/final-operator-brief.md` (4526 bytes, sha256 `42f6a85163235033...`) - Human-readable final operator brief
|
| 107 |
- `scripts/final_launch_plan.py` (17492 bytes, sha256 `dc2766d5f424c1ac...`) - No-secret final launch phase plan
|
| 108 |
+
- `docs/assets/final-launch-plan.json` (5690 bytes, sha256 `2f74c7c3b603e512...`) - Machine-readable final launch plan
|
| 109 |
- `docs/assets/final-launch-plan.md` (4596 bytes, sha256 `7747b3177be9562a...`) - Human-readable final launch plan
|
| 110 |
- `scripts/final_rehearsal.py` (18265 bytes, sha256 `7b0b844fcce35158...`) - No-secret final submission rehearsal checklist
|
| 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` (5925 bytes, sha256 `da4f79c9f66a7e6e...`) - Machine-readable submission audit report
|
| 115 |
+
- `docs/assets/submission-audit-report.md` (4459 bytes, sha256 `76f29f258d5b4cef...`) - 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
|
| 119 |
- `docs/evidence_package.md` (21706 bytes, sha256 `82c45621486c175e...`) - Evidence package plan
|
| 120 |
- `docs/public_claim_freeze.md` (4089 bytes, sha256 `735b9188feae74ea...`) - Verified-claim boundary
|
| 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` (11871 bytes, sha256 `f228cd4b487d25b9...`) - Machine-readable secret scan report
|
| 125 |
+
- `docs/assets/secret-scan-report.md` (846 bytes, sha256 `044ccc76b693ebde...`) - 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
|
|
|
|
| 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` (72478 bytes, sha256 `76c2bf237562c2ec...`) - 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
|
@@ -57,3 +57,4 @@ python3 scripts/task.py doing T020 --note "Live B2 proof in progress"
|
|
| 57 |
| T098 | No-secret public Space upload helper added with dry-run safety checks, explicit execute mode, raw `.env.final.local` public 404 probe, tests, docs, CI, and bundle coverage. |
|
| 58 |
| T099 | Public HF Space synced through the no-secret upload helper; raw `.env.final.local` public probe, public Space sync, and public API smoke all pass while final submission remains fail-closed. Current runtime sha is tracked in `docs/assets/public-space-sync-report.json`. |
|
| 59 |
| T100 | Post-credential live proof plan now renders portable `python scripts/...` commands without local absolute paths, while keeping execution argv semantics and public sync validation. |
|
|
|
|
|
|
| 57 |
| T098 | No-secret public Space upload helper added with dry-run safety checks, explicit execute mode, raw `.env.final.local` public 404 probe, tests, docs, CI, and bundle coverage. |
|
| 58 |
| T099 | Public HF Space synced through the no-secret upload helper; raw `.env.final.local` public probe, public Space sync, and public API smoke all pass while final submission remains fail-closed. Current runtime sha is tracked in `docs/assets/public-space-sync-report.json`. |
|
| 59 |
| T100 | Post-credential live proof plan now renders portable `python scripts/...` commands without local absolute paths, while keeping execution argv semantics and public sync validation. |
|
| 60 |
+
| T101 | Final operator actions now include public Space upload, waited public sync, and public API smoke after live proof and after final receipt; `public_space_sync.py` supports rollout wait attempts. |
|
docs/verification.md
CHANGED
|
@@ -113,6 +113,14 @@ python scripts/post_credential_live_proof.py --env-file .env.final.local --execu
|
|
| 113 |
|
| 114 |
The runner first runs the B2-only proof with mock generation, validates `docs/assets/b2-live-proof-evidence.json`, and only then marks T020 when `--update-tasks` is set. It then runs the final B2 plus Genblaze proof, validates `docs/assets/final-live-proof-evidence.json`, and only then marks T021. Both validators require the expected backend/provider fields, nonempty checksum/object-key fields, and no secret-like keys, bearer tokens, signed URL parameters, or GMI-style key values. Server logs stay under `var/live-proof/`, which is ignored by git.
|
| 115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
Before refreshing the public Hugging Face Space, run the upload helper in dry-run mode:
|
| 117 |
|
| 118 |
```bash
|
|
@@ -123,7 +131,7 @@ Only after the dry-run reports no included sensitive files, execute the upload a
|
|
| 123 |
|
| 124 |
```bash
|
| 125 |
python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space"
|
| 126 |
-
python scripts/public_space_sync.py
|
| 127 |
python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space
|
| 128 |
```
|
| 129 |
|
|
|
|
| 113 |
|
| 114 |
The runner first runs the B2-only proof with mock generation, validates `docs/assets/b2-live-proof-evidence.json`, and only then marks T020 when `--update-tasks` is set. It then runs the final B2 plus Genblaze proof, validates `docs/assets/final-live-proof-evidence.json`, and only then marks T021. Both validators require the expected backend/provider fields, nonempty checksum/object-key fields, and no secret-like keys, bearer tokens, signed URL parameters, or GMI-style key values. Server logs stay under `var/live-proof/`, which is ignored by git.
|
| 115 |
|
| 116 |
+
After the post-credential runner succeeds, sync the public Space before recording or sharing the final proof:
|
| 117 |
+
|
| 118 |
+
```bash
|
| 119 |
+
python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after live proof"
|
| 120 |
+
python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30
|
| 121 |
+
python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space
|
| 122 |
+
```
|
| 123 |
+
|
| 124 |
Before refreshing the public Hugging Face Space, run the upload helper in dry-run mode:
|
| 125 |
|
| 126 |
```bash
|
|
|
|
| 131 |
|
| 132 |
```bash
|
| 133 |
python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space"
|
| 134 |
+
python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30
|
| 135 |
python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space
|
| 136 |
```
|
| 137 |
|
scripts/final_operator_brief.py
CHANGED
|
@@ -146,6 +146,9 @@ def build_user_actions(
|
|
| 146 |
def build_codex_actions() -> list[str]:
|
| 147 |
return [
|
| 148 |
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks",
|
|
|
|
|
|
|
|
|
|
| 149 |
"python scripts/demo_storyboard.py --strict-final",
|
| 150 |
'python scripts/public_video_check.py --video-url "$PROOFFRAME_PUBLIC_VIDEO_URL" --verify-url --strict-final',
|
| 151 |
"python scripts/demo_readiness.py --strict-final",
|
|
@@ -163,6 +166,9 @@ def build_codex_actions() -> list[str]:
|
|
| 163 |
"python scripts/final_launch_plan.py --strict-final",
|
| 164 |
"python scripts/devpost_submission_preview.py --strict-final",
|
| 165 |
"python scripts/submission_bundle.py --strict-final",
|
|
|
|
|
|
|
|
|
|
| 166 |
]
|
| 167 |
|
| 168 |
|
|
|
|
| 146 |
def build_codex_actions() -> list[str]:
|
| 147 |
return [
|
| 148 |
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks",
|
| 149 |
+
'python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after live proof"',
|
| 150 |
+
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
|
| 151 |
+
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
|
| 152 |
"python scripts/demo_storyboard.py --strict-final",
|
| 153 |
'python scripts/public_video_check.py --video-url "$PROOFFRAME_PUBLIC_VIDEO_URL" --verify-url --strict-final',
|
| 154 |
"python scripts/demo_readiness.py --strict-final",
|
|
|
|
| 166 |
"python scripts/final_launch_plan.py --strict-final",
|
| 167 |
"python scripts/devpost_submission_preview.py --strict-final",
|
| 168 |
"python scripts/submission_bundle.py --strict-final",
|
| 169 |
+
'python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after final receipt"',
|
| 170 |
+
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
|
| 171 |
+
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
|
| 172 |
]
|
| 173 |
|
| 174 |
|
scripts/public_space_sync.py
CHANGED
|
@@ -6,6 +6,7 @@ from __future__ import annotations
|
|
| 6 |
import argparse
|
| 7 |
import json
|
| 8 |
from http.client import IncompleteRead
|
|
|
|
| 9 |
from datetime import datetime, timezone
|
| 10 |
from pathlib import Path
|
| 11 |
from typing import Any, Callable
|
|
@@ -1650,16 +1651,25 @@ def build_parser() -> argparse.ArgumentParser:
|
|
| 1650 |
parser.add_argument("--space-id", default=SPACE_ID)
|
| 1651 |
parser.add_argument("--public-host", default=SPACE_HOST)
|
| 1652 |
parser.add_argument("--expected-sha", default=EXPECTED_SPACE_SHA)
|
|
|
|
|
|
|
| 1653 |
return parser
|
| 1654 |
|
| 1655 |
|
| 1656 |
def main() -> None:
|
| 1657 |
args = build_parser().parse_args()
|
| 1658 |
-
|
| 1659 |
-
|
| 1660 |
-
|
| 1661 |
-
|
| 1662 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1663 |
write_outputs(report, args.json_out, args.markdown_out)
|
| 1664 |
print(
|
| 1665 |
json.dumps(
|
|
|
|
| 6 |
import argparse
|
| 7 |
import json
|
| 8 |
from http.client import IncompleteRead
|
| 9 |
+
import time
|
| 10 |
from datetime import datetime, timezone
|
| 11 |
from pathlib import Path
|
| 12 |
from typing import Any, Callable
|
|
|
|
| 1651 |
parser.add_argument("--space-id", default=SPACE_ID)
|
| 1652 |
parser.add_argument("--public-host", default=SPACE_HOST)
|
| 1653 |
parser.add_argument("--expected-sha", default=EXPECTED_SPACE_SHA)
|
| 1654 |
+
parser.add_argument("--wait-attempts", type=int, default=1)
|
| 1655 |
+
parser.add_argument("--wait-seconds", type=float, default=30.0)
|
| 1656 |
return parser
|
| 1657 |
|
| 1658 |
|
| 1659 |
def main() -> None:
|
| 1660 |
args = build_parser().parse_args()
|
| 1661 |
+
attempts = max(1, args.wait_attempts)
|
| 1662 |
+
report: dict[str, Any] | None = None
|
| 1663 |
+
for attempt in range(attempts):
|
| 1664 |
+
report = build_report(
|
| 1665 |
+
space_id=args.space_id,
|
| 1666 |
+
public_host=args.public_host,
|
| 1667 |
+
expected_sha=args.expected_sha,
|
| 1668 |
+
)
|
| 1669 |
+
if report["ok"] or attempt == attempts - 1:
|
| 1670 |
+
break
|
| 1671 |
+
time.sleep(max(0.0, args.wait_seconds))
|
| 1672 |
+
assert report is not None
|
| 1673 |
write_outputs(report, args.json_out, args.markdown_out)
|
| 1674 |
print(
|
| 1675 |
json.dumps(
|
tasks.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"project": "ProofFrame",
|
| 3 |
-
"updated_at": "2026-06-30T10:
|
| 4 |
"tasks": [
|
| 5 |
{
|
| 6 |
"id": "T001",
|
|
@@ -281,6 +281,15 @@
|
|
| 281 |
"done_criteria": "The post-credential live proof plan stores public-safe, repo-relative command strings while preserving executable argv semantics and public sync validation.",
|
| 282 |
"notes": "Post-credential plan now renders commands as python scripts/... without local absolute paths; tests cover command/argv output and no /Users path leakage."
|
| 283 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 284 |
{
|
| 285 |
"id": "T030",
|
| 286 |
"title": "Run browser smoke test",
|
|
|
|
| 1 |
{
|
| 2 |
"project": "ProofFrame",
|
| 3 |
+
"updated_at": "2026-06-30T10:34:17Z",
|
| 4 |
"tasks": [
|
| 5 |
{
|
| 6 |
"id": "T001",
|
|
|
|
| 281 |
"done_criteria": "The post-credential live proof plan stores public-safe, repo-relative command strings while preserving executable argv semantics and public sync validation.",
|
| 282 |
"notes": "Post-credential plan now renders commands as python scripts/... without local absolute paths; tests cover command/argv output and no /Users path leakage."
|
| 283 |
},
|
| 284 |
+
{
|
| 285 |
+
"id": "T101",
|
| 286 |
+
"title": "Add public sync waits to final handoff",
|
| 287 |
+
"phase": "P4 Submit",
|
| 288 |
+
"owner": "tester",
|
| 289 |
+
"status": "done",
|
| 290 |
+
"done_criteria": "Final operator actions include public Space upload, waited public sync, and public API smoke after live proof and after final receipt, and public_space_sync supports wait attempts for HF runtime rollout.",
|
| 291 |
+
"notes": "Added --wait-attempts/--wait-seconds to public_space_sync and wired public upload/sync/smoke into final operator actions."
|
| 292 |
+
},
|
| 293 |
{
|
| 294 |
"id": "T030",
|
| 295 |
"title": "Run browser smoke test",
|
tests/test_final_operator_brief.py
CHANGED
|
@@ -215,6 +215,11 @@ def test_final_operator_brief_is_ready_for_secret_entry(tmp_path):
|
|
| 215 |
assert report["codex_actions_after_credentials"][0] == (
|
| 216 |
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks"
|
| 217 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
assert not any(
|
| 219 |
action.startswith("python scripts/run_b2_live_proof.py")
|
| 220 |
or action.startswith("python scripts/run_final_live_proof.py")
|
|
@@ -238,6 +243,9 @@ def test_final_operator_brief_is_ready_for_secret_entry(tmp_path):
|
|
| 238 |
"python scripts/final_launch_plan.py --strict-final",
|
| 239 |
"python scripts/devpost_submission_preview.py --strict-final",
|
| 240 |
"python scripts/submission_bundle.py --strict-final",
|
|
|
|
|
|
|
|
|
|
| 241 |
]
|
| 242 |
assert report["reports"]["secret_scan"]["schema_ok"] is True
|
| 243 |
assert report["reports"]["public_video_check"]["schema_ok"] is True
|
|
|
|
| 215 |
assert report["codex_actions_after_credentials"][0] == (
|
| 216 |
"python scripts/post_credential_live_proof.py --env-file .env.final.local --execute --update-tasks"
|
| 217 |
)
|
| 218 |
+
assert report["codex_actions_after_credentials"][1:4] == [
|
| 219 |
+
'python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after live proof"',
|
| 220 |
+
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
|
| 221 |
+
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
|
| 222 |
+
]
|
| 223 |
assert not any(
|
| 224 |
action.startswith("python scripts/run_b2_live_proof.py")
|
| 225 |
or action.startswith("python scripts/run_final_live_proof.py")
|
|
|
|
| 243 |
"python scripts/final_launch_plan.py --strict-final",
|
| 244 |
"python scripts/devpost_submission_preview.py --strict-final",
|
| 245 |
"python scripts/submission_bundle.py --strict-final",
|
| 246 |
+
'python scripts/public_space_upload.py --execute --commit-message "Sync ProofFrame public Space after final receipt"',
|
| 247 |
+
"python scripts/public_space_sync.py --wait-attempts 5 --wait-seconds 30",
|
| 248 |
+
"python scripts/api_smoke.py --base-url https://adjcjh-backblaze-proofframe.hf.space",
|
| 249 |
]
|
| 250 |
assert report["reports"]["secret_scan"]["schema_ok"] is True
|
| 251 |
assert report["reports"]["public_video_check"]["schema_ok"] is True
|
tests/test_public_space_sync.py
CHANGED
|
@@ -938,6 +938,7 @@ def test_public_space_sync_report_passes_when_space_is_current():
|
|
| 938 |
"section_count": 5,
|
| 939 |
"blocker_count": 3,
|
| 940 |
}
|
|
|
|
| 941 |
assert report["observed"]["final_closeout_status"] == {
|
| 942 |
"schema": "proofframe.final_closeout_status.v1",
|
| 943 |
"mode": "waiting_for_credentials",
|
|
@@ -993,6 +994,15 @@ def test_public_space_sync_report_passes_when_space_is_current():
|
|
| 993 |
assert all(item["ok"] for item in report["checks"])
|
| 994 |
|
| 995 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 996 |
def test_public_space_sync_required_bundle_artifacts_include_genblaze_contract():
|
| 997 |
assert {
|
| 998 |
"genblaze_contract_json",
|
|
|
|
| 938 |
"section_count": 5,
|
| 939 |
"blocker_count": 3,
|
| 940 |
}
|
| 941 |
+
|
| 942 |
assert report["observed"]["final_closeout_status"] == {
|
| 943 |
"schema": "proofframe.final_closeout_status.v1",
|
| 944 |
"mode": "waiting_for_credentials",
|
|
|
|
| 994 |
assert all(item["ok"] for item in report["checks"])
|
| 995 |
|
| 996 |
|
| 997 |
+
def test_public_space_sync_parser_accepts_wait_options():
|
| 998 |
+
parser = public_space_sync.build_parser()
|
| 999 |
+
|
| 1000 |
+
args = parser.parse_args(["--wait-attempts", "5", "--wait-seconds", "1.5"])
|
| 1001 |
+
|
| 1002 |
+
assert args.wait_attempts == 5
|
| 1003 |
+
assert args.wait_seconds == 1.5
|
| 1004 |
+
|
| 1005 |
+
|
| 1006 |
def test_public_space_sync_required_bundle_artifacts_include_genblaze_contract():
|
| 1007 |
assert {
|
| 1008 |
"genblaze_contract_json",
|