Catching the field
The skill for building catcher.json pieces. On the left, Jev is the fielder guarding the outfield:
balls pop up at random spots and fall, and every tick Jev reads the glove's position and the next
ball's landing spot and slides the glove to catch it. A catch needs the glove under the ball when it
lands within reach of the landing spot; otherwise the ball drops.
The difficulty falls to two dials:
fallTicks — how many ticks a ball takes to come down. This is the main dial. Fewer ticks
means the ball drops faster, leaving Jev less time to cross the field — so at low fallTicks Jev
physically can't get there in time and the drops pile up.
gloveReach — how close the glove must be to the landing spot to make the catch (the reach
radius). Tighter reach means Jev has to be precise, not just near.
Crank fallTicks down (or shrink gloveReach) and Jev's glove can't keep up and it leaks balls;
the honest physical slew limit is the difficulty, not random noise. This is the general recipe for
this harness: make the ball fall too fast to chase, and Jev's misses read as Jev's limit.
Craft
- Curate a catching mood. Default
fallTicks ~`10(reach1.6) is crisp and frequently clean. Drop fallTicksto7and Jev leaks; to5or below it's a rain of drops. RaisefallTicksto13+` for a leisurely, near-perfect session.
- Tension by reach. A tight
gloveReach (0.5, say) makes Jev read the landing spot exactly
— it starts to miss when the ball comes in hot. A wide one is forgiving.
- Write a distinct style line. "Read the sound off the bat and burst to the spot" plays very
differently from "glide, don't sprint — always keep some glide in reserve." Jev will visibly
field differently.
Do NOT just ship the template. Every catcher.json you publish should be its own session with a
deliberate, testable difficulty.
Validate with node "$JEV_DSH/toolchain/check.mjs". The real test is the fielding: does Jev catch
the full session at a calm fall, and leak when you speed the falls up — or does it never leak (dull)
or leak even on a slow pop (bad)? Either extreme is a finding to report, not a bug to mask.
Rules
- Keep
catcher.json valid JSON always. A bad edit freezes the session on the last good state. You
can change fallTicks/gloveReach/fieldWidth/balls live — the viewer rebuilds the field for
the new profile.
- Keep
title, description and style truthful — and never present this as real baseball, real
stats, or real coaching.
- The catcher viewer writes
.harness/verdict.json itself (caught, dropped, whether the session was
clean). Do not edit it.
- This is a demo. The field, the pop flies and the timing are made up — never present this as a real
game or real fielding advice.
Definition of done
- A valid
catcher.json that parses and passes toolchain/check.mjs.
- A real fielding loop: Jev reads the landing spot, slides to it, catches the slow ones, and leaks
them once the falls are too fast.
- The fall and reach actually shape the session — report it if Jev never drops, or drops no matter
what.
1---2name: catcher3description: Shape a Jev Catcher session (fall time, glove reach, field width), then verify Jev catches the slow pop flies and drops the fast ones.4---56# Catching the field78The skill for building `catcher.json` pieces. On the left, Jev is the fielder guarding the outfield:9balls pop up at random spots and fall, and every tick Jev reads the glove's position and the next10ball's landing spot and slides the glove to catch it. A catch needs the glove under the ball when it11lands **within reach** of the landing spot; otherwise the ball drops.1213The difficulty **falls** to two dials:1415- **`fallTicks`** — how many ticks a ball takes to come down. This is the main dial. Fewer ticks16 means the ball drops faster, leaving Jev less time to cross the field — so at low `fallTicks` Jev17 physically can't get there in time and the drops pile up.18- **`gloveReach`** — how close the glove must be to the landing spot to make the catch (the reach19 radius). Tighter reach means Jev has to be precise, not just near.2021Crank `fallTicks` down (or shrink `gloveReach`) and Jev's glove can't keep up and it leaks balls;22the honest physical slew limit is the difficulty, not random noise. This is the general recipe for23this harness: **make the ball fall too fast to chase, and Jev's misses read as Jev's limit.**2425## Craft2627- **Curate a catching mood.** Default `fallTicks` ~`10` (reach `1.6`) is crisp and frequently clean.28 Drop `fallTicks` to `7` and Jev leaks; to `5` or below it's a rain of drops. Raise `fallTicks` to29 `13+` for a leisurely, near-perfect session.30- **Tension by reach.** A tight `gloveReach` (`0.5`, say) makes Jev read the landing spot *exactly*31 — it starts to miss when the ball comes in hot. A wide one is forgiving.32- **Write a distinct style line.** "Read the sound off the bat and burst to the spot" plays very33 differently from "glide, don't sprint — always keep some glide in reserve." Jev will visibly34 field differently.3536Do NOT just ship the template. Every `catcher.json` you publish should be its own session with a37deliberate, testable difficulty.3839Validate with `node "$JEV_DSH/toolchain/check.mjs"`. The real test is the fielding: does Jev catch40the full session at a calm fall, and leak when you speed the falls up — or does it never leak (dull)41or leak even on a slow pop (bad)? Either extreme is a finding to report, not a bug to mask.4243## Rules4445- Keep `catcher.json` valid JSON always. A bad edit freezes the session on the last good state. You46 can change `fallTicks`/`gloveReach`/`fieldWidth`/`balls` live — the viewer rebuilds the field for47 the new profile.48- Keep `title`, `description` and `style` truthful — and never present this as real baseball, real49 stats, or real coaching.50- The catcher viewer writes `.harness/verdict.json` itself (caught, dropped, whether the session was51 clean). Do not edit it.52- This is a demo. The field, the pop flies and the timing are made up — never present this as a real53 game or real fielding advice.5455## Definition of done5657- A valid `catcher.json` that parses and passes `toolchain/check.mjs`.58- A real fielding loop: Jev reads the landing spot, slides to it, catches the slow ones, and leaks59 them once the falls are too fast.60- The fall and reach actually shape the session — report it if Jev never drops, or drops no matter61 what.