§ Plattform / Reproduzierbarkeit
Reproduzierbar per URL.
Identität ist ein Hash: Workflows, Modelle, Datasets, Checkpoints und Läufe sind nach ihrem Inhalt benannt und pro Version unveränderlich. Ein committetes Ergebnis ist per Link zitierbar — und der Link löst wieder zu denselben Bytes auf, demselben Programm, derselben aufgezeichneten Engine und deklarierten Präzision. Reproduzierbarkeit ist hier kein Feature; sie ist das Namensschema.
Benannt nach Inhalt, nicht nach Ort
Jedes Artefakt in Scellis — ein Workflow, ein Modell, eine Dataset-Version, ein Checkpoint, eine Abbildung — ist nach dem SHA-256 seiner Bytes benannt. Bytes unter einem Hash ändern sich nie, und eine veröffentlichte Version ist unveränderlich: Eine Änderung ist eine neue Version, die neben der alten existiert, statt sie zu überschreiben — worauf du gebaut hast, bleibt exakt das, worauf du gebaut hast. Das Namensschema, mit dem der Katalog Inhalte ausliefert, ist dasselbe, unter dem deine Ergebnisse archiviert sind.
Diese Disziplin reicht tiefer als Bequemlichkeit. Derselbe Inhalt prägt auf jedem Gerät denselben Namen — offline wie synchronisiert —, weil jede Art von Ding vor dem Hashen in genau eine kanonische Form gebracht wird. Identität, Speicherung, Sync und Zitat laufen über ein Datenbank-Rückgrat: der Grund, warum ein Link versprechen kann, was ein Dateiname nie konnte.
Jeder Lauf trägt seinen eigenen Datensatz
| Komponente | Festgehalten als | Warum es zählt |
|---|---|---|
| Programm | jede kompilierte Stufe | Nicht nur der Workflow, den du gezeichnet hast, sondern jede Stufe, zu der er auf dem Weg zur GPU wurde — jede nach Inhalt benannt und einsehbar. |
| Daten | dataset id@version | Exakte Dataset-Versionen — inklusive Train-, Validierungs- und Test-Splits, die selbst versionierte Artefakte sind. |
| Gewichte | Checkpoint-Hash | Gewichte, Optimizer-State, Zufallszustand, Epoche, Step, Metriken — ein Bündel; Fortsetzen ist strukturell, kein Feature. |
| Zufall | seed + counter | Ein counter-basierter Generator mit benannten Strömen — gleicher Seed und Counter, gleiche Ziehung, überall. |
| Engine | engine 1.4.2 | Die exakte Engine, die den Lauf ausgeführt hat — festgehalten, damit Ergebnisse Releases überdauern. |
| Präzision | debug · prod · fast | Die Präzision, die du gewählt hast, wird mit dem Lauf mitgeführt — überall explizit, nie ein stiller Default. |
Jeder Hash im Datensatz wird beim Laden verifiziert: Was die Prüfung nicht besteht, gilt als Korruption und wird neu geladen — nie still ersetzt.
Jede Ausführung erzeugt einen Datensatz, der alles verknüpft, was sie bestimmt hat: den Workflow, den du gezeichnet hast, jede Stufe des Programms, zu dem er kompiliert wurde, die exakten Dataset-Versionen, die Checkpoints, die Ausgaben — jeweils nach Inhalt benannt — dazu die Engine-Version und die Präzision der Ausführung. Zitiere den Commit, und jeder, mit dem du ihn teilst, kann die Arbeit erneut ausführen oder nachprüfen, dass er es getan hat. Die Identität eines Trainingslaufs ist keine Randnotiz; sie ist der Datensatz.
Die Details, die sonst entkommen, werden mit demselben Ernst festgehalten. Train-, Validierungs- und Test-Splits sind versionierte Artefakte, referenziert per Hash — der exakte Split hinter einer Metrik ist reproduzierbar, nicht ungefähr erinnert. Zufall ist counter-basiert und Teil jedes Checkpoints: Ein fortgesetzter Lauf führt denselben Strom weiter, statt einen neuen zu beginnen. Und Datasets selbst sind versioniert: gleiche Daten, gleicher Hash, gleicher Lauf.
Frag den Graphen in beide Richtungen
Provenienz ist hier kein Log zum Scrollen. Sie ist ein Graph über inhaltsadressierte Artefakte mit abfragbaren „erzeugt von“- und „verbraucht von“-Kanten. Frag vorwärts — alles, was je aus einer Dataset-Version abgeleitet wurde. Frag rückwärts — welche Daten dieses Modell trainiert haben, durch welches Programm, auf welcher Engine. Wenn dich ein Ergebnis zwei Wochen später überrascht, ist die Antwort eine Abfrage, kein Ausgrabungsprojekt.
Weil der Datensatz vollständig ist, ist Experiment-Tracking kein zweites System, das du füttern musst: Läufe, Artefakte, Dataset-Versionen und Checkpoints sind der Datensatz bereits; Vergleiche und Dashboards sind Sichten darauf. Die Lauf-Historie ist dauerhaft und überlebt die Sitzung, sichtbar in deiner Workbench — und die Karte eines geteilten Modells nennt ihre Evaluationsmetriken zusammen mit dem Hash des Splits, auf dem sie berechnet wurden: eine Behauptung, die ein Leser prüfen kann, statt sie glauben zu müssen.
Du kollaborierst an einem Entwurf; du zitierst einen Commit
Reproduzierbarkeit überlebt Multiplayer, weil die Identität sich weigert hinzusehen. In einer Live-Session — Cursor, Präsenz, halbfertige Änderungen, Lauf-Telemetrie im Stream zu den Leuten, mit denen du arbeitest — wird nie etwas gehasht. Die Identität beginnt beim Commit, und alles davor ist, ehrlich gesagt, ein Entwurf.
Der Hash hängt am committeten Inhalt und an sonst nichts. Ein Commit, allein und offline gemacht, berechnet exakt denselben Namen wie einer, der durch eine Live-Session sequenziert wurde — der Koordinationsserver ordnet Änderungen, die Identität gehört ihm nie. Genau hier treffen sich diese Garantie und Local-first: Der Server kann down sein, der Raum leer — ein Commit auf deinem eigenen Gerät prägt denselben zitierbaren Namen, den er in Gesellschaft geprägt hätte.
Was „bit-für-bit“ hier bedeutet
„Bit-für-bit“ meint die zitierten Bytes: Die URL löst identische Artefakte wieder auf — dieselben Gewichte, dieselben Daten, dasselbe Programm —, solange die Referenz existiert. Es erneut auszuführen, ist ein eigenes Versprechen, kalibriert statt aufgerundet: bit-identisch auf der Einstellung debug auf demselben Gerät und auf dem CPU-Referenzpfad; über verschiedene GPUs hinweg ist Fließkomma-Ausführung nicht bit-exakt, ein erneuter Lauf stimmt also innerhalb der deklarierten Toleranz überein. Diesen Fakt zu überspringen hieße, falschen Trost zu verkaufen.
Wie exakt ein Lauf ist, ist deine ausdrückliche Wahl und wird mit ihm aufgezeichnet: debug fürs Auditieren, prod für deterministische Arbeit innerhalb einer deklarierten Toleranz, fast, wo eine freiere Reihenfolge als sicher deklariert ist — nie ein stiller Default, weder beim Kompilieren noch zur Laufzeit. Die Toleranzen, die CPU-Referenz, die sie verankert, und die Konformitäts-Evidenz, mit der Community-Kernel dieselben Zahlen beweisen, stehen bei Korrektheit.
Ein Link, der ein Paper trägt
Zitat und Einbettung landen im Early Access genau in dieser Form — Ende-zu-Ende spezifiziert, gerade in Entwicklung.
| Oberfläche | Inhalt | Garantie |
|---|---|---|
| Repro-Deep-Link | das committete Rezept | Öffnet exakt diesen Workflow im Studio — das Programm, die gepinnten Versionen, alles, wovon er abhängt — validiert, bevor er sich öffnet. |
| Run-Snapshot-Link | die Outputs eines fertigen Laufs | Metriken, Abbildungen und das, woraus sie gezeichnet wurden, als ein committetes Artefakt — dauerhaft, login-frei, zitierbar. |
| Embed | eine read-only committete Ansicht | Ein gehärteter, isolierter Rahmen — keine Session, keine Writes, rate-limitiert; für jeden Betrachter dieselbe Antwort. |
| „Cite this“ | der Zitations-Datensatz | Autorin, Version, Content-Hash, Engine-Version, Snapshot-URL — projiziert nach BibTeX, CFF oder CSL. |
| Remix (Fork) | deine eigene Kopie, Herkunft bleibt | Der Fork hält fest, woher er kommt; auch ohne Account forkt ein Leser — beansprucht wird die Kopie später. |
Jede Oberfläche in dieser Tabelle löst eine committete, inhaltsadressierte Version auf — nie eine Live-Session, nie ein bewegliches Ziel.
Zitieren ist in beide Richtungen eingeplant. Was du baust, trägt die Zitate, auf denen es steht, und jedes committete Ergebnis projiziert einen Zitations-Datensatz nach außen — Autorin, Name, Version, Content-Hash, Engine-Version, Snapshot-URL —, den ein „Cite this“-Anker als BibTeX, CFF oder CSL rendert. DOI-Vergabe fährt als benannter Forward-Path auf dem Konnektor-System, und die Architektur trägt einen weiteren: ein „durch Wiederausführung verifiziert“-Badge, verdient, wenn jemand ein Ergebnis innerhalb seiner deklarierten Toleranz erneut ausführt und gegenzeichnet.
Die Schleife schließt sich dort, wo die Leser sind. Ein committeter Snapshot rendert read-only in einem gehärteten, login-freien Rahmen — keine Session, keine Writes, für jeden Betrachter dieselbe Antwort —, sodass ein Paper, ein Blogpost oder eine README die echte Abbildung zeigt, aufgelöst aus dem echten Datensatz statt eines eingefügten Screenshots. Zwei Luken halten die Schleife lebendig: „Open in Studio“ und „Remix“ — auch ohne Account forkt ein Leser; die Kopie bleibt auf seinem Gerät, bis er sie beansprucht. Der Guide geht die Schleife von der Empfangsseite durch: ein Ergebnis reproduzieren, und von der Autorenseite: Reproduzierbarkeit.