Signals are initially maps with {:keys [inst id ns level data msg_ ...]}, though they can be modified by call and/or handler middleware. Default keys: `:schema` - Int version of signal schema (current: 1) `:inst` - Platform instant [1] when signal was created `:level` - Signal level ∈ #{ :trace :debug :info :warn :error :fatal :report ...} `:kind` - Signal ?kind ∈ #{nil :event :error :log :trace :spy ...} `:id` - ?id of signal call (common to all signals created by signal call, contrast with `:uid`) `:uid` - ?id of signal instance (unique to each signal created by signal call, contrast with `:id`) `:msg` - Arb user-level message ?str given to signal call `:data` - Arb user-level data ?val (usu. a map) given to signal call `:error` - Arb user-level platform ?error [2] given to signal call `:run-form` - Unevaluated ?form given to signal call as `:run` `:run-val` - Successful return ?val of `:run` ?form `:run-nsecs`- ?int nanosecs runtime of `:run` ?form `:end-inst` - Platform ?instant [1] when `:run` ?form completed `:ctx` - ?val of `*ctx*` (arb user-level state) when signal was created `:parent` - ?{:keys [id uid]} of parent signal, present in nested signals when tracing `:location` - ?{:keys [ns file line column]} signal call location `:ns` - ?str namespace of signal call, same as (:ns location) `:line` - ?int line of signal call, same as (:line location) `:column` - ?int column of signal call, same as (:column location) `:file` - ?str filename of signal call, same as (:file location) `:sample-rate` - ?rate ∈ℝ[0,1] for combined call AND handler sampling (0.75 => allow 75% of signals, nil => allow all) - Arb user-level ?kvs given to signal call If anything is unclear, please ping me (@ptaoussanis) so that I can improve these docs! [1] `java.time.Instant` or `js/Date` [2] `java.lang.Throwable` or `js/Error`