GF(3) Triadic Task Routing for Subagent Orchestration
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 implementationSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer