← all patterns

Strong operational

Permission Boundary

make access, scope, and protected regions legible

Running the actual pattern live via applyPattern() — switch the substrate, stack overlays, watch the signals, or reverse the dynamics. Not a mock.

"Permission Boundary" — make access, scope, and protected regions legible. It has a wall layer (bounce matter off a boundary), a sink layer (capture matter (accretion well)), a charge layer (attract/repel charged matter), and a link layer (ropes / cloth between neighbours). The active render stack is voronoi, links, field-lines, particles.

Protected regions hold like walls: authorized actors pass cleanly while unauthorized or risky ones meet resistance and are absorbed (sink) at the boundary. The strong bind confines scope; charge gives each actor its polarity.

Runtime tokens
wall bounce matter off a boundarysink capture matter (accretion well)charge attract/repel charged matterlink ropes / cloth between neighbours
Concepts
reflect absorb
Metrics
permission a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inertscope a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inertrisk written only when the host supplies it — the engine never invents confidence/riskboundary a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inert permission, scope, boundary are host-supplied lanes — drive them with data-field-<metric> (or a domain model); without that, their --field-* stays inert.
Diagnostics
contours force-vectors inspector
Render
voronoi · links · field-lines · particles
Reduced motion
access labels with protected-region outlines and a permission summary
Without motion
each region is an outlined zone with an access label and a per-actor allow/deny list

Copy this pattern

<field-root></field-root>
  <div data-body="wall" data-strength="1.1" data-range="320" data-feedback></div>
  <div data-body="sink" data-strength="0.6" data-range="240"></div>
  <div data-body="charge" data-strength="0.6" data-range="300" data-spin="1"></div>
  <div data-body="link" data-strength="0.5" data-range="280"></div>

See also