Spaces:
Running
Running
Sync no-secret credential handoff f1d71c2
Browse files- docs/assets/devpost-submission-preview.json +2 -2
- docs/assets/devpost-submission-preview.md +1 -1
- docs/assets/final-closeout-status.json +17 -2
- docs/assets/final-closeout-status.md +1 -1
- docs/assets/final-launch-plan.json +7 -7
- docs/assets/final-launch-plan.md +5 -5
- docs/assets/final-operator-brief.json +10 -15
- docs/assets/final-operator-brief.md +5 -5
- docs/assets/final-submission-control.json +9 -14
- docs/assets/final-submission-control.md +5 -5
- docs/assets/final-video-publish-kit.json +1 -1
- docs/assets/final-video-publish-kit.md +1 -1
- docs/assets/judge-crosswalk.json +1 -1
- docs/assets/judge-crosswalk.md +1 -1
- docs/assets/judge-decision-brief.json +1 -1
- docs/assets/judge-decision-brief.md +1 -1
- docs/assets/judge-evidence-index.json +4 -4
- docs/assets/judge-evidence-index.md +1 -1
- docs/assets/live-credential-handoff.json +35 -26
- docs/assets/live-credential-handoff.md +8 -13
- docs/assets/recording-assets.json +3 -3
- docs/assets/submission-audit-report.json +1 -1
- docs/assets/submission-audit-report.md +1 -1
- docs/assets/submission-bundle-manifest.json +51 -51
- docs/assets/submission-bundle-manifest.md +28 -28
- docs/todo.md +1 -0
- scripts/final_closeout_status.py +8 -1
- tasks.json +9 -0
- tests/test_final_closeout_status.py +2 -0
docs/assets/devpost-submission-preview.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.devpost_submission_preview.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"mode": "pre_live_preview_ready",
|
| 5 |
"ok": true,
|
| 6 |
"safe_to_share": true,
|
|
@@ -68,7 +68,7 @@
|
|
| 68 |
{
|
| 69 |
"id": "credential_handoff",
|
| 70 |
"label": "Live credential handoff is ready",
|
| 71 |
-
"detail": "Credential handoff mode is missing_live_env; missing ids:
|
| 72 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 73 |
},
|
| 74 |
{
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.devpost_submission_preview.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 4 |
"mode": "pre_live_preview_ready",
|
| 5 |
"ok": true,
|
| 6 |
"safe_to_share": true,
|
|
|
|
| 68 |
{
|
| 69 |
"id": "credential_handoff",
|
| 70 |
"label": "Live credential handoff is ready",
|
| 71 |
+
"detail": "Credential handoff mode is missing_live_env; missing ids: b2_key_id, b2_application_key, genblaze_api_key.",
|
| 72 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 73 |
},
|
| 74 |
{
|
docs/assets/devpost-submission-preview.md
CHANGED
|
@@ -59,7 +59,7 @@ ProofFrame includes a Genblaze/GMICloud provider adapter built around the offici
|
|
| 59 |
- `devpost_submission_checklist`: Final Devpost web submission checklist is ready - Devpost submission checklist mode is pre_submit_blocked; safe_to_submit is False.
|
| 60 |
- `b2_live_proof`: live Backblaze B2 proof - T020 is doing; B2 evidence status is missing; final evidence status is missing.
|
| 61 |
- `genblaze_live_proof`: live Genblaze proof - T021 is doing; final evidence status is missing.
|
| 62 |
-
- `credential_handoff`: Live credential handoff is ready - Credential handoff mode is missing_live_env; missing ids:
|
| 63 |
- `public_video`: final public video - Storyboard mode is mock_storyboard_ready; public video ready is False.
|
| 64 |
- `public_video_check`: public video URL check - Public video check mode is pending_video_url; safe_to_submit is False.
|
| 65 |
- `final_recording`: Final recording gate is ready - Demo readiness mode is pre_live_mock_ready; final recording ready is False.
|
|
|
|
| 59 |
- `devpost_submission_checklist`: Final Devpost web submission checklist is ready - Devpost submission checklist mode is pre_submit_blocked; safe_to_submit is False.
|
| 60 |
- `b2_live_proof`: live Backblaze B2 proof - T020 is doing; B2 evidence status is missing; final evidence status is missing.
|
| 61 |
- `genblaze_live_proof`: live Genblaze proof - T021 is doing; final evidence status is missing.
|
| 62 |
+
- `credential_handoff`: Live credential handoff is ready - Credential handoff mode is missing_live_env; missing ids: b2_key_id, b2_application_key, genblaze_api_key.
|
| 63 |
- `public_video`: final public video - Storyboard mode is mock_storyboard_ready; public video ready is False.
|
| 64 |
- `public_video_check`: public video URL check - Public video check mode is pending_video_url; safe_to_submit is False.
|
| 65 |
- `final_recording`: Final recording gate is ready - Demo readiness mode is pre_live_mock_ready; final recording ready is False.
|
docs/assets/final-closeout-status.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_closeout_status.v1",
|
| 3 |
-
"created_at": "2026-06-30T04:
|
| 4 |
"ok": true,
|
| 5 |
"mode": "waiting_for_credentials",
|
| 6 |
"phase": "credential_entry",
|
|
@@ -34,6 +34,7 @@
|
|
| 34 |
"public_video_ready": null,
|
| 35 |
"project_url": null,
|
| 36 |
"missing_artifacts": null,
|
|
|
|
| 37 |
"findings_count": 0
|
| 38 |
},
|
| 39 |
"credential_handoff": {
|
|
@@ -56,6 +57,11 @@
|
|
| 56 |
"public_video_ready": null,
|
| 57 |
"project_url": null,
|
| 58 |
"missing_artifacts": null,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
"findings_count": 0
|
| 60 |
},
|
| 61 |
"b2_evidence": {
|
|
@@ -98,6 +104,7 @@
|
|
| 98 |
"public_video_ready": null,
|
| 99 |
"project_url": null,
|
| 100 |
"missing_artifacts": null,
|
|
|
|
| 101 |
"findings_count": 0
|
| 102 |
},
|
| 103 |
"video_publish_kit": {
|
|
@@ -120,6 +127,7 @@
|
|
| 120 |
"public_video_ready": null,
|
| 121 |
"project_url": null,
|
| 122 |
"missing_artifacts": null,
|
|
|
|
| 123 |
"findings_count": 0
|
| 124 |
},
|
| 125 |
"devpost_checklist": {
|
|
@@ -142,6 +150,7 @@
|
|
| 142 |
"public_video_ready": null,
|
| 143 |
"project_url": null,
|
| 144 |
"missing_artifacts": null,
|
|
|
|
| 145 |
"findings_count": 0
|
| 146 |
},
|
| 147 |
"devpost_preview": {
|
|
@@ -164,6 +173,7 @@
|
|
| 164 |
"public_video_ready": null,
|
| 165 |
"project_url": null,
|
| 166 |
"missing_artifacts": null,
|
|
|
|
| 167 |
"findings_count": 0
|
| 168 |
},
|
| 169 |
"devpost_receipt": {
|
|
@@ -186,6 +196,7 @@
|
|
| 186 |
"public_video_ready": null,
|
| 187 |
"project_url": null,
|
| 188 |
"missing_artifacts": null,
|
|
|
|
| 189 |
"findings_count": 3
|
| 190 |
},
|
| 191 |
"secret_scan": {
|
|
@@ -208,6 +219,7 @@
|
|
| 208 |
"public_video_ready": null,
|
| 209 |
"project_url": null,
|
| 210 |
"missing_artifacts": null,
|
|
|
|
| 211 |
"findings_count": 0
|
| 212 |
},
|
| 213 |
"submission_audit": {
|
|
@@ -230,6 +242,7 @@
|
|
| 230 |
"public_video_ready": null,
|
| 231 |
"project_url": null,
|
| 232 |
"missing_artifacts": null,
|
|
|
|
| 233 |
"findings_count": 17
|
| 234 |
},
|
| 235 |
"submission_bundle": {
|
|
@@ -252,6 +265,7 @@
|
|
| 252 |
"public_video_ready": null,
|
| 253 |
"project_url": null,
|
| 254 |
"missing_artifacts": [],
|
|
|
|
| 255 |
"findings_count": 0
|
| 256 |
},
|
| 257 |
"public_space_sync": {
|
|
@@ -274,6 +288,7 @@
|
|
| 274 |
"public_video_ready": null,
|
| 275 |
"project_url": null,
|
| 276 |
"missing_artifacts": null,
|
|
|
|
| 277 |
"findings_count": 0
|
| 278 |
}
|
| 279 |
},
|
|
@@ -296,7 +311,7 @@
|
|
| 296 |
"id": "credential_handoff",
|
| 297 |
"label": "Live credential handoff is ready",
|
| 298 |
"ok": false,
|
| 299 |
-
"detail": "Credential handoff mode is missing_live_env.",
|
| 300 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 301 |
},
|
| 302 |
{
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_closeout_status.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:42Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "waiting_for_credentials",
|
| 6 |
"phase": "credential_entry",
|
|
|
|
| 34 |
"public_video_ready": null,
|
| 35 |
"project_url": null,
|
| 36 |
"missing_artifacts": null,
|
| 37 |
+
"missing_ids": null,
|
| 38 |
"findings_count": 0
|
| 39 |
},
|
| 40 |
"credential_handoff": {
|
|
|
|
| 57 |
"public_video_ready": null,
|
| 58 |
"project_url": null,
|
| 59 |
"missing_artifacts": null,
|
| 60 |
+
"missing_ids": [
|
| 61 |
+
"b2_key_id",
|
| 62 |
+
"b2_application_key",
|
| 63 |
+
"genblaze_api_key"
|
| 64 |
+
],
|
| 65 |
"findings_count": 0
|
| 66 |
},
|
| 67 |
"b2_evidence": {
|
|
|
|
| 104 |
"public_video_ready": null,
|
| 105 |
"project_url": null,
|
| 106 |
"missing_artifacts": null,
|
| 107 |
+
"missing_ids": null,
|
| 108 |
"findings_count": 0
|
| 109 |
},
|
| 110 |
"video_publish_kit": {
|
|
|
|
| 127 |
"public_video_ready": null,
|
| 128 |
"project_url": null,
|
| 129 |
"missing_artifacts": null,
|
| 130 |
+
"missing_ids": null,
|
| 131 |
"findings_count": 0
|
| 132 |
},
|
| 133 |
"devpost_checklist": {
|
|
|
|
| 150 |
"public_video_ready": null,
|
| 151 |
"project_url": null,
|
| 152 |
"missing_artifacts": null,
|
| 153 |
+
"missing_ids": null,
|
| 154 |
"findings_count": 0
|
| 155 |
},
|
| 156 |
"devpost_preview": {
|
|
|
|
| 173 |
"public_video_ready": null,
|
| 174 |
"project_url": null,
|
| 175 |
"missing_artifacts": null,
|
| 176 |
+
"missing_ids": null,
|
| 177 |
"findings_count": 0
|
| 178 |
},
|
| 179 |
"devpost_receipt": {
|
|
|
|
| 196 |
"public_video_ready": null,
|
| 197 |
"project_url": null,
|
| 198 |
"missing_artifacts": null,
|
| 199 |
+
"missing_ids": null,
|
| 200 |
"findings_count": 3
|
| 201 |
},
|
| 202 |
"secret_scan": {
|
|
|
|
| 219 |
"public_video_ready": null,
|
| 220 |
"project_url": null,
|
| 221 |
"missing_artifacts": null,
|
| 222 |
+
"missing_ids": null,
|
| 223 |
"findings_count": 0
|
| 224 |
},
|
| 225 |
"submission_audit": {
|
|
|
|
| 242 |
"public_video_ready": null,
|
| 243 |
"project_url": null,
|
| 244 |
"missing_artifacts": null,
|
| 245 |
+
"missing_ids": null,
|
| 246 |
"findings_count": 17
|
| 247 |
},
|
| 248 |
"submission_bundle": {
|
|
|
|
| 265 |
"public_video_ready": null,
|
| 266 |
"project_url": null,
|
| 267 |
"missing_artifacts": [],
|
| 268 |
+
"missing_ids": null,
|
| 269 |
"findings_count": 0
|
| 270 |
},
|
| 271 |
"public_space_sync": {
|
|
|
|
| 288 |
"public_video_ready": null,
|
| 289 |
"project_url": null,
|
| 290 |
"missing_artifacts": null,
|
| 291 |
+
"missing_ids": null,
|
| 292 |
"findings_count": 0
|
| 293 |
}
|
| 294 |
},
|
|
|
|
| 311 |
"id": "credential_handoff",
|
| 312 |
"label": "Live credential handoff is ready",
|
| 313 |
"ok": false,
|
| 314 |
+
"detail": "Credential handoff mode is missing_live_env; missing ids: b2_key_id, b2_application_key, genblaze_api_key.",
|
| 315 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 316 |
},
|
| 317 |
{
|
docs/assets/final-closeout-status.md
CHANGED
|
@@ -14,7 +14,7 @@ This closeout report stores only task statuses, report metadata, public URLs, an
|
|
| 14 |
| --- | --- | --- | --- |
|
| 15 |
| OK | `report_inventory` | All standing control reports are present; live evidence files may be absent before credentials. | `docs/assets/*.json` |
|
| 16 |
| OK | `ci_and_public_demo` | Public Space sync mode is public_space_synced; ok is True. | `docs/assets/public-space-sync-report.json` |
|
| 17 |
-
| BLOCKED | `credential_handoff` | Credential handoff mode is missing_live_env. | `docs/assets/live-credential-handoff.json` |
|
| 18 |
| BLOCKED | `b2_live_proof` | T020 is doing; evidence present is False. | `docs/assets/b2-live-proof-evidence.json` |
|
| 19 |
| BLOCKED | `genblaze_live_proof` | T021 is doing; final evidence present is False. | `docs/assets/final-live-proof-evidence.json` |
|
| 20 |
| BLOCKED | `public_video` | Public video mode is pending_video_url; video kit final_video_ready is False. | `docs/assets/public-video-check.json` |
|
|
|
|
| 14 |
| --- | --- | --- | --- |
|
| 15 |
| OK | `report_inventory` | All standing control reports are present; live evidence files may be absent before credentials. | `docs/assets/*.json` |
|
| 16 |
| OK | `ci_and_public_demo` | Public Space sync mode is public_space_synced; ok is True. | `docs/assets/public-space-sync-report.json` |
|
| 17 |
+
| BLOCKED | `credential_handoff` | Credential handoff mode is missing_live_env; missing ids: b2_key_id, b2_application_key, genblaze_api_key. | `docs/assets/live-credential-handoff.json` |
|
| 18 |
| BLOCKED | `b2_live_proof` | T020 is doing; evidence present is False. | `docs/assets/b2-live-proof-evidence.json` |
|
| 19 |
| BLOCKED | `genblaze_live_proof` | T021 is doing; final evidence present is False. | `docs/assets/final-live-proof-evidence.json` |
|
| 20 |
| BLOCKED | `public_video` | Public video mode is pending_video_url; video kit final_video_ready is False. | `docs/assets/public-video-check.json` |
|
docs/assets/final-launch-plan.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_launch_plan.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"ok": false,
|
| 5 |
-
"mode": "
|
| 6 |
"repo_root": "/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe",
|
| 7 |
"current_phase": "credential_entry",
|
| 8 |
"summary": {
|
| 9 |
"total": 6,
|
| 10 |
"done": 0,
|
| 11 |
-
"ready":
|
| 12 |
-
"blocked":
|
| 13 |
},
|
| 14 |
"task_statuses": {
|
| 15 |
"T020": "doing",
|
|
@@ -23,8 +23,8 @@
|
|
| 23 |
{
|
| 24 |
"id": "credential_entry",
|
| 25 |
"title": "Enter final credentials locally",
|
| 26 |
-
"status": "
|
| 27 |
-
"detail": "
|
| 28 |
"command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 29 |
"expected_artifacts": [
|
| 30 |
"docs/assets/b2-key-scope-checklist.md reviewed before key creation",
|
|
@@ -124,7 +124,7 @@
|
|
| 124 |
}
|
| 125 |
],
|
| 126 |
"next_command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 127 |
-
"next_detail": "
|
| 128 |
"safety_policy": {
|
| 129 |
"no_secret_values_in_report": true,
|
| 130 |
"never_commit": [
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_launch_plan.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 4 |
"ok": false,
|
| 5 |
+
"mode": "ready_for_credential_entry",
|
| 6 |
"repo_root": "/Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe",
|
| 7 |
"current_phase": "credential_entry",
|
| 8 |
"summary": {
|
| 9 |
"total": 6,
|
| 10 |
"done": 0,
|
| 11 |
+
"ready": 1,
|
| 12 |
+
"blocked": 5
|
| 13 |
},
|
| 14 |
"task_statuses": {
|
| 15 |
"T020": "doing",
|
|
|
|
| 23 |
{
|
| 24 |
"id": "credential_entry",
|
| 25 |
"title": "Enter final credentials locally",
|
| 26 |
+
"status": "ready",
|
| 27 |
+
"detail": "Only expected secret ids are missing; operator can enter them locally.",
|
| 28 |
"command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 29 |
"expected_artifacts": [
|
| 30 |
"docs/assets/b2-key-scope-checklist.md reviewed before key creation",
|
|
|
|
| 124 |
}
|
| 125 |
],
|
| 126 |
"next_command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 127 |
+
"next_detail": "Only expected secret ids are missing; operator can enter them locally.",
|
| 128 |
"safety_policy": {
|
| 129 |
"no_secret_values_in_report": true,
|
| 130 |
"never_commit": [
|
docs/assets/final-launch-plan.md
CHANGED
|
@@ -1,22 +1,22 @@
|
|
| 1 |
# ProofFrame Final Launch Plan
|
| 2 |
|
| 3 |
-
Mode: `
|
| 4 |
Current phase: `credential_entry`
|
| 5 |
Complete: `false`
|
| 6 |
-
Progress: `0 / 6` done; `
|
| 7 |
|
| 8 |
## Next Command
|
| 9 |
|
| 10 |
```bash
|
| 11 |
python scripts/final_env_wizard.py --output .env.final.local --missing-only --force
|
| 12 |
```
|
| 13 |
-
|
| 14 |
|
| 15 |
## Phases
|
| 16 |
|
| 17 |
### credential_entry - Enter final credentials locally
|
| 18 |
-
- Status: `
|
| 19 |
-
- Detail:
|
| 20 |
- Command:
|
| 21 |
```bash
|
| 22 |
python scripts/final_env_wizard.py --output .env.final.local --missing-only --force
|
|
|
|
| 1 |
# ProofFrame Final Launch Plan
|
| 2 |
|
| 3 |
+
Mode: `ready_for_credential_entry`
|
| 4 |
Current phase: `credential_entry`
|
| 5 |
Complete: `false`
|
| 6 |
+
Progress: `0 / 6` done; `1` ready, `5` blocked.
|
| 7 |
|
| 8 |
## Next Command
|
| 9 |
|
| 10 |
```bash
|
| 11 |
python scripts/final_env_wizard.py --output .env.final.local --missing-only --force
|
| 12 |
```
|
| 13 |
+
Only expected secret ids are missing; operator can enter them locally.
|
| 14 |
|
| 15 |
## Phases
|
| 16 |
|
| 17 |
### credential_entry - Enter final credentials locally
|
| 18 |
+
- Status: `ready`
|
| 19 |
+
- Detail: Only expected secret ids are missing; operator can enter them locally.
|
| 20 |
- Command:
|
| 21 |
```bash
|
| 22 |
python scripts/final_env_wizard.py --output .env.final.local --missing-only --force
|
docs/assets/final-operator-brief.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_operator_brief.v1",
|
| 3 |
-
"mode": "
|
| 4 |
-
"ready_for_secret_entry":
|
| 5 |
"safe_to_submit": false,
|
| 6 |
"task_statuses": {
|
| 7 |
"T020": "doing",
|
|
@@ -30,27 +30,22 @@
|
|
| 30 |
"present": true,
|
| 31 |
"mode": "missing_live_env",
|
| 32 |
"ready": false,
|
| 33 |
-
"source": "
|
| 34 |
"missing_ids": [
|
| 35 |
-
"storage_backend_mode",
|
| 36 |
-
"generation_backend_mode",
|
| 37 |
-
"b2_endpoint",
|
| 38 |
-
"b2_bucket",
|
| 39 |
"b2_key_id",
|
| 40 |
"b2_application_key",
|
| 41 |
-
"genblaze_api_key"
|
| 42 |
-
"genblaze_image_model"
|
| 43 |
],
|
| 44 |
-
"missing_only_expected_secrets":
|
| 45 |
"required_presence": {
|
| 46 |
-
"storage_backend_mode":
|
| 47 |
-
"generation_backend_mode":
|
| 48 |
-
"b2_endpoint":
|
| 49 |
-
"b2_bucket":
|
| 50 |
"b2_key_id": false,
|
| 51 |
"b2_application_key": false,
|
| 52 |
"genblaze_api_key": false,
|
| 53 |
-
"genblaze_image_model":
|
| 54 |
}
|
| 55 |
},
|
| 56 |
"reports": {
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_operator_brief.v1",
|
| 3 |
+
"mode": "credential_entry_ready",
|
| 4 |
+
"ready_for_secret_entry": true,
|
| 5 |
"safe_to_submit": false,
|
| 6 |
"task_statuses": {
|
| 7 |
"T020": "doing",
|
|
|
|
| 30 |
"present": true,
|
| 31 |
"mode": "missing_live_env",
|
| 32 |
"ready": false,
|
| 33 |
+
"source": ".env.final.local",
|
| 34 |
"missing_ids": [
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
"b2_key_id",
|
| 36 |
"b2_application_key",
|
| 37 |
+
"genblaze_api_key"
|
|
|
|
| 38 |
],
|
| 39 |
+
"missing_only_expected_secrets": true,
|
| 40 |
"required_presence": {
|
| 41 |
+
"storage_backend_mode": true,
|
| 42 |
+
"generation_backend_mode": true,
|
| 43 |
+
"b2_endpoint": true,
|
| 44 |
+
"b2_bucket": true,
|
| 45 |
"b2_key_id": false,
|
| 46 |
"b2_application_key": false,
|
| 47 |
"genblaze_api_key": false,
|
| 48 |
+
"genblaze_image_model": true
|
| 49 |
}
|
| 50 |
},
|
| 51 |
"reports": {
|
docs/assets/final-operator-brief.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
# ProofFrame Final Operator Brief
|
| 2 |
|
| 3 |
-
Mode: `
|
| 4 |
-
Ready for secret entry: `
|
| 5 |
Safe to submit: `false`
|
| 6 |
|
| 7 |
## Current Blockers
|
|
@@ -15,10 +15,10 @@ Safe to submit: `false`
|
|
| 15 |
|
| 16 |
## Credential Handoff
|
| 17 |
|
| 18 |
-
- Source: `
|
| 19 |
- Mode: `missing_live_env`
|
| 20 |
-
- Missing ids: `
|
| 21 |
-
- Missing only expected secrets: `
|
| 22 |
|
| 23 |
## B2 Setup
|
| 24 |
|
|
|
|
| 1 |
# ProofFrame Final Operator Brief
|
| 2 |
|
| 3 |
+
Mode: `credential_entry_ready`
|
| 4 |
+
Ready for secret entry: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
|
| 7 |
## Current Blockers
|
|
|
|
| 15 |
|
| 16 |
## Credential Handoff
|
| 17 |
|
| 18 |
+
- Source: `.env.final.local`
|
| 19 |
- Mode: `missing_live_env`
|
| 20 |
+
- Missing ids: `b2_key_id, b2_application_key, genblaze_api_key`
|
| 21 |
+
- Missing only expected secrets: `true`
|
| 22 |
|
| 23 |
## B2 Setup
|
| 24 |
|
docs/assets/final-submission-control.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_submission_control.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"ok": true,
|
| 5 |
"control_health_ok": true,
|
| 6 |
"mode": "pre_live_control",
|
|
@@ -175,7 +175,7 @@
|
|
| 175 |
"path": "docs/assets/final-launch-plan.json",
|
| 176 |
"schema_ok": true,
|
| 177 |
"schema": "proofframe.final_launch_plan.v1",
|
| 178 |
-
"mode": "
|
| 179 |
"ok": false,
|
| 180 |
"score": null,
|
| 181 |
"max_score": null,
|
|
@@ -188,7 +188,7 @@
|
|
| 188 |
"public_video_ready": null,
|
| 189 |
"current_phase": "credential_entry",
|
| 190 |
"next_command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 191 |
-
"next_detail": "
|
| 192 |
"bus_status": null,
|
| 193 |
"active_role_cwd_ok": null
|
| 194 |
},
|
|
@@ -340,14 +340,9 @@
|
|
| 340 |
"mode": "missing_live_env",
|
| 341 |
"ready": false,
|
| 342 |
"missing_ids": [
|
| 343 |
-
"storage_backend_mode",
|
| 344 |
-
"generation_backend_mode",
|
| 345 |
-
"b2_endpoint",
|
| 346 |
-
"b2_bucket",
|
| 347 |
"b2_key_id",
|
| 348 |
"b2_application_key",
|
| 349 |
-
"genblaze_api_key"
|
| 350 |
-
"genblaze_image_model"
|
| 351 |
],
|
| 352 |
"secret_policy": "Report records only variable names and presence; credential values are never printed."
|
| 353 |
},
|
|
@@ -443,7 +438,7 @@
|
|
| 443 |
"id": "final_launch_plan",
|
| 444 |
"label": "Final launch plan exposes the current operator step",
|
| 445 |
"ok": true,
|
| 446 |
-
"detail": "Launch plan mode is
|
| 447 |
"evidence": "docs/assets/final-launch-plan.json"
|
| 448 |
},
|
| 449 |
{
|
|
@@ -478,7 +473,7 @@
|
|
| 478 |
"id": "credential_handoff",
|
| 479 |
"label": "Live credential handoff is ready",
|
| 480 |
"ok": false,
|
| 481 |
-
"detail": "Credential handoff mode is missing_live_env; missing ids:
|
| 482 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 483 |
},
|
| 484 |
{
|
|
@@ -557,7 +552,7 @@
|
|
| 557 |
"id": "credential_handoff",
|
| 558 |
"label": "Live credential handoff is ready",
|
| 559 |
"ok": false,
|
| 560 |
-
"detail": "Credential handoff mode is missing_live_env; missing ids:
|
| 561 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 562 |
},
|
| 563 |
{
|
|
@@ -643,10 +638,10 @@
|
|
| 643 |
"python scripts/submission_bundle.py --strict-final"
|
| 644 |
],
|
| 645 |
"launch_plan": {
|
| 646 |
-
"mode": "
|
| 647 |
"current_phase": "credential_entry",
|
| 648 |
"next_command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 649 |
-
"next_detail": "
|
| 650 |
"path": "docs/assets/final-launch-plan.json"
|
| 651 |
},
|
| 652 |
"claim_boundary": "Public demo remains local/mock and pre_live_safe until final live B2 plus Genblaze proof is captured."
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_submission_control.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:35:43Z",
|
| 4 |
"ok": true,
|
| 5 |
"control_health_ok": true,
|
| 6 |
"mode": "pre_live_control",
|
|
|
|
| 175 |
"path": "docs/assets/final-launch-plan.json",
|
| 176 |
"schema_ok": true,
|
| 177 |
"schema": "proofframe.final_launch_plan.v1",
|
| 178 |
+
"mode": "ready_for_credential_entry",
|
| 179 |
"ok": false,
|
| 180 |
"score": null,
|
| 181 |
"max_score": null,
|
|
|
|
| 188 |
"public_video_ready": null,
|
| 189 |
"current_phase": "credential_entry",
|
| 190 |
"next_command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 191 |
+
"next_detail": "Only expected secret ids are missing; operator can enter them locally.",
|
| 192 |
"bus_status": null,
|
| 193 |
"active_role_cwd_ok": null
|
| 194 |
},
|
|
|
|
| 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."
|
| 348 |
},
|
|
|
|
| 438 |
"id": "final_launch_plan",
|
| 439 |
"label": "Final launch plan exposes the current operator step",
|
| 440 |
"ok": true,
|
| 441 |
+
"detail": "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.",
|
| 442 |
"evidence": "docs/assets/final-launch-plan.json"
|
| 443 |
},
|
| 444 |
{
|
|
|
|
| 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: b2_key_id, b2_application_key, genblaze_api_key.",
|
| 477 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 478 |
},
|
| 479 |
{
|
|
|
|
| 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: b2_key_id, b2_application_key, genblaze_api_key.",
|
| 556 |
"evidence": "docs/assets/live-credential-handoff.json"
|
| 557 |
},
|
| 558 |
{
|
|
|
|
| 638 |
"python scripts/submission_bundle.py --strict-final"
|
| 639 |
],
|
| 640 |
"launch_plan": {
|
| 641 |
+
"mode": "ready_for_credential_entry",
|
| 642 |
"current_phase": "credential_entry",
|
| 643 |
"next_command": "python scripts/final_env_wizard.py --output .env.final.local --missing-only --force",
|
| 644 |
+
"next_detail": "Only expected secret ids are missing; operator can enter them locally.",
|
| 645 |
"path": "docs/assets/final-launch-plan.json"
|
| 646 |
},
|
| 647 |
"claim_boundary": "Public demo remains local/mock and pre_live_safe until final live B2 plus Genblaze proof is captured."
|
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-
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
|
@@ -26,10 +26,10 @@ Repository: https://github.com/adjcjh777/backblaze-proofframe
|
|
| 26 |
|
| 27 |
## Launch Plan
|
| 28 |
|
| 29 |
-
- Mode: `
|
| 30 |
- Current phase: `credential_entry`
|
| 31 |
- Next command: `python scripts/final_env_wizard.py --output .env.final.local --missing-only --force`
|
| 32 |
-
- Detail:
|
| 33 |
- Source: `docs/assets/final-launch-plan.json`
|
| 34 |
|
| 35 |
## Warnings
|
|
@@ -46,12 +46,12 @@ Repository: https://github.com/adjcjh777/backblaze-proofframe
|
|
| 46 |
| OK | Official Devpost event snapshot is fresh | Snapshot checked at 2026-06-29T11:21:01Z; submission open is True; age days is 0. | `docs/assets/devpost-event-snapshot.json` |
|
| 47 |
| OK | Agent handoff metadata points at the current repo | Agent handoff mode is handoff_ready; ok is True; bus status is skipped; active role cwd ok is None. | `docs/assets/agent-handoff-report.json` |
|
| 48 |
| OK | Public Space is synced to the current judge-facing demo | Public Space sync mode is public_space_synced; ok is True. | `docs/assets/public-space-sync-report.json` |
|
| 49 |
-
| OK | Final launch plan exposes the current operator step | Launch plan mode is
|
| 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 |
| PENDING | Backblaze B2 live proof captured | T020 is doing; B2 evidence status is missing; 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:
|
| 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` |
|
|
|
|
| 3 |
Mode: `pre_live_control`
|
| 4 |
Control health OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
+
Created: `2026-06-30T04:35:43Z`
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
|
|
|
| 26 |
|
| 27 |
## Launch Plan
|
| 28 |
|
| 29 |
+
- Mode: `ready_for_credential_entry`
|
| 30 |
- Current phase: `credential_entry`
|
| 31 |
- Next command: `python scripts/final_env_wizard.py --output .env.final.local --missing-only --force`
|
| 32 |
+
- Detail: Only expected secret ids are missing; operator can enter them locally.
|
| 33 |
- Source: `docs/assets/final-launch-plan.json`
|
| 34 |
|
| 35 |
## Warnings
|
|
|
|
| 46 |
| OK | Official Devpost event snapshot is fresh | Snapshot checked at 2026-06-29T11:21:01Z; submission open is True; age days is 0. | `docs/assets/devpost-event-snapshot.json` |
|
| 47 |
| OK | Agent handoff metadata points at the current repo | Agent handoff mode is handoff_ready; ok is True; bus status is skipped; active role cwd ok is None. | `docs/assets/agent-handoff-report.json` |
|
| 48 |
| OK | Public Space is synced to the current judge-facing demo | Public Space sync mode is public_space_synced; ok is True. | `docs/assets/public-space-sync-report.json` |
|
| 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 |
| PENDING | Backblaze B2 live proof captured | T020 is doing; B2 evidence status is missing; 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: b2_key_id, b2_application_key, 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` |
|
docs/assets/final-video-publish-kit.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_video_publish_kit.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"ok": true,
|
| 5 |
"mode": "ready_for_final_upload",
|
| 6 |
"safe_to_share": true,
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.final_video_publish_kit.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:35:02Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "ready_for_final_upload",
|
| 6 |
"safe_to_share": true,
|
docs/assets/final-video-publish-kit.md
CHANGED
|
@@ -4,7 +4,7 @@ Mode: `ready_for_final_upload`
|
|
| 4 |
OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
Final video ready: `false`
|
| 7 |
-
Created: `2026-06-
|
| 8 |
|
| 9 |
## Upload Copy
|
| 10 |
|
|
|
|
| 4 |
OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
Final video ready: `false`
|
| 7 |
+
Created: `2026-06-30T04:35:02Z`
|
| 8 |
|
| 9 |
## Upload Copy
|
| 10 |
|
docs/assets/judge-crosswalk.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.judge_crosswalk.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"mode": "pre_live_crosswalk_ready",
|
| 5 |
"ok": true,
|
| 6 |
"safe_to_submit": false,
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.judge_crosswalk.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 4 |
"mode": "pre_live_crosswalk_ready",
|
| 5 |
"ok": true,
|
| 6 |
"safe_to_submit": false,
|
docs/assets/judge-crosswalk.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# ProofFrame Judge Crosswalk
|
| 2 |
|
| 3 |
-
Created: `2026-06-
|
| 4 |
Mode: `pre_live_crosswalk_ready`
|
| 5 |
OK: `true`
|
| 6 |
Safe to submit: `false`
|
|
|
|
| 1 |
# ProofFrame Judge Crosswalk
|
| 2 |
|
| 3 |
+
Created: `2026-06-30T04:37:54Z`
|
| 4 |
Mode: `pre_live_crosswalk_ready`
|
| 5 |
OK: `true`
|
| 6 |
Safe to submit: `false`
|
docs/assets/judge-decision-brief.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.judge_decision_brief.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"ok": true,
|
| 5 |
"mode": "pre_live_decision_ready",
|
| 6 |
"safe_to_share": true,
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.judge_decision_brief.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "pre_live_decision_ready",
|
| 6 |
"safe_to_share": true,
|
docs/assets/judge-decision-brief.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Mode: `pre_live_decision_ready`
|
| 4 |
OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
-
Created: `2026-06-
|
| 7 |
|
| 8 |
ProofFrame turns generated media into auditable, approval-ready asset packets.
|
| 9 |
|
|
|
|
| 3 |
Mode: `pre_live_decision_ready`
|
| 4 |
OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
+
Created: `2026-06-30T04:37:54Z`
|
| 7 |
|
| 8 |
ProofFrame turns generated media into auditable, approval-ready asset packets.
|
| 9 |
|
docs/assets/judge-evidence-index.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.judge_evidence_index.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"ok": true,
|
| 5 |
"mode": "pre_live_evidence_index_ready",
|
| 6 |
"safe_to_share": true,
|
|
@@ -96,7 +96,7 @@
|
|
| 96 |
"path": "docs/assets/final-submission-control.md",
|
| 97 |
"raw_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-submission-control.md",
|
| 98 |
"present": true,
|
| 99 |
-
"bytes":
|
| 100 |
},
|
| 101 |
{
|
| 102 |
"id": "final_closeout_status",
|
|
@@ -107,7 +107,7 @@
|
|
| 107 |
"path": "docs/assets/final-closeout-status.md",
|
| 108 |
"raw_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-closeout-status.md",
|
| 109 |
"present": true,
|
| 110 |
-
"bytes":
|
| 111 |
},
|
| 112 |
{
|
| 113 |
"id": "devpost_preview",
|
|
@@ -118,7 +118,7 @@
|
|
| 118 |
"path": "docs/assets/devpost-submission-preview.md",
|
| 119 |
"raw_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/devpost-submission-preview.md",
|
| 120 |
"present": true,
|
| 121 |
-
"bytes":
|
| 122 |
},
|
| 123 |
{
|
| 124 |
"id": "submission_checklist",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.judge_evidence_index.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 4 |
"ok": true,
|
| 5 |
"mode": "pre_live_evidence_index_ready",
|
| 6 |
"safe_to_share": true,
|
|
|
|
| 96 |
"path": "docs/assets/final-submission-control.md",
|
| 97 |
"raw_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-submission-control.md",
|
| 98 |
"present": true,
|
| 99 |
+
"bytes": 7087
|
| 100 |
},
|
| 101 |
{
|
| 102 |
"id": "final_closeout_status",
|
|
|
|
| 107 |
"path": "docs/assets/final-closeout-status.md",
|
| 108 |
"raw_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/final-closeout-status.md",
|
| 109 |
"present": true,
|
| 110 |
+
"bytes": 2467
|
| 111 |
},
|
| 112 |
{
|
| 113 |
"id": "devpost_preview",
|
|
|
|
| 118 |
"path": "docs/assets/devpost-submission-preview.md",
|
| 119 |
"raw_url": "https://huggingface.co/spaces/ADJCJH/backblaze-proofframe/raw/main/docs/assets/devpost-submission-preview.md",
|
| 120 |
"present": true,
|
| 121 |
+
"bytes": 5407
|
| 122 |
},
|
| 123 |
{
|
| 124 |
"id": "submission_checklist",
|
docs/assets/judge-evidence-index.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
Mode: `pre_live_evidence_index_ready`
|
| 4 |
OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
-
Created: `2026-06-
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
|
|
|
| 3 |
Mode: `pre_live_evidence_index_ready`
|
| 4 |
OK: `true`
|
| 5 |
Safe to submit: `false`
|
| 6 |
+
Created: `2026-06-30T04:37:54Z`
|
| 7 |
Public demo: https://adjcjh-backblaze-proofframe.hf.space/?judge=1
|
| 8 |
Repository: https://github.com/adjcjh777/backblaze-proofframe
|
| 9 |
|
docs/assets/live-credential-handoff.json
CHANGED
|
@@ -2,52 +2,60 @@
|
|
| 2 |
"schema": "proofframe.live_credential_handoff.v1",
|
| 3 |
"ok": false,
|
| 4 |
"mode": "missing_live_env",
|
| 5 |
-
"source": "
|
| 6 |
"required": [
|
| 7 |
{
|
| 8 |
"id": "storage_backend_mode",
|
| 9 |
"label": "ProofFrame storage backend mode",
|
| 10 |
-
"ok":
|
| 11 |
"accepted_names": [
|
| 12 |
"PROOFFRAME_STORAGE_BACKEND"
|
| 13 |
],
|
| 14 |
-
"present_names": [
|
|
|
|
|
|
|
| 15 |
"expected": "b2",
|
| 16 |
-
"remediation": "
|
| 17 |
},
|
| 18 |
{
|
| 19 |
"id": "generation_backend_mode",
|
| 20 |
"label": "ProofFrame generation backend mode",
|
| 21 |
-
"ok":
|
| 22 |
"accepted_names": [
|
| 23 |
"PROOFFRAME_GENERATION_BACKEND"
|
| 24 |
],
|
| 25 |
-
"present_names": [
|
|
|
|
|
|
|
| 26 |
"expected": "genblaze",
|
| 27 |
-
"remediation": "
|
| 28 |
},
|
| 29 |
{
|
| 30 |
"id": "b2_endpoint",
|
| 31 |
"label": "Backblaze B2 S3 endpoint",
|
| 32 |
-
"ok":
|
| 33 |
"accepted_names": [
|
| 34 |
"B2_ENDPOINT_URL",
|
| 35 |
"B2_S3_ENDPOINT_URL"
|
| 36 |
],
|
| 37 |
-
"present_names": [
|
|
|
|
|
|
|
| 38 |
"expected": null,
|
| 39 |
-
"remediation": "
|
| 40 |
},
|
| 41 |
{
|
| 42 |
"id": "b2_bucket",
|
| 43 |
"label": "Backblaze B2 bucket",
|
| 44 |
-
"ok":
|
| 45 |
"accepted_names": [
|
| 46 |
"B2_BUCKET"
|
| 47 |
],
|
| 48 |
-
"present_names": [
|
|
|
|
|
|
|
| 49 |
"expected": null,
|
| 50 |
-
"remediation": "
|
| 51 |
},
|
| 52 |
{
|
| 53 |
"id": "b2_key_id",
|
|
@@ -87,13 +95,15 @@
|
|
| 87 |
{
|
| 88 |
"id": "genblaze_image_model",
|
| 89 |
"label": "Genblaze image model",
|
| 90 |
-
"ok":
|
| 91 |
"accepted_names": [
|
| 92 |
"GENBLAZE_IMAGE_MODEL"
|
| 93 |
],
|
| 94 |
-
"present_names": [
|
|
|
|
|
|
|
| 95 |
"expected": null,
|
| 96 |
-
"remediation": "
|
| 97 |
}
|
| 98 |
],
|
| 99 |
"optional": [
|
|
@@ -122,35 +132,34 @@
|
|
| 122 |
{
|
| 123 |
"id": "genblaze_aspect_ratio",
|
| 124 |
"label": "Genblaze aspect ratio",
|
| 125 |
-
"ok":
|
| 126 |
"accepted_names": [
|
| 127 |
"GENBLAZE_ASPECT_RATIO"
|
| 128 |
],
|
| 129 |
-
"present_names": [
|
|
|
|
|
|
|
| 130 |
"expected": null,
|
| 131 |
"remediation": ""
|
| 132 |
},
|
| 133 |
{
|
| 134 |
"id": "genblaze_timeout",
|
| 135 |
"label": "Genblaze timeout seconds",
|
| 136 |
-
"ok":
|
| 137 |
"accepted_names": [
|
| 138 |
"GENBLAZE_TIMEOUT_SECONDS"
|
| 139 |
],
|
| 140 |
-
"present_names": [
|
|
|
|
|
|
|
| 141 |
"expected": null,
|
| 142 |
"remediation": ""
|
| 143 |
}
|
| 144 |
],
|
| 145 |
"missing_ids": [
|
| 146 |
-
"storage_backend_mode",
|
| 147 |
-
"generation_backend_mode",
|
| 148 |
-
"b2_endpoint",
|
| 149 |
-
"b2_bucket",
|
| 150 |
"b2_key_id",
|
| 151 |
"b2_application_key",
|
| 152 |
-
"genblaze_api_key"
|
| 153 |
-
"genblaze_image_model"
|
| 154 |
],
|
| 155 |
"next_commands": [
|
| 156 |
"python scripts/final_env_wizard.py --prefill-non-secret --output .env.final.local",
|
|
|
|
| 2 |
"schema": "proofframe.live_credential_handoff.v1",
|
| 3 |
"ok": false,
|
| 4 |
"mode": "missing_live_env",
|
| 5 |
+
"source": ".env.final.local",
|
| 6 |
"required": [
|
| 7 |
{
|
| 8 |
"id": "storage_backend_mode",
|
| 9 |
"label": "ProofFrame storage backend mode",
|
| 10 |
+
"ok": true,
|
| 11 |
"accepted_names": [
|
| 12 |
"PROOFFRAME_STORAGE_BACKEND"
|
| 13 |
],
|
| 14 |
+
"present_names": [
|
| 15 |
+
"PROOFFRAME_STORAGE_BACKEND"
|
| 16 |
+
],
|
| 17 |
"expected": "b2",
|
| 18 |
+
"remediation": ""
|
| 19 |
},
|
| 20 |
{
|
| 21 |
"id": "generation_backend_mode",
|
| 22 |
"label": "ProofFrame generation backend mode",
|
| 23 |
+
"ok": true,
|
| 24 |
"accepted_names": [
|
| 25 |
"PROOFFRAME_GENERATION_BACKEND"
|
| 26 |
],
|
| 27 |
+
"present_names": [
|
| 28 |
+
"PROOFFRAME_GENERATION_BACKEND"
|
| 29 |
+
],
|
| 30 |
"expected": "genblaze",
|
| 31 |
+
"remediation": ""
|
| 32 |
},
|
| 33 |
{
|
| 34 |
"id": "b2_endpoint",
|
| 35 |
"label": "Backblaze B2 S3 endpoint",
|
| 36 |
+
"ok": true,
|
| 37 |
"accepted_names": [
|
| 38 |
"B2_ENDPOINT_URL",
|
| 39 |
"B2_S3_ENDPOINT_URL"
|
| 40 |
],
|
| 41 |
+
"present_names": [
|
| 42 |
+
"B2_ENDPOINT_URL"
|
| 43 |
+
],
|
| 44 |
"expected": null,
|
| 45 |
+
"remediation": ""
|
| 46 |
},
|
| 47 |
{
|
| 48 |
"id": "b2_bucket",
|
| 49 |
"label": "Backblaze B2 bucket",
|
| 50 |
+
"ok": true,
|
| 51 |
"accepted_names": [
|
| 52 |
"B2_BUCKET"
|
| 53 |
],
|
| 54 |
+
"present_names": [
|
| 55 |
+
"B2_BUCKET"
|
| 56 |
+
],
|
| 57 |
"expected": null,
|
| 58 |
+
"remediation": ""
|
| 59 |
},
|
| 60 |
{
|
| 61 |
"id": "b2_key_id",
|
|
|
|
| 95 |
{
|
| 96 |
"id": "genblaze_image_model",
|
| 97 |
"label": "Genblaze image model",
|
| 98 |
+
"ok": true,
|
| 99 |
"accepted_names": [
|
| 100 |
"GENBLAZE_IMAGE_MODEL"
|
| 101 |
],
|
| 102 |
+
"present_names": [
|
| 103 |
+
"GENBLAZE_IMAGE_MODEL"
|
| 104 |
+
],
|
| 105 |
"expected": null,
|
| 106 |
+
"remediation": ""
|
| 107 |
}
|
| 108 |
],
|
| 109 |
"optional": [
|
|
|
|
| 132 |
{
|
| 133 |
"id": "genblaze_aspect_ratio",
|
| 134 |
"label": "Genblaze aspect ratio",
|
| 135 |
+
"ok": true,
|
| 136 |
"accepted_names": [
|
| 137 |
"GENBLAZE_ASPECT_RATIO"
|
| 138 |
],
|
| 139 |
+
"present_names": [
|
| 140 |
+
"GENBLAZE_ASPECT_RATIO"
|
| 141 |
+
],
|
| 142 |
"expected": null,
|
| 143 |
"remediation": ""
|
| 144 |
},
|
| 145 |
{
|
| 146 |
"id": "genblaze_timeout",
|
| 147 |
"label": "Genblaze timeout seconds",
|
| 148 |
+
"ok": true,
|
| 149 |
"accepted_names": [
|
| 150 |
"GENBLAZE_TIMEOUT_SECONDS"
|
| 151 |
],
|
| 152 |
+
"present_names": [
|
| 153 |
+
"GENBLAZE_TIMEOUT_SECONDS"
|
| 154 |
+
],
|
| 155 |
"expected": null,
|
| 156 |
"remediation": ""
|
| 157 |
}
|
| 158 |
],
|
| 159 |
"missing_ids": [
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
"b2_key_id",
|
| 161 |
"b2_application_key",
|
| 162 |
+
"genblaze_api_key"
|
|
|
|
| 163 |
],
|
| 164 |
"next_commands": [
|
| 165 |
"python scripts/final_env_wizard.py --prefill-non-secret --output .env.final.local",
|
docs/assets/live-credential-handoff.md
CHANGED
|
@@ -2,35 +2,30 @@
|
|
| 2 |
|
| 3 |
Mode: `missing_live_env`
|
| 4 |
Ready for live proof: `false`
|
| 5 |
-
Source: `
|
| 6 |
|
| 7 |
This report records only variable names and presence checks. It never prints, hashes, stores, or commits credential values.
|
| 8 |
|
| 9 |
## Required Values
|
| 10 |
|
| 11 |
-
-
|
| 12 |
-
|
| 13 |
-
-
|
| 14 |
-
|
| 15 |
-
- MISSING Backblaze B2 S3 endpoint: `B2_ENDPOINT_URL`, `B2_S3_ENDPOINT_URL`; present none.
|
| 16 |
-
Remediation: Set B2_ENDPOINT_URL from the Backblaze bucket S3 endpoint.
|
| 17 |
-
- MISSING Backblaze B2 bucket: `B2_BUCKET`; present none.
|
| 18 |
-
Remediation: Set B2_BUCKET to the dedicated demo bucket name.
|
| 19 |
- MISSING Backblaze B2 key id: `B2_KEY_ID`; present none.
|
| 20 |
Remediation: Set B2_KEY_ID for a least-privilege application key.
|
| 21 |
- MISSING Backblaze B2 application key: `B2_APPLICATION_KEY`, `B2_APP_KEY`; present none.
|
| 22 |
Remediation: Set B2_APPLICATION_KEY or B2_APP_KEY.
|
| 23 |
- MISSING Genblaze/GMI API key: `GENBLAZE_API_KEY`, `GMI_API_KEY`; present none.
|
| 24 |
Remediation: Set GENBLAZE_API_KEY or GMI_API_KEY.
|
| 25 |
-
-
|
| 26 |
-
Remediation: Set GENBLAZE_IMAGE_MODEL to the verified image model.
|
| 27 |
|
| 28 |
## Optional Values
|
| 29 |
|
| 30 |
- UNSET B2 public base URL: `B2_PUBLIC_BASE_URL`; present none.
|
| 31 |
- UNSET B2 region for Genblaze sink: `B2_REGION`; present none.
|
| 32 |
-
-
|
| 33 |
-
-
|
| 34 |
|
| 35 |
## Next Commands
|
| 36 |
|
|
|
|
| 2 |
|
| 3 |
Mode: `missing_live_env`
|
| 4 |
Ready for live proof: `false`
|
| 5 |
+
Source: `.env.final.local`
|
| 6 |
|
| 7 |
This report records only variable names and presence checks. It never prints, hashes, stores, or commits credential values.
|
| 8 |
|
| 9 |
## Required Values
|
| 10 |
|
| 11 |
+
- OK ProofFrame storage backend mode: `PROOFFRAME_STORAGE_BACKEND`; present `PROOFFRAME_STORAGE_BACKEND`; expected `b2`.
|
| 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 |
- MISSING Backblaze B2 key id: `B2_KEY_ID`; present none.
|
| 16 |
Remediation: Set B2_KEY_ID for a least-privilege application key.
|
| 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`.
|
|
|
|
| 22 |
|
| 23 |
## Optional Values
|
| 24 |
|
| 25 |
- UNSET B2 public base URL: `B2_PUBLIC_BASE_URL`; present none.
|
| 26 |
- UNSET B2 region for Genblaze sink: `B2_REGION`; present none.
|
| 27 |
+
- SET Genblaze aspect ratio: `GENBLAZE_ASPECT_RATIO`; present `GENBLAZE_ASPECT_RATIO`.
|
| 28 |
+
- SET Genblaze timeout seconds: `GENBLAZE_TIMEOUT_SECONDS`; present `GENBLAZE_TIMEOUT_SECONDS`.
|
| 29 |
|
| 30 |
## Next Commands
|
| 31 |
|
docs/assets/recording-assets.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
| 9 |
{
|
| 10 |
"path": "README.md",
|
| 11 |
"present": true,
|
| 12 |
-
"bytes":
|
| 13 |
},
|
| 14 |
{
|
| 15 |
"path": "docs/demo_script.md",
|
|
@@ -104,12 +104,12 @@
|
|
| 104 |
{
|
| 105 |
"path": "docs/assets/final-submission-control.json",
|
| 106 |
"present": true,
|
| 107 |
-
"bytes":
|
| 108 |
},
|
| 109 |
{
|
| 110 |
"path": "docs/assets/final-submission-control.md",
|
| 111 |
"present": true,
|
| 112 |
-
"bytes":
|
| 113 |
},
|
| 114 |
{
|
| 115 |
"path": "docs/assets/proofframe-local-ui-smoke.png",
|
|
|
|
| 9 |
{
|
| 10 |
"path": "README.md",
|
| 11 |
"present": true,
|
| 12 |
+
"bytes": 15285
|
| 13 |
},
|
| 14 |
{
|
| 15 |
"path": "docs/demo_script.md",
|
|
|
|
| 104 |
{
|
| 105 |
"path": "docs/assets/final-submission-control.json",
|
| 106 |
"present": true,
|
| 107 |
+
"bytes": 24404
|
| 108 |
},
|
| 109 |
{
|
| 110 |
"path": "docs/assets/final-submission-control.md",
|
| 111 |
"present": true,
|
| 112 |
+
"bytes": 7110
|
| 113 |
},
|
| 114 |
{
|
| 115 |
"path": "docs/assets/proofframe-local-ui-smoke.png",
|
docs/assets/submission-audit-report.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_audit.v1",
|
| 3 |
-
"created_at": "2026-06-
|
| 4 |
"mode": "pre_submit_audit_blocked",
|
| 5 |
"ok": false,
|
| 6 |
"root": ".",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_audit.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 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-
|
| 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-30T04:37:54Z`
|
| 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-30T04:
|
| 4 |
"project": "ProofFrame",
|
| 5 |
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
|
| 6 |
"public_demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
|
|
@@ -148,7 +148,7 @@
|
|
| 148 |
"present": true,
|
| 149 |
"schema": "proofframe.final_submission_control.v1",
|
| 150 |
"schema_ok": true,
|
| 151 |
-
"created_at": "2026-06-
|
| 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-30T04:
|
| 166 |
"ready": false,
|
| 167 |
"fresh_after_receipt": true,
|
| 168 |
"findings": [
|
|
@@ -176,7 +176,7 @@
|
|
| 176 |
"present": true,
|
| 177 |
"schema": "proofframe.final_video_publish_kit.v1",
|
| 178 |
"schema_ok": true,
|
| 179 |
-
"created_at": "2026-06-
|
| 180 |
"ready": false,
|
| 181 |
"fresh_after_receipt": true,
|
| 182 |
"findings": [
|
|
@@ -190,12 +190,12 @@
|
|
| 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": [
|
| 197 |
"Expected ok=True, got False.",
|
| 198 |
-
"Expected mode='submitted', got '
|
| 199 |
]
|
| 200 |
},
|
| 201 |
{
|
|
@@ -204,7 +204,7 @@
|
|
| 204 |
"present": true,
|
| 205 |
"schema": "proofframe.devpost_submission_preview.v1",
|
| 206 |
"schema_ok": true,
|
| 207 |
-
"created_at": "2026-06-
|
| 208 |
"ready": false,
|
| 209 |
"fresh_after_receipt": true,
|
| 210 |
"findings": [
|
|
@@ -218,7 +218,7 @@
|
|
| 218 |
"present": true,
|
| 219 |
"schema": "proofframe.judge_decision_brief.v1",
|
| 220 |
"schema_ok": true,
|
| 221 |
-
"created_at": "2026-06-
|
| 222 |
"ready": false,
|
| 223 |
"fresh_after_receipt": true,
|
| 224 |
"findings": [
|
|
@@ -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",
|
|
@@ -458,16 +458,16 @@
|
|
| 458 |
"path": "docs/assets/devpost-submission-preview.json",
|
| 459 |
"label": "Machine-readable Devpost preview",
|
| 460 |
"present": true,
|
| 461 |
-
"bytes":
|
| 462 |
-
"sha256": "
|
| 463 |
},
|
| 464 |
{
|
| 465 |
"id": "devpost_preview_md",
|
| 466 |
"path": "docs/assets/devpost-submission-preview.md",
|
| 467 |
"label": "Human-readable Devpost preview",
|
| 468 |
"present": true,
|
| 469 |
-
"bytes":
|
| 470 |
-
"sha256": "
|
| 471 |
},
|
| 472 |
{
|
| 473 |
"id": "devpost_submission_checklist_script",
|
|
@@ -531,7 +531,7 @@
|
|
| 531 |
"label": "Machine-readable judge crosswalk",
|
| 532 |
"present": true,
|
| 533 |
"bytes": 10219,
|
| 534 |
-
"sha256": "
|
| 535 |
},
|
| 536 |
{
|
| 537 |
"id": "judge_crosswalk_md",
|
|
@@ -539,7 +539,7 @@
|
|
| 539 |
"label": "Human-readable judge crosswalk",
|
| 540 |
"present": true,
|
| 541 |
"bytes": 6157,
|
| 542 |
-
"sha256": "
|
| 543 |
},
|
| 544 |
{
|
| 545 |
"id": "judge_decision_brief_script",
|
|
@@ -555,7 +555,7 @@
|
|
| 555 |
"label": "Machine-readable judge decision brief",
|
| 556 |
"present": true,
|
| 557 |
"bytes": 8137,
|
| 558 |
-
"sha256": "
|
| 559 |
},
|
| 560 |
{
|
| 561 |
"id": "judge_decision_brief_md",
|
|
@@ -563,7 +563,7 @@
|
|
| 563 |
"label": "Human-readable judge decision brief",
|
| 564 |
"present": true,
|
| 565 |
"bytes": 3835,
|
| 566 |
-
"sha256": "
|
| 567 |
},
|
| 568 |
{
|
| 569 |
"id": "judge_evidence_index_script",
|
|
@@ -579,7 +579,7 @@
|
|
| 579 |
"label": "Machine-readable judge evidence index",
|
| 580 |
"present": true,
|
| 581 |
"bytes": 10456,
|
| 582 |
-
"sha256": "
|
| 583 |
},
|
| 584 |
{
|
| 585 |
"id": "judge_evidence_index_md",
|
|
@@ -587,15 +587,15 @@
|
|
| 587 |
"label": "Human-readable judge evidence index",
|
| 588 |
"present": true,
|
| 589 |
"bytes": 4473,
|
| 590 |
-
"sha256": "
|
| 591 |
},
|
| 592 |
{
|
| 593 |
"id": "frontend_ui",
|
| 594 |
"path": "apps/web/index.html",
|
| 595 |
"label": "Browser proof ledger UI",
|
| 596 |
"present": true,
|
| 597 |
-
"bytes":
|
| 598 |
-
"sha256": "
|
| 599 |
},
|
| 600 |
{
|
| 601 |
"id": "demo_script",
|
|
@@ -675,7 +675,7 @@
|
|
| 675 |
"label": "Machine-readable final video publish kit",
|
| 676 |
"present": true,
|
| 677 |
"bytes": 5366,
|
| 678 |
-
"sha256": "
|
| 679 |
},
|
| 680 |
{
|
| 681 |
"id": "final_video_publish_kit_md",
|
|
@@ -683,7 +683,7 @@
|
|
| 683 |
"label": "Human-readable final video publish kit",
|
| 684 |
"present": true,
|
| 685 |
"bytes": 2727,
|
| 686 |
-
"sha256": "
|
| 687 |
},
|
| 688 |
{
|
| 689 |
"id": "public_video_check_script",
|
|
@@ -778,40 +778,40 @@
|
|
| 778 |
"path": "docs/assets/final-submission-control.json",
|
| 779 |
"label": "Machine-readable final control report",
|
| 780 |
"present": true,
|
| 781 |
-
"bytes":
|
| 782 |
-
"sha256": "
|
| 783 |
},
|
| 784 |
{
|
| 785 |
"id": "final_submission_control_md",
|
| 786 |
"path": "docs/assets/final-submission-control.md",
|
| 787 |
"label": "Human-readable final control report",
|
| 788 |
"present": true,
|
| 789 |
-
"bytes":
|
| 790 |
-
"sha256": "
|
| 791 |
},
|
| 792 |
{
|
| 793 |
"id": "final_closeout_status_script",
|
| 794 |
"path": "scripts/final_closeout_status.py",
|
| 795 |
"label": "No-secret final closeout status report",
|
| 796 |
"present": true,
|
| 797 |
-
"bytes":
|
| 798 |
-
"sha256": "
|
| 799 |
},
|
| 800 |
{
|
| 801 |
"id": "final_closeout_status_json",
|
| 802 |
"path": "docs/assets/final-closeout-status.json",
|
| 803 |
"label": "Machine-readable final closeout status",
|
| 804 |
"present": true,
|
| 805 |
-
"bytes":
|
| 806 |
-
"sha256": "
|
| 807 |
},
|
| 808 |
{
|
| 809 |
"id": "final_closeout_status_md",
|
| 810 |
"path": "docs/assets/final-closeout-status.md",
|
| 811 |
"label": "Human-readable final closeout status",
|
| 812 |
"present": true,
|
| 813 |
-
"bytes":
|
| 814 |
-
"sha256": "
|
| 815 |
},
|
| 816 |
{
|
| 817 |
"id": "final_operator_brief_script",
|
|
@@ -826,16 +826,16 @@
|
|
| 826 |
"path": "docs/assets/final-operator-brief.json",
|
| 827 |
"label": "Machine-readable final operator brief",
|
| 828 |
"present": true,
|
| 829 |
-
"bytes":
|
| 830 |
-
"sha256": "
|
| 831 |
},
|
| 832 |
{
|
| 833 |
"id": "final_operator_brief_md",
|
| 834 |
"path": "docs/assets/final-operator-brief.md",
|
| 835 |
"label": "Human-readable final operator brief",
|
| 836 |
"present": true,
|
| 837 |
-
"bytes":
|
| 838 |
-
"sha256": "
|
| 839 |
},
|
| 840 |
{
|
| 841 |
"id": "final_launch_plan_script",
|
|
@@ -850,16 +850,16 @@
|
|
| 850 |
"path": "docs/assets/final-launch-plan.json",
|
| 851 |
"label": "Machine-readable final launch plan",
|
| 852 |
"present": true,
|
| 853 |
-
"bytes":
|
| 854 |
-
"sha256": "
|
| 855 |
},
|
| 856 |
{
|
| 857 |
"id": "final_launch_plan_md",
|
| 858 |
"path": "docs/assets/final-launch-plan.md",
|
| 859 |
"label": "Human-readable final launch plan",
|
| 860 |
"present": true,
|
| 861 |
-
"bytes":
|
| 862 |
-
"sha256": "
|
| 863 |
},
|
| 864 |
{
|
| 865 |
"id": "final_rehearsal_script",
|
|
@@ -899,7 +899,7 @@
|
|
| 899 |
"label": "Machine-readable submission audit report",
|
| 900 |
"present": true,
|
| 901 |
"bytes": 5925,
|
| 902 |
-
"sha256": "
|
| 903 |
},
|
| 904 |
{
|
| 905 |
"id": "submission_audit_md",
|
|
@@ -907,7 +907,7 @@
|
|
| 907 |
"label": "Human-readable submission audit report",
|
| 908 |
"present": true,
|
| 909 |
"bytes": 4459,
|
| 910 |
-
"sha256": "
|
| 911 |
},
|
| 912 |
{
|
| 913 |
"id": "devpost_receipt_script",
|
|
@@ -1074,16 +1074,16 @@
|
|
| 1074 |
"path": "docs/assets/live-credential-handoff.json",
|
| 1075 |
"label": "Machine-readable live credential handoff",
|
| 1076 |
"present": true,
|
| 1077 |
-
"bytes":
|
| 1078 |
-
"sha256": "
|
| 1079 |
},
|
| 1080 |
{
|
| 1081 |
"id": "live_env_handoff_md",
|
| 1082 |
"path": "docs/assets/live-credential-handoff.md",
|
| 1083 |
"label": "Human-readable live credential handoff",
|
| 1084 |
"present": true,
|
| 1085 |
-
"bytes":
|
| 1086 |
-
"sha256": "
|
| 1087 |
},
|
| 1088 |
{
|
| 1089 |
"id": "final_env_wizard",
|
|
@@ -1163,7 +1163,7 @@
|
|
| 1163 |
"label": "Machine-readable recording asset report",
|
| 1164 |
"present": true,
|
| 1165 |
"bytes": 7826,
|
| 1166 |
-
"sha256": "
|
| 1167 |
},
|
| 1168 |
{
|
| 1169 |
"id": "recording_assets_md",
|
|
@@ -1194,8 +1194,8 @@
|
|
| 1194 |
"path": "tasks.json",
|
| 1195 |
"label": "Machine-readable task board",
|
| 1196 |
"present": true,
|
| 1197 |
-
"bytes":
|
| 1198 |
-
"sha256": "
|
| 1199 |
},
|
| 1200 |
{
|
| 1201 |
"id": "local_ui_smoke",
|
|
|
|
| 1 |
{
|
| 2 |
"schema": "proofframe.submission_bundle.v1",
|
| 3 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 4 |
"project": "ProofFrame",
|
| 5 |
"repository_url": "https://github.com/adjcjh777/backblaze-proofframe",
|
| 6 |
"public_demo_url": "https://adjcjh-backblaze-proofframe.hf.space/?judge=1",
|
|
|
|
| 148 |
"present": true,
|
| 149 |
"schema": "proofframe.final_submission_control.v1",
|
| 150 |
"schema_ok": true,
|
| 151 |
+
"created_at": "2026-06-30T04:35:43Z",
|
| 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-30T04:37:42Z",
|
| 166 |
"ready": false,
|
| 167 |
"fresh_after_receipt": true,
|
| 168 |
"findings": [
|
|
|
|
| 176 |
"present": true,
|
| 177 |
"schema": "proofframe.final_video_publish_kit.v1",
|
| 178 |
"schema_ok": true,
|
| 179 |
+
"created_at": "2026-06-30T04:35:02Z",
|
| 180 |
"ready": false,
|
| 181 |
"fresh_after_receipt": true,
|
| 182 |
"findings": [
|
|
|
|
| 190 |
"present": true,
|
| 191 |
"schema": "proofframe.final_launch_plan.v1",
|
| 192 |
"schema_ok": true,
|
| 193 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 194 |
"ready": false,
|
| 195 |
"fresh_after_receipt": true,
|
| 196 |
"findings": [
|
| 197 |
"Expected ok=True, got False.",
|
| 198 |
+
"Expected mode='submitted', got 'ready_for_credential_entry'."
|
| 199 |
]
|
| 200 |
},
|
| 201 |
{
|
|
|
|
| 204 |
"present": true,
|
| 205 |
"schema": "proofframe.devpost_submission_preview.v1",
|
| 206 |
"schema_ok": true,
|
| 207 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 208 |
"ready": false,
|
| 209 |
"fresh_after_receipt": true,
|
| 210 |
"findings": [
|
|
|
|
| 218 |
"present": true,
|
| 219 |
"schema": "proofframe.judge_decision_brief.v1",
|
| 220 |
"schema_ok": true,
|
| 221 |
+
"created_at": "2026-06-30T04:37:54Z",
|
| 222 |
"ready": false,
|
| 223 |
"fresh_after_receipt": true,
|
| 224 |
"findings": [
|
|
|
|
| 378 |
"path": "scripts/public_space_sync.py",
|
| 379 |
"label": "Public Hugging Face Space sync verifier",
|
| 380 |
"present": true,
|
| 381 |
+
"bytes": 84344,
|
| 382 |
+
"sha256": "80b323e5a2df2661c97d2023b1d30c7a0436f1dd2a6a8460645a1cce696dbd3c"
|
| 383 |
},
|
| 384 |
{
|
| 385 |
"id": "public_space_sync_json",
|
|
|
|
| 458 |
"path": "docs/assets/devpost-submission-preview.json",
|
| 459 |
"label": "Machine-readable Devpost preview",
|
| 460 |
"present": true,
|
| 461 |
+
"bytes": 11611,
|
| 462 |
+
"sha256": "39092feea8eb3ea846c8b67085c4b8e57679d6e656d1b6867c1d5a211b74a0b6"
|
| 463 |
},
|
| 464 |
{
|
| 465 |
"id": "devpost_preview_md",
|
| 466 |
"path": "docs/assets/devpost-submission-preview.md",
|
| 467 |
"label": "Human-readable Devpost preview",
|
| 468 |
"present": true,
|
| 469 |
+
"bytes": 5407,
|
| 470 |
+
"sha256": "760d948b804fbe97cc61f437643c3f0b23748b864ed112076d3c2ed910b8a9fe"
|
| 471 |
},
|
| 472 |
{
|
| 473 |
"id": "devpost_submission_checklist_script",
|
|
|
|
| 531 |
"label": "Machine-readable judge crosswalk",
|
| 532 |
"present": true,
|
| 533 |
"bytes": 10219,
|
| 534 |
+
"sha256": "cc69963305eb8fe13a5ca0c06bb07c2af58659768d89b17f11388192cd85a68c"
|
| 535 |
},
|
| 536 |
{
|
| 537 |
"id": "judge_crosswalk_md",
|
|
|
|
| 539 |
"label": "Human-readable judge crosswalk",
|
| 540 |
"present": true,
|
| 541 |
"bytes": 6157,
|
| 542 |
+
"sha256": "5e9e3a621839dd8787c9c2e7c7d7f2d8c99687fa0a8faa491989a6e418d4f575"
|
| 543 |
},
|
| 544 |
{
|
| 545 |
"id": "judge_decision_brief_script",
|
|
|
|
| 555 |
"label": "Machine-readable judge decision brief",
|
| 556 |
"present": true,
|
| 557 |
"bytes": 8137,
|
| 558 |
+
"sha256": "4a34a962a383da11b3d3a79f21cce707e717375c7772fff1d37b4000f5e2c2f7"
|
| 559 |
},
|
| 560 |
{
|
| 561 |
"id": "judge_decision_brief_md",
|
|
|
|
| 563 |
"label": "Human-readable judge decision brief",
|
| 564 |
"present": true,
|
| 565 |
"bytes": 3835,
|
| 566 |
+
"sha256": "cce02254cec75331bc7c0cd43912975db54c20df887d93a1204ad9e507a4e3b2"
|
| 567 |
},
|
| 568 |
{
|
| 569 |
"id": "judge_evidence_index_script",
|
|
|
|
| 579 |
"label": "Machine-readable judge evidence index",
|
| 580 |
"present": true,
|
| 581 |
"bytes": 10456,
|
| 582 |
+
"sha256": "850436cba02ad7c2ab3831fb6435950b6e032692fba9a14ad25d9c87bfdea41d"
|
| 583 |
},
|
| 584 |
{
|
| 585 |
"id": "judge_evidence_index_md",
|
|
|
|
| 587 |
"label": "Human-readable judge evidence index",
|
| 588 |
"present": true,
|
| 589 |
"bytes": 4473,
|
| 590 |
+
"sha256": "d6557b290286eb6268c93bf80cd029ae26e0faf1b50548c7edd80dd6e4c95fe4"
|
| 591 |
},
|
| 592 |
{
|
| 593 |
"id": "frontend_ui",
|
| 594 |
"path": "apps/web/index.html",
|
| 595 |
"label": "Browser proof ledger UI",
|
| 596 |
"present": true,
|
| 597 |
+
"bytes": 69407,
|
| 598 |
+
"sha256": "9259d14a3b671a977c2a81ec46771b05a84148ddfa8dd5b6bc1caf2e70cbf519"
|
| 599 |
},
|
| 600 |
{
|
| 601 |
"id": "demo_script",
|
|
|
|
| 675 |
"label": "Machine-readable final video publish kit",
|
| 676 |
"present": true,
|
| 677 |
"bytes": 5366,
|
| 678 |
+
"sha256": "bca2ad3796f4c0674ead31a52b584a1816563307dcd83dad862e9a734d580e6c"
|
| 679 |
},
|
| 680 |
{
|
| 681 |
"id": "final_video_publish_kit_md",
|
|
|
|
| 683 |
"label": "Human-readable final video publish kit",
|
| 684 |
"present": true,
|
| 685 |
"bytes": 2727,
|
| 686 |
+
"sha256": "411f69489c0e6e54dafc20bc34e67f9a8e75e2d30d2db0728dd3ba5c8dd5f10b"
|
| 687 |
},
|
| 688 |
{
|
| 689 |
"id": "public_video_check_script",
|
|
|
|
| 778 |
"path": "docs/assets/final-submission-control.json",
|
| 779 |
"label": "Machine-readable final control report",
|
| 780 |
"present": true,
|
| 781 |
+
"bytes": 24359,
|
| 782 |
+
"sha256": "063182a9b2c1515272ef53a0786b97ef2f5f66843625ee28e29062f4a6d0fc60"
|
| 783 |
},
|
| 784 |
{
|
| 785 |
"id": "final_submission_control_md",
|
| 786 |
"path": "docs/assets/final-submission-control.md",
|
| 787 |
"label": "Human-readable final control report",
|
| 788 |
"present": true,
|
| 789 |
+
"bytes": 7087,
|
| 790 |
+
"sha256": "6121f44a7e9661d330a8a402c16a1b1136f1b7b217fa11deb8f917cac68ac5f1"
|
| 791 |
},
|
| 792 |
{
|
| 793 |
"id": "final_closeout_status_script",
|
| 794 |
"path": "scripts/final_closeout_status.py",
|
| 795 |
"label": "No-secret final closeout status report",
|
| 796 |
"present": true,
|
| 797 |
+
"bytes": 19027,
|
| 798 |
+
"sha256": "fef94acd01449141de6c4961bdf75078489b58fbb70e05b9bf007e3d91a976d2"
|
| 799 |
},
|
| 800 |
{
|
| 801 |
"id": "final_closeout_status_json",
|
| 802 |
"path": "docs/assets/final-closeout-status.json",
|
| 803 |
"label": "Machine-readable final closeout status",
|
| 804 |
"present": true,
|
| 805 |
+
"bytes": 12592,
|
| 806 |
+
"sha256": "6c0b30d08c1e48cea375560226a3e2ecdaa0de494d7c22d23e39701e505bc0fe"
|
| 807 |
},
|
| 808 |
{
|
| 809 |
"id": "final_closeout_status_md",
|
| 810 |
"path": "docs/assets/final-closeout-status.md",
|
| 811 |
"label": "Human-readable final closeout status",
|
| 812 |
"present": true,
|
| 813 |
+
"bytes": 2467,
|
| 814 |
+
"sha256": "218ef848c482db5150c539b763a219b076ce5a3cb7a6ab939fa6b38a5afe4747"
|
| 815 |
},
|
| 816 |
{
|
| 817 |
"id": "final_operator_brief_script",
|
|
|
|
| 826 |
"path": "docs/assets/final-operator-brief.json",
|
| 827 |
"label": "Machine-readable final operator brief",
|
| 828 |
"present": true,
|
| 829 |
+
"bytes": 9547,
|
| 830 |
+
"sha256": "e04883b31eb3872bbef8292478c42d40281f04c4f73e72babca3086eeba3ebae"
|
| 831 |
},
|
| 832 |
{
|
| 833 |
"id": "final_operator_brief_md",
|
| 834 |
"path": "docs/assets/final-operator-brief.md",
|
| 835 |
"label": "Human-readable final operator brief",
|
| 836 |
"present": true,
|
| 837 |
+
"bytes": 3985,
|
| 838 |
+
"sha256": "4e035a35fea178fa2d5dbe9e52f3e8368844d0ba5d88b4ea2e4651c24c1f5394"
|
| 839 |
},
|
| 840 |
{
|
| 841 |
"id": "final_launch_plan_script",
|
|
|
|
| 850 |
"path": "docs/assets/final-launch-plan.json",
|
| 851 |
"label": "Machine-readable final launch plan",
|
| 852 |
"present": true,
|
| 853 |
+
"bytes": 5690,
|
| 854 |
+
"sha256": "c5713815ec24421ac78d80e1bde143ecff476b2694ad2ee1c55b89c858769915"
|
| 855 |
},
|
| 856 |
{
|
| 857 |
"id": "final_launch_plan_md",
|
| 858 |
"path": "docs/assets/final-launch-plan.md",
|
| 859 |
"label": "Human-readable final launch plan",
|
| 860 |
"present": true,
|
| 861 |
+
"bytes": 4596,
|
| 862 |
+
"sha256": "7747b3177be9562ad5c2568d812c55372564a4fbff17dd8e49e5d33e021aa810"
|
| 863 |
},
|
| 864 |
{
|
| 865 |
"id": "final_rehearsal_script",
|
|
|
|
| 899 |
"label": "Machine-readable submission audit report",
|
| 900 |
"present": true,
|
| 901 |
"bytes": 5925,
|
| 902 |
+
"sha256": "5bcad4983e67226d218d2348e25ec70af0a6d9722612b6732a2c602792660fa2"
|
| 903 |
},
|
| 904 |
{
|
| 905 |
"id": "submission_audit_md",
|
|
|
|
| 907 |
"label": "Human-readable submission audit report",
|
| 908 |
"present": true,
|
| 909 |
"bytes": 4459,
|
| 910 |
+
"sha256": "4b6e04e23f6593ee017eba0fef76d2093e10634caed8f2da5f106d282b248b2f"
|
| 911 |
},
|
| 912 |
{
|
| 913 |
"id": "devpost_receipt_script",
|
|
|
|
| 1074 |
"path": "docs/assets/live-credential-handoff.json",
|
| 1075 |
"label": "Machine-readable live credential handoff",
|
| 1076 |
"present": true,
|
| 1077 |
+
"bytes": 4548,
|
| 1078 |
+
"sha256": "08b0b09e257f62535a0800e00c91a5ffb8537c9fef9015b7a7f1be1acbe95eb8"
|
| 1079 |
},
|
| 1080 |
{
|
| 1081 |
"id": "live_env_handoff_md",
|
| 1082 |
"path": "docs/assets/live-credential-handoff.md",
|
| 1083 |
"label": "Human-readable live credential handoff",
|
| 1084 |
"present": true,
|
| 1085 |
+
"bytes": 2261,
|
| 1086 |
+
"sha256": "17742c751ea63313f1deccdd0c4260dddc539f190f4e0ff51db85e54bf9e590d"
|
| 1087 |
},
|
| 1088 |
{
|
| 1089 |
"id": "final_env_wizard",
|
|
|
|
| 1163 |
"label": "Machine-readable recording asset report",
|
| 1164 |
"present": true,
|
| 1165 |
"bytes": 7826,
|
| 1166 |
+
"sha256": "568ec3fed5266f57bef28881d2e2e8af8218a865a98dc10efbf0fa853a91c375"
|
| 1167 |
},
|
| 1168 |
{
|
| 1169 |
"id": "recording_assets_md",
|
|
|
|
| 1194 |
"path": "tasks.json",
|
| 1195 |
"label": "Machine-readable task board",
|
| 1196 |
"present": true,
|
| 1197 |
+
"bytes": 67156,
|
| 1198 |
+
"sha256": "3947c60f73ca33cd828ab8c9cd2e78bbf2b25a51bdde10a4ab8bfa8552575cbc"
|
| 1199 |
},
|
| 1200 |
{
|
| 1201 |
"id": "local_ui_smoke",
|
docs/assets/submission-bundle-manifest.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# ProofFrame Submission Bundle
|
| 2 |
|
| 3 |
-
Created: `2026-06-30T04:
|
| 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`
|
|
@@ -43,7 +43,7 @@ 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` (19087 bytes, sha256 `13a2b0ef06e5cc71...`) - Machine-readable public Space sync report
|
| 48 |
- `docs/assets/public-space-sync-report.md` (8038 bytes, sha256 `0472c57e5efe9f18...`) - Human-readable public Space sync report
|
| 49 |
- `scripts/public_demo_screenshot.py` (8926 bytes, sha256 `3eb5b0a003e383dd...`) - Public judge-mode screenshot verifier
|
|
@@ -53,8 +53,8 @@ Final gate ready: `false`
|
|
| 53 |
- `docs/assets/devpost-form-kit.json` (12483 bytes, sha256 `96196519c036e0aa...`) - Machine-readable Devpost form kit
|
| 54 |
- `docs/assets/devpost-form-kit.md` (7496 bytes, sha256 `f6beeb3fe9e7f94d...`) - Human-readable Devpost form kit
|
| 55 |
- `scripts/devpost_submission_preview.py` (17329 bytes, sha256 `28ed8703ca6479fc...`) - One-page claim-safe Devpost preview
|
| 56 |
-
- `docs/assets/devpost-submission-preview.json` (
|
| 57 |
-
- `docs/assets/devpost-submission-preview.md` (
|
| 58 |
- `scripts/devpost_submission_checklist.py` (11252 bytes, sha256 `78b8e1b70da428fd...`) - No-secret final Devpost web submission checklist
|
| 59 |
- `docs/assets/devpost-submission-checklist.json` (16428 bytes, sha256 `bea72137b1e7df2a...`) - Machine-readable final Devpost submission checklist
|
| 60 |
- `docs/assets/devpost-submission-checklist.md` (9319 bytes, sha256 `e45546c7334e78e3...`) - Human-readable final Devpost submission checklist
|
|
@@ -62,15 +62,15 @@ Final gate ready: `false`
|
|
| 62 |
- `docs/assets/judge-brief.json` (3734 bytes, sha256 `59bdfd6a30e05d49...`) - Machine-readable judge brief
|
| 63 |
- `docs/assets/judge-brief.md` (3000 bytes, sha256 `b487a7644c255c45...`) - Human-readable judge brief
|
| 64 |
- `scripts/judge_crosswalk.py` (17642 bytes, sha256 `d9153174e330fd53...`) - Official criteria to evidence crosswalk
|
| 65 |
-
- `docs/assets/judge-crosswalk.json` (10219 bytes, sha256 `
|
| 66 |
-
- `docs/assets/judge-crosswalk.md` (6157 bytes, sha256 `
|
| 67 |
- `scripts/judge_decision_brief.py` (14954 bytes, sha256 `8505d14ada46c7ac...`) - Public-safe judge decision brief builder
|
| 68 |
-
- `docs/assets/judge-decision-brief.json` (8137 bytes, sha256 `
|
| 69 |
-
- `docs/assets/judge-decision-brief.md` (3835 bytes, sha256 `
|
| 70 |
- `scripts/judge_evidence_index.py` (13831 bytes, sha256 `efbf5dee17eab7f8...`) - Public-safe judge evidence index builder
|
| 71 |
-
- `docs/assets/judge-evidence-index.json` (10456 bytes, sha256 `
|
| 72 |
-
- `docs/assets/judge-evidence-index.md` (4473 bytes, sha256 `
|
| 73 |
-
- `apps/web/index.html` (
|
| 74 |
- `docs/demo_script.md` (5856 bytes, sha256 `fbabf38ff87cca9b...`) - Video shot list and narration
|
| 75 |
- `scripts/demo_storyboard.py` (11025 bytes, sha256 `e5d75956d6d4a20b...`) - Machine-checked demo video storyboard
|
| 76 |
- `docs/assets/demo-storyboard.json` (4514 bytes, sha256 `192f9dc7f55eaaa1...`) - Machine-readable demo storyboard
|
|
@@ -80,8 +80,8 @@ Final gate ready: `false`
|
|
| 80 |
- `docs/assets/demo-video-draft.md` (1562 bytes, sha256 `1b041908b73020d6...`) - Human-readable demo video draft report
|
| 81 |
- `docs/assets/proofframe-demo-draft.mp4` (747727 bytes, sha256 `7c943ee37b96a865...`) - Public-safe mock demo video draft
|
| 82 |
- `scripts/final_video_publish_kit.py` (12256 bytes, sha256 `651a73d338ae1f4b...`) - Final public video upload copy and gate kit
|
| 83 |
-
- `docs/assets/final-video-publish-kit.json` (5366 bytes, sha256 `
|
| 84 |
-
- `docs/assets/final-video-publish-kit.md` (2727 bytes, sha256 `
|
| 85 |
- `scripts/public_video_check.py` (14919 bytes, sha256 `ca4e127967c6b81d...`) - Public demo video URL verifier
|
| 86 |
- `docs/assets/public-video-check.json` (2977 bytes, sha256 `63b844b631ff61b8...`) - Machine-readable public video check
|
| 87 |
- `docs/assets/public-video-check.md` (1701 bytes, sha256 `990cd0e1a0bd4814...`) - Human-readable public video check
|
|
@@ -93,23 +93,23 @@ Final gate ready: `false`
|
|
| 93 |
- `docs/assets/award-readiness-report.json` (11377 bytes, sha256 `66417f6e0c2a15d9...`) - Machine-readable award readiness report
|
| 94 |
- `docs/assets/award-readiness-report.md` (4390 bytes, sha256 `5be57ca5d9cab53d...`) - Human-readable award readiness report
|
| 95 |
- `scripts/final_submission_control.py` (32644 bytes, sha256 `6514cbdf2bfe8998...`) - Final submission control tower
|
| 96 |
-
- `docs/assets/final-submission-control.json` (
|
| 97 |
-
- `docs/assets/final-submission-control.md` (
|
| 98 |
-
- `scripts/final_closeout_status.py` (
|
| 99 |
-
- `docs/assets/final-closeout-status.json` (
|
| 100 |
-
- `docs/assets/final-closeout-status.md` (
|
| 101 |
- `scripts/final_operator_brief.py` (15305 bytes, sha256 `06367d7eddaf62ef...`) - No-secret final operator brief
|
| 102 |
-
- `docs/assets/final-operator-brief.json` (
|
| 103 |
-
- `docs/assets/final-operator-brief.md` (
|
| 104 |
- `scripts/final_launch_plan.py` (17492 bytes, sha256 `dc2766d5f424c1ac...`) - No-secret final launch phase plan
|
| 105 |
-
- `docs/assets/final-launch-plan.json` (
|
| 106 |
-
- `docs/assets/final-launch-plan.md` (
|
| 107 |
- `scripts/final_rehearsal.py` (18265 bytes, sha256 `7b0b844fcce35158...`) - No-secret final submission rehearsal checklist
|
| 108 |
- `docs/assets/final-rehearsal-checklist.json` (17425 bytes, sha256 `38baeca09639120d...`) - Machine-readable final rehearsal checklist
|
| 109 |
- `docs/assets/final-rehearsal-checklist.md` (7493 bytes, sha256 `25d7183644dc714b...`) - Human-readable final rehearsal checklist
|
| 110 |
- `scripts/submission_audit.py` (20684 bytes, sha256 `0f9a378c203bf7b6...`) - Pre-submit audit gate
|
| 111 |
-
- `docs/assets/submission-audit-report.json` (5925 bytes, sha256 `
|
| 112 |
-
- `docs/assets/submission-audit-report.md` (4459 bytes, sha256 `
|
| 113 |
- `scripts/devpost_submission_receipt.py` (9209 bytes, sha256 `76c55e8ff1aeaa52...`) - Public-safe Devpost submission receipt generator
|
| 114 |
- `docs/assets/devpost-submission-receipt.json` (1298 bytes, sha256 `bf646cf968665c8c...`) - Machine-readable Devpost submission receipt
|
| 115 |
- `docs/assets/devpost-submission-receipt.md` (996 bytes, sha256 `af2fa18349d5c017...`) - Human-readable Devpost submission receipt
|
|
@@ -130,8 +130,8 @@ Final gate ready: `false`
|
|
| 130 |
- `docs/assets/genblaze-contract-report.md` (3166 bytes, sha256 `6bb4bdb7c7a39915...`) - Human-readable Genblaze SDK contract report
|
| 131 |
- `scripts/run_b2_live_proof.py` (5781 bytes, sha256 `9678c0292a70cc0b...`) - One-command B2 storage proof runner
|
| 132 |
- `scripts/live_env_handoff.py` (9451 bytes, sha256 `39c8de0b58c132c3...`) - Redacted live credential handoff gate
|
| 133 |
-
- `docs/assets/live-credential-handoff.json` (
|
| 134 |
-
- `docs/assets/live-credential-handoff.md` (
|
| 135 |
- `scripts/final_env_wizard.py` (16314 bytes, sha256 `a22d696bc534a61f...`) - Local final credential env wizard
|
| 136 |
- `scripts/post_credential_live_proof.py` (17108 bytes, sha256 `aec873007c4cb809...`) - Post-credential live proof sequence runner
|
| 137 |
- `docs/assets/post-credential-live-proof-plan.json` (9127 bytes, sha256 `c98417e979fac562...`) - Machine-readable post-credential live proof plan
|
|
@@ -141,11 +141,11 @@ Final gate ready: `false`
|
|
| 141 |
- `docs/assets/demo-readiness-report.json` (3893 bytes, sha256 `ebd13ea05535dba2...`) - Machine-readable demo readiness report
|
| 142 |
- `docs/assets/demo-readiness-report.md` (1768 bytes, sha256 `39fcc67011a5eaa9...`) - Human-readable demo readiness report
|
| 143 |
- `scripts/recording_assets.py` (18340 bytes, sha256 `8c15f362298fa92c...`) - Public-safe recording asset gate
|
| 144 |
-
- `docs/assets/recording-assets.json` (7826 bytes, sha256 `
|
| 145 |
- `docs/assets/recording-assets.md` (3867 bytes, sha256 `e3d2ef5dd86dfe33...`) - Human-readable recording asset report
|
| 146 |
- `scripts/run_final_live_proof.py` (5814 bytes, sha256 `c6b9dc2fc9d7c670...`) - One-command final B2 plus Genblaze proof runner
|
| 147 |
- `docs/submission.md` (4000 bytes, sha256 `b702417f1345fe39...`) - Registration and submission plan
|
| 148 |
-
- `tasks.json` (
|
| 149 |
- `docs/assets/proofframe-local-ui-smoke.png` (364927 bytes, sha256 `cca671ad38bda4dc...`) - Local UI screenshot
|
| 150 |
- `docs/assets/proofframe-review-console-smoke.png` (343618 bytes, sha256 `30620a33e3c7ab28...`) - Review console screenshot
|
| 151 |
- `docs/assets/proofframe-hf-public-smoke.png` (741074 bytes, sha256 `5d6f68f7a4a2fdee...`) - Public mock demo screenshot
|
|
|
|
| 1 |
# ProofFrame Submission Bundle
|
| 2 |
|
| 3 |
+
Created: `2026-06-30T04:37:54Z`
|
| 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`
|
|
|
|
| 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` (84344 bytes, sha256 `80b323e5a2df2661...`) - Public Hugging Face Space sync verifier
|
| 47 |
- `docs/assets/public-space-sync-report.json` (19087 bytes, sha256 `13a2b0ef06e5cc71...`) - Machine-readable public Space sync report
|
| 48 |
- `docs/assets/public-space-sync-report.md` (8038 bytes, sha256 `0472c57e5efe9f18...`) - Human-readable public Space sync report
|
| 49 |
- `scripts/public_demo_screenshot.py` (8926 bytes, sha256 `3eb5b0a003e383dd...`) - Public judge-mode screenshot verifier
|
|
|
|
| 53 |
- `docs/assets/devpost-form-kit.json` (12483 bytes, sha256 `96196519c036e0aa...`) - Machine-readable Devpost form kit
|
| 54 |
- `docs/assets/devpost-form-kit.md` (7496 bytes, sha256 `f6beeb3fe9e7f94d...`) - Human-readable Devpost form kit
|
| 55 |
- `scripts/devpost_submission_preview.py` (17329 bytes, sha256 `28ed8703ca6479fc...`) - One-page claim-safe Devpost preview
|
| 56 |
+
- `docs/assets/devpost-submission-preview.json` (11611 bytes, sha256 `39092feea8eb3ea8...`) - Machine-readable Devpost preview
|
| 57 |
+
- `docs/assets/devpost-submission-preview.md` (5407 bytes, sha256 `760d948b804fbe97...`) - Human-readable Devpost preview
|
| 58 |
- `scripts/devpost_submission_checklist.py` (11252 bytes, sha256 `78b8e1b70da428fd...`) - No-secret final Devpost web submission checklist
|
| 59 |
- `docs/assets/devpost-submission-checklist.json` (16428 bytes, sha256 `bea72137b1e7df2a...`) - Machine-readable final Devpost submission checklist
|
| 60 |
- `docs/assets/devpost-submission-checklist.md` (9319 bytes, sha256 `e45546c7334e78e3...`) - Human-readable final Devpost submission checklist
|
|
|
|
| 62 |
- `docs/assets/judge-brief.json` (3734 bytes, sha256 `59bdfd6a30e05d49...`) - Machine-readable judge brief
|
| 63 |
- `docs/assets/judge-brief.md` (3000 bytes, sha256 `b487a7644c255c45...`) - Human-readable judge brief
|
| 64 |
- `scripts/judge_crosswalk.py` (17642 bytes, sha256 `d9153174e330fd53...`) - Official criteria to evidence crosswalk
|
| 65 |
+
- `docs/assets/judge-crosswalk.json` (10219 bytes, sha256 `cc69963305eb8fe1...`) - Machine-readable judge crosswalk
|
| 66 |
+
- `docs/assets/judge-crosswalk.md` (6157 bytes, sha256 `5e9e3a621839dd87...`) - Human-readable judge crosswalk
|
| 67 |
- `scripts/judge_decision_brief.py` (14954 bytes, sha256 `8505d14ada46c7ac...`) - Public-safe judge decision brief builder
|
| 68 |
+
- `docs/assets/judge-decision-brief.json` (8137 bytes, sha256 `4a34a962a383da11...`) - Machine-readable judge decision brief
|
| 69 |
+
- `docs/assets/judge-decision-brief.md` (3835 bytes, sha256 `cce02254cec75331...`) - Human-readable judge decision brief
|
| 70 |
- `scripts/judge_evidence_index.py` (13831 bytes, sha256 `efbf5dee17eab7f8...`) - Public-safe judge evidence index builder
|
| 71 |
+
- `docs/assets/judge-evidence-index.json` (10456 bytes, sha256 `850436cba02ad7c2...`) - Machine-readable judge evidence index
|
| 72 |
+
- `docs/assets/judge-evidence-index.md` (4473 bytes, sha256 `d6557b290286eb62...`) - Human-readable judge evidence index
|
| 73 |
+
- `apps/web/index.html` (69407 bytes, sha256 `9259d14a3b671a97...`) - Browser proof ledger UI
|
| 74 |
- `docs/demo_script.md` (5856 bytes, sha256 `fbabf38ff87cca9b...`) - Video shot list and narration
|
| 75 |
- `scripts/demo_storyboard.py` (11025 bytes, sha256 `e5d75956d6d4a20b...`) - Machine-checked demo video storyboard
|
| 76 |
- `docs/assets/demo-storyboard.json` (4514 bytes, sha256 `192f9dc7f55eaaa1...`) - Machine-readable demo storyboard
|
|
|
|
| 80 |
- `docs/assets/demo-video-draft.md` (1562 bytes, sha256 `1b041908b73020d6...`) - Human-readable demo video draft report
|
| 81 |
- `docs/assets/proofframe-demo-draft.mp4` (747727 bytes, sha256 `7c943ee37b96a865...`) - Public-safe mock demo video draft
|
| 82 |
- `scripts/final_video_publish_kit.py` (12256 bytes, sha256 `651a73d338ae1f4b...`) - Final public video upload copy and gate kit
|
| 83 |
+
- `docs/assets/final-video-publish-kit.json` (5366 bytes, sha256 `bca2ad3796f4c067...`) - Machine-readable final video publish kit
|
| 84 |
+
- `docs/assets/final-video-publish-kit.md` (2727 bytes, sha256 `411f69489c0e6e54...`) - Human-readable final video publish kit
|
| 85 |
- `scripts/public_video_check.py` (14919 bytes, sha256 `ca4e127967c6b81d...`) - Public demo video URL verifier
|
| 86 |
- `docs/assets/public-video-check.json` (2977 bytes, sha256 `63b844b631ff61b8...`) - Machine-readable public video check
|
| 87 |
- `docs/assets/public-video-check.md` (1701 bytes, sha256 `990cd0e1a0bd4814...`) - Human-readable public video check
|
|
|
|
| 93 |
- `docs/assets/award-readiness-report.json` (11377 bytes, sha256 `66417f6e0c2a15d9...`) - Machine-readable award readiness report
|
| 94 |
- `docs/assets/award-readiness-report.md` (4390 bytes, sha256 `5be57ca5d9cab53d...`) - Human-readable award readiness report
|
| 95 |
- `scripts/final_submission_control.py` (32644 bytes, sha256 `6514cbdf2bfe8998...`) - Final submission control tower
|
| 96 |
+
- `docs/assets/final-submission-control.json` (24359 bytes, sha256 `063182a9b2c15152...`) - Machine-readable final control report
|
| 97 |
+
- `docs/assets/final-submission-control.md` (7087 bytes, sha256 `6121f44a7e9661d3...`) - Human-readable final control report
|
| 98 |
+
- `scripts/final_closeout_status.py` (19027 bytes, sha256 `fef94acd01449141...`) - No-secret final closeout status report
|
| 99 |
+
- `docs/assets/final-closeout-status.json` (12592 bytes, sha256 `6c0b30d08c1e48ce...`) - Machine-readable final closeout status
|
| 100 |
+
- `docs/assets/final-closeout-status.md` (2467 bytes, sha256 `218ef848c482db51...`) - Human-readable final closeout status
|
| 101 |
- `scripts/final_operator_brief.py` (15305 bytes, sha256 `06367d7eddaf62ef...`) - No-secret final operator brief
|
| 102 |
+
- `docs/assets/final-operator-brief.json` (9547 bytes, sha256 `e04883b31eb3872b...`) - Machine-readable final operator brief
|
| 103 |
+
- `docs/assets/final-operator-brief.md` (3985 bytes, sha256 `4e035a35fea178fa...`) - Human-readable final operator brief
|
| 104 |
- `scripts/final_launch_plan.py` (17492 bytes, sha256 `dc2766d5f424c1ac...`) - No-secret final launch phase plan
|
| 105 |
+
- `docs/assets/final-launch-plan.json` (5690 bytes, sha256 `c5713815ec24421a...`) - Machine-readable final launch plan
|
| 106 |
+
- `docs/assets/final-launch-plan.md` (4596 bytes, sha256 `7747b3177be9562a...`) - Human-readable final launch plan
|
| 107 |
- `scripts/final_rehearsal.py` (18265 bytes, sha256 `7b0b844fcce35158...`) - No-secret final submission rehearsal checklist
|
| 108 |
- `docs/assets/final-rehearsal-checklist.json` (17425 bytes, sha256 `38baeca09639120d...`) - Machine-readable final rehearsal checklist
|
| 109 |
- `docs/assets/final-rehearsal-checklist.md` (7493 bytes, sha256 `25d7183644dc714b...`) - Human-readable final rehearsal checklist
|
| 110 |
- `scripts/submission_audit.py` (20684 bytes, sha256 `0f9a378c203bf7b6...`) - Pre-submit audit gate
|
| 111 |
+
- `docs/assets/submission-audit-report.json` (5925 bytes, sha256 `5bcad4983e67226d...`) - Machine-readable submission audit report
|
| 112 |
+
- `docs/assets/submission-audit-report.md` (4459 bytes, sha256 `4b6e04e23f6593ee...`) - Human-readable submission audit report
|
| 113 |
- `scripts/devpost_submission_receipt.py` (9209 bytes, sha256 `76c55e8ff1aeaa52...`) - Public-safe Devpost submission receipt generator
|
| 114 |
- `docs/assets/devpost-submission-receipt.json` (1298 bytes, sha256 `bf646cf968665c8c...`) - Machine-readable Devpost submission receipt
|
| 115 |
- `docs/assets/devpost-submission-receipt.md` (996 bytes, sha256 `af2fa18349d5c017...`) - Human-readable Devpost submission receipt
|
|
|
|
| 130 |
- `docs/assets/genblaze-contract-report.md` (3166 bytes, sha256 `6bb4bdb7c7a39915...`) - Human-readable Genblaze SDK contract report
|
| 131 |
- `scripts/run_b2_live_proof.py` (5781 bytes, sha256 `9678c0292a70cc0b...`) - One-command B2 storage proof runner
|
| 132 |
- `scripts/live_env_handoff.py` (9451 bytes, sha256 `39c8de0b58c132c3...`) - Redacted live credential handoff gate
|
| 133 |
+
- `docs/assets/live-credential-handoff.json` (4548 bytes, sha256 `08b0b09e257f6253...`) - Machine-readable live credential handoff
|
| 134 |
+
- `docs/assets/live-credential-handoff.md` (2261 bytes, sha256 `17742c751ea63313...`) - Human-readable live credential handoff
|
| 135 |
- `scripts/final_env_wizard.py` (16314 bytes, sha256 `a22d696bc534a61f...`) - Local final credential env wizard
|
| 136 |
- `scripts/post_credential_live_proof.py` (17108 bytes, sha256 `aec873007c4cb809...`) - Post-credential live proof sequence runner
|
| 137 |
- `docs/assets/post-credential-live-proof-plan.json` (9127 bytes, sha256 `c98417e979fac562...`) - Machine-readable post-credential live proof plan
|
|
|
|
| 141 |
- `docs/assets/demo-readiness-report.json` (3893 bytes, sha256 `ebd13ea05535dba2...`) - Machine-readable demo readiness report
|
| 142 |
- `docs/assets/demo-readiness-report.md` (1768 bytes, sha256 `39fcc67011a5eaa9...`) - Human-readable demo readiness report
|
| 143 |
- `scripts/recording_assets.py` (18340 bytes, sha256 `8c15f362298fa92c...`) - Public-safe recording asset gate
|
| 144 |
+
- `docs/assets/recording-assets.json` (7826 bytes, sha256 `568ec3fed5266f57...`) - Machine-readable recording asset report
|
| 145 |
- `docs/assets/recording-assets.md` (3867 bytes, sha256 `e3d2ef5dd86dfe33...`) - Human-readable recording asset report
|
| 146 |
- `scripts/run_final_live_proof.py` (5814 bytes, sha256 `c6b9dc2fc9d7c670...`) - One-command final B2 plus Genblaze proof runner
|
| 147 |
- `docs/submission.md` (4000 bytes, sha256 `b702417f1345fe39...`) - Registration and submission plan
|
| 148 |
+
- `tasks.json` (67156 bytes, sha256 `3947c60f73ca33cd...`) - Machine-readable task board
|
| 149 |
- `docs/assets/proofframe-local-ui-smoke.png` (364927 bytes, sha256 `cca671ad38bda4dc...`) - Local UI screenshot
|
| 150 |
- `docs/assets/proofframe-review-console-smoke.png` (343618 bytes, sha256 `30620a33e3c7ab28...`) - Review console screenshot
|
| 151 |
- `docs/assets/proofframe-hf-public-smoke.png` (741074 bytes, sha256 `5d6f68f7a4a2fdee...`) - Public mock demo screenshot
|
docs/todo.md
CHANGED
|
@@ -48,3 +48,4 @@ python3 scripts/task.py doing T020 --note "Live B2 proof in progress"
|
|
| 48 |
| T089 | Review findings hardened: real live credential handoff output, T020/T021 done checks, public raw closeout validation, and strict bundle closeout freshness are covered. |
|
| 49 |
| T090 | Final closeout status is now available through `/api/judge/final-closeout`, a judge-mode UI panel/link, API smoke, and public Space HTML marker validation. |
|
| 50 |
| T091 | Final closeout public sync now accepts both pre-final fail-closed and final-ready all-green states, validates the API against raw evidence, and keeps the UI next command visible. |
|
|
|
|
|
|
| 48 |
| T089 | Review findings hardened: real live credential handoff output, T020/T021 done checks, public raw closeout validation, and strict bundle closeout freshness are covered. |
|
| 49 |
| T090 | Final closeout status is now available through `/api/judge/final-closeout`, a judge-mode UI panel/link, API smoke, and public Space HTML marker validation. |
|
| 50 |
| T091 | Final closeout public sync now accepts both pre-final fail-closed and final-ready all-green states, validates the API against raw evidence, and keeps the UI next command visible. |
|
| 51 |
+
| T092 | No-secret live credential handoff regenerated from `.env.final.local`; remaining local credential blockers are narrowed to `b2_key_id`, `b2_application_key`, and `genblaze_api_key`. |
|
scripts/final_closeout_status.py
CHANGED
|
@@ -95,6 +95,7 @@ def report_status(root: Path, report_id: str, relative_path: str, schema: str) -
|
|
| 95 |
"public_video_ready": report.get("public_video_ready"),
|
| 96 |
"project_url": report.get("project_url"),
|
| 97 |
"missing_artifacts": report.get("missing_artifacts"),
|
|
|
|
| 98 |
"findings_count": len(report.get("findings") or []),
|
| 99 |
}
|
| 100 |
|
|
@@ -119,6 +120,12 @@ def credential_handoff_ready(report: dict[str, Any]) -> bool:
|
|
| 119 |
return bool(report.get("ok") is True and report.get("mode") == "live_env_ready")
|
| 120 |
|
| 121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
def submission_bundle_inputs_ready(report: dict[str, Any]) -> bool:
|
| 123 |
return bool(
|
| 124 |
report["present"]
|
|
@@ -182,7 +189,7 @@ def build_report(root: Path = ROOT) -> dict[str, Any]:
|
|
| 182 |
"credential_handoff",
|
| 183 |
"Live credential handoff is ready",
|
| 184 |
credential_handoff_ready(credential_handoff),
|
| 185 |
-
|
| 186 |
credential_handoff["path"],
|
| 187 |
),
|
| 188 |
gate_item(
|
|
|
|
| 95 |
"public_video_ready": report.get("public_video_ready"),
|
| 96 |
"project_url": report.get("project_url"),
|
| 97 |
"missing_artifacts": report.get("missing_artifacts"),
|
| 98 |
+
"missing_ids": report.get("missing_ids"),
|
| 99 |
"findings_count": len(report.get("findings") or []),
|
| 100 |
}
|
| 101 |
|
|
|
|
| 120 |
return bool(report.get("ok") is True and report.get("mode") == "live_env_ready")
|
| 121 |
|
| 122 |
|
| 123 |
+
def credential_handoff_detail(report: dict[str, Any]) -> str:
|
| 124 |
+
missing = [str(item) for item in report.get("missing_ids", []) if item]
|
| 125 |
+
suffix = f"; missing ids: {', '.join(missing)}" if missing else ""
|
| 126 |
+
return f"Credential handoff mode is {report.get('mode')}{suffix}."
|
| 127 |
+
|
| 128 |
+
|
| 129 |
def submission_bundle_inputs_ready(report: dict[str, Any]) -> bool:
|
| 130 |
return bool(
|
| 131 |
report["present"]
|
|
|
|
| 189 |
"credential_handoff",
|
| 190 |
"Live credential handoff is ready",
|
| 191 |
credential_handoff_ready(credential_handoff),
|
| 192 |
+
credential_handoff_detail(credential_handoff),
|
| 193 |
credential_handoff["path"],
|
| 194 |
),
|
| 195 |
gate_item(
|
tasks.json
CHANGED
|
@@ -200,6 +200,15 @@
|
|
| 200 |
"done_criteria": "",
|
| 201 |
"notes": "Addressed independent reviewer finding: public Space sync now accepts both pre-final fail-closed and final_closeout_ready all-green status, validates /api/judge/final-closeout against raw closeout evidence, API smoke enforces required gates/secret policy, and the UI always shows the next command."
|
| 202 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 203 |
{
|
| 204 |
"id": "T030",
|
| 205 |
"title": "Run browser smoke test",
|
|
|
|
| 200 |
"done_criteria": "",
|
| 201 |
"notes": "Addressed independent reviewer finding: public Space sync now accepts both pre-final fail-closed and final_closeout_ready all-green status, validates /api/judge/final-closeout against raw closeout evidence, API smoke enforces required gates/secret policy, and the UI always shows the next command."
|
| 202 |
},
|
| 203 |
+
{
|
| 204 |
+
"id": "T092",
|
| 205 |
+
"title": "Refresh no-secret live credential handoff from local env",
|
| 206 |
+
"phase": "P4 Submit",
|
| 207 |
+
"owner": "controller",
|
| 208 |
+
"status": "done",
|
| 209 |
+
"done_criteria": "",
|
| 210 |
+
"notes": "Generated docs/assets/live-credential-handoff.* from .env.final.local without printing values; non-secret B2 bucket/endpoint and backend modes are present, and remaining secret blockers are narrowed to b2_key_id, b2_application_key, and genblaze_api_key."
|
| 211 |
+
},
|
| 212 |
{
|
| 213 |
"id": "T030",
|
| 214 |
"title": "Run browser smoke test",
|
tests/test_final_closeout_status.py
CHANGED
|
@@ -178,6 +178,8 @@ def test_closeout_status_waits_for_credentials_in_pre_live_state(tmp_path):
|
|
| 178 |
assert report["mode"] == "waiting_for_credentials"
|
| 179 |
assert report["phase"] == "credential_entry"
|
| 180 |
assert ".env.final.local" in report["next_command"]
|
|
|
|
|
|
|
| 181 |
|
| 182 |
|
| 183 |
def test_closeout_status_can_be_final_ready(tmp_path):
|
|
|
|
| 178 |
assert report["mode"] == "waiting_for_credentials"
|
| 179 |
assert report["phase"] == "credential_entry"
|
| 180 |
assert ".env.final.local" in report["next_command"]
|
| 181 |
+
gates = {gate["id"]: gate for gate in report["gates"]}
|
| 182 |
+
assert "missing ids: storage_backend_mode, generation_backend_mode" in gates["credential_handoff"]["detail"]
|
| 183 |
|
| 184 |
|
| 185 |
def test_closeout_status_can_be_final_ready(tmp_path):
|