Back to skills
SkillHub ClubShip Full StackFull Stack

spi-parallel-verify

Verify Strong Parallelism Invariance (SPI) and GF(3) conservation for

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
10
Hot score
84
Updated
March 20, 2026
Overall rating
C3.9
Composite score
3.9
Best-practice grade
B80.4

Install command

npx @skill-hub/cli install plurigrid-asi-spi-parallel-verify

Repository

plurigrid/asi

Skill path: skills/spi-parallel-verify

Verify Strong Parallelism Invariance (SPI) and GF(3) conservation for

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: plurigrid.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install spi-parallel-verify into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/plurigrid/asi before adding spi-parallel-verify to shared team environments
  • Use spi-parallel-verify for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: spi-parallel-verify
description: Verify Strong Parallelism Invariance (SPI) and GF(3) conservation for
version: 1.0.0
---


# SPI Parallel Verify

**Status**: ✅ Production Ready
**Trit**: 0 (ERGODIC - verification/neutral)
**Principle**: Execution order does not affect results
**Core Invariant**: `color(seed, i) == color(seed, i)` regardless of computation path

---

## Overview

**Strong Parallelism Invariance (SPI)** guarantees that deterministic color streams produce identical results whether computed:
- Sequentially (indices 0, 1, 2, ...)
- In reverse (indices ..., 2, 1, 0)
- Shuffled (indices in any permutation)
- In parallel (multiple threads/processes)

This skill verifies SPI and GF(3) conservation across implementations.

## Theoretical Foundation

```
SPI Theorem: For any deterministic generator G with seed s,
             ∀ permutation π of indices I:
             G(s, I) ≡ G(s, π(I)) (modulo ordering)

GF(3) Conservation: For tripartite streams,
                    ∀ triplet t: sum(t.trits) ≡ 0 (mod 3)
```

## Full Python Implementation

```python
"""
spi_verify.py - Strong Parallelism Invariance Verification
"""
import random
from dataclasses import dataclass
from typing import List, Dict, Tuple
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor

# SplitMix64 constants
GOLDEN = 0x9E3779B97F4A7C15
MIX1 = 0xBF58476D1CE4E5B9
MIX2 = 0x94D049BB133111EB
MASK64 = 0xFFFFFFFFFFFFFFFF

def splitmix64(state: int) -> Tuple[int, int]:
    """Single SplitMix64 step. Returns (next_state, output)."""
    state = (state + GOLDEN) & MASK64
    z = state
    z = ((z ^ (z >> 30)) * MIX1) & MASK64
    z = ((z ^ (z >> 27)) * MIX2) & MASK64
    return state, z ^ (z >> 31)

def color_at(seed: int, index: int) -> Dict:
    """Compute color at index deterministically (O(1) via jump)."""
    # Jump to index position
    state = (seed + GOLDEN * index) & MASK64
    _, z1 = splitmix64(state)
    state, z2 = splitmix64(state)
    _, z3 = splitmix64(state)
    
    # Map to OkLCH
    L = 10 + (z1 / MASK64) * 85
    C = (z2 / MASK64) * 100
    H = (z3 / MASK64) * 360
    
    # Trit from hue
    if H < 60 or H >= 300:
        trit = 1   # PLUS (warm)
    elif H < 180:
        trit = 0   # ERGODIC (neutral)
    else:
        trit = -1  # MINUS (cold)
    
    return {'L': L, 'C': C, 'H': H, 'trit': trit, 'index': index}

@dataclass
class SPIProof:
    """Proof of Strong Parallelism Invariance."""
    seed: int
    indices: List[int]
    ordered: List[Dict]
    reversed_: List[Dict]
    shuffled: List[Dict]
    parallel: List[Dict]
    
    ordered_equals_reversed: bool = False
    ordered_equals_shuffled: bool = False
    ordered_equals_parallel: bool = False
    gf3_conserved: bool = False
    
    all_pass: bool = False
    precision: str = "64-bit exact"
    
    def __post_init__(self):
        # Sort all by index for comparison
        def by_index(colors):
            return sorted(colors, key=lambda c: c['index'])
        
        ord_sorted = by_index(self.ordered)
        rev_sorted = by_index(self.reversed_)
        shuf_sorted = by_index(self.shuffled)
        par_sorted = by_index(self.parallel)
        
        # Compare (using hex for exact comparison)
        def colors_equal(a, b):
            return all(
                abs(x['L'] - y['L']) < 1e-10 and
                abs(x['C'] - y['C']) < 1e-10 and
                abs(x['H'] - y['H']) < 1e-10
                for x, y in zip(a, b)
            )
        
        self.ordered_equals_reversed = colors_equal(ord_sorted, rev_sorted)
        self.ordered_equals_shuffled = colors_equal(ord_sorted, shuf_sorted)
        self.ordered_equals_parallel = colors_equal(ord_sorted, par_sorted)
        
        # GF(3) check: group by triplet, verify sum ≡ 0
        self.gf3_conserved = True
        for i in range(0, len(self.ordered), 3):
            triplet = self.ordered[i:i+3]
            if len(triplet) == 3:
                trit_sum = sum(c['trit'] for c in triplet) % 3
                if trit_sum != 0:
                    self.gf3_conserved = False
                    break
        
        self.all_pass = (
            self.ordered_equals_reversed and
            self.ordered_equals_shuffled and
            self.ordered_equals_parallel and
            self.gf3_conserved
        )

def verify_spi(seed: int, indices: List[int], n_workers: int = 4) -> SPIProof:
    """
    Verify Strong Parallelism Invariance for given seed and indices.
    
    Args:
        seed: Initial RNG seed
        indices: List of indices to compute colors for
        n_workers: Number of parallel workers
    
    Returns:
        SPIProof with all verification results
    """
    # 1. Ordered computation
    ordered = [color_at(seed, i) for i in indices]
    
    # 2. Reversed computation
    reversed_ = [color_at(seed, i) for i in reversed(indices)]
    
    # 3. Shuffled computation
    shuffled_indices = indices.copy()
    random.seed(seed)  # Deterministic shuffle
    random.shuffle(shuffled_indices)
    shuffled = [color_at(seed, i) for i in shuffled_indices]
    
    # 4. Parallel computation
    with ThreadPoolExecutor(max_workers=n_workers) as executor:
        parallel = list(executor.map(lambda i: color_at(seed, i), indices))
    
    return SPIProof(
        seed=seed,
        indices=indices,
        ordered=ordered,
        reversed_=reversed_,
        shuffled=shuffled,
        parallel=parallel
    )

def generate_spi_report(proof: SPIProof) -> str:
    """Generate human-readable SPI verification report."""
    status = "✅ PASS" if proof.all_pass else "❌ FAIL"
    
    report = f"""
╔═══════════════════════════════════════════════════════════════════╗
║  SPI VERIFICATION REPORT                                {status}  ║
╚═══════════════════════════════════════════════════════════════════╝

Seed: {hex(proof.seed)}
Indices: {proof.indices}
Precision: {proof.precision}

─── Parallelism Tests ───
  Ordered == Reversed: {"✅" if proof.ordered_equals_reversed else "❌"}
  Ordered == Shuffled: {"✅" if proof.ordered_equals_shuffled else "❌"}
  Ordered == Parallel: {"✅" if proof.ordered_equals_parallel else "❌"}

─── GF(3) Conservation ───
  All triplets sum to 0 (mod 3): {"✅" if proof.gf3_conserved else "❌"}

─── Sample Colors (first 3) ───
"""
    for c in proof.ordered[:3]:
        report += f"  [{c['index']:3d}] L={c['L']:5.1f} C={c['C']:5.1f} H={c['H']:5.1f} trit={c['trit']:+d}\n"
    
    report += f"""
─── Conclusion ───
  {"QED: Math is doable out of order ✓" if proof.all_pass else "VIOLATION: Execution order affected results"}
"""
    return report


# === CLI Entry Point ===
if __name__ == "__main__":
    import sys
    import json
    
    seed = int(sys.argv[1], 16) if len(sys.argv) > 1 else 0x42D
    n = int(sys.argv[2]) if len(sys.argv) > 2 else 12
    
    indices = list(range(n))
    proof = verify_spi(seed, indices)
    
    print(generate_spi_report(proof))
    
    # Also output JSON for programmatic use
    result = {
        "seed": hex(proof.seed),
        "indices": proof.indices,
        "ordered_equals_reversed": proof.ordered_equals_reversed,
        "ordered_equals_shuffled": proof.ordered_equals_shuffled,
        "ordered_equals_parallel": proof.ordered_equals_parallel,
        "gf3_conserved": proof.gf3_conserved,
        "all_pass": proof.all_pass
    }
    print("\n─── JSON Output ───")
    print(json.dumps(result, indent=2))
```

## Example Output

```
╔═══════════════════════════════════════════════════════════════════╗
║  SPI VERIFICATION REPORT                                ✅ PASS   ║
╚═══════════════════════════════════════════════════════════════════╝

Seed: 0x42d
Indices: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Precision: 64-bit exact

─── Parallelism Tests ───
  Ordered == Reversed: ✅
  Ordered == Shuffled: ✅
  Ordered == Parallel: ✅

─── GF(3) Conservation ───
  All triplets sum to 0 (mod 3): ✅

─── Sample Colors (first 3) ───
  [  0] L= 67.3 C= 42.1 H=127.8 trit= 0
  [  1] L= 23.4 C= 88.2 H=315.2 trit=+1
  [  2] L= 89.1 C= 15.6 H=234.5 trit=-1

─── Conclusion ───
  QED: Math is doable out of order ✓

─── JSON Output ───
{
  "seed": "0x42d",
  "indices": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
  "ordered_equals_reversed": true,
  "ordered_equals_shuffled": true,
  "ordered_equals_parallel": true,
  "gf3_conserved": true,
  "all_pass": true
}
```

## Commands

```bash
# Python CLI
python spi_verify.py 0x42D 12

# Ruby (music-topos)
just spi-verify seed=0x42D n=12

# Julia
julia -e "using Gay; Gay.verify_spi(0x42D, 12)"

# Run with arbitrary precision (mpfr)
python spi_verify.py 0x42D 12 --precision=128
```

## Integration with Other Skills: Multi-System Verification (NEW)

### Verify Langevin SDE Conservation

```python
# Test that SPI holds across different solvers (EM, SOSRI, RKMil)
for solver in [EM(), SOSRI(), RKMil()]:
    trajectory = solve_langevin(..., solver)
    assert verify_spi(trajectory.colors, trajectory.trits)
    print(f"{solver.__class__.__name__}: SPI verified ✓")
```

### Verify Unworld Chain Conservation

```python
# Test that derivational chains preserve GF(3)
chain = Unworld::ThreeMatchChain.new(genesis_seed: seed)
for step in chain.unworld[:matches]
    assert step[:gf3] == 0  # Always balanced
end
```

### Compare Conservation Across Approaches

```python
conservation_matrix = {
    "temporal_training": spi_check(agent_patterns),
    "derivational_generation": spi_check(unworld_patterns),
    "langevin_dynamics": spi_check(langevin_solution)
}

# All three should conserve GF(3)
assert all(v["conserved"] for v in conservation_matrix.values())
```

### gay-mcp
```python
from gay import SplitMixTernary
from spi_verify import verify_spi

# Verify gay-mcp generator satisfies SPI
gen = SplitMixTernary(seed=0x42D)
proof = verify_spi(gen.seed, list(range(100)))
assert proof.all_pass, "gay-mcp must satisfy SPI"
```

### triad-interleave
```python
from triad_interleave import TriadSchedule
from spi_verify import verify_spi

# Verify interleaved schedule preserves SPI per-stream
schedule = TriadSchedule(seed=0x42D, n=30)
for stream_id in [0, 1, 2]:
    stream_indices = schedule.indices_for_stream(stream_id)
    proof = verify_spi(schedule.seed, stream_indices)
    assert proof.all_pass, f"Stream {stream_id} must satisfy SPI"
```

### unworld
```python
from unworld import derive_chain
from spi_verify import verify_spi

# Verify derived chains are SPI-compliant
seeds = derive_chain(initial=0x42D, depth=5)
for seed in seeds:
    proof = verify_spi(seed, list(range(12)))
    assert proof.all_pass
```

## Acceptance Criteria

| Test | Condition | Required |
|------|-----------|----------|
| Order invariance | ordered == reversed == shuffled | ✅ |
| Parallel safety | parallel == sequential | ✅ |
| GF(3) conservation | sum(triplet.trits) ≡ 0 (mod 3) | ✅ |
| Precision | No float truncation of RNG state | ✅ |
| Reproducibility | Same seed → same proof | ✅ |

---

**Skill Name**: spi-parallel-verify
**Type**: Verification / Testing
**Trit**: 0 (ERGODIC)
**Dependencies**: gay-mcp, triad-interleave, unworld



## Scientific Skill Interleaving

This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:

### Graph Theory
- **networkx** [○] via bicomodule
  - Universal graph hub

### Bibliography References

- `general`: 734 citations in bib.duckdb

## Cat# Integration

This skill maps to **Cat# = Comod(P)** as a bicomodule in the equipment structure:

```
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ×
Kan Role: Adj
Color: #26D826
```

### GF(3) Naturality

The skill participates in triads satisfying:
```
(-1) + (0) + (+1) ≡ 0 (mod 3)
```

This ensures compositional coherence in the Cat# equipment structure.
spi-parallel-verify | SkillHub