Skip to content

CodeQuery and RQL Vocabulary Reference

This page lists the complete query vocabulary of the query_code engine. Each table is enumerated from the registries that the parser and validator use. RQL and JSON CodeQuery are two spellings of one model, so every row gives both spellings where they differ.

For explanations and worked examples, read Code Querying, Rune Query Language, and JSON CodeQuery.

The binary can print parts of this vocabulary for the build you are running:

CommandWhat it prints
bifrost --help query_codeEvery query_code parameter, and every step as name (input -> output): meaning. The parameter list does not show the seed sources generation_sites, exports, and configuration_facts, but query_code accepts them.
bifrost --list-row-schemasThe bifrost_relation_schema/v1 catalog: every result row domain, each field’s scalar type, nullability, join-key status, and enum labels.
REPL :kinds, :roles, :languagesThe normalized kinds, roles, and language labels. :languages also prints the dialect labels tsx, jsx, and cpp-c, which :ir accepts. A query accepts tsx and jsx as file extensions, but rejects cpp-c.
REPL :doc NAMEHelp for one form, kind, role, language, command, example, or row domain.

Start the REPL with bifrost --root DIR --repl.

There is one schema version: 1.

  • JSON: schema_version is optional. The value is the string "1". The number 1 is also accepted and is rewritten to "1". Any other value is rejected with unsupported schema version.
  • RQL: a standalone query has no schema-version option. It always uses version 1. Policy selectors pin it with (rql :schema-version 1 QUERY); see static-analysis policies.

A query plan node has exactly one of these 11 sources:

  • match, a structural pattern;
  • a set operator: union, intersect, or except;
  • a seed source: occurrences, scopes, bindings, paths, generation_sites, exports, or configuration_facts.

A second source is rejected. Unknown fields are rejected.

JSON fieldRQL formValueDefaultMeaning
matcha kind head, such as (call ...)patternnoneRoot structural pattern. It must constrain kind, name, or text.
union(union Q Q ...)2 to 16 plansnoneTyped endpoints reached by any branch, in first-appearance order.
intersect(intersect Q Q ...)2 to 16 plansnoneTyped endpoints reached by every branch, in first-branch order.
except(except Q Q ...)2 to 16 plansnoneFirst-branch endpoints that no later branch reaches.
occurrences(occurrences ...), (occurrence ...)occurrence filterevery occurrenceSeed classified identifier occurrences.
scopes(scopes ...), (scope ...)scope filterevery scopeSeed lexical scope rows.
bindings(bindings ...), (binding ...)binding filterevery bindingSeed lexical binding rows.
paths(paths ...), (path ...)path filterevery pathSeed qualified-path rows.
generation_sites(generation-sites ...), (generation_sites ...)generation-site filterevery siteSeed generation-site rows from recorded materialization provenance.
exports(exports ...), (export ...)export filterevery exportSeed export rows from recorded materialization provenance and Python module-level __all__ literals.
dependency_evidence(dependency-evidence ...), (dependency_evidence ...)dependency filterevery stored factRevision-selected declared and exact locked Cargo and JS/TS evidence; no query-time dependency discovery.
configuration_facts(configuration-facts ...), (configuration_facts ...)configuration filterevery factSeed facts from YAML, TOML, JSON, XML, and properties documents.
where(where "glob" ... Q)array of globs, or array of glob arrayswhole workspaceWorkspace-relative path globs. A flat list means any glob. Nested lists mean every group, with any glob inside a group. Repeated RQL where forms combine like nested lists.
languages(language label ... Q), (languages label ... Q)array of language labelsevery languageRestrict to these languages. Repeated RQL forms intersect. Disjoint sets are rejected. configuration_facts rejects this field.
inside(inside P Q)patternnoneThe root match must be lexically inside a node that matches P. Only with match.
inside_decl(inside-decl P Q), (inside_decl P Q)patternnoneLike inside, but the search stops at a nested callable declaration. A Rust impl member can also match the type that owns the impl, and an out-of-line C++ member definition can match the class that declares it. Only with match.
not_inside(not-inside P Q)patternnoneReject the root match when a matching ancestor exists. Only with match.
stepswrapper forms such as (file-of Q)array of step objectsno stepsOrdered typed steps. At most 16 per plan node.
limit(limit N Q)integer 1 to 1000100Maximum terminal results. Root only.
result_detail(result-detail compact Q), (result_detail full Q)compact or fullcompactfull adds stable IDs, byte and column ranges, and capture ranges. Root only.
execution_mode(explain Q) or (profile Q)results, explain, or profileresultsexplain plans without running. profile runs and adds measurements. Root only.
schema_versionnone"1""1"Pin the schema version. Root only.

Root-only fields cannot appear inside a set operand. inside, inside_decl, and not_inside belong in the branch that holds match.

All filter axes are optional. Axes combine with AND. Values inside one axis combine with OR. Each axis takes at most 32 entries.

SourceJSON fieldRQL keywordValues
occurrencesclass:class, :classesoccurrence classes
occurrencesrole:role, :rolesoccurrence roles
occurrencesnamespace:namespace, :namespacesnamespaces
scopeskind:kind, :kindsnormalized kinds of the scope’s anchor node
bindingskind:kind, :kindsbinding kinds
bindingsname:name, :namesexact names, each at most 256 bytes
bindingshoisting:hoistinghoisting classes
pathsmin_segments:min-segments, :min_segmentspositive integer
generation_siteskind:kind, :kindsaccessor_macro, alias_macro, preprocessor_definition
generation_sitesinput:input, :inputsliteral, dynamic
exportsform:form, :formsnamed, default_named, default_anonymous, common_js_root, common_js_member, python_all
exportsname:name, :namesexact exported names
configuration_factsformats:format, :formatsconfiguration formats
configuration_factsnode_kinds:node-kind, :node_kind, :node-kinds, :node_kindsnode kinds
configuration_factsroles:role, :rolesmember roles
configuration_factsscalar_kinds:scalar-kind, :scalar_kind, :scalar-kinds, :scalar_kindsscalar kinds
configuration_factskeys:key, :keysexact keys, each at most 4096 bytes
configuration_factsroutes:route, :routesroute alternatives; see routes
configuration_factsfact_ordinals:fact-ordinal, :fact_ordinal, :fact-ordinals, :fact_ordinalszero-based fact occurrence numbers
configuration_factsprovenances:provenance, :provenancesauthored
configuration_factscompletenesses:completeness, :completenessescomplete, incomplete

A pattern combines all its constraints with AND. In RQL a pattern is a kind head followed by keyword options and predicate forms:

(KIND [:ROLE VALUE | :PROPERTY VALUE | (PREDICATE ...)]*)
  • KIND is one normalized kind, spelled exactly as listed, with underscores (field_access, not field-access). A head with no arguments, such as (loop), is valid.
  • :ROLE VALUE constrains a role. A single-target role takes a pattern or a string. The string is shorthand for (name "..."), so :callee "run" equals :callee (name "run"). A list role takes [PATTERN ...]. :kwargs takes [(ARGNAME PATTERN) ...], for example :kwargs [(shell (boolean_literal))].
  • :PROPERTY VALUE and (PREDICATE ...) are two spellings of the same constraint. (function :name "run") equals (function (name "run")).
  • A bare string inside a kind head is an error. Write (function :name "register"), not (function "register").
  • Nested role patterns may be unconstrained or capture-only. The root pattern may not.
JSON fieldRQL keywordRQL predicate formValueMeaning
kindkind headkind headkind, or array of kinds (at most 32)Match these kinds and their subtypes.
not_kind:not-kind, :not_kind(not-kind K), (not_kind [K ...])kind, or array of kindsExclude these kinds and their subtypes. Never used for file pruning.
async:async true, :async false(async true), (async false)booleanMatch AST-backed callable asyncness. Valid on callable kinds; an adapter without this fact reports incomplete.
name:name "x"(name "x")exact string, or { "regex": "..." }Match the normalized name. At most 4096 bytes.
name with regex:name/regex "re"(name/regex "re")regular expressionMatch the normalized name with a Rust regular expression.
text:text/regex "re"(text/regex "re"){ "regex": "..." } onlyMatch parser-backed source text. There is no exact-text form.
boolean_value:boolean-value, :boolean_value(boolean-value true), (boolean_value false)true or falseMatch a boolean literal by its language-neutral value.
string_value:string-value, :string_value(value "https://example.com")exact string, or { "regex": "..." }Match a string literal by its decoded value, with quotes and language escapes resolved.
string_value with regex:string-value/regex, :string_value/regex(value/regex "^https?://")regular expressionMatch the decoded value of a string literal with a Rust regular expression.
not, all, anynone(not P), (and P Q ...), (or P Q ...)pattern, or two or more patternsNegate or combine constraints on the same node.
capture:capture "label"(capture "label")string, 1 to 128 bytesReturn this node under the label. A repeated label must bind the same text. Use the anchor step to report a captured node’s exact source range as the result location.
arity:arity N (exact count only)(arity N), (arity :min N :max M)integer, or { "min": N, "max": M }; bounds 0 to 1024Positional argument count of a call, or element count of a collection literal. Bounds are inclusive and either may be omitted, but not both.
visibility:visibility(visibility public), (visibility [public protected])visibility labelsMatch a callable by the visibility its adapter recorded. Callable kinds only.
parameter_type:parameter-type, :parameter_type(parameter-type "String"), (parameter_type "String")exact string, or { "regex": "..." }Match a callable with a parameter whose recorded type spelling equals the string. Callable kinds only.
parameter_type with regex:parameter-type/regex, :parameter_type/regex(parameter-type/regex "re"), (parameter_type/regex "re")regular expressionMatch the recorded parameter type spelling with a regular expression.
has:has P(has P)patternRequire a matching descendant.
not_has:not-has P, :not_has P(not-has P), (not_has P)patternReject nodes with a matching descendant. Never used for file pruning.

Role fields (callee, args, and the others) are listed under Roles.

Kind matching includes subtypes. literal matches every literal subtype. There is no exact-kind operator; use a leaf kind or subtract subtypes with not_kind.

KindParentMeaning
declarationnoneAny declaration, including callable, class, and import declarations.
callabledeclarationAny callable declaration: function, method, constructor, or lambda.
functioncallableA named free-standing function declaration.
methodcallableA method declared on a class or similar container.
constructorcallableA constructor declaration.
lambdacallableAn anonymous function or lambda expression.
classdeclarationA class-like declaration.
importdeclarationAn import declaration.
parameterdeclarationA formal parameter declaration.
moduledeclarationA module or namespace declaration that contains other declarations.
callnoneA call of a function, method, or constructor.
concurrent_spawnnoneA structured operation that starts a callable in a separate concurrent task.
resource_releasenoneA construct that releases a resource when it exits, such as Java try-with-resources or a Python with statement.
assignmentnoneAn assignment expression or statement.
awaitnoneAn await expression.
field_accessnoneA member or field access.
identifiernoneAn identifier reference.
literalnoneAny literal value.
string_literalliteralA string literal.
numeric_literalliteralA numeric literal.
boolean_literalliteralA boolean literal.
null_literalliteralA null-like literal.
collection_literalliteralAn array, list, set, dictionary, or tuple literal.
jsx_elementnoneA JSX element, including a self-closing element.
jsx_attributenoneA named JSX attribute.
jsx_spread_attributenoneA JSX spread attribute expression.
object_propertynoneA named property pair in an object literal.
computed_propertynoneA computed object-property key.
spread_elementnoneA spread expression in an object, array, or argument list.
returnnoneA return statement.
thrownoneA throw or raise statement.
catchnoneA catch or exception-handler clause.
ifnoneA conditional statement or expression.
loopnoneAny loop construct.
for_looploopA loop over a collection, iterator, or range (the for-each family).
while_looploopA condition-controlled loop: while, do-while, or until.
decoratornoneA decorator, annotation, or attribute.
blocknoneA statement list that opens its own lexical scope, such as a method body or a bare block.
switchnoneA switch statement.
casenoneA switch case or default label.
labelnoneA labeled statement target.
gotononeA goto statement.
breaknoneA break statement.
continuenoneA continue statement.

Each language adapter supports a subset of kinds. A query that names an unsupported kind for a language returns an incomplete diagnostic for that language. See language support for the kinds each language supports, and Rune IR for the per-language mappings.

A semantic-pack rule with a language_construct trigger also accepts these 43 kind labels as its construct value. The trigger compares the node’s recorded kind for equality and does not include subtypes: callable does not match a function node, and literal does not match a string_literal node. See semantic-pack reference for the trigger and its other construct labels.

A role is a named edge from a matched node to a sub-node. The pattern’s kind must be one of the role’s valid parent kinds. A broad kind such as declaration accepts the roles of its subtypes only where listed.

RoleValueRQL valueValid parent kindsMeaning
calleeone patternpattern or "name"call, concurrent_spawnThe call target name or expression.
receiverone patternpattern or "name"call, concurrent_spawnThe receiver or qualifying scope of a call.
argsordered list[pattern ...]call, concurrent_spawnPositional arguments, in order.
kwargsname-to-pattern map[(name pattern) ...]call, concurrent_spawnNamed arguments, by argument name. At most 64 names, each at most 128 bytes.
leftone patternpattern or "name"assignmentThe assignment target.
rightone patternpattern or "name"assignmentThe assigned value.
operatorone patternpattern or "name"assignmentThe assignment operator token, as the grammar records it.
moduleone patternpattern or "name"import, declarationThe module an import names.
decoratorsordered list[pattern ...]function, method, constructor, lambda, callable, class, parameter, declarationDecorators, annotations, or attributes, in order.
objectone patternpattern or "name"field_accessThe object side of a member access.
fieldone patternpattern or "name"field_accessThe member name side of a member access.
iterableone patternpattern or "name"for_loopThe expression a for-each loop iterates.
elementsordered list[pattern ...]collection_literalThe elements of a collection literal, in order.
tagone patternpattern or "name"jsx_elementThe tag expression of a JSX element.
attributesordered list[pattern ...]jsx_elementThe attributes of a JSX element, in source order.
childrenordered list[pattern ...]jsx_elementThe children of a JSX element, in source order.
valueone patternpattern or "name"jsx_attribute, jsx_spread_attribute, object_property, computed_property, spread_elementThe value expression of an attribute, property, or spread.
keyone patternpattern or "name"object_propertyThe static key of an object property.

An ordered-list role needs each listed pattern to match a different edge, in source order. The matches need not be adjacent, and the list does not fix the total count. Use arity for an exact count. Each list holds at most 64 patterns.

Each step consumes one row domain and produces another. A pipeline is valid when each step accepts the domain the previous step produced. In RQL, a step is a wrapper form around the query it consumes, and inner forms run first. In JSON, a step is an object in steps with op set to the step name and its options as sibling fields.

The tables below list every step. “Options” gives JSON field names; the RQL keywords are in Step options.

JSON opRQL formInput -> outputOptionsMeaning
filterfilterany row -> same rowwhere (required)Keep rows for which every typed predicate holds.
projectprojectany row -> projected rowcolumns (required)Publish selected fields, optionally renamed, to later filter and project steps and to relational policy bindings.
anchoranchorstructural_match -> structural_matchcapture (required)Emit one row for each distinct node bound to the named positive capture, using that node’s source range as the reported location while retaining the structural root for matching and later steps.
statement_factsstatement-facts, statement_factsstructural_match -> structural_matchstatement_fact_kind (required)Retain structural matches for one registered CodeQL statement fact. C/C++-only kinds return no matches for other languages; nested-loops-with-same-variable is supplied by both C++ and C#. Supported kinds are alloca-in-loop, complex-block, complex-condition, empty-block, long-switch, missing-case-in-switch, nested-loops-with-same-variable, and use-of-goto.
cpp_factscpp-facts, cpp_factsstructural_match -> structural_matchkind (required)Retain C++ class, special-member, catch, throw, or inheritance matches for one registered CodeQL parity fact. Supported kinds are assignment-does-not-return-this, catch-by-value, constructor-delegation, constructor-used-as-copy-constructor, rule-of-three, rule-of-two, throwing-pointer, and undisciplined-multiple-inheritance.

After project, only filter and project may follow. In query_code output, a projected row still renders as its source row. See Row predicates and projections.

JSON opRQL formInput -> outputOptionsMeaning
enclosing_declenclosing-declstructural_match or dispatch_target -> declarationnoneThe smallest real indexed declaration that contains the match or dispatch call site.
file_offile-ofmost row domains -> filenoneThe workspace file that holds the row. Accepted inputs are listed below this table.
imports_ofimports-offile -> filenoneProject files that the input file’s resolved imports point to. For Rust, this includes the file that defines an item reached through pub use re-exports.
importers_ofimporters-offile -> filenoneProject files whose resolved imports point to the input file. For Rust, a file that reaches an item in the input file through pub use re-exports is an importer.
python_import_sitepython-import-sitestructural_match -> structural_matchnoneAdd parser-derived Python import leaves, local target resolution, scope, duplicate, exact except ImportError handler context, self-import, and __all__ facts.
python_import_cyclespython-import-cyclesstructural_match -> structural_matchnoneMark Python import sites with a confirmed cycle in the persisted workspace file graph; unresolved targets and absent paths remain incomplete.
python_commented_out_codepython-commented-out-codestructural_match -> python_rule_factnoneReturn one source-spanned row for each Python commented-out-code block recognized from tree-sitter comment nodes. Rows retain exact comment lines and text; CodeQL-style example-heavy, documentation-like, filler, path, URL, doctest, and end-of-line exclusions apply.

python_import_cycles also adds the typed row field python_import_cycle_state with values cyclic and incomplete. A missing path is incomplete because the workspace graph does not prove the absence of external or dynamic imports, and path-derived package identity may be unresolved.

python_import_site also adds the optional Boolean field python_import_duplicate. It is true for a later namespace import that repeats the same parsed module and local binding in this file. It is absent when the import does not meet that selector. The existing python_import_repeated field remains broader: it marks each member of a same-module group, including the first import and from imports.

python_import_site also adds the optional Boolean field python_import_in_import_error_handler. It is true when the import is in a handler whose exception type resolves to the builtin ImportError, false when the parsed context proves it is outside such a handler, and absent when parser or exception identity information is incomplete. The import-site complete field is false when this context cannot be established, so policies that exclude compatibility imports should require python_import_in_import_error_handler to equal false.

python_import_site also adds the optional Boolean field python_import_in_main_guard. It is true when the import is contained by an AST if __name__ == "__main__" (including the reversed comparison), false when the parsed import is outside such a guard, and absent when import-site context could not be read. Cycle policies can exclude main-guard imports by requiring this field to equal false.

python_commented_out_code emits only classified blocks. Its python_rule_fact.range spans the block, comment_block_text stores the exact source slice, and comment_block_lines stores each physical line within that slice, including blank lines between comments.

file_of accepts: structural_match, declaration, procedure, program_point, control_edge, typestate_finding, typestate_witness, flow_endpoint, flow_witness, class_set_row, absent_member_finding, absent_member_witness, taint_finding, reference_site, call_site, expression_site, jsx_attribute_value, receiver_analysis, member_target_analysis, keyed_read_value, receiver_outcome, receiver_evidence, field_write_value, call_shape, call_result, result_subject_use, call_argument_group, call_argument, call_binding, call_effect, call_result_contract, call_result_obligation, result_contract_use, result_contract_failure_use, procedure_effect, callable_signature, signature_parameter, decorated_parameter, callable_applicability, overload_selection, member_selection, dispatch_outcome, dispatch_target, member_family, member_family_edge, python_hierarchy_fact, occurrence, lexical_scope, binding, qualified_path, path_segment, state_event, branch_relation, cpp_expression, loop_relation, failure_handler_state, and statement_reachability.

JSON opRQL formInput -> outputOptionsMeaning
supertypessupertypesdeclaration -> declarationdepth or transitiveIndexed supertypes: direct by default, up to depth hops, or the full closure.
subtypessubtypesdeclaration -> declarationdepth or transitiveIndexed subtypes: direct by default, up to depth hops, or the full closure.
membersmembersdeclaration -> declarationnoneDirect indexed members of a type.
ownerownerdeclaration -> declarationnoneThe exact indexed type that declares a member.
member_familymember-family, member_familydeclaration -> member_familynoneOne method-family outcome row per member: the family ID when proven, otherwise a typed reason.
family_edgesfamily-edges, family_edgesdeclaration -> member_family_edgenoneProven overrides and implements edges of a member, plus their inverses overridden_by and implemented_by.
python_override_signaturespython-override-signatures, python_override_signaturesdeclaration -> python_hierarchy_factnoneC3-selected Python override paired with each source and target callable-signature entry, including stable signature IDs, arity, and coverage.
JSON opRQL formInput -> outputOptionsMeaning
references_ofreferences-ofdeclaration -> reference_sitereference_kinds, proof, surfaceResolved source sites that refer to the declaration.
used_byused-bydeclaration -> declarationreference_kinds, proof, surfaceDeclarations that contain references to the input.
usesusesdeclaration -> declarationreference_kinds, proof, surfaceDeclarations that the input refers to.
callerscallersdeclaration -> declarationdepth, proof, completenessCallers through resolved incoming call edges, direct or up to depth hops.
calleescalleesdeclaration -> declarationdepth, proof, completeness (only exhaustive)Callees through resolved outgoing call edges, direct or up to depth hops.
call_sites_tocall-sites-to, call_sites_todeclaration -> call_siteproofCall sites whose resolved callee is the declaration.
call_sites_fromcall-sites-from, call_sites_fromdeclaration -> call_siteproofCall sites written inside the declaration.
call_inputcall-input, call_inputcall_site -> expression_siteexactly one of receiver, parameter_index, parameter_nameThe receiver expression, or the argument bound to one formal parameter.
JSON opRQL formInput -> outputOptionsMeaning
edges_ofedges-of, edges_ofdeclaration -> reference_edgereference_kinds, proof, surface, usage, relation, site_classInverse edges: every usage site the usage index lists for the declaration.
edges_fromedges-from, edges_fromoccurrence -> reference_edgesame six optionsForward edges: the targets the resolver chose for that exact token.
edge_targetedge-target, edge_targetreference_edge -> declarationnoneThe exact indexed target declaration of an edge.

Occurrences, scopes, bindings, and resolution

Section titled “Occurrences, scopes, bindings, and resolution”
JSON opRQL formInput -> outputOptionsMeaning
occurrences_ofoccurrences-of, occurrences_ofdeclaration -> occurrenceclass, role, namespaceThe declaration’s name occurrence plus every reference occurrence that resolves to it.
occurrences_inoccurrences-in, occurrences_instructural_match, lexical_scope, or file -> occurrenceclass, role, namespaceClassified identifier occurrences inside the match or file, or whose exact innermost scope is the supplied lexical scope.
occurrence_targetoccurrence-target, occurrence_targetoccurrence -> declarationnoneThe declarations that a reference occurrence resolved to.
scope_ofscope-of, scope_ofbinding, occurrence, or structural_match -> lexical_scopenoneThe innermost lexical scope that owns the input.
scope_ancestorsscope-ancestors, scope_ancestorslexical_scope -> lexical_scopenoneThe enclosing scopes, innermost first, without the scope itself.
bindings_inbindings-in, bindings_inlexical_scope or structural_match -> bindingkind, name, hoistingBindings declared in the scope, or in the scopes inside the match.
binding_ofbinding-of, binding_ofoccurrence -> bindinginclude_shadowedThe binding in effect at a reference’s exact position; a binder token preceding its own activation identifies its introduced binding instead.
binding_occurrencebinding-occurrence, binding_occurrencebinding -> occurrencenoneThe binder occurrence of the binding’s declaring token.
binding_usesbinding-uses, binding_usesbinding -> occurrencenoneReference occurrences whose exact lexical binding_of result is the input binding, joined from per-file occurrence and binding facts at query time.
python_variable_ofpython-variable-of, python_variable_ofbinding or occurrence -> python_rule_factnoneMap one Python binder or identifier to the query-local variable grouped by its resolved lexical scope and name; global and nonlocal declarations redirect to their owning scope.
python_variable_definitionspython-variable-definitions, python_variable_definitionspython_rule_fact -> python_rule_factnoneReturn the source-ordered definitions of a lexical-variable row, with kind, first-definition status, and reachability.
python_variable_usespython-variable-uses, python_variable_usespython_rule_fact -> python_rule_factnoneReturn the reads and writes of a lexical-variable row, including closure reads from nested scopes.
python_variable_peerspython-variable-peers, python_variable_peerspython_rule_fact -> python_rule_factnoneReturn same-name lexical variables from other scopes in the same file, with module-definition exclusion facts.
python_variable_nested_loopspython-variable-nested-loops, python_variable_nested_loopspython_rule_fact -> python_rule_factnoneReturn nested for loops targeting one lexical variable, with outer-use and post-inner-loop reuse facts. Reuse requires a later read in the same statement block with no intervening definition; an unconditional write in the inner loop body prevents the reuse fact.
identical_operandsidentical-operands, identical_operandsstructural_match -> structural_matchnonePython pairwise comparisons whose bare names share an exact binding, or whose static attribute paths share member names and root binding; unresolved supported bindings make the query incomplete.
python_missing_selfpython-missing-self, python_missing_selfstructural_match -> structural_matchnonePython method comparisons of the same bare name without a local binding or explicit scope directive, when a same-class self.<name> access resolves self to a method parameter.
candidates_ofcandidates-of, candidates_ofoccurrence -> resolution_candidatetier, outcome, boundaryEvery candidate the resolver considered for a reference occurrence.
candidate_hierarchycandidate-hierarchy, candidate_hierarchyoccurrence -> candidate_hopnoneThe hierarchy hops through which each traced member candidate was found.
candidate_targetcandidate-target, candidate_targetresolution_candidate -> declarationnoneThe workspace declaration of a unit-backed candidate. Other candidates produce no row.
member_selectionmember-selection, member_selectionoccurrence -> member_selectionnoneOne member-selection summary row per reference occurrence, from the resolver’s candidate trace.
callable_applicabilitycallable-applicability, callable_applicabilityoccurrence -> callable_applicabilitynoneOne row per candidate callable the resolver considered, with its applicability verdict and rejection reason.
overload_selectionoverload-selection, overload_selectionoccurrence -> overload_selectionnoneOne overload-selection summary per reference occurrence: resolved_unique, ambiguous, unresolved, or unknown_shape.
JSON opRQL formInput -> outputOptionsMeaning
segments_ofsegments-of, segments_ofqualified_path -> path_segmentresolvedThe ordered segments of a path, with decoded text and spelled generic arity. With resolved, each segment also carries its own resolution.
segment_targetsegment-target, segment_targetpath_segment -> declarationnoneThe workspace declarations that one segment resolves to.
JSON opRQL formInput -> outputOptionsMeaning
receiver_targetsreceiver-targets, receiver_targetsstructural_match, reference_site, call_site, expression_site, or occurrence -> receiver_analysiscaptureAnalyze the receiver value of a call or member site, within bounds.
points_topoints-to, points_tostructural_match, reference_site, expression_site, or occurrence -> receiver_analysiscaptureAnalyze where an expression’s value comes from, within bounds.
member_targetsmember-targets, member_targetsstructural_match, reference_site, or occurrence -> member_target_analysiscaptureResolve the exact static member, with the receiver owner and model provenance.
receiver_outcomereceiver-outcome, receiver_outcomestructural_match, reference_site, call_site, expression_site, occurrence, receiver_analysis, or member_target_analysis -> receiver_outcomenoneExactly one terminal outcome row per analyzed site.
receiver_evidencereceiver-evidence, receiver_evidencestructural_match, reference_site, call_site, expression_site, occurrence, or receiver_analysis -> receiver_evidencenoneZero or more parent-linked evidence rows per analyzed site.
dispatch_outcomedispatch-outcome, dispatch_outcomestructural_match, call_site, reference_site, or occurrence -> dispatch_outcomenoneExactly one bounded-dispatch outcome row per site, with coverage and target count.
dispatch_targetsdispatch-targets, dispatch_targetsstructural_match, call_site, reference_site, or occurrence -> dispatch_targetnoneOne row per retained dispatch candidate, and per boundary arm that names a target.

receiver_evidence does not accept member_target_analysis rows.

JSON opRQL formInput -> outputOptionsMeaning
call_shapecall-shape, call_shapestructural_match, call_site, or occurrence -> call_shapenoneExactly one structured call-shape row per call site, with the decoded callee token and written argument count.
call_resultscall-results, call_resultscall_shape -> call_resultnoneThe ordered normal result values of the semantic call.
call_argument_groupscall-argument-groups, call_argument_groupscall_shape -> call_argument_groupnoneThe ordered argument-list groups of a call.
call_argumentscall-arguments, call_argumentscall_argument_group -> call_argumentnoneThe ordered arguments of one argument-list group.
call_bindingscall-bindings, call_bindingscall_shape -> call_bindingnoneActual-to-formal binding rows, plus rows for the receiver, implicit arguments, defaulted formals, and Python required formals definitely left unbound. Unknown Python keywords have a distinct reason. At least one row per call.
resolved_callresolved-call, resolved_callcall_binding -> call_bindingresolves_to and call_proof (both required), receiver_typeKeep binding rows whose call resolves to one callable identity with exact or declared proof.
resolved_valueresolved-value, resolved_valuecall_binding or structural_match -> same rowresolves_to and exact call_proof (both required)Keep a bound call actual, Python decorator expression, Python structured value node, or C# structured value node only when the bounded resolver proves the requested exact declaration identity. Unresolved, ambiguous, shadowed, unsupported, or budget-limited values make the query incomplete.
call_argumentcall-argument, call_argumentcall_binding -> call_bindingexactly one of formal_name, formal_indexKeep the source argument bound to one formal parameter, with exact mapping and exhaustive coverage.
cpp_bad_strncpy_sizecpp-bad-strncpy-size, cpp_bad_strncpy_sizecall_binding -> call_bindingnoneKeep a call-binding row when structured fixed-array extents prove that a strncpy source is larger than its destination and the policy has already selected the exact declared library identity.
cpp_network_to_host_function_as_array_boundcpp-network-to-host-function-as-array-bound, cpp_network_to_host_function_as_array_boundcall_binding -> call_bindingnoneKeep a call-binding row when structured syntax proves a direct ntohl result is passed as the memcpy bound after exact declared call selection.
callable_signaturecallable-signature, callable_signaturedeclaration -> callable_signaturenoneOne row per persisted signature of a declaration; an overload set gives one row per overload. Python special methods additionally carry their query-time protocol arity verdict and placeholder status.
signature_parameterssignature-parameters, signature_parameterscallable_signature -> signature_parameternoneThe ordered declared parameters of a signature.
decorator_bindingsdecorator-bindings, decorator_bindingsstructural_match -> decorated_parametermodule, imported_nameOne row for each decorator applied to a matched parameter.
JSON opRQL formInput -> outputOptionsMeaning
cpp_expressionscpp-expressions, cpp_expressionsstructural_match -> cpp_expressionnoneProject occurrence-keyed C++ literal, array-parameter, function-parameter, bit-field, enum, function-signature, loop-variable, and sizeof facts from the selected AST range. Scalar values that the source does not prove remain null, and completeness is open with a reason when the row is partial.

The relation is intentionally source-backed and query-lifetime. It does not claim ABI layout, overload resolution, conversion range, or cross-file constant identity. For example, signedness: ambiguous means the declaration uses a plain integral spelling whose signedness is implementation-defined; it is not a claim that the field is signed. The stable row fields include kind, type_form, signedness, width_bits, literal_text, integer_value, array and bit-field properties, enum initializer properties, top-level return/member const properties, and sizeof_operand_kind/sizeof_operand_is_parameter/sizeof_has_side_effect, member classification, exact source-derived parameter size when available, enum implicit-initializer context, and nested short-loop context.

JSON opRQL formInput -> outputOptionsMeaning
call_effectscall-effects, call_effectscall_shape -> call_effectnoneOne row per dispatch arm and declared effect from an active semantic pack. At least one row per call.
procedure_effectsprocedure-effects, procedure_effectsdeclaration -> procedure_effectnoneOne row per procedure and effect over its reachable call graph, direct or transitive, with coverage.
result_contract_callsresult-contract-calls, result_contract_callscall_shape -> call_shapenoneKeep calls whose every dispatch arm selects a reviewed result contract.
call_result_contractscall-result-contracts, call_result_contractscall_shape -> call_result_contractnoneReviewed validity contracts for a call’s normal results. At least one row per call.
call_result_obligationscall-result-obligations, call_result_obligationscall_shape -> call_result_obligationnoneJava result-use and return-use obligations from the selected JDK model.
result_contract_usesresult-contract-uses, result_contract_usescall_result_contract -> call_result_contractnoneAdd aggregate counts of operations on the protected result to each contract row.
result_subject_usesresult-subject-uses, result_subject_usescall_result -> result_subject_usenoneProcedure-local uses of a call result as a receiver.
result_contract_operation_usesresult-contract-operation-uses, result_contract_operation_usescall_result_contract -> result_contract_usenoneOne row per structured operation on a protected result, with a guard verdict.
result_contract_failure_usesresult-contract-failure-uses, result_contract_failure_usescall_result_contract -> result_contract_failure_useprovenance, consumerValues returned or passed to calls inside the failure arm of a conditional result contract.

Procedures, control flow, and branch and loop relations

Section titled “Procedures, control flow, and branch and loop relations”
JSON opRQL formInput -> outputOptionsMeaning
procedure_ofprocedure-of, procedure_ofstructural_match or declaration -> procedurenoneThe smallest source-backed executable procedure that contains the input.
program_point_ofprogram-point-of, program_point_ofstructural_match -> program_pointnoneThe unique point whose source mapping retains the exact structural match identity. For await, this is its AsyncSuspend. Missing or ambiguous points, incomplete producer capability coverage, exhausted traversal budgets and cancellation report incomplete.
program_point_by_idprogram-point-by-id, program_point_by_idprocedure -> program_pointrequired idLook up an observed content-scoped public point ID in the supplied current procedure. This selects a physical point and does not claim exhaustive AST/read discovery. Missing, stale, wrong-procedure, ambiguous or incomplete selection reports incomplete. IDs do not certify semantic-overlay freshness; downstream proofs acquire current evidence.
selected_property_relations_ofselected-property-relations-of, selected_property_relations_ofprogram_point -> flow_relationnoneReaching relations for the unique property read at that exact point. Completeness covers only the selected durable receiver/member and its dependencies and endpoints; unknown values stay unknown. Missing or ambiguous reads and open alias, runtime, control, budget or cancellation evidence report incomplete.
cfg_entrycfg-entry, cfg_entryprocedure -> program_pointnoneThe entry point of the procedure’s control-flow graph.
cfg_exitscfg-exits, cfg_exitsprocedure -> program_pointnoneThe normal and exceptional exit points of the procedure.
cfg_successor_edgescfg-successor-edges, cfg_successor_edgesprogram_point -> control_edgenoneOutgoing control edges, one hop.
cfg_predecessor_edgescfg-predecessor-edges, cfg_predecessor_edgesprogram_point -> control_edgenoneIncoming control edges, one hop.
cfg_edge_sourcecfg-edge-source, cfg_edge_sourcecontrol_edge -> program_pointnoneThe source point of an edge.
cfg_edge_targetcfg-edge-target, cfg_edge_targetcontrol_edge -> program_pointnoneThe target point of an edge.
control_relationscontrol-relations, control_relationsprocedure -> control_relationcontrol_relation, exit_partitionDominance, postdominance, control dependence, entry reachability, and loop membership between program points.
guards_ofguards-of, guards_ofprocedure -> guardnoneThe normalized branch conditions the adapter recorded, with their true and false successor edges.
branch_relationsbranch-relations, branch_relationsstructural_match -> branch_relationbranch_relationCompare the ordered arms of one if match: identical bodies, repeated or contradictory conditions, and similar relations.
cpp_expressionscpp-expressions, cpp_expressionsstructural_match -> cpp_expressionnoneProject typed, occurrence-keyed C++ expression facts from the selected source range.
cpp_inconsistent_loop_directioncpp-inconsistent-loop-direction, cpp_inconsistent_loop_directionstructural_match -> structural_matchnoneKeep a C/C++ for match when its structured condition direction and update direction disagree for the same loop variable.
cpp_unsafe_array_for_days_of_the_yearcpp-leap-year-unsafe-array-for-days-of-the-year, cpp_unsafe_array_for_days_of_the_yearstructural_match -> structural_matchnoneKeep a C/C++ numeric-literal match when the structured literal 365 is a fixed array or vector-constructor extent.
cpp_provenancecpp-provenance, cpp_provenancestructural_match -> structural_matchcpp_provenance_ruleFilter a C/C++ return, assignment, or call anchor through one direct procedure-local provenance rule. The source-backed terminal anchor is preserved; unresolved aliases and call identities remain incomplete.
loop_relationsloop-relations, loop_relationsprocedure -> loop_relationnoneFor a Java loop, prove whether its body can reach its own repeat edge before it exits.
statement_reachabilitystatement-reachability, statement_reachabilityprocedure -> statement_reachabilitynoneFor Java statements, report whether bounded entry reachability reaches any of the statement’s control-flow entries.
switch_coverageswitch-coverage, switch_coverageprocedure -> switch_coveragenoneOne coverage verdict per switch: exhaustive, non-exhaustive, or unknown.
failure_handler_statefailure-handler-state, failure_handler_statestructural_match -> failure_handler_statenoneClassify a catch, except, or rescue body as empty, nonempty, or unknown.
JSON opRQL formInput -> outputOptionsMeaning
state_events_ofstate-events-of, state_events_ofprocedure or declaration -> state_eventevent_class, subjectEstablish, kill, and read events of bindings and properties, placed on the control-flow graph.
flow_relations_offlow-relations-of, flow_relations_ofstate_event or procedure -> flow_relationflow_relation, certaintyReaching, dominance, and same-evaluation relations between state events.
flow_sourceflow-source, flow_sourceflow_relation -> state_eventnoneThe establish or kill end of a relation.
flow_targetflow-target, flow_targetflow_relation -> state_eventnoneThe read end of a relation.
value_flowvalue-flow, value_flowprocedure -> flow_endpointplan_ref (required)Run one host-registered value-flow plan for the exact procedure.
tainttaintprocedure -> taint_findingtaint_ref (required)Project the findings of one host-registered production taint result for the exact procedure.
typestatetypestateprocedure -> typestate_findingprotocol_ref (required)Run one host-registered typestate protocol for the exact procedure.
witnesswitnesstypestate_finding, flow_endpoint, or absent_member_finding -> typestate_witness, flow_witness, or absent_member_witnessmax_steps, max_bytesProject the retained evidence of each finding without running the analysis again.
class_setclass-set, class_setprocedure -> class_set_rownoneFor each member access reachable from the procedure, the classes its receiver may hold.
python_iterator_return_protocolpython-iterator-return-protocol, python_iterator_return_protocolprocedure -> python_rule_factnoneFor each value returned by a Python __iter__, classify its bounded runtime classes by whether they declare inherited __iter__ and __next__; expose exact direct receiver returns as returns_receiver; unresolved or incomplete class sets stay open.
absent_memberabsent-member, absent_memberprocedure -> absent_member_findingfinding_proofMember accesses where a class reaches the site and lacks the member; Proven requires a fully known receiver set, while Conditional admits only the documented receiver, value-flow, and write remainders.
nilness_operationsnilness-operations, nilness_operationsprocedure -> nilness_operationnonePointer operations with their procedure-local nilness fact. Go only; other languages yield no rows and an incomplete unsupported_structural_feature diagnostic.
assignment_relationsassignment-relations, assignment_relationsprocedure -> assignment_relationassignment_relationSelf-assignments, local self-initializers, failed swaps, and overwritten-unread assignments. The bounded self_initializer slice currently supports C/C++ local declarations; other relation coverage is language-specific and reports effect_derivation_incomplete when unsupported.
detached_task_transfersdetached-task-transfers, detached_task_transfersprocedure -> detached_task_transfernoneValues copied into calls that run detached in a different task.
JSON opRQL formInput -> outputOptionsMeaning
python_builtin_identitypython-builtin-identity, python_builtin_identityoccurrence -> python_rule_factnoneResolve an unqualified Python builtin reference using its exact lexical binding. A local or module shadow is partial; missing or wildcard-import evidence stays open. For a proven direct call callee, the result also has call_callee=true.
python_uninitialized_variablepython-uninitialized-variable, python_uninitialized_variableoccurrence -> python_rule_factnoneJoin an exact Python value reference to its lexical binding and procedure-local CFG read. Emit a finding only for a complete may-be-uninitialized answer; globals, class scopes, builtins, closures and open flow identities stay incomplete.
python_assertion_contextpython-assertion-context, python_assertion_contextstructural_match -> python_rule_factnoneAdd tri-state test_scope and terminal_elif_else fields to the shared Python rule-fact row for one assertion. Unresolved unittest inheritance remains unknown.
tuple_return_assignmenttuple-return-assignment, tuple_return_assignmentstructural_match -> python_rule_factnoneResolve a direct local call assigned to a tuple or list and compare its exact distinct return arities with the direct assignment target count.
python_implicit_string_concatenationpython-implicit-string-concatenation, python_implicit_string_concatenationstructural_match -> python_rule_factnoneEmit one anchored row for every literal part implicitly concatenated inside a list element.
python_format_issuespython-format-issues, python_format_issuesstructural_match -> python_rule_factnoneInspect exact Python str.format calls and % binary expressions for five brace-format and three percent-format issues. Format values and supported single-initializer aliases are resolved structurally; unsupported or ambiguous shapes remain partial.
python_url_constructionpython-url-construction, python_url_constructionstructural_match -> python_rule_factnoneProject typed per-slot full or partial URL-control facts for Python +, f-strings, % formatting, and literal str.format construction. Unknown format strings and operands remain incomplete.
python_raise_not_implementedpython-raise-not-implemented, python_raise_not_implementedstructural_match -> python_rule_factnoneIdentify direct, call-form, or one-step aliased raises of the builtin NotImplemented singleton. A shadow is partial, unresolved identity is open, and NotImplementedError is distinct and excluded.
jsx_attribute_valuejsx-attribute-value, jsx_attribute_valuestructural_match -> jsx_attribute_valueidentity, element_name, property_nameThe exact expression of a JSX attribute value, with the element’s intrinsic, component, or unknown identity.
keyed_read_valuekeyed-read-value, keyed_read_valuestructural_match -> keyed_read_valueruntime, global, container (all required); one of property, index, key_kind; index_min, index_max, source_originA keyed read of a runtime input container, such as process.env.HOME or sys.argv[1], resolved to its value.
field_write_valuefield-write-value, field_write_valuemember_target_analysis -> field_write_valuereceiver_identity_id, member_target_idThe right-hand expression of a simple field assignment whose member and receiver member_targets proved.

Configuration facts are a seed source, not a step. See Seed source filters.

JSON opRQL formInput -> outputOptionsMeaning
target_oftarget-of, target_offile -> build_targetnoneThe build target that the workspace’s build files assign the file to.
source_set_ofsource-set-of, source_set_offile -> source_setnoneThe declared source set that contains the file, with the build file that defines it.
topology_edges_oftopology-edges-of, topology_edges_ofbuild_target -> topology_edgenoneDependencies that a build target declares on other targets in the workspace.

These steps read Maven pom.xml files only. Each pom.xml declares one build target with the source sets main (src/main) and test (src/test) in its directory. A dependency edge links two targets of the same workspace and carries the Maven scope.

  • A workspace without a readable Maven build, including a Gradle-only workspace, returns topology_derivation_incomplete. So does a reactor that lists a module whose pom.xml is missing.
  • A file that two source sets claim returns no row and a topology_ownership_ambiguous diagnostic.
  • A file that no build file claims, in a fully read build, returns no row and no diagnostic.
JSON opRQL formInput -> outputOptionsMeaning
generatesgeneratesgeneration_site -> declaration_statenoneThe state rows of the declarations a generation site creates.
generated_bygenerated-by, generated_bydeclaration or declaration_state -> generation_sitenoneThe generation site that created a generated declaration.
declaration_state_ofdeclaration-state-of, declaration_state_ofdeclaration -> declaration_stateorigin, declaration_only, config_gatedThe state row of a declaration: origin, declaration-only flag, and configuration gate.
implementation_ofimplementation-of, implementation_ofdeclaration_state or declaration -> declarationnoneThe runnable implementation that a declaration-only signature links to.
stubs_ofstubs-of, stubs_ofdeclaration -> declaration_statenoneThe declaration-only stubs whose implementation link resolves to the declaration.
export_targetexport-target, export_targetexport -> declarationnoneThe declaration an export row created, where the analyzer models one.
JSON opRQL formInput -> outputOptionsMeaning
rewrite_paths_ofrewrite-paths-of, rewrite_paths_offile -> rewrite_pathdomain, rewrite_outcomeThe bounded rewrite chases the file takes part in, with ordered steps, the declared bound, and the outcome.

Options are written before the nested query in RQL, for example (callers :depth 2 :proof proven QUERY).

JSON fieldRQL keywordStepsRequiredValueDefault
where:wherefilteryes1 to 16 row predicatesnone
columns:columnsprojectyes1 to 32 columnsnone
depth:depthsupertypes, subtypes, callers, calleesnopositive integerdirect (one hop)
transitive:transitivesupertypes, subtypesnotrue only; not with depthdirect
reference_kinds:reference-kindsreferences_of, used_by, uses, edges_of, edges_fromnonon-empty list of reference kindsevery kind, including unclassified hits
proof:proofreferences_of, used_by, uses, edges_of, edges_from, callers, callees, call_sites_to, call_sites_fromnoproven or unprovenboth
surface:surfacereferences_of, used_by, uses, edges_of, edges_fromnoexternal_usages or lsp_referencesexternal_usages for the reference steps; no default for the edge steps
completeness:completenesscallers, calleesnoexhaustive or proven_subset; proven_subset only on callers with proof provenexhaustive
receiver:receivercall_inputone selectortruenone
parameter_index:parameter-indexcall_inputone selectorzero-based index, excluding receiver-bound parametersnone
parameter_name:parameter-namecall_inputone selectordeclared parameter name, 1 to 128 bytesnone
capture:captureanchor (required); receiver_targets, points_to, member_targets (optional)depends on the stepa declared positive capture name, 1 to 128 bytes; only after a structural matcheach distinct captured node’s source range for anchor; the receiver, member, or value derived from the match for the receiver steps
protocol_ref:protocol-reftypestateyesnamespace:namenone
plan_ref:plan-ref, :plan_refvalue_flowyesnamespace:namenone
taint_ref:taint-ref, :taint_reftaintyesnamespace:namenone
max_steps:max-stepswitnessnonon-negative integer; only lowers host limitshost limit
max_bytes:max-byteswitnessnonon-negative integer; only lowers host limitshost limit
finding_proof:proofabsent_membernoproven, conditional, or anyproven
class:class, :classesoccurrences_of, occurrences_innooccurrence classesevery class
role:role, :rolesoccurrences_of, occurrences_innooccurrence rolesevery role
namespace:namespace, :namespacesoccurrences_of, occurrences_innonamespacesevery namespace
kind:kind, :kindsbindings_innobinding kindsevery kind
name:name, :namesbindings_innoexact names, at most 256 bytes eachevery name
hoisting:hoistingbindings_innohoisting classesevery class
include_shadowed:include-shadowed, :include_shadowedbinding_ofnotrueonly the winning binding
tier:tier, :tierscandidates_ofnoprecedence tiers or unattributedevery tier
outcome:outcome, :outcomescandidates_ofnoselected, rejected, or a rejection reasonevery outcome
boundary:boundary, :boundariescandidates_ofnoboundary statusesevery status
usage:usageedges_of, edges_fromnousage kindsevery usage kind
relation:relationedges_of, edges_fromnoowner relationsevery relation
site_class:site-classedges_of, edges_fromnouse_site or declaration_siteboth
resolved:resolvedsegments_ofnotrueno segment resolution
event_class:class, :classesstate_events_ofnoestablish, kill, readevery class
subject:subject, :subjectsstate_events_ofnobinding, propertyboth
flow_relation:relation, :relationsflow_relations_ofnoreaching, dominates, same_evaluationevery relation
certainty:certainty, :certaintiesflow_relations_ofnoexact, mayboth
control_relation:relation, :relationscontrol_relationsnocontrol relationsevery relation
exit_partition:exit-partition, :exit_partition, :exit-partitionscontrol_relationsnoexit partitionsevery partition
branch_relation:relation, :relationsbranch_relationsnobranch relationsevery relation
assignment_relation:relation, :relationsassignment_relationsnoself_assignment, self_initializer, failed_swap, overwritten_unreadself_assignment only
cpp_provenance_rule:rule, :rulescpp_provenancenoincorrect_pointer_scaling_char, return_stack_allocated_memory, stack_address_escape, suspicious_pointer_scaling, suspicious_pointer_scaling_void, improper_null_terminationevery rule
provenance:provenance, :provenancesresult_contract_failure_usesnofailure-use provenanceevery class
consumer:consumer, :consumersresult_contract_failure_usesnofailure-use consumersevery class
domain:domain, :domainsrewrite_paths_ofnorust_import_aliasevery domain
rewrite_outcome:outcome, :outcomesrewrite_paths_ofnoconverged, cycle, exceeded_budgetevery outcome
origin:origin, :originsdeclaration_state_ofnoparsed, generated, recoveredevery origin
declaration_only:declaration-only, :declaration_onlydeclaration_state_ofnotrue or falseboth
config_gated:config-gated, :config_gateddeclaration_state_ofnotrue or falseboth
identity:identityjsx_attribute_valuenointrinsic, component, unknownevery identity
element_name:element-name, :element_namejsx_attribute_valuenoexact unqualified tag nameevery element
property_name:property-name, :property_namejsx_attribute_valuenoexact attribute or property nameevery property
runtime:runtimekeyed_read_valueyesruntime rootsnone
global:globalkeyed_read_valueyesruntime rootsnone
container:containerkeyed_read_valueyesruntime rootsnone
property:propertykeyed_read_valueone selectorexact static property key; containers env, environnone
index:indexkeyed_read_valueone selectorexact non-negative index; container argvnone
key_kind:key-kind, :key_kindkeyed_read_valueone selectorstatic-property or static-indexnone
index_min:index-min, :index_minkeyed_read_valuenonon-negative integer; with key_kind static-indexopen
index_max:index-max, :index_maxkeyed_read_valuenonon-negative integer; with key_kind static-indexopen
source_origin:source-origin, :source_originkeyed_read_valuenopristine_inputno origin constraint
receiver_identity_id:receiver-identity-id, :receiver_identity_idfield_write_valuenoexact stable IDevery receiver
member_target_id:member-target-id, :member_target_idfield_write_valuenoexact stable IDevery member
module:moduledecorator_bindingsnoexact imported module, at most 4096 bytesevery module
imported_name:imported-name, :imported_namedecorator_bindingsnoexact imported symbol name, at most 4096 bytesevery name
resolves_to:resolves-to, :resolves_toresolved_call, resolved_valueyescall identitynone
call_proof:proofresolved_call, resolved_valueyesexact or declared for calls; resolved_value requires exactnone
receiver_type:receiver-type, :receiver_typeresolved_callnoa call identity, or (assignable-to IDENTITY)every receiver
formal_name:formal-name, :formal_namecall_argumentone selectordeclared formal name, 1 to 128 bytesnone
formal_index:formal-index, :formal_indexcall_argumentone selectorzero-based formal indexnone

Two rules decide how an RQL option value is written:

  • These options take a vector [...], even for one value, and accept - in place of _ in each label: :reference-kinds, :usage, :relation (on every step that has it), :site-class, :class and :subject on state-events-of, :certainty, :exit-partition, :provenance, :consumer, :domain, and :outcome on rewrite-paths-of. The single-value options :proof, :surface, and :completeness also accept - for _. :key-kind (JSON key_kind) accepts both static-property and static_property, and both static-index and static_index.
  • All other filter options take one bare label or a vector, and the label must be spelled exactly as listed, with underscores. This covers the occurrence, scope, binding, candidate, declaration-state, generation-site, export, and configuration filters. Configuration :format and :role are exceptions: :format accepts the format aliases, and :role accepts - for _.

filter and project read the public row schema of their input domain. Print the schemas with bifrost --list-row-schemas.

ItemJSONRQL
Predicate{ "field": F, "op": OP, "value": V }(F OP V)
Set predicate{ "field": F, "op": "in", "values": [V, ...] }(F in [V ...])
Null test{ "field": F, "op": "is_null" }(F is-null)
Comparison operatorseq, ne, lt, le, gt, gesame
String regexregexsame
Null operatorsis_null, is_not_nullis-null, is-not-null
String literal{ "string": "x" }"x"
Integer-list literal{ "integer_list": [2, 3] }(2 3)
Integer literal{ "integer": 3 }3
Boolean literal{ "boolean": true }true or false
Enum literal{ "enum": "reference" }a bare label such as reference, or (enum true) when the label would otherwise read as a boolean
Second field{ "field": "OTHER" }(field OTHER)
Column{ "source": F, "name": NEW }F or (F NEW)

Rules:

  • A filter has 1 to 16 predicates. An in set has 1 to 64 literals.
  • Ordered comparison (lt, le, gt, ge) is defined only for integer fields.
  • regex is defined only for string-valued fields and uses the bounded Rust regular-expression syntax.
  • A comparison with a second field needs both fields to have the same scalar type.
  • A comparison with an absent nullable field is false, including ne. Use is_null to select absence. A null test on a field that is not nullable is rejected.
  • Bare RQL labels are checked against the field’s published enum labels.
  • A projection has 1 to 32 columns with unique output names. Field names are at most 256 bytes. Later steps see only the projected names.

languages and RQL language accept these labels:

LabelLanguageOther accepted spellings
javaJavanone
goGonone
cppC and C++c++, c, cc, cxx, h, hin, hpp, hh, hxx
javascriptJavaScript, including JSXjs, mjs, cjs, jsx
typescriptTypeScript, including TSXts, tsx
pythonPythonpy
rustRustrs
phpPHPnone
scalaScalanone
csharpC#c#, cs
rubyRubyrb
kotlinKotlinkt, kts
jvmfamily: java, kotlin, scalanone
js-tsfamily: javascript, typescriptnone

Concrete labels ignore case, surrounding spaces, a leading ., and the characters - and _. Family names must be written exactly as jvm or js-ts. A family expands to its members, and duplicates are removed. A list holds at most 32 entries, and an unknown label is an error.

An extension selects its whole language. c and h select every cpp file, both C and C++, and tsx selects every typescript file. To restrict a query to C files, add a where glob such as **/*.c. No query infers a language from the workspace. See language support for what each language supports.

AxisLabels
visibilitypublic, protected, internal, package_private, private, crate_or_module, unknown. unknown means the adapter looked and could not classify; it never equals public.
result_detailcompact, full
execution_moderesults, explain, profile
call identity (resolves_to, receiver_type)JSON object with exactly one key: stable, qualified, workspace_declaration, or active_semantic_model. In RQL, an unquoted value is a stable ID and a quoted value is a qualified locator. Qualified locators resolve only when a policy is loaded; a standalone query with one is invalid.
receiver_type familyJSON { "assignable_to": IDENTITY, "resolved_identities": [...] }; RQL (assignable-to IDENTITY). Matches the named workspace type and every subtype in its complete typed hierarchy.

Occurrence classes: declaration, reference, binding, non_reference. The class follows from the role:

RoleClassMeaning
declaration_namedeclarationThe name token of a declaration head.
binderbindingA binding introduction: parameter, local, pattern binder, loop variable, or catch variable.
label_or_keynon_referenceA label, keyword-argument name, or map-key position.
type_operandreferenceAn identifier used as a type: annotation, generic argument, or extends or implements operand.
path_segmentreferenceA non-final segment of a qualified path or scoped name.
import_aliasnon_referenceThe local alias that an import or export introduces.
import_targetreferenceThe imported or exported source name.
receiver_positionreferenceThe receiver of a member access or call.
member_positionreferenceThe member name in a member access or call.
pattern_positionreferenceA non-binding identifier inside a pattern, such as a matched constant.
generated_sourcenon_referenceA token that generates declarations elsewhere, such as an accessor macro argument.
value_referencereferenceA plain read or write of a value in expression position.
global_directivenon_referenceA name declared by a Python global statement.
nonlocal_directivenon_referenceA name declared by a Python nonlocal statement.

Namespaces: type, value, module, macro, label, path_prefix. path_prefix is the namespace of a qualifier that may name a module or a type, which lookup decides.

Python’s python-variable-of relation adds a query-local variable identity over the existing per-token binding rows. A lexical_variable row groups all definitions and uses with the same name in its resolved module, function, class, or comprehension scope. Explicit global and nonlocal declarations redirect the group to the module or enclosing function that owns the name. Its variable_id is stable for the file content and resolved scope; scope_kind, is_global, and is_nonlocal describe the owning scope and redirection.

Use python-variable-definitions and python-variable-uses on a lexical_variable row to inspect it. Definition rows are ordered by definition_order; first_definition marks the earliest one. definition_kind distinguishes assignments, parameters, loop targets, imports, augmented writes, deletions, with and except targets, function/class declarations, and pattern targets. reachability is reachable, unreachable, or open. Use rows have access_kind (read or write) and nested_scope, which marks an access to the variable from a nested scope such as a closure. These facts are derived from the selected file’s AST for the query and do not change persisted binding rows. Variable rows also expose is_builtin and has_read; definition rows expose definition_is_unused, annotation_only, annotated_assignment, is_decorated, is_abstract, is_overriding_method, and is_overridden_method for scoped policy queries. annotated_assignment marks an assignment target with a type annotation, including assignments that also provide a value.

The Python tutorial’s lexical variable example shows the variable, definition, use, and same-name peer steps together.

AxisLabels
binding kindlocal, parameter, pattern_binder, loop_variable, catch_or_resource, import_binder, type_parameter
hoistingsource_order (in effect from its activation point to the end of the scope), scope_wide (in effect for the whole scope), declared_head (in effect only within a range the adapter states, such as a match arm)
python_rule_fact.relation for variableslexical_variable, lexical_variable_definition, lexical_variable_use, lexical_variable_peer, nested_loop_same_variable
Python variable scope_kindmodule, function, class, comprehension
Python variable definition_kindassignment, parameter, loop_target, import, augmented, del, with_target, except_target, function_declaration, class_declaration, pattern_target
Python variable reachabilityreachable, unreachable, open
Python variable access_kindread, write
Python variable peer related_scope_kindmodule, function, class, comprehension
Python variable definition factsdefinition_is_unused, annotation_only, annotated_assignment, is_decorated, is_abstract, is_overriding_method, is_overridden_method
Python variable identity factsis_builtin, has_read, is_global, is_nonlocal
Python variable definition exclusion fieldsin_main_guard, optimizing_parameter, self_assignment
Python variable peer exclusion fieldsrelated_has_definition_outside_main, related_has_deletion, related_has_import, related_is_pytest_fixture
Python nested-loop fieldsnested_loop_has_outer_use, nested_loop_reused
candidate tier, strongest firstlexical_binding, own_member, inherited_member, explicit_import, package_or_module, wildcard_import, external_root, name_only_fallback; the filter also accepts unattributed for rows with no tier
candidate outcomeselected, rejected, and the rejection reasons shadowed_by_nearer, not_in_scope_at_position, wrong_namespace, not_visible, wrong_declaration_space, ambiguous_peer, boundary_blocked, hidden_by_closer_member, callable_applicability_deferred
candidate boundaryworkspace_local, external_indexed, external_declared_unindexed (the build declares the dependency but nothing indexed it), external_unknown
AxisLabels
reference_kindsmethod_call, constructor_call, field_read, field_write, type_reference, self_type_alias (a reference through a Self-style type alias), static_reference, super_call, inheritance
proofproven, unproven
surfaceexternal_usages, lsp_references
completenessexhaustive, proven_subset
edge usagereference, import, reexport, self_receiver, definition, override_declaration. Edge rows can also carry declared_reference, which the filter does not accept.
edge relation (owner relation)same_owner, inherited_owner, self_reference, external, unknown. unknown never equals external.
edge site_classuse_site, declaration_site
AxisLabels
control_relationdominates, postdominates, control_depends_on, reachable, in_loop
exit_partitionnormal_and_exceptional, normal_only, exceptional_only, with_cancellation, with_suspension
branch_relationidentical_bodies, repeated_condition, contradictory_condition, subsumed_condition, redundant_boolean_return
cpp_expression.kindarray_parameter, bit_field, enum_definition, enumerator, function_signature, integer_literal, string_literal, loop_variable, sizeof_expression
cpp_expression.type_formbuiltin, named, pointer, reference, array, function, unknown
cpp_expression.signednesssigned, unsigned, ambiguous, unknown
cpp_expression.completenesscomplete, open
assignment_relationself_assignment, failed_swap, overwritten_unread
event_classestablish, kill, read
subjectbinding, property
flow_relationreaching, dominates, same_evaluation
certaintyexact, may
rewrite domainrust_import_alias
rewrite_outcomeconverged, cycle, exceeded_budget
AxisLabels
failure-use provenancecondition_result, distinct_zero_binding, distinct_binding, independent, unknown
failure-use consumerreturn, returned_call_argument, call_argument
finding_proofproven (receiver set fully known), conditional (other receiver values may remain unknown; a listed global write is allowed only with no receiver bound and an Any name set; a declared parameter is allowed only for one annotated workspace class with no workspace subclass, unresolved or unmodeled external base, or dynamic-attribute hook), any
call_proofexact (exact selector proof), declared (a complete declared semantic-model callable)
AxisLabels
declaration originparsed, generated (created by a macro-like construct), recovered (rebuilt from a broken parse)
generation kindaccessor_macro (such as attr_accessor), alias_macro (such as alias_method), preprocessor_definition (a #define)
generation inputliteral, dynamic (the generated names are unknown)
export formnamed, default_named, default_anonymous, common_js_root (module.exports = ...), common_js_member (one property of a module.exports object), python_all (a literal member of module-level __all__)
AxisLabels
formatsyaml (alias yml), toml, json, xml, properties (aliases props, property)
node_kindsdocument, object, section, sequence, member, scalar
rolesobject_member, table_entry, property, xml_attribute, xml_element. Result rows spell these with -, such as object-member.
scalar_kindsstring, boolean, integer, decimal, null, url, duration, opaque
provenancesauthored
completenessescomplete, incomplete (from a partly recovered document)

A route is an ordered list of segments. It has at most 64 segments. An empty route selects the document fact.

SegmentJSONRQL
key{ "kind": "key", "key": "server" }(key "server")
index{ "kind": "index", "ordinal": 0 }(index 0)
any one segment{ "kind": "any" }(any)

routes holds route alternatives: JSON [[segment, ...], ...], RQL :route [[(key "server") (index 0)]].

keyed_read_value accepts exactly these runtime, global, and container combinations. The container decides how its elements are addressed.

runtimeglobalcontainerSelector
nodeprocessenvproperty, or key_kind static-property
nodeprocessargvindex, or key_kind static-index with optional index_min and index_max
pythonosenvironproperty, or key_kind static-property
pythonsysargvindex, or key_kind static-index with optional index_min and index_max

Every result item has a result_type. It names the output domain of the last step, or the source domain when there are no steps. There are 81 result types.

Every item can also carry two fields that are not listed in the table:

  • provenance: the paths from the seed row through each step to this row.
  • provenance_truncated: true when the row had more than 16 paths and some were left out.

The table lists the other top-level JSON fields of each result type. A field in the last column is left out of the JSON when it has no value. With result_detail compact, some identity and range fields are left out, such as id, ast_id, and node_range on structural_match rows. Use result_detail full to get them.

result_typeFields always presentFields that can be absent or null
structural_matchend_line, kind, language, path, start_line, textast_id, captures, decorated_range, decorator_ranges, enclosing_symbol, id, node_range
declarationend_line, fq_name, kind, language, path, start_lineid, node_range, semantic_model, signature, site_id
procedureartifact_id, dialect, evidence, id, language, path, procedure_kind, rangenone
program_pointevent_count, evidence, id, language, path, procedure_id, rangeboundary
control_edgeedge_kind, evidence, id, language, path, procedure_id, range, source, targetnone
typestate_findinganalysis_complete, binding_plan_hash, certainty, finding_kind, id, language, omitted_witnesses, path, path_complete, path_proven, protocol_hash, protocol_ref, range, retained_witnesses, subjectabstained, uncertainty
typestate_witnessbinding_plan_hash, evidence, finding_id, id, language, omitted_steps_lower_bound, path, protocol_hash, protocol_ref, range, retained_bytes, steps, subject, witness_indexabstained, alternatives_truncated, observed_state, retention_truncated, truncated, uncertainty
flow_endpointid, language, omitted_witnesses, path, plan_ref, range, reachability, retained_witnesses, sink, statusambiguous, certainty, path_qualities, reason, source
flow_witnessendpoint_id, evidence, id, language, omitted_steps_lower_bound, path, plan_ref, range, retained_bytes, steps, witness_indexalternatives_truncated, retention_truncated, truncated
class_set_rowfile, id, member, origin, range, statusclass, guard_only
absent_member_findingalso_fails_at, caller, class, file, id, member, origin_file, origin_range, proof, range, remainders, witness_stepscondition
absent_member_witnessevidence, finding_id, id, language, omitted_steps_lower_bound, path, range, retained_bytes, steps, witness_index, witness_statusalternatives_truncated, retention_truncated, truncated, unavailable_reason
taint_findingevidence, id, language, origins, path, range, reached_labels, sink, sink_event_id, witnessesambiguous, origins_truncated, witnesses_truncated
filelanguage, pathpackage_fq, package_syntactic
dependency_evidencecomplete, conditions, ecosystem, end_byte, evidence_kind, id, package, path, scope, source_digest, start_bytedeclared_by, exact_version, locator, range, source, version_requirement
configuration_factcompleteness, end_byte, fact_id, fact_provenance, format, id, node_kind, ordinal, path, range, route, start_byteindex, key, occurrence, parent_id, role, scalar_kind, value_id
reference_sitelanguage, path, proof, range, target, usage_kindenclosing_declaration, reference_kind
call_sitecall_kind, callee, callee_range, caller, language, path, proof, rangearguments, receiver
expression_sitecall_range, callee_fq_name, caller_fq_name, input_kind, language, path, range, textparameter_index, parameter_name
jsx_attribute_valueast_id, attribute_kind, coverage, element_identity, id, language, path, range, textattribute_name, attribute_target, component, element_name, property_name, reason
receiver_analysisanalysis_kind, input_kind, language, outcome, path, range, site_id, textcapture, limit, member_targets, reason, site_ast_id, values
member_target_analysiscoverage, input_kind, language, outcome, path, range, site_id, textcapture, limit, member_range, member_targets, reason, site_ast_id
receiver_outcomeanalysis_kind, candidate_count, candidates_truncated, coverage, id, language, outcome, path, range, scope_nodes, setup_nodes, site_id, summary_expansionslimit, reason, semantic_unsupported, site_ast_id
receiver_evidencechain_hop, completeness, evidence_kind, id, ordinal, path, proof, range, site_iddeclaration_fq_name, declaration_id, declaration_kind, factory_id, model_id, pack_id, parent_evidence_id, site_ast_id
points_to_candidatecandidate_index, completeness, coverage, id, language, path, proof, range, site_idobject_cardinality, object_id, program_point_id
field_write_valueassignment_ast_id, assignment_range, completeness, coverage, id, language, left_ast_id, member_ast_id, member_range, member_target, member_target_id, path, proof, range, receiver_ast_id, receiver_identity_id, receiver_range, rhs_ast_id, text, write_site_idnone
keyed_read_valuecompleteness, conclusive_exclusion, container, global, id, key_kind, language, outcome, path, proof, range, runtime, source_origin, terminal, textactive_model_set_hash, behavior_id, exposure_id, index, limitations, property, refinement_identity
call_shapeargument_count, call_kind, coverage, group_count, id, language, path, range, site_ast_id, site_idcallee_name, callee_range
call_resultcall_id, completeness, id, language, ordinal, path, point_id, procedure_id, proof, range, site_ast_id, site_id, value_idnone
call_argument_groupargument_count, group_index, id, kind, path, range, site_idnone
call_argumentargument_index, group_id, id, path, range, site_id, spreadname
call_bindingactual_count, bound_count, conversion_status, coverage, dispatch_coverage, dispatch_outcome, dispatch_target_count, dispatch_targets_truncated, id, language, mapping, path, range, selector_exact, site_ast_id, site_id, terminalactual_index, actual_name, argument_id, binding_kind, conversion, conversion_reason, declared_target_id, dispatch_completeness, dispatch_proof, formal_index, formal_layout_id, formal_name, group_id, model_activation_reason, model_activation_source_id, model_activation_source_kind, model_activation_status, model_active_set_hash, model_ambiguous, model_callable_id, model_completeness, model_id, model_origin, model_pack_digest, model_pack_version, model_producer, model_producer_version, model_proof, model_record_id, pack_id, reason, receiver_type_id, selector_proof, selector_summary_active_set_hash, selector_summary_completeness, selector_summary_id, selector_summary_model_id, selector_summary_model_proof, selector_summary_origin, selector_summary_pack_digest, selector_summary_pack_id, selector_summary_pack_version, selector_summary_producer, selector_summary_producer_version, selector_summary_record_id, semantic_target_id, signature_id, target, target_origin
call_effectarm_count, classification, coverage, derivation, id, language, modeled_arm_count, path, range, site_ast_id, site_id, terminalcallee, callee_symbol, certainty, effect_id, execution_timing, model_id, pack_id, proof, reason, summary_id, target_id, timing
call_result_contractarm_count, coverage, fresh_allocation, id, language, member_contract_count, modeled_arm_count, path, range, site_ast_id, site_id, success_guard_count, terminalcallee, callee_symbol, condition_result_ordinal, model_id, pack_id, predicate, proof, reason, result_ordinal, result_success_predicate, result_use_count, summary_id, target_id, unguarded_result_use_count, use_validation, use_validation_coverage
call_result_obligationarm_count, coverage, id, language, modeled_arm_count, path, range, result_use, site_ast_id, site_id, terminalfailure_predicate, model_id, obligation_basis, obligation_kind, obligation_provenance, pack_id, reason, result_ordinal, result_use_detail, summary_id
result_subject_usecompleteness, id, language, outcome, path, proofartifact_id, conversion_witnesses, origin, procedure_id, reason, receiver_call_id, receiver_point_id, receiver_range, receiver_site_ast_id, receiver_site_id, subject_id, witness_event_ids
result_contract_useacquisition_id, acquisition_site_ast_id, acquisition_site_id, applicability, coverage, guard, id, language, operation_point_id, path, range, result_ordinal, timing, use_kindacquisition_predicate, ast_id, condition_result_ordinal, member, model_id, operation_site_ast_id, operation_site_id, pack_id, parameter_count, parameter_ordinal, required_predicate, result_success_predicate, summary_id
result_contract_failure_useacquisition_id, acquisition_site_ast_id, acquisition_site_id, condition_result_ordinal, consumer, consumer_point_id, coverage, failure_provenance, id, language, operand_value_id, path, procedure_id, proof, rangeargument_ordinal, ast_id, binding_value_id, condition_value_id, consumer_call_id, consumer_site_ast_id, consumer_site_id, establishment_point_id, establishment_value_id, failure_edge_id, model_id, pack_id, summary_id
nilness_operationcoverage, fact, id, language, operation_point_id, origin, path, procedure_id, proof, range, subject_value_id, use_kindast_id, reason
switch_coveragecase_count, default_present, has_false_case, has_true_case, id, kind, language, path, procedure_id, proof, range, selector_domain, switch_fact_id, verdictast_id, reason, selector_value_id
assignment_relationcoverage, id, language, path, procedure_id, proof, range, relation_kind, storage_kind, verdictassignment_point_id, ast_id, reason, replacement_events, rhs_value_id, target_value_id
detached_task_transfercall_id, call_point_id, coverage, id, language, path, procedure_id, proof, range, role, timing, value_idast_id, object_cardinality, object_id, ordinal, reason
procedure_effectcoverage, derivation, id, language, path, procedure_id, procedure_name, range, site_id, terminal, witness_available, witness_steps, witness_truncatedcertainty, classification, depth, effect_id, execution_timing, model_id, pack_id, reason, summary_id, timing, witness_chain, witness_effect_site_id, witness_site_id
callable_signaturecoverage, declaration, declaration_only, generic_arity, id, language, ordinal, parameter_count, path, range, repeated, role, site_idlabel, receiver_contract, required_arity, return_type, special_method_expected_maximum, special_method_expected_minimum, special_method_reason, special_method_status, total_arity
signature_parameterid, label, label_end_byte, label_start_byte, parameter_index, path, range, signature_iddeclared_type, optional, repeated
decorated_parameterbinding_status, boundary, completion, coverage, decorator_name, decorator_range, id, language, parameter_id, path, range, terminalannotation_status, annotation_type, decorator_id, imported_name, local_name, module, owner_id, parameter_ordinal, port_id, procedure_id, reason, value_id
callable_applicabilitycandidate, id, language, ordinal, path, range, selected, site_ast_id, verdictreason, tier
overload_selectionapplicable_count, considered_count, id, inapplicable_count, language, path, range, resolution, site_ast_id, supported, unknown_countnone
member_selectioncandidate_count, coverage, id, language, member, outcome, path, range, role, selected_count, site_ast_id, trace_completenessnone
dispatch_outcomecall_site_count, coverage, id, language, outcome, path, range, site_id, target_count, targets_truncatedexceeded_limit, semantic_unsupported, site_ast_id
dispatch_targetcompleteness, coverage, dispatch, id, ordinal, path, proof, site_id, target_id, target_pathboundary_kind, site_ast_id, target_declaration, target_fq_name
member_familycapability, coverage, edge_count, id, implemented_by_count, implements_count, language, member_id, outcome, overridden_by_count, overrides_count, path, range, root_countfamily_id, member, reason
member_family_edgecompleteness, coverage, hierarchy_depth, id, member_id, ordinal, path, proof, range, relation, target_idfamily_id, source, target
python_hierarchy_factcoverage, fact_kind, id, language, outcome, path, range, root_idbase_branch_definition_count, base_resolution, base_spelling, declaration, declaration_id, has_non_strict_ordering, has_strict_ordering, inherited_ne_delegates, inherited_ne_present, member_name, mro_rank, ordinal, owner, owner_id, reason, root, root_declaration_id, source_repeated_arity, source_required_arity, source_signature_coverage, source_signature_id, source_signature_ordinal, source_total_arity, target, target_id, target_non_trivial, target_owner, target_owner_id, target_reads_self, target_repeated_arity, target_required_arity, target_signature_coverage, target_signature_id, target_signature_ordinal, target_total_arity, total_ordering_decorator
occurrenceast_id, class, end_byte, id, language, namespace, path, range, raw_spelling, role, start_byte, targetdecoded_spelling, enclosing_symbol
lexical_scopeend_byte, id, index, language, path, range, start_byteast_id, kind, parent_index
bindingactivation_end_byte, activation_start_byte, declaring_scope_index, end_byte, hoisting, id, kind, language, name, namespace, path, range, source_order, start_byte, visibilityast_id, import, reached_from_ast_id, shadowed
resolution_candidateast_id, boundary, candidate, end_byte, id, language, ordinal, outcome, path, range, start_byte, trace_completeness, visibilityapplicability, canonical_member_id, dispatch_tier, external_target, hierarchy_depth, owner, rejection_reason, tier
candidate_hopast_id, candidate_id, end_byte, hop, id, language, path, range, relation, start_bytefrom, to
generation_siteend_byte, generated, generated_count, id, input, kind, language, path, range, start_byteast_id
exportend_byte, exported_name, form, id, language, path, range, start_byteast_id, target_fq_name
declaration_stateconfig_gated, declaration_only, fq_name, id, language, origin, path, unit_kindast_id, end_byte, range, start_byte
reference_edgeedge_provenance, end_byte, generation, id, language, owner_relation, path, proof, range, site_class, start_byte, target, usage_kindast_id, enclosing_declaration, reference_kind
state_eventcompleteness, end_byte, event_class, generation, id, language, path, procedure_id, program_point, program_point_id, range, start_byte, subject, subject_value, valueast_id, member, uncovered_axes
binding_initializer_callend_byte, establishment_event_id, id, initializer_role, language, path, range, site_ast_id, start_bytenone
flow_relationcertainty, completeness, generation, id, language, path, procedure_id, range, relation, source, targetuncovered_axes
control_relationcertainty, completeness, exit_partition, generation, id, language, path, procedure_id, range, relation, source, targetcontrolling_edge_id, uncovered_relations
branch_relationearlier_ordinal, earlier_range, id, language, later_ordinal, later_range, owner_id, owner_range, path, range, relation, verdictorientation, reason
cpp_expressioncompleteness, id, kind, language, path, range, signedness, type_formarray_extent, array_is_reference, bit_field_anonymous, bit_field_width, completeness_reason, enum_has_implicit_before_nonreference, enum_ordinal, enum_scoped, enum_value, has_initializer, integer_value, literal_text, loop_has_short_ancestor, member_function, member_function_const, name, parameter_by_value, return_top_level_const, sizeof_has_side_effect, sizeof_operand_is_parameter, sizeof_operand_kind, type_size_bytes, type_size_exact, type_text, width_bits
loop_relationid, language, loop_kind, path, procedure_id, range, verdictbody_range, reasons, repeat_edge_id
failure_handler_statecatch_ast_id, coverage, id, language, path, proof, range, verdictbody_range, reason
statement_reachabilityid, language, path, procedure_id, range, statement_kind, verdictreason
python_rule_factcompleteness, id, language, outcome, owner_id, path, proof, range, relationaccess_kind, annotated, annotated_assignment, annotation_only, assignment_arity_match, assignment_target_count, callable_evaluation_time, comment_block_lines, comment_block_text, default_equivalent, definition_is_unused, definition_kind, definition_order, distinct_tuple_arities, exception_class, expected_exception, explicit_return_statements, explicit_value_returns, fallthrough_none_returns, first_definition, forwarded, has_read, in_main_guard, is_abstract, is_async, is_builtin, is_decorated, is_generator, is_global, is_nonlocal, is_overridden_method, is_overriding_method, loop_has_body_read, loop_policy_excluded, mixed_returns, mixed_tuple_arities, name, nested_loop_has_outer_use, nested_loop_reused, nested_scope, none_returns, operand_kind, optimizing_parameter, parameter_count, raised_expression, reachability, reason, related_has_definition_outside_main, related_has_deletion, related_has_import, related_is_pytest_fixture, related_scope_kind, result_use, return_contract, returns_receiver, scope_kind, self_assignment, target_id, terminal_elif_else, test_scope, tuple_return_arities, tuple_return_count, url_prefix, variable_id
guardcompleteness, id, language, path, point, predicate, procedure_id, proof, rangeclasses_value, constant, constant_value, equality_negated, false_edge_id, false_target_id, guarded_value, integer_relation, member_value, null_on_true, null_target_id, opaque_digest, subject_value, true_edge_id, true_target_id
rewrite_pathcompleteness, declared_bound, domain, end_byte, generation, id, language, origin_specifier, outcome, path, range, start_byte, step_count, stepsexplored, fixed_point, uncovered_domains, witness
qualified_pathast_id, end_byte, id, language, path, range, segment_count, start_bytenone
path_segmentend_byte, id, language, ordinal, path, path_ast_id, range, start_byte, textast_id, generic_arity, namespace, resolution_status, target_count
source_setbuild_file, completeness, id, nametarget_id
build_targetbuild_file, completeness, id, namebuild_project_id
topology_edgebuild_file, completeness, from_id, from_name, id, scope, to_nameto_id
cross_domaindomain, id, operator, pathbinding, code, code_id, code_path, configuration, configuration_contributors, configuration_id, configuration_path, dependency_id, effective_configuration, key, mapping_id, mitigated, owner, range, relation

On call_result_obligation items, obligation_provenance carries the native or model origin. The typed row field selector provenance selects that origin; the result item’s provenance array carries query traversal evidence.

For Python special methods, special_method_status is compatible, too_few, too_many, required_optional_second, required_optional_third, placeholder, or incomplete. Expected positional bounds are adjusted for an explicit @staticmethod; special_method_reason explains incomplete syntax or signature evidence. A missing status means the declaration is not a recognized Python special method. The field is filterable in RQL.

Python lifecycle rows expose target_non_trivial when the target body and its control flow are complete: the target must have a normal exit and contain a statement other than pass, its first docstring, or a same-name superclass delegation. target_reads_self records whether an override directly reads its receiver as an attribute object or call argument; unavailable binding or source evidence leaves the field empty. Python MRO member rows expose base_branch_definition_count, the number of distinct effective declarations of that name across resolved direct-base branches; a shared declaration reached through a diamond counts once. They also expose class-level has_strict_ordering and has_non_strict_ordering booleans over the effective C3 member set, plus total_ordering_decorator, which is true only for a recognized functools.total_ordering import and absent when decorator identity is uncertain. inherited_ne_present is true when the effective C3-selected __ne__ is an inherited source function. inherited_ne_delegates is true for that function’s recognized direct not self.__eq__(other) or equivalent comparison form, false for a known non-delegating body, and absent when its body cannot be classified. Masked ancestor declarations do not affect either field. A selected direct __ne__ makes both fields false. An inherited non-function or an unknown selection leaves both fields absent. A known source selection before an unknown external member surface remains usable, while absence is reported as false only when member enumeration is complete. These facts do not make an open member row’s coverage complete. An implicit object root is a language identity. Without an active runtime-base claim it is recorded as an intrinsic terminal builtins.object endpoint, so a class with no written bases has complete ancestry. An active claim refines that endpoint to the model’s canonical external identity; class_mro retains it, including a root whose runtime-base claim is explicitly empty. An unshadowed explicit object base still requires active runtime-base model evidence for canonical builtins.object ancestry, and a missing declaration or claim keeps that explicit edge incomplete. Complete modeled ancestry does not imply a complete external member inventory.

A complete modeled C3 result establishes an ordered ancestry under the selected source identities and applicable runtime-base claims; it does not establish successful Python class construction, layout compatibility, metaclass behavior, or decorator identity preservation. Each ancestry_basis retains the contributing ordered claims and their model provenance through query evidence, reusable unit rows, and policy references. An absent runtime-base claim makes no assertion; an explicitly empty claim asserts a root. Missing, ambiguous, conflicting, unsupported, exhausted, or cancelled derivations retain their typed outcome; incomplete ancestry emits no partial MRO. Model-backed ancestry remains model-derived evidence, including when its ordering is complete.

Iterator return rows expose returns_receiver as true for a direct return of the first receiver parameter, false for another exact selected return expression, and omit it when receiver identity is unresolved.

Two other sources describe result rows:

  • bifrost --list-row-schemas prints the typed fields that filter, project, and relational policies read, with each field’s scalar type, nullability, and enum labels. REPL :doc DOMAIN prints one domain. These row-schema fields are not the same as the JSON fields above. For example, the structural_match row schema has id, ast_id, language, and kind.
  • The Python client reference maps each result_type to its Python class.

A result carries a diagnostics array. Each diagnostic has a code, an impact, a language (a language label, workspace, or all), a message, an optional branch path inside a set operation, and, for exhausted work, an exhausted_roots list that names each file, procedure, and budget lane that stopped.

An incomplete diagnostic may also carry withheld_rows_path: the one workspace-relative file that holds every row the diagnostic left out or open. Statement reachability, assignment relations and branch relations set it. It is dropped when a later step derives new rows rather than passing rows through (filter, project, union and limit pass them through), so a result keeps it only while it still describes the result’s own rows. Without it, the missing rows may be anywhere.

ImpactMeaning for your conclusion
invalidThe query could not run as written. Treat the result as an error.
incompleteSome work was skipped, unsupported, cut short, or cancelled. Positive rows remain valid, but an empty or short answer does not prove absence.
declared_non_exhaustiveThe query asked for a proven subset (callers with completeness proven_subset). The rows are proven, but they are not all the answers.
advisoryGuidance only. It does not affect completeness.

truncated: true also means the answer is not complete. Cancellation is reported as the cancelled code with incomplete impact. See Agent Result Safety for the full decision rule.

The impact column gives the impact that query_code uses for each code.

CodeImpactMeaning
invalid_planinvalidThe plan cannot run, for example a resolved_call with an unresolved qualified locator.
cancelledincompleteThe query was cancelled; rows already produced are partial.
unsupported_structural_featureincompleteAn adapter does not support a kind, role, or predicate the query uses, or did not record it.
missing_structural_adapterincompleteNo structural or configuration adapter exists for some files.
unsupported_import_analysisincompleteA language has no structured import analysis; its files were left out of import steps.
dynamic_import_targetincompleteAn include/require target depends on runtime state, so its workspace file was left out of import traversal.
semantic_results_omittedincompleteSome inputs or rows were left out, for example because a provider returned no data or the workspace changed while the query ran.
semantic_workspace_requiredincompleteThe step needs workspace-backed semantic services that this host does not provide.
no_enclosing_procedureadvisoryNo source-backed procedure contains the input.
semantic_capability_unsupportedincompleteA semantic capability the step needs is unsupported for the language.
semantic_analysis_partialincompleteSemantic analysis or document ingestion finished with partial evidence.
call_binding_dispatch_partialincompleteA call binding has an exact target and mapping, but no exact selector proof.
call_binding_selector_rejectedincompleteresolved_call rejected every call-binding candidate it saw.
semantic_budget_exhaustedincompleteA semantic budget lane ran out.
semantic_provider_failedincompleteThe semantic provider failed.
semantic_pack_acquisition_pendingincompleteA needed semantic pack is not available yet.
unresolved_protocol_referenceincompleteNo typestate protocol is registered under protocol_ref.
typestate_registration_staleincompleteThe typestate registration belongs to another workspace generation.
typestate_handle_staleincompleteThe typestate handle no longer matches the workspace.
typestate_root_mismatchincompleteThe registration does not match this procedure root.
typestate_capability_unsupportedincompleteTypestate analysis is unsupported here.
typestate_analysis_partialincompleteThe typestate analysis abstained or finished with partial evidence.
typestate_provider_failedincompleteThe typestate provider failed.
typestate_solver_budget_exhaustedincompleteThe typestate solver ran out of work budget.
typestate_finding_budget_exhaustedincompleteThe typestate finding budget ran out.
typestate_witness_truncatedincompleteTypestate witness evidence was cut at a limit.
unresolved_value_flow_plan_referenceincompleteNo value-flow plan is registered under plan_ref.
value_flow_registration_staleincompleteThe value-flow registration belongs to another workspace generation.
value_flow_handle_staleincompleteThe value-flow handle no longer matches the workspace.
value_flow_root_mismatchincompleteThe registration does not match this procedure root.
value_flow_capability_unsupportedincompleteValue-flow analysis is unsupported here.
value_flow_analysis_partialincompleteValue-flow analysis finished with partial evidence.
value_flow_provider_failedincompleteThe value-flow provider failed.
value_flow_solver_budget_exhaustedincompleteThe value-flow solver ran out of work budget.
value_flow_witness_truncatedincompleteValue-flow witness evidence was cut at a limit.
type_flow_witness_truncatedincompleteAn absent-member witness was cut at a limit.
type_flow_witness_unavailableincompleteAn absent-member witness could not be retained.
unresolved_taint_result_referenceincompleteNo taint result is registered under taint_ref.
taint_registration_staleincompleteThe taint registration belongs to another workspace generation.
taint_handle_staleincompleteThe taint handle no longer matches the workspace.
taint_root_mismatchincompleteThe registration does not match this procedure root.
taint_plan_report_mismatchincompleteThe registered taint plan and report do not match.
taint_projection_failedincompleteProjecting the registered taint result failed.
taint_finding_truncatedincompleteTaint findings, origins, or witnesses were cut at a limit.
receiver_analysis_partialincompleteReceiver analysis returned rows with unsupported shapes or providers.
receiver_analysis_failedincompleteReceiver analysis failed.
call_relation_budget_exhaustedincompleteCall traversal ran out of budget.
call_relation_parse_failedincompleteA file could not be parsed for call traversal.
call_relation_candidates_omittedincomplete, or declared_non_exhaustive under proven_subsetCall candidates were left out, for example because a related declaration has no exact indexed range.
call_relation_targets_ambiguousadvisoryA call has more than one possible target.
call_relation_candidate_limitincompleteCall traversal reached its candidate limit.
call_relation_analysis_failedincompleteCall analysis failed.
reference_source_bytes_truncatedincompleteReference search reached its source-byte limit.
reference_candidate_files_truncatedincompleteReference search reached its candidate-file limit.
reference_candidates_omittedincompleteReference candidates were left out.
reference_targets_ambiguousadvisoryA reference has more than one possible target.
reference_callsite_limitincompleteReference search reached its call-site limit.
reference_analysis_failedincompleteReference analysis failed.
uses_parser_unsupportedincompleteuses cannot parse this language.
uses_candidate_limitincompleteuses reached its candidate limit.
uses_targets_ambiguousadvisoryA use has more than one possible target.
uses_candidates_omittedincompleteuses candidates were left out.
execution_budget_exhaustedincompleteThe query scan budget ran out (files, source bytes, or fact nodes).
pipeline_budget_exhaustedincompleteThe seed and edge row budget ran out.
import_graph_budget_exhaustedincompleteThe import graph budget ran out; import results are partial.
occurrence_role_unsupportedincompleteAn adapter does not classify an occurrence role or namespace the query names.
occurrence_resolution_incompleteincompleteOccurrence resolution did not finish.
occurrence_row_budget_exhaustedincompleteThe occurrence row budget ran out.
environment_axis_unsupportedincompleteAn adapter does not support a lexical-environment axis.
materialization_axis_unsupportedincompleteAn adapter does not support a materialization axis, such as generation_sites or exports.
materialization_derivation_incompleteincompleteMaterialization rows could not be fully derived.
materialization_row_budget_exhaustedincompleteThe materialization row budget ran out.
environment_derivation_incompleteincompleteScopes, bindings, or intervals could not be fully derived.
environment_row_budget_exhaustedincompleteThe lexical-environment or configuration row budget ran out.
resolution_trace_incompleteincompleteThe resolver records only selected candidates, so a missing rejection row proves nothing.
edge_axis_unsupportedincompleteAn adapter does not support an edge projection, such as forward edges.
edge_derivation_incompleteincompleteEdge derivation was truncated, cancelled, or failed.
flow_state_axis_unsupportedincompleteAn adapter does not support a flow-state axis.
flow_state_derivation_incompleteincompleteState events or flow relations could not be fully derived.
rewrite_domain_unsupportedincompleteA rewrite domain is unsupported here.
rewrite_path_derivation_incompleteincompleteRewrite paths could not be fully derived.
control_relation_derivation_incompleteincompleteControl relations could not be fully derived.
branch_relation_derivation_incompleteincompleteBranch relations could not be fully derived.
loop_relation_derivation_incompleteincompleteLoop relations could not be fully derived.
failure_handler_derivation_incompleteincompleteA failure-handler body could not be classified.
statement_reachability_derivation_incompleteincompleteStatement reachability could not be fully derived.
control_relation_exit_partition_partialincompleteA control relation could not be computed for every exit partition.
topology_derivation_incompleteincompleteThe build topology could not be fully read.
topology_ownership_ambiguousincompleteMore than one declared source set claims a file.
identity_axis_unsupportedincompleteAn adapter does not support qualified-path identity axes.
path_derivation_incompleteincompleteQualified paths, segments, or configuration routes could not be fully derived.
effect_derivation_incompleteincompleteEffect or assignment-relation rows could not be fully derived.
result_contract_derivation_incompleteincompleteResult-contract rows could not be fully derived.
result_obligation_derivation_incompleteincompleteResult-obligation rows could not be fully derived.
effect_budget_exhaustedincompleteThe effect budget ran out.
call_shape_coverage_incompleteincompleteA call shape is incomplete, so its argument, group, and binding rows were not produced.
jsx_projection_incompleteincompleteA JSX attribute value could not be fully projected.
result_limit_reachedincompleteThe result limit was reached; more results exist.
broad_queryadvisoryThe query scanned the workspace without a name, path, or language anchor.

These are the default limits for query_code. Policy evaluation, and --query-file with --workspace-scaled-limits, scale some execution limits by source volume.

LimitValue
RQL query source text64 KiB
RQL nesting depth128
limit1 to 1000, default 100
where globs128, each at most 1024 bytes
Language labels32
Pattern nodes256
Pattern nesting64 levels
Kinds in one kind or not_kind list32
Patterns in one role list64
Named arguments (kwargs)64, names at most 128 bytes
name, text, and parameter_type predicate source4096 bytes
arity bounds0 to 1024
Capture label128 bytes
Steps per plan node16
Set operands per node2 to 16
Plan nodes64
Plan depth16
Entries in one occurrence, scope, binding, or candidate filter axis32
Binding name256 bytes
Decorator-binding module or imported_name4096 bytes
Entries in one configuration filter axis32
Configuration key4096 bytes
Segments in one configuration route64
Row predicates per filter16
Literals in one in set64
Columns per project32
Row field name256 bytes
protocol_ref, plan_ref, taint_ref3 to 192 bytes; namespace at most 63 bytes, name at most 128 bytes
LimitValueWhen exceeded
Scanned files20,000execution_budget_exhausted, truncated: true
Scanned source bytes128 MiBexecution_budget_exhausted, truncated: true
Structural fact nodes2,000,000execution_budget_exhausted, truncated: true
Seed and edge rows50,000pipeline_budget_exhausted, truncated: true
Provenance paths per result16provenance_truncated: true on the row

Semantic limits bound source and rows held by semantic steps, including replay, and file discovery. Structural queries and explain mode do not use them. Exhaustion reports semantic_budget_exhausted and names one of the lanes source, rows, retained_bytes, or files.

LimitValueLane
Materialized files256files
Resident source bytes16 MiBsource
Resident rows per semantic dimension1,000,000rows
Retained artifact and source bytes256 MiBretained_bytes

Source scans, lowering traversal and visits to existing rows are work telemetry, including outside a root and on replay. They never cause a semantic refusal; receipts report cumulative admissions plus work and largest per-root work balances alongside resident peaks. The same bytes can count twice. Solver step limits remain separate.

AnalysisLimitValue
TypestateReached rows1,000,000
TypestateFinding candidates8,192
TypestateSteps per witness64
TypestateExpansions per witness4,096
TypestateTotal witness expansions1,000,000
TypestateWitness bytes64 MiB
Value flowRetained relations262,144
Value flowRetained bytes16 MiB
Value flowEndpoints50,000
Value flowWitnesses4,096
Value flowSteps per witness4,096
Value flowExpansions per witness16,384
Value flowBytes per witness4 MiB
Value flowTotal witness steps262,144
Value flowTotal witness expansions1,048,576
Value flowTotal witness bytes16 MiB
TaintFindings50,000
TaintProjected bytes64 MiB
TaintOrigins per finding4,096
TaintWitnesses per finding4,096
TaintSteps per witness4,096
TaintBytes per witness4 MiB

witness options max_steps and max_bytes can only lower these limits.

dependency_evidence reads facts acquired from selected Cargo and JS/TS manifests and lockfiles before query execution. A files-only checkout can supply these facts without installed dependencies, declaration files, a build or a semantic-pack artifact. Acquisition does not execute package managers, target project scripts, lifecycle hooks or network requests. JS/TS supported formats and their limitations are documented in Language Support.

Each axis is an array of exact alternatives; different axes combine with AND. JSON axes and their RQL options are:

JSONRQLMeaning
ecosystems:ecosystem, :ecosystemsPackage ecosystem; Cargo uses cargo, JS/TS packages use npm, and JS toolchain constraints use npm-toolchain.
packages:package, :packagesActual package names, independent of manifest aliases.
kinds:kind, :kindsdeclared, constraint, locked, installed, or checksum. Cargo file acquisition emits declared and locked facts.
exact_versions:exact-version, :exact_versionsExact recorded version strings. Declarations have requirements, not exact versions.
version_ranges:version-range, :version_rangesVersion requirements matched against complete exact locked/installed evidence. Requires exactly ecosystems: ["cargo"] or ["npm"]; each uses its ecosystem semantics, including prerelease rules. npm supports comparator sets, unions, caret/tilde, partial/wildcard and hyphen ranges. Arbitrary sources and tags remain unresolved.
sources:source, :sourcesExact source identities. Registry URL and git revision identities remain distinct.
declared_by:declared-by, :declared_byEstablished owning BuildProject IDs from build topology identity.
scopes:scope, :scopesRecorded compile, runtime, test, provided, optional, feature_gated, or unknown scope. Cargo build requirements use unknown and retain their build kind as a condition.

For example, a curated review can select an exact recorded package and source:

(dependency-evidence
:ecosystem cargo :package widget :kind locked
:version-range "=1.2.3"
:source "registry+https://github.com/rust-lang/crates.io-index")

For an npm package instance, use npm comparator syntax and select the proven member through its declared_by ID when the policy requires ownership:

(dependency-evidence
:ecosystem npm :package example-lib :kind locked
:version-range ">=1.0.0 <1.3.0")

Each identity filter and version predicate applies to the same stored row. Peer constraints and engine requirements do not establish installation or the installed runtime. Unsupported overrides and conditional applicability remain explicit. A matching package in another member cannot supply this row’s owner; configuration mitigation needs the separately established correlation relation.

The dependency_evidence result row carries id, path, ecosystem, package, evidence_kind, optional version_requirement, exact_version, source, locator, and declared_by, plus scope, conditions, source_digest, start_byte, end_byte, optional range (1-based character line/column coordinates), and complete. Exact citations and source-slice hashes are derived from the retained publication bytes, including overlays and older revisions; queries do not reread current files to construct these citations. Conditions retain manifest aliases, workspace inheritance and its evidence, normal/dev/build kind, optional and feature declarations, raw target conditions, patch inputs, checksums, git revisions, and declaration-to-lock association candidates and reasons. complete describes interpretation of that record, not dependency activation.

Raw lock facts have no member owner. A separate owned lock fact is emitted only when selected manifest and lock evidence establish its association; it cites the lock span and preserves the declaring manifest’s path, snapshot and span as conditions. Multiple versions, sources and ambiguous candidates remain separate. A locked package does not prove installation, compilation or loading. Features and target conditions do not prove the enabled configuration. A version policy can request a review; it does not establish advisory exploitability.

Malformed input, missing or ambiguous associations, unsupported patches or Cargo configuration, cancellation and acquisition limits remain incomplete diagnostics. An empty incomplete answer cannot certify a clean project. .cargo/config precedence, rustflags and selected target configuration are separate supported configuration work; workspace co-occurrence does not establish applicability. The seed accepts where over evidence files and rejects languages; select the package ecosystem instead.

The same seed is available in an RQLP match selector:

(policy :id "review.widget.version"
:name "Review recorded widget version"
:message "Review the cited Cargo dependency instance"
:severity warning
:analysis (analysis :type match
:selector (rql
(dependency-evidence
:ecosystem cargo :package widget :kind locked
:version-range "=1.2.3"
:source "registry+https://github.com/rust-lang/crates.io-index"))))

Findings retain the exact dependency evidence ID, version, source, established owner (when available), input digest, and source citation. Use an established declared_by ID to restrict a policy to a particular member. A source match must not be replaced with a package-name-only match when distinguishing registries or git instances. Configuration mitigation requires an established component relation; this seed does not infer one from files sharing a workspace.

The registered dependency-configuration relation binds a recorded dependency to an explicitly reviewed configuration mapping. :owner is the exact topology identity carried by the dependency’s declared_by, rather than a member name or path pattern. The author declares the complete file set for this bounded claim and each lower-to-higher override explicitly. This mapping does not discover framework bindings, deployment settings, environment values, or an actual runtime configuration.

(filter :where ((mitigated eq false))
(correlate
:relation (dependency-configuration
:owner "<exact declared_by identity>"
:ecosystem npm :version-ranges [">=1 <1.3"]
:documents ["packages/a/base.properties" "packages/a/override.properties"]
:overrides [["packages/a/base.properties" "packages/a/override.properties"]]
:values ["true"])
:code (dependency-evidence :ecosystem npm :package example
:kind locked :version-range "^1")
:configuration (configuration-facts :format properties
:key "mitigation.enabled")))

The JSON relation is dependency_configuration with owner, ecosystem, version_ranges, documents, overrides, and values. npm and Cargo ranges use their existing ecosystem semantics. The same exact dependency row supplies owner and version; declared ranges and peer constraints cannot prove mitigation. The configuration input selects one flat .properties key. Desired values are exact plain scalar spellings; escaped, continued, or interpolated values remain unsupported. Other formats and inferred framework precedence are outside this relation’s support boundary.

Resolution reads every occurrence in the full immutable mapped documents before applying configuration row filters or comparing the desired value. A duplicate key conflicts even if both spellings agree. Incomparable winning layers, missing or malformed documents, unsupported values, cancellation, and limits retain typed uncertainty. There are at most 32 documents, 128 override edges, 4096 contributions, and 16384 precedence steps, also constrained by query budgets. Repeated retained configuration proof is capped at 8 MiB and the query semantic retained-byte limit; exhaustion preserves an unmitigated witness with omitted proof.

Each input dependency remains a cross_domain witness. mitigated is true only when the owner matches, the recorded locked/installed exact version supports the mitigation, and complete effective evidence uniquely selects the desired value. False means mitigation was not proved; it does not mean the component executes or is exploitable. The filter above therefore retains affected witnesses under unknown configuration and works unchanged in an RQLP match selector.

Rows retain dependency_id, the reviewed owner, mapping_id, canonical effective_configuration proof/completeness/ordered contributions/precedence, and exact configuration_contributors citations. Different-owner witnesses carry no unrelated configuration pair. The dependency’s lock citation anchors the row, and CLI, MCP, and policy execution use the same evidence.