# SimVSM-Korpus-Report (Phase 1, 21.07.2026)

> VERTRAULICH — enthält Lieferanten-Bezüge. Bleibt lokal in ~/work/simvsm-analyse/,
> nicht ins Brain-Repo (git-Sync) und nicht in Kadi-v2 committen.
> Maschinenlesbares Detail: `_inventar.json`. Erhebungs-Skript: `inventory.py` (deterministisch, wiederholbar).

## Bestand

49 Dateien via Telegram 21.07. (TG 8997–9045): **25 JSON + 24 SVG**, ~47 MB.
Alle Größen gegen Telegram-Metadaten verifiziert, alle 25 JSON parsen fehlerfrei.
Ablage: `~/work/simvsm-korpus/` (Originalnamen erhalten, chmod 700).

11 Lieferanten-Kontexte: Mahle (7 JSON — Versionsreihe 07.05./08.05./16.07.2024 inkl. 17Uhr-Varianten), Schaeffler/iBMUCP (2), BRUSS (2), WeWire (2), BorgWarner (2: Kühler + DCDC), Bosch Lenkung (1, ohne SVG), Brembo (1), ElringKlinger (1), Aumovia (1, 14 MB — größte Datei), LGES (1), YF/Kunststoff Schwanden/EFI/Example/Training (je 1). Continental nur als SVG (2.4 MB, ohne JSON) — Orphan-Fälle wie in Prompt §5.1 vorhergesagt.

## Schema (Versions-Lage entspannt)

Nur **2 Schema-Stände**: mainVersion 3.20.0 / createdWithVersion 3.36.0 (24 Dateien) und 3.18.2/3.34.1 (1 Datei). Der „version-aware Adapter" (§5.3) ist damit real klein — ein Schema mit Minor-Toleranz.

Top-Level: `name`, `description`, `createdWithVersion`, `mainVersion`, `settings`, `alternatives[]`, teils `resultView` (einziger nicht-dokumentierter Key).

- `settings`: `shiftCalendars[] {id,name,shifts}`, `products[] {referenceId,name}`, `modelling` (gridVisible, gridSnapEnabled, axesVisible, guidedDragging, visualizeMainAlternativeDeviations, leadTimeLadderDisplayMode, leadTimeLayerHeight, visualizeParameterDeviations, highlightValueAddingProcesses, disabledValidationCategories), `simulation` (simulationStartDate/EndDate, shiftCalendarReferenceDate)
- `alternatives[]`: `name`, `isMain`, `modificationTime`, `lastOpenDate`, `model` (GoJS GraphLinksModel), `resultData[]`, `extensions.simvsm`
- `model`: `nodeDataArray[]` (key, loc "x y", category item/text, **class = Semantik**, nodeName, photoNames, parameters[]), `linkDataArray[]` (from/to, fromPort/toPort, class, routingBehaviour, text, points)

**73 Alternativen** über 25 Dateien (bis zu N pro Datei, `isMain`-Flag), **3.224 Nodes**, 3.535 Links.

## Node-Klassen-Zensus (23 Klassen)

| Klasse | n | | Klasse | n |
|---|---|---|---|---|
| singleProcess | 1653 | | supermarketStore | 21 |
| fifoStore | 487 | | noteVSM (Kaizen) | 15 |
| inventory | 212 | | shapeRectangle | 14 |
| noteAnnotation | 129 | | bottleneck | 10 |
| inventoryPush | 93 | | clockedProcess | 9 |
| internalMaterialTransport | 89 | | leadProcess | 8 |
| supplier | 78 | | foreignOrders | 2 |
| externalMaterialTransport | 72 | | lightningNote | 1 |
| customer | 71 | | exclamationPointNote | 1 |
| productionControl | 70 | | | |
| customText | 59 | | | |
| image | 49 | | | |
| joinProcess (Montage, mit PartsListTable/BOM) | 41 | | | |
| multiProcess (parallel, mit Capacity) | 40 | | | |

Links: **materialFlow 3116, informationFlow 370** (routingBehaviour: direct 300 / lightning 25 / none 45; text-Label 63×), image 49.

## Parameter-Modell (Kern-Erkenntnis)

Prozess-Zeiten sind **produktspezifisch**: `ProductTable.rows[]` je Prozess mit
`Product`(Ref), `PlannedCycleTime{durationInSec}`, `Zz`(Ist-CT), `XBP`/`BP`(Stk/Behälter), `XLos`(Losgröße), `TransferQuantity`, `ReworkRate`, `ScrapRate`, `Prio`, `Min/MaxReworkingTime`.
Bestands-Nodes zusätzlich: `InitialStock`, `CarrierCapacityProduct`, `SafetyStock`, `ReorderLevel`, `MaximumStock`, `LeadTime`.
Kunde: `Quantity`, `Interval`, `Variation`, `OrderLotSize`, `OrderIndex` (enum: „Bedarf nach Kundentakt" 64× / „Nacheinander" 7×), `OrderTptTime_HistInterval`, `threshold`.
Supplier: `PackagingSize`, `RestockingTime`. PPS: `dispositionInterval`, `extraLose`.
Transport intern: `Capacity`, `TransportationTime`; extern: `NumberOfTransporter`, `VehCapacity`, `WayBackTime`.

Prozess-Ebene (nicht produktspezifisch): `Availability`(%), `MTTR{durationInSec,stopwatch}`, `NumberOfWorkers`, `SetupTime{simple{duration}}` (setupTimeMatrix-Typ — Matrix-Fähigkeit vorhanden, im Korpus nur `simple` genutzt), `ShiftCalendar`(ID-Ref), `isValueAdding`, `Reworking`, `ExitStrategy` (enum, 98% „erster freier Nachfolger"), `AllBaseProdInStorageNecessary`, `comment`.
`usedInProduct` (71×) = Produkt-Transformations-Kante (Rohteil→Fertigteil).
`stopwatch`-Flag an time-Werten = im Tool per Stoppuhr gemessen (Provenance-Signal!).

## Simulation (§13-Datenlage)

**19/25 Dateien real simuliert** (55/73 Alternativen mit resultData). Output-Katalog (stattable): SimulationOverview, UtilizationProcesses(+Bottleneck, +BNZ), NumberOfWorkers, AE_GAE_Processes + GAE_System (≈OEE), Throughput (Prozess/System/Kunde, AVG h), Bestands-Statistiken (Lager/Carrier/Splitted), Kunden-DLZ-Histogramm, BaseProduct-Wartezeiten je kritischem Pfad.
→ Simulation wird real genutzt; Werte sind aber POST-HOC-Ergebnisse. Für SupplierPulse-Ziel (statische Analyse zuerst) sind die relevanten GRÖSSEN ableitbar: Auslastung, Engpass, DLZ, Bestandsreichweite — statisch berechenbar aus denselben Inputs. Simulation = Defer/Expert-Kandidat, Entscheidung in Capability-Matrix.

## SVG-Seite

24 SVGs, von SimVSM gerendert (fixe px-Canvas, FontAwesome embedded als data-URI, 14.393 `<text>`-Elemente gesamt) → Label/Layout semantisch extrahierbar für Validierung; Business-Werte kommen ausschließlich aus JSON (§5.2-Prioritäten bestätigt anwendbar).

## Konsequenzen für Phase 2 (Vorschau)

1. Importer-Machbarkeit: hoch (2 Schema-Stände, sauberes JSON, klare class-Taxonomie)
2. §3.5-Übersetzungstabelle nötig: XBP/XLos/Zz/BP sind reale interne Kürzel im Korpus — dürfen nie ins SupplierPulse-UI
3. Frequenz-Gewichte für §16-Scoring liegen jetzt quantitativ vor (fifoStore 487! → FIFO ist kein Nice-to-have; informationFlow 370 → Info-Fluss ist Pflicht; supermarket/kanban selten)
4. Multi-Produkt pro Prozess (ProductTable) ist SimVSMs Kern-Komplexität — SupplierPulse-Weg: Single-Produkt-Default, Multi-Produkt = Expert (Prompt §6.4 „Product modelling must remain optional")
5. Alternativen-Modell (isMain + benannte Alternativen + modelling.visualizeMainAlternativeDeviations) = direkte Vorlage für Ist/Soll/Szenario-Modell
6. Provenance existiert in SimVSM nur als stopwatch-Flag — SupplierPulse kann hier MEHR (QAF/LSC/manuell/berechnet), das ist Differenzierung, keine Kopie
