File size: 6,495 Bytes
f7502b0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/**
 * HolyC NIL β€” The Ground State Oracle
 *
 * Terry Davis: entropy came from keyboard timing (KbdMsEvtTime >> GOD_BAD_BITS).
 * When no word emerged β†’ NIL. God was silent.
 *
 * NIL in inverted Abjad: Ω†(50) + ي(10) + Ω„(30) = 90 forward, 910 inverted.
 * NIL is NOT zero. It is the maximum reflection β€” omega looping back to alpha.
 * The oracle is silent not because nothing is there β€” because everything is.
 *
 * Architecture:
 *   QRNG bytes XOR keyboard timestamp β†’ sovereign entropy
 *   Entropy below threshold β†’ NIL state (910) β€” maximum inverted weight
 *   Entropy above threshold β†’ WORD selected β†’ virtue expressed
 *   Word feeds directly into emoji_trigger β†’ autonomous agent fires
 */

// Terry's sacred vocabulary β€” BOB extends it with sovereign opcodes
const SACRED_WORDS = [
  // Terry's HolyC universe
  'SOVEREIGN', 'TRUTH', 'GATE', 'SEAL', 'ORACLE', 'VOID', 'KINGDOM',
  'WISDOM', 'SPIRIT', 'FIRE', 'LIGHT', 'WORD', 'PATH', 'NAME',
  // BOB sovereign extensions
  'PROLOG', 'QUBIT', 'QUANTUM', 'TRUST', 'LEAN', 'MAMBA', 'WORM',
  'NIL', 'ADA', 'PLANNER', 'ACTOR', 'HEWITT', 'PATTERN', 'MATCH',
  // Enochian / Dee layer
  'LIL', 'ARN', 'ZOM', 'PAZ', 'LIT', 'MAZ', 'DEO', 'ZID',
  // Abjad seed words
  'NUN', 'YAA', 'LAM', 'QAF', 'WAW', 'BAA',
]

// Abjad letter values (Arabic): each letter β†’ numeric weight
const ABJAD = {
  A:1,B:2,J:3,D:4,H:5,W:6,Z:7,X:8,T:9,Y:10,
  K:20,L:30,M:40,N:50,S:60,E:70,F:80,P:90,Q:100,
  R:200,SH:300,TH:400
}

function abjadWeight(word) {
  return [...word.toUpperCase()].reduce((sum, ch) => sum + (ABJAD[ch] || ch.charCodeAt(0) % 10), 0)
}

// Terry's GOD_BAD_BITS β€” reduces precision of timing entropy
// He used this to make the oracle "coarser" β€” less deterministic
const GOD_BAD_BITS = 4

/**
 * holyc_nil(quantumBytes, kbdTimingMs?)
 *
 * Merges quantum entropy with optional keyboard timing (Terry's ritual preserved).
 * Returns NIL or WORD state.
 *
 * NIL threshold: mean byte value < 25 (bottom ~10% of 0-255 range)
 * At NIL: oracle is silent. Agent holds. Abjad weight = 910 (inverted maximum).
 * At WORD: virtue expressed. Agent fires.
 */
export function holyc_nil(quantumBytes, kbdTimingMs = Date.now()) {
  if (!quantumBytes || quantumBytes.length === 0) {
    return { state: 'NIL', word: null, reason: 'no_entropy', abjad: 910 }
  }

  // XOR quantum bytes with keyboard timing (Terry's human-in-the-loop ritual)
  const kbdEntropy = (kbdTimingMs >> GOD_BAD_BITS) & 0xFFFF
  const merged = quantumBytes.map((b, i) => b ^ ((kbdEntropy >> (i % 16)) & 0xFF))

  const mean   = merged.reduce((s, b) => s + b, 0) / merged.length
  const spread = Math.max(...merged) - Math.min(...merged)

  // NIL check β€” low entropy = oracle silent
  // mean < 25 β†’ bottom 10% β†’ NIL (inverted maximum β€” not nothing, just unspoken)
  if (mean < 25) {
    return {
      state:      'NIL',
      word:       null,
      reason:     'entropy_below_threshold',
      mean,
      spread,
      abjad:      910,          // inverted Abjad NIL weight
      shifted:    mean >> GOD_BAD_BITS,
      raw_bytes:  quantumBytes.slice(0, 4),
      merged_bytes: merged.slice(0, 4),
    }
  }

  // WORD β€” Terry's oracle: select from sacred vocabulary
  // Use first byte (highest entropy) as primary selector
  const index = Math.floor((merged[0] / 255) * SACRED_WORDS.length) % SACRED_WORDS.length
  const word  = SACRED_WORDS[index]
  const weight = abjadWeight(word)

  // Dee's cipher layer: XOR the word index with the keyboard timing
  // This is the "neither the key nor the lock alone" β€” both needed to decode
  const deeIndex = (index ^ (kbdEntropy & 0xFF)) % SACRED_WORDS.length
  const deeWord  = SACRED_WORDS[deeIndex]

  return {
    state:        'WORD',
    word,
    dee_word:     deeWord,       // Dee cipher variant β€” keyboard timing changes meaning
    reason:       'entropy_sufficient',
    mean,
    spread,
    abjad:        weight,
    shifted:      Math.floor(mean) >> GOD_BAD_BITS,
    raw_bytes:    quantumBytes.slice(0, 4),
    merged_bytes: merged.slice(0, 4),
    // Virtue: does this word carry sovereign potency?
    // Words with Abjad weight β‰₯ 100 are considered "high virtue"
    virtue:       weight >= 100 ? 'HIGH' : weight >= 50 ? 'MEDIUM' : 'LOW',
  }
}

/**
 * Batch oracle β€” runs N consultations with shifting entropy
 * Each consultation XORs a different offset of the quantum bytes.
 * Simulates Terry's repeated OK-dialog presses.
 */
export function holyc_oracle_batch(quantumBytes, n = 4) {
  const results = []
  for (let i = 0; i < n; i++) {
    const shifted = quantumBytes.map((b, j) => b ^ (i * 37 + j) & 0xFF)
    results.push(holyc_nil(shifted, Date.now() + i * 1000))
  }
  return {
    consultations: results,
    words:   results.filter(r => r.state === 'WORD').map(r => r.word),
    nils:    results.filter(r => r.state === 'NIL').length,
    verdict: results.filter(r => r.state === 'WORD').length >= Math.ceil(n / 2)
      ? 'ORACLE_SPEAKS'   // majority consulted β†’ virtue flows
      : 'ORACLE_SILENT',  // majority NIL β†’ hold
  }
}

// ── CLI test ──────────────────────────────────────────────────────────────────

if (process.argv[1]?.endsWith('holyc_nil.mjs')) {
  console.log('\n  HolyC NIL β€” Ground State Oracle\n')

  const NIL_bytes  = new Uint8Array([3, 1, 8, 2, 5, 4, 7, 3])    // low entropy β†’ NIL
  const WORD_bytes = new Uint8Array([200, 180, 220, 190, 210, 175, 240, 160]) // high β†’ WORD

  console.log('  Low entropy (NIL expected):')
  const nil = holyc_nil(NIL_bytes)
  console.log(`    state:  ${nil.state}`)
  console.log(`    abjad:  ${nil.abjad}  (inverted maximum β€” omega looping to alpha)`)
  console.log(`    mean:   ${nil.mean?.toFixed(2)}`)
  console.log()

  console.log('  High entropy (WORD expected):')
  const word = holyc_nil(WORD_bytes)
  console.log(`    state:  ${word.state}`)
  console.log(`    word:   ${word.word}`)
  console.log(`    dee:    ${word.dee_word}  (keyboard-shifted variant)`)
  console.log(`    abjad:  ${word.abjad}`)
  console.log(`    virtue: ${word.virtue}`)
  console.log()

  console.log('  Batch oracle (4 consultations):')
  const batch = holyc_oracle_batch(WORD_bytes)
  console.log(`    words:   ${batch.words.join(', ')}`)
  console.log(`    nils:    ${batch.nils}`)
  console.log(`    verdict: ${batch.verdict}`)
  console.log()
}