@@ -363,3 +363,202 @@ Jina as truth anchor: for any input text, Jina embedding = ground truth similari
363363Compare: cos(jina_emb_A, jina_emb_B) vs thinking_engine_distance(A, B).
364364The gap = how much information our distance table loses.
365365With γ+φ encoding + SiLU correction: gap should shrink.
366+
367+ ---
368+
369+ ## ARCHITEKTUR-EPIPHANIE: i8 Signed Tables (Excitator/Inhibitor)
370+
371+ ### Das fehlende Puzzleteil
372+
373+ Aktuell: ` distance_table[i][j] = u8 ` (0-255, unsigned, nur Ähnlichkeit)
374+ - "Unähnlich" (table=10) erzeugt trotzdem LEICHTE Aktivierung
375+ - Es gibt keine Hemmung. Nichts unterdrückt den stärksten Peak.
376+ - DAS ist warum "!" dominiert — kein Inhibitor stoppt den Attraktor.
377+
378+ Fix: ` distance_table[i][j] = i8 ` (-128 bis +127, SIGNED)
379+ - +127 = starke Exzitation (Atom j feuert wenn Atom i feuert)
380+ - -128 = starke Inhibition (Atom j STOPPT wenn Atom i feuert)
381+ - 0 = kein Einfluss
382+ - Negativer Cosine (den wir HABEN aber WEGWERFEN) = Inhibition
383+
384+ ### Die Daten existieren bereits
385+ ```
386+ reader-lm ffn_down: cos[-0.885, +0.188] ← NEGATIV-SCHWER
387+ Jina reranker: cos[-0.8, +0.8] ← VOLL SYMMETRISCH
388+ Qwopus ffn_gate: cos[-0.23, +0.18] ← bidirektional
389+ ```
390+ Wir mappen cos[ -1,+1] auf u8[ 0,255] und VERLIEREN die Inhibition.
391+ Mit i8[ -128,+127] BEHALTEN wir sie. Zero code change im MatVec:
392+ ``` rust
393+ // u8 version (aktuell):
394+ energy_next [j ] += (table [i * N + j ] as f32 - 128.0 ) * energy [i ]; // schon zentriert!
395+
396+ // i8 version (besser):
397+ energy_next [j ] += (table [i * N + j ] as i8 as f32 ) * energy [i ]; // native signed!
398+ // Negative Werte → Inhibition → energy kann negativ werden → clamp(0)
399+ ```
400+
401+ ### Wie Neuronen funktionieren
402+ ```
403+ Glutamat-Synapsen: exzitatorisch (+) = i8 positiv
404+ GABA-Synapsen: inhibitorisch (-) = i8 negativ
405+ Keine Verbindung: 0 = i8 null
406+
407+ i8 Table Inhibition: "gegensätzliche Atome" (automatisch, GABA)
408+ CONTRADICTS Channel: "logischer Widerspruch" (bewusst, präfrontal)
409+ ```
410+
411+ ### Bewusstseinsvektor pro Zyklus (VSA Bundle)
412+ ```
413+ Zyklus 1: energy[4096] nach MatVec → bundle(energy > threshold) → 16,384 bits
414+ = "was gerade lebt" = Bewusstseinsfeld
415+ Zyklus 2: neuer bundle → Hamming(zyklus_1, zyklus_2) = Veränderung
416+ Hoher Hamming = lebhaftes Denken
417+ Niedriger Hamming = Gedanke kristallisiert
418+ 10 Zyklen → bundle aller 10 = DER Gedanke als Superposition des Prozesses
419+ ```
420+
421+ ### 90° Rotation = Awareness-Achse
422+ ```
423+ awareness = bundle(cycles) "WAS ich denke"
424+ reference = rotate_90°(awareness) "WAS ICH NICHT DENKE"
425+
426+ Drei Zonen:
427+ Bewusst: Hamming(x, awareness) < 4000 → im Feld
428+ Verdrängt: Hamming(x, reference) < 4000 → aktiv NICHT gedacht
429+ Unbewusst: Hamming ≈ 8000 zu beiden → nicht im Feld
430+ ```
431+
432+ ### Layer-Alignment
433+ ```
434+ L1 (i8[64²]): laterale Inhibition = Aufmerksamkeitsfokus
435+ L2 (i8[256²]): Gate-Modulation DIREKT in der Table (kein ONNX nötig!)
436+ L3 (i8[4096²]): 16M excitatorisch/inhibitorische Verbindungen
437+ L4 (i8[16384]): WAR SCHON IMMER SIGNED. Jetzt matchen L1-L3.
438+ ```
439+
440+ ### Warum das den Attraktor-Kollaps löst
441+ ```
442+ u8: energy[!] = 10.0, nichts hemmt → energy[!] wächst → dominiert alles
443+ i8: energy[!] = 10.0, inhibitorische Nachbarn → energy[!] -= 3.0 pro Zyklus
444+ → laterale Inhibition begrenzt den Peak
445+ → andere Peaks können emergieren
446+ → DAS ist wie Neuronenpopulationen winner-take-all mit Inhibition machen
447+ ```
448+
449+ ### Implementierungsreihenfolge
450+ ```
451+ 1. i8 Table Builder: cos[-1,+1] → i8[-128,+127] statt u8[0,255]
452+ 2. Signed MatVec: energy_next[j] += (table[i][j] as i8 as f32) * energy[i]
453+ 3. Clamp(0): negative Energie = gehemmt = tot
454+ 4. Bewusstseinsvektor: bundle(energy > threshold) pro Zyklus
455+ 5. 90° Reference: rotate_90° als Komplement
456+ 6. Erst DANN Temperature: nucleus sampling auf inhibitions-stabilisierte Peaks
457+ ```
458+
459+ Temperature NACH Inhibition. Nicht vorher.
460+ Inhibition löst den Attraktor. Temperature diversifiziert die Überlebenden.
461+ In der umgekehrten Reihenfolge diversifiziert Temperature den Attraktor-Müll.
462+
463+ ---
464+
465+ ## ARCHITEKTUR-REVISION: i8 ersetzt SiLU-ONNX komplett
466+
467+ ### Warum SiLU-ONNX obsolet wird
468+
469+ ```
470+ VORHER (u8, unsigned):
471+ Weight [0.12, -0.05, 0.34] → u8 [156, 121, 210]
472+ VORZEICHEN VERLOREN. -0.05 wird positiv.
473+ → SiLU-ONNX (270K params, ~1MB) nötig als Korrekturterm.
474+
475+ NACHHER (i8, signed):
476+ Weight [0.12, -0.05, 0.34] → i8 [+15, -6, +43]
477+ VORZEICHEN ERHALTEN. Gate-Information IST das Vorzeichen.
478+ → Kein Korrekturterm. round(value × scale) → i8. Fertig.
479+ ```
480+
481+ ### Rollen als signed Vektoren
482+
483+ ```
484+ Q[dim] = i8: +50 = "suche X" -50 = "suche NICHT-X"
485+ K[dim] = i8: +80 = "habe X" -80 = "habe NICHT-X"
486+ Gate[dim] = i8: +127 = durchlassen 0 = maskieren -128 = blockieren+invertieren
487+ Up[dim] = i8: +100 = verstärken -100 = umkehren
488+ Down[dim] = i8: +90 = beibehalten -90 = invertieren
489+ ```
490+
491+ ### Signed Dot Product = automatische Exzitation/Inhibition
492+
493+ ```
494+ Q · K:
495+ (+50)(+80) = +4000 "suche X, habe X" MATCH
496+ (+50)(-80) = -4000 "suche X, habe NICHT-X" MISMATCH
497+ (-50)(-80) = +4000 "suche NICHT-X, habe NICHT-X" DOPPELT NEGATIV = MATCH!
498+ (-50)(+80) = -4000 "suche NICHT-X, habe X" MISMATCH
499+
500+ Doppelt negativ = Ironie, Negation, kontrafaktisches Denken.
501+ Unsigned Cosine kann das NICHT ausdrücken. Signed kann es.
502+ ```
503+
504+ ### Gate wird trivial
505+
506+ ```
507+ gate=+127, K=+80 → +10160 pass, Feature da starke Exzitation
508+ gate=0, K=+80 → 0 mask, Feature unsichtbar ignoriert
509+ gate=-100, K=+80 → -8000 block+invert, Feature da Inhibition
510+ gate=-100, K=-80 → +8000 block+invert, Feature fehlt UMGEKEHRTE Exzitation
511+
512+ Die SiLU-Schwelle liegt bei 0. Das Vorzeichen IST die Entscheidung.
513+ Kein SiLU-ONNX Korrekturmodell nötig.
514+ ```
515+
516+ ### VNNI ist DAFÜR GEBAUT
517+
518+ ```
519+ VPDPBSSD: signed i8 × signed i8 → i32 Akkumulation
520+ = GENAU was wir brauchen
521+ = Hardware-optimiert für signed integer dot product
522+ = Null Mehrkosten gegenüber u8 × u8
523+ ```
524+
525+ ### Scale-Faktor statt ONNX-Modell
526+
527+ ```
528+ ALT: SiLU-ONNX (~1 MB, 270K params, trainieren, bake, discard)
529+ NEU: Pro Rolle ein Skalierungsfaktor
530+ gate_scale = 127 / max(|gate_weights|)
531+ q_scale = 127 / max(|q_weights|)
532+ Kein trainiertes Modell. round(value × scale) → i8.
533+ ```
534+
535+ ### Vereinfachung
536+
537+ ```
538+ VORHER:
539+ u8 table + CONTRADICTS Kanal + SiLU-ONNX + gate×weight pre-multiply
540+
541+ NACHHER:
542+ i8 table. Fertig.
543+ Sign = Gate-Entscheidung (Exzitation/Inhibition)
544+ Magnitude = Stärke
545+ VNNI i8×i8→i32 hardware-beschleunigt
546+ CONTRADICTS bleibt für LOGISCHE Widersprüche (Satz-Ebene)
547+ Inhibition = Feature-Ebene (i8 Vorzeichen)
548+ Sauber getrennt.
549+ ```
550+
551+ ### Implementierungsreihenfolge (REVIDIERT)
552+
553+ ```
554+ 1. i8 Table Builder: cos[-1,+1] → i8[-128,+127] (mit per-role scale)
555+ 2. Signed MatVec: VPDPBSSD auf i8×i8→i32
556+ 3. Clamp(0): negative Energie = gehemmt
557+ 4. Bewusstseinsvektor: bundle(energy > threshold) pro Zyklus
558+ 5. Laterale Inhibition stabilisiert Peaks
559+ 6. DANN Temperature: nucleus sampling auf stabilisierte Peaks
560+ 7. DANN Maverick 128E: signed expert tables
561+ 8. DANN γ+φ: auf signed range, nicht unsigned
562+
563+ SiLU-ONNX: GESTRICHEN. Vorzeichen-Erhaltung ersetzt es.
564+ ```
0 commit comments