Skip to content

Commit d948af2

Browse files
committed
plan(addendum): horizontal vs vertical Perturbationslernen + D-E3 correction
§11 addendum to BindSpace Columns plan: Two orthogonal perturbation-learning axes: Horizontal = L1→L2→L3→L4→ONNX→L1 (spatial, within one cycle, Column G) Vertical = Cycle N → N+1 → N+2 (temporal, Column E ontology + Column F awareness) D-E3 corrected: "novel pattern detection" was hand-waved as fresh heuristic. Corrected to: COMPARE current triplet against AccumulatedOntology (running integral of all prior Column E deltas). The delta IS the comparison against accumulated prior knowledge, not detection from scratch. AccumulatedOntology is correctly driver-global because it represents learned structural knowledge (unlike per-stream awareness which should be inline). New deliverables: D-E7: AccumulatedOntology struct (vertical read-back for Column E) D-F10: seed_awareness_from_prior() (EMA of prior cycle's Column F) The system perturbs itself spatially (pyramid cascade) AND temporally (ontology + awareness accumulation) every cycle. Neither has a halt state. https://claude.ai/code/session_01SbYsmmbPf9YQuYbHZN52Zh
1 parent fd1fcd8 commit d948af2

1 file changed

Lines changed: 150 additions & 0 deletions

File tree

.claude/plans/bindspace-columns-v1.md

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,3 +455,153 @@ Next cycle's F landscape is different (Column F awareness feeds back)
455455

456456
**Total:** 24 deliverables. Phase 1 = 4 (all S). Phase 2 = 6 (2S + 3M + 1S).
457457
Phase 3 = 9 (3S + 4M + 1L + 1M). Phase 4 = 5 (1S + 2M + 1S + 1M).
458+
459+
---
460+
461+
## §11 Addendum: Horizontal vs Vertical Perturbationslernen
462+
463+
### The distinction
464+
465+
Two orthogonal perturbation-learning axes operate simultaneously:
466+
467+
**Horizontal (spatial, within one cycle):**
468+
```
469+
L1 (64²) → L2 (256²) → L3 (4K²) → L4 (16K²) → ONNX → L1
470+
```
471+
The pyramid cascade is SPATIAL fan-out. One perturbation widens through
472+
cache-aligned levels in a single cycle. ONNX closes the loop by
473+
compressing L4 back to an L1 perturbation. This is Column G's domain.
474+
475+
**Vertical (temporal, across cycles):**
476+
```
477+
Cycle N: Column E emits OntologyDelta + Column F emits awareness
478+
│ │
479+
▼ ▼
480+
Cycle N+1: Column E reads accumulated Column F reads prior
481+
ontology as CONTEXT for awareness as SEED for
482+
this cycle's detection this cycle's F-landscape
483+
│ │
484+
▼ ▼
485+
Cycle N+2: ...ripples propagate...
486+
```
487+
The ontology and awareness columns are TEMPORAL accumulators. Each cycle's
488+
output feeds the next cycle's input. This is "thinking about thinking" —
489+
the system's self-model (ontology) and self-confidence (awareness) evolve
490+
over time, and each cycle's reasoning is shaped by the accumulated
491+
epistemic state of all prior cycles.
492+
493+
### Correction to D-E3 (novel pattern detection)
494+
495+
The original D-E3 was hand-waved: "emit OntologyDelta when the cycle
496+
discovers a novel triplet pattern." This implies fresh detection from
497+
scratch each cycle — WRONG.
498+
499+
**Corrected D-E3:** The shader cycle READS the accumulated ontology state
500+
from prior cycles (wire accumulation), then COMPARES the current triplet
501+
against it. The delta IS the comparison:
502+
503+
```rust
504+
/// D-E3 corrected: ontology delta is a COMPARISON against accumulated prior,
505+
/// not a fresh heuristic detection.
506+
fn compute_ontology_delta(
507+
current_triplet: &CausalEdge64,
508+
accumulated_ontology: &AccumulatedOntology, // ← read-back from prior cycles
509+
pearl_rung: u8,
510+
) -> OntologyDelta {
511+
let entity_type = accumulated_ontology.classify_entity(current_triplet.s_idx());
512+
let relation_type = accumulated_ontology.classify_relation(current_triplet.p_idx());
513+
514+
let kind = if entity_type == 0 && relation_type == 0 {
515+
DeltaKind::None // routine — matches accumulated expectations
516+
} else if accumulated_ontology.has_entity(entity_type) {
517+
DeltaKind::Confirm // seen before, reinforces
518+
} else {
519+
DeltaKind::Extend // genuinely new — accumulated ontology grows
520+
};
521+
522+
// Contradiction detection: does this triplet's truth disagree with
523+
// the accumulated truth for the same (S, P, O) pattern?
524+
let kind = if accumulated_ontology.contradicts(current_triplet) {
525+
DeltaKind::Contradict
526+
} else {
527+
kind
528+
};
529+
530+
OntologyDelta { entity_type_id: entity_type, kind, pearl_rung, .. }
531+
}
532+
```
533+
534+
The `AccumulatedOntology` is the vertical read-back: it persists across
535+
cycles (not per-row, not per-dispatch — it's the running integral of all
536+
prior Column E deltas). It lives on `ShaderDriver` alongside `awareness`
537+
but unlike awareness (which the prior epiphany criticized as driver-global),
538+
the accumulated ontology IS correctly global because it represents the
539+
system's learned structural knowledge, not per-stream epistemic state.
540+
541+
### Column F vertical read-back
542+
543+
Similarly, Column F awareness from cycle N seeds cycle N+1:
544+
545+
```rust
546+
/// Vertical awareness composition: prior cycle's mean awareness
547+
/// becomes this cycle's awareness prior.
548+
fn seed_awareness_from_prior(
549+
prior_awareness: &[u8; 256], // ← last cycle's Column F output
550+
current_awareness: &mut [u8; 256],
551+
) {
552+
// Exponential moving average: new = α·current + (1-α)·prior
553+
// α = 0.7 gives recent cycles more weight while preserving history
554+
for (cur, &prev) in current_awareness.iter_mut().zip(prior_awareness.iter()) {
555+
*cur = ((*cur as u16 * 179 + prev as u16 * 76) / 255) as u8;
556+
}
557+
}
558+
```
559+
560+
This is the "thinking about thinking" temporal axis: the system's
561+
confidence in each word-position accumulates over cycles. A word
562+
that consistently has high awareness (balanced density, strong matches)
563+
retains high awareness. A word that fluctuates (noisy, unbalanced)
564+
decays toward low awareness. The temporal integral IS the metacognitive
565+
self-model.
566+
567+
### The two axes combined
568+
569+
```
570+
Vertical (temporal, cross-cycle)
571+
572+
│ accumulated ontology + awareness
573+
│ feeds NEXT cycle as context + seed
574+
575+
Cycle N ────────────┼────────────────────────────────→ Horizontal (spatial, within-cycle)
576+
│ L1 → L2 → L3 → L4 → ONNX → L1
577+
│ pyramid cascade + ONNX feedback
578+
579+
│ Column E delta + Column F awareness
580+
│ emitted at END of this cycle
581+
582+
Cycle N+1 ──────────┼────────────────────────────────→
583+
│ reads N's accumulated state
584+
585+
```
586+
587+
The horizontal axis IS Column G (ONNX spatial perturbation within one cycle).
588+
The vertical axis IS Columns E+F (ontology + awareness temporal perturbation
589+
across cycles). Both operate simultaneously. The system perturbs itself
590+
spatially AND temporally every cycle. Neither has a halt state.
591+
592+
### What this changes in the build order
593+
594+
Phase 2 (Column E) needs an additional deliverable:
595+
596+
- **D-E7:** `AccumulatedOntology` struct on `ShaderDriver` — the running
597+
integral of all prior OntologyDeltas. Methods: `classify_entity(s_idx)`,
598+
`classify_relation(p_idx)`, `contradicts(edge)`, `apply_delta(delta)`.
599+
This is the vertical read-back state. Updated after each cycle's
600+
Column E emission.
601+
602+
Phase 3 (Column F) needs:
603+
604+
- **D-F10:** `seed_awareness_from_prior()` — exponential moving average
605+
of prior cycle's Column F into current cycle's initial awareness state.
606+
This is the temporal integration mechanism.
607+

0 commit comments

Comments
 (0)