| … | … | @@ -25,7 +25,10 @@ writing refines this substantially: |
| 25 | 25 | 3. **Mating = contraction over MERGED connector-type classes (a pre-sheaf).** |
| 26 | 26 | clique → erase edges → saw into jigsaws → label = **sheaf** (unique reassembly); |
| 27 | 27 | merge labels into classes = **pre-sheaf** = a generative grammar (many |
| 28 | | assemblies). This is the precise semantics of `mating = SpGEMM`. |
| 28 | assemblies). CONCRETE REALIZATION (audited 2026-07-05): this is **sparse |
| 29 | label-substitution + hash-dedup with count-summing** (`gpu-substitute.cl`), NOT |
| 30 | dense SpGEMM. "Disjuncts are tensors / SpGEMM" is Linas's *abstract* view; the |
| 31 | sparse hash-merge is the correct implementation ("sparsity forces symbolism"). |
| 29 | 32 | 4. **Build direction: agents crawling a corpus, not batch.** *"the batch processing |
| 30 | 33 | must be replaced by agents… that is absolutely the correct design point."* The |
| 31 | 34 | minimal case: *"the simplest sensor detects word-pairs, and the world-model is |
| … | … | @@ -80,9 +83,11 @@ Both prongs share one verification target per primitive. |
| 80 | 83 | ├─ HyperStorageNode (event-sourced log) reproducible replay/fork/lineage (M0-M4 built) |
| 81 | 84 | └─ P2P federation (autobase) a society of bounded agents (M4 built) |
| 82 | 85 | Compute / shared middle (his transforms = our kernels) |
| 83 | | ├─ counting, MI = Values dynamics (gpu-counting/gpu-mi; MI formula-verified) |
| 84 | | ├─ sections = germ-as-tensor (gpu-sections; unaudited) |
| 85 | | └─ connector-rewrite = mating / SpGEMM (gpu-connector-rewrite; unaudited) |
| 86 | ├─ counting, MI = Values dynamics (gpu-counting/gpu-mi; DATA-verified == opencog) |
| 87 | ├─ sections = germ-as-tensor (gpu-sections; data-model verified, GPU 6/6) |
| 88 | ├─ cosine + components = clustering (which words merge into a class) |
| 89 | ├─ substitute + dedup = MATING / pre-sheaf (gpu-substitute; label-merge+count-dedup, GPU 6/6) |
| 90 | └─ grammar-cost+class-MI (gpu-connector-rewrite; LG dict export) |
| 86 | 91 | Automaton (his mind, our stub) |
| 87 | 92 | ├─ menu {Tₐ} one kernel per tick |
| 88 | 93 | └─ selector max-weight → softmax → sandpile-avalanche (pluggable) |
| … | … | @@ -129,8 +134,14 @@ Both prongs share one verification target per primitive. |
| 129 | 134 | STRUCTURAL — run the same parse through opencog's pseudo-cset extraction and match |
| 130 | 135 | `(word, connector-multiset, count)`. Needs the opencog MST pipeline (word-pair MI → |
| 131 | 136 | MST → cset) — a sub-project, deferred. Sections are at MI's pre-1b bar. |
| 132 | | 3. **Audit `gpu-connector-rewrite.cu`** — does it implement the pre-sheaf |
| 133 | | (type-class merge) mating semantics? Tie to opencog rewrite / matrix. |
| 137 | 3. **Audit mating** — DONE 2026-07-05 (with a correction). `gpu-connector-rewrite.cu` |
| 138 | is MISNAMED — it's grammar-cost + class-MI aggregation, NOT mating. The real |
| 139 | pre-sheaf class-merge is **`gpu-substitute.cl`** (assign_classes → substitute_pairs |
| 140 | → rebuild/merge → substitute_section_words): sparse label-substitution + hash-dedup |
| 141 | with count-summing. `test-substitute.c` builds+runs on the RTX 2070 → 6/6 PASS, |
| 142 | verified vs hand ground truth (merge 5+3=8, self-pair elimination). Clustering |
| 143 | (which words merge) = `gpu-cosine` + components. OPEN (same as sections): tie to |
| 144 | opencog's actual `learn` gram-class code on data. |
| 134 | 145 | 4. **Selector stub** — a `{Tₐ}` dispatch loop over the verified kernels: one fired |
| 135 | 146 | per tick, selection pluggable (max → softmax → avalanche). The first runnable |
| 136 | 147 | piece of his automaton, on verified transforms. |