Planar Isotopy Screen Mapping
/plugin marketplace add plurigrid/asi/plugin install asi-skills@asi-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Maps thread states and observations to screen positions using planar isotopy principles.
0 (ERGODIC) - Coordinate between spatial regions
Transform abstract thread relationships into concrete screen positions while preserving topological invariants:
┌─────────────────┬─────────────────┬─────────────────┐
│ │ │ │
│ MINUS │ ERGODIC │ PLUS │
│ (left) │ (center) │ (right) │
│ │ │ │
│ Cold hues │ Neutral hues │ Warm hues │
│ 180-300° │ 60-180° │ 0-60°,300-360° │
│ │ │ │
│ Validator │ Coordinator │ Generator │
│ │ │ │
└─────────────────┴─────────────────┴─────────────────┘
(defn seed->screen-position [seed trit screen-width screen-height]
"Map seed deterministically to (x, y) within trit's region.
Uses SplitMix64 decomposition:
- High bits → x offset
- Low bits → y offset"
(let [region (trit->region trit screen-width)
[rand1 seed'] (splitmix64 seed)
[rand2 _] (splitmix64 seed')
x (+ (:x region) (* (:width region) (/ rand1 MASK64)))
y (* screen-height (/ rand2 MASK64))]
{:x x :y y :region trit}))
When thread A observes thread B, draw a line between their screen positions:
(defn observation-line [observer observed]
{:from (seed->screen-position (:seed observer) (:trit observer))
:to (seed->screen-position (:seed observed) (:trit observed))
:gf3-sum (mod (+ (:trit observer) (:trit observed)) 3)})
from mutual_thread_observation import MutualThreadObservationSystem
system = MutualThreadObservationSystem()
# ... register threads ...
# Get screen positions
for tid, state in system.thread_states.items():
pos = seed_to_screen_position(state.seed, state.trit)
print(f"{tid}: ({pos['x']:.0f}, {pos['y']:.0f}) in {pos['region_label']}")
Use with macos-use MCP for actual screen interaction:
# Get element at thread's screen position
bb -e '(require \'[mutual-thread-demo :as mtd])
(let [pos (mtd/seed->screen-position seed trit)]
(println (:x pos) (:y pos)))'
Then use mcp__macos-use__macos-use_click_and_traverse at those coordinates.
mutual-thread-observation - Core observation systemgay-mcp - Deterministic color from seedacsets-algebraic-databases - Schema modelingbisimulation-game - Observational equivalence