berna-r8 / code /cells /dna_kernel_fix.py
muhamedkamil's picture
Upload folder using huggingface_hub
d997548 verified
Raw History Blame Contribute Delete
1.72 kB
from pathlib import Path
p = Path("/data/berna-r7/core/code/cells/dna_kernel.py")
text = p.read_text()
old = '''def decide(dna: DNA, S: float) -> dict:
"""
(D_c, K_c, u_c) -> {route, grow, split, retain}
Returns a dict of signals + a discrete decision.
"""
route = signal_route(dna)
grow = signal_grow(dna)
split = signal_split(dna, S)
retain = signal_retain(dna)
signals = {"route": route, "grow": grow, "split": split, "retain": retain}
# Discrete decision: highest signal wins
decision = max(signals, key=signals.get)
signals["decision"] = decision
return signals'''
new = '''def decide(dna: DNA, S: float, S_star: float = 0.85,
t_consecutive: int = 3) -> dict:
"""
(D_c, K_c, u_c) -> {route, grow, split, retain}
Priority-based decision per R5 Section 3.5.
Priority order (per R5):
1. split - if S >= S* sustained (handled by caller's S_history)
2. retain - if persistence high (frozen state)
3. grow - if plasticity high and not saturated
4. route - default behavior
"""
route = signal_route(dna)
grow = signal_grow(dna)
split = signal_split(dna, S, S_star)
retain = signal_retain(dna)
signals = {"route": route, "grow": grow, "split": split, "retain": retain}
# Priority-based decision (R5 Section 3.5)
if S >= S_star:
decision = "split"
elif retain > 0.7:
decision = "retain"
elif grow > 0.6:
decision = "grow"
else:
decision = "route"
signals["decision"] = decision
return signals'''
assert old in text, "pattern not found"
text = text.replace(old, new, 1)
p.write_text(text)
print("✅ decide() patched")