Skip to content

fix(relations): gate against authoritative input dialect, not anchor (item 95) - #285

Merged
discreteds merged 1 commit into
developfrom
discreteds/anchor-dialect-gating
Aug 15, 2026
Merged

fix(relations): gate against authoritative input dialect, not anchor (item 95)#285
discreteds merged 1 commit into
developfrom
discreteds/anchor-dialect-gating

Conversation

@discreteds

Copy link
Copy Markdown
Member

Implements backlog item 95 — multi-input node capability gating uses the authoritative (first/left) input operand's dialect.

_gate_capabilities previously keyed its dialect-scoped lookup off the visitor's single anchor dialect, so a dialect-scoped GATE fact on an inline operand fired against the wrong string. It now resolves the authoritative input dialect recursively.

Changes

  • _UNRESOLVED sentinel + _first_input_node (exhaustive dispatch, fail-safe)
  • _physical_identity (recursive left-authoritative, cycle-guarded, fail-safe)
  • _authoritative_dialect(node, op)_UNRESOLVED | str | None
  • identity_resolver visitor param; DAG wires name → relations[name]._node
  • Inverted the item-91 TestGatingUsesAnchorDialectNotTrueLeftOperandDialect to the operand-aware semantics

Tests: tests/relations/test_rel_authoritative_dialect_gating.py (inline-operand gate, non-firing left-matches-anchor, join-gate-on-left, unbound-Ibis→None, cycle protection, empty-set).

Full suite: 22252 passed, 0 failed. Ruff clean. (mypy baseline has pre-existing import-untyped/capability_census errors, unchanged.)

Design: mountainash-central 2026-08-14-multi-input-node-anchor-dialect-gating.md (Revision 5).

…(item 95)

_gate_capabilities now keys its dialect-scoped lookup off the operation's
authoritative (first/left) input operand's dialect, resolved recursively,
instead of the visitor's single anchor dialect.

- _UNRESOLVED sentinel + _first_input_node exhaustive dispatch
- _physical_identity (recursive left-authoritative, cycle-guarded, fail-safe)
- _authoritative_dialect -> sentinel | str | None
- identity_resolver visitor param; DAG supplies name->root-node closure
- item-91 gating test inverted to the operand-aware semantics

Design: mountainash-central
2026-08-14-multi-input-node-anchor-dialect-gating.md (Rev 5)
@discreteds
discreteds merged commit b1e91e5 into develop Aug 15, 2026
4 checks passed
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