BAS-Twin — Becker Aluminium Service Digital Twin

Source of Truth

Alle Projekt-Inhalte leben in ~/source/bas-twin/ — Code, Doku, Pipelines, Steuerung, Verträge, Email-Drafts, Snapshots. Dieser Vault-Eintrag ist nur Stamm-Pointer für die Vault-Konventionen (Querverweis auf Kunde, Personen, Finanzen).

Obsidian-Zugriff: Der Ordner repo/ ist ein Symlink auf ~/source/bas-twin/. Damit erscheinen alle Repo-Files im Obsidian-Tree unter intern/projekte/bas-twin/repo/ und sind klickbar. Source-of-Truth bleibt das Schwester-Repo — Bearbeiten/Committen erfolgt dort, nicht ueber den Symlink-Pfad. Der Symlink ist git-ignored.

Wo finde ich was im bas-twin Repo:

AufgabePfad
KI-Routing~/source/bas-twin/CLAUDE.md
Status / Scope / Zahlen~/source/bas-twin/projekt/steuerung/scope.md
Was steht jetzt an?~/source/bas-twin/projekt/steuerung/kanban.md
Sprint-Plan~/source/bas-twin/projekt/steuerung/roadmap.md
Stakeholder~/source/bas-twin/projekt/steuerung/stakeholder.md
Historie~/source/bas-twin/projekt/_intern/historie.md
V3-Lücken-Register~/source/bas-twin/projekt/_intern/v3-luecken-register.md
Email-Drafts an Becker~/source/bas-twin/projekt/_intern/kommunikation/
Verträge~/source/bas-twin/projekt/_intern/vertrag/
AWS-Stack-Pattern~/source/bas-twin/docs/aws-stack-pattern.md
Architektur~/source/bas-twin/ARCHITECTURE.md
Test-Daten (extern Git)~/source/bas-twin/projekt/daten/test-daten.md~/secure-data/bas-twin-test/inbound/

Querverweise im Vault

Status-Snapshot

Kommerziell

  • Phase 1 — Festpreis €30k netto (3 Tranchen je 10k: M1 31.05., M2 30.06., M3 15.07.)
  • Recurring — 350 €/Mo Hosting + 600 €/Mo Compliance-Sockel, 24-Mo Mindestlaufzeit
  • Angebot V3 — am 06.05.2026 von Ralf inhaltlich angenommen, noch nicht unterschrieben
  • Vertrag (offen): Werkvertrag, AVV, NDA — alle drei stehen aus. AVV soll sofort scharf laufen, Hauptvertrag aufschiebend bedingt durch HRB-Eintragung.
  • NDA: liegt zur Unterschrift bei Marvin

Sprint 1 (11.05.–31.05.)

Stand 12.05.2026 abends — Tag 2 von 21.

StageStandWo
Stage 1 Intakelive, 4 E2E gruenintake.ts
Stage 2 Extractlive, 4 E2E + Unit-Tests gruen, LLM gemocktextract.ts
Stage 3 Feasibilitylive (Phase 2), Regel-Engine via expr-eval, 16 Unit + 4 E2Efeasibility.ts
Stage 4 Calculatelive (Phase 3, 2026-05-13) — 8-Schritt-Pipeline mit LME-Lookup, kalkuliert 12/14 Synthetic-Fixtures inkl. Multi-Positioncalculate.ts
Stage 4 Aufwandsschluessel-Aufschlag Phase Alive (2026-05-15) — neuer Step 07a zwischen Gemeinkosten und Marge, 4 neue Stamm-Tabellen, Marge-Default 4,5→12 %. Architektur drin, Kalibrierung gegen Alex-Excel-Beispielzeile = Phase B.PR bas-twin#27
Synthetic E2E + Demo-Reportlive (2026-05-14) — 14 Fixtures, Stripe-Design, GF-Sprache, Eskalations-Logik_index

ce-review 2026-05-12 (84 Findings, 11 Reviewer-Personas):

  • 3 P0 ✅ Phase 0
  • 20 P1-safe ✅ Phase 1A
  • 8 P1-gated ✅ Phase 1B
  • 8 P1-manual ✅ Phase 1C
  • 8 Findings als out-of-scope dokumentiert (Sprint 2+ / Auth)

4 Migrations auf main:

  • 0000_* initial schema
  • 0001_p1_safe_schema — FK + kontakt_telefon + parent_angebot self-FK
  • 0002_llm_cache_prompt_version
  • 0003_partial_status_and_restrict — enum ‘partial’ + Restrict-at-Root

Code-Comments AI-Stil + 27 CONTEXT.md in Code-Ordnern.

Aktive PRs

PRWasStatus
#19Phase 2 — Stage 3 Tech-Machbarkeitoffen, depends on main
#207 realistische Anfrage-Fixtures (it/es/wirres-de/multi-pos/komplexes-excel/latin1)offen, depends on #19

Aktive Issues

  • #12 — Rueckfrage-Outbox (Sprint 1, ersetzt TODO-Marker)
  • #13 — Brand IDs across boundaries (Sprint 2)

Naechste Schritte

  1. PRs #19 + #20 reviewen + mergen
  2. Phase 3 — Stage 4 Kalkulation (~5 Tage): 8-Step-Pipeline (LME → Bareinkauf → Bezugspreis → Herstellkosten → Verschnitt → Zusatz → Gemein → Marge → Summe) + Excel-Loader fuer BAS V3
  3. Phase 4 + 5 (P2 + P3 Polishing) als Buffer
  4. Phase 6 — Becker-Daten-Validierung sobald Alex liefert (5 historische Angebote, Anlagen-Maximalbreiten, Mindestbesaeumungs-Tabelle, Coil-Verplanungs-Regeln aus Workshop 2)

Test-Stand main (vor 20)

  • pnpm typecheck workspace clean
  • 7/7 LLM unit (cache + system-prompt)
  • 10/10 worker E2E (intake / intake-antivirus / extract / extract.retry / +1 wegen retry-amend)

Test-Stand inkl. offene PRs

  • 16 worker unit (engine + routing)
  • 21 worker E2E (incl. feasibility + 7 mehrsprachige Fixture-Tests)

Wiederverwendbare Patterns aus Sprint 1

Plan-Datei im Repo

2 Dateien in diesem Ordner.