# matsuolab/geniac_prize_2026_baseline architecture

> Architecture diagram of the GitHub repository matsuolab/geniac_prize_2026_baseline, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/matsuolab/geniac_prize_2026_baseline
- Repository: https://github.com/matsuolab/geniac_prize_2026_baseline

## Overview

GENIAC-PRIZE is a robotics-agent training and evaluation baseline: it runs CaP-X trials, converts their records into training data, trains LoRA adapters with SFT and DMPO, and scores evaluation runs. The graph preserves the distinct collection, data preparation, evaluation, and training stages, plus the row-level loss layer. README statements support the overall workflow; source-index references support several internal calls. Unsampled runtime details and integrations are omitted where their wiring is not evidenced.

Main entry points: [`geniac_baseline/data/cli.py`](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/cli.py) (Data commands), [`geniac_baseline/trainer/sft_trainer.py`](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/sft_trainer.py) (SFT trainer), [`geniac_baseline/trainer/dmpo_trainer.py`](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/dmpo_trainer.py) (DMPO trainer), [`geniac_baseline/trainer/cli.py`](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/cli.py) (Training commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collection["Trial collection"]
  node_run_config["Run specs"]
  node_collect_plan["Run planner<br/>[plan.py]"]
  node_preflight["Preflight checks<br/>[preflight.py]"]
  node_capx["CaP-X runner"]
  node_trial_records["Trial artifacts"]
end

subgraph group_data["Data preparation"]
  node_data_cli["Data commands<br/>[cli.py]"]
  node_trial_reader["Trial discovery<br/>[trials.py]"]
  node_row_builder["Row conversion<br/>[rows.py]"]
  node_row_schema["Row validation<br/>[schema.py]"]
  node_tagger["Outcome tagging<br/>[tag.py]"]
  node_splitter["Train val split<br/>[split.py]"]
  node_pair_builder["Preference pairs<br/>[pairs.py]"]
end

subgraph group_training["Adapter training"]
  node_training_cli["Training commands<br/>[cli.py]"]
  node_train_config["Train settings<br/>[config.py]"]
  node_data_source["Training data access<br/>[data_source.py]"]
  node_encoder["Prompt encoding<br/>[encode.py]"]
  node_sft["SFT trainer<br/>[sft_trainer.py]"]
  node_dmpo["DMPO trainer<br/>[dmpo_trainer.py]"]
  node_sft_loss["SFT loss<br/>[loss.py]"]
  node_loss_impl["Completion loss<br/>[sft_ce.py]"]
  node_adapter["LoRA adapters"]
end

subgraph group_evaluation["Evaluation"]
  node_eval_cli["Evaluation commands<br/>[cli.py]"]
  node_scorer["Run scorer<br/>[score.py]"]
  node_eval_runs["Evaluation trials"]
  node_scores["Score reports"]
end

node_operator(("Experiment operator"))

node_operator -->|"requests run"| node_collect_plan
node_run_config -->|"configures"| node_collect_plan
node_collect_plan -->|"checks run"| node_preflight
node_collect_plan -->|"launches"| node_capx
node_capx -->|"writes trials"| node_trial_records
node_operator -->|"converts data"| node_data_cli
node_data_cli -->|"reads trials"| node_trial_reader
node_data_cli -->|"builds rows"| node_row_builder
node_row_builder -->|"uses trial refs"| node_trial_reader
node_row_builder -->|"produces rows"| node_row_schema
node_data_cli -->|"tags rows"| node_tagger
node_data_cli -->|"splits rows"| node_splitter
node_data_cli -->|"builds pairs"| node_pair_builder
node_operator -->|"starts training"| node_training_cli
node_training_cli -->|"loads settings"| node_train_config
node_training_cli -->|"runs SFT"| node_sft
node_training_cli -->|"runs DMPO"| node_dmpo
node_sft -->|"loads data"| node_data_source
node_sft -->|"encodes rows"| node_encoder
node_sft -->|"validates rows"| node_row_schema
node_sft -->|"computes loss"| node_sft_loss
node_sft_loss -->|"delegates loss"| node_loss_impl
node_sft -->|"saves adapter"| node_adapter
node_dmpo -->|"loads data"| node_data_source
node_dmpo -->|"encodes turns"| node_encoder
node_dmpo -->|"validates rows"| node_row_schema
node_dmpo -->|"starts from SFT"| node_adapter
node_dmpo -->|"writes adapter"| node_adapter
node_operator -->|"requests evaluation"| node_eval_cli
node_eval_cli -->|"scores runs"| node_scorer
node_eval_runs -->|"provides trials"| node_scorer
node_scorer -->|"writes scores"| node_scores
node_adapter -->|"evaluated by"| node_eval_cli
node_capx -->|"runs evaluation"| node_eval_runs

click node_run_config "https://github.com/matsuolab/geniac_prize_2026_baseline/tree/main/configs"
click node_collect_plan "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/collect/plan.py"
click node_preflight "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/collect/preflight.py"
click node_data_cli "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/cli.py"
click node_trial_reader "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/trials.py"
click node_row_builder "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/rows.py"
click node_row_schema "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/schema.py"
click node_tagger "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/tag.py"
click node_splitter "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/split.py"
click node_pair_builder "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/pairs.py"
click node_training_cli "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/cli.py"
click node_train_config "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/config.py"
click node_data_source "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/data_source.py"
click node_encoder "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/encode.py"
click node_sft "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/sft_trainer.py"
click node_dmpo "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/dmpo_trainer.py"
click node_sft_loss "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/loss.py"
click node_loss_impl "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/losses/sft_ce.py"
click node_eval_cli "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/eval/cli.py"
click node_scorer "https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/eval/score.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_run_config,node_collect_plan,node_preflight,node_capx,node_trial_records toneBlue
class node_data_cli,node_trial_reader,node_row_builder,node_row_schema,node_tagger,node_splitter,node_pair_builder toneAmber
class node_training_cli,node_train_config,node_data_source,node_encoder,node_sft,node_dmpo,node_sft_loss,node_loss_impl,node_adapter toneMint
class node_eval_cli,node_scorer,node_eval_runs,node_scores toneRose
class node_operator toneIndigo
```

## Components

### Trial collection

- [Run specs](https://github.com/matsuolab/geniac_prize_2026_baseline/tree/main/configs): `configs`
- [Run planner](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/collect/plan.py): `geniac_baseline/collect/plan.py`
- [Preflight checks](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/collect/preflight.py): `geniac_baseline/collect/preflight.py`
- **CaP-X runner**
- **Trial artifacts**

### Data preparation

- [Data commands](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/cli.py): `geniac_baseline/data/cli.py`
- [Trial discovery](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/trials.py): `geniac_baseline/data/trials.py`
- [Row conversion](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/rows.py): `geniac_baseline/data/rows.py`
- [Row validation](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/schema.py): `geniac_baseline/data/schema.py`
- [Outcome tagging](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/tag.py): `geniac_baseline/data/tag.py`
- [Train val split](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/split.py): `geniac_baseline/data/split.py`
- [Preference pairs](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/data/pairs.py): `geniac_baseline/data/pairs.py`

### Adapter training

- [Training commands](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/cli.py): `geniac_baseline/trainer/cli.py`
- [Train settings](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/config.py): `geniac_baseline/trainer/config.py`
- [Training data access](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/data_source.py): `geniac_baseline/trainer/data_source.py`
- [Prompt encoding](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/encode.py): `geniac_baseline/trainer/encode.py`
- [SFT trainer](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/sft_trainer.py): `geniac_baseline/trainer/sft_trainer.py`
- [DMPO trainer](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/dmpo_trainer.py): `geniac_baseline/trainer/dmpo_trainer.py`
- [SFT loss](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/loss.py): `geniac_baseline/trainer/loss.py`
- [Completion loss](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/trainer/losses/sft_ce.py): `geniac_baseline/trainer/losses/sft_ce.py`
- **LoRA adapters**

### Evaluation

- [Evaluation commands](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/eval/cli.py): `geniac_baseline/eval/cli.py`
- [Run scorer](https://github.com/matsuolab/geniac_prize_2026_baseline/blob/main/geniac_baseline/eval/score.py): `geniac_baseline/eval/score.py`
- **Evaluation trials**
- **Score reports**

### Other components

- **Experiment operator**

## Connections

- Experiment operator → Run planner: requests run (evidence: `README.md`)
- Run specs → Run planner: configures (evidence: `README.md`)
- Run planner → Preflight checks: checks run (evidence: `geniac_baseline/collect/plan.py`)
- Run planner → CaP-X runner: launches (evidence: `geniac_baseline/collect/plan.py`)
- CaP-X runner → Trial artifacts: writes trials (evidence: `README.md`)
- Experiment operator → Data commands: converts data (evidence: `README.md`)
- Data commands → Trial discovery: reads trials (evidence: `geniac_baseline/data/cli.py`)
- Data commands → Row conversion: builds rows (evidence: `geniac_baseline/data/cli.py`)
- Row conversion → Trial discovery: uses trial refs (evidence: `geniac_baseline/data/rows.py`)
- Row conversion → Row validation: produces rows (evidence: `geniac_baseline/data/rows.py`)
- Data commands → Outcome tagging: tags rows (evidence: `geniac_baseline/data/cli.py`)
- Data commands → Train val split: splits rows (evidence: `geniac_baseline/data/cli.py`)
- Data commands → Preference pairs: builds pairs (evidence: `geniac_baseline/data/cli.py`)
- Experiment operator → Training commands: starts training (evidence: `README.md`)
- Training commands → Train settings: loads settings (evidence: `geniac_baseline/trainer/cli.py`)
- Training commands → SFT trainer: runs SFT (evidence: `geniac_baseline/trainer/cli.py`)
- Training commands → DMPO trainer: runs DMPO (evidence: `geniac_baseline/trainer/cli.py`)
- SFT trainer → Training data access: loads data (evidence: `geniac_baseline/trainer/sft_trainer.py`)
- SFT trainer → Prompt encoding: encodes rows (evidence: `geniac_baseline/trainer/sft_trainer.py`)
- SFT trainer → Row validation: validates rows (evidence: `geniac_baseline/trainer/sft_trainer.py`)
- SFT trainer → SFT loss: computes loss (evidence: `geniac_baseline/trainer/sft_trainer.py`)
- SFT loss → Completion loss: delegates loss (evidence: `geniac_baseline/trainer/loss.py`)
- SFT trainer → LoRA adapters: saves adapter (evidence: `README.md`)
- DMPO trainer → Training data access: loads data (evidence: `geniac_baseline/trainer/dmpo_trainer.py`)
- DMPO trainer → Prompt encoding: encodes turns (evidence: `geniac_baseline/trainer/dmpo_trainer.py`)
- DMPO trainer → Row validation: validates rows (evidence: `geniac_baseline/trainer/dmpo_trainer.py`)
- DMPO trainer → LoRA adapters: starts from SFT (evidence: `geniac_baseline/trainer/dmpo_trainer.py`)
- DMPO trainer → LoRA adapters: writes adapter (evidence: `README.md`)
- Experiment operator → Evaluation commands: requests evaluation (evidence: `README.md`)
- Evaluation commands → Run scorer: scores runs (evidence: `geniac_baseline/eval/cli.py`)
- Evaluation trials → Run scorer: provides trials (evidence: `geniac_baseline/eval/score.py`)
- Run scorer → Score reports: writes scores (evidence: `README.md`)
- LoRA adapters → Evaluation commands: evaluated by (evidence: `README.md`)
- CaP-X runner → Evaluation trials: runs evaluation (evidence: `README.md`)
