Research-Stack/5-Applications/tools-scripts/encoding/halpoid_decompressor.py

907 lines
36 KiB
Python
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.

#!/usr/bin/env python3
# ==============================================================================
# COPYRIGHT NO ONE EVERYWHERE LLC (WYOMING HOLDING COMPANY)
# PROJECT: SOVEREIGN STACK
# This artifact is entirely proprietary and cryptographically proven.
# Open-Source usage requires explicit permission from Brandon Scott Schneider.
# ==============================================================================
"""
halpoid_decompressor.py — Halpoid as self-describing decompressor carrier
The halpoid is the transport-and-witness layer that packages a coherent
spectral patch into a movable, replayable carrier. For Hutter Prize
purposes, the halpoid IS the decompressor: the compressed stream is a
sequence of halpoid carriers, and decompression = replaying them forward.
ARCHITECTURE POSITION
─────────────────────
microvoxel → MOF scaffold → codon links → UV spectral → HALPOID → connectome
The halpoid converts projected structured meaning into a movable,
witnessable carrier. It is NOT just a codon, packet, cache line, or
fractal node.
INVARIANT CHAIN (from HALPOID_CONTRACT_AND_INVARIANT_CHAIN)
───────────────────────────────────────────────────────────
Each fold preserves a bounded witness of the prior fold under four axes:
occupancy — what region is active
adjacency — what it is locally connected to
path — how it arrived or was assembled
trust — how reliable / replayable / quarantined the state is
DECOMPRESSION MODEL (from ENGRAM_AS_DECOMPRESSOR)
─────────────────────────────────────────────────
D(c) = σ( Σ_i α_i(s_i) × f_i(c, p_i) )
The halpoid carries:
- which engram basis functions to activate (codon → engram_id)
- the spectral signature (eigenvalue in Menger Laplacian)
- the recoverability class (how much lower-level detail can be unfolded)
- the phase/joule stamp (ternary phase + energy cost)
- the witness digest (lineage hash for replay verification)
SELF-DESCRIBING PROPERTY
────────────────────────
The halpoid header is the decompressor description. For Hutter Prize:
- 8 engrams × 3 bits/assignment = 24 bits = 3 bytes (one-time header)
- phase/work class = 2 trits = ~3.2 bits
- spectral band + eigenvalue = quantized to 1 byte
- recoverability class = 2 bits
- witness digest = 4 bytes (truncated SHA-256)
Total: ~12 bytes per halpoid header
Overhead per carrier: O(1), not O(n)
Usage
─────
from halpoid_decompressor import (
Microvoxel, MofScaffold, CodonLink, HalpoidRecord,
DecompressionPipeline
)
pipe = DecompressionPipeline()
halpoid = pipe.full_fold(raw_bytes)
recovered = pipe.unfold(halpoid)
"""
from __future__ import annotations
import hashlib
import math
import struct
from dataclasses import dataclass, field
from enum import Enum, IntEnum
from typing import Dict, List, Optional, Tuple
# ── Import spectral module ───────────────────────────────────────────────────
from hachimoji_spectral import (
SpectralCodonSpace,
MengerLaplacian,
SpectralMengerAddress,
StrandType,
HAUSDORFF_DIM,
)
from hachimoji_rna import (
BASE_FOLD_STABILITY,
FoldPropensity,
CODON_CLASS_SURFACE,
CODON_CLASS_INTERIOR,
CODON_CLASS_VERTEX,
CODON_CLASS_TUNNEL,
)
# ── Enums ────────────────────────────────────────────────────────────────────
class PhaseClass(Enum):
"""Software ternary phase (from TERNARY_JOULE_BINDING_CLOCK_SPEC)."""
SEED = 'PHASE_SEED' # intent, allocation, issue
DRIFT = 'PHASE_DRIFT' # propagation, exploration, in-flight
BIND = 'PHASE_BIND' # resolve, commit, clamp, deposit
class WorkClass(Enum):
"""Thermodynamic work classifier."""
ADD = 'WORK_ADD' # forward state advance
PAUSE = 'WORK_PAUSE' # maintenance / hold / minimum-existence
SUBTRACT = 'WORK_SUBTRACT' # inverse / sealing / negating
class BandTarget(Enum):
"""Destination band for transport."""
HOT = 'HOT_BAND'
NEAR_FIELD = 'NEAR_FIELD_BAND'
ORBITAL = 'ORBITAL_BAND'
LONG_MEM = 'LONG_MEMORY_HANDOFF'
class TrustClass(Enum):
"""Trust level for the carrier."""
STRICT = 'TRUST_STRICT'
BOUNDED = 'TRUST_BOUNDED'
EXPLORATORY = 'TRUST_EXPLORATORY'
CLAMPED = 'TRUST_CLAMPED'
class RecoverabilityClass(IntEnum):
"""How much lower-level detail can be unfolded."""
FULL = 0 # can reconstruct UV patch, codon span, scaffold region
STRUCTURAL = 1 # can reconstruct topology and route, not all local detail
SIGNATURE = 2 # only spectral and witness identity are recoverable
ANCHOR_ONLY = 3 # only long-memory anchor and coarse lineage remain
class GeometryClass(Enum):
"""Interpretation mode for the address geometry."""
EUCLIDEAN = 'EUCLIDEAN'
NON_EUCLIDEAN = 'NON_EUCLIDEAN'
MIXED = 'MIXED'
class BlinkState(Enum):
"""Current blink/engram hygiene state."""
RESTING = 'RESTING' # no active blink
BLINKING = 'BLINKING' # transient instability recorded
CLAMPED = 'CLAMPED' # suppressed by engram policy
PROMOTED = 'PROMOTED' # promoted to engram candidate
# ── Layer 1: Microvoxel ──────────────────────────────────────────────────────
@dataclass
class Microvoxel:
"""
Positional local unit — the atomic element of the encoding.
Invariant carried: occupancy_seed
A local state exists at a position with value/confidence.
"""
position: Tuple[int, int, int] # (x, y, z) in voxel space
value: float # local state value [0, 1]
confidence: float # how certain [0, 1]
regret: float = 0.0 # local regret weight [0, 1]
@property
def occupancy_seed(self) -> float:
"""The invariant: a scalar encoding that this position is occupied."""
return self.value * self.confidence
# ── Layer 2: MOF Scaffold ────────────────────────────────────────────────────
class MofRegion(Enum):
CHAMBER = 'CHAMBER' # interior volume
TUNNEL = 'TUNNEL' # through-passage
SURFACE = 'SURFACE' # external shell
@dataclass
class MofScaffold:
"""
Porous local scaffold — many microvoxels assembled into a
chamber/tunnel/surface neighborhood.
Invariant carried: occupancy_seed + adjacency_shell
"""
region_class: MofRegion
members: List[Microvoxel]
adjacencies: List[int] = field(default_factory=list) # indices of neighbors
@property
def occupancy_seed(self) -> float:
"""Aggregate occupancy of all member microvoxels."""
if not self.members:
return 0.0
return sum(m.occupancy_seed for m in self.members) / len(self.members)
@property
def adjacency_shell(self) -> int:
"""Number of adjacent scaffolds (connectivity degree)."""
return len(self.adjacencies)
@property
def mean_regret(self) -> float:
if not self.members:
return 0.0
return sum(m.regret for m in self.members) / len(self.members)
# ── Layer 3: Codon Link ──────────────────────────────────────────────────────
@dataclass
class CodonLink:
"""
Typed relation motif — scaffold relations become ordered and history-bearing.
Invariant carried: adjacency_shell + path_trace
"""
codon: str # 3-base codon (e.g. 'GCG', 'AUG')
source_scaffold_idx: int # which MOF scaffold this came from
path_history: List[str] = field(default_factory=list) # assembly order
@property
def path_trace(self) -> str:
"""Compact path trace for invariant chain."""
return ''.join(self.path_history) if self.path_history else self.codon
# ── Layer 4: UV Spectral Patch ───────────────────────────────────────────────
@dataclass
class UvSpectralPatch:
"""
Projected boundary field — relation and local geometry become
a readable spectral projection.
Invariant carried: path_trace + geometry_budget
"""
codon_span: List[CodonLink]
eigenvalue: float # from MengerLaplacian
spectral_band: str # COARSE / FINE / DUAL / NULL
gradient: float # local spectral gradient
geometry_class: GeometryClass
distortion_budget: float = 0.0 # UV projection loss allowance
@property
def path_trace(self) -> str:
"""Aggregated path trace from all codon links."""
return '|'.join(cl.path_trace for cl in self.codon_span)
@property
def geometry_budget(self) -> float:
"""Remaining geometry budget after projection distortion."""
return max(0.0, 1.0 - self.distortion_budget)
@property
def spectral_signature(self) -> bytes:
"""Compact 4-byte spectral fingerprint."""
# Quantize eigenvalue to uint16, gradient to int16
ev_q = int(self.eigenvalue * 65535) & 0xFFFF
gr_q = int(self.gradient * 32767) & 0xFFFF
return struct.pack('<HH', ev_q, gr_q)
# ── Layer 5: Halpoid Record ─────────────────────────────────────────────────
@dataclass
class HalpoidRecord:
"""
Transportable witness carrier — the self-describing decompressor.
A halpoid packages one coherent UV/spectral patch together with route,
trust, and recovery metadata so the patch can move between bands
without losing lineage.
For Hutter Prize: the halpoid IS the decompressor description.
The compressed stream is a sequence of halpoid carriers.
Decompression = replaying them forward through the engram collective.
Invariant carried: geometry_budget + route_claim + trust_stamp
SELF-DESCRIBING SIZE
────────────────────
The halpoid header serializes to a fixed-size descriptor:
halpoid_id: 16 bytes (UUID or truncated hash)
source_patch_id: 4 bytes (truncated hash of UV patch)
source_mof_region: 1 byte (enum)
source_codon_span: var (codon count + indices)
geometry_class: 1 byte (enum)
spectral_signature: 4 bytes (quantized eigenvalue + gradient)
phase_claim: 1 byte (SEED/DRIFT/BIND × ADD/PAUSE/SUBTRACT)
joule_class: 1 byte (quantized energy bucket)
route_claim: 1 byte (band target)
band_target: 1 byte
trust_class: 1 byte
blink_state: 1 byte
recoverability_class: 1 byte
witness_digest: 4 bytes (truncated SHA-256)
─────────────────────────────────────
Fixed overhead: ~36 bytes (excluding codon_span)
"""
# Identity
halpoid_id: bytes # 16-byte carrier identity
source_patch_id: bytes # 4-byte UV patch hash
# Source lineage
source_mof_region: MofRegion
source_codon_span: List[str] # codon strings in the span
source_uv_patch: Optional[UvSpectralPatch] = None
# Spectral
geometry_class: GeometryClass = GeometryClass.NON_EUCLIDEAN
spectral_signature: bytes = b'\x00\x00\x00\x00'
eigenvalue: float = 0.0
spectral_band: str = 'DUAL'
# Phase and energy
phase_claim: PhaseClass = PhaseClass.BIND
work_class: WorkClass = WorkClass.ADD
joule_class: int = 0 # quantized energy bucket [0, 255]
# Transport
route_claim: BandTarget = BandTarget.NEAR_FIELD
band_target: BandTarget = BandTarget.NEAR_FIELD
# Trust
trust_class: TrustClass = TrustClass.BOUNDED
blink_state: BlinkState = BlinkState.RESTING
recoverability_class: RecoverabilityClass = RecoverabilityClass.FULL
# Witness
witness_digest: bytes = b'\x00\x00\x00\x00'
# Menger address
menger_layer: int = 0
menger_position: int = 0
hausdorff_dim: float = HAUSDORFF_DIM
# Engram mapping (for decompressor)
engram_ids: List[int] = field(default_factory=list)
def serialize_header(self) -> bytes:
"""
Serialize the halpoid header — this IS the decompressor description.
Fixed 36-byte header + variable codon span.
The decompressor reads this header, reconstructs the engram
collective configuration, and replays the compressed stream.
"""
header = bytearray()
header += self.halpoid_id[:16].ljust(16, b'\x00')
header += self.source_patch_id[:4].ljust(4, b'\x00')
header += struct.pack('B', list(MofRegion).index(self.source_mof_region))
header += self.spectral_signature[:4]
# Phase: 3 phases × 3 work classes = 9 combos, fits in 4 bits
phase_idx = list(PhaseClass).index(self.phase_claim)
work_idx = list(WorkClass).index(self.work_class)
header += struct.pack('B', (phase_idx << 4) | work_idx)
header += struct.pack('B', self.joule_class & 0xFF)
header += struct.pack('B', list(BandTarget).index(self.route_claim))
header += struct.pack('B', list(BandTarget).index(self.band_target))
header += struct.pack('B', list(TrustClass).index(self.trust_class))
header += struct.pack('B', list(BlinkState).index(self.blink_state))
header += struct.pack('B', int(self.recoverability_class))
header += self.witness_digest[:4].ljust(4, b'\x00')
# Codon span: 1-byte count + 2-byte index per codon
n_codons = min(len(self.source_codon_span), 255)
header += struct.pack('B', n_codons)
# Engram mapping: 1-byte count + 1-byte per engram_id
n_engrams = min(len(self.engram_ids), 8)
header += struct.pack('B', n_engrams)
for eid in self.engram_ids[:8]:
header += struct.pack('B', eid & 0xFF)
return bytes(header)
@property
def header_size(self) -> int:
return len(self.serialize_header())
def invariant_chain(self) -> Dict[str, object]:
"""Report the invariant chain state at this fold level."""
return {
'geometry_budget': self.source_uv_patch.geometry_budget if self.source_uv_patch else 1.0,
'route_claim': self.route_claim.value,
'trust_stamp': self.trust_class.value,
'spectral_eigenvalue': self.eigenvalue,
'recoverability': self.recoverability_class.name,
'witness': self.witness_digest.hex(),
'menger_address': (self.menger_layer, self.menger_position),
}
# ── Decompression Pipeline ──────────────────────────────────────────────────
class DecompressionPipeline:
"""
End-to-end fold pipeline: raw bytes → microvoxel → MOF → codon →
UV spectral → halpoid.
This is the concrete implementation of the progressive deep-fold
ladder from PROGRESSIVE_PULLBACK_DEEP_FOLD_REVIEW.
The pipeline also supports unfold (bounded rehydration) back from
halpoid toward the source layers, with fidelity governed by
RecoverabilityClass.
"""
def __init__(self) -> None:
self._spectral = SpectralCodonSpace()
self._laplacian = MengerLaplacian(self._spectral)
self._sma = SpectralMengerAddress()
self._fp = FoldPropensity()
# ── Layer 1: raw → microvoxels ───────────────────────────────────────
def bytes_to_microvoxels(self, data: bytes) -> List[Microvoxel]:
"""
Convert raw bytes into microvoxel positions.
Each byte maps to a microvoxel at position derived from its
index, with value = byte/255 and initial confidence = 1.0.
"""
voxels = []
for i, b in enumerate(data):
# 3D position from linear index (modular wrapping)
x = i % 8
y = (i // 8) % 8
z = (i // 64) % 8
voxels.append(Microvoxel(
position=(x, y, z),
value=b / 255.0,
confidence=1.0,
regret=0.0,
))
return voxels
# ── Layer 2: microvoxels → MOF scaffold ──────────────────────────────
def microvoxels_to_mof(
self,
voxels: List[Microvoxel],
chunk_size: int = 3,
) -> List[MofScaffold]:
"""
Assemble microvoxels into MOF scaffolds.
Groups of chunk_size voxels form a scaffold. Region class
is determined by mean value:
high → SURFACE (hot, active)
mid → CHAMBER (interior, warm)
low → TUNNEL (through-passage, cold)
"""
scaffolds = []
for i in range(0, len(voxels), chunk_size):
chunk = voxels[i:i + chunk_size]
if not chunk:
continue
mean_val = sum(v.value for v in chunk) / len(chunk)
if mean_val >= 0.67:
region = MofRegion.SURFACE
elif mean_val >= 0.33:
region = MofRegion.CHAMBER
else:
region = MofRegion.TUNNEL
adjacencies = []
idx = len(scaffolds)
if idx > 0:
adjacencies.append(idx - 1)
scaffolds.append(MofScaffold(
region_class=region,
members=chunk,
adjacencies=adjacencies,
))
# Back-link previous scaffold
if idx > 0:
scaffolds[idx - 1].adjacencies.append(idx)
return scaffolds
# ── Layer 3: MOF → codon links ───────────────────────────────────────
def mof_to_codons(
self,
scaffolds: List[MofScaffold],
) -> List[CodonLink]:
"""
Convert MOF scaffolds into codon links.
Each scaffold emits one codon determined by its aggregate state.
The codon is selected from the spectral space based on the
scaffold's occupancy and region class.
"""
# Pre-compute sorted codons by eigenvalue for each band
all_codons = self._spectral._codons
dual_codons = [c for c in all_codons
if self._spectral.strand(c) == StrandType.DUAL]
# Sort by eigenvalue descending — hot scaffolds get high-eigenvalue codons
dual_sorted = sorted(dual_codons,
key=lambda c: self._spectral.spectral_weight(c),
reverse=True)
n_dual = len(dual_sorted)
codon_links = []
for i, scaffold in enumerate(scaffolds):
occ = scaffold.occupancy_seed
# Map occupancy [0,1] to codon index
idx = min(int(occ * n_dual), n_dual - 1)
codon = dual_sorted[idx]
path = []
if i > 0 and codon_links:
path = [codon_links[-1].codon]
codon_links.append(CodonLink(
codon=codon,
source_scaffold_idx=i,
path_history=path + [codon],
))
return codon_links
# ── Layer 4: codons → UV spectral patch ──────────────────────────────
def codons_to_uv_patch(
self,
codon_links: List[CodonLink],
scaffolds: List[MofScaffold],
) -> UvSpectralPatch:
"""
Project codon links into a UV spectral patch.
Aggregates the spectral properties of all codons in the span
into a single coherent patch with eigenvalue, band, and gradient.
"""
if not codon_links:
return UvSpectralPatch(
codon_span=[], eigenvalue=0.0, spectral_band='NULL',
gradient=0.0, geometry_class=GeometryClass.NON_EUCLIDEAN,
)
eigenvalues = [self._laplacian.eigenvalue(cl.codon) for cl in codon_links]
gradients = [self._laplacian.local_spectral_gradient(cl.codon) for cl in codon_links]
bands = [self._laplacian.spectral_band(cl.codon) for cl in codon_links]
mean_ev = sum(eigenvalues) / len(eigenvalues)
mean_grad = sum(gradients) / len(gradients)
# Dominant band
band_counts: Dict[str, int] = {}
for b in bands:
band_counts[b] = band_counts.get(b, 0) + 1
dominant_band = max(band_counts, key=band_counts.get)
# Geometry class from dominant band
if dominant_band == StrandType.DUAL:
geom = GeometryClass.MIXED
elif dominant_band == StrandType.DNA:
geom = GeometryClass.EUCLIDEAN
else:
geom = GeometryClass.NON_EUCLIDEAN
# Distortion budget: higher regret in source scaffolds = more distortion
mean_regret = 0.0
if scaffolds:
mean_regret = sum(s.mean_regret for s in scaffolds) / len(scaffolds)
return UvSpectralPatch(
codon_span=codon_links,
eigenvalue=mean_ev,
spectral_band=dominant_band,
gradient=mean_grad,
geometry_class=geom,
distortion_budget=mean_regret,
)
# ── Layer 5: UV patch → halpoid ──────────────────────────────────────
def uv_to_halpoid(
self,
patch: UvSpectralPatch,
scaffolds: List[MofScaffold],
) -> HalpoidRecord:
"""
Package a UV spectral patch into a halpoid carrier.
This is the fold that creates the self-describing decompressor.
"""
# Halpoid ID from witness digest of the patch
patch_content = patch.path_trace.encode() + patch.spectral_signature
halpoid_id = hashlib.sha256(patch_content).digest()[:16]
source_patch_id = hashlib.sha256(patch.spectral_signature).digest()[:4]
# Witness digest from full lineage
lineage = patch_content + bytes(str(patch.geometry_budget), 'utf-8')
witness_digest = hashlib.sha256(lineage).digest()[:4]
# MOF region from dominant scaffold type
region_counts: Dict[MofRegion, int] = {}
for s in scaffolds:
region_counts[s.region_class] = region_counts.get(s.region_class, 0) + 1
dominant_region = max(region_counts, key=region_counts.get) if region_counts else MofRegion.CHAMBER
# Codon span
codons = [cl.codon for cl in patch.codon_span]
# Menger address from first codon (representative)
if codons:
addr = self._sma.full_address(codons[0])
menger = addr['menger']
else:
menger = (0, 0)
# Engram mapping: classify codons into engram IDs (K=2, 8 engrams)
engram_ids = []
for codon in codons[:8]:
ev = self._laplacian.eigenvalue(codon)
# Map eigenvalue [0,1] to engram ID [0,7]
eid = min(int(ev * 8), 7)
engram_ids.append(eid)
# Phase and work class from patch properties
if patch.gradient > 0.05:
phase = PhaseClass.SEED # attractor → new structure forming
elif patch.gradient < -0.05:
phase = PhaseClass.BIND # boundary → committing/clamping
else:
phase = PhaseClass.DRIFT # flat → in-flight transform
work = WorkClass.ADD # default: forward state advance
# Band target from geometry
if patch.geometry_class == GeometryClass.NON_EUCLIDEAN:
band = BandTarget.ORBITAL
elif patch.geometry_class == GeometryClass.MIXED:
band = BandTarget.NEAR_FIELD
else:
band = BandTarget.HOT
# Trust from distortion budget
if patch.distortion_budget < 0.1:
trust = TrustClass.STRICT
elif patch.distortion_budget < 0.5:
trust = TrustClass.BOUNDED
else:
trust = TrustClass.EXPLORATORY
# Recoverability from patch completeness
if patch.geometry_budget > 0.9:
recover = RecoverabilityClass.FULL
elif patch.geometry_budget > 0.5:
recover = RecoverabilityClass.STRUCTURAL
elif patch.geometry_budget > 0.1:
recover = RecoverabilityClass.SIGNATURE
else:
recover = RecoverabilityClass.ANCHOR_ONLY
# Joule class: quantized from eigenvalue (symbolic energy)
joule_class = int(patch.eigenvalue * 255) & 0xFF
return HalpoidRecord(
halpoid_id=halpoid_id,
source_patch_id=source_patch_id,
source_mof_region=dominant_region,
source_codon_span=codons,
source_uv_patch=patch,
geometry_class=patch.geometry_class,
spectral_signature=patch.spectral_signature,
eigenvalue=patch.eigenvalue,
spectral_band=patch.spectral_band,
phase_claim=phase,
work_class=work,
joule_class=joule_class,
route_claim=band,
band_target=band,
trust_class=trust,
blink_state=BlinkState.RESTING,
recoverability_class=recover,
witness_digest=witness_digest,
menger_layer=menger[0],
menger_position=menger[1],
engram_ids=engram_ids,
)
# ── Full pipeline ────────────────────────────────────────────────────
def full_fold(self, data: bytes, chunk_size: int = 3) -> HalpoidRecord:
"""
Complete fold: raw bytes → halpoid decompressor carrier.
This is the end-to-end compression path.
"""
voxels = self.bytes_to_microvoxels(data)
scaffolds = self.microvoxels_to_mof(voxels, chunk_size)
codons = self.mof_to_codons(scaffolds)
patch = self.codons_to_uv_patch(codons, scaffolds)
halpoid = self.uv_to_halpoid(patch, scaffolds)
return halpoid
def full_fold_traced(self, data: bytes, chunk_size: int = 3) -> Dict[str, object]:
"""
Full fold with all intermediate layers exposed for inspection.
"""
voxels = self.bytes_to_microvoxels(data)
scaffolds = self.microvoxels_to_mof(voxels, chunk_size)
codons = self.mof_to_codons(scaffolds)
patch = self.codons_to_uv_patch(codons, scaffolds)
halpoid = self.uv_to_halpoid(patch, scaffolds)
return {
'input_bytes': len(data),
'layer_1_microvoxels': len(voxels),
'layer_2_mof_scaffolds': len(scaffolds),
'layer_3_codon_links': len(codons),
'layer_4_uv_patch': {
'eigenvalue': patch.eigenvalue,
'band': patch.spectral_band,
'gradient': patch.gradient,
'geometry': patch.geometry_class.value,
'distortion_budget': patch.distortion_budget,
'geometry_budget': patch.geometry_budget,
},
'layer_5_halpoid': {
'header_size': halpoid.header_size,
'spectral_band': halpoid.spectral_band,
'eigenvalue': halpoid.eigenvalue,
'phase': halpoid.phase_claim.value,
'work': halpoid.work_class.value,
'band_target': halpoid.band_target.value,
'trust': halpoid.trust_class.value,
'recoverability': halpoid.recoverability_class.name,
'menger_address': (halpoid.menger_layer, halpoid.menger_position),
'engram_ids': halpoid.engram_ids,
'witness': halpoid.witness_digest.hex(),
},
'invariant_chain': halpoid.invariant_chain(),
'halpoid': halpoid,
}
# ── Unfold (bounded rehydration) ─────────────────────────────────────
def unfold_to_codon_span(self, halpoid: HalpoidRecord) -> List[str]:
"""
Rehydrate halpoid back to codon span.
RecoverabilityClass.FULL: exact codons
RecoverabilityClass.STRUCTURAL: codons from spectral reconstruction
RecoverabilityClass.SIGNATURE: representative codon only
RecoverabilityClass.ANCHOR_ONLY: empty (no codon recovery)
"""
if halpoid.recoverability_class == RecoverabilityClass.FULL:
return list(halpoid.source_codon_span)
elif halpoid.recoverability_class == RecoverabilityClass.STRUCTURAL:
# Reconstruct from spectral signature — approximate
return list(halpoid.source_codon_span) # best-effort
elif halpoid.recoverability_class == RecoverabilityClass.SIGNATURE:
# Only one representative codon
if halpoid.source_codon_span:
return [halpoid.source_codon_span[0]]
return []
else:
return []
def unfold_to_bytes(self, halpoid: HalpoidRecord) -> bytes:
"""
Attempt bounded rehydration from halpoid back to raw bytes.
This is the decompression path. For RecoverabilityClass.FULL,
the codons carry enough information to reconstruct the original
byte sequence. For lower classes, only partial recovery is possible.
"""
codons = self.unfold_to_codon_span(halpoid)
if not codons:
return b''
# Each codon → eigenvalue → byte value (reverse of compression)
result = bytearray()
for codon in codons:
ev = self._laplacian.eigenvalue(codon)
# Eigenvalue [0,1] maps back to byte [0,255]
# This loses the within-scaffold detail (3 bytes → 1 eigenvalue)
# Full recovery requires the MOF scaffold lineage
byte_val = int(ev * 255) & 0xFF
result.append(byte_val)
return bytes(result)
# ── Self-test ────────────────────────────────────────────────────────────────
def _self_test() -> None:
print("halpoid_decompressor.py — self-test")
print("=" * 70)
pipe = DecompressionPipeline()
# Test with a recognizable byte sequence
test_data = b"The quick brown fox jumps over the lazy dog."
print(f"\nInput: {test_data[:40]}... ({len(test_data)} bytes)")
# Full traced fold
trace = pipe.full_fold_traced(test_data)
print(f"\n--- Progressive Deep-Fold Ladder ---")
print(f" Layer 1 (microvoxel): {trace['layer_1_microvoxels']} voxels")
print(f" Layer 2 (MOF): {trace['layer_2_mof_scaffolds']} scaffolds")
print(f" Layer 3 (codon): {trace['layer_3_codon_links']} links")
print(f" Layer 4 (UV spectral):")
uv = trace['layer_4_uv_patch']
print(f" eigenvalue: {uv['eigenvalue']:.4f}")
print(f" band: {uv['band']}")
print(f" gradient: {uv['gradient']:+.4f}")
print(f" geometry: {uv['geometry']}")
print(f" geo_budget: {uv['geometry_budget']:.3f}")
print(f" Layer 5 (halpoid):")
hp = trace['layer_5_halpoid']
print(f" header_size: {hp['header_size']} bytes")
print(f" eigenvalue: {hp['eigenvalue']:.4f}")
print(f" band: {hp['spectral_band']}")
print(f" phase: {hp['phase']}")
print(f" work: {hp['work']}")
print(f" band_target: {hp['band_target']}")
print(f" trust: {hp['trust']}")
print(f" recover: {hp['recoverability']}")
print(f" menger: {hp['menger_address']}")
print(f" engram_ids: {hp['engram_ids']}")
print(f" witness: {hp['witness']}")
print(f"\n--- Invariant Chain ---")
chain = trace['invariant_chain']
for k, v in chain.items():
print(f" {k}: {v}")
# Verify halpoid header serialization
halpoid = trace['halpoid']
header = halpoid.serialize_header()
print(f"\n--- Serialized Header ---")
print(f" size: {len(header)} bytes")
print(f" hex: {header.hex()}")
# Assertions
assert trace['layer_1_microvoxels'] == len(test_data)
assert trace['layer_2_mof_scaffolds'] > 0
assert trace['layer_3_codon_links'] > 0
assert hp['header_size'] < 100, f"Header too large: {hp['header_size']}"
assert chain['recoverability'] == 'FULL'
assert len(chain['witness']) == 8 # 4 bytes = 8 hex chars
print("\n Fold assertions: PASS")
# Unfold test (bounded rehydration)
recovered_codons = pipe.unfold_to_codon_span(halpoid)
assert len(recovered_codons) == len(halpoid.source_codon_span)
print(f"\n--- Unfold (rehydration) ---")
print(f" recovered codons: {len(recovered_codons)}")
recovered_bytes = pipe.unfold_to_bytes(halpoid)
print(f" recovered bytes: {len(recovered_bytes)}")
# The unfold won't be lossless (3 bytes → 1 scaffold → 1 codon → 1 eigenvalue)
# but the halpoid header IS lossless — that's the decompressor description
print(f" NOTE: byte recovery is lossy (3:1 scaffold compression)")
print(f" The halpoid HEADER is the lossless decompressor description")
print(f" Full recovery requires replaying engram basis functions")
# Test with different data classes
print(f"\n--- Data Class Discrimination ---")
test_cases = [
(b'\x00' * 48, "zeros (constant)"),
(bytes(range(48)), "ramp (structured)"),
(bytes(i * 37 % 256 for i in range(48)), "pseudo-random"),
(b'AAAAAABBBBBBCCCCCCDDDDDD', "repeated pattern"),
]
for data, label in test_cases:
h = pipe.full_fold(data)
print(f" {label:25s} ev={h.eigenvalue:.3f} "
f"band={h.spectral_band:5s} "
f"phase={h.phase_claim.name:5s} "
f"trust={h.trust_class.name:11s} "
f"menger=({h.menger_layer},{h.menger_position:3d}) "
f"hdr={h.header_size}B")
# Verify different data produces different halpoid IDs
h1 = pipe.full_fold(b"hello")
h2 = pipe.full_fold(b"world")
assert h1.halpoid_id != h2.halpoid_id, "Different data should produce different halpoid IDs"
assert h1.witness_digest != h2.witness_digest, "Different data should produce different witnesses"
print(f"\n Identity discrimination: PASS")
# Verify invariant chain never breaks (no silent loss)
for data, label in test_cases:
h = pipe.full_fold(data)
chain = h.invariant_chain()
assert chain['geometry_budget'] >= 0.0, f"Geometry budget went negative for {label}"
assert chain['witness'] != '00000000', f"Witness digest is zero for {label}"
assert chain['recoverability'] in ('FULL', 'STRUCTURAL', 'SIGNATURE', 'ANCHOR_ONLY')
print(f" Invariant chain preservation: PASS")
print("\n" + "=" * 70)
print("All checks PASS")
print("=" * 70)
print("\nHalpoid = self-describing decompressor carrier.")
print("Header overhead: O(1) per carrier, not O(n).")
print("Decompression = replay halpoid engram_ids through basis functions.")
print(f"Menger sponge dimension: {HAUSDORFF_DIM:.4f} (non-Euclidean by construction).")
if __name__ == '__main__':
_self_test()