# -------------------------
# REFLEXIÓN DINÁMICA
# -------------------------
def reflect(self):
"""
Ahora la reflexión detecta estructura, no solo cantidad
"""
keys = list(self.state.keys())
nulls = sum(1 for v in self.state.values() if v is None)
filled = len(self.state) - nulls
# densidad relacional (si hay estructura)
relation_density = filled / (len(keys) + 1)
# estabilidad histórica (cambio entre estados)
if len(self.history) > 1:
last = self.history[-1]
change_rate = sum(
1 for k in self.state
if k in last and last[k] != self.state[k]
) / (len(self.state) + 1)
else:
change_rate = 0
return {
"density": relation_density,
"instability": change_rate,
"null_pressure": nulls
}
# -------------------------
# PRODUCCIÓN DINÁMICA
# -------------------------
def produce(self, input_signal=None):
"""
El sistema ahora modifica su propia estructura de prioridad
"""
self.history.append(self.state.copy())
self.step_count += 1
# integración de input
if input_signal:
for k, v in input_signal.items():
self.state[k] = v
self.weights[k] = self.weights.get(k, 1) + 1
# auto-reconfiguración estructural
for k in list(self.state.keys()):
if self.state[k] is None:
# ahora no es fijo: depende del contexto del sistema
self.state[k] = f"resolved_t{self.step_count}"
# decaimiento de memoria (olvido controlado)
for k in self.weights:
self.weights[k] *= 0.95
return self.state
# -------------------------
# LOOP DIR COMPLETO
# -------------------------
def loop(self, input_signal=None):
reflection = self.reflect()
production = self.produce(input_signal)
# meta-feedback: reflexión modifica el futuro
if reflection["instability"] > 0.5:
self.state["_mode"] = "stabilization"
else:
self.state["_mode"] = "expansion"
return {
"reflection": reflection,
"production": production,
"mode": self.state["_mode"]
}
class DIRSystem:
def init(self, state=None):
self.state = state if state is not None else {}
self.history = []
self.weights = {} # nueva capa de importancia
self.step_count = 0