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:
| Aufgabe | Pfad |
|---|---|
| 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
- Kunde → becker
- AWS-Account → av-becker
- Co-Design-Team → dana · sven · niklas · samira · roland
- Auftraggeber → ralf-schmid · alex-gross
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.
| Stage | Stand | Wo |
|---|---|---|
| Stage 1 Intake | live, 4 E2E gruen | intake.ts |
| Stage 2 Extract | live, 4 E2E + Unit-Tests gruen, LLM gemockt | extract.ts |
| Stage 3 Feasibility | live (Phase 2), Regel-Engine via expr-eval, 16 Unit + 4 E2E | feasibility.ts |
| Stage 4 Calculate | live (Phase 3, 2026-05-13) — 8-Schritt-Pipeline mit LME-Lookup, kalkuliert 12/14 Synthetic-Fixtures inkl. Multi-Position | calculate.ts |
| Stage 4 Aufwandsschluessel-Aufschlag Phase A | live (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-Report | live (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 schema0001_p1_safe_schema— FK + kontakt_telefon + parent_angebot self-FK0002_llm_cache_prompt_version0003_partial_status_and_restrict— enum ‘partial’ + Restrict-at-Root
Code-Comments AI-Stil + 27 CONTEXT.md in Code-Ordnern.
Aktive PRs
| PR | Was | Status |
|---|---|---|
| #19 | Phase 2 — Stage 3 Tech-Machbarkeit | offen, depends on main |
| #20 | 7 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
- PRs #19 + #20 reviewen + mergen
- Phase 3 — Stage 4 Kalkulation (~5 Tage): 8-Step-Pipeline (LME → Bareinkauf → Bezugspreis → Herstellkosten → Verschnitt → Zusatz → Gemein → Marge → Summe) + Excel-Loader fuer BAS V3
- Phase 4 + 5 (P2 + P3 Polishing) als Buffer
- 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 typecheckworkspace 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
- Code-Stil AI-optimiert — knappe Kommentare, WHY-only, Plan-Anker einmalig
- Stage-Idempotenz via UPSERT + pg-boss singletonKey — TOCTOU-frei
Plan-Datei im Repo
- 2026-05-12-001-sprint-1-foundation-review-fixes.md — der Plan fuer den aktuellen Sprint
- sprint-2-rls-rollout.md — Sprint-2 RLS-Plan, deferred