| # Browser↔Backend Interlock: Tau Prolog + Clojure + Assembly | |
| **Date:** 2026-07-31 | |
| **Status:** Phase Integration Strategy | |
| --- | |
| ## The Three-Layer Interlock | |
| ### Layer 1: Browser (Tau Prolog - Symbolic) | |
| Prolog runs pure logic, generates bytecode IR | |
| ### Layer 2: Backend (Clojure - Compiled) | |
| Clojure parses bytecode, compiles to native via Cranelift | |
| ### Layer 3: Assembly/Bytecode (Interlock Protocol) | |
| Common language both understand | |
| --- | |
| ## Bytecode Assembly Spec | |
| ``` | |
| PUSH <value> — Push value onto stack | |
| LIST-CONS — Create list cons cell | |
| UNIFY <var> <term> — Unify variable with term | |
| RETURN <value> — Return result | |
| SEAL <cid> — Bifrost seal result | |
| SIGNATURE <ed25519> — Sign with key | |
| ``` | |
| --- | |
| ## Integration into 9-Phase Build | |
| Each phase: | |
| - Browser: emit/consume bytecode (Tau Prolog) | |
| - Backend: parse/compile/execute (Clojure→Cranelift) | |
| - Proof: bytecode execution trace (sealed to WORM) | |
| --- | |
| ## Implementation Tasks | |
| ### Task 1: Tau Prolog Bytecode Emitter | |
| Browser-side Tau Prolog → bytecode IR | |
| ### Task 2: Clojure Bytecode Parser | |
| Backend-side bytecode IR → JVM execution | |
| ### Task 3: Cranelift JIT | |
| JVM→native x86-64 compilation | |
| ### Task 4: Browser Verification | |
| Verify result matches Tau Prolog query | |
| --- | |
| ## Concrete Example | |
| Browser: `?- append([1,2], [3], Z).` | |
| Browser emits bytecode → Backend compiles → Backend executes → Result sealed | |
| Browser verifies proof → Display Z = [1,2,3] | |
| --- | |
| **Status:** Ready to implement | |
| **Estimated time:** 7 hours to production | |