Skip to content

Preserve nested sub-select branches in canonical IR lowering#17

Merged
flyon merged 1 commit intodevfrom
flyon/fix-nested-select-ir
Mar 3, 2026
Merged

Preserve nested sub-select branches in canonical IR lowering#17
flyon merged 1 commit intodevfrom
flyon/fix-nested-select-ir

Conversation

@flyon
Copy link
Member

@flyon flyon commented Mar 3, 2026

Summary

This PR fixes canonical IR fidelity for nested array sub-selects so build() preserves all selected nested paths instead of dropping deeper branches during desugar/lowering.

What changed

  • Make DesugaredMultiSelection recursive (DesugaredSelection[]) and preserve all child selection kinds in desugar.
  • Recurse through multi_selection in lowering projection seed collection.
  • Add regression fixture + tests for nested sub-select preservation (pluralFilteredNestedSubSelect).
  • Update affected SPARQL golden for nestedQueries2 to reflect preserved nested branch output.
  • Add/update workflow skills for explicit automatic mode and mandatory mode transition gates.
  • Add patch changeset: .changeset/nested-subselect-ir-completeness.md.
  • Add final implementation report: docs/reports/006-nested-subselect-ir-completeness.md.

Validation

  • npm test -- --runInBand src/tests/ir-desugar.test.ts src/tests/ir-select-golden.test.ts src/tests/sparql-select-golden.test.ts
  • npm test
  • npm run sync:agents

All passed.

Notes

  • No new public exports.
  • Behavioral change is intentional: canonical IR now includes nested selected paths that were previously dropped.

@flyon flyon merged commit 04173f6 into dev Mar 3, 2026
3 checks passed
@flyon flyon deleted the flyon/fix-nested-select-ir branch March 3, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant