caller/target are unknown rather than Stuff to avoid an import
cycle; the framework treats them as opaque object identities for stack
walking. Consumers that need the real type cast at the boundary.
kind is set either at push time (synthetic frames) or after the
fact via tagCurrentFrame (proxy-pushed frames whose method bodies
declare their role). Most frames have no kind.
metadata is the open bag for any one-off attached data (e.g. a
future transaction frame might carry a transaction id). Don't
reach into metadata for kind detection — that's what kind is
for.
One frame on the call stack.
caller/targetareunknownrather thanStuffto avoid an import cycle; the framework treats them as opaque object identities for stack walking. Consumers that need the real type cast at the boundary.kindis set either at push time (synthetic frames) or after the fact viatagCurrentFrame(proxy-pushed frames whose method bodies declare their role). Most frames have no kind.metadatais the open bag for any one-off attached data (e.g. a futuretransactionframe might carry a transaction id). Don't reach intometadatafor kind detection — that's whatkindis for.