| |
| """Verify the already-published GitHub Pages and Hugging Face mirrors. |
| |
| This is the post-publish companion to the local publication gates. It fetches |
| public URLs and compares them with the local release artifacts so a reader can |
| see that the live surfaces match the repo/HF bundles that were prepared. |
| """ |
|
|
| from __future__ import annotations |
|
|
| import argparse |
| import hashlib |
| import json |
| import subprocess |
| import tempfile |
| import time |
| from datetime import datetime, timezone |
| from pathlib import Path |
| from urllib.error import HTTPError, URLError |
| from urllib.parse import urlsplit, urlunsplit |
| from urllib.request import Request, urlopen |
|
|
|
|
| ROOT = Path(__file__).resolve().parents[1] |
| DEFAULT_OUTPUT = ROOT / "docs/data/live_publication_status.json" |
| TIMEOUT_SECONDS = 30 |
| LARGE_FILE_TIMEOUT_SECONDS = 240 |
| LARGE_FILE_THRESHOLD_BYTES = 20 * 1024 * 1024 |
| FETCH_RETRIES = 3 |
| USER_AGENT = "ropedia-xperience-10m-live-verifier/1.0" |
| LOCAL_PATH_FORBIDDEN_MARKERS = ["/" + "Users/", "/" + "private/"] |
| QWEN3_LORA_REPO_ID = "cy0307/ropedia-qwen3-omni-lora-128ep" |
| QWEN3_LORA_UPLOAD_DIR_CANDIDATES = [ |
| ROOT / "results/omni_finetune/hf_upload_qwen3_128ep_v6_rank64", |
| ROOT.parent / "hf_publish/qwen3_lora_128ep", |
| ROOT / "results/omni_finetune/hf_upload_qwen3_128ep_full", |
| ] |
| COSMOS3_SUPER_LORA_REPO_ID = "cy0307/ropedia-cosmos3-super-forward-dynamics-lora-128ep" |
| COSMOS3_SUPER_LORA_UPLOAD_DIR_CANDIDATES = [ |
| ROOT.parent / "hf_publish/cosmos3_super_forward_dynamics_lora_128ep", |
| ] |
|
|
|
|
| HASH_GROUPS = [ |
| { |
| "id": "task_suite_infographic", |
| "title": "Task-suite infographic", |
| "local_path": "docs/assets/task_suite_infographic.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/task_suite_infographic.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/task_suite_infographic.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/task_suite_infographic.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/task_suite_infographic.png", |
| }, |
| }, |
| { |
| "id": "quality_gates_json", |
| "title": "Quality-gate JSON", |
| "local_path": "docs/data/quality_gates.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/quality_gates.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/quality_gates.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/quality_gates.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/quality_gates.json", |
| }, |
| }, |
| { |
| "id": "task_suite_20_json", |
| "title": "Unified 20-task suite JSON", |
| "local_path": "docs/data/task_suite_20.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_suite_20.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_suite_20.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_suite_20.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_suite_20.json", |
| }, |
| }, |
| { |
| "id": "unified_task_model_radar_json", |
| "title": "Unified 20-task model radar JSON", |
| "local_path": "docs/data/unified_task_model_radar.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/unified_task_model_radar.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/unified_task_model_radar.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/unified_task_model_radar.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/unified_task_model_radar.json", |
| }, |
| }, |
| { |
| "id": "task_method_20_result_matrix_json", |
| "title": "Task-method 20-result matrix JSON", |
| "local_path": "docs/data/task_method_20_result_matrix.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_method_20_result_matrix.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_method_20_result_matrix.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_method_20_result_matrix.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_method_20_result_matrix.json", |
| }, |
| }, |
| { |
| "id": "task_method_20_gap_audit_json", |
| "title": "Task-method 20-result gap audit JSON", |
| "local_path": "docs/data/task_method_20_gap_audit.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_method_20_gap_audit.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_method_20_gap_audit.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_method_20_gap_audit.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_method_20_gap_audit.json", |
| }, |
| }, |
| { |
| "id": "task_method_20_source_audit_json", |
| "title": "Task-method 20-result source audit JSON", |
| "local_path": "docs/data/task_method_20_source_audit.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_method_20_source_audit.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_method_20_source_audit.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_method_20_source_audit.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_method_20_source_audit.json", |
| }, |
| }, |
| { |
| "id": "public_reader_map_json", |
| "title": "Public reader map JSON", |
| "local_path": "docs/data/public_reader_map.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/public_reader_map.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/public_reader_map.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/public_reader_map.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/public_reader_map.json", |
| }, |
| }, |
| { |
| "id": "public_reader_map_markdown", |
| "title": "Public reader map Markdown", |
| "local_path": "PUBLIC_READER_MAP.md", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/PUBLIC_READER_MAP.md", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/PUBLIC_READER_MAP.md", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/PUBLIC_READER_MAP.md", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/PUBLIC_READER_MAP.md", |
| }, |
| }, |
| { |
| "id": "glossary_json", |
| "title": "Glossary JSON", |
| "local_path": "docs/data/glossary.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/glossary.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/glossary.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/glossary.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/glossary.json", |
| }, |
| }, |
| { |
| "id": "glossary_markdown", |
| "title": "Glossary Markdown", |
| "local_path": "GLOSSARY.md", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/GLOSSARY.md", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/GLOSSARY.md", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/GLOSSARY.md", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/GLOSSARY.md", |
| }, |
| }, |
| { |
| "id": "xperience10m_128_episode_feature_index_json", |
| "title": "Xperience-10M 128-episode source and feature index JSON", |
| "local_path": "docs/data/xperience10m_128_episode_feature_index.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/xperience10m_128_episode_feature_index.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/xperience10m_128_episode_feature_index.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/xperience10m_128_episode_feature_index.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/xperience10m_128_episode_feature_index.json", |
| }, |
| }, |
| { |
| "id": "xperience10m_128_episode_feature_index_markdown", |
| "title": "Xperience-10M 128-episode source and feature index Markdown", |
| "local_path": "XPERIENCE10M_128_EPISODE_FEATURE_INDEX.md", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/XPERIENCE10M_128_EPISODE_FEATURE_INDEX.md", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/XPERIENCE10M_128_EPISODE_FEATURE_INDEX.md", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/XPERIENCE10M_128_EPISODE_FEATURE_INDEX.md", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/XPERIENCE10M_128_EPISODE_FEATURE_INDEX.md", |
| }, |
| }, |
| { |
| "id": "single_episode_task_model_radar_json", |
| "title": "Single-episode 20-task model radar JSON", |
| "local_path": "docs/data/single_episode_task_model_radar.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/single_episode_task_model_radar.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/single_episode_task_model_radar.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/single_episode_task_model_radar.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/single_episode_task_model_radar.json", |
| }, |
| }, |
| { |
| "id": "episode128_task_model_radar_json", |
| "title": "128-episode 20-task model radar JSON", |
| "local_path": "docs/data/episode128_task_model_radar.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/episode128_task_model_radar.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/episode128_task_model_radar.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/episode128_task_model_radar.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/episode128_task_model_radar.json", |
| }, |
| }, |
| { |
| "id": "unified_task_model_radar_svg", |
| "title": "Unified 20-task model radar SVG", |
| "local_path": "docs/assets/charts/unified_task_model_radar.svg", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/charts/unified_task_model_radar.svg", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/charts/unified_task_model_radar.svg", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/charts/unified_task_model_radar.svg", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/charts/unified_task_model_radar.svg", |
| }, |
| }, |
| { |
| "id": "single_episode_task_model_radar_svg", |
| "title": "Single-episode 20-task model radar SVG", |
| "local_path": "docs/assets/charts/single_episode_task_model_radar.svg", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/charts/single_episode_task_model_radar.svg", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/charts/single_episode_task_model_radar.svg", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/charts/single_episode_task_model_radar.svg", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/charts/single_episode_task_model_radar.svg", |
| }, |
| }, |
| { |
| "id": "episode128_task_model_radar_svg", |
| "title": "128-episode 20-task model radar SVG", |
| "local_path": "docs/assets/charts/episode128_task_model_radar.svg", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/charts/episode128_task_model_radar.svg", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/charts/episode128_task_model_radar.svg", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/charts/episode128_task_model_radar.svg", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/charts/episode128_task_model_radar.svg", |
| }, |
| }, |
| { |
| "id": "tier2_task_suite_json", |
| "title": "Unified 20-task provenance JSON", |
| "local_path": "docs/data/tier2_task_suite.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/tier2_task_suite.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/tier2_task_suite.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/tier2_task_suite.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/tier2_task_suite.json", |
| }, |
| }, |
| { |
| "id": "tier2_task_suite_chart", |
| "title": "Unified 20-task provenance chart", |
| "local_path": "docs/assets/charts/tier2_task_suite.svg", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/charts/tier2_task_suite.svg", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/charts/tier2_task_suite.svg", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/charts/tier2_task_suite.svg", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/charts/tier2_task_suite.svg", |
| }, |
| }, |
| { |
| "id": "tier2_result_summary", |
| "title": "Unified 20-task provenance result summary", |
| "local_path": "results/episode_task_suite/tier2_task_suite/tier2_task_suite_results.json", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/results/episode_task_suite/tier2_task_suite/tier2_task_suite_results.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/results/episode_task_suite/tier2_task_suite/tier2_task_suite_results.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/results/episode_task_suite/tier2_task_suite/tier2_task_suite_results.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/results/episode_task_suite/tier2_task_suite/tier2_task_suite_results.json", |
| }, |
| }, |
| { |
| "id": "tier2_baseline_report", |
| "title": "Unified 20-task provenance baseline report", |
| "local_path": "results/episode_task_suite/tier2_task_suite/TIER2_TASK_BASELINES.md", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/results/episode_task_suite/tier2_task_suite/TIER2_TASK_BASELINES.md", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/results/episode_task_suite/tier2_task_suite/TIER2_TASK_BASELINES.md", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/results/episode_task_suite/tier2_task_suite/TIER2_TASK_BASELINES.md", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/results/episode_task_suite/tier2_task_suite/TIER2_TASK_BASELINES.md", |
| }, |
| }, |
| { |
| "id": "tier2_minimal_model_npz", |
| "title": "Unified 20-task provenance minimal model NPZ", |
| "local_path": "results/episode_task_suite/tier2_task_suite/long_horizon_next_action/model.npz", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/results/episode_task_suite/tier2_task_suite/long_horizon_next_action/model.npz", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/results/episode_task_suite/tier2_task_suite/long_horizon_next_action/model.npz", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/results/episode_task_suite/tier2_task_suite/long_horizon_next_action/model.npz", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/results/episode_task_suite/tier2_task_suite/long_horizon_next_action/model.npz", |
| }, |
| }, |
| { |
| "id": "single_episode_explorer_json", |
| "title": "Single-episode explorer JSON", |
| "local_path": "docs/data/single_episode_explorer.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/single_episode_explorer.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/single_episode_explorer.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/single_episode_explorer.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/single_episode_explorer.json", |
| }, |
| }, |
| { |
| "id": "raw_sample_files_json", |
| "title": "Raw public sample file manifest", |
| "local_path": "docs/data/raw_sample_files.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/raw_sample_files.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/raw_sample_files.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/raw_sample_files.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/raw_sample_files.json", |
| }, |
| }, |
| { |
| "id": "single_episode_explorer_html", |
| "title": "Single-episode explorer HTML", |
| "local_path": "docs/single_episode_explorer.html", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/single_episode_explorer.html", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/single_episode_explorer.html", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/single_episode_explorer.html", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/single_episode_explorer.html", |
| }, |
| }, |
| { |
| "id": "research_roadmap_html", |
| "title": "Interactive research roadmap HTML", |
| "local_path": "docs/research_roadmap.html", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/research_roadmap.html", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/research_roadmap.html", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/research_roadmap.html", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/research_roadmap.html", |
| }, |
| }, |
| { |
| "id": "single_episode_diagnostics_provenance", |
| "title": "Single-episode diagnostics provenance", |
| "local_path": "results/single_episode_diagnostics/provenance.json", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/results/single_episode_diagnostics/provenance.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/results/single_episode_diagnostics/provenance.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/results/single_episode_diagnostics/provenance.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/results/single_episode_diagnostics/provenance.json", |
| }, |
| }, |
| { |
| "id": "single_episode_object_vocab", |
| "title": "Single-episode object vocabulary", |
| "local_path": "results/single_episode_diagnostics/object_labels/object_vocab.json", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/results/single_episode_diagnostics/object_labels/object_vocab.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/results/single_episode_diagnostics/object_labels/object_vocab.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/results/single_episode_diagnostics/object_labels/object_vocab.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/results/single_episode_diagnostics/object_labels/object_vocab.json", |
| }, |
| }, |
| { |
| "id": "public_surface_qa_json", |
| "title": "Public presentation JSON", |
| "local_path": "docs/data/public_surface_qa.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/public_surface_qa.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/public_surface_qa.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/public_surface_qa.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/public_surface_qa.json", |
| }, |
| }, |
| { |
| "id": "rendered_site_check_json", |
| "title": "Rendered website check JSON", |
| "local_path": "docs/data/rendered_site_check.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/rendered_site_check.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/rendered_site_check.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/rendered_site_check.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/rendered_site_check.json", |
| }, |
| }, |
| { |
| "id": "xperience10m_dataset_card_alignment_json", |
| "title": "Official Xperience-10M dataset-card alignment JSON", |
| "local_path": "docs/data/xperience10m_dataset_card_alignment.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/xperience10m_dataset_card_alignment.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/xperience10m_dataset_card_alignment.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/xperience10m_dataset_card_alignment.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/xperience10m_dataset_card_alignment.json", |
| }, |
| }, |
| { |
| "id": "source_alignment_json", |
| "title": "Source-alignment JSON", |
| "local_path": "docs/data/source_alignment_audit.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/source_alignment_audit.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/source_alignment_audit.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/source_alignment_audit.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/source_alignment_audit.json", |
| }, |
| }, |
| { |
| "id": "project_status_json", |
| "title": "Project status JSON", |
| "local_path": "docs/data/project_status.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/project_status.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/project_status.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/project_status.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/project_status.json", |
| }, |
| }, |
| { |
| "id": "omni_model_comparison_json", |
| "title": "Omni model comparison JSON", |
| "local_path": "docs/data/omni_model_comparison.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/omni_model_comparison.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/omni_model_comparison.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/omni_model_comparison.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/omni_model_comparison.json", |
| }, |
| }, |
| { |
| "id": "task_suite_enhancement_128_json", |
| "title": "128-episode task-suite enhancement JSON", |
| "local_path": "docs/data/task_suite_enhancement_128.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_suite_enhancement_128.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_suite_enhancement_128.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_suite_enhancement_128.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_suite_enhancement_128.json", |
| }, |
| }, |
| { |
| "id": "task_suite_enhancement_128_markdown", |
| "title": "128-episode task-suite enhancement Markdown", |
| "local_path": "TASK_SUITE_ENHANCEMENT_128.md", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/TASK_SUITE_ENHANCEMENT_128.md", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/TASK_SUITE_ENHANCEMENT_128.md", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/TASK_SUITE_ENHANCEMENT_128.md", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/TASK_SUITE_ENHANCEMENT_128.md", |
| }, |
| }, |
| { |
| "id": "task_suite_enhancement_128_plan", |
| "title": "128-episode task-suite enhancement plan", |
| "local_path": "results/omni_finetune/task_suite_enhancement_128_v1_20260608/enhancement_plan.json", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/results/omni_finetune/task_suite_enhancement_128_v1_20260608/enhancement_plan.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/results/omni_finetune/task_suite_enhancement_128_v1_20260608/enhancement_plan.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/results/omni_finetune/task_suite_enhancement_128_v1_20260608/enhancement_plan.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/results/omni_finetune/task_suite_enhancement_128_v1_20260608/enhancement_plan.json", |
| }, |
| }, |
| { |
| "id": "evaluation_protocol_json", |
| "title": "Evaluation protocol JSON", |
| "local_path": "docs/data/evaluation_protocol.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/evaluation_protocol.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/evaluation_protocol.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/evaluation_protocol.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/evaluation_protocol.json", |
| }, |
| }, |
| { |
| "id": "research_takeaways_json", |
| "title": "Research takeaways JSON", |
| "local_path": "docs/data/research_takeaways.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/research_takeaways.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/research_takeaways.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/research_takeaways.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/research_takeaways.json", |
| }, |
| }, |
| { |
| "id": "research_roadmap_json", |
| "title": "Research roadmap JSON", |
| "local_path": "docs/data/research_roadmap.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/research_roadmap.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/research_roadmap.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/research_roadmap.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/research_roadmap.json", |
| }, |
| }, |
| { |
| "id": "research_roadmap_interactive_json", |
| "title": "Interactive research roadmap JSON", |
| "local_path": "docs/data/research_roadmap_interactive.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/research_roadmap_interactive.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/research_roadmap_interactive.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/research_roadmap_interactive.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/research_roadmap_interactive.json", |
| }, |
| }, |
| { |
| "id": "three_foundation_pipelines_json", |
| "title": "Three foundation pipeline tracks JSON", |
| "local_path": "docs/data/three_foundation_pipelines.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/three_foundation_pipelines.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/three_foundation_pipelines.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/three_foundation_pipelines.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/three_foundation_pipelines.json", |
| }, |
| }, |
| { |
| "id": "spatial_intelligence_presentation_photo", |
| "title": "Spatial intelligence slide diagram", |
| "local_path": "docs/assets/foundation-pipelines/spatial-intelligence-pipeline.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/foundation-pipelines/spatial-intelligence-pipeline.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/foundation-pipelines/spatial-intelligence-pipeline.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/foundation-pipelines/spatial-intelligence-pipeline.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/foundation-pipelines/spatial-intelligence-pipeline.png", |
| }, |
| }, |
| { |
| "id": "spatial_intelligence_source_slide", |
| "title": "Spatial intelligence source slide", |
| "local_path": "docs/assets/foundation-pipelines/source-slides/spatial-intelligence-slide.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/foundation-pipelines/source-slides/spatial-intelligence-slide.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/foundation-pipelines/source-slides/spatial-intelligence-slide.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/foundation-pipelines/source-slides/spatial-intelligence-slide.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/foundation-pipelines/source-slides/spatial-intelligence-slide.png", |
| }, |
| }, |
| { |
| "id": "human_video_world_model_presentation_photo", |
| "title": "Human-video world model slide diagram", |
| "local_path": "docs/assets/foundation-pipelines/human-video-world-model-pipeline.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/foundation-pipelines/human-video-world-model-pipeline.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/foundation-pipelines/human-video-world-model-pipeline.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/foundation-pipelines/human-video-world-model-pipeline.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/foundation-pipelines/human-video-world-model-pipeline.png", |
| }, |
| }, |
| { |
| "id": "human_video_world_model_source_slide", |
| "title": "Human-video world model source slide", |
| "local_path": "docs/assets/foundation-pipelines/source-slides/human-video-world-model-slide.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/foundation-pipelines/source-slides/human-video-world-model-slide.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/foundation-pipelines/source-slides/human-video-world-model-slide.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/foundation-pipelines/source-slides/human-video-world-model-slide.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/foundation-pipelines/source-slides/human-video-world-model-slide.png", |
| }, |
| }, |
| { |
| "id": "vision_language_action_presentation_photo", |
| "title": "Vision-language-action slide diagram", |
| "local_path": "docs/assets/foundation-pipelines/vision-language-action-pipeline.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/foundation-pipelines/vision-language-action-pipeline.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/foundation-pipelines/vision-language-action-pipeline.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/foundation-pipelines/vision-language-action-pipeline.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/foundation-pipelines/vision-language-action-pipeline.png", |
| }, |
| }, |
| { |
| "id": "vision_language_action_source_slide", |
| "title": "Vision-language-action source slide", |
| "local_path": "docs/assets/foundation-pipelines/source-slides/vision-language-action-slide.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/foundation-pipelines/source-slides/vision-language-action-slide.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/foundation-pipelines/source-slides/vision-language-action-slide.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/foundation-pipelines/source-slides/vision-language-action-slide.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/foundation-pipelines/source-slides/vision-language-action-slide.png", |
| }, |
| }, |
| { |
| "id": "figure_index_json", |
| "title": "Figure index JSON", |
| "local_path": "docs/data/figure_index.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/figure_index.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/figure_index.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/figure_index.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/figure_index.json", |
| }, |
| }, |
| { |
| "id": "task_walkthroughs_json", |
| "title": "Task walkthrough JSON", |
| "local_path": "docs/data/task_walkthroughs.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_walkthroughs.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_walkthroughs.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_walkthroughs.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_walkthroughs.json", |
| }, |
| }, |
| { |
| "id": "task_surface_integrity_json", |
| "title": "Task-surface integrity JSON", |
| "local_path": "docs/data/task_surface_integrity.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/task_surface_integrity.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/task_surface_integrity.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/task_surface_integrity.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/task_surface_integrity.json", |
| }, |
| }, |
| { |
| "id": "brand_assets_json", |
| "title": "Brand assets JSON", |
| "local_path": "docs/data/brand_assets.json", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/brand_assets.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/brand_assets.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/brand_assets.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/brand_assets.json", |
| }, |
| }, |
| { |
| "id": "brand_logo_social_card", |
| "title": "Brand logo social card", |
| "local_path": "docs/assets/brand/xperience10m-logo-social-card.png", |
| "urls": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/assets/brand/xperience10m-logo-social-card.png", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/resolve/main/assets/brand/xperience10m-logo-social-card.png", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/assets/brand/xperience10m-logo-social-card.png", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/assets/brand/xperience10m-logo-social-card.png", |
| }, |
| }, |
| { |
| "id": "quality_gates_markdown", |
| "title": "Quality-gate Markdown", |
| "local_path": "QUALITY_GATES.md", |
| "urls": { |
| "github_raw": "https://raw.githubusercontent.com/ChaoYue0307/ropedia-xperience-10m-task-suite/main/QUALITY_GATES.md", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/QUALITY_GATES.md", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/QUALITY_GATES.md", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/QUALITY_GATES.md", |
| }, |
| }, |
| ] |
|
|
|
|
| MARKER_CHECKS = [ |
| { |
| "id": "github_pages_index_current", |
| "title": "GitHub Pages index contains current publication markers", |
| "url": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/", |
| "required": [ |
| "evaluation_protocol.json", |
| "research_takeaways.json", |
| "Research Takeaways", |
| "project_status.json", |
| "xperience10m-taskfirst-v13-modality-xl", |
| "Interactive task walkthrough.", |
| "taskPlayer", |
| "Action Recognition", |
| "data/task_walkthroughs.json", |
| "research_roadmap.html", |
| "research_roadmap_interactive.json", |
| "Qwen3-Omni LoRA Latest Diagnostic Branch", |
| "Action/Subtask Error-Analysis Pass", |
| "99.90%", |
| "qwen3_v5_v6_comparison.json", |
| "omni_model_comparison.json", |
| "task_suite_enhancement_128.json", |
| "128-Episode Task Suite Enhancement Pack", |
| "multiscale_20s10_40s20_80s40", |
| "ropedia-qwen3-omni-lora-128ep", |
| "ropedia-cosmos3-super-forward-dynamics-lora-128ep", |
| "Cosmos3-Super has a verified base-weight JSON-task evaluation plus a fine-tuned forward-dynamics LoRA branch", |
| "task_suite_20.json", |
| "Unified 20-Task Suite", |
| "unified_task_model_radar.svg", |
| "home radar comparison", |
| "Public reader map", |
| "data/public_reader_map.json", |
| "Glossary", |
| "data/glossary.json", |
| "tier2_task_suite.json", |
| "Unified task artifact package", |
| "Open 180-record matrix", |
| ], |
| "forbidden": [ |
| "xperience10m-" + "taskfirst-v10", |
| "xperience10m-" + "modalities-v9-large-atlas", |
| "artifact-id", |
| ], |
| }, |
| { |
| "id": "hf_space_index_current", |
| "title": "HF Space index contains current publication markers", |
| "url": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/index.html", |
| "required": [ |
| "evaluation_protocol.json", |
| "research_takeaways.json", |
| "Research Takeaways", |
| "project_status.json", |
| "xperience10m-taskfirst-v13-modality-xl", |
| "Interactive task walkthrough.", |
| "taskPlayer", |
| "Action Recognition", |
| "data/task_walkthroughs.json", |
| "research_roadmap.html", |
| "research_roadmap_interactive.json", |
| "Qwen3-Omni LoRA Latest Diagnostic Branch", |
| "Action/Subtask Error-Analysis Pass", |
| "99.90%", |
| "qwen3_v5_v6_comparison.json", |
| "omni_model_comparison.json", |
| "task_suite_enhancement_128.json", |
| "128-Episode Task Suite Enhancement Pack", |
| "multiscale_20s10_40s20_80s40", |
| "ropedia-qwen3-omni-lora-128ep", |
| "ropedia-cosmos3-super-forward-dynamics-lora-128ep", |
| "Cosmos3-Super has a verified base-weight JSON-task evaluation plus a fine-tuned forward-dynamics LoRA branch", |
| "task_suite_20.json", |
| "Unified 20-Task Suite", |
| "unified_task_model_radar.svg", |
| "home radar comparison", |
| "Public reader map", |
| "data/public_reader_map.json", |
| "tier2_task_suite.json", |
| "Unified task artifact package", |
| "Open 180-record matrix", |
| ], |
| "forbidden": [ |
| "xperience10m-" + "taskfirst-v10", |
| "xperience10m-" + "modalities-v9-large-atlas", |
| "artifact-id", |
| ], |
| }, |
| { |
| "id": "hf_artifacts_card_current", |
| "title": "HF artifact card links current result packages", |
| "url": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/raw/main/README.md", |
| "required": [ |
| "docs/data/omni_finetune_verified_result.json", |
| "docs/data/omni_model_comparison.json", |
| "docs/data/task_suite_enhancement_128.json", |
| "99.90% JSON validity", |
| "qwen3_v5_v6_comparison.json", |
| "Cosmos3-Super", |
| "ropedia-qwen3-omni-lora-128ep", |
| "ropedia-cosmos3-super-forward-dynamics-lora-128ep", |
| "docs/data/task_suite_20.json", |
| "PUBLIC_READER_MAP.md", |
| "docs/data/public_reader_map.json", |
| "Unified 20-Task Suite", |
| "docs/data/unified_task_model_radar.json", |
| "docs/assets/charts/unified_task_model_radar.svg", |
| "docs/data/tier2_task_suite.json", |
| "Unified 20-Task Suite", |
| ], |
| "forbidden": ["xperience10m-" + "taskfirst-v10"], |
| }, |
| { |
| "id": "github_pages_explorer_current", |
| "title": "GitHub Pages explorer contains current diagnostics markers", |
| "url": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/single_episode_explorer.html", |
| "required": [ |
| "Single-Episode Research Explorer", |
| "data/single_episode_explorer.json", |
| "browser-preview clips", |
| "full raw MP4/HDF5/RRD source files", |
| "Feature Blocks", |
| "Diagnostics", |
| "object labels", |
| "prediction rows", |
| "ablation", |
| "alignment", |
| ], |
| "forbidden": LOCAL_PATH_FORBIDDEN_MARKERS, |
| }, |
| { |
| "id": "hf_space_explorer_current", |
| "title": "HF Space explorer contains current diagnostics markers", |
| "url": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/single_episode_explorer.html", |
| "required": [ |
| "Single-Episode Research Explorer", |
| "data/single_episode_explorer.json", |
| "browser-preview clips", |
| "full raw MP4/HDF5/RRD source files", |
| "Feature Blocks", |
| "Diagnostics", |
| "object labels", |
| "prediction rows", |
| "ablation", |
| "alignment", |
| ], |
| "forbidden": LOCAL_PATH_FORBIDDEN_MARKERS, |
| }, |
| { |
| "id": "hf_model_card_current", |
| "title": "HF model card links current result packages", |
| "url": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/raw/main/README.md", |
| "required": [ |
| "docs/data/omni_finetune_verified_result.json", |
| "docs/data/omni_model_comparison.json", |
| "docs/data/task_suite_enhancement_128.json", |
| "99.90%", |
| "qwen3_v5_v6_comparison.json", |
| "Cosmos3-Super", |
| "ropedia-qwen3-omni-lora-128ep", |
| "ropedia-cosmos3-super-forward-dynamics-lora-128ep", |
| "docs/data/task_suite_20.json", |
| "PUBLIC_READER_MAP.md", |
| "docs/data/public_reader_map.json", |
| "Unified 20-Task Suite", |
| "docs/data/unified_task_model_radar.json", |
| "docs/assets/charts/unified_task_model_radar.svg", |
| "docs/data/tier2_task_suite.json", |
| "Unified 20-Task Suite", |
| ], |
| "forbidden": ["xperience10m-" + "taskfirst-v10"], |
| }, |
| ] |
|
|
| PATH_HYGIENE_REPORTS = { |
| "mirror_parity": { |
| "title": "Mirror parity JSON excludes local paths", |
| "paths": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/mirror_parity.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/mirror_parity.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/mirror_parity.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/mirror_parity.json", |
| }, |
| }, |
| "publication_audit": { |
| "title": "Publication package JSON excludes local paths", |
| "paths": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/publication_audit.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/publication_audit.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/publication_audit.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/publication_audit.json", |
| }, |
| }, |
| "website_integrity": { |
| "title": "Website integrity JSON excludes local paths", |
| "paths": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/website_integrity.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/website_integrity.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/website_integrity.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/website_integrity.json", |
| }, |
| }, |
| "public_surface_qa": { |
| "title": "Public presentation JSON excludes local paths", |
| "paths": { |
| "github_pages": "https://chaoyue0307.github.io/ropedia-xperience-10m-task-suite/data/public_surface_qa.json", |
| "hf_space": "https://huggingface.co/spaces/cy0307/ropedia-xperience-10m-task-suite/raw/main/data/public_surface_qa.json", |
| "hf_artifacts": "https://huggingface.co/datasets/cy0307/ropedia-xperience-10m-task-suite-artifacts/resolve/main/docs/data/public_surface_qa.json", |
| "hf_model": "https://huggingface.co/cy0307/ropedia-xperience-10m-task-baselines/resolve/main/metrics/public_surface_qa.json", |
| }, |
| }, |
| } |
|
|
|
|
| def local_path_checks() -> list[dict]: |
| checks = [] |
| for report_id, report in PATH_HYGIENE_REPORTS.items(): |
| for surface, url in report["paths"].items(): |
| checks.append({ |
| "id": f"{surface}_{report_id}_local_path_check", |
| "title": f"{surface}: {report['title']}", |
| "url": url, |
| "required": ['"status": "pass"'], |
| "forbidden": LOCAL_PATH_FORBIDDEN_MARKERS, |
| }) |
| return checks |
|
|
|
|
| def qwen3_lora_upload_dir() -> Path | None: |
| for path in QWEN3_LORA_UPLOAD_DIR_CANDIDATES: |
| if path.exists(): |
| return path |
| return None |
|
|
|
|
| def cosmos3_super_lora_upload_dir() -> Path | None: |
| for path in COSMOS3_SUPER_LORA_UPLOAD_DIR_CANDIDATES: |
| if path.exists(): |
| return path |
| return None |
|
|
|
|
| def display_local_path(path: Path) -> str: |
| resolved = path.resolve() |
| for base, prefix in ((ROOT, ""), (ROOT.parent, "../")): |
| try: |
| rel = resolved.relative_to(base.resolve()).as_posix() |
| return f"{prefix}{rel}" |
| except ValueError: |
| continue |
| return path.name |
|
|
|
|
| def qwen3_lora_hash_groups() -> list[dict]: |
| upload_dir = qwen3_lora_upload_dir() |
| if upload_dir is None: |
| return [] |
| groups = [] |
| required_files = [ |
| "README.md", |
| "upload_manifest.json", |
| "adapter_config.json", |
| ] |
| adapter_files = sorted(path.name for path in upload_dir.glob("adapter_model*.safetensors")) |
| for filename in [*required_files, *adapter_files]: |
| path = upload_dir / filename |
| if not path.exists(): |
| continue |
| groups.append( |
| { |
| "id": f"qwen3_lora_{filename.replace('.', '_').replace('-', '_')}", |
| "title": f"Qwen3-Omni LoRA repo file: {filename}", |
| "local_path": display_local_path(path), |
| "urls": { |
| "hf_qwen3_lora_model": ( |
| f"https://huggingface.co/{QWEN3_LORA_REPO_ID}/resolve/main/{filename}" |
| ), |
| }, |
| } |
| ) |
| return groups |
|
|
|
|
| def cosmos3_super_lora_hash_groups() -> list[dict]: |
| upload_dir = cosmos3_super_lora_upload_dir() |
| if upload_dir is None: |
| return [] |
| groups = [] |
| required_files = [ |
| "README.md", |
| "upload_manifest.json", |
| "pytorch_lora_weights.safetensors", |
| "verified_result_summary.json", |
| "package_audit.json", |
| "eval_metrics.json", |
| "val_metrics.json", |
| ] |
| for filename in required_files: |
| path = upload_dir / filename |
| if not path.exists(): |
| continue |
| groups.append( |
| { |
| "id": f"cosmos3_super_lora_{filename.replace('.', '_').replace('-', '_')}", |
| "title": f"Cosmos3-Super LoRA repo file: {filename}", |
| "local_path": display_local_path(path), |
| "urls": { |
| "hf_cosmos3_super_lora_model": ( |
| f"https://huggingface.co/{COSMOS3_SUPER_LORA_REPO_ID}/resolve/main/{filename}" |
| ), |
| }, |
| } |
| ) |
| return groups |
|
|
|
|
| def sha256_bytes(data: bytes) -> str: |
| return hashlib.sha256(data).hexdigest() |
|
|
|
|
| def sha256_file(path: Path) -> str: |
| digest = hashlib.sha256() |
| with path.open("rb") as handle: |
| for chunk in iter(lambda: handle.read(1024 * 1024), b""): |
| digest.update(chunk) |
| return digest.hexdigest() |
|
|
|
|
| def sanitize_url(url: str) -> str: |
| parts = urlsplit(url) |
| return urlunsplit((parts.scheme, parts.netloc, parts.path, "", "")) |
|
|
|
|
| def fetch_once(url: str, *, timeout_seconds: int = TIMEOUT_SECONDS, prefer_curl: bool = True) -> dict: |
| if prefer_curl: |
| return fetch_with_curl(url, timeout_seconds=timeout_seconds) |
| request = Request(url, headers={"User-Agent": USER_AGENT}) |
| try: |
| with urlopen(request, timeout=timeout_seconds) as response: |
| body = response.read() |
| return { |
| "ok": True, |
| "method": "urllib", |
| "timeout_seconds": timeout_seconds, |
| "status_code": int(getattr(response, "status", 200)), |
| "bytes": len(body), |
| "sha256": sha256_bytes(body), |
| "body": body, |
| "final_url": sanitize_url(response.geturl()), |
| } |
| except HTTPError as exc: |
| return { |
| "ok": False, |
| "method": "urllib", |
| "timeout_seconds": timeout_seconds, |
| "status_code": exc.code, |
| "bytes": 0, |
| "sha256": None, |
| "error": str(exc), |
| "final_url": url, |
| } |
| except (TimeoutError, OSError) as exc: |
| fallback = fetch_with_curl(url, timeout_seconds=timeout_seconds) |
| if fallback["ok"]: |
| return fallback |
| return { |
| "ok": False, |
| "method": "urllib", |
| "timeout_seconds": timeout_seconds, |
| "status_code": None, |
| "bytes": 0, |
| "sha256": None, |
| "error": str(exc), |
| "final_url": url, |
| } |
| except URLError as exc: |
| fallback = fetch_with_curl(url, timeout_seconds=timeout_seconds) |
| if fallback["ok"]: |
| return fallback |
| return { |
| "ok": False, |
| "method": "urllib", |
| "timeout_seconds": timeout_seconds, |
| "status_code": None, |
| "bytes": 0, |
| "sha256": None, |
| "error": str(exc.reason), |
| "final_url": url, |
| } |
|
|
|
|
| def fetch(url: str, *, timeout_seconds: int = TIMEOUT_SECONDS, prefer_curl: bool = True) -> dict: |
| last_result = None |
| for attempt in range(1, FETCH_RETRIES + 1): |
| result = fetch_once(url, timeout_seconds=timeout_seconds, prefer_curl=prefer_curl) |
| result["attempt"] = attempt |
| result["max_attempts"] = FETCH_RETRIES |
| if result["ok"] or attempt == FETCH_RETRIES: |
| return result |
| last_result = result |
| time.sleep(min(2 * attempt, 5)) |
| return last_result or fetch_once(url, timeout_seconds=timeout_seconds, prefer_curl=prefer_curl) |
|
|
|
|
| def fetch_with_curl(url: str, *, timeout_seconds: int = TIMEOUT_SECONDS) -> dict: |
| with tempfile.NamedTemporaryFile(delete=False) as tmp: |
| tmp_path = Path(tmp.name) |
| try: |
| result = subprocess.run( |
| [ |
| "curl", |
| "-L", |
| "-sS", |
| "--max-time", |
| str(timeout_seconds), |
| "-A", |
| USER_AGENT, |
| "-o", |
| str(tmp_path), |
| "-w", |
| "%{http_code}\n%{url_effective}", |
| url, |
| ], |
| check=False, |
| capture_output=True, |
| text=True, |
| ) |
| status_text, _, final_url = result.stdout.partition("\n") |
| status_code = int(status_text.strip() or "0") |
| body = tmp_path.read_bytes() if tmp_path.exists() else b"" |
| if result.returncode != 0: |
| return { |
| "ok": False, |
| "method": "curl", |
| "timeout_seconds": timeout_seconds, |
| "status_code": status_code or None, |
| "bytes": 0, |
| "sha256": None, |
| "error": result.stderr.strip() or f"curl exited {result.returncode}", |
| "final_url": sanitize_url(final_url.strip() or url), |
| } |
| return { |
| "ok": 200 <= status_code < 400, |
| "method": "curl", |
| "timeout_seconds": timeout_seconds, |
| "status_code": status_code, |
| "bytes": len(body), |
| "sha256": sha256_bytes(body), |
| "body": body, |
| "final_url": sanitize_url(final_url.strip() or url), |
| } |
| finally: |
| tmp_path.unlink(missing_ok=True) |
|
|
|
|
| def hash_group_record(group: dict) -> dict: |
| group_path = Path(group["local_path"]) |
| local_path = group_path if group_path.is_absolute() else ROOT / group_path |
| local = { |
| "path": group["local_path"], |
| "exists": local_path.exists(), |
| "bytes": local_path.stat().st_size if local_path.exists() else 0, |
| "sha256": sha256_file(local_path) if local_path.exists() else None, |
| } |
| mirrors = {} |
| failures = [] |
| if not local["exists"]: |
| failures.append({"surface": "local", "kind": "missing", "path": group["local_path"]}) |
| for surface, url in group["urls"].items(): |
| prefer_curl = True |
| timeout_seconds = ( |
| LARGE_FILE_TIMEOUT_SECONDS |
| if prefer_curl and local["bytes"] >= LARGE_FILE_THRESHOLD_BYTES |
| else TIMEOUT_SECONDS |
| ) |
| result = fetch(url, timeout_seconds=timeout_seconds, prefer_curl=prefer_curl) |
| record = {key: value for key, value in result.items() if key != "body"} |
| record["url"] = url |
| mirrors[surface] = record |
| if not result["ok"]: |
| failures.append({"surface": surface, "kind": "fetch_failed", "url": url, "error": result.get("error")}) |
| continue |
| if local["exists"] and result["sha256"] != local["sha256"]: |
| failures.append( |
| { |
| "surface": surface, |
| "kind": "hash_mismatch", |
| "url": url, |
| "expected_sha256": local["sha256"], |
| "actual_sha256": result["sha256"], |
| } |
| ) |
| return { |
| "id": group["id"], |
| "title": group["title"], |
| "status": "pass" if not failures else "fail", |
| "local": local, |
| "mirrors": mirrors, |
| "failures": failures, |
| } |
|
|
|
|
| def marker_record(check: dict) -> dict: |
| result = fetch(check["url"]) |
| failures = [] |
| missing = [] |
| forbidden_hits = [] |
| if not result["ok"]: |
| failures.append({"kind": "fetch_failed", "url": check["url"], "error": result.get("error")}) |
| text = "" |
| else: |
| text = result["body"].decode("utf-8", errors="ignore") |
| missing = [marker for marker in check["required"] if marker not in text] |
| forbidden_hits = [marker for marker in check["forbidden"] if marker in text] |
| if missing: |
| failures.append({"kind": "missing_required_markers", "markers": missing}) |
| if forbidden_hits: |
| failures.append({"kind": "forbidden_markers_present", "markers": forbidden_hits}) |
| return { |
| "id": check["id"], |
| "title": check["title"], |
| "url": check["url"], |
| "status": "pass" if not failures else "fail", |
| "fetch": {key: value for key, value in result.items() if key != "body"}, |
| "required_marker_count": len(check["required"]), |
| "missing_markers": missing, |
| "forbidden_markers_present": forbidden_hits, |
| "failures": failures, |
| } |
|
|
|
|
| def build_report() -> dict: |
| hash_records = [ |
| hash_group_record(group) |
| for group in [*HASH_GROUPS, *qwen3_lora_hash_groups(), *cosmos3_super_lora_hash_groups()] |
| ] |
| marker_records = [marker_record(check) for check in [*MARKER_CHECKS, *local_path_checks()]] |
| failures = [ |
| {"check": record["id"], **failure} |
| for record in [*hash_records, *marker_records] |
| for failure in record["failures"] |
| ] |
| return { |
| "title": "Ropedia Xperience-10M Live Publication Status", |
| "status": "pass" if not failures else "fail", |
| "checked_at_utc": datetime.now(timezone.utc).isoformat(timespec="seconds"), |
| "scope": ( |
| "Live GitHub Pages, GitHub raw, Hugging Face Space, artifact dataset, " |
| "baseline model mirrors, and the Qwen3-Omni/Cosmos3 LoRA adapter repos when " |
| "their upload packages exist locally." |
| ), |
| "hash_groups": hash_records, |
| "marker_checks": marker_records, |
| "failure_count": len(failures), |
| "failures": failures, |
| } |
|
|
|
|
| def main() -> int: |
| parser = argparse.ArgumentParser() |
| parser.add_argument("--output", type=Path, default=DEFAULT_OUTPUT) |
| parser.add_argument("--no-write", action="store_true", help="Verify and print status without updating the report file.") |
| args = parser.parse_args() |
|
|
| report = build_report() |
| if not args.no_write: |
| args.output.parent.mkdir(parents=True, exist_ok=True) |
| args.output.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") |
| print(f"{report['status'].upper()}: wrote {args.output}") |
| else: |
| print(f"{report['status'].upper()}: live publication verification") |
| if report["status"] != "pass": |
| for failure in report["failures"][:20]: |
| print(f"- {failure}") |
| if len(report["failures"]) > 20: |
| print(f"- ... {len(report['failures']) - 20} more failures") |
| return 1 |
| return 0 |
|
|
|
|
| if __name__ == "__main__": |
| raise SystemExit(main()) |
|
|