Entwurf · Issue a76dbc0

Die Reihenfolge ist eine Sternkarte

Das Schichtdiagramm ist korrekt und sagt einem Menschen nichts. Was es zeigt, ist Geometrie; wonach gefragt wird, ist Zugehörigkeit.

Achtzig Knoten in Spalten, Pfeile, die meist durch eine Rinne zurücklaufen, weil eine erfüllte Kante beide Enden in dieselbe Schicht legt. Die eigentliche Frage — was hängt zusammen, und was kann ich nehmen — überlebt das Layout nicht. Und die Achse, auf die dieses Repository tatsächlich gatet, die Kette, ist im Schichtbild überhaupt nicht sichtbar.

01Warum die Bedeutung nicht im Bild wohnen darf

Das alte Bild rechnete seine ganze Bedeutung in einer privaten Funktion layout() innerhalb von order-graph.tsx. Es gibt in diesem Repository keine Render-Harness, also konnte keine Prüfung je etwas über dieses Bild sagen — und keine hat es. Die Suite prüft orderIndex; über die Zeichnung schweigt sie vollständig. just test war grün für ein Bild, zu dem keine Prüfung eine Meinung hatte.

Deshalb steht die Kodierung in lib/star-map.ts als reine Funktionen über Karte und Ordnung, und der Renderer liest die Antwort, statt eine eigene zu erfinden. Dieselbe Lehre wie bei 5d5298f: eine Behauptung über ein Bild, die nur in JSX existiert, ist eine Behauptung, die nichts prüfen kann.

02Vier Kanäle, und keiner sagt etwas zweimal

Eine Karte steht irgendwo in der Ordnung (darf sie aufgenommen werden) und irgendwo in der Kette (wie weit ist ihr Plan gekommen). Keine der beiden beantwortet die andere: ein signierter Plan auf einer blockierten Karte ist gewöhnlich, und eine aufnehmbare Karte, für die niemand eine Zeile geschrieben hat, auch.

Die Karte hat vier Kanäle — Farbe, Position, Größe, die Marken am Stern —, und die Regel darüber ist strenger als die Zuteilung selbst: kein Kanal sagt etwas, das ein anderer schon sagt. Zwei Marken für eine Tatsache sind der Punkt, an dem ein Bild zu lügen beginnt — sie driften auseinander, und nichts sagt dem Leser, welche von beiden veraltet ist.

  • Die Farbe sagt die Ordnung — ready, blocked, solved, abandoned. Das ist die Frage, für die es die Karte gibt, und Farbe ist der einzige Kanal, der sie für alle Sterne gleichzeitig beantwortet, ohne dass der Leser einen einzelnen ansieht. Ein drei Pixel großer Kern beantwortet sie Stern für Stern, und das ist bei neunzig Sternen keine Antwort.
  • Eine geschlossene Karte ist nicht eine Farbe. Radicle schließt mit einem Grund, und nur solved gibt frei, was darunter wartete. Ein glattes closed würde eine aufgegebene Karte so grün malen wie eine gelieferte — und alles hinter ihr sähe gelöst aus.
  • Die Zugehörigkeit zieht auf die Position um. Das ist ein Tausch und kein Gewinn: wer ein Organ vorher an der Farbe sah, liest jetzt ein Sternbild-Etikett. Vertretbar ist er nur, weil die Position die Mitglieder ohnehin gruppiert und die Gruppe benennt — und weil effort/ das dünnste Etikett der Grammatik ist (siehe unten). Der Farbton überlebt als Tönung des Sternbilds, nicht als Farbe des Sterns.
  • Der Kern behält genau das, was die Farbe nicht kann — ob eine Aufnehmbarkeit earned oder nie beansprucht wurde. Er hatte einen dritten Zustand, hollow für blockiert; sobald die Farbe blocked sagt, ist das dieselbe Tatsache ein zweites Mal. Also ist der Kern bei einer blockierten Karte leer und schweigt.
  • Der Ring sagt die Kette — kein Ring, dünn, geschlossen, leuchtend. Fünf Stufen für vier Planzustände, weil das Urteil des Gates die Stufe nach der Signatur ist und eine Karte, die bei approved aufhört, blind für das eine Glied wäre, das tatsächlich ein Image zurückhält.
  • Die Größe ist die Sprosse (lvl/) — die Frage, die ein Runner stellt, bevor er etwas nimmt, und ein Etikett, das jemand bewusst vergeben hat statt einer hinter seinem Rücken abgeleiteten Zahl.

Warum der Tausch so herum: gemessen am 2026-08-31 über die 66 offenen Karten trugen 13 ein effort/ — 20 %. col/ trugen 60, lvl/ 57, prio/ 54. Der stärkste Kanal lag also auf dem dünnsten Etikett, und vier von fünf Sternen bekamen von ihm dieselbe neutrale Antwort. Status und Aufnehmbarkeit hat dagegen jede Karte. Diese Zahlen stehen hier als Messung: die Seite sieht nur, was der laufende Container hält, und kann sie nicht selbst nachzählen — lib/star-map.test.ts hält, was daraus eine Regel wurde.

  • hältein signierter Plan auf einer blockierten Karte: kein Kern, geschlossener Ring — die Farbe sagt blockiert, der Kern schweigt dazu
  • hälteine aufnehmbare Karte ohne jeden Plan: voller Kern, kein Ring
  • hältdie Farbe unterscheidet aufnehmbar von blockiert
  • hältder Kern wiederholt sie nicht: bei blockiert sagt er gar nichts
  • hältund er sagt trotzdem etwas Eigenes — earned und unclaimed tragen dieselbe Farbe und verschiedene Kerne
  • hältgelöst und aufgegeben sind zwei Farben, nicht eine — nur die erste gibt frei, was darunter wartete
  • hältder Kopf eines Organs wird auch nach der Ordnung nicht gefragt und bekommt keine Farbe
  • hält„noch kein Plan“ ist ein gezeichneter Zustand, nicht das Fehlen einer Antwort
  • hältein Etikett, das einen Plan behauptet, den der Baum nicht hat, steht auf keiner Sprosse
  • hältein unerreichbares Gate verdunkelt keinen Ring — unasked ist über diesen Server, nicht über die Arbeit
  • hältdie Sprosse ordnet die Größe, und eine Karte ohne lvl/ ist nicht die große
  • hältdasselbe Organ ist dieselbe Farbe, ein anderes eine andere, und ohne Organ gar keine

03Die Karte, der beide Fragen nicht gestellt werden

Der Kopf eines Organs steht in keiner Spalte — die Ordnungsfrage gilt für ihn nicht — und trägt keinen Plan — die Kettenfrage auch nicht. Der erste Prototyp beantwortete beide trotzdem und malte jede Map-Karte blockiert und planlos: eine Karte, die an zwei Fragen scheitert, die ihr niemand gestellt hat. Sie bekommt stattdessen ein eigenes Zeichen.

  • hältein Organkopf antwortet auf beide Achsen mit null, auch wenn man ihn drängt
  • hältein bloßes map-Etikett ohne effort/ ist kein Organkopf und wird ganz normal gefragt
  • hältund im ganzen Bild trägt genau der Kopf dieses Zeichen

04Bahnen: eine Ordnung, drei Verweise, ein Zählwerk

Eine needs/-Kante ist gerichtet und wird einmal gezeichnet, vom Vorläufer zu dem, was sie freischaltet. Ein Verweis ist ungerichtet, liegt auf beiden Karten des Paares und wird trotzdem einmal gezeichnet — und sagt seit b3cd475, welcher Art er ist. Was das Bild nicht hält, wird gezählt, nie weggelassen.

  • hältnur ein als solved geschlossenes Ziel erfüllt seine Kante
  • hältein aufgegebenes Ziel erfüllt sie nicht, und die Kante ist durchtrennt statt bloß offen
  • hältein Paar, das sich gegenseitig nennt, bekommt eine Bahn, kein Paar Bahnen
  • hältund eine Erwähnung behält ihre Art, auch neben einer Ordnung auf demselben Paar
  • hälteine Kante, die niemand lesen kann, markiert ihre Karte und wird nie als Abwesenheit gezeichnet
  • hältein Nachbar außerhalb des Ausschnitts ist eine Zahl an der Karte, keine fehlende Linie
  • hältund eine Karte, die mit gar nichts zusammenhängt, zählt null statt zu schweigen

05Was diese Seite nicht sehen kann

Das Kapitel liest, was der laufende Container hält. Es zeigt bewusst kein gerendertes Sternfeld: der Renderer steht nach dieser Unterschrift, und ein Bild hier würde ihn entweder davor ziehen oder etwas malen, was der Code nicht liefert.

  • Dass die Kodierung entscheidbar ist, beweist lib/star-map.test.ts — dieselben Funktionen, mehr Fälle, und drei absichtliche Sabotagen daran haben sechs Prüfungen rot gemacht.
  • Wo ein Stern steht, entscheidet der nächste Milestone. Zugehörigkeit vor Isolation, die Organe im Kern, das Organlose außen herum — und zweimal dieselben Daten müssen zweimal dasselbe Bild ergeben.
  • Wie es aussieht, beweist nichts davon. Das ist der Teil, für den jemand hinschauen muss.