# onlyxitachi/gafime architecture

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

- Interactive diagram: https://gitdiagram.com/onlyxitachi/gafime
- Repository: https://github.com/onlyxitachi/gafime

## Overview

GAFIME exposes feature-interaction analysis through Python, while Rust owns validation, candidate planning, scheduling and execution; native GPU payloads execute device work. The graph preserves continuous, decision-path and temporal candidate stages, result/significance processing, and optional backend paths. Several relationships are documented or visible in the source index; unsampled wiring is omitted rather than inferred.

Main entry points: [`crates/gafime-gpu-sys/src/backend.rs`](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-gpu-sys/src/backend.rs) (GPU loader/backend), [`python/gafime/v1_adapter.py`](https://github.com/onlyxitachi/gafime/blob/main/python/gafime/v1_adapter.py) (Analysis boundary), [`crates/gafime-py/src/continuous.rs`](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/continuous.rs) (Continuous bridge), [`python/gafime/api.py`](https://github.com/onlyxitachi/gafime/blob/main/python/gafime/api.py) (Python API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_python["Python interface"]
  node_py_api["Python API<br/>[api.py]"]
  node_config["Engine config<br/>[config.py]"]
  node_adapter["Analysis boundary<br/>[v1_adapter.py]"]
  node_compile["Compiled lifecycle"]
  node_report["Reporting<br/>[report.py]"]
  node_py_native["Native Python bridge<br/>[py_api.rs]"]
  node_continuous_bridge["Continuous bridge<br/>[continuous.rs]"]
  node_generated["Generated candidates<br/>[generated.rs]"]
end

subgraph group_planning["Rust orchestration"]
  node_input["Input preparation<br/>[input.rs]"]
  node_continuous_plan["Continuous planning<br/>[continuous.rs]"]
  node_candidate_plan["Candidate descriptors<br/>[combos.rs]"]
  node_scheduler["Scheduling"]
  node_reduction["Reduction<br/>[mod.rs]"]
end

subgraph group_core["Core execution"]
  node_cpu_matrix["Precision matrix<br/>[precision.rs]"]
  node_cpu_kernels["Metric kernels<br/>[mod.rs]"]
  node_simd["SIMD kernels<br/>[covariance.rs]"]
  node_decision["Decision paths<br/>[decision_path.rs]"]
  node_timeseries["Temporal transforms<br/>[time_series.rs]"]
  node_significance["Significance tests<br/>[significance.rs]"]
  node_results["Ranked results<br/>[result.rs]"]
end

subgraph group_gpu["GPU backends"]
  node_gpu_abi["GPU host ABI<br/>[gafime_gpu_abi.hpp]"]
  node_gpu_sys["GPU loader/backend<br/>[backend.rs]"]
  node_cuda["CUDA payload"]
  node_rocm["ROCm payload"]
  node_metal["Metal payload"]
end

node_user(("Analyst"))

node_user -->|"declares analysis"| node_py_api
node_py_api -.->|"uses settings"| node_config
node_py_api -.->|"invokes boundary"| node_adapter
node_adapter -->|"supports compilation"| node_compile
node_adapter -.->|"loads native boundary"| node_py_native
node_py_native -.->|"delegates continuous"| node_continuous_bridge
node_continuous_bridge -->|"uses generation"| node_generated
node_continuous_bridge -->|"uses precision data"| node_cpu_matrix
node_continuous_bridge -->|"calls significance"| node_significance
node_generated -->|"discovers paths"| node_decision
node_generated -->|"generates transforms"| node_timeseries
node_adapter -.->|"returns reports"| node_report
node_input -.->|"feeds analysis"| node_continuous_plan
node_continuous_plan -->|"builds candidates"| node_candidate_plan
node_candidate_plan -.->|"schedules batches"| node_scheduler
node_candidate_plan -->|"supports reduction"| node_reduction
node_cpu_matrix -.->|"provides values"| node_cpu_kernels
node_cpu_kernels -->|"dispatches SIMD"| node_simd
node_significance -->|"tests paths"| node_decision
node_significance -->|"tests temporal candidates"| node_timeseries
node_reduction -.->|"reduces results"| node_results
node_gpu_sys -->|"binds ABI"| node_gpu_abi
node_gpu_sys -.->|"dispatches CUDA"| node_cuda
node_gpu_sys -.->|"dispatches ROCm"| node_rocm
node_gpu_sys -.->|"dispatches Metal"| node_metal

click node_py_api "https://github.com/onlyxitachi/gafime/blob/main/python/gafime/api.py"
click node_config "https://github.com/onlyxitachi/gafime/blob/main/python/gafime/config.py"
click node_adapter "https://github.com/onlyxitachi/gafime/blob/main/python/gafime/v1_adapter.py"
click node_compile "https://github.com/onlyxitachi/gafime/tree/main/python/gafime/compile"
click node_report "https://github.com/onlyxitachi/gafime/blob/main/python/gafime/reporting/report.py"
click node_py_native "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/py_api.rs"
click node_continuous_bridge "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/continuous.rs"
click node_generated "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/generated.rs"
click node_input "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/input.rs"
click node_continuous_plan "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/continuous.rs"
click node_candidate_plan "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/plan/combos.rs"
click node_scheduler "https://github.com/onlyxitachi/gafime/tree/main/crates/gafime-orchestrator/src/schedule"
click node_reduction "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/reduce/mod.rs"
click node_cpu_matrix "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/precision.rs"
click node_cpu_kernels "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/kernels/mod.rs"
click node_simd "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/simd/covariance.rs"
click node_decision "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/decision_path.rs"
click node_timeseries "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/time_series.rs"
click node_significance "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/significance.rs"
click node_results "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/result.rs"
click node_gpu_abi "https://github.com/onlyxitachi/gafime/blob/main/src/common/gafime_gpu_abi.hpp"
click node_gpu_sys "https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-gpu-sys/src/backend.rs"
click node_cuda "https://github.com/onlyxitachi/gafime/tree/main/src/cuda"
click node_rocm "https://github.com/onlyxitachi/gafime/tree/main/src/rocm"
click node_metal "https://github.com/onlyxitachi/gafime/tree/main/src/metal"

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_py_api,node_config,node_adapter,node_compile,node_report,node_py_native,node_continuous_bridge,node_generated toneBlue
class node_input,node_continuous_plan,node_candidate_plan,node_scheduler,node_reduction toneAmber
class node_cpu_matrix,node_cpu_kernels,node_simd,node_decision,node_timeseries,node_significance,node_results toneMint
class node_gpu_abi,node_gpu_sys,node_cuda,node_rocm,node_metal toneRose
class node_user toneIndigo
```

## Components

### Python interface

- [Python API](https://github.com/onlyxitachi/gafime/blob/main/python/gafime/api.py): `python/gafime/api.py`
- [Engine config](https://github.com/onlyxitachi/gafime/blob/main/python/gafime/config.py): `python/gafime/config.py`
- [Analysis boundary](https://github.com/onlyxitachi/gafime/blob/main/python/gafime/v1_adapter.py): `python/gafime/v1_adapter.py`
- [Compiled lifecycle](https://github.com/onlyxitachi/gafime/tree/main/python/gafime/compile): `python/gafime/compile`
- [Reporting](https://github.com/onlyxitachi/gafime/blob/main/python/gafime/reporting/report.py): `python/gafime/reporting/report.py`
- [Native Python bridge](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/py_api.rs): `crates/gafime-py/src/py_api.rs`
- [Continuous bridge](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/continuous.rs): `crates/gafime-py/src/continuous.rs`
- [Generated candidates](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-py/src/generated.rs): `crates/gafime-py/src/generated.rs`

### Rust orchestration

- [Input preparation](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/input.rs): `crates/gafime-orchestrator/src/input.rs`
- [Continuous planning](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/continuous.rs): `crates/gafime-orchestrator/src/continuous.rs`
- [Candidate descriptors](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/plan/combos.rs): `crates/gafime-orchestrator/src/plan/combos.rs`
- [Scheduling](https://github.com/onlyxitachi/gafime/tree/main/crates/gafime-orchestrator/src/schedule): `crates/gafime-orchestrator/src/schedule`
- [Reduction](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-orchestrator/src/reduce/mod.rs): `crates/gafime-orchestrator/src/reduce/mod.rs`

### Core execution

- [Precision matrix](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/precision.rs): `crates/gafime-cpu/src/precision.rs`
- [Metric kernels](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/kernels/mod.rs): `crates/gafime-cpu/src/kernels/mod.rs`
- [SIMD kernels](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/simd/covariance.rs): `crates/gafime-cpu/src/simd/covariance.rs`
- [Decision paths](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/decision_path.rs): `crates/gafime-cpu/src/decision_path.rs`
- [Temporal transforms](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/time_series.rs): `crates/gafime-cpu/src/time_series.rs`
- [Significance tests](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/significance.rs): `crates/gafime-cpu/src/significance.rs`
- [Ranked results](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-cpu/src/result.rs): `crates/gafime-cpu/src/result.rs`

### GPU backends

- [GPU host ABI](https://github.com/onlyxitachi/gafime/blob/main/src/common/gafime_gpu_abi.hpp): `src/common/gafime_gpu_abi.hpp`
- [GPU loader/backend](https://github.com/onlyxitachi/gafime/blob/main/crates/gafime-gpu-sys/src/backend.rs): `crates/gafime-gpu-sys/src/backend.rs`
- [CUDA payload](https://github.com/onlyxitachi/gafime/tree/main/src/cuda): `src/cuda`
- [ROCm payload](https://github.com/onlyxitachi/gafime/tree/main/src/rocm): `src/rocm`
- [Metal payload](https://github.com/onlyxitachi/gafime/tree/main/src/metal): `src/metal`

### Other components

- **Analyst**

## Connections

- Analyst → Python API: declares analysis (evidence: `README.md`)
- Python API → Engine config: uses settings
- Python API → Analysis boundary: invokes boundary
- Analysis boundary → Compiled lifecycle: supports compilation (evidence: `python/gafime/v1_adapter.py`)
- Analysis boundary → Native Python bridge: loads native boundary
- Native Python bridge → Continuous bridge: delegates continuous
- Continuous bridge → Generated candidates: uses generation (evidence: `crates/gafime-py/src/continuous.rs`)
- Continuous bridge → Precision matrix: uses precision data (evidence: `crates/gafime-py/src/continuous.rs`)
- Continuous bridge → Significance tests: calls significance (evidence: `crates/gafime-py/src/continuous.rs`)
- Generated candidates → Decision paths: discovers paths (evidence: `crates/gafime-py/src/generated.rs`)
- Generated candidates → Temporal transforms: generates transforms (evidence: `crates/gafime-py/src/generated.rs`)
- Analysis boundary → Reporting: returns reports
- Input preparation → Continuous planning: feeds analysis
- Continuous planning → Candidate descriptors: builds candidates (evidence: `crates/gafime-orchestrator/src/continuous.rs`)
- Candidate descriptors → Scheduling: schedules batches
- Candidate descriptors → Reduction: supports reduction (evidence: `crates/gafime-orchestrator/src/plan/combos.rs`)
- Precision matrix → Metric kernels: provides values
- Metric kernels → SIMD kernels: dispatches SIMD (evidence: `crates/gafime-cpu/src/kernels/mod.rs`)
- Significance tests → Decision paths: tests paths (evidence: `crates/gafime-cpu/src/significance.rs`)
- Significance tests → Temporal transforms: tests temporal candidates (evidence: `crates/gafime-cpu/src/significance.rs`)
- Reduction → Ranked results: reduces results
- GPU loader/backend → GPU host ABI: binds ABI (evidence: `README.md`)
- GPU loader/backend → CUDA payload: dispatches CUDA
- GPU loader/backend → ROCm payload: dispatches ROCm
- GPU loader/backend → Metal payload: dispatches Metal
