`nexyron.feature_get`
Generic Description
nexyron.feature_get computes one registered feature for one abstraction subject.
CALL nexyron.procedures()
YIELD name, description, parameters, output_columns
WHERE name = 'nexyron.feature_get'
RETURN name, description, parameters, output_columns
Abstraction-platform registry procedures create, list, read, and inspect named contracts such as abstractions, features, datasets, snapshots, models, policies, interventions, scenarios, and split policies.
Consumer-Level Explanation
Use this when you want one raw feature value without building an entire snapshot contract. The procedure reads the feature definition, resolves the requested subject through the feature's abstraction, substitutes that subject into $subject_id and related feature placeholders, runs the feature query, and returns the matching value.
For whole feature maps, use nexyron.feature_serve with a snapshot. For a single definition-level value, use nexyron.feature_get.
Parameters
feature: Feature definition name. Required.subject_id: Requested subject identifier. Required.at: Optional as-of timestamp in epoch milliseconds.system_at: Optional system-time cutoff in epoch milliseconds.
Output Columns
subject_idsnapshot_tsfeaturevaluesource
Example Contract Prerequisite
The executable Cypher blocks on this page query nexyron.procedures() so they work in an empty database and stay synchronized with the live procedure registry. A direct CALL nexyron.feature_get(...) requires the named abstraction contracts, artifacts, features, snapshots, datasets, models, or policies referenced by that call to exist first; otherwise the runtime correctly fails with an unknown-contract error rather than inventing state.
Conceptual Explanation
Feature definitions remain Cypher contracts that return subject_id and value. The difference is that the owning abstraction now supplies the subject. A modern feature query calculates one value for one runtime subject by using $subject_id as its only runtime input.
This keeps the platform aligned around one subject identity: abstractions define who or what belongs to a semantic set, features compute values for those subjects, and snapshots record feature maps at a time grain.
The health and dry-run path follows the same model at small scale. For each abstraction, it samples up to ten abstraction subjects and calculates placeholder-backed features for those sampled subjects. The check validates that the feature can run with real subject parameters and that returned rows still belong to the sampled abstraction members.
More Detailed Explanation
In practical queries, start by deciding the row grain you want after the call: one row per node, one row per path, one row per registry object, one row per artifact, or one row per summary. Then keep that grain explicit with YIELD and named projections. That is the difference between a useful planner-facing example and a vague call that downstream tooling cannot safely compose. For contract-driven abstraction procedures, the executable examples on these pages intentionally inspect procedure metadata unless the required named artifacts are created in the same example.
Advanced Example
CALL nexyron.procedures()
YIELD name, parameters, output_columns
WHERE name = 'nexyron.feature_get'
RETURN name,
[p IN parameters | p.name] AS parameter_names,
output_columns
ORDER BY name
Real Use Cases
- Debug one member's feature value before materializing a larger snapshot.
- Validate that a newly generated feature aligns with its abstraction source set.
- Compute an on-demand feature value for a model explanation or policy decision path.
- inspect or operate named abstraction contracts without reconstructing hidden prompt context in the frontend
- keep feature, dataset, snapshot, model, policy, and artifact workflows on the backend contract path
Real Limitations And Tradeoffs
feature_getfirst reads the stream-backed materialized value for the requested feature and subject when one exists at or beforeat; otherwise it executes the registered feature query for that one subject.- Membership validation only has teeth when the abstraction has a real
source_query. Label-only abstractions still work, but they do not define the stricter virtual subject set. - Feature queries must still return
subject_idandvalue. For already materialized values, parser-native selector reads such asactor(Member:'member-102').subscription_packageuse the feature stream directly and behave like latest-as-of temporal property access. - Legacy all-subject feature queries still work, but generated features should use runtime subject placeholders so
feature_getdoes not have to scan the full dataset to answer one subject. - Dry-run sampling is a contract check, not a full snapshot. It validates a bounded set of sampled subjects before broader materialization.