#!/usr/bin/env python3 """Build a compact source-of-truth artifact index for the research project. The index is intentionally selective. It lists the files behind the public project readouts, not every prediction array or checkpoint in the repository. """ from __future__ import annotations import hashlib import json from datetime import datetime, timezone from pathlib import Path ROOT = Path(__file__).resolve().parents[1] OUTPUT = ROOT / "docs/data/artifact_index.json" ARTIFACTS = [ { "id": "project_brief", "title": "Project brief", "path": "PROJECT_BRIEF.md", "kind": "project_path", "surface": "repo_hf", "shows": "Gives first-pass readers a concise project shape before the detailed artifact trail.", }, { "id": "project_brief_json", "title": "Project brief JSON", "path": "docs/data/project_brief.json", "kind": "project_path", "surface": "website_hf", "shows": "Machine-readable first-reader project brief for the website and Hugging Face mirrors.", }, { "id": "project_status", "title": "Project status", "path": "PROJECT_STATUS.md", "kind": "project_path", "surface": "repo_hf", "shows": "Gives a compact current-state table for first-pass readers.", }, { "id": "project_status_json", "title": "Project status JSON", "path": "docs/data/project_status.json", "kind": "project_path", "surface": "website_hf", "shows": "Machine-readable copy of the current project status for website and HF mirrors.", }, { "id": "research_roadmap", "title": "Research roadmap", "path": "RESEARCH_ROADMAP.md", "kind": "project_path", "surface": "repo_hf", "shows": "Defines the path from public-sample task development to multi-episode held-out evaluation and larger omni-model extensions.", }, { "id": "research_roadmap_json", "title": "Research roadmap JSON", "path": "docs/data/research_roadmap.json", "kind": "project_path", "surface": "website_hf", "shows": "Machine-readable research roadmap for the website and Hugging Face mirrors.", }, { "id": "foundation_model_plan", "title": "Foundation model plan", "path": "FOUNDATION_MODEL_PLAN.md", "kind": "project_path", "surface": "repo_hf", "shows": "Defines the post-data-gate backbone choices: Qwen3-Omni first, Cosmos 3 for world modeling, and VLA/policy models after action-target conversion.", }, { "id": "foundation_model_plan_json", "title": "Foundation model plan JSON", "path": "docs/data/foundation_model_plan.json", "kind": "project_path", "surface": "website_hf", "shows": "Machine-readable foundation-model selection matrix with source links, entry conditions, and evaluation additions.", }, { "id": "omni_model_extension_contract", "title": "Omni model extension contract", "path": "OMNI_MODEL_EXTENSION_CONTRACT.md", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Defines the shared manifest, episode split, held-out evaluation, packaging, and public-safety rules for Qwen3-Omni, Cosmos-style, and VLA/policy model branches.", }, { "id": "omni_backbone_registry_configs", "title": "Omni backbone registry configs", "path": "configs/omni_backbones", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Stores the implemented Qwen3-Omni LoRA contract and planned Cosmos-style world-model and VLA/policy branch contracts.", }, { "id": "omni_backbone_registry_validator", "title": "Omni backbone registry validator", "path": "scripts/omni/backbone_registry.py", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Validates backbone ids, split defaults, leakage guards, required metrics, required files, and forbidden public package categories.", }, { "id": "omni_model_neutral_window_index_exporter", "title": "Model-neutral window index exporter", "path": "scripts/omni/export_model_neutral_window_index.py", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Converts Qwen JSONL records into a model-neutral window index with Qwen, Cosmos-style, and policy/VLA adapter views.", }, { "id": "omni_backbone_scaffolder", "title": "Omni backbone scaffolder", "path": "scripts/omni/scaffold_omni_backbone.py", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Creates a validated planned-backbone config from an existing contract template so new model families inherit the shared rules.", }, { "id": "omni_backbone_packaging_smoke", "title": "Omni backbone packaging smoke test", "path": "scripts/omni/smoke_test_backbone_packaging.py", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Builds synthetic verified packages for every configured backbone and audits them against the public-safe package contract.", }, { "id": "qwen3_omni_error_analysis_script", "title": "Qwen3-Omni held-out error-analysis script", "path": "scripts/omni/analyze_qwen3_omni_errors.py", "kind": "scaleup_contract", "surface": "repo_hf", "shows": "Computes public-safe held-out error-analysis tables by episode, action family, train-seen status, required-modality state, and object category.", }, { "id": "multi_episode_128_baseline_script", "title": "128-episode aligned baseline runner", "path": "scripts/omni/run_128_task_baselines.py", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Runs simple metadata and neural MLP baselines on the same selected 96/16/16 episode split used by the Qwen3-Omni diagnostic pilot.", }, { "id": "qwen3_lora_hf_package_builder", "title": "Qwen3 LoRA HF package builder", "path": "scripts/omni/prepare_qwen3_lora_hf_package.py", "kind": "publication_workflow", "surface": "repo_hf", "shows": "Builds the upload-ready Hugging Face adapter folder from a verified Qwen3 LoRA result summary and adapter directory.", }, { "id": "additional_development_directions", "title": "Additional development directions", "path": "ADDITIONAL_DEVELOPMENT_DIRECTIONS.md", "kind": "project_path", "surface": "repo_hf", "shows": "Records concrete non-backbone Xperience-10M development tracks: taxonomy, benchmark protocol, representation learning, skill graphs, affordances, 3D/4D memory, QA, and policy transfer.", }, { "id": "additional_development_directions_json", "title": "Additional development directions JSON", "path": "docs/data/additional_development_directions.json", "kind": "project_path", "surface": "website_hf", "shows": "Machine-readable additional development directions for the website and Hugging Face mirrors.", }, { "id": "xperience_embodied_foundation_pretraining", "title": "Xperience Embodied Foundation Model pretraining goal", "path": "XPERIENCE_EMBODIED_FOUNDATION_MODEL_PRETRAINING.md", "kind": "project_path", "surface": "repo_hf", "shows": "Describes the future full-corpus Xperience-native pretraining goal, target modules, objectives, staged scale-up, hardware ranges, and evaluation protocol.", }, { "id": "evidence_contract", "title": "Evidence contract", "path": "EVIDENCE_CONTRACT.md", "kind": "project_scope", "surface": "repo", "shows": "Defines the implemented scope, setup-stage items, and multi-episode prerequisites.", }, { "id": "project_packet", "title": "Project packet", "path": "docs/data/project_packet.json", "kind": "project_path", "surface": "website_hf", "shows": "Gives a short project path with scope status and public surfaces.", }, { "id": "artifact_guide", "title": "Artifact guide", "path": "ARTIFACT_GUIDE.md", "kind": "project_path", "surface": "repo_hf", "shows": "Gives the human-readable map from project scope to data, tasks, platform mirrors, and scale-up status.", }, { "id": "official_dataset_card_alignment", "title": "Official Xperience-10M dataset-card alignment", "path": "XPERIENCE10M_DATASET_CARD_ALIGNMENT.md", "kind": "source_alignment", "surface": "repo_hf", "shows": "Aligns public dataset wording with the official gated Xperience-10M card, public sample card, HF API metadata, and current project coverage.", }, { "id": "official_dataset_card_alignment_json", "title": "Official Xperience-10M dataset-card alignment JSON", "path": "docs/data/xperience10m_dataset_card_alignment.json", "kind": "source_alignment", "surface": "website_hf", "shows": "Machine-readable upstream dataset-card, sample-card, and HF API alignment facts for website and HF mirrors.", }, { "id": "source_alignment", "title": "Source alignment", "path": "SOURCE_ALIGNMENT_AUDIT.md", "kind": "source_alignment", "surface": "repo_hf", "shows": "Summarizes the pass/fail check for full-dataset facts, sample-card facts, API-listing notes, and project coverage.", }, { "id": "source_alignment_json", "title": "Source alignment JSON", "path": "docs/data/source_alignment_audit.json", "kind": "source_alignment", "surface": "website_hf", "shows": "Machine-readable source-alignment pass/fail check for repo, website, and HF surfaces.", }, { "id": "source_alignment_validator", "title": "Source alignment validator", "path": "scripts/validate_source_alignment.py", "kind": "source_alignment", "surface": "repo_hf", "shows": "Regenerates the source-alignment report from committed facts and public card text.", }, { "id": "hf_publisher", "title": "Hugging Face publisher", "path": "scripts/publish_hf_bundles.py", "kind": "publication_workflow", "surface": "repo_hf", "shows": "Publishes prepared Space, artifact dataset, and model bundles, including an explicit model-binary upload batch.", }, { "id": "github_package_dockerfile", "title": "GitHub package Dockerfile", "path": "Dockerfile", "kind": "publication_workflow", "surface": "repo", "shows": "Builds the static-dashboard container package for GitHub Container Registry.", }, { "id": "github_package_workflow", "title": "GitHub package workflow", "path": ".github/workflows/publish-ghcr.yml", "kind": "publication_workflow", "surface": "repo", "shows": "Publishes the static-dashboard image to GitHub Container Registry on main or manual dispatch.", }, { "id": "evaluation_protocol", "title": "Evaluation protocol", "path": "EVALUATION_PROTOCOL.md", "kind": "evaluation_protocol", "surface": "repo_hf", "shows": "Defines the window unit, chronological split, task metrics, leakage controls, and current limitations.", }, { "id": "evaluation_protocol_json", "title": "Evaluation protocol JSON", "path": "docs/data/evaluation_protocol.json", "kind": "evaluation_protocol", "surface": "website_hf", "shows": "Machine-readable protocol generated from committed task metrics for website and HF mirrors.", }, { "id": "evaluation_protocol_builder", "title": "Evaluation protocol builder", "path": "scripts/build_evaluation_protocol.py", "kind": "evaluation_protocol", "surface": "repo_hf", "shows": "Regenerates the protocol from committed summary metrics and task artifacts.", }, { "id": "research_takeaways", "title": "Research takeaways", "path": "RESEARCH_TAKEAWAYS.md", "kind": "result_interpretation", "surface": "repo_hf", "shows": "Summarizes the main research lessons from committed metrics and identifies which experiments need held-out episodes.", }, { "id": "research_takeaways_json", "title": "Research takeaways JSON", "path": "docs/data/research_takeaways.json", "kind": "result_interpretation", "surface": "website_hf", "shows": "Machine-readable result interpretation for the website, HF cards, and mirror checks.", }, { "id": "research_takeaways_builder", "title": "Research takeaways builder", "path": "scripts/build_research_takeaways.py", "kind": "result_interpretation", "surface": "repo_hf", "shows": "Regenerates the research takeaways from committed summary metrics and task result artifacts.", }, { "id": "audio_ablation_script", "title": "Audio contribution script", "path": "scripts/audio_ablation_and_raw_upgrade.py", "kind": "result_interpretation", "surface": "repo_hf", "shows": "Measures audio contribution variants across all 12 task contracts.", }, { "id": "audio_ablation_summary", "title": "Audio ablation summary", "path": "results/audio_ablation/audio_ablation_summary.json", "kind": "metrics_source", "surface": "repo_hf", "shows": "Stores per-task audio deltas for all current features, no-audio, audio-only, alternate-audio-only, replacement, and all-plus-alternate variants.", }, { "id": "audio_ablation_summary_md", "title": "Audio ablation summary report", "path": "results/audio_ablation/AUDIO_ABLATION_SUMMARY.md", "kind": "result_interpretation", "surface": "repo_hf", "shows": "Human-readable table showing the measured audio contribution and alternate-representation delta for every task.", }, { "id": "audio_ablation_website_json", "title": "Audio ablation website JSON", "path": "docs/data/audio_ablation_summary.json", "kind": "website_data", "surface": "website_hf", "shows": "Machine-readable audio ablation summary mirrored into the static website and Hugging Face bundles.", }, { "id": "audio_ablation_delta_chart", "title": "Audio ablation delta chart", "path": "docs/assets/charts/audio_ablation_delta.svg", "kind": "visual_evidence", "surface": "website_hf", "shows": "Bar chart of measured current-audio primary-metric deltas across the 12 tasks.", }, { "id": "figure_index", "title": "Figure index", "path": "FIGURE_INDEX.md", "kind": "visual_evidence", "surface": "repo_hf", "shows": "Catalogs public figures, charts, modality thumbnails, dimensions, hashes, roles, and source scripts.", }, { "id": "figure_index_json", "title": "Figure index JSON", "path": "docs/data/figure_index.json", "kind": "visual_evidence", "surface": "website_hf", "shows": "Machine-readable visual asset index for website and Hugging Face mirrors.", }, { "id": "figure_index_builder", "title": "Figure index builder", "path": "scripts/build_figure_index.py", "kind": "visual_evidence", "surface": "repo_hf", "shows": "Regenerates visual-asset hashes, dimensions, and source-script provenance.", }, { "id": "brand_assets_json", "title": "Brand assets manifest", "path": "docs/data/brand_assets.json", "kind": "visual_evidence", "surface": "website_hf", "shows": "Machine-readable manifest for the generated logo system, favicon, social card, dimensions, hashes, and usage roles.", }, { "id": "brand_logo_social_card", "title": "Brand logo social card", "path": "docs/assets/brand/xperience10m-logo-social-card.png", "kind": "visual_evidence", "surface": "website_hf", "shows": "Provides the project logo card used in README, Hugging Face cards, and social previews.", }, { "id": "brand_asset_builder", "title": "Brand asset builder", "path": "scripts/build_brand_assets.py", "kind": "visual_evidence", "surface": "repo_hf", "shows": "Regenerates logo derivatives, favicon variants, app icons, and the Open Graph social card from the generated logo mark.", }, { "id": "quality_gates", "title": "Release checks", "path": "QUALITY_GATES.md", "kind": "quality_gate", "surface": "repo_hf", "shows": "Lists the automated and post-publish checks used to keep the release current.", }, { "id": "quality_gate_manifest", "title": "Release-check manifest", "path": "docs/data/quality_gates.json", "kind": "quality_gate", "surface": "website_hf", "shows": "Machine-readable release-check summary for validators, mirrors, and public project surfaces.", }, { "id": "public_surface_qa", "title": "Public project surface", "path": "PUBLIC_SURFACE_QA.md", "kind": "quality_gate", "surface": "repo_hf", "shows": "Keeps the repo, website, and Hugging Face cards aligned as one cohesive research project surface.", }, { "id": "public_surface_qa_json", "title": "Public project surface JSON", "path": "docs/data/public_surface_qa.json", "kind": "quality_gate", "surface": "website_hf", "volatile": True, "shows": "Machine-readable report for SEO/social metadata, accessible tab semantics, public links, project links, and clear project presentation.", }, { "id": "public_surface_qa_builder", "title": "Public project surface builder", "path": "scripts/build_public_surface_qa.py", "kind": "quality_gate", "surface": "repo_hf", "shows": "Regenerates the public presentation report before release.", }, { "id": "task_surface_integrity", "title": "Task-surface integrity report", "path": "docs/data/task_surface_integrity.json", "kind": "quality_gate", "surface": "website_hf", "volatile": True, "shows": "Confirms the public 12-task cards use human-readable research names, representative modality thumbnails, and the interactive walkthrough/player JSON contract.", }, { "id": "rendered_site_check", "title": "Rendered website check", "path": "RENDERED_SITE_CHECK.md", "kind": "quality_gate", "surface": "repo_hf", "volatile": True, "shows": "Records the latest browser-level load, tab, walkthrough deep-link, control-click, and console-health check.", }, { "id": "rendered_site_check_json", "title": "Rendered website check JSON", "path": "docs/data/rendered_site_check.json", "kind": "quality_gate", "surface": "website_hf", "volatile": True, "shows": "Machine-readable browser-level website check for the public static site.", }, { "id": "rendered_site_check_builder", "title": "Rendered website check builder", "path": "scripts/build_rendered_site_check.py", "kind": "quality_gate", "surface": "repo_hf", "shows": "Builds the rendered website check from browser observations.", }, { "id": "task_surface_validator", "title": "Task-surface integrity validator", "path": "scripts/validate_task_surface.py", "kind": "quality_gate", "surface": "repo_hf", "shows": "Regenerates the task-surface integrity report and fails if task cards expose raw artifact ids or lose the interactive player wiring.", }, { "id": "live_publication_status", "title": "Live publication status", "path": "docs/data/live_publication_status.json", "kind": "quality_gate", "surface": "website_hf", "volatile": True, "shows": "Records the last live GitHub/HF URL verification after upload.", }, { "id": "live_publication_verifier", "title": "Live publication verifier", "path": "scripts/verify_live_publication.py", "kind": "quality_gate", "surface": "repo", "shows": "Fetches the published GitHub/HF URLs and compares live hashes and public-card markers against the release assets.", }, { "id": "reproducibility_contract", "title": "Reproducibility contract", "path": "REPRODUCIBILITY.md", "kind": "reproducibility", "surface": "repo_hf", "shows": "Defines public reproduction commands, expected outputs, and non-reproducible scale-up boundaries.", }, { "id": "reproducibility_matrix", "title": "Reproducibility matrix", "path": "docs/data/reproducibility_matrix.json", "kind": "reproducibility", "surface": "website_hf", "shows": "Machine-readable reproduction steps with expected artifacts and public boundaries.", }, { "id": "artifact_index_builder", "title": "Artifact index builder", "path": "scripts/build_artifact_index.py", "kind": "project_path", "surface": "repo_hf", "shows": "Generates the selective artifact catalog from local files.", }, { "id": "publication_audit", "title": "Public bundle contents", "path": "docs/data/publication_audit.json", "kind": "publication_package_check", "surface": "website_hf", "volatile": True, "shows": "Confirms public bundles exclude raw data, caches, heavy archives, and credential text.", }, { "id": "scale_up_status_check", "title": "Multi-episode pilot status", "path": "docs/data/scope_claims_audit.json", "kind": "scale_up_status", "surface": "website_hf", "volatile": True, "shows": "Separates setup paths from completed held-out-episode results.", }, { "id": "mirror_parity", "title": "Prepared mirror parity report", "path": "docs/data/mirror_parity.json", "kind": "mirror_parity", "surface": "website_hf", "volatile": True, "shows": "Confirms prepared GitHub/HF Space/artifact/model mirrors share the same critical data, figure, website HTML, and validator files.", }, { "id": "website_integrity", "title": "Website integrity report", "path": "docs/data/website_integrity.json", "kind": "integrity_report", "surface": "website_hf", "volatile": True, "shows": "Confirms local website links, anchors, JSON data files, and referenced images resolve.", }, { "id": "project_manifest", "title": "Project manifest", "path": "docs/data/project_manifest.json", "kind": "metadata", "surface": "website_hf", "shows": "Lists public URLs, upstream sources, and machine-readable project metadata.", }, { "id": "task_summary", "title": "12-task summary report", "path": "results/episode_task_suite/summary_report.json", "kind": "metrics_source", "surface": "repo_hf", "shows": "Stores the task definitions, splits, feature dimension, and minimal/neural metrics.", }, { "id": "website_metrics_bundle", "title": "Website metrics bundle", "path": "docs/data/summary_metrics.json", "kind": "website_data", "surface": "website_hf", "shows": "Mirrors task metrics for the static dashboard.", }, { "id": "feature_manifest", "title": "Feature manifest", "path": "results/episode_task_suite/feature_manifest.json", "kind": "data_contract", "surface": "repo_hf", "shows": "Maps the current window vector back to source feature blocks.", }, { "id": "available_modalities", "title": "Available modalities", "path": "results/episode_task_suite/available_modalities.json", "kind": "data_contract", "surface": "repo_hf", "shows": "Documents which sample modalities entered the current extracted feature contract.", }, { "id": "windows_table", "title": "Aligned windows table", "path": "results/episode_task_suite/windows.csv", "kind": "data_contract", "surface": "repo_hf", "shows": "Lists the 1,161 aligned windows and their frame/action/subtask labels.", }, { "id": "neural_mlp_directory", "title": "Neural MLP task-head results", "path": "results/episode_task_suite/neural_mlp", "kind": "result_directory", "surface": "repo_hf_model", "shows": "Stores matching PyTorch MLP results for the 12 task contracts.", }, { "id": "research_direction_taxonomy", "title": "Research direction taxonomy", "path": "results/episode_task_suite/research_directions/research_direction_taxonomy.json", "kind": "taxonomy", "surface": "repo_hf", "shows": "Maps the 12 tasks to the four Ropedia research directions as direct/proxy/diagnostic.", }, { "id": "research_direction_extensions", "title": "Research direction extension probes", "path": "results/episode_task_suite/research_direction_extensions/research_direction_extension_results.json", "kind": "metrics_source", "surface": "repo_hf", "shows": "Stores one coded extension probe per research direction with minimal and neural metrics.", }, { "id": "task_walkthroughs", "title": "Task walkthroughs", "path": "results/episode_task_suite/task_walkthroughs/TASK_WALKTHROUGHS.md", "kind": "onboarding_doc", "surface": "repo_hf", "shows": "Explains every task with case study, input, process modules, output, and limitation.", }, { "id": "task_suite_infographic", "title": "12-task suite infographic", "path": "docs/assets/task_suite_infographic.png", "kind": "generated_figure", "surface": "website_hf", "shows": "Presents the task suite and sample modality thumbnails with metrics generated from committed files.", }, { "id": "modality_atlas", "title": "Responsive modality atlas", "path": "docs/data/modality_atlas.json", "kind": "website_data", "surface": "website_hf", "shows": "Documents the seven public-sample modality cards and their derived thumbnail assets.", }, { "id": "modality_thumbnails", "title": "Standalone modality thumbnails", "path": "docs/assets/modalities", "kind": "generated_figure_assets", "surface": "website_hf", "shows": "Stores small derived thumbnails for readable website modality cards without raw data redistribution.", }, { "id": "pipeline_figure", "title": "Pipeline figure", "path": "docs/assets/pipeline_diagram.png", "kind": "generated_figure", "surface": "website_hf", "shows": "Shows the raw-episode to artifact pipeline with verified labels.", }, { "id": "architecture_figure", "title": "Architecture figure", "path": "docs/assets/task_architectures.png", "kind": "generated_figure", "surface": "website_hf", "shows": "Shows the shared feature pipeline and minimal/neural head families.", }, { "id": "qwen_data_access_status", "title": "Qwen3-Omni data access status", "path": "results/omni_finetune/DATA_ACCESS_STATUS.md", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Summarizes the data-readiness checks required before a held-out Qwen3-Omni pilot can report metrics.", }, { "id": "qwen3_lora_hf_upload_note", "title": "Qwen3 LoRA HF upload note", "path": "results/omni_finetune/HF_UPLOAD.md", "kind": "publication_workflow", "surface": "repo_hf", "shows": "Documents the final 128-episode LoRA adapter upload path, target model repo, package builder, and forbidden files.", }, { "id": "multi_episode_access_status", "title": "Multi-episode access status", "path": "results/omni_finetune/MULTI_EPISODE_ACCESS_STATUS.md", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Documents the public multi-episode access status and 32-episode pilot selection.", }, { "id": "qwen3_omni_error_analysis_report", "title": "Qwen3-Omni held-out error-analysis report", "path": "results/omni_finetune/verified_public/xperience10m_qwen3_omni_128ep_96train_16val_16test_valmon_20260605_eval/analysis/ERROR_ANALYSIS.md", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Summarizes the earlier validation-aware Qwen3-Omni held-out failures by episode, action family, train-seen status, required-modality state, and object category.", }, { "id": "qwen3_omni_error_analysis_json", "title": "Qwen3-Omni held-out error-analysis JSON", "path": "results/omni_finetune/verified_public/xperience10m_qwen3_omni_128ep_96train_16val_16test_valmon_20260605_eval/analysis/error_analysis_summary.json", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Machine-readable Qwen3-Omni held-out error analysis with grouped metrics and sanitized failure examples.", }, { "id": "multi_episode_128_baseline_report", "title": "128-episode aligned baseline report", "path": "results/omni_finetune/multi_episode_128_task_baselines/BASELINE_ALIGNMENT_REPORT.md", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Summarizes same-split simple and neural metadata baselines for the 12 task ids, with unsupported markers for tasks that need missing raw 128 feature blocks.", }, { "id": "multi_episode_128_baseline_summary", "title": "128-episode aligned baseline summary", "path": "results/omni_finetune/multi_episode_128_task_baselines/summary_report.json", "kind": "metrics_source", "surface": "repo_hf", "shows": "Machine-readable 96/16/16 split counts, run configuration, per-task simple metrics, neural metrics, and raw-feature unsupported statuses.", }, { "id": "omni_model_comparison_report", "title": "Omni model comparison report", "path": "results/omni_finetune/OMNI_MODEL_COMPARISON.md", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Reader-facing comparison of the single-episode task suite, 128-episode aligned baselines, Qwen3-Omni packages, and Cosmos3 future-window branch.", }, { "id": "omni_model_comparison_json", "title": "Omni model comparison JSON", "path": "docs/data/omni_model_comparison.json", "kind": "metrics_source", "surface": "repo_hf", "shows": "Machine-readable comparison of the current result versions, per-task aligned baselines, verified Qwen3 packages, and Cosmos3 package.", }, { "id": "cosmos3_nano_verified_summary", "title": "Cosmos3-Nano verified package summary", "path": "results/omni_finetune/verified_public/xperience10m_cosmos3_nano_128ep_future_window_h5_compat_adapter_eval_test_full/verified_result_summary.json", "kind": "metrics_source", "surface": "repo_hf", "shows": "Machine-readable verified public summary for the Cosmos3-Nano future-window compatibility package.", }, { "id": "cosmos3_nano_run_report", "title": "Cosmos3-Nano future-window run report", "path": "results/omni_finetune/verified_public/xperience10m_cosmos3_nano_128ep_future_window_h5_compat_adapter_eval_test_full/eval/RUN_REPORT.md", "kind": "scaleup_status", "surface": "repo_hf", "shows": "Reader-facing held-out metrics and interpretation for the Cosmos3-Nano future-window compatibility branch.", }, { "id": "citation", "title": "Citation metadata", "path": "CITATION.cff", "kind": "citation", "surface": "repo_hf", "shows": "Makes the project externally citable.", }, { "id": "license", "title": "License and data terms", "path": "LICENSE", "kind": "license", "surface": "repo_hf", "shows": "Separates MIT-scoped code from original Xperience-10M data terms.", }, ] def sha256(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 directory_stats(path: Path) -> dict: files = [item for item in path.rglob("*") if item.is_file()] return { "file_count": len(files), "bytes": sum(item.stat().st_size for item in files), } def verified_public_package_artifacts() -> list[dict]: verified_root = ROOT / "results/omni_finetune/verified_public" if not verified_root.exists(): return [] artifacts: list[dict] = [] for summary_path in sorted(verified_root.glob("*/verified_result_summary.json")): package_dir = summary_path.parent slug = package_dir.name payload = json.loads(summary_path.read_text(encoding="utf-8")) title = payload.get("backbone_display_name") or payload.get("eval_run_id") or slug backbone = payload.get("backbone", "unknown_backbone") status = payload.get("status", "unknown") eval_run_id = payload.get("eval_run_id", slug) artifacts.append( { "id": f"verified_public_package_{slug}", "title": f"Verified public package: {title}", "path": package_dir.relative_to(ROOT).as_posix(), "kind": "verified_public_package", "surface": "repo_hf", "shows": ( f"Public-safe verified package for {eval_run_id} " f"({backbone}, status={status})." ), } ) artifacts.append( { "id": f"verified_public_summary_{slug}", "title": f"Verified summary: {title}", "path": summary_path.relative_to(ROOT).as_posix(), "kind": "metrics_source", "surface": "repo_hf", "shows": f"Machine-readable verified summary for {eval_run_id}.", } ) for relative_path, kind, label in [ ("PUBLIC_RESULT_SUMMARY.md", "scaleup_status", "public result summary"), ("eval/RUN_REPORT.md", "scaleup_status", "run report"), ("eval/metrics.json", "metrics_source", "metrics JSON"), ("package_audit.json", "publication_audit", "package audit"), ]: path = package_dir / relative_path if not path.exists(): continue safe_label = label.replace(" ", "_") artifacts.append( { "id": f"verified_public_{safe_label}_{slug}", "title": f"Verified {label}: {title}", "path": path.relative_to(ROOT).as_posix(), "kind": kind, "surface": "repo_hf", "shows": f"{label.capitalize()} for {eval_run_id}.", } ) return artifacts def artifact_entry(item: dict) -> dict: path = ROOT / item["path"] entry = { **item, "exists": path.exists(), } if path.is_file(): entry["bytes"] = path.stat().st_size if item.get("volatile"): entry["hash_policy"] = "existence_and_size_only" else: entry["sha256"] = sha256(path) elif path.is_dir(): entry.update(directory_stats(path)) else: entry.update({"bytes": 0}) return entry def main() -> int: artifacts = [dict(item) for item in ARTIFACTS] artifacts.extend(verified_public_package_artifacts()) summary_path = ROOT / "results/episode_task_suite/summary_report.json" if summary_path.exists(): summary = json.loads(summary_path.read_text(encoding="utf-8")) feature_dim = int(summary.get("feature_dim", 0)) for item in artifacts: if item["id"] == "feature_manifest" and feature_dim: item["shows"] = f"Maps the {feature_dim:,}-dimensional window vector back to source feature blocks." entries = [artifact_entry(item) for item in artifacts] missing = [entry["path"] for entry in entries if not entry["exists"]] by_kind: dict[str, int] = {} for entry in entries: by_kind[entry["kind"]] = by_kind.get(entry["kind"], 0) + 1 report = { "title": "Ropedia Xperience-10M Task Suite Artifact Index", "generated_at_utc": datetime.now(timezone.utc).isoformat(timespec="seconds"), "status": "pass" if not missing else "fail", "artifact_count": len(entries), "missing": missing, "by_kind": by_kind, "artifacts": entries, } OUTPUT.parent.mkdir(parents=True, exist_ok=True) OUTPUT.write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") print(f"{report['status'].upper()}: wrote {OUTPUT}") if missing: for path in missing: print(f"- missing: {path}") return 1 return 0 if __name__ == "__main__": raise SystemExit(main())