Research-Stack/docs/WEIRD_MACHINE_SPEC.md
Allaun Silverfox fa9c821437 feat(quine): Weird Machine spec — self-replicating FAMM/DNA engine
Turing-complete machine built on AVM + FAMM + DNA co-evolution stack:
- 5-layer architecture (AVM → FAMM → DNA → Quine → Co-evolution)
- Self-replication protocol: Introspect → EncodeSelf → Replicate → Verify
- Quine structure: [bootstrap][compressed_DNA][checksum]
- Gödel boundary handling (graceful degradation via QUARANTINE/HOLD)
- Determinism guarantees (Q16.16, fixed seeds, no float)
- SilverSight Receipt per replication cycle (with generation counter)

Gold standard: machine outputs binary that, when executed,
produces functionally identical machine with same self-description.

Refs: SilverSightCore.lean (AVM), FAMM.lean (delay memory),
dna_codec.py (encoding), GODEL_BOUNDARY (boundary handling),
FAMM_BAKER_ANALOGUE.md (progress guarantee)
2026-06-23 01:05:57 -05:00

276 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SilverSight Weird Machine — Self-Replicating FAMM/DNA Engine
## The Goal
Build a Turing-complete machine on top of the FAMM/DAG/DNA co-evolution stack that:
1. Executes arbitrary computations via the AVM ISA
2. Stores state in FAMM delay-line memory
3. I/O through Hachimoji DNA encoding
4. **Self-replicates**: outputs its own description as a binary quine
## Architecture: 5 Layers
```
LAYER 1: AVM CORE (Turing-complete executor)
├── Instruction set: Classify, LookupLib, Merge, Reflect, Verify, Halt
├── Stack: HachimojiState (8 values)
├── Arithmetic: Q16.16 fixed-point
└── Transition: δ : S × I → S'
LAYER 2: FAMM MEMORY (delay-line storage)
├── Cells: {data, delay, delayMass, delayWeight} in Q16.16
├── Access modes: read, write, adjustDelay
├── Frustration: competing delay constraints encode curvature
└── Scars: persistent memory of constraint violations
LAYER 3: DNA I/O (8-symbol information substrate)
├── Alphabet: A B C G P S T Z ↔ Φ Λ Ρ Κ Ω Σ Π Ζ
├── Encoding: arbitrary data → DNA sequences
├── Monotonicity: lexicographic sort = information ordering
└── Error handling: Gödel boundary → QUARANTINE/HOLD
LAYER 4: SELF-REPLICATION (quine engine)
├── Self-description: machine reads its own state
├── DNA encoding: state → DNA sequence (self-description)
├── DNA decoding: DNA sequence → state (reconstruction)
└── Boot: execute DNA to reconstruct original machine
LAYER 5: CO-EVOLUTION (the learning loop)
├── DAG: chunked execution with checkpoints
├── FSDU: scar computation from partial results
├── Coordinate transform: Fisher eigenstructure rotation
└── Baker guarantee: |Λ_t| ≥ ε(X_t) OR Ω(X_t) > 0
```
## The Weird Machine ISA
Beyond the base AVM, the weird machine adds self-referential instructions:
```
Base AVM: Weird extensions:
Classify expr Introspect -- read own state
LookupLib name EncodeSelf -- output self as DNA
Merge s1 s2 Replicate -- construct copy from DNA
Reflect fuel Mutate -- introduce controlled variation
Verify receipt Heal -- repair from scar field
Halt Boot -- cold start from DNA seed
```
### Key: Introspect
```
Introspect: S → S × DNA
Reads the current machine state (all FAMM cells, all DAG nodes,
scar field, current instruction pointer) and encodes it as a
DNA sequence. This IS the self-description — the machine
reading its own memory.
Deterministic: same state → same DNA (required for replication)
Uses: dna_codec.py encode functions with fixed seed
```
### Key: EncodeSelf
```
EncodeSelf: S × DNA → Binary
Takes the self-description DNA and the machine's operational
code (the AVM implementation) and produces a binary that:
1. Contains the DNA sequence (compressed/encoded)
2. Contains the bootstrap code (minimal AVM)
3. When executed: decodes DNA, reconstructs state, resumes execution
This is the quine — the machine outputting a copy of itself.
```
### Key: Replicate
```
Replicate: DNA → S'
Takes a DNA sequence (from EncodeSelf output) and reconstructs
the machine state. This is the inverse of Introspect:
1. Decode DNA to state description
2. Allocate FAMM bank
3. Populate cells from description
4. Reconstruct DAG from checkpoint chain
5. Resume execution from saved instruction pointer
The result is a functionally identical machine (possibly with
different physical memory addresses but same logical state).
```
## Self-Replication Protocol
```
Phase 1: INTROSPECT (read self)
machine.state → Introspect → DNA_self
(deterministic encoding of full state)
Phase 2: ENCODE (produce binary)
DNA_self + bootstrap_code → EncodeSelf → binary_file
(quine: binary contains both data and code to reconstruct)
Phase 3: VERIFY (Baker-analogue check)
|Λ_self| ≥ ε(state) OR Ω(state) > 0
If scar: record in FAMM, continue (graceful degradation)
If rigidity: proceed to replication
Phase 4: OUTPUT (write binary)
binary_file → disk/network
Receipt: {
receiptID: sha256(binary_file),
expression: "self-replication cycle",
finalState: Σ, -- symmetric (copy = original)
ticCount: state_size,
fuelUsed: encode_cost + verify_cost,
pathCost: None,
libraryRefs: ["AVM", "FAMM", "DNA", "QuineLib", "RRCLib"],
verified: True,
generation: n + 1
}
Phase 5: BOOT (cold start from binary)
binary_file → execute → Replicate → machine'
machine' is functionally identical to machine
Phase 6: VERIFY IDENTITY
machine'.Introspect == DNA_self (identity check)
If identical: replication successful
If different: mutation detected (could be intentional or error)
```
## The Quine Structure
```
binary = [bootstrap][compressed_DNA_self][checksum]
bootstrap:
- minimal AVM (enough to run Replicate)
- FAMM allocator
- DNA decoder
- 8KB of code
compressed_DNA_self:
- Lempel-Ziv or arithmetic coding of DNA sequence
- Contains: all FAMM cells, DAG nodes, scar field, IP
- Size: ~O(state complexity), typically 10-100KB
checksum:
- SHA-256 of [bootstrap][compressed_DNA_self]
- Verified on boot (integrity check)
```
## Gödel Boundary Handling
Self-replication hits the Gödel boundary when:
1. **Introspect on self**: reading own state while modifying it
- Solution: atomic snapshot (copy state before encoding)
2. **Quine paradox**: "this machine outputs a copy of itself"
- Is the copy identical? (yes, by deterministic encoding)
- Is the copy the same machine? (functionally yes, physically no)
- Gödel: can't prove complete identity from within
- Solution: external verifier (Receipt comparison)
3. **Infinite regress**: replicate → replicate → replicate...
- Solution: generation counter in Receipt
- Each generation gets a unique receiptID chain
4. **Mutation**: deliberate or accidental variation
- Mutation can be:
a) Error (scar recorded, heal attempted)
b) Intentional (controlled mutate instruction)
c) Environmental (different hardware → different timing)
- Solution: checksum + identity verify on boot
## Turing Completeness Proof Sketch
The weird machine is Turing complete because:
1. **AVM has conditional control flow**: Merge instruction + Halt
2. **AVM has unbounded memory**: FAMM bank can grow (append cells)
3. **AVM has arbitrary data**: Q16.16 values encode any rational
4. **Can simulate a universal TM**:
- Tape → FAMM cells (each cell = one tape position)
- Head → instruction pointer
- State → HachimojiState on stack
- Transition → δ (AVM transition function)
The additional instructions (Introspect, EncodeSelf, Replicate, Mutate, Heal, Boot) don't break Turing completeness — they're syntactic sugar over the base AVM.
## Determinism Guarantee
Critical for replication: same state → same DNA → same binary → same replica.
Sources of non-determinism and how we eliminate:
| Source | Fix |
|--------|-----|
| Memory addresses | Don't encode addresses — encode logical structure |
| Timing | Don't encode timing — encode state snapshot |
| Randomness | Fixed seeds only (seed in state) |
| FPU rounding | Q16.16 fixed-point (no float) |
| Hash ordering | Sort all hash-iterable structures before encode |
| OS differences | Pure computation (no OS calls in core) |
## SilverSight Receipt (Per Replication Cycle)
```json
{
"receiptID": "sha256(binary_output)",
"expression": "self-replication cycle gen_n",
"finalState": "Σ",
"ticCount": state_size_cells,
"fuelUsed": encode_cost + verify_cost + io_cost,
"pathCost": null,
"libraryRefs": ["AVM", "FAMM", "DNA", "QuineLib", "RRCLib"],
"verified": true,
"generation": n,
"parentID": "receipt_of_gen_{n-1}",
"scarHash": "sha256(scar_field_snapshot)",
"identityCheck": "machine.Introspect == replica.Introspect"
}
```
## The Gold Standard
The machine achieves self-replication when:
```
∀ machine: machine.output_binary() → execute → machine'
where machine'.Introspect() == machine.Introspect()
AND: receipt.verified == True
AND: receipt.identityCheck == True
AND: receipt.generation > 0
```
This is a **true quine at the system level**: the machine outputs a binary that, when executed, produces a functionally identical machine with the same self-description.
## Implementation Priority
| Component | Status | File |
|-----------|--------|------|
| AVM core | EXISTS | SilverSightCore.lean |
| FAMM memory | EXISTS | FAMM.lean (Research-Stack) |
| DNA codec | EXISTS | dna_codec.py |
| Introspect | NEW | quine.py (needs write) |
| EncodeSelf | NEW | quine.py |
| Replicate | NEW | quine.py |
| Mutate | NEW | quine.py |
| Heal | NEW | quine.py |
| Boot | NEW | quine.py |
| Integration | NEW | weird_machine.py |
## The Next Step
Write `quine.py` — the self-replication engine. This is the bridge between:
- `dna_codec.py` (encoding)
- `finsler_metric.py` / `qaoa_circuit.py` (computation)
- `SilverSightCore.lean` (formal spec)
- The FAMM memory model (Research-Stack)
It implements Introspect → EncodeSelf → Replicate → Verify as a Python module that plugs into the existing SilverSight library architecture.