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

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)
- 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. - Benannte Vorgaben oben; keine literalen Maße im Body.
- 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. - Maße gemessen (nicht die Bau-Zahl wiederverwendet): Ausdehnung per
crosspointVLFL(= 5.00 mm). - Anordnung nur über Frame-Relationen (
alignT/matchT); relativer Versatz in der Klammer ({'TU','TR', TofP([0 0 aC-dins])}), nie absolut. - Kontur per Projektion mit ausgewertetem Rückgabe-Frame
T(VLtransT(CVL,inv(TU))), keine 90°-Verdrehung. - Echte Passung
slfit('c')+CPLbuffer(...,'miter');SGwarnfittinguse. - Je Codezeile ein englischer Endkommentar.
nmB=0.
Erzwingbar gemacht
SGLIBgrammarcheck(neue SG-Lib-Funktion): blockt HARD-Verstöße (absolute PlatzierungSGtransP/SGtransR,SGtransTohneinv(Frame), Versatz außerhalb deralignT/matchT-Klammer, literale Maße); SOFT-Hinweise (fehlender Endkommentar,slfitohneSGwarnfittinguse,SGboxohne'noframe',,/;in XX-Zeilen).- Als Gate im Build (
sgtestclaude) und im Milestone-BuilderSGlibrunMilestone(vorrun(), mit Report inbuildinfo). Dieses Milestone-buildinfo zeigtgrammar: 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 überSGlibrunMilestone)...._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.md — Scope: 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/transRverbieten? Claude:SGtransP/SGtransR(absolut) verbieten;SGtransTnur mitinv(<Frame>); präziser als ein Verbot ist ein Linter als Gate. → bautCLAUDE_grammarcheck(späterSGLIBgrammarcheck). - 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 QuelleXX.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
SGLIBgrammarcheckmit SG-Lib-Header („by Claude for Tim Lueth"). Gate in den Milestone-BuilderSGlibrunMilestoneeinhä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:
sgtestclaudeals 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.