basset menu, and on its own page in this section, carries
the same handful of fields below its Reveals list. Reveals says what a
reading contains. The fields below say how it arrives — which is what decides
whether you read one reading or a hundred, and whether it shows up the moment
you ask or only when something happens.
Delivery
The mechanical shape a reading is produced by.fault instruments are triggered by one of three kinds: hang, termination,
or memoryPressure. Today only
runtime.threadSnapshot
is fault-delivered — it fires when
concurrency.mainThreadHang
crosses its threshold or
memory.pressure crosses into critical, and
shares a faultId with the reading that triggered it.
Cadence
The rhythm within that delivery shape.
Every
interval instrument shares one construct on the device — a timer
that fires on a fixed period and hands the window’s own instrument a chance
to report. Whether that instrument then always reports (even an empty
window) or only when there’s something to say is a choice each instrument
makes internally, not a distinction this catalog tracks — both read as
interval here, since the wire shape and the timing are identical either
way.
Delivery and cadence are independent. stream instruments are usually
onChange or interval — but
camera.device.inventory is stream,
once: it observes for changes the same way the rest of the camera domain
does, and simply never sees one during an ordinary run, since the hardware a
phone exposes doesn’t change while the app is open.
basset menu and each instrument’s own page print delivery and cadence
together, as one field: stream, interval.
Mechanism
What the instrument hooks to produce a reading.
This names what triggers a reading, not just how its values are fetched once
triggered.
network.session.configuration
reads a URLSessionConfiguration’s properties directly, but it only learns a
session exists by riding the same swizzled factory
network.urlSession.taskMetrics
installs — so it’s swizzle, not statusRead. statusRead is reserved for
an instrument with nothing watching at all: once delivery, or a stream
instrument like camera.device.inventory
whose only “watching” is the dispatch shape itself, never an installed hook.
Overhead
A coarse cost rating, from negligible to high. Instruments in this catalog today runnegligible, low, or medium — nothing currently ships at
high.
Requires
The floor an instrument needs to run: a minimum iOS version, whether it needs real hardware, and the earliest basset SDK release that shipped it. An instrument that reads camera or Bluetooth state, for example, reports nothing useful in a simulator and says so here. Most of the catalog has shipped since0.1.1, the first tagged release — an instrument added later carries the
version it arrived in, so integrating against an older pinned SDK tells you up
front which instruments aren’t there yet, rather than a request that silently
activates nothing.
Config
Most instruments take no configuration — activating one by name is enough. The few that expose a tuning knob list it here, as a key, a type, and a default. Set one on activation withname:key=value,...:
:key=value at all —
sending one is refused rather than silently ignored.