RF symbols name architecture semantics. They are distinct from traversals, which read instance or verified saved-plan evidence at a specified language position.
symbol-id = owner, ".", kind, ".", name ;kind = "concept" | "context" | "relation" | "rule" ;local-reference = kind, ".", name ;Examples of canonical IDs:
Slash-separated IDs and untyped free strings are not symbol references.
RF Vocabulary currently contains Concepts and Contexts only. Therefore an
rf.relation.* or rf.rule.* reference is invalid.
Inside a Dialect:
kind.nameresolves only against current Dialect.owner.kind.namemay name current owner orrf.- A local miss does not fall back to
rf. - A reference to another Dialect owner is rejected.
- There are no imports, aliases, wildcard references, or shadowing rules.
rule "subnet" { match { type = "example_subnet" }
as = rf.concept.subnet
context { as = rf.context.network to = concept.virtual-network via = source.network_id on_null = "absent" on_empty = "absent" }}Here, concept.virtual-network means current Dialect's Concept. It does not
mean rf.concept.virtual-network.
Every semantic reference in Policy source must be owner-qualified:
target { concept = rf.concept.subnet rules = [aws.rule.subnet]}
assert = exists(contexts(rf.context.network, rf.concept.virtual-network))Portable Policy Pack source carries references, not version pins. Compilation against a Form resolves each reference and derives exact semantic pins. Unknown owners or symbols fail linking.
Dialect compilation has two passes. Compiler first collects definitions, then resolves references. A Rule may therefore reference a definition in a later file.
Labeled emissions can introduce local Context or Relation symbols. Concepts are never introduced implicitly: every Concept must have an explicit top-level definition or come from RF Vocabulary.
as = subnetas = rf/subnetas = other.concept.subnetThese fail because references are typed and dotted, and a Dialect cannot import
a foreign owner. A Policy reference such as concept.subnet fails with
POLICY_REFERENCE_UNQUALIFIED.