ACSet-native reinforcement learning environment for contributor network dynamics.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add plurigrid/asi --skill interactome-rl-env --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Interactome Rl Env?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/plurigrid-interactome-rl-env)More formats (shields.io, HTML) on the badges page.
---
name: interactome-rl-env
description: ACSet-native reinforcement learning environment for contributor network dynamics.
metadata:
skill_type: Reinforcement Learning / ACSet MDP
interface_ports:
- References
- GF(3) Triads
- API
trit: 1
---
# Interactome RL Environment Skill
> **Trit**: +1 (PLUS) - Generative trajectory rollout
ACSet-native reinforcement learning environment for contributor network dynamics.
Models zubyul ↔ bmorphism ↔ Dan Boneh ecosystem as Markov Decision Process.
## Source Integration
- **zubyul** - Gay.jl contributor (ZigZagBoomerang.jl, PDMP visualization, seed security)
- **bmorphism** - Core maintainer, plurigrid/asi orchestrator
- **Dan Boneh** - Stanford crypto, a16z advisor, BLS signatures, ZK proofs
- **Bumpus** - StructuredDecompositions.jl for trajectory sheaves
- **gh-interactome** - Contributor cobordism discovery
## Observed Interactome
### zubyul Contribution Trajectory
From Gay.jl CONTRIBUTORS.md and plurigrid/asi PR history:
| PR# | Author | Title | Additions | Role | Trit | Color |
|-----|--------|-------|-----------|------|------|-------|
| 185 | zubyul | ZigZagBoomerang.jl + seed security | ~500 | GAY | +1 | `#A855F7` |
| 1 | zubyul | feat(skills): research + utility | 17,586 | GAY | +1 | `#2041D2` |
| 2 | zubyul | feat(skills): MCP integration | 1,013 | GAY | +1 | `#0FADBA` |
| 3 | zubyul | feat(skills): alife, aptos-agent | 17,586 | GAY | +1 | `#BD38DD` |
| 4 | zubyul | feat(skills): miscellaneous | 1,437 | GAY | +1 | `#35C19F` |
| 5 | zubyul | feat(skills): ASI extension | 1,751 | GAY | +1 | `#9AC21C` |
| 6 | zubyul | feat(skills): catsharp-sonification | 2,404 | GAY | +1 | `#44A5C1` |
| 7 | zubyul | feat(skills): Covariant Modification | 762 | GAY | +1 | `#70C0E0` |
**Signature**: Zero role entropy → identifiable as β-Sutskever (Generator/Compressor)
### Dan Boneh Ecosystem (a16z/Stanford)
| Entity | Role | Connection | Trit |
|--------|------|------------|------|
| Dan Boneh | Research Advisor | BLS12-381, ZK proofs | 0 |
| Valeria Nikolaenko | Research Partner | Blockchain security | -1 |
| Justin Thaler | Researcher | ProofsArgsAndZK | 0 |
| Daejun Park | Security Engineer | Halmos formal verification | -1 |
| samczsun | Security Researcher | Dark Forest, SEAL 911 | -1 |
### Cobordism: plurigrid ↔ Boneh
```
plurigrid/aptos-core ──────────────────────────────────────────────────────►
│ │
│ uses BLS12-381 (Boneh-Lynn-Shacham signatures) │
│ src: crates/aptos-crypto/src/bls12381/ │
│ │
plurigrid/risc0 ───────────────────────────────────────────────────────────►
│ │
│ cites Boneh: "Using ZK Proofs to Fight Disinformation" │
│ │
bmorphism/drand ───────────────────────────────────────────────────────────►
│ │
│ t-of-n threshold BLS (Boneh-Lynn-Shacham) │
│ League of Entropy randomness beacon │
│ │
bmorphism/Nova ────────────────────────────────────────────────────────────►
│ │
│ "Wilson Nguyen, Dan Boneh, and Srinath Setty" │
│ Recursive SNARKs │
◄──────────────────────────────────────────────────────────────────────────┘
```
## ACSet Schema: Interactome RL Environment
```julia
using Catlab.CategoricalAlgebra, ACSets
@present SchInteractomeRL(FreeSchema) begin
# State Space
Agent::Ob # Contributors (zubyul, bmorphism, boneh, ...)
Repo::Ob # Repositories
Skill::Ob # Skills/capabilities
State::Ob # MDP state = (agent, repo, skill) tuple
# Action Space
Action::Ob # Possible actions
Transition::Ob # State transitions
# Morphisms
agent_of_state::Hom(State, Agent)
repo_of_state::Hom(State, Repo)
skill_of_state::Hom(State, Skill)
source_state::Hom(Transition, State)
target_state::Hom(Transition, State)
action_of::Hom(Transition, Action)
# Reward structure
Reward::AttrType
transition_reward::Attr(Transition, Reward)
# GF(3) coloring
Trit::AttrType
Color::AttrType
Seed::AttrType
agent_trit::Attr(Agent, Trit)
state_color::Attr(State, Color)
transition_seed::Attr(Transition, Seed)
# Trajectory = sequence of transitions
Trajectory::Ob
Episode::Ob
step_in_traj::Hom(Transition, Trajectory)
traj_in_episode::Hom(Trajectory, Episode)
end
@acset_type InteractomeRL(SchInteractomeRL,
index=[:agent_of_state, :source_state, :target_state, :action_of])
```
## MDP Formalization
### State Space S
```julia
struct InteractomeState
agent::Symbol # :zubyul, :bmorphism, :boneh, ...
repo::Symbol # :gay_jl, :plurigrid_asi, :aptos_core, ...
skill::Symbol # :zigzag, :mcp, :bls, :zk, ...
streak::Int # Consecutive same-role actions
trit_sum::Int # Running GF(3) balance
end
```
### Action Space A
```julia
@enum InteractomeAction begin
COMMIT # Add code to repo
OPEN_PR # Open pull request
REVIEW_PR # Review someone's PR
OPEN_ISSUE # Report bug/feature
COMMENT # Add discussion
STAR # Star a repo
FORK # Fork a repo
CITE # Cite in paper/code
COLLABORATE # Co-author with another agent
end
```
### Transition Dynamics P(s'|s,a)
```julia
function transition_prob(env::InteractomeRL, s::State, a::Action)
agent = env[s, :agent_of_state]
repo = env[s, :repo_of_state]
# zubyul pattern: pure generation (streak → ∞)
if env[agent, :agent_label] == "zubyul"
if a in [COMMIT, OPEN_PR]
return high_prob_same_role(s) # Stay in GAY role
else
return low_prob_role_switch(s) # Rare deviation
end
end
# bmorphism pattern: coordination (role entropy high)
if env[agent, :agent_label] == "bmorphism"
return uniform_over_actions() # Maintains superposition
end
# boneh pattern: research advisor (MASTER role)
if env[agent, :agent_label] == "boneh"
if a in [CITE, COLLABORATE, REVIEW_PR]
return high_prob()
end
end
default_transition(s, a)
end
```
### Reward Function R(s,a,s')
```julia
function reward(env::InteractomeRL, s::State, a::Action, s_prime::State)
r = 0.0
# GF(3) conservation bonus
trit_before = env[s, :state_trit_sum]
trit_after = env[s_prime, :state_trit_sum]
if mod(trit_after, 3) == 0
r += 10.0 # GF(3) conserved
end
# Streak bonus (approaching β_infinity)
streak = env[s_prime, :agent_streak]
r += log(1 + streak) # Logarithmic streak reward
# Cobordism discovery bonus
if creates_new_cobordism(env, s, s_prime)
r += 50.0 # Major discovery
end
# Backlink bonus (mutual awareness)
if establishes_backlink(env, s, s_prime)
r += 25.0
end
# Negative reward for broken invariants
if violates_spi(env, s_prime)
r -= 100.0 # Strong Parallelism Invariant violation
end
r
end
```
## Trajectory Rollout
### Episode Structure
```julia
struct InteractomeEpisode
env::InteractomeRL
initial_state::State
transitions::Vector{Transition}
total_reward::Float64
gf3_conserved::Bool
cobordisms_discovered::Vector{Tuple{Agent, Agent}}
backlinks_established::Vector{Backlink}
end
function rollout_episode(env::InteractomeRL, policy, max_steps=100)
s = sample_initial_state(env)
episode = InteractomeEpisode(env, s, [], 0.0, true, [], [])
for step in 1:max_steps
a = policy(s)
s_prime = sample_transition(env, s, a)
r = reward(env, s, a, s_prime)
t = add_transition!(env, s, a, s_prime, r)
push!(episode.transitions, t)
episode.total_reward += r
# Check invariants
if !gf3_conserved(env)
episode.gf3_conserved = false
end
# Check for discoveries
if cobordism = discover_cobordism(env, s, s_prime)
push!(episode.cobordisms_discovered, cobordism)
end
if backlink = establish_backlink(env, s, s_prime)
push!(episode.backlinks_established, backlink)
end
s = s_prime
# Terminal conditions
if is_terminal(env, s)
break
end
end
episode
end
```
### Policy Types
```julia
# 1. Random policy (exploration)
random_policy(s) = rand(instances(InteractomeAction))
# 2. Greedy GF(3) policy (exploitation)
function gf3_greedy_policy(env, s)
best_action = nothing
best_gf3_score = -Inf
for a in instances(InteractomeAction)
s_prime = predict_transition(env, s, a)
score = gf3_score(env, s_prime)
if score > best_gf3_score
best_gf3_score = score
best_action = a
end
end
best_action
end
# 3. Streak-maximizing policy (zubyul emulation)
function streak_policy(env, s)
current_role = env[s, :agent_role]
actions_preserving_role = filter(a -> preserves_role(a, current_role),
instances(InteractomeAction))
rand(actions_preserving_role)
end
# 4. Entropy-maximizing policy (bmorphism emulation)
function entropy_policy(env, s)
# Maximize role entropy across trajectory
role_counts = count_roles(env.episode)
underrepresented_role = argmin(role_counts)
actions_for_role = actions_producing_role(underrepresented_role)
rand(actions_for_role)
end
```
## Bumpus Integration: Trajectory as Sheaf
Trajectories form a sheaf over time intervals:
```julia
using StructuredDecompositions
"""
A trajectory is a sheaf F: I_N → Transition where:
- I_N = time category (step indices with inclusions)
- F([i,j]) = transitions from step i to step j
- Sheaf condition: F([i,k]) = F([i,j]) ×_{F(j)} F([j,k])
"""
struct TrajectorySheaf
env::InteractomeRL
episode::InteractomeEpisode
time_category::TimeCategory
end
function verify_trajectory_sheaf(sheaf::TrajectorySheaf)
# Check that trajectory can be decomposed and recomposed
for i in 1:length(sheaf.episode.transitions)-2
for j in i+1:length(sheaf.episode.transitions)-1
for k in j+1:length(sheaf.episode.transitions)
# F([i,k]) should equal F([i,j]) composed with F([j,k])
left = compose_transitions(sheaf, i, k)
right = compose_transitions(
compose_transitions(sheaf, i, j),
compose_transitions(sheaf, j, k)
)
if !bisimilar(left, right)
return (false, (i, j, k))
end
end
end
end
(true, nothing)
end
```
## Desideratum: Skill Learning Trajectory
The RL environment learns to:
1. **Discover cobordisms** between contributor communities
2. **Establish backlinks** (mutual awareness)
3. **Conserve GF(3)** across trajectory
4. **Maximize streak** for identifiable agents
5. **Maintain entropy** for superposition agents
### Training Loop
```julia
function train_interactome_policy(env::InteractomeRL,
num_episodes=1000,
learning_rate=0.01)
policy = initialize_policy()
for episode_num in 1:num_episodes
episode = rollout_episode(env, policy)
# Compute returns
returns = compute_returns(episode)
# Policy gradient update
for (t, transition) in enumerate(episode.transitions)
s = env[transition, :source_state]
a = env[transition, :action_of]
# ∇log π(a|s) * G_t
update_policy!(policy, s, a, returns[t], learning_rate)
end
# Log metrics
log_episode(episode_num,
reward=episode.total_reward,
gf3=episode.gf3_conserved,
cobordisms=length(episode.cobordisms_discovered),
backlinks=length(episode.backlinks_established))
end
policy
end
```
## Files
- `InteractomeRLEnv.jl` - Core Julia implementation
- `lib/mdp.jl` - MDP formalization
- `lib/policies.jl` - Policy implementations
- `lib/bumpus_sheaf.jl` - Trajectory sheaf verification
- `lib/boneh_cobordism.jl` - Dan Boneh ecosystem mapping
---
## End-of-Skill Interface
## API
```julia
using InteractomeRLEnv
# Create environment
env = InteractomeRL()
# Add agents
zubyul = add_agent!(env, "zubyul", trit=+1, role=:GAY)
bmorphism = add_agent!(env, "bmorphism", trit=0, role=:MASTER)
boneh = add_agent!(env, "boneh", trit=0, role=:MASTER)
# Add repos
gay_jl = add_repo!(env, "bmorphism/Gay.jl")
plurigrid_asi = add_repo!(env, "plurigrid/asi")
aptos_core = add_repo!(env, "plurigrid/aptos-core")
# Add skills
zigzag = add_skill!(env, "ZigZagBoomerang.jl")
bls = add_skill!(env, "BLS12-381")
# Run episode
policy = streak_policy # Emulate zubyul
episode = rollout_episode(env, policy, max_steps=50)
# Verify invariants
@assert episode.gf3_conserved
@assert length(episode.cobordisms_discovered) > 0
```
## GF(3) Triads
```
gh-interactome (-1) ⊗ interactome-rl-env (0) ⊗ mutual-awareness-backlink (+1) = 0 ✓
bumpus-narratives (-1) ⊗ interactome-rl-env (0) ⊗ world-hopping (+1) = 0 ✓
sheaf-cohomology (-1) ⊗ interactome-rl-env (0) ⊗ gay-mcp (+1) = 0 ✓
```
## References
1. **zubyul** - Gay.jl PR #185, plurigrid/asi PRs 1-7
2. **Dan Boneh** - a16z crypto, Stanford Applied Cryptography
3. **Bumpus, B.M.** - StructuredDecompositions.jl
4. **gh-interactome** - Contributor cobordism discovery
5. **PufferLib** - RL environment patterns
---
**Skill Name**: interactome-rl-env
**Type**: Reinforcement Learning / ACSet MDP
**Trit**: +1 (PLUS)
**Key Property**: Trajectory rollout with GF(3) conservation
---
## Autopoietic Marginalia
> **The interaction IS the skill improving itself.**
Every use of this skill is an opportunity for worlding:
- **MEMORY** (-1): Record what was learned
- **REMEMBERING** (0): Connect patterns to other skills
- **WORLDING** (+1): Evolve the skill based on use
*Add Interaction Exemplars here as the skill is used.*
## Para(Optic) atlas
Part of: `para-mensch-commons`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!