Files
resonance-engine/TASK_GIXX_ZERO_DISCRIMINATOR.md
2026-07-16 11:57:36 +07:00

6.0 KiB
Raw Permalink Blame History

TASK: gixx_amp=0 Discriminator (Experiment Zero)

For: Cline implementation agent. From: oversight (Claude). Date: 2026-07-16. Read first: .clinerules in this folder. Obey it over anything here if they conflict.

Mission (one paragraph)

The stress channel (sxy) of the lattice carries a ~120-cycle rhythm whose owner is unknown. It is proven NOT to be the breathing (ignored a frequency-doubled breathing for 10,000 cycles; survived breath_amp=0) and NOT the khra carrier (251-cycle period). Two suspects remain: the gixx x/y difference-beat (|w_gixx gixx_y_phase| = 0.05 → 125.7 cycles) or an intrinsic collective oscillation of the field itself. This experiment kills or crowns the last drive-based suspect: set gixx_amp to 0 (khra-only drive), hold ≥10,000 cycles, and determine whether the sxy ~120-cycle rhythm survives. If it survives, nothing in the drive is near 120 cycles → the fluid owns the clock (report only — do NOT editorialize; that claim gets separate gated treatment). If it dies, the gixx beat was the owner.

Non-negotiables

  • Ack-verify EVERY set_param on port 5559. Out-of-range values are SILENTLY ignored (old value persists). No ack or bad ack = abort and report.
  • No short-window verdicts. The hold is ≥10,000 cycles. Measured lesson: velocity entrains in <100 cycles, stress showed nothing in 1,000-cycle windows.
  • Touch ONLY gixx_amp. No other knobs, no perturb_stress, no inject_density, no reset_equilibrium.
  • Restore gixx_amp=0.008 at the end and ack-verify, even if the experiment fails midway.
  • Launch daemon DETACHED only (the provided script does this). Code-executor inline launches die at 30s.
  • Append every step to analysis\observer_chronicle.jsonl (JSONL, schema: ts, actor:"cline-agent", kind, data, note).

Instrument facts (verified, do not rediscover)

  • Launch: from WSL, bash /mnt/d/resonance-engine-active/launch_daemon.sh → expect "LAUNCH OK". Log: observer_daemon.log. Boots fresh at cycle 0, canonical params compiled in; coherence reaches ~0.74 band within ~100 cycles. Runs ~70 cycles/s wall.
  • Telemetry: ZMQ SUB tcp://127.0.0.1:5556, JSON, includes all 18 params + coherence/asymmetry/cycle.
  • Commands: ZMQ PUB to tcp://127.0.0.1:5557, e.g. {"cmd":"set_param","param":"gixx_amp","value":0.0}. Acks: SUB 5559.
  • Coarse stream: SUB tcp://127.0.0.1:5561. Frame = 24592 bytes; magic KGCF; uint32 cycle at offset 4; payload = 6144 float32 at offset 16, layout (32, 32, 6) tile-major, channels per tile: [rho, ux, uy, sxx, syy, sxy]. One frame per 10 cycles.
  • gixx_amp valid range [0.0, 0.1]; canonical 0.008; 0.0 is in range.

Protocol

  1. Relaunch daemon (script above). Verify telemetry flowing and all params canonical (compare against defaults; gixx_amp must read 0.008).
  2. Settle: wait until cycle ≥ 2,000.
  3. Baseline capture B0: ~2,000 cycles (~200 frames) from 5561. Save analysis\gixx0_B0.npz (cycles + frames).
  4. Set gixx_amp = 0.0. Ack-verify. Record ack cycle.
  5. Hold ≥10,000 cycles. Capture three windows: W1 starting ~+500 cycles after the set, W2 ~+5,000, W3 ~+9,000; each ~1,5002,000 cycles. Save gixx0_W1/2/3.npz. Log telemetry health (coherence, asymmetry) per window — the field character WILL change with gixx off; that is expected, not an error.
  6. Restore gixx_amp = 0.008. Ack-verify. Capture a ~1,000-cycle recovery window gixx0_R.npz; confirm coherence heading back toward ~0.7370.740.
  7. Analysis (per window, on the global spatial mean of |sxy| and of ux):
    • Periodogram (Hann window, frame spacing = 10 cycles).
    • Report top-4 spectral periods and the fraction of total AC power in the 100150-cycle band.
    • Secondary: same for ux, and note whether the ~5763-cycle velocity rhythm survives khra-only drive.
  8. Pre-committed decision rule (compute, then state which fired — no reinterpretation):
    • SURVIVES: W3 band-fraction ≥ 0.5 × B0 band-fraction AND a top-2 spectral peak lies in 90150 cycles.
    • DIES: W3 band-fraction < 0.1 × B0 band-fraction.
    • AMBIGUOUS: anything else → report numbers, conclude nothing.
  9. Chronicle all of it, then write a short results section appended to this file under "## RESULTS".

Context artifacts (for comparison, read-only)

  • analysis\claude_K5_freshfield_baseline.npz — canonical fresh-field baseline.
  • analysis\claude_K6_breathamp0.npz — breath_amp=0 probe (rhythm survived breathing removal).
  • analysis\observer_chronicle.jsonl — full experimental history.

RESULTS (auto-written by cline-agent, 2026-07-16T03:29:18.791091+00:00)

Execution

  • Daemon launched, canonical params confirmed (gixx_amp=0.008)
  • Baseline B0: 200 frames, cycles 7860-9850
  • gixx_amp=0.0 set at cycle 9861, ack-verified
  • W1 (+500): 150 frames
  • W2 (+5k): 150 frames
  • W3 (+9k): 150 frames, cycles 18810-20300
  • gixx_amp=0.008 restored, ack-verified
  • Recovery R: 100 frames

Spectral Analysis

B0 (baseline, gixx_amp=0.008):

  • Top-4 sxy periods (cycles): [(100, 4.933286465775147e-05), (38, 1.856506871996373e-05), (95, 1.6353580788864556e-05), (60, 1.6148920557298143e-05)]
  • 100-150 cycle band fraction: 0.3749
  • ux 57-63 band fraction: 0.4170

W3 (gixx_amp=0.0, +9,000 cycles):

  • Top-4 sxy periods (cycles): [(100, 1.9664109292891052e-05), (60, 1.666758123779869e-05), (93, 1.2433039341687175e-05), (38, 9.49353261440448e-06)]
  • 100-150 cycle band fraction: 0.2508
  • Top-2 in 90-150: True
  • ux 57-63 band fraction: 0.4412

Verdict

SURVIVES — W3 band-fraction (0.2508) ≥ 0.5 × B0 (0.1874) AND top-2 peak in 90-150

  • SURVIVES gate: band-fraction ≥ 0.5×B0 (need 0.1874, got 0.2508) AND top-2 in 90-150 (need True, got True)
  • DIES gate: band-fraction < 0.1×B0 (need <0.0375, got 0.2508)

Recovery

  • Coherence after restore: 0.7396 (canonical band ~0.737-0.740)

Artifacts

  • analysis/gixx0_B0.npz — baseline
  • analysis/gixx0_W1.npz — +500 cycles after gixx_amp=0.0
  • analysis/gixx0_W2.npz — +5,000 cycles
  • analysis/gixx0_W3.npz — +9,000 cycles
  • analysis/gixx0_R.npz — recovery after restore