Sharpee
Chord / Standard Library / Manipulation / pushing, pulling, touching

pushing, pulling, touching

push (pushing) covers the verbs push, press, shove, move, plus the directional form move X <direction> (ADR-230 D4 ruling: move is manipulation, never movement, so the direction rides into the pushing action, not going). Needs the pushable trait; pushing anything else gets fixed_in_place (scenery) or pushing_does_nothing. The trait's pushType picks the behavior. A button is the one genuinely stateful push: if the entity is also switchable, pushing toggles it (button_clicks when it is a button, switch_toggled otherwise), and a non-switchable button just clicks (button_pushed). A heavy entity needs a direction to budge (pushed_with_effort) and refuses without one (wont_budge). A moveable entity slides when pushed with a direction (pushed_direction, or reveals_passage when the trait says it hides something) and gets nudged without one (pushed_nudged). Outside the button toggle, stdlib narrates movement but relocates nothing: the story reacts to pushed (it carries the direction) or an after pushing it clause to actually change the world; which wall opens is puzzle logic, not platform logic. One honest gap: from a .story file, bare pushable composes the default button configuration, and selecting heavy or moveable is TypeScript territory today.

pull (pulling) covers the verbs pull, drag, yank, tug. Needs pullable. A successful pull sets the trait's state to pulled (a second pull refuses already_pulled) and bumps its pullCount; a worn item refuses worn. Everything a pull means (the lever opens the sluice) is story logic reacting to pulled or written as an on pulling it / after pulling it clause.

touch (touching) covers the verbs touch, feel, rub, pat, stroke, poke, prod. No trait needed, no state changed; the reply is inferred from what the thing is: a lit light source feels_hot, a running device feels_warm (or device_vibrating), wearables feels_soft, doors feels_smooth, containers and supporters feels_hard (a container with drink in it sloshes, liquid_container), drinkables feels_wet, scenery immovable_object. Otherwise the verb itself answers (poked, patted, stroked, touched_gently, touched).

The author writes:

create the Signal Box
  a room

  A cramped cabin of levers and brass above the junction.

create the signal lever
  aka lever
  pullable
  scenery
  in the Signal Box

  A tall iron lever, worn bright at the grip.

  after pulling it
    phrase lever-thrown
  end after

  phrase lever-thrown:
    Somewhere down the line, the semaphore arm clanks to clear.

create the brass button
  aka button
  pushable
  scenery
  in the Signal Box

  A brass button labelled BELL.

create the iron stove
  aka stove
  scenery
  in the Signal Box

  A squat iron stove, cold since spring.

create the stationmaster's cap
  aka cap
  wearable
  in the Signal Box

  A red wool cap with a shiny peak.

create the player
  starts in the Signal Box

The player sees:

> push the stove
The iron stove is fixed in place.

> move the button north
You push the brass button.

> pull the lever
You pull the signal lever.

Somewhere down the line, the semaphore arm clanks to clear.

> pull the lever
The signal lever has already been pulled.

> touch the cap
The stationmaster's cap feels soft.

> touch the stove
The iron stove is solid and immovable.

The platform owns everything stateful here (the scenery refusal, the button push under move's manipulation channel, the already_pulled gate, the wool and iron inferences), and the one line that changes anything beyond the signal box is the story's after pulling it reaction.

push (pushing-*)pull (pulling-*)touch (touching-*)
Refusalsno_target · fixed_in_place · pushing_does_nothing · wont_budge (heavy, no direction) · wearing_it · too_heavyno_target · cant_pull_that · already_pulled · wornno_target (touch refuses almost nothing)
Successbutton_pushed · button_clicks · switch_toggled · pushed_with_effort · pushed_direction · reveals_passage · pushed_nudgedpulled · nothing_happensfeels_hot · feels_warm · device_vibrating · feels_soft · feels_smooth · feels_hard · liquid_container · feels_wet · feels_normal · immovable_object · touched · touched_gently · poked · prodded · patted · stroked
Eventspushedpulledtouched / touch_blocked

Interceptors: on/after pushing it, pulling it, touching it on the target. Touching, with no state of its own, is a favorite probe to hang flavor on (on touching it). Listening plays the same role for sound.