Back to skills
SkillHub ClubShip Full StackFull Stack
triad-interleave
Imported from https://github.com/plurigrid/asi.
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 19, 2026
Overall rating
C3.6
Composite score
3.6
Best-practice grade
B77.6
Install command
npx @skill-hub/cli install plurigrid-asi-triad-interleave
Repository
plurigrid/asi
Skill path: skills/triad-interleave
Imported from https://github.com/plurigrid/asi.
Open repositoryBest 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 triad-interleave into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/plurigrid/asi before adding triad-interleave to shared team environments
- Use triad-interleave for development workflows
Works across
Claude CodeCodex CLIGemini CLIOpenCode
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: triad-interleave
description: Interleave three deterministic color streams into balanced schedules
version: 1.0.0
---
# Triad Interleave
**Status**: ✅ Production Ready
**Trit**: +1 (PLUS - generative/constructive)
**Principle**: Three streams → One balanced schedule
**Core Invariant**: GF(3) sum = 0 per triplet, order preserved per stream
---
## Overview
**Triad Interleave** weaves three independent color streams into a single execution schedule that:
1. Maintains GF(3) = 0 conservation per triplet
2. Preserves relative ordering within each stream
3. Enables parallel evaluation with deterministic results
4. Supports multiple scheduling policies
## Visual Diagram
```
Stream 0 (MINUS): ●───●───●───●───●───●───●───●───●
\ \ \ \ \ \ \ \ \
Stream 1 (ERGODIC): ○───○───○───○───○───○───○───○───○
\ \ \ \ \ \ \ \ \
Stream 2 (PLUS): ◆───◆───◆───◆───◆───◆───◆───◆───◆
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
Interleaved Schedule: ●─○─◆─●─○─◆─●─○─◆─●─○─◆─●─○─◆─●─○─◆
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
GF(3)=0 for each triplet
Round Robin: [0,1,2, 0,1,2, 0,1,2, ...] (stream indices)
GF3 Balanced: [−,0,+, −,0,+, −,0,+, ...] (trit values)
```
## Full Python Implementation
```python
"""
triad_interleave.py - Three-stream interleaving with GF(3) conservation
"""
from dataclasses import dataclass, field
from typing import List, Dict, Literal, Iterator
from enum import IntEnum
import hashlib
# SplitMix64 constants
GOLDEN = 0x9E3779B97F4A7C15
MIX1 = 0xBF58476D1CE4E5B9
MIX2 = 0x94D049BB133111EB
MASK64 = 0xFFFFFFFFFFFFFFFF
class Trit(IntEnum):
MINUS = -1
ERGODIC = 0
PLUS = 1
@dataclass
class ColorEntry:
"""Single color entry in the schedule."""
index: int # Global schedule index
stream_id: int # 0, 1, or 2
stream_index: int # Index within stream
triplet_id: int # Which triplet this belongs to
trit: int # -1, 0, or +1
L: float
C: float
H: float
hex: str
@dataclass
class TriadSchedule:
"""Interleaved schedule of three color streams."""
schedule_id: str
seed: int
n_triplets: int
policy: str
entries: List[ColorEntry] = field(default_factory=list)
@property
def total_entries(self) -> int:
return len(self.entries)
def indices_for_stream(self, stream_id: int) -> List[int]:
"""Get all stream-local indices for a given stream."""
return [e.stream_index for e in self.entries if e.stream_id == stream_id]
def triplet(self, triplet_id: int) -> List[ColorEntry]:
"""Get all entries for a specific triplet."""
return [e for e in self.entries if e.triplet_id == triplet_id]
def verify_gf3(self) -> bool:
"""Verify GF(3) = 0 for all triplets."""
for tid in range(self.n_triplets):
triplet = self.triplet(tid)
if len(triplet) == 3:
trit_sum = sum(e.trit for e in triplet)
if trit_sum % 3 != 0:
return False
return True
class TriadInterleaver:
"""
Interleave three deterministic color streams.
Policies:
- round_robin: Stream 0, 1, 2, 0, 1, 2, ...
- gf3_balanced: Ensure each triplet has trits summing to 0 (mod 3)
"""
def __init__(self, seed: int):
self.seed = seed
self.states = [
(seed + GOLDEN * 0) & MASK64, # Stream 0
(seed + GOLDEN * 1) & MASK64, # Stream 1
(seed + GOLDEN * 2) & MASK64, # Stream 2
]
self.stream_indices = [0, 0, 0]
def _splitmix(self, state: int) -> tuple:
"""Generate next state and 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_from_state(self, state: int) -> tuple:
"""Generate L, C, H, trit from state."""
s1, z1 = self._splitmix(state)
s2, z2 = self._splitmix(s1)
_, z3 = self._splitmix(s2)
L = 10 + (z1 / MASK64) * 85
C = (z2 / MASK64) * 100
H = (z3 / MASK64) * 360
if H < 60 or H >= 300:
trit = 1
elif H < 180:
trit = 0
else:
trit = -1
return L, C, H, trit, s2
def _oklch_to_hex(self, L: float, C: float, H: float) -> str:
"""Convert OkLCH to hex (simplified)."""
import math
a = C/100 * math.cos(math.radians(H))
b = C/100 * math.sin(math.radians(H))
l_ = L/100 + 0.3963377774 * a + 0.2158037573 * b
m_ = L/100 - 0.1055613458 * a - 0.0638541728 * b
s_ = L/100 - 0.0894841775 * a - 1.2914855480 * b
l, m, s = max(0, l_)**3, max(0, m_)**3, max(0, s_)**3
r = max(0, min(1, +4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s))
g = max(0, min(1, -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s))
b = max(0, min(1, -0.0041960863 * l - 0.7034186147 * m + 1.7076147010 * s))
return f"#{int(r*255):02X}{int(g*255):02X}{int(b*255):02X}"
def next_from_stream(self, stream_id: int) -> ColorEntry:
"""Get next color from specified stream."""
L, C, H, trit, new_state = self._color_from_state(self.states[stream_id])
self.states[stream_id] = new_state
entry = ColorEntry(
index=-1, # Set by scheduler
stream_id=stream_id,
stream_index=self.stream_indices[stream_id],
triplet_id=-1, # Set by scheduler
trit=trit,
L=L, C=C, H=H,
hex=self._oklch_to_hex(L, C, H)
)
self.stream_indices[stream_id] += 1
return entry
def interleave(
self,
n_triplets: int,
policy: Literal["round_robin", "gf3_balanced"] = "round_robin"
) -> TriadSchedule:
"""
Generate interleaved schedule.
Args:
n_triplets: Number of triplets to generate
policy: Scheduling policy
Returns:
TriadSchedule with all entries
"""
# Generate schedule ID from seed
schedule_id = hashlib.sha256(
f"{self.seed}:{n_triplets}:{policy}".encode()
).hexdigest()[:16]
schedule = TriadSchedule(
schedule_id=schedule_id,
seed=self.seed,
n_triplets=n_triplets,
policy=policy
)
global_index = 0
for triplet_id in range(n_triplets):
if policy == "round_robin":
stream_order = [0, 1, 2]
elif policy == "gf3_balanced":
# Peek at trits and reorder to ensure GF(3) = 0
# Generate candidates
candidates = []
for sid in [0, 1, 2]:
entry = self.next_from_stream(sid)
candidates.append(entry)
# Sort by trit to balance: [-1, 0, +1]
candidates.sort(key=lambda e: e.trit)
# Assign to schedule
for entry in candidates:
entry.index = global_index
entry.triplet_id = triplet_id
schedule.entries.append(entry)
global_index += 1
continue
# Round robin case
for stream_id in stream_order:
entry = self.next_from_stream(stream_id)
entry.index = global_index
entry.triplet_id = triplet_id
schedule.entries.append(entry)
global_index += 1
return schedule
def generate_schedule_report(schedule: TriadSchedule) -> str:
"""Generate visual report of the schedule."""
gf3_ok = schedule.verify_gf3()
report = f"""
╔═══════════════════════════════════════════════════════════════════╗
║ TRIAD INTERLEAVE SCHEDULE ║
╚═══════════════════════════════════════════════════════════════════╝
Schedule ID: {schedule.schedule_id}
Seed: {hex(schedule.seed)}
Triplets: {schedule.n_triplets}
Policy: {schedule.policy}
GF(3) Conserved: {"✅" if gf3_ok else "❌"}
─── Stream Visualization ───
"""
# Build stream lines
stream_chars = {0: "●", 1: "○", 2: "◆"}
trit_chars = {-1: "−", 0: "0", 1: "+"}
for stream_id in [0, 1, 2]:
stream_entries = [e for e in schedule.entries if e.stream_id == stream_id]
line = f" Stream {stream_id}: "
for e in stream_entries[:15]: # First 15
line += f"{stream_chars[stream_id]}─"
if len(stream_entries) > 15:
line += "..."
report += line + "\n"
report += "\n─── Interleaved (first 12 entries) ───\n"
for e in schedule.entries[:12]:
report += f" [{e.index:3d}] S{e.stream_id} T{e.triplet_id} "
report += f"trit={e.trit:+d} {e.hex} L={e.L:5.1f} C={e.C:5.1f} H={e.H:5.1f}\n"
report += "\n─── Triplet Verification ───\n"
for tid in range(min(4, schedule.n_triplets)):
triplet = schedule.triplet(tid)
trits = [e.trit for e in triplet]
trit_sum = sum(trits)
status = "✅" if trit_sum % 3 == 0 else "❌"
report += f" Triplet {tid}: trits={trits} sum={trit_sum} {status}\n"
return report
# === Integration with Unworld Seed Chaining ===
def chain_seed_from_schedule(schedule: TriadSchedule) -> int:
"""
Derive next seed from schedule using trit accumulation.
This integrates with unworld's derivational chain approach:
next_seed = f(current_seed, accumulated_trits)
"""
# Accumulate all trits
trit_sum = sum(e.trit for e in schedule.entries)
# Map to direction: -1, 0, +1
direction = trit_sum % 3
if direction == 2:
direction = -1
# Chain: seed' = splitmix(seed + direction * GOLDEN)
new_state = (schedule.seed + direction * GOLDEN) & MASK64
_, next_seed = TriadInterleaver(0)._splitmix(new_state)
return next_seed
# === 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 5
policy = sys.argv[3] if len(sys.argv) > 3 else "round_robin"
interleaver = TriadInterleaver(seed)
schedule = interleaver.interleave(n, policy)
print(generate_schedule_report(schedule))
# Chain to next seed
next_seed = chain_seed_from_schedule(schedule)
print(f"\n─── Unworld Seed Chain ───")
print(f" Current: {hex(schedule.seed)}")
print(f" Next: {hex(next_seed)}")
```
## Example Output
```
╔═══════════════════════════════════════════════════════════════════╗
║ TRIAD INTERLEAVE SCHEDULE ║
╚═══════════════════════════════════════════════════════════════════╝
Schedule ID: 8a3f2b1c9d4e7f06
Seed: 0x42d
Triplets: 5
Policy: round_robin
GF(3) Conserved: ✅
─── Stream Visualization ───
Stream 0: ●─●─●─●─●─
Stream 1: ○─○─○─○─○─
Stream 2: ◆─◆─◆─◆─◆─
─── Interleaved (first 12 entries) ───
[ 0] S0 T0 trit=+1 #D8267F L= 67.3 C= 42.1 H= 27.8
[ 1] S1 T0 trit= 0 #2CD826 L= 55.2 C= 78.4 H=127.3
[ 2] S2 T0 trit=-1 #267FD8 L= 48.9 C= 61.2 H=234.5
[ 3] S0 T1 trit= 0 #4FD826 L= 72.1 C= 33.8 H= 95.2
[ 4] S1 T1 trit=-1 #2638D8 L= 31.4 C= 89.1 H=245.7
[ 5] S2 T1 trit=+1 #D82626 L= 44.7 C= 92.3 H= 12.8
...
─── Triplet Verification ───
Triplet 0: trits=[1, 0, -1] sum=0 ✅
Triplet 1: trits=[0, -1, 1] sum=0 ✅
Triplet 2: trits=[-1, 1, 0] sum=0 ✅
Triplet 3: trits=[1, -1, 0] sum=0 ✅
─── Unworld Seed Chain ───
Current: 0x42d
Next: 0x7b3e9f2a1c8d5604
```
## Commands
```bash
# Python CLI
python triad_interleave.py 0x42D 10 round_robin
python triad_interleave.py 0x42D 10 gf3_balanced
# Ruby (music-topos)
ruby -I lib -r triad_interleave -e "p TriadInterleave.new(0x42D).generate(10)"
# Julia
julia -e "using Gay; Gay.triad_interleave(0x42D, 10)"
```
## Integration with Unworld Seed Chaining
```python
from triad_interleave import TriadInterleaver, chain_seed_from_schedule
def derive_schedule_chain(initial_seed: int, depth: int) -> list:
"""Generate chain of schedules, each derived from previous."""
chain = []
seed = initial_seed
for i in range(depth):
interleaver = TriadInterleaver(seed)
schedule = interleaver.interleave(n_triplets=3, policy="gf3_balanced")
chain.append(schedule)
# Derive next seed from this schedule
seed = chain_seed_from_schedule(schedule)
return chain
# Usage: Temporal succession replaced with derivation
chain = derive_schedule_chain(0x42D, depth=5)
for i, schedule in enumerate(chain):
print(f"Step {i}: seed={hex(schedule.seed)}, triplets={schedule.n_triplets}")
```
## Policies
| Policy | Description | GF(3) Guarantee |
|--------|-------------|-----------------|
| `round_robin` | Fixed order: 0, 1, 2, 0, 1, 2, ... | Statistical |
| `gf3_balanced` | Reorder each triplet for sum=0 | Strict |
## Checks
| Check | Condition | Required |
|-------|-----------|----------|
| Determinism | same seed → same schedule | ✅ |
| Order preservation | per-stream indices ascending | ✅ |
| GF(3) conservation | sum(triplet.trits) ≡ 0 (mod 3) | ✅ |
| Triplet completeness | 3 entries per triplet | ✅ |
---
**Skill Name**: triad-interleave
**Type**: Scheduling / Parallelism
**Trit**: +1 (PLUS)
**Dependencies**: gay-mcp, unworld
**Related**: spi-parallel-verify (for verification)
## 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.