> *"Gestalt hacking exploits perceptual grouping—proximity, similarity, closure—in the color stream."*
/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.
"Gestalt hacking exploits perceptual grouping—proximity, similarity, closure—in the color stream."
Gestalt = the whole pattern, the emergent structure that is more than the sum of parts. Gestalt hacking exploits how perception groups elements into wholes.
play ⊗ evaluate ⅋ play ⊗ evaluate → ι (fixed point)
The involution ι is where generator ≡ observer (reafference).
| Position | Skill | Trit | Role |
|---|---|---|---|
| Left | pun-decomposition | -1 | Multiple parse validation |
| Self | gestalt-hacking | 0 | Perceptual grouping transport |
| Right | reflow | 0 | Cross-context translation |
pun-decomposition (-1) ⊗ gestalt-hacking (0) ⊗ gay-mcp (+1) = 0 ✓ [Core]
three-match (-1) ⊗ gestalt-hacking (0) ⊗ agent-o-rama (+1) = 0 ✓ [Attack]
shadow-goblin (-1) ⊗ gestalt-hacking (0) ⊗ gay-mcp (+1) = 0 ✓ [Defense]
auditory-gestalt (-1) ⊗ gestalt-hacking (0) ⊗ rubato-composer (+1) = 0 ✓ [Music]
| Principle | Attack | Defense |
|---|---|---|
| Proximity | Cluster same colors in time | 2-Poisson injection |
| Similarity | Long runs of same color | Transition counting |
| Closure | Incomplete patterns that induce completion | Gap detection |
| Continuity | Gradual transitions exploiting smoothness | Gradient detection |
| FigureGround | Dominant color overwhelms minority | Ratio analysis |
OpenGame ∆ c a b x s y r
play :: a → ∆ x s y r -- generate candidates
evaluate :: a → c x s y r → b -- score & select
-- This IS the self-involution:
-- play ∘ evaluate ∘ play ∘ evaluate → fixed point
A ⊗ (B ⅋ C) = (A ⊗ B) ⅋ C ∩ (A ⊗ C) ⅋ B
where:
⊗ = tensor (both resources consumed together)
⅋ = par (choice between resources)
∩ = gestalt constraint (intersection of valid decompositions)
T₁ ────► T₂ ────► T₃ ────► ... ────┐
▲ │
└───────────── Tₙ ◄────────────────┘
CyclicalAnnealing(frequency=2π/n)
Closure phases sum to 0 on the n-torus
mutable struct GestaltLoop
game::OpenGame
torus::NTorus
reaf::Reafference
temperature::Float64
generation::Int
function gestalt_step!(g::GestaltLoop)
g.generation += 1
# Phase velocity from temperature
velocity = g.temperature .* randn(g.torus.n)
phases = step!(g.torus, velocity)
# Play: generate from current state
state = g.game.play(g.generation)
# Modulate by phases
modulated_x = state.x * cos(phases[1])
# Temperature decay
g.temperature *= 0.92
# Evaluate: does this state pass?
score = modulated_x + 0.5 * sin(phases[2])
result = g.game.evaluate(state.s, (x=state.x, s=state.s, y=state.y, r=score))
# Reafference check
generated = generate(g.reaf)
is_self = reafferent_match(g.reaf, generated)
(result, is_self)
end
end
reafference: I observe what I generate
reaberrance: I generate what I observe
seed → color → observe → predict → match? → seed
└──────────────── loopy strange ──────────────┘
When match? = true, we have self ≡ self (fixed point).
struct GestaltAwareVerifier {
verifier: ChromaticVerifier,
defender: GestaltDefender,
attacks_detected: u64,
attacks_mitigated: u64,
}
impl GestaltAwareVerifier {
fn verify_defended(&mut self, incoming_color: ZXColor) -> Option<ChromaticTruth> {
let (score, attack) = self.defender.detect_attack();
if attack.is_some() {
self.attacks_detected += 1;
let defended = self.defender.defend(incoming_color);
if defended != incoming_color {
self.attacks_mitigated += 1;
}
}
self.verifier.verify_membership(...)
}
}
| τ | State | Gestalt |
|---|---|---|
| τ > τ* | Frustrated | Vortices proliferate, no coherent gestalt |
| τ ≈ τ* | Critical | BKT transition, gestalt formation |
| τ < τ* | Smooth | Defects bound, stable gestalt |
At τ* ≈ 0.5 (BKT critical), gestalts form and dissolve dynamically.
just gestalt-loop 100 # Run 100 gestalt iterations
just gestalt-attack closure # Test closure attack
just gestalt-defend # Activate 2-Poisson defense
just gestalt-verify # Check attack stats