← all patterns

Diagnostic / platform operational

Semantic Drag

add resistance when movement would break meaning

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

"Semantic Drag" — add resistance when movement would break meaning. It has a viscosity layer (damp motion / calm a region), a link layer (ropes / cloth between neighbours), a tether layer (bind matter to an anchor), and a cohesion layer (flocking — pull toward neighbours). The active render stack is links, field-lines, trails, particles.

A derived friction recipe, not a natural field: dragging an object away from meaningful neighbors thickens viscosity while tether (spring) and links resist, and moving toward a valid relationship lets resistance fall away. The user can always override.

Runtime tokens
viscosity damp motion / calm a regionlink ropes / cloth between neighbourstether bind matter to an anchorcohesion flocking — pull toward neighbours
Concepts
drag spring
Metrics
drag a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inertvalidity a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inertrelation-strength a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inertfriction a semantic lane — drive it with data-field-<metric> (or a domain model); without that its --field-<metric> stays inert drag, validity, relation-strength, friction are host-supplied lanes — drive them with data-field-<metric> (or a domain model); without that, their --field-* stays inert.
Diagnostics
force-vectors topology prediction
Conditions
related
Render
links · field-lines · trails · particles
Reduced motion
valid/invalid guides with relation warnings and a drop-cost marker
Without motion
valid drop targets are listed; invalid moves show a warning and a labelled cost before commit

Copy this pattern

<field-root></field-root>
  <div data-body="viscosity" data-strength="0.9" data-range="300" data-feedback></div>
  <div data-body="link" data-strength="0.7" data-range="320"></div>
  <div data-body="tether" data-strength="0.6" data-range="280"></div>
  <div data-body="cohesion" data-strength="0.5" data-range="260"></div>

See also