SG-Lib

Milestone 2026-07-12 — SG-Lib Grammatik + XX: `sgtestclaude` als Referenz-Stil

Rendered views

Learning case — no printable STL for this milestone.

Art: Referenz-/Stil-Meilenstein. Die erste sgtestclaude-Konstruktion, die die relationale SG-Lib-Grammatik vollständig einhält und erzwungen ist — von Tim als „bester SG-Lib-Code, den ich mir vorstellen konnte, so als ob ich ihn geschrieben hätte" bewertet.

Aufgabe

Ein 3×4×5-Quader wird seitlich (in −x) mit Spielpassung in einen Zylinder (Ø10, Höhe 40) 4 mm tief eingeschoben. Der Sackloch-Abzugskörper wird über einen Oberflächen-Frame seitlich abgezogen; Spiel auch in der Tiefe.

Was diesen Meilenstein ausmacht (der Stil ist die eigentliche Leistung)

  1. XX-Aufgaben-Header (mehrzeilig, wie ein Funktionsheader): erste Zeile XX SGLIB DESIGN TASK: LATERAL CLEARANCE INSERTION OF A CUBOID INTO A CYLINDER, dann goal | approach | purpose.
  2. Benannte Vorgaben oben; keine literalen Maße im Body.
  3. Quantitative XX-Werte via $ausdruck$ — die Messschieber-Referenz nach der Fertigung: geometry cylinder 10 mm dia x 40 mm high, cuboid 3 x 4 x 5 mm, insertion depth 4 mm; cuboid extent 5 mm ...; pocket depth 4.3 mm from insertion 4 mm plus clearance 0.3 mm ... cuboid protrudes 1 mm.
  4. Maße gemessen (nicht die Bau-Zahl wiederverwendet): Ausdehnung per crosspointVLFL (= 5.00 mm).
  5. Anordnung nur über Frame-Relationen (alignT/matchT); relativer Versatz in der Klammer ({'TU','TR', TofP([0 0 aC-dins])}), nie absolut.
  6. Kontur per Projektion mit ausgewertetem Rückgabe-Frame T (VLtransT(CVL,inv(TU))), keine 90°-Verdrehung.
  7. Echte Passung slfit('c') + CPLbuffer(...,'miter'); SGwarnfittinguse.
  8. Je Codezeile ein englischer Endkommentar. nmB=0.

Erzwingbar gemacht

  • SGLIBgrammarcheck (neue SG-Lib-Funktion): blockt HARD-Verstöße (absolute Platzierung SGtransP/SGtransR, SGtransT ohne inv(Frame), Versatz außerhalb der alignT/matchT-Klammer, literale Maße); SOFT-Hinweise (fehlender Endkommentar, slfit ohne SGwarnfittinguse, SGbox ohne 'noframe', ,/; in XX-Zeilen).
  • Als Gate im Build (sgtestclaude) und im Milestone-Builder SGlibrunMilestone (vor run(), mit Report in buildinfo). Dieses Milestone-buildinfo zeigt grammar: OK (0 msg, SGLIBgrammarcheck).

Nebenprodukt (SG-Lib-Verbesserung)

CPLofSGprojection projiziert jetzt headless & exakt über Manifold project() (CLAUDE_sg_manifold.project_vlfl) statt über das Grafikboard, mit Grafik-Fallback. Apache-2.0-Hinweis für Manifold ergänzt.

Dateien

  • ..._build_sgtestclaude.m — milestone-Build (Ausgabe in diesen Ordner, Gate über SGlibrunMilestone).
  • ..._reference_sgtestclaude.m — exakte Referenz-sgtestclaude (Arbeitsstand).
  • ..._SGLIBgrammarcheck.m — der Grammatik-Checker zum Zeitpunkt des Meilensteins.
  • ..._views.png — Ergebnis (3×4×5 seitlich mit Spiel eingeschoben).
  • ..._sgtestclaude_buildinfo.txt — Provenance inkl. Grammatik-Status.
  • Konversation: ..._conversation_de.md / ..._conversation_en.md.

Regeln dauerhaft verankert

CLAUDE_MATLAB_PROGRAMMINGSTYLE.md §0 (+ Spiegel), CLAUDE_SGLIB_LEARN.md §0a, CLAUDE_SGLIB_PATH2.md (Checkliste), CLAUDE_SGLIB_PARAMS.md (XX/$..$), CLAUDE_START.mdScope: nur Konstruktionen mit der SG-Lib, nicht die Entwicklung der SG-Lib selbst.

Entwurfs-Konversation (Deutsch)

Konversation (Kern) — SG-Lib Grammatik + XX, 2026-07-12

Verdichtete Wiedergabe (Tim ↔ Claude). Reihenfolge = Verlauf.

  • Tim (Meta): „Jetzt stimmt es, aber wir haben 2–3 Stunden gebraucht. Ich bitte Dich, die Regeln zu fixieren und wirklich einzuhalten." → Claude legt eine Pre-Flight-Checkliste an (CLAUDE_SGLIB_PATH2.md).
  • Tim (Frage): Ist erzwingbare Grammatik der Lösungsweg? Soll ich SGtransT/transp/transR verbieten? Claude: SGtransP/SGtransR (absolut) verbieten; SGtransT nur mit inv(<Frame>); präziser als ein Verbot ist ein Linter als Gate. → baut CLAUDE_grammarcheck (später SGLIBgrammarcheck).
  • Tim: Beeindruckt von den drei Zeilen zur T-Auswertung (VLtransT(CVL,inv(TU))). Nutze den Checker immer (Weg 2, Snippets, Milestones). Hinweis: max(dd)-min(dd) misst die Außen-Ausdehnung — bei Kavitäten aufpassen. Absolute Vorgaben als Block oben mit XX (Wert + Prosa).
  • Tim: „Je Relationen-Zeile ein englischer Endkommentar" (dicht wie Lisp). → SOFT-Regel im Linter.
  • Problem/Lernen XX: Claude riet $cylD (einfaches $) → Fehler „missing $". Tim: „Ich nutze XX täglich problemlos." → Claude liest die Quelle XX.m: Werte via $ausdruck$ (Paar!), evaluiert im Caller.
  • Tim: In XX absolute Werte ausgeben (Messschieber-Kontrolle). Zahlen als Ziffern. XX liest den Rest als MATLAB-Code — kein Komma/Semikolon/Operator/Bindestrich in der Prosa, kein % (→ vH); Trenner |.
  • Tim: Das erste XX darf mehrzeilig sein — Header der Entwurfsaufgabe (wie ein Funktionsheader). Erste Zeile fest: XX SGLIB DESIGN TASK: <EINZEILER GROSS>.
  • Tim: Umbenennen in SGLIBgrammarcheck mit SG-Lib-Header („by Claude for Tim Lueth"). Gate in den Milestone-Builder SGlibrunMilestone einhängen (blockt hart, Override ,false).
  • Tim: „Das ist ein Meilenstein." Passe alle md-Dateien an, damit künftig immer Grammarcheck + XX genutzt werden. Abgrenzung: gilt nur für Konstruktionen mit der SG-Lib, nicht für die Entwicklung der SG-Lib selbst (Slicer etc.).
  • Ergebnis: sgtestclaude als Referenz-Stil (XX-Header + $..$-Werte + gemessene Maße + reine Frame-Relationen + Endkommentare), nmB=0; Grammatik erzwungen im Build und im Milestone-Builder (grammar: OK). Tim: „bester SG-Lib-Code, den ich mir vorstellen konnte, so als ob ich ihn geschrieben hätte."

Kernlehre: Wissen aufschreiben reicht nicht — es muss erzwingbar sein. Und: die richtige Syntax lesen (XX.m) statt raten.