back to inkthe edge of the sheet

ink / what stays

Start with a blank sheet. The hand supplies the path. A finite operation can give that path another reading. Nothing happens behind your hand.

Three materials

Ink leaves a filled pressure ribbon. Edge leaves its two contours, with dry breaks. Wash leaves a translucent body and a little more pigment at the edge. Pressure and speed change the footprint; recorded seeds make the dry breaks repeatable. These are computational materials, not a fluid simulation. A mouse or finger uses steady pressure; a pen uses its reported pressure. Tilt is not used.

A tap leaves a dab. A drag keeps ordered position, pressure and relative time samples. The whole sheet uses the same 1000 by 700 coordinates on every screen. Resizing changes the view, not the drawing. A long gesture is thinned to a bounded sample history while preserving its ends.

Four possible departures

Echo adds an offset trace. Split separates a trace into narrower traces. Lift removes a central interval from its visible path, allowing room for its pressure footprint; a short heavy mark may lift completely. Rest preserves the picture. Light, medium and strong are fixed, bounded amounts. At crossings and the sheet edge, traces can still overlap. Operations target the latest retained gesture, including earlier kept changes to it. They do not select arbitrary code or reach beyond the sheet.

Choose wander, hold or break, then press otherwise?. The picture is a preview until you press keep. Leave it, draw again, undo, or press Escape to discard a proposal. Local mode uses an explicit deterministic rule based on the gesture summary. It is not Jev and not model inference.

A question for Jev

Jev evaluates typed questions. This adapter asks two independent choice questions: which operation, and which strength. The local engine computes their actual marks. Jev is not asked to generate an image, a script or a path. The adapter pins jev-1.14.0; there is no fallback model.

Network mode is off at entry. Open local / jev, select Jev, and explicitly allow summaries. Each press of otherwise? then makes at most one decision request through the same-origin proxy. No decision calls happen while drawing, replaying, importing or applying a proposal. No automatic retry follows failure.

The transmitted state has only sample count, duration, total travel, mean pressure, pressure range, turning, closure, material and direction. The numeric summary is rounded. It is still derived from your gesture and leaves the device. The request also contains fixed descriptions of the permitted operations. Pixels, coordinates, colors, stored gestures and free text are excluded. No claim of zero provider retention is made. Read TypeSafe's data policies before enabling it.

The static GitHub Pages instrument has no inference backend and accepts no API keys. To use the supplied development proxy, run the repository's server/ink-server.mjs with Node 22 or newer and an operator-supplied TYPESAFE_API_KEY in the server environment, then open the local address it prints. The proxy binds only to the loopback interface. Setup commands and tests are in the repository README. Do not put a key in HTML, JavaScript, a URL, a journal, or a shared screenshot. No key is provisioned by this instrument.

A configured proxy means a key is present, not that the account or model has been verified. The implementation was tested with contract fixtures; no live Jev inference was performed during this build. Service availability, account access, latency and the quality of artistic decisions remain unverified. Requests may incur provider charges. Cancelling discards a late response and aborts the connection, but cannot retract work already accepted by the provider.

One request is allowed at a time, with a cooldown, a per-minute cap, small request/response limits and an upstream timeout. Invalid operations, strengths, distributions or provenance are rejected. An error leaves the drawing unchanged and never silently substitutes the local rule.

Recovery has a file format

Undo moves a cursor through a retained branch. Redo returns along that branch. A new stroke or kept change after undo replaces the undone future. Clear is an undoable event, not deletion of the journal. Save ink exports the branch and cursor as JSON; open ink validates the entire file before replacing the current sheet. Save your current work before opening another file.

Replay follows stored events without making fresh decisions or provider calls. It shows each completed gesture and operation, not a real-time reconstruction of every hand movement. Stopping replay restores the retained sheet. PNG and SVG contain only the current rendered picture, on paper, without pending proposals. They cannot recover the source gesture by themselves. The journal can. Neither is a claim of irreversibility while the journal is retained.

A source label in a journal records how a decision was labeled when saved. Imported files can claim any permitted label; the label alone is not evidence of a live provider call. There is no telemetry, remote artwork storage, autosave or browser storage.

Finite paper

A journal admits at most 160 events, 256 samples per gesture, two minutes per gesture and 2 MB of encoded input. Each original gesture has at most eight visible derived traces. Repeated operations at that bound retain a deterministic subset; they do not grow a hidden unbounded drawing. Dense sheets can draw slowly because their geometry is rebuilt. The canvas clips all footprints at the sheet edge. Undo and export remain available at the event limit. Clear needs one free event; undo first if the journal is full.

The material renderer, event order, file validator, bounds and four operations are fixed machinery. This work connects to Underprint's source and reading and the repair contract, but does not prove a new recovery theorem or claim a computer has escaped its interpreter.

Sources, with a gap left visible

The requested Jev: For the builders AND dreamers release article could not be retrieved during implementation. Its specific claims remain unverified. The adapter follows the accessible official model reference, choice documentation and OpenAPI schema, read October 14, 2026. The model reference listed 1.14.0 while the latest alias still pointed to 1.13, hence the explicit pin.

Official image documentation also describes experimental image understanding and Box questions. This first instrument uses neither. A reduced summary is sufficient to choose among its bounded operations.