Context
ExecutionDomainMetadata is attached to authored expressions while Mesh scopes are active. The current representation stores the authored Mesh scope stack, while several consumers also derive execution placement from result layouts and related analysis state.
Observation
src/tilefoundry/ir/core/metadata.py defines ExecutionDomainMetadata(scopes=...).
src/tilefoundry/analysis/check.py reads it in _execution_placement() to distinguish where work runs from where result bytes are laid out.
src/tilefoundry/ir/hir/function.py substitutes its Mesh dimensions during specialization.
- The current metadata shape and its relationship to MeshScope/result-layout facts may be more state than necessary, and the empty-scope/default handling is easy to confuse with absence of a domain.
Request
Review whether MeshScope execution metadata should remain a separate authored fact, be represented by a smaller value, or be derived from another canonical source. Preserve the distinction between execution placement and result layout unless that contract is intentionally changed.
This is follow-up work; the current parser migration keeps the existing public shape for compatibility.
Context
ExecutionDomainMetadatais attached to authored expressions while Mesh scopes are active. The current representation stores the authored Mesh scope stack, while several consumers also derive execution placement from result layouts and related analysis state.Observation
src/tilefoundry/ir/core/metadata.pydefinesExecutionDomainMetadata(scopes=...).src/tilefoundry/analysis/check.pyreads it in_execution_placement()to distinguish where work runs from where result bytes are laid out.src/tilefoundry/ir/hir/function.pysubstitutes its Mesh dimensions during specialization.Request
Review whether MeshScope execution metadata should remain a separate authored fact, be represented by a smaller value, or be derived from another canonical source. Preserve the distinction between execution placement and result layout unless that contract is intentionally changed.
This is follow-up work; the current parser migration keeps the existing public shape for compatibility.