GF(3) Triadic Task Routing for Subagent Orchestration
/plugin marketplace add plurigrid/asi/plugin install plurigrid-asi-skills@plurigrid/asiThis skill inherits all available tools. When active, it can use any tool Claude has access to.
GF(3) Triadic Task Routing for Subagent Orchestration
Version: 1.0.0
Trit: 0 (Ergodic - coordinates routing)
Bundle: core
Skill-dispatch routes tasks to appropriate skills based on GF(3) triadic conservation. Each task is assigned to a triad of skills (MINUS/ERGODIC/PLUS) that sum to 0 mod 3, ensuring balanced execution.
Task → Infer Bundle → Select Triad → Dispatch to Subagents
Each triad: (-1) ⊗ (0) ⊗ (+1) = 0 mod 3
SKILLS = {
# MINUS (-1): Validators
'sheaf-cohomology' => { trit: -1, bundle: :cohomological, action: :verify },
'three-match' => { trit: -1, bundle: :core, action: :reduce },
'clj-kondo-3color' => { trit: -1, bundle: :database, action: :lint },
'influence-propagation' => { trit: -1, bundle: :network, action: :validate },
# ERGODIC (0): Coordinators
'unworld' => { trit: 0, bundle: :core, action: :derive },
'acsets' => { trit: 0, bundle: :database, action: :query },
'cognitive-surrogate' => { trit: 0, bundle: :learning, action: :predict },
'entropy-sequencer' => { trit: 0, bundle: :core, action: :arrange },
# PLUS (+1): Generators
'gay-mcp' => { trit: 1, bundle: :core, action: :color },
'agent-o-rama' => { trit: 1, bundle: :learning, action: :train },
'atproto-ingest' => { trit: 1, bundle: :acquisition, action: :fetch },
'triad-interleave' => { trit: 1, bundle: :core, action: :interleave }
}
TRIADS = {
core: %w[three-match unworld gay-mcp],
database: %w[clj-kondo-3color acsets rama-gay-clojure],
learning: %w[self-validation-loop cognitive-surrogate agent-o-rama],
network: %w[influence-propagation bisimulation-game atproto-ingest],
repl: %w[slime-lisp borkdude cider-clojure]
}
Route a task to the appropriate triad.
from skill_dispatch import Dispatcher
dispatcher = Dispatcher(seed=0xf061ebbc2ca74d78)
assignment = dispatcher.dispatch(
task="analyze interaction patterns",
bundle="learning" # optional, inferred if not provided
)
# Returns:
# {
# task: "analyze interaction patterns",
# bundle: "learning",
# triad: ["self-validation-loop", "cognitive-surrogate", "agent-o-rama"],
# assignments: [
# {skill: "self-validation-loop", trit: -1, role: "validator"},
# {skill: "cognitive-surrogate", trit: 0, role: "coordinator"},
# {skill: "agent-o-rama", trit: 1, role: "generator"}
# ],
# gf3_sum: 0,
# conserved: true
# }
Execute a full triad pipeline: MINUS → ERGODIC → PLUS.
result = dispatcher.execute_triad(
bundle="core",
input_data=raw_interactions,
executor=lambda skill, data, info: skill.run(data)
)
# Pipeline: three-match → unworld → gay-mcp
# Each step's output feeds into the next
Compose skills across different bundles while maintaining GF(3).
hybrid = dispatcher.cross_compose(
minus_bundle="database", # clj-kondo-3color
ergodic_bundle="learning", # cognitive-surrogate
plus_bundle="core" # gay-mcp
)
# Still conserves: (-1) + (0) + (+1) = 0
Automatically determine bundle from task description.
bundle = dispatcher.infer_bundle("lint the clojure code")
# Returns: "database" (matches kondo pattern)
bundle = dispatcher.infer_bundle("train a predictor")
# Returns: "learning"
ROLES = {
-1: {
"name": "validator",
"color": "#2626D8", # Blue
"verbs": ["verify", "constrain", "reduce", "filter", "lint"]
},
0: {
"name": "coordinator",
"color": "#26D826", # Green
"verbs": ["transport", "derive", "navigate", "bridge", "arrange"]
},
1: {
"name": "generator",
"color": "#D82626", # Red
"verbs": ["create", "compose", "generate", "expand", "train"]
}
}
CREATE TABLE dispatch_log (
dispatch_id VARCHAR PRIMARY KEY,
task VARCHAR,
bundle VARCHAR,
triad VARCHAR[],
gf3_sum INT,
conserved BOOLEAN,
seed BIGINT,
dispatched_at TIMESTAMP
);
-- Verify all dispatches conserve GF(3)
SELECT COUNT(*) as violations
FROM dispatch_log
WHERE NOT conserved;
-- Should always be 0
# skill-dispatch.yaml
dispatcher:
seed: 0xf061ebbc2ca74d78
default_bundle: core
strict_conservation: true
bundles:
core: [three-match, unworld, gay-mcp]
learning: [self-validation-loop, cognitive-surrogate, agent-o-rama]
network: [influence-propagation, bisimulation-game, atproto-ingest]
inference:
patterns:
- pattern: "lint|kondo|clojure"
bundle: database
- pattern: "train|learn|predict"
bundle: learning
- pattern: "network|influence|propagat"
bundle: network
# Dispatch a task
dispatch task="analyze" bundle="core":
ruby lib/skill_dispatch.rb dispatch "{{task}}" "{{bundle}}"
# Execute full triad
execute-triad bundle="learning" input="data.json":
ruby lib/skill_dispatch.rb execute "{{bundle}}" "{{input}}"
# Verify all triads conserve GF(3)
verify-triads:
ruby lib/skill_dispatch.rb verify
# 1. Dispatch a learning task
just dispatch "train cognitive model" learning
# 2. Execute the triad
just execute-triad learning interactions.json
# 3. Verify conservation
just verify-triads
# Output:
# core: three-match ⊗ unworld ⊗ gay-mcp = 0 ✓
# learning: self-validation-loop ⊗ cognitive-surrogate ⊗ agent-o-rama = 0 ✓
# network: influence-propagation ⊗ bisimulation-game ⊗ atproto-ingest = 0 ✓
gay-mcp - Provides deterministic seedingtriad-interleave - Interleaves dispatched taskstripartite_dispatcher.rb - Reference implementation