ProxyTensor records fresh unbacked symbols on FX nodes via node.meta["unbacked_bindings"]. The existing helper handled the common single-proxy case, but assumed any value containing fresh unbacked symbols corresponded to one Proxy. Backend traces can fakeify several user inputs with unbacked symbolic dimensions before make_fx starts; placeholder tracking then sees a pytree of proxies while compute_unbacked_bindings returns paths relative to the whole pytree.
Keep the single-proxy behavior unchanged. For nested proxy pytrees, route each symbol binding along its full pytree key path to the owning Proxy and store the remaining local path on that node. This preserves per-placeholder provenance instead of suppressing fresh unbacked tracking.
Fixes #187230
This PR was authored with assistance from an AI assistant.
Test Plan:
python -m pytest test/test_proxy_tensor.py -q -s -k "test_unbacked_bindings_on_multiple_token_grid_placeholders or unbacked or non_deduped_shape or deduped_shape or non_symint_size_spec"lintrunner -astack-info: PR: #187231, branch: sanketpurandare/stack/19
SOCIAL SHARE CARD GENERATOR