File size: 73,132 Bytes
7dedc8d
 
74ee21a
7dedc8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4fc704d
7dedc8d
74ee21a
7dedc8d
 
 
 
 
 
74ee21a
7dedc8d
74ee21a
7dedc8d
fc9f64b
 
 
 
 
 
 
 
 
6b7b99b
 
 
 
 
 
 
 
 
7098eeb
 
 
 
 
 
 
 
 
25cdc14
 
 
 
 
 
 
 
 
4e3dd84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72e4ba4
 
 
 
 
 
 
 
 
931c763
 
 
 
 
 
 
 
 
1ec221d
 
 
 
 
 
 
 
 
d598e49
 
 
 
 
 
 
 
 
0c594ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eab3ee6
 
 
 
 
 
 
a7f491e
 
 
 
 
 
 
 
 
 
eab3ee6
c775d83
 
 
 
 
 
 
144b65c
 
 
 
 
 
 
 
 
 
c775d83
54d801e
 
 
 
 
 
 
 
 
7dedc8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f74bce1
7dedc8d
 
 
f74bce1
 
7dedc8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ea6431e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c530a1d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60570dc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7dedc8d
 
 
 
 
 
 
 
 
 
 
 
 
 
74ee21a
7dedc8d
74ee21a
7dedc8d
 
 
 
 
 
74ee21a
7dedc8d
74ee21a
7dedc8d
60570dc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7dedc8d
 
 
 
 
74ee21a
7dedc8d
74ee21a
60570dc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e71d73f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d3b50a2
e71d73f
 
 
 
 
 
 
 
 
f74bce1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1a3dda6
f74bce1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1a3dda6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
772a79f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0eb210c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3748545
 
 
 
 
 
 
 
 
0bf36ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cbb6866
 
 
 
 
 
 
 
 
7700633
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413c5fe
 
 
 
 
 
 
 
 
40cb975
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bd6cbae
 
 
 
 
 
 
 
 
6609140
 
 
 
 
 
 
 
 
52b556c
 
 
 
 
 
 
 
 
bcd0bca
 
 
 
 
 
 
 
 
d3b50a2
 
 
 
 
 
 
 
 
f54fafa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d9a3ed6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2f1532d
 
 
 
 
 
 
 
 
 
a3aa614
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6a909b2
 
 
 
 
 
 
 
 
a65c040
 
 
 
 
 
 
 
 
36ebc46
 
 
 
 
 
 
 
 
d417916
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ff91f45
 
 
 
 
 
 
 
 
e9224d5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dadf64c
 
 
 
 
 
 
 
 
38d1263
 
 
 
 
 
 
 
 
b41ceb6
 
 
 
 
 
 
 
 
b01aef5
 
 
 
 
 
 
 
 
05c9a77
 
 
 
 
 
 
 
 
a4170c5
 
 
 
 
 
 
 
 
50a1c46
 
 
 
 
 
 
 
 
5b93402
 
 
 
 
 
 
 
 
2608b33
 
 
 
 
 
 
 
 
fc9f64b
 
 
 
 
 
 
 
 
7dedc8d
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
{
  "project": "ProofFrame",
  "updated_at": "2026-07-03T10:38:20Z",
  "tasks": [
    {
      "id": "T001",
      "title": "Select target hackathon and record decision evidence",
      "phase": "P0 Foundation",
      "owner": "controller",
      "status": "done",
      "done_criteria": "docs/research.md names the selected event, alternatives, evidence, and deadlines.",
      "notes": "Selected Backblaze Generative Media Hackathon."
    },
    {
      "id": "T002",
      "title": "Create independent project repo and branch",
      "phase": "P0 Foundation",
      "owner": "controller",
      "status": "done",
      "done_criteria": "Git repo exists inside current directory on feature/backblaze-proofframe.",
      "notes": "Avoids parent /Users/junhaocheng dirty tree."
    },
    {
      "id": "T003",
      "title": "Write PRD, technical spec, submission plan, and task board",
      "phase": "P0 Foundation",
      "owner": "controller",
      "status": "done",
      "done_criteria": "docs/prd.md, docs/spec.md, docs/submission.md, docs/todo.md, and tasks.json exist.",
      "notes": "Foundation docs created"
    },
    {
      "id": "T004",
      "title": "Create Agent Bus team and attach at least one active role",
      "phase": "P0 Foundation",
      "owner": "controller",
      "status": "done",
      "done_criteria": "Team id and attached role are recorded in AGENTS.md.",
      "notes": "Team proofframe-hackathon-58c62c50; scout attached."
    },
    {
      "id": "T005",
      "title": "Create GitHub repository and push foundation commit",
      "phase": "P0 Foundation",
      "owner": "controller",
      "status": "done",
      "done_criteria": "Remote origin exists and feature/backblaze-proofframe is pushed.",
      "notes": "GitHub repo https://github.com/adjcjh777/backblaze-proofframe created and branch pushed"
    },
    {
      "id": "T006",
      "title": "Implement task ledger CLI",
      "phase": "P0 Foundation",
      "owner": "controller",
      "status": "done",
      "done_criteria": "scripts/task.py can list, show, mark done, and block tasks.",
      "notes": "Task CLI supports list/show/status updates"
    },
    {
      "id": "T010",
      "title": "Build local FastAPI skeleton",
      "phase": "P1 MVP",
      "owner": "executor",
      "status": "done",
      "done_criteria": "GET /api/health returns app, storage, and generation readiness.",
      "notes": "FastAPI app exposes /api/health and campaign flow"
    },
    {
      "id": "T011",
      "title": "Implement manifest model and checksum utility",
      "phase": "P1 MVP",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Unit tests cover manifest output and deterministic checksums.",
      "notes": "Manifest and checksum utilities implemented with tests"
    },
    {
      "id": "T012",
      "title": "Implement mock media provider",
      "phase": "P1 MVP",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Mock provider creates deterministic sample assets without network calls.",
      "notes": "Deterministic mock SVG provider implemented"
    },
    {
      "id": "T013",
      "title": "Implement local storage backend",
      "phase": "P1 MVP",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Assets and manifests write under var/storage and are retrievable.",
      "notes": "Local storage backend writes assets under var/storage"
    },
    {
      "id": "T014",
      "title": "Create first browser UI",
      "phase": "P1 MVP",
      "owner": "executor",
      "status": "done",
      "done_criteria": "apps/web/index.html presents brief intake, asset review, manifest panel, and Deerflow signature.",
      "notes": "Implemented apps/web/index.html and served it from FastAPI root"
    },
    {
      "id": "T015",
      "title": "Choose UI visual direction",
      "phase": "P1 MVP",
      "owner": "controller",
      "status": "done",
      "done_criteria": "User chooses option 1 Archive Desk, option 2 Signal Lab, option 3 Proof Ledger, or requests a remix.",
      "notes": "Controller selected Option 3 Proof Ledger for award-focused provenance story"
    },
    {
      "id": "T020",
      "title": "Integrate Backblaze B2-compatible storage",
      "phase": "P2 Integrations",
      "owner": "executor",
      "status": "done",
      "done_criteria": "B2 backend stores an asset and manifest using env-only credentials.",
      "notes": "B2 live proof passed with scoped standard key against bucket proofframe-demo-a6b4e49 and prefix campaigns/; sanitized B2 evidence is saved at docs/assets/b2-live-proof-evidence.json, and the later final proof also stores Genblaze local-provider assets/manifests in B2."
    },
    {
      "id": "T021",
      "title": "Integrate Genblaze-compatible generation",
      "phase": "P2 Integrations",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Generation adapter records provider/model metadata and fails closed without config.",
      "notes": "Final B2 plus Genblaze live proof passed through the credential-free local Genblaze Pipeline provider; sanitized evidence is saved at docs/assets/final-live-proof-evidence.json with asset_provider=genblaze/local-image, storage_backend=b2, checksums, and B2 object keys."
    },
    {
      "id": "T084",
      "title": "Add Genblaze B2 sink contract path",
      "phase": "P2 Integrations",
      "owner": "executor",
      "status": "done",
      "done_criteria": "",
      "notes": "Genblaze provider now uses official ObjectStorageSink plus S3StorageBackend.for_backblaze in final B2 mode; preflight checks genblaze_s3 and B2 region."
    },
    {
      "id": "T085",
      "title": "Add Genblaze SDK contract check",
      "phase": "P2 Integrations",
      "owner": "tester",
      "status": "done",
      "done_criteria": "",
      "notes": "Added no-secret Genblaze/B2 SDK import and signature contract report, CI step, submission bundle artifact, and public sync required artifact coverage."
    },
    {
      "id": "T086",
      "title": "Add Docker smoke and build-context secret guard",
      "phase": "P3 Public Demo",
      "owner": "tester",
      "status": "done",
      "done_criteria": "",
      "notes": "Added .dockerignore, Docker build/run/API smoke report, CI step, submission bundle artifact coverage, and evidence-backed submission checklist updates."
    },
    {
      "id": "T087",
      "title": "Add final closeout status control report",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "",
      "notes": "Added final_closeout_status.py, report outputs, CI step, submission bundle coverage, and evidence/verification docs so final proof/video/Devpost/receipt gates are visible in one no-secret closeout report."
    },
    {
      "id": "T088",
      "title": "Expose final closeout status in public evidence",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "",
      "notes": "Added final closeout status to the public judge evidence index and public Space sync validation so the no-secret final blocker ledger is publicly visible and fail-closed."
    },
    {
      "id": "T089",
      "title": "Harden final closeout review findings",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "",
      "notes": "Addressed read-only review findings: final_closeout_status accepts real live_env_handoff output, directly requires T020/T021 done with live evidence, public sync/evidence index verify raw closeout status, and submission_bundle strict closeout now requires a fresh final closeout report without circular gating."
    },
    {
      "id": "T090",
      "title": "Expose final closeout in judge UI and API",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "",
      "notes": "Added /api/judge/final-closeout, judge-mode Final Closeout panel/link, API smoke coverage, and public Space HTML marker validation so the no-secret blocker ledger is visible in the product UI as well as raw evidence."
    },
    {
      "id": "T091",
      "title": "Harden final closeout public sync for final-ready state",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "",
      "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."
    },
    {
      "id": "T092",
      "title": "Refresh no-secret live credential handoff from local env",
      "phase": "P4 Submit",
      "owner": "controller",
      "status": "done",
      "done_criteria": "",
      "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."
    },
    {
      "id": "T093",
      "title": "Harden final env readiness preflight",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "",
      "notes": "final_env_wizard.py --check-only now reports git-ignore status, .env.final.local presence, chmod 0600 status, missing required names, placeholder names, B2 region derivation, and ready_for_live_entry without printing credential values; B2_APP_KEY is accepted and mirrored as a B2_APPLICATION_KEY alias."
    },
    {
      "id": "T094",
      "title": "Refresh final rehearsal checklist from current credential handoff",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Final rehearsal checklist must be regenerated from the current operator brief and show only the three expected secret blockers before live credential entry.",
      "notes": "Regenerated docs/assets/final-rehearsal-checklist.* after the live credential handoff narrowed blockers to b2_key_id, b2_application_key, and genblaze_api_key; strict rehearsal gate now passes."
    },
    {
      "id": "T095",
      "title": "Refresh public Space sync evidence after final rehearsal",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "Public Space sync report must pass against the live HF Space and downstream final rehearsal/bundle evidence must be regenerated without changing safe_to_submit=false.",
      "notes": "Verified live public Space sync after final rehearsal refresh; runtime d598e496 is RUNNING and final closeout raw/API checks pass, then regenerated downstream final evidence reports."
    },
    {
      "id": "T096",
      "title": "Refresh official Devpost event snapshot",
      "phase": "P4 Submit",
      "owner": "scout",
      "status": "done",
      "done_criteria": "Official Devpost overview and rules pages must be fetched live, submission must be open, requirements and judging criteria must validate, and downstream submission evidence must use the refreshed participant count.",
      "notes": "Fetched official Devpost overview and rules on 2026-06-30; snapshot validation passed, submission remains open, and observed participant count is now 404 with dynamic-count recheck warning preserved."
    },
    {
      "id": "T097",
      "title": "Sync public Space after Devpost event refresh",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "HF Space must run the refreshed Devpost event snapshot, public_space_sync must pass with no failed checks, public API smoke must pass, and downstream bundle evidence must record the new runtime without marking submission ready.",
      "notes": "Uploaded HF Space commit eab3ee62e8d7a21f8f2542d5b4d38675270619ab after refreshing Devpost evidence; raw Devpost snapshot and final control now report 404 participants, public_space_sync passes with no failed checks after runtime reached RUNNING, public API smoke remains local/mock fail-closed."
    },
    {
      "id": "T098",
      "title": "Add no-secret public Space upload helper",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "A repeatable dry-run-first HF Space upload helper excludes local secrets, supports explicit execute, probes raw .env.final.local after upload, is tested, documented, and included in the submission bundle.",
      "notes": "Closes the half-finished public upload workflow without changing the final live-proof blockers."
    },
    {
      "id": "T099",
      "title": "Sync public Space with upload helper",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "The no-secret public Space upload helper runs with --execute, publishes the latest repo to Hugging Face Space, confirms raw .env.final.local is not public, public_space_sync passes on the new runtime sha, public API smoke passes, and final readiness remains fail-closed.",
      "notes": "Uploaded through the no-secret helper; included_sensitive=[], raw .env.final.local probe OK, public_space_sync and public API smoke passed. Current HF runtime sha is tracked in docs/assets/public-space-sync-report.json."
    },
    {
      "id": "T100",
      "title": "Use portable post-credential proof commands",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "The post-credential live proof plan stores public-safe, repo-relative command strings while preserving executable argv semantics and public sync validation.",
      "notes": "Post-credential plan now renders commands as python scripts/... without local absolute paths; tests cover command/argv output and no /Users path leakage."
    },
    {
      "id": "T101",
      "title": "Add public sync waits to final handoff",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "Final operator actions include public Space upload, waited public sync, and public API smoke after live proof and after final receipt, and public_space_sync supports wait attempts for HF runtime rollout.",
      "notes": "Added --wait-attempts/--wait-seconds to public_space_sync and wired public upload/sync/smoke into final operator actions."
    },
    {
      "id": "T030",
      "title": "Run browser smoke test",
      "phase": "P3 Polish",
      "owner": "tester",
      "status": "done",
      "done_criteria": "Smoke creates a campaign, generates assets, approves one, and exports manifest.",
      "notes": "Chrome smoke passed: create campaign, generate assets, approve one, export manifest"
    },
    {
      "id": "T031",
      "title": "Prepare demo video script and screenshots",
      "phase": "P3 Polish",
      "owner": "planner",
      "status": "done",
      "done_criteria": "docs/demo_script.md and screenshots are ready for Devpost.",
      "notes": "Demo script and local UI smoke screenshot prepared."
    },
    {
      "id": "T032",
      "title": "Prepare pre-live submission evidence package",
      "phase": "P3 Polish",
      "owner": "planner",
      "status": "done",
      "done_criteria": "Pre-live evidence package includes app URL or Docker path, screenshots, repo URL, AI provider/model list, and explicit placeholders/gates for final video, B2 proof, and Genblaze proof.",
      "notes": "Pre-live submission evidence package and Devpost copy bank are prepared; final video plus B2/Genblaze proofs remain gated by T020/T021 and final submission tasks."
    },
    {
      "id": "T033",
      "title": "Run public-claim freeze",
      "phase": "P3 Polish",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Public README, Devpost text, demo script, and screenshots make only verified B2/Genblaze claims.",
      "notes": "Public claim freeze doc added and README/PRD/research copy aligned to verified-vs-final-gate language."
    },
    {
      "id": "T034",
      "title": "Prepare verification scripts and Docker smoke path",
      "phase": "P3 Polish",
      "owner": "tester",
      "status": "done",
      "done_criteria": "API smoke, secret scan, Dockerfile, and verification runbook support repeatable local/Docker/live proof checks.",
      "notes": "Added scripts/api_smoke.py, scripts/secret_scan.py, docs/verification.md, and fixed Docker frontend copy."
    },
    {
      "id": "T035",
      "title": "Add GitHub CI verification gate",
      "phase": "P3 Polish",
      "owner": "tester",
      "status": "done",
      "done_criteria": "GitHub Actions runs readiness, lint, tests, and secret scan on feature branches and pull requests.",
      "notes": "Added .github/workflows/ci.yml for non-secret public verification."
    },
    {
      "id": "T036",
      "title": "Add downloadable evidence packet",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Local demo can download a ZIP containing manifest, README, and available media files.",
      "notes": "Added /api/campaigns/{id}/packet.zip and Download ZIP UI action."
    },
    {
      "id": "T037",
      "title": "Add one-click judge demo packet",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "UI and API can create a complete judge-ready local packet without manual form entry.",
      "notes": "Added /api/demo/judge-packet, Judge Demo UI action, tests, and smoke coverage."
    },
    {
      "id": "T038",
      "title": "Prepare copy-ready Devpost draft",
      "phase": "P4 Submit",
      "owner": "planner",
      "status": "done",
      "done_criteria": "docs/devpost_draft.md contains copy-ready fields with safe pre-proof and post-proof wording.",
      "notes": "Added Devpost draft with claim gates, sponsor sections, model list, and submission checklist."
    },
    {
      "id": "T039",
      "title": "Prepare public demo deployment runbook",
      "phase": "P4 Submit",
      "owner": "planner",
      "status": "done",
      "done_criteria": "docs/deployment.md explains Docker deployment, env vars, smoke checks, and public URL claim rules.",
      "notes": "Added deployment runbook and made Docker listen on PORT for app hosts."
    },
    {
      "id": "T039A",
      "title": "Deploy public mock demo",
      "phase": "P4 Submit",
      "owner": "executor",
      "status": "done",
      "done_criteria": "A credential-free public URL is available, browser-smoked, and API-smoked without B2/Genblaze secrets.",
      "notes": "Deployed Hugging Face Docker Space at https://adjcjh-backblaze-proofframe.hf.space/ and captured public smoke evidence."
    },
    {
      "id": "T039B",
      "title": "Add final live proof gate",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "API smoke can fail closed unless B2 and Genblaze backends are active and can write safe evidence JSON.",
      "notes": "Enhanced scripts/api_smoke.py with required backend gates and evidence output for T020/T021/T042."
    },
    {
      "id": "T039C",
      "title": "Add review console polish",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "UI supports status filtering, evidence search, decision coverage, and a copy-safe summary for judges.",
      "notes": "Added review console scorecard, filters, safe HTML escaping, and evidence-summary copy affordance."
    },
    {
      "id": "T039D",
      "title": "Add fail-closed evidence safety gate",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "api_smoke evidence output refuses secret-like keys and signed-token values before writing JSON.",
      "notes": "Added safe-evidence validation to scripts/api_smoke.py with tests for secret-like keys and signed URL values."
    },
    {
      "id": "T039E",
      "title": "Enhance task ledger CLI",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Task helper can add new tasks and search across ids, titles, notes, owners, phases, and done criteria.",
      "notes": "Added add/search commands, README examples, docs/todo examples, and CLI tests."
    },
    {
      "id": "T039F",
      "title": "Add live proof preflight",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "A single command checks final B2/Genblaze backend modes, required env presence, package availability, and delegates safe evidence generation to api_smoke.",
      "notes": "Added scripts/live_proof.py, unit tests, README, verification, integration, and evidence-package docs."
    },
    {
      "id": "T039G",
      "title": "Add final submission audit",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "A single command fails closed unless final task gates, required submission artifacts, screenshots, and B2/Genblaze live proof evidence are complete.",
      "notes": "Added scripts/submission_audit.py, unit tests, and submission/verification/evidence docs."
    },
    {
      "id": "T039H",
      "title": "Generate copy-ready Devpost packet",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "A script generates JSON and Markdown Devpost copy packets in pre-live-safe mode, with an explicit post-live switch for final verified sponsor claims.",
      "notes": "Added scripts/devpost_packet.py, tests, generated docs/assets packets, and evidence docs."
    },
    {
      "id": "T039I",
      "title": "Add submission gate dashboard",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "The app exposes and displays a fail-closed final submission gate with task, packet, and live-evidence status.",
      "notes": "Added /api/submission/gate, sidebar gate panel, Deerflow signature, and unit/API tests."
    },
    {
      "id": "T039J",
      "title": "Add safe submission bundle manifest",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "A script generates public-safe JSON/Markdown manifests for submission artifacts, checksums, Devpost copy mode, and remaining gate blockers.",
      "notes": "Added scripts/submission_bundle.py, generated docs/assets/submission-bundle-manifest.*, and tests."
    },
    {
      "id": "T039K",
      "title": "Add judge-mode demo deep link",
      "phase": "P3 Polish",
      "owner": "executor",
      "status": "done",
      "done_criteria": "Public demo supports a judge-mode URL that auto-loads the sample evidence packet without manual button hunting.",
      "notes": "Added ?judge=1/?demo=1 auto-load, updated Devpost demo URL, regenerated submission packets, and added tests."
    },
    {
      "id": "T039L",
      "title": "Sync judge-mode public Space",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space serves ?judge=1 auto-load code and /api/submission/gate returns pre_live_safe task gate.",
      "notes": "Pushed HF Space commit 7dedc8d; verified public HTML contains shouldAutoLoadJudgeDemo and gate API reports pre_live_safe."
    },
    {
      "id": "T039M",
      "title": "Refresh post-registration submission packet",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Devpost packet and submission docs reflect registered status and current remaining final gates.",
      "notes": "Packet generator now reads tasks.json status, Markdown includes submission checklist, and docs no longer list Devpost registration as a blocker."
    },
    {
      "id": "T039N",
      "title": "Add one-command final live proof runner",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A single command can start the app with live B2/Genblaze env, verify health, run safe API smoke, write final evidence, and stop the server.",
      "notes": "Added scripts/run_final_live_proof.py, tests, and runbook docs; current preflight fails closed because live env vars are not configured."
    },
    {
      "id": "T039O",
      "title": "Add public claim lint gate",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "CI fails if active public copy claims completed B2 or Genblaze proof before final live evidence exists.",
      "notes": "Added scripts/claim_lint.py, tests, CI step, and runbook/evidence docs."
    },
    {
      "id": "T039P",
      "title": "Add demo readiness gate",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A script and committed report prove mock recording assets are ready and final video remains gated on live B2/Genblaze evidence.",
      "notes": "Added scripts/demo_readiness.py, tests, CI wiring, and docs/assets/demo-readiness-report.{json,md}."
    },
    {
      "id": "T039Q",
      "title": "Add judge recording slate",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The first viewport shows demo mode, evidence packet state, and public claim boundary for judge recordings.",
      "notes": "Added a recording slate to apps/web/index.html, tests, docs, and bundle manifest coverage."
    },
    {
      "id": "T039R",
      "title": "Sync judge slate public Space",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The public HF Space serves the judge recording slate and still reports pre_live_safe submission gate.",
      "notes": "Pushed HF Space commit ea6431e; verified public ?judge=1 HTML contains Judge recording slate, API smoke passes, and /api/submission/gate remains pre_live_safe."
    },
    {
      "id": "T039S",
      "title": "Add live credential handoff kit",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A redacted env template, handoff report, tests, CI step, and docs make final B2/Genblaze proof setup executable without printing secrets.",
      "notes": "Added .env.final.example, scripts/live_env_handoff.py, generated docs/assets/live-credential-handoff.*, CI/readiness wiring, and tests."
    },
    {
      "id": "T039T",
      "title": "Add demo storyboard gate",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A structured demo storyboard proves the video timeline is under 3 minutes, required assets exist, and final video remains gated on live proof plus a public video URL.",
      "notes": "Added scripts/demo_storyboard.py, tests, CI wiring, docs/assets/demo-storyboard.{json,md}, and submission bundle coverage."
    },
    {
      "id": "T039U",
      "title": "Add final env credential wizard",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A local-only wizard can create .env.final.local with hidden credential prompts, 0600 permissions, git-ignore verification, tests, CI check-only coverage, and docs.",
      "notes": "Added scripts/final_env_wizard.py, tests, CI check-only wiring, live handoff next-command wiring, submission bundle coverage, and final runbook docs."
    },
    {
      "id": "T039V",
      "title": "Add Devpost form kit gate",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A field-by-field Devpost form kit turns the safe packet into copy-ready fields, checks lengths and URLs, and keeps final submission gated on live proof plus video URL.",
      "notes": "Added scripts/devpost_form_kit.py, tests, CI wiring, claim lint coverage, docs/assets/devpost-form-kit.{json,md}, demo readiness, submission bundle, and final audit coverage."
    },
    {
      "id": "T039W",
      "title": "Add B2-only live proof runner",
      "phase": "P2 Integrations",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A one-command runner can load the local final env file, force B2 storage plus mock generation, preflight required B2 values, and write sanitized b2-live-proof evidence once the scoped key is present.",
      "notes": "Added scripts/run_b2_live_proof.py, tests, docs, bundle/readiness wiring, and B2 setup next-command coverage."
    },
    {
      "id": "T039X",
      "title": "Add sponsor fit and award readiness audits",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Sponsor-fit and award-readiness reports make Backblaze B2 and Genblaze central to judge-facing copy, verify early demo coverage, remain claim-safe before live proof, and are included in CI plus the submission bundle.",
      "notes": "Added docs/sponsor_fit_matrix.md, scripts/sponsor_fit_audit.py, scripts/award_readiness.py, tests, CI steps, regenerated Devpost/form/storyboard/readiness/bundle artifacts, and expanded claim-safe sponsor-fit copy."
    },
    {
      "id": "T039Y",
      "title": "Surface sponsor evidence model in judge UI",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Judge-mode first viewport shows a claim-safe sponsor evidence model covering Genblaze step, B2 object route, manifest proof, and current claim mode; tests and readiness audits verify the UI copy remains present.",
      "notes": "Added first-viewport Sponsor Evidence Model UI for Genblaze step, B2 object route, manifest proof, and claim mode; wired API tests plus sponsor/award readiness checks and refreshed reports."
    },
    {
      "id": "T039Z",
      "title": "Sync sponsor evidence public Space",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The public HF Space judge-mode URL serves the Sponsor Evidence Model UI and still passes public mock API smoke with pre_live_safe submission gate.",
      "notes": "Pushed HF Space commits c530a1d and 3308508; verified public ?judge=1 HTML contains Sponsor Evidence Model, /api/submission/gate reports pre_live_safe with current tasks, and scripts/api_smoke.py passes against the public Space."
    },
    {
      "id": "T039AA",
      "title": "Add final submission control report",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A single command aggregates task gates, Devpost form readiness, demo storyboard, credential handoff, award readiness, public event snapshot, blocking items, and final operator commands.",
      "notes": "Added scripts/final_submission_control.py, tests, CI wiring, generated docs/assets/final-submission-control.{json,md}, and submission/evidence docs; also fixed B2 setup scoring to accept bucket_name."
    },
    {
      "id": "T039AB",
      "title": "Add recording assets gate",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A script and committed report prove all no-secret recording assets exist, the public mock demo can be verified with GET-only checks, and final video remains gated on live proof.",
      "notes": "Added scripts/recording_assets.py, tests, CI wiring, docs/assets/recording-assets.{json,md}, submission bundle coverage, and final control integration."
    },
    {
      "id": "T039AC",
      "title": "Add official Devpost event snapshot gate",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A script and committed report refresh official Devpost deadline, participants, requirements, judging criteria, and final-control event facts.",
      "notes": "Added scripts/devpost_event_snapshot.py, tests, docs/assets/devpost-event-snapshot.{json,md}, CI validation, submission bundle coverage, and final control integration."
    },
    {
      "id": "T039AD",
      "title": "Align award readiness evidence detection",
      "phase": "P3 Demo",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Award readiness correctly recognizes the implemented review console and explicit final-env ignore policy.",
      "notes": "Updated award_readiness review-console detection, added an explicit .env.final.local ignore rule, refreshed reports, and added regression coverage."
    },
    {
      "id": "T039AE",
      "title": "Add final operator brief",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A no-secret operator brief turns remaining live-proof blockers into user actions, Codex follow-up commands, and safety policy.",
      "notes": "Added scripts/final_operator_brief.py, generated docs/assets/final-operator-brief.{json,md}, CI/submission bundle/evidence docs wiring, and tests."
    },
    {
      "id": "T040",
      "title": "Register on Devpost",
      "phase": "P4 Submit",
      "owner": "controller",
      "status": "done",
      "done_criteria": "User account is registered for the Backblaze event.",
      "notes": "Devpost registration complete; page shows Thanks for registering and manage/submissions is available."
    },
    {
      "id": "T041",
      "title": "Final submission audit",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "blocked",
      "done_criteria": "Reviewer signs off on rules, secrets, claims, and public artifacts.",
      "notes": "Post-live audit is blocked by missing final public video URL, T041A final scan completion, and Devpost receipt; current non-strict submission audit remains pre_submit_audit_blocked with docs/assets/submission-audit-report.json regenerated after B2 plus local Genblaze proof."
    },
    {
      "id": "T041A",
      "title": "Run final secret scan",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "blocked",
      "done_criteria": "Secret scan covers repo, docs, screenshots, exported manifests, logs, and demo evidence before submission.",
      "notes": "Current secret scan is clear at docs/assets/secret-scan-report.json, but final T041A stays blocked until the public video and Devpost-safe submission artifacts are staged so the last scan is truly final."
    },
    {
      "id": "T041B",
      "title": "Add pre-submit audit report gate",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "submission_audit writes schema JSON/Markdown, checks live proof/video/final reports, and strict-final fails closed before signoff.",
      "notes": "Added submission-audit-report artifacts, Devpost packet schema validation, final-control audit coupling, CI wiring, and regression tests."
    },
    {
      "id": "T041C",
      "title": "Add final secret scan report",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "secret_scan writes a schema JSON/Markdown report, scans public evidence/log text, inventories screenshots/media, excludes local credential files without reading values, and final control requires the report before T041A can satisfy the gate.",
      "notes": "Added docs/assets/secret-scan-report.*, final-control/submission-audit coupling, bundle coverage, docs, and regression tests."
    },
    {
      "id": "T042",
      "title": "Submit Devpost project",
      "phase": "P4 Submit",
      "owner": "controller",
      "status": "blocked",
      "done_criteria": "Devpost submission is accepted before 2026-08-04 05:00 Asia/Shanghai.",
      "notes": "Devpost submission is blocked by missing public video URL plus final audit/secret-scan gates; no Devpost receipt URL is present, and final submission control remains phase=public_video."
    },
    {
      "id": "T042A",
      "title": "Add Devpost submission receipt gate",
      "phase": "P4 Submit",
      "owner": "controller",
      "status": "done",
      "done_criteria": "Final control requires a schema-ok Devpost receipt with a public project URL before T042 can satisfy the submitted gate.",
      "notes": "Added devpost_submission_receipt.py, docs/assets/devpost-submission-receipt.*, final-control/operator/bundle wiring, CI step, and regression tests."
    },
    {
      "id": "T042B",
      "title": "Align API submission gate with final report artifacts",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "GET /api/submission/gate requires final secret scan, submission audit, and Devpost receipt reports before final_ready.",
      "notes": "Bottom-layer browser/API gate now checks report schemas and ok=true, preventing task-status-only final readiness."
    },
    {
      "id": "T042C",
      "title": "Sync public Space with final report gate",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "Public HF Space serves the latest submission gate with report_gate, repo-relative paths, judge-mode UI markers, and passing public API smoke.",
      "notes": "Pushed HF Space commit 635162b after restoring sdk: docker/app_port: 8088 metadata; verified /api/health, /api/submission/gate report_gate, ?judge=1 HTML markers, and scripts/api_smoke.py against the public Space."
    },
    {
      "id": "T042D",
      "title": "Refresh official Devpost event snapshot",
      "phase": "P4 Submit",
      "owner": "scout",
      "status": "done",
      "done_criteria": "Official Devpost overview and rules pages are re-fetched, validation remains ok, dynamic participant count is updated, and downstream control/bundle reports use the refreshed snapshot.",
      "notes": "Earlier refresh on 2026-06-28 Asia/Shanghai moved participant count from 343 to 345; latest T055 refresh records 358 and keeps public copy dynamic."
    },
    {
      "id": "T042E",
      "title": "Add Agent handoff consistency gate",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "AGENTS.md points at the current repo, a machine-readable handoff report is generated, CI runs the check, and final control/bundle include the report.",
      "notes": "Updated AGENTS.md from the stale Documents/Codex path to the current working-dir repo path; added a public default handoff report and a local --check-bus diagnostic that detected durable Agent Bus project metadata as stale while keeping AGENTS.md as repo authority."
    },
    {
      "id": "T042F",
      "title": "Sync public Space with Agent handoff gate",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space serves the latest handoff-aware public mock demo, runtime sha is recorded, raw handoff artifact is readable, and public API smoke passes.",
      "notes": "Uploaded HF Space commit e71d73f7e55a977c4103aa4a50b0bd072314318c via huggingface_hub; runtime reports RUNNING on that sha, raw docs/assets/agent-handoff-report.json returns handoff_ready, public /api/submission/gate remains pre_live_safe, and scripts/api_smoke.py plus recording_assets --verify-public pass."
    },
    {
      "id": "T042G",
      "title": "Add public Space sync verifier",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A repeatable verifier checks HF Space metadata/runtime sha, raw handoff artifact, public health/gate APIs, judge-mode HTML markers, and feeds final control plus the submission bundle.",
      "notes": "Added scripts/public_space_sync.py and docs/assets/public-space-sync-report.*; current report is public_space_synced for runtime sha a0418b6da52376ca3984294c850e368552920404."
    },
    {
      "id": "T042H",
      "title": "Align final live proof env-file CLI",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The documented final live proof command accepts --env-file .env.final.local, loads non-secret/live env values without printing secrets, still fails closed when credentials are missing, and generated operator commands match the CLI.",
      "notes": "Added --env-file support to scripts/run_final_live_proof.py, aligned live_env_handoff/final_env_wizard next commands and runbooks, and verified preflight now reports missing B2 key/application key/Genblaze API key instead of CLI argument failure."
    },
    {
      "id": "T042I",
      "title": "Harden final operator command placeholders",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Final operator commands use shell-safe placeholder variables, generated reports are refreshed, and regression tests parse every command against the target script argparse.",
      "notes": "Replaced angle-bracket public video/Devpost placeholders with quoted PROOFFRAME_* environment variables across operator reports; added parseability and shell-safety coverage."
    },
    {
      "id": "T042J",
      "title": "Audit active Agent Bus role cwd",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Agent handoff report records active Agent Bus role cwd status, reviewer/scout registrations point at the current working-dir repo, and stale durable team.project metadata remains explicitly documented as non-authoritative.",
      "notes": "Reattached active reviewer/scout roles with --cwd /Users/junhaocheng/working-dir/ai-competitions/backblaze-proofframe and added agent_handoff_check coverage for active role cwd drift."
    },
    {
      "id": "T042K",
      "title": "Resolve no-credential final audit issues",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Reviewer no-credential audit issues are addressed: final runbooks avoid sourcing .env.final.local, pre-live evidence/package status is clearly labeled, public Space serves the new fail-closed packet status, and generated reports are refreshed.",
      "notes": "Removed shell-sourcing of the final env file from runbooks/next commands, relabeled T032 as a pre-live evidence package, made /api/submission/gate require post_live_verified packet mode for final_ready, and synced HF Space runtime sha a0418b6da52376ca3984294c850e368552920404."
    },
    {
      "id": "T042L",
      "title": "Add no-secret final launch plan",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Final launch phases are generated as public-safe JSON/Markdown, covered by tests, wired into CI, verification docs, and the submission bundle.",
      "notes": "Added scripts/final_launch_plan.py plus docs/assets/final-launch-plan.*; it groups credential entry, B2 proof, Genblaze proof, public video, final audit, and Devpost receipt without secret values."
    },
    {
      "id": "T042M",
      "title": "Sync public Space with final launch plan",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space runs the launch-plan-aware build, public sync verifier checks runtime sha plus raw final-launch-plan artifact, and public API smoke passes in local/mock mode.",
      "notes": "Uploaded current repo to HF Space commit 1a3dda691e94b07642da89512c3b62f360c2cef9 and extended scripts/public_space_sync.py to verify docs/assets/final-launch-plan.json is public and ready_for_credential_entry."
    },
    {
      "id": "T042N",
      "title": "Align final launch plan with final control",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Final submission control consumes final-launch-plan.json, exposes current phase and next command, launch phases include task-ledger update checkpoints, and regression tests cover the wiring.",
      "notes": "Addressed reviewer audit: final control now checks launch plan schema/actionability and renders phase/next command; launch plan phases list post-success task.py updates for T020/T021/T041A/T041/T042."
    },
    {
      "id": "T042O",
      "title": "Sync public Space after launch control alignment",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space serves the final-control/launch-plan-aware artifacts after reviewer alignment, public sync verifier targets the new runtime sha, and public API smoke passes.",
      "notes": "Uploaded HF Space commit 772a79fb645e975df32f7acbe49eae15a96a6626 after final control consumed launch plan and warning/boundary copy was added."
    },
    {
      "id": "T042P",
      "title": "Add public judge brief",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A generated public-safe judge brief summarizes the 30-second pitch, why ProofFrame can win, safe claims, current blockers, walkthrough, and evidence links; it is included in CI, final audit, and the submission bundle.",
      "notes": "Added scripts/judge_brief.py plus docs/assets/judge-brief.*; public Space sync now verifies the raw judge brief stays safe_to_submit=false before live proof."
    },
    {
      "id": "T042Q",
      "title": "Sync public Space with judge brief",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space serves the judge-brief-aware build, raw judge brief is publicly readable and claim-safe, public sync verifier targets the new runtime sha, and public API smoke passes.",
      "notes": "Uploaded HF Space commit 0eb210c2b25cc44af1991e17e14af062b9ad5479 with docs/assets/judge-brief.* and raw judge brief verification."
    },
    {
      "id": "T042R",
      "title": "Apply Claude review to judge brief",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Claude Code reviews the judge brief/public sync change, stale or ambiguous claim issues are resolved, the public Space is refreshed again, and verification proves raw judge brief remains public-safe.",
      "notes": "Claude session 11111111-2222-4333-8444-555555555555 flagged stale runtime sha and wording risk; judge brief now avoids volatile sha, tightens B2/Genblaze language, and HF Space commit 3748545778fba56837dacf9320bb656cdf183bff was uploaded."
    },
    {
      "id": "T042S",
      "title": "Add judge comprehension pack",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "README and evidence package include a 60-second Judge Quickstart, Devpost tagline/one-liner foreground B2-ready and Genblaze-gated value without live-proof overclaiming, and demo storyboard/script opening plus close clarify the before/after outcome.",
      "notes": "Applied Agent Bus reviewer guidance: added Judge Quickstart, tightened first-impression Devpost copy, and revised demo narrative while claim_lint and sponsor_fit_audit remain green."
    },
    {
      "id": "T043",
      "title": "Add in-app judge brief panel",
      "phase": "P3 Polish",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Public judge-mode UI exposes a 30-second Judge Brief from the same safe judge-brief artifact, the API returns the safe brief JSON, public Space sync checks the HTML marker, and tests cover the endpoint plus marker.",
      "notes": "Added /api/judge/brief, first-screen Judge Brief panel, evidence links, favicon polish, public sync marker, and API/public sync tests."
    },
    {
      "id": "T044",
      "title": "Add final submission rehearsal checklist",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A no-secret final rehearsal report combines operator readiness, launch phase, public Space sync, form kit, recording readiness, secret scan, task status, exact final commands, stop rules, and safe-to-commit artifacts so the final credential/live-proof/Devpost pass can be executed without overclaiming or leaking secrets.",
      "notes": "Added scripts/final_rehearsal.py, docs/assets/final-rehearsal-checklist.*, tests, submission bundle/audit integration, and README/evidence/spec references."
    },
    {
      "id": "T045",
      "title": "Add final Devpost submission checklist",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A no-secret Devpost web submission checklist converts the final form kit into ordered copy steps, preflight gates, stop rules, and post-submit receipt commands; it is integrated into bundle/audit/operator/rehearsal/docs/tests without marking final submission ready.",
      "notes": "Added scripts/devpost_submission_checklist.py, docs/assets/devpost-submission-checklist.*, tests, submission bundle/audit/operator/rehearsal integration, and README/evidence/spec references."
    },
    {
      "id": "T046",
      "title": "Add public video URL check gate",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A no-secret public video check validates the final demo video URL against Devpost video requirements, token-free public URL rules, storyboard duration, and optional GET-only accessibility before final submission; it is integrated into recording, final control, submission audit, bundle, CI, docs, and tests.",
      "notes": "Added scripts/public_video_check.py, docs/assets/public-video-check.*, tests, final submission/recording/audit/bundle/CI integration, and verification/evidence/spec/submission docs."
    },
    {
      "id": "T047",
      "title": "Add judge criteria crosswalk",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A schema-stamped judge crosswalk maps official criteria and submission requirements to current evidence, safe claims, final gates, and demo shots; it is integrated into CI, submission bundle, submission audit, and docs.",
      "notes": "Added scripts/judge_crosswalk.py plus docs/assets/judge-crosswalk.* with fail-closed source schema checks and pre-live claim boundaries."
    },
    {
      "id": "T048",
      "title": "Sync public Space with judge crosswalk",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space serves the Criteria crosswalk link, raw judge-crosswalk artifact is publicly readable and claim-safe, public Space sync verifier targets the new runtime sha, and public API smoke passes in local/mock mode.",
      "notes": "Uploaded HF Space commit 77006332d53103cd6890f3b3cda446c096892554; public sync verifies raw docs/assets/judge-crosswalk.json is proofframe.judge_crosswalk.v1, ok=true, safe_to_submit=false, and judge HTML contains Criteria crosswalk."
    },
    {
      "id": "T049",
      "title": "Add in-app criteria crosswalk panel",
      "phase": "P3 Polish",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The public judge-mode UI exposes a Criteria Crosswalk panel powered by /api/judge/crosswalk, API smoke verifies the endpoint schema and safe_to_submit boundary, and HF Space serves the updated build with public sync and CI passing.",
      "notes": "Added /api/judge/crosswalk, in-app Criteria Crosswalk panel, API smoke fields, tests, and uploaded HF Space commit 413c5fe90d97eb0a137a1fc4d5ca697e3b7cab14."
    },
    {
      "id": "T050",
      "title": "Expose in-app recording runbook",
      "phase": "P3 Polish",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The public judge-mode UI exposes a Recording Runbook panel powered by /api/judge/recording, API smoke verifies the recording artifact schema and shot plan, public Space sync verifies the raw recording-assets artifact plus HTML marker, and HF Space serves the updated build.",
      "notes": "Added /api/judge/recording, in-app Recording Runbook panel, public-safe recording asset verification markers, tests, and API/public sync coverage."
    },
    {
      "id": "T051",
      "title": "Expose in-app Devpost kit",
      "phase": "P3 Polish",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The public judge-mode UI exposes a Devpost Kit panel powered by /api/judge/devpost, API smoke verifies the Devpost form kit schema and field count, public Space sync verifies the raw devpost-form-kit artifact plus HTML marker, and HF Space serves the updated build.",
      "notes": "Added /api/judge/devpost, in-app Devpost Kit panel, public sync raw form-kit check, API smoke fields, and tests."
    },
    {
      "id": "T052",
      "title": "Expose in-app submit checklist",
      "phase": "P3 Polish",
      "owner": "codex",
      "status": "done",
      "done_criteria": "The public judge-mode UI exposes a Submit Checklist panel powered by /api/judge/submission-checklist, API smoke verifies the checklist schema and preflight rows, public Space sync verifies the raw devpost-submission-checklist artifact plus HTML marker, and HF Space serves the updated build.",
      "notes": "Added /api/judge/submission-checklist, in-app Submit Checklist panel, public sync raw checklist check, API smoke fields, and tests."
    },
    {
      "id": "T053",
      "title": "Add mock demo video draft",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "A schema-stamped mock demo video draft report and MP4 are generated from public screenshots, recording-assets and submission-bundle reports include the draft artifacts, tests cover the fail-closed boundary, and final public video gates remain false until live proof exists.",
      "notes": "Added scripts/demo_video_draft.py, generated docs/assets/proofframe-demo-draft.mp4 plus demo-video-draft reports, and wired the draft into recording assets and submission bundle while keeping final video gates fail-closed."
    },
    {
      "id": "T054",
      "title": "Verify public demo video draft",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Public Space sync verifies the raw demo-video-draft report stays mock_video_draft_ready and fail-closed, verifies the public MP4 is readable as video/mp4 with expected byte size, emits specific next actions on draft failures, and records only stable public URLs rather than signed redirects.",
      "notes": "Extended scripts/public_space_sync.py to verify docs/assets/demo-video-draft.json and public docs/assets/proofframe-demo-draft.mp4 readability without storing signed redirect URLs."
    },
    {
      "id": "T055",
      "title": "Refresh official event snapshot",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "Official Devpost overview and rules pages are refetched live, committed snapshot validation passes with submission_open=true, the observed participant count is refreshed to 358, and downstream final-control/bundle reports can consume the updated snapshot.",
      "notes": "Refetched official Devpost overview and rules pages on 2026-06-28; participant count is now 358, submission remains open, and requirements/judging criteria validated."
    },
    {
      "id": "T056",
      "title": "Sync Space after event refresh",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "HF Space serves the post-refresh public mock demo at the recorded runtime sha, public Space sync passes with no failed checks, public API smoke remains local/mock and fail-closed, and raw public Devpost snapshot/final-control artifacts show participant count 358 without marking final submission ready.",
      "notes": "Uploaded HF Space commit d3b50a27e2a5062fb5411c5f0b5d966f47205ef3 after the Devpost event refresh; public Space sync, API smoke, and raw snapshot checks confirm participant count 358 and fail-closed final control."
    },
    {
      "id": "T057",
      "title": "Add missing-only credential wizard",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "final_env_wizard supports --missing-only, preserves existing .env.final.local field values and extra local-only variables, prompts only for missing required live-proof values, mirrors Genblaze/GMI aliases, never prints credential values, and regenerated handoff/launch/rehearsal/final-control reports point at the missing-only command.",
      "notes": "Added final_env_wizard --missing-only so the operator only fills missing B2 key id/application key and Genblaze/GMI key while preserving existing .env.final.local values and extra local-only variables; regenerated final handoff, launch, rehearsal, judge, and control reports."
    },
    {
      "id": "T058",
      "title": "Add post-credential live proof runner",
      "phase": "P4 Submit",
      "owner": "codex",
      "status": "done",
      "done_criteria": "post_credential_live_proof can emit a no-secret plan by default, requires --execute to run live proof commands, stops on first failure, can mark T020/T021 only after successful proof commands when --update-tasks is explicit, regenerates downstream final reports, and is covered by tests and submission bundle artifacts.",
      "notes": "Added scripts/post_credential_live_proof.py to plan or execute the credential-ready B2 proof, final Genblaze proof, task updates, and report regeneration sequence without storing secrets."
    },
    {
      "id": "T059",
      "title": "Harden post-credential review gates",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Post-credential live proof validates B2 and final evidence before task updates, final operator brief avoids duplicate live proof commands, submission bundle CLI ok tracks safe_to_submit instead of shareability, and reviewer-driven tests cover the fail-closed behavior.",
      "notes": "Addressed independent reviewer findings from Faraday: added evidence validators before T020/T021 updates, removed duplicate runner commands, and made submission_bundle fail closed for final submit readiness."
    },
    {
      "id": "T060",
      "title": "Sync public Space after gate hardening",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "HF Space main is pushed to the latest post-credential gate hardening build, runtime is RUNNING on the expected sha, public API smoke passes, public_space_sync passes, and docs cite the new public Space sha.",
      "notes": "Pushed HF Space commit f54fafafe78a5e2544c2dd0c905dca2778b25ef1, verified public_space_sync and public API smoke in local/mock mode, and kept final submission fail-closed."
    },
    {
      "id": "T061",
      "title": "Verify public hardening artifacts",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "public_space_sync verifies the public Space exposes the post-credential live proof plan with evidence validators and the submission bundle manifest with safe_to_share=true but safe_to_submit=false before final live proof.",
      "notes": "Hardened after read-only reviewer findings: public_space_sync now requires the full ordered post-credential sequence, strict no-secret policy wording, malformed-command fail-closed behavior, and non-truncated submission bundle gate/artifact evidence. Verified against live HF Space runtime f54fafafe78a5e2544c2dd0c905dca2778b25ef1."
    },
    {
      "id": "T062",
      "title": "Refresh official event drift gate",
      "phase": "P4 Submit",
      "owner": "scout",
      "status": "done",
      "done_criteria": "Official Devpost snapshot is refetched, stale hard-coded participant counts are removed from docs, public_space_sync validates the raw Devpost event snapshot on the public Space, and the refreshed public artifact state is verified.",
      "notes": "Added raw Devpost event snapshot freshness/requirements/criteria checks to public_space_sync, refreshed the official snapshot to participant count 365 checked 2026-06-29 Asia/Shanghai, removed stale hard-coded 358 references, pushed HF Space commit d9a3ed6964c0cf9834e18bd465baea1a4ad2d84e, and verified public_space_sync plus API smoke."
    },
    {
      "id": "T063",
      "title": "Add B2 key scope checklist gate",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "No-secret B2 application-key scope checklist is generated, tested, included in audit/bundle/CI/docs, and blocks broad or secret-bearing setup before live proof.",
      "notes": "Added scripts/b2_key_scope_checklist.py, generated docs/assets/b2-key-scope-checklist.*, wired CI/submission audit/submission bundle/docs/final handoffs, and kept key creation behind explicit user confirmation."
    },
    {
      "id": "T064",
      "title": "Sync public Space with B2 key checklist",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "HF Space runs the latest public demo build containing the B2 key scope checklist, public_space_sync verifies the raw checklist schema/scope/no-secret policy, and public API smoke passes.",
      "notes": "Uploaded HF Space commit 2f1532df85103b7114cfba5a1267764ee8a00fd6; public_space_sync now verifies docs/assets/b2-key-scope-checklist.json plus bundle coverage, and public API smoke passes in local/mock mode."
    },
    {
      "id": "T065",
      "title": "Refresh public deployment evidence",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Deployment runbook and evidence package point at the latest public HF Space runtime, include the B2 key scope checklist/post-credential/bundle public checks, and no longer expose stale public demo evidence.",
      "notes": "Updated docs/deployment.md from stale d9a3ed Space evidence to runtime 2f1532df85103b7114cfba5a1267764ee8a00fd6, expanded docs/evidence_package.md public_space_sync coverage for B2 key checklist/post-credential plan/submission bundle, and revalidated claim_lint, secret_scan, public_space_sync, public API smoke, ruff, and pytest."
    },
    {
      "id": "T066",
      "title": "Sync B2 pre-key confirmation gate",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "B2 key scope checklist includes an explicit no-secret pre-key confirmation phrase, public_space_sync verifies the raw public checklist confirmation status and scope, and HF Space serves the updated public artifact.",
      "notes": "Added pre_key_creation_confirmation to the B2 key scope checklist and final operator/launch artifacts; uploaded HF Space commit a3aa614b569d277d81229606783c4444ff5d2155; public_space_sync, raw checklist spot-check, and public API smoke pass."
    },
    {
      "id": "T067",
      "title": "Refresh public judge screenshot evidence",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "Public judge screenshot is refreshed from the live HF Space, verified for visible/html judge markers and nonblank image stats, included in recording assets/submission bundle/public Space sync gates, and synced to the public Space.",
      "notes": "Captured docs/assets/proofframe-hf-public-smoke.png via scripts/public_demo_screenshot.py; uploaded HF Space commit 6a909b229afd3f08099877fb4cff633438f72ba5; public_space_sync and public API smoke pass with raw public-demo-screenshot-report verification."
    },
    {
      "id": "T068",
      "title": "Add Devpost submission preview",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "A one-page Devpost preview consolidates copy blocks, public demo evidence, screenshot evidence, readiness modes, and final blockers while separating safe_to_share from safe_to_submit.",
      "notes": "Added scripts/devpost_submission_preview.py with tests; generated docs/assets/devpost-submission-preview.*; wired preview into CI, submission bundle, evidence docs, and public_space_sync raw artifact validation."
    },
    {
      "id": "T069",
      "title": "Wire Devpost preview into post-credential chain",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Post-credential runner, operator brief, final rehearsal, and public Space sync all require/regenerate the Devpost submission preview so live-proof submission materials cannot go stale.",
      "notes": "Added devpost_submission_preview.py to post-credential report regeneration, final operator actions, final rehearsal steps, and raw public post-credential plan verification."
    },
    {
      "id": "T070",
      "title": "Harden post-credential preview review gates",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Public Space sync fails closed when the post-credential report tail omits or misorders Devpost preview, and operator brief runs a no-value secret scan after preview regeneration.",
      "notes": "Addressed read-only reviewer findings: added ordered report-tail validation for submission_audit -> devpost_submission_preview -> secret_scan -> submission_bundle, added missing/misordered preview public sync tests, and added a post-preview secret scan to final operator actions."
    },
    {
      "id": "T071",
      "title": "Refresh official Devpost event evidence",
      "phase": "P4 Submit",
      "owner": "scout",
      "status": "done",
      "done_criteria": "Official Devpost overview and rules pages are fetched live, submission-open/deadline/requirements/criteria are validated, and downstream judge/submission reports are regenerated.",
      "notes": "Refreshed docs/assets/devpost-event-snapshot.* with live official pages; observed 369 participants, deadline 2026-08-03T21:00:00Z, and submission_open=true; regenerated judge, Devpost, control, audit, public sync, and bundle reports."
    },
    {
      "id": "T072",
      "title": "Harden final post-Devpost closeout chain",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "After Devpost submission receipt, operator-facing runbooks require a clean secret scan plus strict final control, launch plan, Devpost preview, and submission bundle before final commit/push.",
      "notes": "Added submission_bundle.py --strict-final, wired final closeout commands into final operator brief, final rehearsal, and final submission control, and covered the receipt-to-bundle sequence with tests."
    },
    {
      "id": "T073",
      "title": "Require fresh post-receipt closeout reports",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "The final submission bundle strict gate fails unless Devpost receipt is submitted and the post-receipt secret scan, final control, launch plan, and Devpost preview are final-ready and generated after the receipt.",
      "notes": "Addressed read-only reviewer findings: final_launch_plan now emits created_at, submission_bundle has a closeout freshness gate, stale closeout reports fail safe_to_submit, and final rehearsal tests assert the exact receipt-to-green-gate sequence."
    },
    {
      "id": "T074",
      "title": "Harden public video host gate",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Public video URL validation fails closed unless the URL uses an official public host family accepted by event rules and has no credential/token/signed query material.",
      "notes": "Added YouTube/Vimeo/Youku host-family validation to public_video_check.py, report output, and tests so generic public URLs cannot satisfy final video gate."
    },
    {
      "id": "T075",
      "title": "Verify public video gate in Space sync",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "public_space_sync fails closed unless the public Hugging Face Space exposes docs/assets/public-video-check.json with the official YouTube/Vimeo/Youku host gate and safe pre-live video status.",
      "notes": "Added raw public-video-check validation to public_space_sync.py, observed report output, and failure tests so the official public video host gate is checked by CI and public Space sync."
    },
    {
      "id": "T076",
      "title": "Upgrade CI Node runtime actions",
      "phase": "P4 Submit",
      "owner": "tester",
      "status": "done",
      "done_criteria": "GitHub Actions workflow uses current Node-24-compatible checkout/setup-python action majors so CI does not emit the Node 20 deprecation annotation.",
      "notes": "Updated actions/checkout from v4 to v7 and actions/setup-python from v5 to v6 after verifying latest official GitHub action releases via gh api."
    },
    {
      "id": "T077",
      "title": "Refresh official Devpost event snapshot",
      "phase": "P4 Submit",
      "owner": "scout",
      "status": "done",
      "done_criteria": "Official Devpost event snapshot is refreshed from the live overview and rules pages, with submission still open and event requirements/judging criteria validated.",
      "notes": "Refreshed live official Devpost snapshot on 2026-06-29T00:44:06Z; observed participants increased from 369 to 372, deadline remains 2026-08-03T21:00:00Z, and validation remains ok."
    },
    {
      "id": "T078",
      "title": "Add final control health flag",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Final submission control JSON exposes a top-level ok flag for report health while preserving safe_to_submit as the final Devpost submission gate.",
      "notes": "Added final_submission_control ok semantics, markdown display, and tests so pre-live control reports are machine-readable as healthy without being final-submit-ready."
    },
    {
      "id": "T079",
      "title": "Clarify final control health semantics",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Final submission control exposes explicit control_health_ok semantics and CLI-level tests prove non-strict health does not bypass strict final submit gates.",
      "notes": "Added control_health_ok alias, clarified markdown output, and covered non-strict vs strict-final CLI behavior after reviewer pass."
    },
    {
      "id": "T080",
      "title": "Add judge evidence index",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "A public-safe judge evidence index is generated, exposed through the app API, included in submission bundle artifacts, verified by public Space sync, and kept fail-closed with safe_to_submit=false until final live proof.",
      "notes": "Added scripts/judge_evidence_index.py, docs/assets/judge-evidence-index.*, /api/judge/evidence-index, frontend Evidence index link, API smoke coverage, public Space sync validation, bundle registration, and tests."
    },
    {
      "id": "T081",
      "title": "Add final video publish kit",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Final video upload copy, chapters, official host requirements, Devpost video field gate, API endpoint, public Space validation, bundle registration, and tests are in place while safe_to_submit remains false until the final public video URL and final control pass.",
      "notes": "Added scripts/final_video_publish_kit.py, docs/assets/final-video-publish-kit.*, /api/judge/video-publish-kit, frontend Video publish kit link, API smoke coverage, public Space sync validation, recording asset registration, bundle registration, and tests."
    },
    {
      "id": "T082",
      "title": "Add judge decision brief",
      "phase": "P4 Submit",
      "owner": "reviewer",
      "status": "done",
      "done_criteria": "Decision brief is generated, exposed in judge API/frontend, checked by public Space sync, and included in bundle.",
      "notes": "Added scripts/judge_decision_brief.py, docs/assets/judge-decision-brief.*, /api/judge/decision-brief, frontend Decision brief link, public Space sync validation, submission bundle registration, and tests."
    },
    {
      "id": "T083",
      "title": "Refresh official Devpost event snapshot",
      "phase": "P4 Submit",
      "owner": "scout",
      "status": "done",
      "done_criteria": "Official Devpost overview/rules snapshot refreshed from live pages, downstream reports regenerated, public Space sync passed, and dynamic participant count references avoid stale hard-coded copy.",
      "notes": "Updated docs/assets/devpost-event-snapshot.* from official Devpost pages: submission remains open, requirements and judging criteria validate, observed participants are now 383. Synced HF Space and regenerated final evidence reports."
    }
  ]
}