DarthSoluke commited on
Commit
aedecda
·
verified ·
1 Parent(s): 271b60d

Show separate OakInk2 and ARCTIC production progress and native formats

Browse files
README.md CHANGED
@@ -70,6 +70,11 @@ python3 -m http.server 8767 --bind 127.0.0.1
70
 
71
  ## 只读进度
72
 
 
 
 
 
 
73
  公开快照来自`DarthSoluke/EgoRendererStatus/status.json`,60秒刷新,超过180秒标为过期。
74
  页面保留最近一次成功快照,不把网络失败当成进度归零。执行修订不等于数据发布版本。
75
 
 
70
 
71
  ## 只读进度
72
 
73
+ 生产页可切换ARCTIC与OakInk2,分别显示完成、运行、待执行及待上游资产。
74
+ OakInk2原始手参数是wxyz四元数,不重命名为ARCTIC的轴角字段。包内另存
75
+ native_mano_descriptor.json、source_offsets.npy、object_membership.npz和
76
+ native_object_poses.npz;下半身为生成结果,明确标为非原始GT。
77
+
78
  公开快照来自`DarthSoluke/EgoRendererStatus/status.json`,60秒刷新,超过180秒标为过期。
79
  页面保留最近一次成功快照,不把网络失败当成进度归零。执行修订不等于数据发布版本。
80
 
data/egorender-progress.json CHANGED
@@ -1 +1 @@
1
- {"schema": "egorenderer.public_progress.v1", "collected_at": 1793603390.1547627, "refresh_seconds": 60, "dataset_release": "V006", "execution_revision": "353", "queue_alive": false, "admission_held": false, "counts": {"complete": 301, "running": 0, "ready": 0, "failed": 0, "total": 301}, "scope": {"sources": 301, "source_frames": 218273, "variants": 1, "expected_variant_frames": 218273, "historical_extra_complete": 2, "cancelled_extra": 600}, "coverage": {"completed_variant_frames": 218273, "sources_with_any_variant": 301, "sources_with_all_variants": 301}, "throughput": {"packages_last_hour": 1, "queued_eta_hours": null}, "training_ready": null, "known_gt_missing": [{"source": "arctic_s01_capsulemachine_grab_01", "variant": 1}, {"source": "arctic_s09_laptop_use_03", "variant": 1}], "auxiliary_fits": "PENDING_UPSTREAM_HANDOFF", "jobs": [], "recent": [{"at": 1793599829.9072523, "source": "arctic_s10_laptop_use_02", "variant": 1}, {"at": 1793599581.3385708, "source": "arctic_s10_notebook_use_02", "variant": 1}, {"at": 1793599567.6335635, "source": "arctic_s10_waffleiron_use_02", "variant": 1}, {"at": 1793599500.593456, "source": "arctic_s10_waffleiron_grab_01", "variant": 1}, {"at": 1793599276.667639, "source": "arctic_s10_phone_grab_01", "variant": 1}, {"at": 1793599134.962276, "source": "arctic_s10_phone_use_02", "variant": 1}, {"at": 1793598927.6839998, "source": "arctic_s10_waffleiron_use_01", "variant": 1}, {"at": 1793598411.1581776, "source": "arctic_s10_phone_use_01_retake", "variant": 1}], "hardware": {"gpus": [{"index": 0, "utilization": 0, "used_mib": 423, "total_mib": 97887}, {"index": 1, "utilization": 0, "used_mib": 2, "total_mib": 97887}, {"index": 2, "utilization": 0, "used_mib": 3, "total_mib": 97887}, {"index": 3, "utilization": 0, "used_mib": 3, "total_mib": 97887}], "cpu_percent": 4.5, "cpu_logical": 72}, "storage": {"ssd_available_gib": 1256.6, "nas_available_gib": 2762.9, "ssd_budget_gib": 896.0, "ssd_reserved_gib": 3.5, "nas_active": 0, "nas_limit": 4}, "hardcases": {"complete": 15, "expected": 15, "frames": 10838, "training_ready": false}, "oakink_assets": {"counts": {"COMPLETE": 571, "FAILED": 13, "READY": 38}, "total": 622, "final_render_count": null}, "history": [{"at": 1793585572.6428823, "complete": 238}, {"at": 1793585632.6541576, "complete": 238}, {"at": 1793585692.64007, "complete": 238}, {"at": 1793585752.6562395, "complete": 238}, {"at": 1793585812.6489515, "complete": 238}, {"at": 1793585872.6555843, "complete": 238}, {"at": 1793585932.6725898, "complete": 238}, {"at": 1793585992.67241, "complete": 238}, {"at": 1793586052.6740882, "complete": 240}, {"at": 1793586112.6896026, "complete": 240}, {"at": 1793586172.6817977, "complete": 240}, {"at": 1793586232.6999586, "complete": 240}, {"at": 1793586292.6935673, "complete": 240}, {"at": 1793586352.7005577, "complete": 241}, {"at": 1793586412.698628, "complete": 241}, {"at": 1793586472.7076387, "complete": 241}, {"at": 1793586532.7080545, "complete": 242}, {"at": 1793586592.7165608, "complete": 242}, {"at": 1793586652.7186508, "complete": 242}, {"at": 1793586712.7307124, "complete": 244}, {"at": 1793586772.7324688, "complete": 244}, {"at": 1793586832.732423, "complete": 244}, {"at": 1793586892.7384965, "complete": 244}, {"at": 1793586952.73996, "complete": 244}, {"at": 1793587012.7585795, "complete": 246}, {"at": 1793587072.7481163, "complete": 246}, {"at": 1793587132.7537265, "complete": 246}, {"at": 1793587192.766892, "complete": 246}, {"at": 1793587252.7595913, "complete": 246}, {"at": 1793587312.76958, "complete": 246}, {"at": 1793587372.768897, "complete": 247}, {"at": 1793587432.7750099, "complete": 247}, {"at": 1793587492.7745407, "complete": 247}, {"at": 1793587552.7930424, "complete": 247}, {"at": 1793587612.8053164, "complete": 247}, {"at": 1793587672.7856402, "complete": 247}, {"at": 1793587732.7871742, "complete": 247}, {"at": 1793587792.8020053, "complete": 247}, {"at": 1793587852.7928832, "complete": 247}, {"at": 1793587912.796153, "complete": 247}, {"at": 1793587972.8033156, "complete": 248}, {"at": 1793588032.8107262, "complete": 248}, {"at": 1793588092.804908, "complete": 248}, {"at": 1793588152.8170915, "complete": 249}, {"at": 1793588212.8319278, "complete": 249}, {"at": 1793588272.8149095, "complete": 249}, {"at": 1793588332.8232622, "complete": 250}, {"at": 1793588392.8363435, "complete": 250}, {"at": 1793588452.826002, "complete": 250}, {"at": 1793588512.8354306, "complete": 250}, {"at": 1793588572.8402731, "complete": 250}, {"at": 1793588632.8354247, "complete": 250}, {"at": 1793588692.8391652, "complete": 250}, {"at": 1793588752.84502, "complete": 250}, {"at": 1793588812.846456, "complete": 250}, {"at": 1793588872.853451, "complete": 250}, {"at": 1793588932.857277, "complete": 251}, {"at": 1793588992.8619945, "complete": 252}, {"at": 1793589052.8602152, "complete": 252}, {"at": 1793589112.8695726, "complete": 253}, {"at": 1793589172.8678432, "complete": 253}, {"at": 1793589232.8858323, "complete": 253}, {"at": 1793589292.878223, "complete": 253}, {"at": 1793589352.87894, "complete": 253}, {"at": 1793589412.8853755, "complete": 254}, {"at": 1793589472.8892503, "complete": 255}, {"at": 1793589532.8936496, "complete": 255}, {"at": 1793589592.9017978, "complete": 255}, {"at": 1793589652.9032779, "complete": 255}, {"at": 1793589712.9053748, "complete": 256}, {"at": 1793589772.911792, "complete": 256}, {"at": 1793589832.9077463, "complete": 256}, {"at": 1793589892.9143932, "complete": 256}, {"at": 1793589952.9186475, "complete": 256}, {"at": 1793590012.9178839, "complete": 256}, {"at": 1793590072.917188, "complete": 258}, {"at": 1793590132.920904, "complete": 258}, {"at": 1793590192.9273474, "complete": 258}, {"at": 1793590252.925796, "complete": 258}, {"at": 1793590312.9291472, "complete": 258}, {"at": 1793590372.9324937, "complete": 259}, {"at": 1793590432.9325993, "complete": 259}, {"at": 1793590492.9385545, "complete": 259}, {"at": 1793590552.9388545, "complete": 259}, {"at": 1793590612.949204, "complete": 259}, {"at": 1793590672.948536, "complete": 259}, {"at": 1793590732.946759, "complete": 259}, {"at": 1793590792.9570494, "complete": 260}, {"at": 1793590852.9840841, "complete": 260}, {"at": 1793590912.9737308, "complete": 260}, {"at": 1793590972.9717226, "complete": 260}, {"at": 1793591032.988772, "complete": 260}, {"at": 1793591092.9769633, "complete": 260}, {"at": 1793591152.9761393, "complete": 260}, {"at": 1793591212.9866748, "complete": 260}, {"at": 1793591272.9835074, "complete": 260}, {"at": 1793591332.9883168, "complete": 260}, {"at": 1793591392.992159, "complete": 261}, {"at": 1793591452.9865608, "complete": 261}, {"at": 1793591512.994905, "complete": 261}, {"at": 1793591572.9926765, "complete": 261}, {"at": 1793591633.0139134, "complete": 262}, {"at": 1793591693.0181448, "complete": 262}, {"at": 1793591753.01163, "complete": 262}, {"at": 1793591813.0136478, "complete": 262}, {"at": 1793591873.0142226, "complete": 263}, {"at": 1793591933.0351496, "complete": 263}, {"at": 1793591993.0256884, "complete": 263}, {"at": 1793592053.0333943, "complete": 263}, {"at": 1793592113.0402043, "complete": 263}, {"at": 1793592173.044423, "complete": 264}, {"at": 1793602949.75292, "complete": 301}, {"at": 1793603009.8428822, "complete": 301}, {"at": 1793603069.835964, "complete": 301}, {"at": 1793603129.775828, "complete": 301}, {"at": 1793603189.767979, "complete": 301}, {"at": 1793603249.8072236, "complete": 301}, {"at": 1793603270.3492634, "complete": 301}, {"at": 1793603330.1520753, "complete": 301}, {"at": 1793603390.1547627, "complete": 301}]}
 
1
+ {"schema": "egorenderer.public_progress.v1", "collected_at": 1793608190.4670637, "refresh_seconds": 60, "default_campaign": "OakInk2", "oakink_render": {"dataset": "OakInk2", "package_index": "OakInk2/packages/final_native289_v354_20261102/INDEX.json", "execution_revision": "355", "queue_alive": true, "admission_held": false, "counts": {"complete": 1, "running": 4, "ready": 566, "failed": 0, "waiting_assets": 51, "total": 622}, "scope": {"sources": 622, "source_frames": 1002995, "variants": 1, "expected_variant_frames": 1002995, "historical_extra_complete": 0, "cancelled_extra": 0}, "coverage": {"completed_variant_frames": 318, "sources_with_any_variant": 1, "sources_with_all_variants": 1}, "throughput": {"packages_last_hour": 1, "queued_eta_hours": null}, "known_gt_missing": [], "jobs": [{"source": "sequence_000000", "variant": 1, "state": "RUNNING", "frames": 2613, "storage": "NAS", "phase": "V5_RANDOMIZED_SCENE_CANONICAL_SURFACE"}, {"source": "sequence_000003", "variant": 1, "state": "RUNNING", "frames": 1699, "storage": "NAS", "phase": "V5_RANDOMIZED_SCENE_CANONICAL_SURFACE"}, {"source": "sequence_000005", "variant": 1, "state": "RUNNING", "frames": 1989, "storage": "NAS", "phase": "V5_RANDOMIZED_SCENE_CANONICAL_SURFACE"}, {"source": "sequence_000006", "variant": 1, "state": "RUNNING", "frames": 1282, "storage": "SSD", "phase": "CYCLES_OPTIX_16SPP_GPU_OIDN"}, {"source": "sequence_000036", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4981, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000041", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4401, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000047", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4302, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000050", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 3875, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000051", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5417, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000054", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4997, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000057", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4753, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000058", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5011, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000071", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5111, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000076", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4724, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000079", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 753, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000084", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4792, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000086", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 2930, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000090", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4459, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000091", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4410, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000098", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5215, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000103", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5619, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000111", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 3993, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000112", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4189, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000118", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4503, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000126", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5913, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000128", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 3949, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000134", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4621, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000159", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 3783, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000181", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5322, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000247", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5978, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000256", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4058, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000277", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4137, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000279", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4098, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000290", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4920, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000332", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4259, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000334", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4685, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000403", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 1886, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000405", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 3793, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000409", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5647, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000412", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4645, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000446", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 609, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000480", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 2553, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000487", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4691, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000520", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4113, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000544", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4091, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000546", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4429, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000554", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4072, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000555", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 5551, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000584", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4436, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000590", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4303, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000602", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 4810, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000610", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 664, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000611", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 625, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000612", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 527, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}, {"source": "sequence_000620", "variant": 1, "state": "WAIT_UPSTREAM_ASSET", "frames": 639, "storage": null, "phase": "WAIT_UPSTREAM_ASSET"}], "recent": [{"source": "sequence_000208", "variant": 1, "at": 1793607728.9081538}]}, "dataset_release": "V006", "execution_revision": "353", "queue_alive": false, "admission_held": false, "counts": {"complete": 301, "running": 0, "ready": 0, "failed": 0, "total": 301}, "scope": {"sources": 301, "source_frames": 218273, "variants": 1, "expected_variant_frames": 218273, "historical_extra_complete": 2, "cancelled_extra": 600}, "coverage": {"completed_variant_frames": 218273, "sources_with_any_variant": 301, "sources_with_all_variants": 301}, "throughput": {"packages_last_hour": 0, "queued_eta_hours": null}, "training_ready": null, "known_gt_missing": [{"source": "arctic_s01_capsulemachine_grab_01", "variant": 1}, {"source": "arctic_s09_laptop_use_03", "variant": 1}], "auxiliary_fits": "PENDING_UPSTREAM_HANDOFF", "jobs": [], "recent": [{"at": 1793599829.9072523, "source": "arctic_s10_laptop_use_02", "variant": 1}, {"at": 1793599581.3385708, "source": "arctic_s10_notebook_use_02", "variant": 1}, {"at": 1793599567.6335635, "source": "arctic_s10_waffleiron_use_02", "variant": 1}, {"at": 1793599500.593456, "source": "arctic_s10_waffleiron_grab_01", "variant": 1}, {"at": 1793599276.667639, "source": "arctic_s10_phone_grab_01", "variant": 1}, {"at": 1793599134.962276, "source": "arctic_s10_phone_use_02", "variant": 1}, {"at": 1793598927.6839998, "source": "arctic_s10_waffleiron_use_01", "variant": 1}, {"at": 1793598411.1581776, "source": "arctic_s10_phone_use_01_retake", "variant": 1}], "hardware": {"gpus": [{"index": 0, "utilization": 27, "used_mib": 589, "total_mib": 97887}, {"index": 1, "utilization": 0, "used_mib": 5, "total_mib": 97887}, {"index": 2, "utilization": 97, "used_mib": 5733, "total_mib": 97887}, {"index": 3, "utilization": 0, "used_mib": 6, "total_mib": 97887}], "cpu_percent": 7.8, "cpu_logical": 72}, "storage": {"ssd_available_gib": 1237.5, "nas_available_gib": 2758.1, "ssd_budget_gib": 896.0, "ssd_reserved_gib": 188.5, "nas_active": 3, "nas_limit": 4}, "hardcases": {"complete": 15, "expected": 15, "frames": 10838, "training_ready": false}, "oakink_assets": {"counts": {"COMPLETE": 571, "FAILED": 13, "READY": 38}, "total": 622, "final_render_count": null}, "history": [{"at": 1793590372.9324937, "complete": 259}, {"at": 1793590432.9325993, "complete": 259}, {"at": 1793590492.9385545, "complete": 259}, {"at": 1793590552.9388545, "complete": 259}, {"at": 1793590612.949204, "complete": 259}, {"at": 1793590672.948536, "complete": 259}, {"at": 1793590732.946759, "complete": 259}, {"at": 1793590792.9570494, "complete": 260}, {"at": 1793590852.9840841, "complete": 260}, {"at": 1793590912.9737308, "complete": 260}, {"at": 1793590972.9717226, "complete": 260}, {"at": 1793591032.988772, "complete": 260}, {"at": 1793591092.9769633, "complete": 260}, {"at": 1793591152.9761393, "complete": 260}, {"at": 1793591212.9866748, "complete": 260}, {"at": 1793591272.9835074, "complete": 260}, {"at": 1793591332.9883168, "complete": 260}, {"at": 1793591392.992159, "complete": 261}, {"at": 1793591452.9865608, "complete": 261}, {"at": 1793591512.994905, "complete": 261}, {"at": 1793591572.9926765, "complete": 261}, {"at": 1793591633.0139134, "complete": 262}, {"at": 1793591693.0181448, "complete": 262}, {"at": 1793591753.01163, "complete": 262}, {"at": 1793591813.0136478, "complete": 262}, {"at": 1793591873.0142226, "complete": 263}, {"at": 1793591933.0351496, "complete": 263}, {"at": 1793591993.0256884, "complete": 263}, {"at": 1793592053.0333943, "complete": 263}, {"at": 1793592113.0402043, "complete": 263}, {"at": 1793592173.044423, "complete": 264}, {"at": 1793602949.75292, "complete": 301}, {"at": 1793603009.8428822, "complete": 301}, {"at": 1793603069.835964, "complete": 301}, {"at": 1793603129.775828, "complete": 301}, {"at": 1793603189.767979, "complete": 301}, {"at": 1793603249.8072236, "complete": 301}, {"at": 1793603270.3492634, "complete": 301}, {"at": 1793603330.1520753, "complete": 301}, {"at": 1793603390.1547627, "complete": 301}, {"at": 1793603450.163227, "complete": 301}, {"at": 1793603510.3033793, "complete": 301}, {"at": 1793603570.1884816, "complete": 301}, {"at": 1793603630.1787376, "complete": 301}, {"at": 1793603690.256032, "complete": 301}, {"at": 1793603750.1972592, "complete": 301}, {"at": 1793603810.1838398, "complete": 301}, {"at": 1793603870.184031, "complete": 301}, {"at": 1793603930.1897032, "complete": 301}, {"at": 1793603990.1964705, "complete": 301}, {"at": 1793604050.2699425, "complete": 301}, {"at": 1793604110.188763, "complete": 301}, {"at": 1793604170.1954722, "complete": 301}, {"at": 1793604230.2031386, "complete": 301}, {"at": 1793604290.2131243, "complete": 301}, {"at": 1793604350.227883, "complete": 301}, {"at": 1793604410.2156103, "complete": 301}, {"at": 1793604470.2207773, "complete": 301}, {"at": 1793604530.2741141, "complete": 301}, {"at": 1793604590.2273111, "complete": 301}, {"at": 1793604650.2838192, "complete": 301}, {"at": 1793604710.2465558, "complete": 301}, {"at": 1793604770.2388484, "complete": 301}, {"at": 1793604830.245419, "complete": 301}, {"at": 1793604890.2532506, "complete": 301}, {"at": 1793604950.251598, "complete": 301}, {"at": 1793605010.256997, "complete": 301}, {"at": 1793605070.2521696, "complete": 301}, {"at": 1793605130.26713, "complete": 301}, {"at": 1793605190.2742016, "complete": 301}, {"at": 1793605250.2661445, "complete": 301}, {"at": 1793605310.2735674, "complete": 301}, {"at": 1793605370.4071732, "complete": 301}, {"at": 1793605430.468356, "complete": 301}, {"at": 1793605490.869312, "complete": 301}, {"at": 1793605550.3169258, "complete": 301}, {"at": 1793605612.910256, "complete": 301}, {"at": 1793605670.3381834, "complete": 301}, {"at": 1793605730.3121774, "complete": 301}, {"at": 1793605790.3203146, "complete": 301}, {"at": 1793605850.3221014, "complete": 301}, {"at": 1793605910.3269556, "complete": 301}, {"at": 1793605970.323827, "complete": 301}, {"at": 1793606030.3297503, "complete": 301}, {"at": 1793606090.322446, "complete": 301}, {"at": 1793606150.3230135, "complete": 301}, {"at": 1793606210.3313498, "complete": 301}, {"at": 1793606270.3321695, "complete": 301}, {"at": 1793606330.3276408, "complete": 301}, {"at": 1793606390.3417046, "complete": 301}, {"at": 1793606450.3940213, "complete": 301}, {"at": 1793606510.353171, "complete": 301}, {"at": 1793606570.3497396, "complete": 301}, {"at": 1793606630.3536484, "complete": 301}, {"at": 1793606690.36172, "complete": 301}, {"at": 1793606750.3657198, "complete": 301}, {"at": 1793606810.3743613, "complete": 301}, {"at": 1793606870.3797557, "complete": 301}, {"at": 1793606930.3859882, "complete": 301}, {"at": 1793606990.390066, "complete": 301}, {"at": 1793607050.3980322, "complete": 301}, {"at": 1793607110.4123662, "complete": 301}, {"at": 1793607170.4114814, "complete": 301}, {"at": 1793607230.413172, "complete": 301}, {"at": 1793607290.4118001, "complete": 301}, {"at": 1793607350.4211802, "complete": 301}, {"at": 1793607410.4306183, "complete": 301}, {"at": 1793607470.4324617, "complete": 301}, {"at": 1793607530.442642, "complete": 301}, {"at": 1793607590.449406, "complete": 301}, {"at": 1793607650.4567335, "complete": 301}, {"at": 1793607710.5347672, "complete": 301}, {"at": 1793607770.4658785, "complete": 301}, {"at": 1793607830.468705, "complete": 301}, {"at": 1793607890.4812644, "complete": 301}, {"at": 1793607950.4595575, "complete": 301}, {"at": 1793608010.4649732, "complete": 301}, {"at": 1793608070.4651248, "complete": 301}, {"at": 1793608130.4676378, "complete": 301}, {"at": 1793608190.4670637, "complete": 301}]}
data/egorender-registry.json CHANGED
@@ -2455,5 +2455,33 @@
2455
  "status": "SCRIPTS_FROZEN_NOT_DATASET_DEPTH_RENDER_COMPLETE",
2456
  "scope": "Final assembly/render with separate compressed millimeter clean GT and noisy sensor depth; retain both channels",
2457
  "sha256": "5136397afe4eed75115af00e2903c13c58c4c42a9063a9eb328277caad2b29af"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2458
  }
2459
  ]
 
2455
  "status": "SCRIPTS_FROZEN_NOT_DATASET_DEPTH_RENDER_COMPLETE",
2456
  "scope": "Final assembly/render with separate compressed millimeter clean GT and noisy sensor depth; retain both channels",
2457
  "sha256": "5136397afe4eed75115af00e2903c13c58c4c42a9063a9eb328277caad2b29af"
2458
+ },
2459
+ {
2460
+ "id": "352",
2461
+ "title": "FinalSceneRenderAndPaperStyleActiveStereoDepth",
2462
+ "status": "SCRIPTS_FROZEN_NOT_DATASET_DEPTH_RENDER_COMPLETE",
2463
+ "scope": "Final assembly/render with separate compressed millimeter clean GT and noisy sensor depth; retain both channels",
2464
+ "sha256": "b2a34e9c7ec262777b528e0f91a0fb8c8f201091ce5e94e87db360b51d184b94"
2465
+ },
2466
+ {
2467
+ "id": "353",
2468
+ "title": "FinalSceneRenderAndPaperStyleActiveStereoDepth",
2469
+ "status": "SCRIPTS_FROZEN_NOT_DATASET_DEPTH_RENDER_COMPLETE",
2470
+ "scope": "Final assembly/render with separate compressed millimeter clean GT and noisy sensor depth; retain both channels",
2471
+ "sha256": "7b7c79b3f9981a44f4521becf6f70868391657aba78653d450fd2b2b92e7f221"
2472
+ },
2473
+ {
2474
+ "id": "354",
2475
+ "title": "FinalSceneRenderAndPaperStyleActiveStereoDepth",
2476
+ "status": "SCRIPTS_FROZEN_NOT_DATASET_DEPTH_RENDER_COMPLETE",
2477
+ "scope": "Final assembly/render with separate compressed millimeter clean GT and noisy sensor depth; retain both channels",
2478
+ "sha256": "44cdd8b820216bc75792de2352b46903f60eb980bc5e8ea7200bfa36a58483eb"
2479
+ },
2480
+ {
2481
+ "id": "355",
2482
+ "title": "FinalSceneRenderAndPaperStyleActiveStereoDepth",
2483
+ "status": "SCRIPTS_FROZEN_NOT_DATASET_DEPTH_RENDER_COMPLETE",
2484
+ "scope": "Final assembly/render with separate compressed millimeter clean GT and noisy sensor depth; retain both channels",
2485
+ "sha256": "33667205d4fe7bf673fe77ba6c422e01a83cb63d27c08b610c41375b870b6b9d"
2486
  }
2487
  ]
data/egorender.json CHANGED
@@ -21,7 +21,9 @@
21
  ["345–348","容量与接管","修复容量等待/旧日志接管;896GiB总配额,200GiB空闲底线,主GPU优先。"],
22
  ["349","CPU/I/O并行","同卡2个工作目录;双通道独立压缩写入、4帧预读、运动向量4路预取。"],
23
  ["350","SSD+NAS","NAS并行1至4条自适应;保留完整父预留,双目临时缓冲占256MiB SSD。" ],
24
- ["351","每动作只生产一次","只调度slot1;取消600个未启动额外变体,已完成2份额外结果保留为历史,不计入301目标。"]
 
 
25
  ],
26
  "channels": [
27
  ["RGB","rgb.mp4","1536×864 · 30fps","最终后处理图像,不是raw辐射度;以包内metadata为准。"],
 
21
  ["345–348","容量与接管","修复容量等待/旧日志接管;896GiB总配额,200GiB空闲底线,主GPU优先。"],
22
  ["349","CPU/I/O并行","同卡2个工作目录;双通道独立压缩写入、4帧预读、运动向量4路预取。"],
23
  ["350","SSD+NAS","NAS并行1至4条自适应;保留完整父预留,双目临时缓冲占256MiB SSD。" ],
24
+ ["351","每动作只生产一次","只调度slot1;取消600个未启动额外变体,已完成2份额外结果保留为历史,不计入301目标。"],
25
+ ["352–353","ARCTIC收尾","容量感知桌面摆放和断点恢复;301条生成队列终态,不代表历史GT缺口或辅助标签已全部补齐。"],
26
+ ["354–355","OakInk2生产","独立原生四元数手/多物体适配;571条资产就绪、51条待上游,每源只生产一次;首条318帧已完整归档后展开四卡调度。"]
27
  ],
28
  "channels": [
29
  ["RGB","rgb.mp4","1536×864 · 30fps","最终后处理图像,不是raw辐射度;以包内metadata为准。"],
deployment_manifest.json CHANGED
@@ -1,7 +1,7 @@
1
  {
2
  "repo_id": "DarthSoluke/EgoNetDatasetResearch",
3
  "repo_type": "space",
4
- "base_revision": "831819ed416a0fade2cb3295a0035719b9c897bf",
5
  "sdk": "static",
6
  "app_file": "index.html",
7
  "original_archive_sha256": "9d437cf8f781dd25354e3de6bdccf4a3e63c5eeb01efab5943ecfee709769160",
@@ -22,8 +22,8 @@
22
  },
23
  {
24
  "path": "README.md",
25
- "bytes": 3598,
26
- "sha256": "1d289040ec8c0c72a8976104f859a76f8d26dabf8af2d456a30c4278f293f918"
27
  },
28
  {
29
  "path": "data/datasets.json",
@@ -32,18 +32,18 @@
32
  },
33
  {
34
  "path": "data/egorender-progress.json",
35
- "bytes": 7585,
36
- "sha256": "2eb9a5a7c3382f0476e737a0f70699059679215e228a0a56bf341e2ccf8a42e4"
37
  },
38
  {
39
  "path": "data/egorender-registry.json",
40
- "bytes": 104055,
41
- "sha256": "267c9baf1a438c9e1463061c6e4d1d3587b2c9141c1d219c567335f41f3737d4"
42
  },
43
  {
44
  "path": "data/egorender.json",
45
- "bytes": 8637,
46
- "sha256": "28d2875cc65897d94a7ea951ff4a8e5c5493ee4cadc13e1657e2231fe80da957"
47
  },
48
  {
49
  "path": "data/figures.json",
@@ -87,8 +87,8 @@
87
  },
88
  {
89
  "path": "index.html",
90
- "bytes": 3182,
91
- "sha256": "626d0f1927867c59aab0fdbc78e4eab47f4b9d7b81d39bcd90beb4df77630ba2"
92
  },
93
  {
94
  "path": "media/.gitkeep",
@@ -1443,7 +1443,7 @@
1443
  {
1444
  "path": "src/app.js",
1445
  "bytes": 6510,
1446
- "sha256": "33caa2d1f44b946ce4c65afc8d5ecc7e74511ee8c8aeed1ba153440b9181154a"
1447
  },
1448
  {
1449
  "path": "src/catalog.js",
@@ -1452,8 +1452,8 @@
1452
  },
1453
  {
1454
  "path": "src/page.html",
1455
- "bytes": 3182,
1456
- "sha256": "626d0f1927867c59aab0fdbc78e4eab47f4b9d7b81d39bcd90beb4df77630ba2"
1457
  },
1458
  {
1459
  "path": "src/preview.js",
@@ -1472,13 +1472,13 @@
1472
  },
1473
  {
1474
  "path": "src/synthetic.css",
1475
- "bytes": 8256,
1476
- "sha256": "a9dc1fe5356f731cb76d7c687edb819f0a7a6cf9b25de9ab19a3c49fb38265ed"
1477
  },
1478
  {
1479
  "path": "src/synthetic.js",
1480
- "bytes": 22043,
1481
- "sha256": "a0f5a76e4d30aebb785765eaceb72406c0108f903ece0fb1fa3aad07ad58cb38"
1482
  },
1483
  {
1484
  "path": "src/ui.js",
@@ -1563,5 +1563,12 @@
1563
  "natural_generation_completion_label": true,
1564
  "training_complete": false,
1565
  "production_changes": false
 
 
 
 
 
 
 
1566
  }
1567
  }
 
1
  {
2
  "repo_id": "DarthSoluke/EgoNetDatasetResearch",
3
  "repo_type": "space",
4
+ "base_revision": "271b60d78b782209425e16c519385ea78a3f49f2",
5
  "sdk": "static",
6
  "app_file": "index.html",
7
  "original_archive_sha256": "9d437cf8f781dd25354e3de6bdccf4a3e63c5eeb01efab5943ecfee709769160",
 
22
  },
23
  {
24
  "path": "README.md",
25
+ "bytes": 3946,
26
+ "sha256": "4eb14367b0aadb5142bbc80138b41d15af5a0e707ff135d84ced25237f49d224"
27
  },
28
  {
29
  "path": "data/datasets.json",
 
32
  },
33
  {
34
  "path": "data/egorender-progress.json",
35
+ "bytes": 16199,
36
+ "sha256": "7e75bb3f60f9abc4adf0537520d61f8240a0a44cb899af99ec4549cafaa756cd"
37
  },
38
  {
39
  "path": "data/egorender-registry.json",
40
+ "bytes": 105511,
41
+ "sha256": "3cd64b38525a68bd5c8b584f1f702b996c1316e54ce464c1ac9b58d2bfd2cf1f"
42
  },
43
  {
44
  "path": "data/egorender.json",
45
+ "bytes": 8993,
46
+ "sha256": "e405123c3d025694db2c9ef14e5867ae52b714c4b8e00b82d29e837dd39c07db"
47
  },
48
  {
49
  "path": "data/figures.json",
 
87
  },
88
  {
89
  "path": "index.html",
90
+ "bytes": 3186,
91
+ "sha256": "f7936f1204115078896a97c78125c8e0886ea736ef05b2d9868231b7f9cc5456"
92
  },
93
  {
94
  "path": "media/.gitkeep",
 
1443
  {
1444
  "path": "src/app.js",
1445
  "bytes": 6510,
1446
+ "sha256": "54107cb0dd72581688d02afa2642fd48e11d305ee369d1e01933cf2cade4dd62"
1447
  },
1448
  {
1449
  "path": "src/catalog.js",
 
1452
  },
1453
  {
1454
  "path": "src/page.html",
1455
+ "bytes": 3186,
1456
+ "sha256": "f7936f1204115078896a97c78125c8e0886ea736ef05b2d9868231b7f9cc5456"
1457
  },
1458
  {
1459
  "path": "src/preview.js",
 
1472
  },
1473
  {
1474
  "path": "src/synthetic.css",
1475
+ "bytes": 8517,
1476
+ "sha256": "fa27f7a35f3c61fbbeb2c65d52a3a025c7542c9fa405595532d93a36361f5c48"
1477
  },
1478
  {
1479
  "path": "src/synthetic.js",
1480
+ "bytes": 25118,
1481
+ "sha256": "c4ae1b7df70fd06a6a14fd96913cd62c6752db7c4e9f04504703e522682f3c74"
1482
  },
1483
  {
1484
  "path": "src/ui.js",
 
1563
  "natural_generation_completion_label": true,
1564
  "training_complete": false,
1565
  "production_changes": false
1566
+ },
1567
+ "oakink_progress": {
1568
+ "target_sources": 622,
1569
+ "ready_source_assets": 571,
1570
+ "upstream_pending": 51,
1571
+ "native_hand_format": "wxyz quaternion",
1572
+ "production_control_api": false
1573
  }
1574
  }
index.html CHANGED
@@ -14,9 +14,9 @@
14
  <title>EgoNet Datasets</title>
15
  <link rel="icon" href="data:," />
16
  <link rel="stylesheet" href="src/styles.css" />
17
- <link rel="stylesheet" href="src/synthetic.css?v=dataset-first-20261102" />
18
  <script src="src/vendor/lucide.min.js" defer></script>
19
- <script type="module" src="src/app.js?v=progress-recovery-20261102"></script>
20
  </head>
21
  <body>
22
  <a class="skip-link" href="#app">跳到内容</a>
 
14
  <title>EgoNet Datasets</title>
15
  <link rel="icon" href="data:," />
16
  <link rel="stylesheet" href="src/styles.css" />
17
+ <link rel="stylesheet" href="src/synthetic.css?v=oakink-production-20261102" />
18
  <script src="src/vendor/lucide.min.js" defer></script>
19
+ <script type="module" src="src/app.js?v=oakink-production-20261102"></script>
20
  </head>
21
  <body>
22
  <a class="skip-link" href="#app">跳到内容</a>
src/app.js CHANGED
@@ -8,7 +8,7 @@ import {
8
  bindDetail,
9
  } from "./catalog.js";
10
  import { methodsView, somaView, samplesView } from "./reference.js";
11
- import synthetic from "./synthetic.js?v=progress-recovery-20261102";
12
 
13
  const app = document.getElementById("app");
14
  let context;
 
8
  bindDetail,
9
  } from "./catalog.js";
10
  import { methodsView, somaView, samplesView } from "./reference.js";
11
+ import synthetic from "./synthetic.js?v=oakink-production-20261102";
12
 
13
  const app = document.getElementById("app");
14
  let context;
src/page.html CHANGED
@@ -14,9 +14,9 @@
14
  <title>EgoNet Datasets</title>
15
  <link rel="icon" href="data:," />
16
  <link rel="stylesheet" href="src/styles.css" />
17
- <link rel="stylesheet" href="src/synthetic.css?v=dataset-first-20261102" />
18
  <script src="src/vendor/lucide.min.js" defer></script>
19
- <script type="module" src="src/app.js?v=progress-recovery-20261102"></script>
20
  </head>
21
  <body>
22
  <a class="skip-link" href="#app">跳到内容</a>
 
14
  <title>EgoNet Datasets</title>
15
  <link rel="icon" href="data:," />
16
  <link rel="stylesheet" href="src/styles.css" />
17
+ <link rel="stylesheet" href="src/synthetic.css?v=oakink-production-20261102" />
18
  <script src="src/vendor/lucide.min.js" defer></script>
19
+ <script type="module" src="src/app.js?v=oakink-production-20261102"></script>
20
  </head>
21
  <body>
22
  <a class="skip-link" href="#app">跳到内容</a>
src/synthetic.css CHANGED
@@ -93,6 +93,14 @@
93
  border-top: 1px solid var(--line);
94
  border-bottom: 1px solid var(--line);
95
  }
 
 
 
 
 
 
 
 
96
  .synth-kpi {
97
  padding: 20px 16px;
98
  min-width: 0;
@@ -414,6 +422,9 @@
414
  margin-right: 8px;
415
  }
416
  @media (max-width: 760px) {
 
 
 
417
  .synth-kpis {
418
  grid-template-columns: repeat(2, minmax(0, 1fr));
419
  }
 
93
  border-top: 1px solid var(--line);
94
  border-bottom: 1px solid var(--line);
95
  }
96
+ .synth-kpis[data-columns="5"] {
97
+ grid-template-columns: repeat(5, minmax(0, 1fr));
98
+ }
99
+ .synth-title select {
100
+ min-height: 30px;
101
+ padding: 3px 6px;
102
+ font-size: 12px;
103
+ }
104
  .synth-kpi {
105
  padding: 20px 16px;
106
  min-width: 0;
 
422
  margin-right: 8px;
423
  }
424
  @media (max-width: 760px) {
425
+ .synth-kpis[data-columns="5"] {
426
+ grid-template-columns: repeat(2, minmax(0, 1fr));
427
+ }
428
  .synth-kpis {
429
  grid-template-columns: repeat(2, minmax(0, 1fr));
430
  }
src/synthetic.js CHANGED
@@ -7,7 +7,8 @@ let content,
7
  ageTimer,
8
  request,
9
  generation = 0;
10
- let selectedVersion = "006",
 
11
  selectedJobs = "active",
12
  registryQuery = "",
13
  registryPage = 0;
@@ -34,6 +35,7 @@ const phases = {
34
  VERIFIED_SEQUENTIAL_NAS_PUBLICATION: "NAS归档",
35
  INITIALIZING: "初始化",
36
  FAILED: "待定点修复",
 
37
  };
38
  const sections = [
39
  ["progress", "进度"],
@@ -66,13 +68,13 @@ export function valid(value) {
66
  );
67
  }
68
  function header() {
69
- return `<div class="synth-head"><div class="synth-title"><h1>EgoRenderer</h1><span class="release-label">V006</span><span class="synth-identity" id="synth-execution"></span></div><div class="synth-status" id="synth-status" aria-live="polite"><span class="synth-dot"></span><span id="synth-freshness">读取快照</span>${icon("refresh-cw", "刷新进度", 'id="synth-refresh"')}</div></div>
70
  <nav class="synth-nav" aria-label="合成数据">${sections.map(([id, label]) => `<a href="#synthetic/${id}" ${tab() === id ? 'aria-current="page"' : ""}>${label}</a>`).join("")}</nav>`;
71
  }
72
  function progressView() {
73
  return `<div id="synth-summary" class="synth-kpis" aria-live="polite"></div><div class="part"><div id="synth-progress" class="synth-progress" role="progressbar" aria-label="ARCTIC随机化包生成进度"></div><div id="synth-facts" class="synth-facts"></div></div>
74
  <div id="synth-notices"></div>${section("数据范围", '<div id="synth-cohorts"></div>')}
75
- <section class="synth-section"><div class="synth-toolbar"><h2>当前任务</h2><select id="synth-job-filter" aria-label="任务状态"><option value="active">运行中</option><option value="failed">失败</option><option value="all">运行与失败</option></select></div><div id="synth-jobs"></div></section>
76
  <details class="reference-details"><summary>主机与存储</summary><div id="synth-resources" class="synth-resource"></div><div id="synth-storage" class="synth-facts"></div></details>
77
  ${section("最近归档", '<div id="synth-recent"></div>')}`;
78
  }
@@ -90,10 +92,36 @@ export function progressState(value, error = false, now = Date.now() / 1000) {
90
  c.failed === 0
91
  )
92
  return { state: "complete", prefix: "生成队列结束 · " };
 
 
 
 
 
 
 
 
93
  if (!value.queue_alive) return { state: "stopped", prefix: "队列已停 · " };
94
  if (value.admission_held) return { state: "stopped", prefix: "暂停新增 · " };
95
  return { state: "live", prefix: "" };
96
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  function updateFreshness(error) {
98
  if (!root) return;
99
  const status = root.querySelector("#synth-status"),
@@ -103,11 +131,16 @@ function updateFreshness(error) {
103
  label.textContent = error ? "状态暂不可用" : "读取快照";
104
  return;
105
  }
106
- const display = progressState(snapshot, error);
 
 
 
 
 
107
  status.dataset.state = display.state;
108
  label.textContent = display.prefix + clock(snapshot.collected_at);
109
  root.querySelector("#synth-execution").textContent =
110
- "执行 " + snapshot.execution_revision;
111
  }
112
  function updateProgress() {
113
  if (!root || tab() !== "progress") return;
@@ -116,20 +149,24 @@ function updateProgress() {
116
  '<p class="synth-empty">状态暂不可用。不会以零值替代上次进度。</p>';
117
  return;
118
  }
119
- const s = snapshot,
120
  c = s.counts;
121
- root.querySelector("#synth-summary").innerHTML = [
122
  ["渲染与深度完成", `${number(c.complete)} / ${number(c.total)}`],
123
  ["运行中", number(c.running)],
124
  ["待领取", number(c.ready)],
125
  ["失败", number(c.failed)],
126
- ]
 
 
 
127
  .map(
128
  ([k, v]) =>
129
  `<div class="synth-kpi"><strong>${v}</strong><span>${k}</span></div>`,
130
  )
131
  .join("");
132
  const progress = root.querySelector("#synth-progress");
 
133
  progress.setAttribute("aria-valuemin", "0");
134
  progress.setAttribute("aria-valuemax", c.total);
135
  progress.setAttribute("aria-valuenow", c.complete);
@@ -146,15 +183,15 @@ function updateProgress() {
146
  root.querySelector("#synth-facts").innerHTML =
147
  `<span>完成 <b>${((100 * c.complete) / c.total).toFixed(1)}%</b></span><span>已生成帧 <b>${number(s.coverage.completed_variant_frames)} / ${number(s.scope.expected_variant_frames)}</b></span><span>最近1小时 <b>${number(s.throughput.packages_last_hour)}包</b></span><span>队列预计(不含失败) <b>${s.throughput.queued_eta_hours == null ? "—" : number(s.throughput.queued_eta_hours) + "小时"}</b></span>`;
148
  root.querySelector("#synth-notices").innerHTML =
149
- `<div class="synth-callout">训练资格待确认 · 辅助拟合待交付${s.known_gt_missing.length ? ` · <b>${s.known_gt_missing.length}</b> 个历史包缺GT深度` : ""}</div>`;
150
  const oak = s.oakink_assets,
151
  hc = s.hardcases;
152
  root.querySelector("#synth-cohorts").innerHTML = table(
153
  ["数据", "规模", "当前口径"],
154
  [
155
- `<tr><td>ARCTIC · V006</td><td class="num">${number(s.scope.sources)}源 / ${number(c.total)}包</td><td>${number(s.scope.source_frames)}源帧;${s.scope.variants === 1 ? "每条动作仅生产1份" : number(s.coverage.sources_with_all_variants) + "条动作完成全部" + s.scope.variants + "变体"}${s.scope.historical_extra_complete ? ";" + s.scope.historical_extra_complete + "份历史额外产物不计入目标" : ""}</td></tr>`,
156
  `<tr><td>Hard Cases · V006</td><td class="num">${hc.complete} / ${hc.expected}条样例</td><td>${number(hc.frames)}主源帧;三类各5条,独立于主队列</td></tr>`,
157
- `<tr><td>OakInk2 · V006</td><td class="num">${number(oak.total)}源</td><td>${number(oak.counts.COMPLETE || 0)}条人体资产完成;不是最终合成包计数</td></tr>`,
158
  '<tr><td>GRAB · V005</td><td class="num">1,314源组 / 2,425包</td><td>历史参数附件更新完成;V006新深度尚未据此宣称完成</td></tr>',
159
  ],
160
  );
@@ -163,7 +200,11 @@ function updateProgress() {
163
  const jobs = s.jobs.filter(
164
  (j) =>
165
  selectedJobs === "all" ||
166
- (selectedJobs === "failed" ? j.state === "FAILED" : j.state !== "FAILED"),
 
 
 
 
167
  );
168
  const multi = s.scope.variants > 1;
169
  root.querySelector("#synth-jobs").innerHTML = jobs.length
@@ -252,10 +293,17 @@ function updateRegistry() {
252
  icons();
253
  }
254
  function readingView() {
255
- const index = `import json, os\nfrom pathlib import Path\n\nroot = Path(os.environ["EGORENDER_ROOT"])\nindex = json.loads((root / "ARCTIC/packages/"\n "final_surface279_v287_20261030/INDEX.json").read_text())\nfor item in index["complete"]:\n package = Path(item["package"])\n meta = json.loads((package / "metadata.json").read_text())\n print(meta["sequence_index"], meta["frames"], meta["dataset_release"])\n # complete 是渲染终态;另查深度缺口与辅助标注。`;
 
 
 
 
 
256
  const depth = `from egorender_reader import DepthReader, depth_pair\nimport numpy as np\n\ngt_path, sensor_path = depth_pair(package)\nwith DepthReader(gt_path) as gt, DepthReader(sensor_path) as sensor:\n assert np.array_equal(gt.frames, sensor.frames)\n z_gt, valid_gt, source_frame = gt.frame(0)\n z_sensor, valid_sensor, other_frame = sensor.frame(0)\n assert source_frame == other_frame\n # z: float32 米,相机轴向Z;分别使用各自的valid。\n # 每个DataLoader worker长期持有reader,不逐帧重新打开整个NPZ。`;
257
  const camera = `with np.load(package / "camera_parameters.npz", allow_pickle=False) as c:\n source_frames = c["source_frame_index"]\n K = c["K"]\n world_to_camera = c["world_to_camera"]\n camera_to_world = c["camera_to_world"]\n print(c["camera_coordinates"], c["world_coordinates"])\n # 先核对坐标约定和K是否逐帧,不额外套一次坐标轴翻转。\n\nfrom egorender_reader import unpack_class_frame\nwith np.load(package / "masks_visible_2bit.npz", allow_pickle=False) as m:\n width, height = map(int, m["image_size"])\n classes = unpack_class_frame(m["packed_classes"][0], (height, width))\n print(m["classes"], m["bitorder"])\n # 当前常见: 0背景 / 1人体及衣物 / 2交互物体 / 3桌面;以文件为准。`;
258
- const native = `with np.load(package / "mano_parameters.npz", allow_pickle=False) as h:\n print(h.files)\n left_pose = h["left_pose"]\n left_translation = h["left_trans"]\n source_frames = h["source_frames"]\n # left/right_rot, pose, trans, shape来自原始数据集参数。\n # 参数化/手均值/坐标系遵循原始模型与包内来源,不把shape当拟合真值。\n\n# V005辅助附件不是render输入:\nfit_ref = json.loads((legacy_package / "mano_fit_current.json").read_text())\n# 按fit_ref和对应合同加载参数;左手必须搭配V005修正基底。`;
 
 
259
  const relocation = `from egorender_reader import DatasetLocations\n\nloc = DatasetLocations(package / "artifact_locations.json")\n# 给定包内记录的 {"path": ..., "sha256": ...} 引用:\nresolved = loc.read_bound_json(binding)\n# 先检查原JSON字节SHA,再解析历史路径及path-keyed字典。\n# 不覆盖immutable报告,也不要通过字符串替换伪造新SHA。`;
260
  return `${section(
261
  "文件与语义",
@@ -297,6 +345,15 @@ function paint() {
297
  : progressView();
298
  root.innerHTML = header() + body;
299
  root.querySelector("#synth-refresh").onclick = () => refresh();
 
 
 
 
 
 
 
 
 
300
  root.querySelectorAll("[data-version]").forEach(
301
  (b) =>
302
  (b.onclick = () => {
 
7
  ageTimer,
8
  request,
9
  generation = 0;
10
+ let selectedCampaign = null,
11
+ selectedVersion = "006",
12
  selectedJobs = "active",
13
  registryQuery = "",
14
  registryPage = 0;
 
35
  VERIFIED_SEQUENTIAL_NAS_PUBLICATION: "NAS归档",
36
  INITIALIZING: "初始化",
37
  FAILED: "待定点修复",
38
+ WAIT_UPSTREAM_ASSET: "等待上游资产",
39
  };
40
  const sections = [
41
  ["progress", "进度"],
 
68
  );
69
  }
70
  function header() {
71
+ return `<div class="synth-head"><div class="synth-title"><h1>EgoRenderer</h1><span class="release-label">V006</span><select id="synth-campaign" aria-label="生产数据集"><option value="OakInk2">OakInk2</option><option value="ARCTIC">ARCTIC</option></select><span class="synth-identity" id="synth-execution"></span></div><div class="synth-status" id="synth-status" aria-live="polite"><span class="synth-dot"></span><span id="synth-freshness">读取快照</span>${icon("refresh-cw", "刷新进度", 'id="synth-refresh"')}</div></div>
72
  <nav class="synth-nav" aria-label="合成数据">${sections.map(([id, label]) => `<a href="#synthetic/${id}" ${tab() === id ? 'aria-current="page"' : ""}>${label}</a>`).join("")}</nav>`;
73
  }
74
  function progressView() {
75
  return `<div id="synth-summary" class="synth-kpis" aria-live="polite"></div><div class="part"><div id="synth-progress" class="synth-progress" role="progressbar" aria-label="ARCTIC随机化包生成进度"></div><div id="synth-facts" class="synth-facts"></div></div>
76
  <div id="synth-notices"></div>${section("数据范围", '<div id="synth-cohorts"></div>')}
77
+ <section class="synth-section"><div class="synth-toolbar"><h2>当前任务</h2><select id="synth-job-filter" aria-label="任务状态"><option value="active">运行中</option><option value="failed">失败</option><option value="inputs">待上游资产</option><option value="all">全部未完成</option></select></div><div id="synth-jobs"></div></section>
78
  <details class="reference-details"><summary>主机与存储</summary><div id="synth-resources" class="synth-resource"></div><div id="synth-storage" class="synth-facts"></div></details>
79
  ${section("最近归档", '<div id="synth-recent"></div>')}`;
80
  }
 
92
  c.failed === 0
93
  )
94
  return { state: "complete", prefix: "生成队列结束 · " };
95
+ if (
96
+ !value.queue_alive &&
97
+ c.waiting_assets > 0 &&
98
+ !c.running &&
99
+ !c.ready &&
100
+ !c.failed
101
+ )
102
+ return { state: "waiting", prefix: "等待上游资产 · " };
103
  if (!value.queue_alive) return { state: "stopped", prefix: "队列已停 · " };
104
  if (value.admission_held) return { state: "stopped", prefix: "暂停新增 · " };
105
  return { state: "live", prefix: "" };
106
  }
107
+ export function campaignSnapshot(value, selected = null) {
108
+ if (!value) return null;
109
+ const choice = selected || value.default_campaign || "ARCTIC";
110
+ const view =
111
+ choice === "OakInk2" && value.oakink_render
112
+ ? value.oakink_render
113
+ : { dataset: "ARCTIC" };
114
+ return {
115
+ ...value,
116
+ ...view,
117
+ arctic_render: {
118
+ counts: value.counts,
119
+ scope: value.scope,
120
+ coverage: value.coverage,
121
+ known_gt_missing: value.known_gt_missing,
122
+ },
123
+ };
124
+ }
125
  function updateFreshness(error) {
126
  if (!root) return;
127
  const status = root.querySelector("#synth-status"),
 
131
  label.textContent = error ? "状态暂不可用" : "读取快照";
132
  return;
133
  }
134
+ const current = campaignSnapshot(snapshot, selectedCampaign);
135
+ const selector = root.querySelector("#synth-campaign");
136
+ selector.querySelector('option[value="OakInk2"]').disabled =
137
+ !snapshot.oakink_render;
138
+ selector.value = current.dataset;
139
+ const display = progressState(current, error);
140
  status.dataset.state = display.state;
141
  label.textContent = display.prefix + clock(snapshot.collected_at);
142
  root.querySelector("#synth-execution").textContent =
143
+ "执行 " + current.execution_revision;
144
  }
145
  function updateProgress() {
146
  if (!root || tab() !== "progress") return;
 
149
  '<p class="synth-empty">状态暂不可用。不会以零值替代上次进度。</p>';
150
  return;
151
  }
152
+ const s = campaignSnapshot(snapshot, selectedCampaign),
153
  c = s.counts;
154
+ const metrics = [
155
  ["渲染与深度完成", `${number(c.complete)} / ${number(c.total)}`],
156
  ["运行中", number(c.running)],
157
  ["待领取", number(c.ready)],
158
  ["失败", number(c.failed)],
159
+ ];
160
+ if (c.waiting_assets) metrics.push(["待上游资产", number(c.waiting_assets)]);
161
+ root.querySelector("#synth-summary").dataset.columns = metrics.length;
162
+ root.querySelector("#synth-summary").innerHTML = metrics
163
  .map(
164
  ([k, v]) =>
165
  `<div class="synth-kpi"><strong>${v}</strong><span>${k}</span></div>`,
166
  )
167
  .join("");
168
  const progress = root.querySelector("#synth-progress");
169
+ progress.setAttribute("aria-label", s.dataset + "包生成进度");
170
  progress.setAttribute("aria-valuemin", "0");
171
  progress.setAttribute("aria-valuemax", c.total);
172
  progress.setAttribute("aria-valuenow", c.complete);
 
183
  root.querySelector("#synth-facts").innerHTML =
184
  `<span>完成 <b>${((100 * c.complete) / c.total).toFixed(1)}%</b></span><span>已生成帧 <b>${number(s.coverage.completed_variant_frames)} / ${number(s.scope.expected_variant_frames)}</b></span><span>最近1小时 <b>${number(s.throughput.packages_last_hour)}包</b></span><span>队列预计(不含失败) <b>${s.throughput.queued_eta_hours == null ? "—" : number(s.throughput.queued_eta_hours) + "小时"}</b></span>`;
185
  root.querySelector("#synth-notices").innerHTML =
186
+ `<div class="synth-callout">训练资格待确认 · 辅助拟合待交付${s.dataset === "OakInk2" ? " · 下半身为生成结果" : ""}${s.known_gt_missing.length ? ` · <b>${s.known_gt_missing.length}</b> 个历史包缺GT深度` : ""}</div>`;
187
  const oak = s.oakink_assets,
188
  hc = s.hardcases;
189
  root.querySelector("#synth-cohorts").innerHTML = table(
190
  ["数据", "规模", "当前口径"],
191
  [
192
+ `<tr><td>ARCTIC · V006</td><td class="num">${number(s.arctic_render.counts.complete)} / ${number(s.arctic_render.counts.total)}包</td><td>${number(s.arctic_render.scope.source_frames)}源帧;每条动作1份${s.arctic_render.known_gt_missing.length ? ";" + s.arctic_render.known_gt_missing.length + "个历史包缺GT深度" : ""}</td></tr>`,
193
  `<tr><td>Hard Cases · V006</td><td class="num">${hc.complete} / ${hc.expected}条样例</td><td>${number(hc.frames)}主源帧;三类各5条,独立于主队列</td></tr>`,
194
+ `<tr><td>OakInk2 · V006</td><td class="num">${snapshot.oakink_render ? number(snapshot.oakink_render.counts.complete) + " / " + number(snapshot.oakink_render.counts.total) + "包" : number(oak.total) + "源"}</td><td>${number(oak.counts.COMPLETE || 0)}条人体资产就绪${snapshot.oakink_render ? ";" + number(snapshot.oakink_render.counts.waiting_assets) + "条待上游;每条动作1份" : ";尚无最终合成包计数"}</td></tr>`,
195
  '<tr><td>GRAB · V005</td><td class="num">1,314源组 / 2,425包</td><td>历史参数附件更新完成;V006新深度尚未据此宣称完成</td></tr>',
196
  ],
197
  );
 
200
  const jobs = s.jobs.filter(
201
  (j) =>
202
  selectedJobs === "all" ||
203
+ (selectedJobs === "failed"
204
+ ? j.state === "FAILED"
205
+ : selectedJobs === "inputs"
206
+ ? j.state === "WAIT_UPSTREAM_ASSET"
207
+ : ["RUNNING", "RECOVERING_DEPTH"].includes(j.state)),
208
  );
209
  const multi = s.scope.variants > 1;
210
  root.querySelector("#synth-jobs").innerHTML = jobs.length
 
293
  icons();
294
  }
295
  function readingView() {
296
+ const active = campaignSnapshot(snapshot, selectedCampaign);
297
+ const isOak = active?.dataset === "OakInk2";
298
+ const indexPath = isOak
299
+ ? active.package_index
300
+ : "ARCTIC/packages/final_surface279_v287_20261030/INDEX.json";
301
+ const index = `import json, os\nfrom pathlib import Path\n\nroot = Path(os.environ["EGORENDER_ROOT"])\nindex = json.loads((root / "${indexPath}").read_text())\nfor item in index["complete"]:\n package = Path(item["package"])\n meta = json.loads((package / "metadata.json").read_text())\n print(meta["sequence_index"], meta["frames"], meta["dataset_release"])\n # complete 是渲染终态;另查深度缺口与辅助标注。`;
302
  const depth = `from egorender_reader import DepthReader, depth_pair\nimport numpy as np\n\ngt_path, sensor_path = depth_pair(package)\nwith DepthReader(gt_path) as gt, DepthReader(sensor_path) as sensor:\n assert np.array_equal(gt.frames, sensor.frames)\n z_gt, valid_gt, source_frame = gt.frame(0)\n z_sensor, valid_sensor, other_frame = sensor.frame(0)\n assert source_frame == other_frame\n # z: float32 米,相机轴向Z;分别使用各自的valid。\n # 每个DataLoader worker长期持有reader,不逐帧重新打开整个NPZ。`;
303
  const camera = `with np.load(package / "camera_parameters.npz", allow_pickle=False) as c:\n source_frames = c["source_frame_index"]\n K = c["K"]\n world_to_camera = c["world_to_camera"]\n camera_to_world = c["camera_to_world"]\n print(c["camera_coordinates"], c["world_coordinates"])\n # 先核对坐标约定和K是否逐帧,不额外套一次坐标轴翻转。\n\nfrom egorender_reader import unpack_class_frame\nwith np.load(package / "masks_visible_2bit.npz", allow_pickle=False) as m:\n width, height = map(int, m["image_size"])\n classes = unpack_class_frame(m["packed_classes"][0], (height, width))\n print(m["classes"], m["bitorder"])\n # 当前常见: 0背景 / 1人体及衣物 / 2交互物体 / 3桌面;以文件为准。`;
304
+ const native = isOak
305
+ ? `descriptor = json.loads((package / "native_mano_descriptor.json").read_text())\nassert descriptor["quaternion_layout"] == "wxyz"\nwith np.load(package / "mano_parameters.npz", allow_pickle=False) as h:\n print(h.files) # 保留原始字段,不转成ARCTIC的axis-angle表示\nsource_offsets = np.load(package / "source_offsets.npy", allow_pickle=False)\nwith np.load(package / "native_object_poses.npz", allow_pickle=False) as p:\n object_ids = p["object_ids"]\n object_to_oakink = p["object_to_oakink"]\nwith np.load(package / "object_membership.npz", allow_pickle=False) as m:\n print(m.files)\n# 原始source_offsets与30fps动作索引分别保留。\n# 物体姿态在原始OakInk坐标;按descriptor.transform_chain及metadata.source_to_world变换一次。\nassert meta["lower_motion_is_gt"] is False`
306
+ : `with np.load(package / "mano_parameters.npz", allow_pickle=False) as h:\n print(h.files)\n left_pose = h["left_pose"]\n left_translation = h["left_trans"]\n source_frames = h["source_frames"]\n # left/right_rot, pose, trans, shape来自原始数据集参数。\n # 参数化/手均值/坐标系遵循原始模型与包内来源,不把shape当拟合真值。\n\n# V005辅助附件不是render输入:\nfit_ref = json.loads((legacy_package / "mano_fit_current.json").read_text())\n# 按fit_ref和对应合同加载参数;左手必须搭配V005修正基底。`;
307
  const relocation = `from egorender_reader import DatasetLocations\n\nloc = DatasetLocations(package / "artifact_locations.json")\n# 给定包内记录的 {"path": ..., "sha256": ...} 引用:\nresolved = loc.read_bound_json(binding)\n# 先检查原JSON字节SHA,再解析历史路径及path-keyed字典。\n# 不覆盖immutable报告,也不要通过字符串替换伪造新SHA。`;
308
  return `${section(
309
  "文件与语义",
 
345
  : progressView();
346
  root.innerHTML = header() + body;
347
  root.querySelector("#synth-refresh").onclick = () => refresh();
348
+ root.querySelector("#synth-campaign").onchange = (event) => {
349
+ selectedCampaign = event.target.value;
350
+ if (tab() === "reading") {
351
+ paint();
352
+ return;
353
+ }
354
+ updateFreshness();
355
+ updateProgress();
356
+ };
357
  root.querySelectorAll("[data-version]").forEach(
358
  (b) =>
359
  (b.onclick = () => {