Files
HartOMat/docs/workflows/CURRENT_EXECUTION_BATCH.md
T

12 KiB

Current Execution Batch

Stand: April 9, 2026

Dieses Batch zerlegt die verbleibende Workflow-Paritätsarbeit in 12 direkt umsetzbare Blöcke. Ziel bleibt unverändert:

  • /workflows produktionsfähig machen
  • den Legacy-Workflow jederzeit funktionsfähig halten
  • Tests und Browser-Verifikation gezielt und sequenziell fahren, damit der lokale Stack nicht durch RAM-Last kippt

Reihenfolge

Block 1: Shared Authoring Surface

Ziel: Die Authoring-Logik für Canvas-Menu und Sidebar auf eine gemeinsame Grundlage ziehen, damit neue Node-Organisation, Stage-Führung und spätere Output-Type-Deep-Links nicht doppelt implementiert werden.

Primäre Dateien:

  • frontend/src/components/workflows/NodeCommandMenu.tsx
  • frontend/src/components/workflows/NodeDefinitionsPanel.tsx
  • frontend/src/components/workflows/**

Ergebnis:

  • ein gemeinsames Authoring-Modell statt verteilter UI-spezifischer Sonderlogik
  • keine Regression bei Right-Click-Insert, Module/Path-Inserts oder Starter-Steps

Block 2: Node Organization Hardening

Ziel: Die Node-Library nach Family, Stage und Module weiter verdichten, damit große Produktionsgraphen schneller gebaut werden können.

Ergebnis:

  • schnellere Auffindbarkeit
  • weniger UI-Rauschen
  • sauberere Trennung zwischen Legacy-, Bridge- und Graph-Nodes

Block 3: CAD Operational Guidance

Ziel: CAD-Workflows dieselbe operative Führung geben wie der Still-Graph heute schon hat, inklusive Stage-Status und klarer Baseline-Pfade.

Ergebnis:

  • CAD-Familie wirkt nicht mehr wie ein Sonderfall
  • Intake-Graphen sind ohne Trial-and-Error zusammensetzbar

Block 4: Run Inspection Completion

Ziel: Run-, Node- und Comparison-Ansichten so vervollständigen, dass graphische Fehlläufe direkt im Editor debuggt werden können.

Ergebnis:

  • Fehlerursachen sind ohne DB-Inspektion sichtbar
  • Preflight, Dispatch und Run-Ergebnis greifen sichtbar ineinander

Block 5: Context Flow Simplification

Ziel: Dispatch-/Preflight-Kontextauswahl vereinfachen, besonders bei vielen Order-Lines und Workflow-Varianten.

Ergebnis:

  • weniger Fehlbedienung
  • klarere Zuordnung zwischen Workflow, Kontext und Ausführungsmodus

Block 6: Output-Type Contract Closure

Ziel: Output-Type-Erstellung und -Bearbeitung noch stärker auf Workflow-Verträge und Invocation-Profile zwingen.

Ergebnis:

  • neue Output-Types lassen sich stabil anlegen
  • Family- und Artifact-Mismatch wird früher blockiert

Block 7: Canonical Blueprints And Seeds

Ziel: Starter-Blueprints, Seed-Workflows und Frontend-Neuanlage konsistent auf die kanonischen Family-sicheren Graphen bringen.

Ergebnis:

  • weniger Drift zwischen Seed, Editor und Runtime
  • bestehende Golden-/Smoke-Workflows bleiben reparierbar

Block 8: Still Smoke Harness Stabilization

Ziel: Den non-legacy Still-Workflow als wiederholbaren Smoke-Pfad härten, ohne den Legacy-Fallback zu schwächen.

Ergebnis:

  • eindeutiges Pass/Fail-Signal für den kanonischen Still-Graph
  • belastbarer Startpunkt für echten E2E-Abgleich

Block 9: CAD/Material Parity

Ziel: Materialzuweisung, Instances und Geometrie-Identität zwischen Preview, GLTF-Viewer und Workflow-Verbrauch weiter angleichen.

Ergebnis:

  • weniger manuelle Materialreparatur
  • Vorschau und Renderpfad greifen auf denselben vertrauenswürdigen Zustand zu

Block 10: Rollout And Fallback Controls

Ziel: Rollout, Shadow und Graph-Freigabe sauber pro Workflow und pro Output-Type steuerbar halten.

Ergebnis:

  • sichere Aktivierung
  • klarer Fallback- und Rückrollpfad

Block 11: Repo Hygiene

Ziel: Hilfsskripte, Test-Utilities und neue Workflow-Helfer konsolidieren, damit Folgearbeit nicht auf provisorischen Strukturen aufbaut.

Ergebnis:

  • weniger Einweglogik
  • besser lesbare Diff-Basis für Restarbeiten

Block 12: Sequential E2E Gates

Ziel: Die wichtigsten Smoke- und Browser-Gates dokumentiert und gezielt ausführbar machen, ohne den Rechner parallel zu überlasten.

Ergebnis:

  • klarer Minimal-Satz an E2E-Prüfungen
  • reproduzierbare Freigabegates für /workflows

Aktuelle Ausführung

  • Abgeschlossen: Block 1
  • Abgeschlossen: Block 2
  • Abgeschlossen: Block 3
  • Abgeschlossen: Block 4
  • Abgeschlossen: Block 5
  • Abgeschlossen: Block 6
  • Abgeschlossen: Block 7
  • Abgeschlossen: Block 8
  • Abgeschlossen: Block 9
  • Parallel in Arbeit: Block 11
  • Vorbereitet: Block 12
  • Nächster geplanter Folgeblock: Block 11

Nächste Orchestrierte Batch-Wellen

Diese Wellen priorisieren Root-Cause-Arbeit vor weiterer UI-Politur und halten Legacy jederzeit parallel funktionsfähig.

Welle P1: Vertrags- und Produktionsmodell-Schließung

Muss zuerst laufen:

  • P1-A Node-Contract Closure
    • Backend-Registry und Schema als harte Source of Truth schließen
    • Fokus: Family-Konsistenz, param-key-Validierung, vollständige node settings contracts
  • P1-B Output-Type / Invocation Model Closure
    • Output Types als sauberes Workflow-Invocation-Modell abschließen
    • Fokus: artifact/family compatibility, editor/API contract clarity, sichere Erstellung neuer Output Types
  • P1-C Render-Template- und Asset-Library-Inputs als echte Produktionsinputs modellieren
    • Fokus: template/material-library/input contracts statt versteckter Defaults

Warum zuerst:

  • diese drei Blöcke definieren die autoritativen Verträge, an denen Editor, Runtime und Golden-Gates hängen
  • weitere Runtime- und E2E-Arbeit bleibt sonst drift-anfällig

Welle P2: Runtime-Parität und Graph/Legacy-Unifikation

Parallelisierbar nach P1-A:

  • P2-A Legacy/Graph Module Unification
    • gleiche Produktionsmodule in Legacy- und Graph-Pfad verwenden
    • Fokus: template resolution, samples/defaults, dispatch parity
  • P2-B Canonical Graphs / Starter Blueprints / Seed Normalization
    • eine kanonische Graph-Quelle statt Drift zwischen backend blueprints, bundles und frontend starters
  • P2-C Run Inspection Completion
    • Preflight, dispatch, comparison und node outputs operativ debugbar machen

Welle P3: CAD-/Material-Parität und Editor-Führung

Parallelisierbar nach P2-A:

  • P3-A CAD / Material Parity
    • instance-aware part/material truth zwischen exporter, viewer und render path schließen
  • P3-B Editor Organization Around Modules / Families / Input Paths
    • gemeinsame Authoring-Surface weiter auf modulare Produktionspfade zuschneiden
  • P3-C Context Flow Simplification Follow-up
    • Kontextauswahl und Output-Type-Einstieg auf die neuen Contracts ausrichten

Welle P4: Operative Freigabe und Hygiene

Nach P2 und P3:

  • P4-A Shadow / Graph Rollout Hardening
    • pro workflow / output type steuerbar, mit klarem Rückfallpfad
  • P4-B Sequential Golden / Smoke / E2E Gates
    • echte Produktionsfälle mit Templates, Varianten und Output-Types sequenziell absichern
  • P4-C Test-Infrastruktur / Low-RAM Gates
    • reproduzierbare sequentielle Verifikation
  • P4-D Repo Hygiene / Generated Artifact Root Cause
    • Ownership-, Pycache- und generated-file-Ursachen bereinigen

Sofort Nächste Disjunkte Arbeitsblöcke

Für die aktuelle nächste Ausführung werden diese drei Blöcke als kleinste sinnvolle Parallel-Batch vorbereitet:

  • Batch NB-1: Node-Contract Closure
    • Status: verifiziert
    • Fokus: Registry- und Schema-Contracts als harte Source of Truth
    • Verifikation: backend/tests/domains/test_workflow_schema.py, backend/tests/domains/test_workflow_node_registry.py
  • Batch NB-2: Output-Type / Invocation Model Closure
    • Status: verifiziert
    • Fokus: Artifact-/Family-/Invocation-Contracts fuer Output Types
    • Verifikation: backend/tests/domains/test_output_types_api.py, frontend/src/__tests__/api/outputTypes.test.ts
  • Batch NB-3: CAD / Material parity root-cause closure
    • Status: verifiziert
    • Fokus: part-key-/instance-stabile Materialidentitaet zwischen Exporter, Manifest und Viewer
    • Teilfortschritt April 10, 2026: scene-manifest aliasiert jetzt auch exporter-variant keys wie _af6 auf ihren kanonischen semantischen part key; der Viewer kann damit dieselbe autoritative Materialidentitaet konsumieren wie der Manifest-Pfad
    • Verifikation: gezielte low-RAM CAD-/Viewer-Tests nach Root-Cause-Fix
    • Abschluss April 11, 2026: live HartOMat-Export fuer 7c214057-9982-4d6e-aa87-43bfabfdb709 liefert jetzt 146 Manifest-Parts, 146 Mesh-Nodes, 146 eindeutige partKeys, 0 fehlende und 0 duplizierte Zuordnungen; Root Cause war die Kombination aus stale GLB cache plus nicht-atomarem OCC-Overwrite beim Re-Export

Merge-Reihenfolge:

  1. NB-1
  2. NB-2
  3. NB-3
  4. danach erst weitere Runtime-/Editor-Folgeblöcke

Letzte Verifikation

  • ./scripts/repo_hygiene.sh
  • Ergebnis: Dry-run listet bereinigbare Cache-/Bytecode-Artefakte plus nicht dem aktuellen Nutzer gehörende Generated Files; die Repo-Hygiene deckt jetzt auch render-worker/scripts/__pycache__ explizit ab
  • find . \! -user "$USER" -not -path './.git/*' -ls | sed -n '1,120p'
  • Ergebnis: verbleibende Ownership-Reste liegen im render-worker-Pycache; Compose-Härtung wird nun über PYTHONPYCACHEPREFIX=/tmp/pycache auf die Ursache angesetzt
  • backend/.venv/bin/pytest backend/tests/test_config_runtime_resolution.py -q
  • Ergebnis: 3 Tests grün; Host-Runtime normalisiert Docker-Service-Aliase (postgres, redis) außerhalb von Containern nun automatisch auf localhost, Container-Runtime bleibt unverändert
  • backend/.venv/bin/pytest backend/tests/domains/test_workflow_runtime_services.py -q -x
  • Ergebnis: 29 Tests grün; Root Cause für den Host-Testfehler war Celery/Redis-Zugriff über Docker-DNS aus dem Host-Kontext, der jetzt zentral im Config-Layer abgefangen wird
  • curl -I -s http://localhost:5173
  • Ergebnis: Frontend antwortet mit HTTP/1.1 200 OK
  • curl -s http://localhost:8888/health
  • Ergebnis: Backend antwortet mit {"status":"ok","service":"hartomat-backend"}
  • python3 scripts/test_render_pipeline.py --workflow-still-smoke --execution-mode shadow
  • Ergebnis: Live-Smoke erfolgreich; Shadow-Comparison stabilisiert auf WARN mit mean_pixel_delta=0.000257, Legacy bleibt dadurch weiterhin authoritative
  • ./backend/.venv/bin/pytest -q backend/tests/domains/test_workflow_runtime_services.py -k 'resolve_order_line_template_context_uses_exact_template_and_override or resolve_order_line_material_map_prefers_line_override_over_output_override or resolve_order_line_material_map_allows_node_override or prefers_authoritative_scene_manifest_assignments or keeps_legacy_source_name_fallback_without_scene_manifest'
  • Ergebnis: 5 Tests grün; autoritative Scene-Manifest-Zuweisungen werden nun im Workflow-Renderpfad auf part_key und source_name gespiegelt, Legacy-Fallback bleibt unverändert
  • ./backend/.venv/bin/pytest backend/tests/test_part_key_service.py -q
  • Ergebnis: 1 Test grün; part-key-basierte Manifest-Auflösung bleibt konsistent
  • python3 scripts/compare_live_cad_parity.py --cad-id 7c214057-9982-4d6e-aa87-43bfabfdb709
  • Ergebnis: Live-CAD-Parität grün; Manifest, ausgeliefertes GLB und Viewer-partKey-Grundlage stimmen für alle 146 renderbaren Teile exakt überein
  • cd frontend && npx vitest run src/__tests__/components/workflowEditorUi.test.tsx src/__tests__/api/outputTypes.test.ts --pool forks --poolOptions.forks.singleFork=true
  • Ergebnis: 20 Tests grün, sequenziell ausgeführt
  • cd frontend && npm test -- src/__tests__/components/workflowEditorUi.test.tsx src/__tests__/components/workflowAuthoringGuidance.test.ts
  • Ergebnis: 17 Tests grün; die gemeinsame Authoring-Surface bleibt nach dem jüngsten Wiring-Refactor stabil
  • cd frontend && npm run build
  • Ergebnis: Build grün; /workflows bleibt kompilierbar nach dem Authoring-Refactor
  • ./backend/.venv/bin/pytest backend/tests/test_part_key_service.py -q
  • Ergebnis: 6 Tests grün; scene-manifest deckt jetzt neben _2/_3 auch exporter-style _af*-Varianten ueber semantische Alias-Keys ab
  • ./backend/.venv/bin/pytest backend/tests/test_export_step_to_gltf.py -q
  • Ergebnis: 3 Tests grün; GLB partKey stamping bleibt mit semantic-sibling-Aufloesung stabil
  • cd frontend && npm test -- src/__tests__/components/cadUtils.test.ts
  • Ergebnis: 11 Tests grün; Viewer-seitige part-key-Aufloesung bleibt nach dem Manifest-Alias-Fix konsistent