You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Brings the README in line with everything shipped in this session:
- L1.6 Array<->JIT bridges (both directions) documented in the JIT
section
- 22 newly JIT'd harmonic primitives listed in a clean arity table
(i64->i64 unary, binary, ternary, array_ptr->i64, array_ptr,i64->i64)
- harmonic_anomaly v2 with substrate-routed lookup: 10.3% speedup,
identical recall, NSL-KDD A/B bench file referenced
- Heal pass updated to 7 classes (was 5), substrate-routed typo
lookup ~10× speedup, per-class pragmas, heal budget
- NSL-KDD JIT integration table: 363ms tree-walk -> 271ms full stack
with all the layers (pre-L1.6, L1.6 input bridge, +intrinsics,
+v2 substrate_search)
- Test totals updated: 161 OMC + 77 codegen
- Distractor-mix falsification of the hybrid HBit gate noted in the
status table + "what's NOT shipped"
- New demos linked: nsl_kdd_v1_vs_v2.omc, test_heal_pass.omc,
distractor_mix_README.md
- Float-returning JIT intrinsics flagged as deferred (shims exist
but dispatch's returns_float plumbing not yet wired)
No content drops — only additions and corrections.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Dual-band lowerer produces packed `<2 x i64>` for `phi_shadow` and `harmony`
94
94
- Cascade-cleanup: failed-to-lower fns get `unreachable` trap stubs (not raw deletion), plus a fixpoint marks dependent fns as failed
95
95
-`OMC_HBIT_JIT_VERIFY=1`, `OMC_HBIT_JIT_DUMP_IR=1` for diagnostics
96
-
- Empirical: 272× on factorial(12) vs tree-walk
96
+
- Empirical: 272× on factorial(12), **115× on array-sum hot loop, 10.6× on substrate-heavy mixed workload**
97
+
98
+
**L1.6 Array↔JIT bridge** (both directions): `Value::Array(int_only)` marshals to a length-prefixed `Box<[i64]>` for arg-passing; the `@jit_returns_array_int` pragma triggers `omc_arr_heapify` so a JIT'd fn can return a `Value::Array` it built internally. Same layout both ways, no codegen changes needed at the lowerer.
99
+
100
+
**JIT'd harmonic primitives** (table-driven `HARMONIC_INTRINSICS` in `dual_band.rs`, 3 lines per new entry):
### 4. The O(log_phi_pi_fibonacci N) primitive family
99
110
@@ -116,7 +127,7 @@ The architectural trade-off: substrate ops use fewer probes (7.3 vs 16 at N=6553
116
127
117
128
### 5. The harmonic libraries (`examples/lib/`)
118
129
119
-
Substrate-routed end-to-end. `harmonic_anomaly`, `harmonic_clustering`, `harmonic_recommend`. Plus the high-level [`examples/lib/substrate.omc`](examples/lib/substrate.omc) wrapper exposing `s_*` (substrate-routed), `i_*` (int-binary), `h_*` (harmonic) naming.
130
+
Substrate-routed end-to-end. `harmonic_anomaly` (+ **v2 with substrate-routed lookup**), `harmonic_clustering`, `harmonic_recommend`. Plus the high-level [`examples/lib/substrate.omc`](examples/lib/substrate.omc) wrapper exposing `s_*` (substrate-routed), `i_*` (int-binary), `h_*` (harmonic) naming.
120
131
121
132
Anomaly detection vs scikit-learn IsolationForest (full results in [`docs/anomaly_detection.md`](docs/anomaly_detection.md)):
122
133
@@ -128,16 +139,26 @@ Anomaly detection vs scikit-learn IsolationForest (full results in [`docs/anomal
128
139
129
140
OMC loses on volumetric-dominated data (NSL-KDD K=500: 302 vs 351). Ties on simple time-series. The pattern: harmonic substrate is a **structural detector**, not a primary computation replacement.
130
141
142
+
**JIT integration impact on NSL-KDD harmonic_anomaly fit (5000 rows, 6 dims):**
143
+
144
+
| Configuration | fit + score | Speedup vs tree-walk |
145
+
|---|--:|--:|
146
+
| Tree-walk | 363 ms | 1× |
147
+
| JIT pre-L1.6 (arrays in dispatch → tree-walk) | 363 ms | 1× (no JIT actually used) |
- Self-healing pass — 5 classes of automatic correction
155
+
-**Self-healing pass — 7 classes** of automatic correction (typo, arity-pad, arity-truncate, div-zero → safe_divide, mod-zero → safe_mod, harmonic-index snap, missing-return). **Substrate-routed typo lookup** uses 32-bucket `substrate_hash_name` index for ~10× speedup on projects with hundreds of names ([`docs/heal_pass.md`](docs/heal_pass.md) has the bench table). Per-class disable pragmas (`@no_heal_typo`, etc.) + per-pass heal budget.
135
156
- Two-engine parity verified by `--audit FILE`
136
157
- Embedded CPython via PyO3: `py_import`, `py_call`, `py_callback("omc_fn")` for callbacks
137
158
- WASM target (`omnimcode-wasm`, no LLVM/Python deps)
138
159
- LSP server (`omnimcode-lsp`) + VS Code extension
139
160
- Package manager (`--install` from registry, sha256-verified, or arbitrary URL)
140
-
-145 OMC tests + 41 codegen tests + cargo unit tests — all green
161
+
-**161 OMC tests + 77 codegen tests + cargo unit tests** — all green
141
162
142
163
---
143
164
@@ -201,10 +222,10 @@ fn coherent_loop(n) {
201
222
202
223
## What's NOT shipped (honest limits)
203
224
204
-
-**The transformerless LLM itself.** CRT-PE wins at the per-component level; building a harmonic-only architecture top-to-bottom and training it competitively is the next step, not yet started.
225
+
-**The transformerless LLM itself.** CRT-PE wins at the per-component level; the hybrid attention gate as currently formulated lost the distractor-mix test 0/3 ([`experiments/transformerless_lm/distractor_mix_README.md`](experiments/transformerless_lm/distractor_mix_README.md)). Two concrete follow-on architectures documented (score-level gate, learned-threshold gate). Building a harmonic-only architecture top-to-bottom and training it competitively is the next step.
205
226
-**AVX-512 widening.** Dual-band uses `<2 x i64>` (SSE2). Wider lanes need array-processing OMC fns to fill them.
206
-
-**JIT for the harmonic libraries' string/dict-heavy paths.**JIT works for pure-int/array/float fns. Anomaly libs use dicts and string-keyed frequency tables that the JIT doesn't yet cover. Two options on the table: extend codegen (~2–3 sessions) or rewrite the libs to use array-of-hashed-int (already done for `harmonic_anomaly` in L1).
207
-
-**Float-typed Div / comparison in older modules.**OMC bytecode compiler emits `DivFloat` / `EqFloat` for newly type-tagged builtins; older user code may still hit `Op::Div` on float bit-patterns (treated as integer division). Per-builtin compiler tag is how you fix it locally.
227
+
-**JIT for float-returning harmonic primitives.**`harmony_value` / `value_danger` shims exist as extern Rust fns; the dispatch boundary needs a `returns_float` flag mirroring `returns_array_int` to materialize their f64-bit-pattern returns correctly. Nothing in current hot paths needs it.
228
+
-**JIT for string/dict ops.**Pure JIT operates on i64 only; strings and dicts stay tree-walk by design. The harmonic libraries' L1 rewrite to array-of-hashed-int eliminated this constraint for the hot path (now 3.4× faster end-to-end).
208
229
209
230
---
210
231
@@ -213,24 +234,27 @@ fn coherent_loop(n) {
213
234
| File | Story |
214
235
|---|---|
215
236
|[`experiments/transformerless_lm/`](experiments/transformerless_lm/)| CRT-PE wins on real LM training, two scales, 3-of-3 + 4-of-5 seeds |
|[`experiments/substrate_primitives/bench_substrate_search.omc`](experiments/substrate_primitives/bench_substrate_search.omc)| 4-way bench: linear vs OMC binary vs substrate vs native int-binary |
0 commit comments