An open exploration of viable human-AI systems.
View the Project on GitHub algoplexity/cybernetic-intelligence
This solution expands the original proposal by integrating concrete code from a working topological reasoning notebook. It aligns directly with the ADIA Lab Structural Break Detection challenge and operationalizes the CIv6 hypothesis through latent geometry and attention topology.
X_train: Pandas DataFrame, indexed by id, with value and period columns.y_train: Boolean labels indicating structural breaks.X_test: List of test DataFrames.Symbolic Encoding
ECA Evolution
# Example: run_eca function
RULE_MAPS = {
110: {f"{i:03b}": b for i, b in enumerate(f"{110:08b}"[::-1])}
}
def run_eca(initial_bits, rule=110, steps=32):
rule_map = RULE_MAPS[rule]
current = ''.join(initial_bits)
history = [current]
for _ in range(steps):
padded = '0' + current + '0'
next_state = ''.join(rule_map[padded[i:i+3]] for i in range(len(current)))
history.append(next_state)
current = next_state
return history
Use a Transformer model capable of outputting attentions and hidden embeddings.
GPT-2, Qwen2.5, or TransformerECA (if symbolically trained).def extract_cycles_and_log_wilson(head_idx, attn_matrix, tokens, threshold=0.05):
import networkx as nx
import numpy as np
A = attn_matrix[head_idx].cpu().numpy()
idx = {t: i for i, t in enumerate(tokens)}
G = nx.DiGraph()
for i in range(len(tokens)):
for j in range(len(tokens)):
if A[i, j] > threshold:
G.add_edge(tokens[i], tokens[j], weight=A[i, j])
cycles = [c for c in nx.simple_cycles(G) if 3 <= len(c) <= 6]
def log_wilson_loop(cycle):
return sum(np.log(A[idx[s], idx[t]] + 1e-12) for s, t in zip(cycle, cycle[1:] + cycle[:1]))
return [(cycle, log_wilson_loop(cycle)) for cycle in cycles]
def compute_holonomy_spectrum(cycle, Q, K, token_idx):
import torch, numpy as np
H = torch.eye(Q.shape[-1])
for s, t in zip(cycle, cycle[1:] + cycle[:1]):
i, j = token_idx[s], token_idx[t]
qi = Q[i].unsqueeze(1)
kj = K[j].unsqueeze(0)
transport = qi @ kj
H = transport @ H
eigvals = torch.linalg.eigvals(H).cpu().numpy()
return eigvals
Topological Divergence Detector
Compare:
Entropy Divergence Tracker
def compute_attention_entropy(attn_matrix):
import scipy.stats
entropy_per_head = []
for head_attn in attn_matrix:
probs = head_attn / head_attn.sum(axis=-1, keepdims=True)
entropy = scipy.stats.entropy(probs, axis=-1)
entropy_per_head.append(entropy.mean())
return entropy_per_head
Define break score as:
Can be a trained classifier or a rule-based scoring function.
y_train for supervised evaluation.X_test (submission-ready).Time Series
โโถ Symbolic Encoding (delta/permutation)
โโถ ECA Evolution (Rule 110)
โโถ Transformer Attention Probing
โโถ Loop Energy Analyzer
โโถ Holonomy + Curvature Spectrum
โโถ Entropy/FIM Divergence
โโถ Structural Break Scoring
run_eca() โ Evolve bit sequencesextract_cycles_and_log_wilson() โ Detect closed attention pathscompute_holonomy_spectrum() โ Eigenvalues from Q/K loop transportcompare_pre_post_topology() โ Vector of topological metricsstructural_break_score() โ Final ROC-compatible scalarThis proposal is now concretely aligned with:
It is fully modular and ready to be integrated into the ADIA baseline notebook.