#!/usr/bin/env python3 """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())