v0.31.0
Protocol 1.5.0: adds schema_name to ScanFunctionResult/ScanBranch (and the WriteFunctionResult alias), populated at every construction site with a schema in scope — the default table_scan_branches_get/table_scan_function_get/_write_function_get dispatch paths, and the inline-embedded attach-time path in descriptors.py.
Also fixes all 30 hand-written ScanBranch/ScanFunctionResult construction sites in the fixture worker (_test_fixtures/worker.py): 21 genuinely VGI-registered functions now report schema_name="main", and 9 sites that delegate to a native DuckDB function or are FORMAT-only branches are explicitly schema_name=None — the reason this field stays optional at the protocol level rather than becoming mandatory.
Adds a same_name_schemas fixture (a function registered under the same name in both main and data, with distinguishable output per schema) backing new cross-repo regression coverage, plus round-trip serialization tests for the new field.
Verified against the C++ extension's default worker lane, vgi-datafusion, and directly against the vgi-rust example worker — all green.