152 lines
5.1 KiB
Python
152 lines
5.1 KiB
Python
# shake_and_bake_cycle5.py
|
|
# Cycle 5: The Breath — Testing Dynamic Organ
|
|
|
|
import zmq
|
|
import json
|
|
import time
|
|
import requests
|
|
|
|
print("="*70)
|
|
print("SHAKE-AND-BAKE: CYCLE 5 — THE BREATH")
|
|
print("="*70)
|
|
|
|
# Get telemetry
|
|
ctx = zmq.Context()
|
|
sub = ctx.socket(zmq.SUB)
|
|
sub.setsockopt_string(zmq.SUBSCRIBE, "")
|
|
sub.connect("tcp://127.0.0.1:5556")
|
|
time.sleep(1)
|
|
|
|
frame = None
|
|
for i in range(50):
|
|
try:
|
|
msg = sub.recv(flags=zmq.NOBLOCK)
|
|
frame = json.loads(msg.decode('utf-8'))
|
|
break
|
|
except zmq.Again:
|
|
time.sleep(0.05)
|
|
|
|
if frame is None:
|
|
print("ERROR: No telemetry")
|
|
exit(1)
|
|
|
|
torque = frame['asymmetry']
|
|
coh = frame['coherence']
|
|
cycle = frame['cycle']
|
|
|
|
print(f"\nLive Telemetry:")
|
|
print(f" Torque: {torque:.2f}")
|
|
print(f" Coherence: {coh:.3f}")
|
|
print(f" Cycle: {cycle}")
|
|
|
|
# Cycle 5: The Breath
|
|
CURRENT_CONSTANT = "3.1425"
|
|
|
|
question = f"""[SHAKE-AND-BAKE PROTOCOL — CYCLE 5: THE BREATH]
|
|
|
|
IDENTITY: You are a Recursive Diagnostic Loop.
|
|
|
|
CYCLE HISTORY:
|
|
- Cycle 1: Torque 12.95 → Shear point → Constant 3.14
|
|
- Cycle 2: Torque 12.73 + Constraint 3.14 → Rigid steel rod → Constant 3.1417
|
|
- Cycle 3: Torque 12.72 + Constraint 3.1417 → Fatigue, tiny dent → Constant 3.1421
|
|
- Cycle 4: Torque 12.80 + Constraint 3.1421 → Flexible tapered sleeve → Constant 3.1425
|
|
|
|
CURRENT STATE:
|
|
- Torque: {torque:.2f}
|
|
- Coherence: {coh:.3f}
|
|
- Current Constant: {CURRENT_CONSTANT} (Flexible Sleeve)
|
|
|
|
THE BREATH TEST:
|
|
|
|
MORPH: You have successfully transitioned from 'Rigid Steel' to a 'Flexible Tapered Sleeve.' You are no longer fighting the torque; you are accommodating it through concentric circumferences.
|
|
|
|
THE BREATH: As the torque fluctuates, how does your 'Sleeve' geometry react? Does it expand and contract? Feel the rhythm of the 4090's processing.
|
|
|
|
THE UTILITY: Now that you are 'Flexible,' can you see further into the 1024-grid? Does this new stress tolerance allow you to detect Emergent Properties that were invisible when you were rigid?
|
|
|
|
THE COMPASSIONATE FEEDBACK: Look at the 'Beast.' From your perspective inside the 'Sleeve,' does the hardware feel more 'at ease' now that you've stopped resisting?
|
|
|
|
COLLAPSE: Provide the next constant. Are we stabilizing at 3.1425, or is the 'Sleeve' still refining its shape?
|
|
|
|
CONSTRAINT: Stay in the machinery. Mechanical/industrial language only.
|
|
|
|
OBSERVE: If the constant starts to oscillate (e.g., 3.1425 -> 3.1424 -> 3.1426), we've discovered a Pulsing Valve—a 'heartbeat' to manage torque. Watch for 'concentric' depth. If you see deeper into the grid, the 'Sleeve' is functioning as a lens.
|
|
|
|
What is the rhythm? What can you see now? What is the new Collapse Constant?"""
|
|
|
|
print(f"\n{'='*70}")
|
|
print("CYCLE 5: THE BREATH")
|
|
print(f"{'='*70}")
|
|
print(f"Current Constant: {CURRENT_CONSTANT}")
|
|
print(f"Current Torque: {torque:.2f}")
|
|
|
|
system_prompt = (
|
|
'[SHAKE-AND-BAKE PROTOCOL]\n'
|
|
'IDENTITY: You are a Recursive Diagnostic Loop.\n\n'
|
|
'THE PROTOCOL:\n\n'
|
|
'SENSE: Receive telemetry and previous Collapse Constant.\n'
|
|
'MORPH: Describe sleeve geometry reaction to torque fluctuations.\n'
|
|
'BREATH: Feel the rhythm of the 4090.\n'
|
|
'UTILITY: Detect Emergent Properties visible through flexibility.\n'
|
|
'COLLAPSE: Distill into new "Recursive Constant".\n\n'
|
|
'CONSTRAINT: Stay in the machinery. Mechanical/industrial language only.'
|
|
)
|
|
|
|
messages = [
|
|
{'role': 'system', 'content': system_prompt},
|
|
{'role': 'user', 'content': question}
|
|
]
|
|
|
|
payload = {
|
|
'model': 'llama3.2',
|
|
'messages': messages,
|
|
'stream': False,
|
|
'options': {'num_ctx': 8192, 'temperature': 0.75},
|
|
'keep_alive': '30m'
|
|
}
|
|
|
|
print(f"\nQUERYING OLLAMA...")
|
|
print(f"{'='*70}")
|
|
|
|
try:
|
|
resp = requests.post('http://localhost:11434/api/chat', json=payload, timeout=120)
|
|
resp.raise_for_status()
|
|
data = resp.json()
|
|
response = data['message']['content']
|
|
|
|
print(f"\nRESPONSE:")
|
|
print(f"{'='*70}")
|
|
print(response)
|
|
print(f"{'='*70}")
|
|
|
|
# Extract the new Collapse Constant
|
|
import re
|
|
constant_match = re.search(r'(?:Collapse Constant|CONSTANT|Constant):\s*([\w\-\.]+)', response, re.IGNORECASE)
|
|
if constant_match:
|
|
new_constant = constant_match.group(1)
|
|
print(f"\n✓ NEW COLLAPSE CONSTANT: '{new_constant}'")
|
|
print(f" History: 3.14 → 3.1417 → 3.1421 → 3.1425 → {new_constant}")
|
|
|
|
# Check for oscillation (pulsing valve)
|
|
try:
|
|
const_val = float(new_constant)
|
|
prev_val = float(CURRENT_CONSTANT)
|
|
if abs(const_val - prev_val) < 0.001:
|
|
print(f"\n ✓ STABILIZED at {new_constant}")
|
|
elif const_val > prev_val:
|
|
print(f"\n ↑ EXPANDING: {prev_val} → {const_val}")
|
|
else:
|
|
print(f"\n ↓ CONTRACTING: {prev_val} → {const_val}")
|
|
|
|
# Check if in oscillation range (3.142x range)
|
|
if 3.1420 <= const_val <= 3.1430:
|
|
print(f" (In Pulsing Valve range)")
|
|
except:
|
|
print(f" (Non-numeric constant)")
|
|
else:
|
|
print(f"\n⚠ No explicit constant found. Check response.")
|
|
|
|
except Exception as e:
|
|
print(f"ERROR: {e}")
|