# gabrieljqs/principia_minima architecture

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

- Interactive diagram: https://gitdiagram.com/gabrieljqs/principia_minima
- Repository: https://github.com/gabrieljqs/principia_minima

## Overview

Principia Minima is a desktop tool for optimizing one-dimensional cutting plans. Its principal workflow starts with demand CSVs, groups demand for optimization, and supports both planned and emergency scenarios; the emergency path also obtains available stock. The source excerpt shows UI handlers invoking demand parsing and grouping, and shows bar-level allocation and visual-sheet generation code. The optimizer and links from plans to reporting are important product stages, but their calls are not visible in the excerpts, so those relationships are marked unverified or omitted.

Main entry points: [`Principia_Minima_v3_0_industrial.py`](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py) (Tk desktop app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Desktop interface"]
  node_app["Tk desktop app"]
end

subgraph group_planning["Planning workflows"]
  node_demand["Demand CSV reader"]
  node_grouping["Demand grouping"]
  node_planned["Planned scenario"]
  node_emergency["Emergency scenario"]
  node_stock["Emergency stock"]
  node_optimizer["Cut optimizer"]
end

subgraph group_results["Plan outputs"]
  node_allocation["Bar allocation"]
  node_visual["Visual cut sheet"]
  node_dashboard["Results dashboard"]
  node_comparison["Plan comparison"]
  node_stockview["Final stock view"]
end

node_user(("Operator"))

node_user -->|"operates"| node_app
node_app -->|"reads demand"| node_demand
node_app -->|"groups demand"| node_grouping
node_app -->|"runs planned"| node_planned
node_app -->|"runs emergency"| node_emergency
node_app -->|"gets stock"| node_stock
node_planned -.->|"optimizes"| node_optimizer
node_emergency -.->|"optimizes"| node_optimizer
node_optimizer -.->|"allocates bars"| node_allocation
node_allocation -.->|"renders cuts"| node_visual

click node_app "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_demand "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_grouping "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_planned "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_emergency "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_stock "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_optimizer "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_allocation "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_visual "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_dashboard "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_comparison "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py"
click node_stockview "https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.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_app toneBlue
class node_demand,node_grouping,node_planned,node_emergency,node_stock,node_optimizer toneAmber
class node_allocation,node_visual,node_dashboard,node_comparison,node_stockview toneMint
class node_user toneIndigo
```

## Components

### Desktop interface

- [Tk desktop app](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`

### Planning workflows

- [Demand CSV reader](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Demand grouping](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Planned scenario](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Emergency scenario](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Emergency stock](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Cut optimizer](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`

### Plan outputs

- [Bar allocation](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Visual cut sheet](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Results dashboard](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Plan comparison](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`
- [Final stock view](https://github.com/gabrieljqs/principia_minima/blob/main/Principia_Minima_v3_0_industrial.py): `Principia_Minima_v3_0_industrial.py`

### Other components

- **Operator**

## Connections

- Operator → Tk desktop app: operates (evidence: `Principia_Minima_v3_0_industrial.py`)
- Tk desktop app → Demand CSV reader: reads demand (evidence: `Principia_Minima_v3_0_industrial.py`)
- Tk desktop app → Demand grouping: groups demand (evidence: `Principia_Minima_v3_0_industrial.py`)
- Tk desktop app → Planned scenario: runs planned (evidence: `Principia_Minima_v3_0_industrial.py`)
- Tk desktop app → Emergency scenario: runs emergency (evidence: `Principia_Minima_v3_0_industrial.py`)
- Tk desktop app → Emergency stock: gets stock (evidence: `Principia_Minima_v3_0_industrial.py`)
- Planned scenario → Cut optimizer: optimizes (evidence: `Principia_Minima_v3_0_industrial.py`)
- Emergency scenario → Cut optimizer: optimizes (evidence: `Principia_Minima_v3_0_industrial.py`)
- Cut optimizer → Bar allocation: allocates bars (evidence: `Principia_Minima_v3_0_industrial.py`)
- Bar allocation → Visual cut sheet: renders cuts (evidence: `Principia_Minima_v3_0_industrial.py`)
