Call-site argument extractor.
Emits one fact per resolved argument position at every call site in the module, split by what the argument turned out to be:
call_arg(caller, callee, arg_pos, value)when the argument resolves to a literal atom string (e.g.":my_pool"), or to"dynamic"when resolution fails entirely.call_arg_forward(caller, callee, arg_pos, fwd_pos)when the argument IS the caller's own parameter, forwarded through.clientlib/interprocedural.dlwalks these backwards to propagate literal values through wrapper call chains.
Only the first 4 arguments (positions 0–3) are resolved per call site. Module/table/server references sit in the first few positions in all OTP calling conventions; capping at 4 bounds fact volume to ~4× the number of call sites without losing useful data.
Both remote calls (call_ext, call_ext_only, call_ext_last)
and local calls (call, call_only, call_last) are captured.
apply and call_fun are skipped — their callees and argument
shapes are runtime-determined.