r-io suiter-io suiteinterceptor docs
← Model loading
Node interceptor / Functional model

Function

Converts an editable JSON property into explicit, queryable Satisfies relations between functions and objectives.

FN

FunctionModelsPopulateInterceptor

Materializes objective satisfaction in the graph.

Function → Satisfies → Objective
TriggerThe node type is exactly Function. The interceptor reads its objectives satisfied JSON array after add and after update.
PARSERead declarations

Each entry provides an objective identifier and, when present, a pertinence value.

ENSUREResolve objective

The target Objective is retrieved or created before the relation is written.

MATERIALIZECreate Satisfies

A deterministic edge id prevents duplicate relations across repeated executions.

01 · Data flow

Property becomes graph structure

Functionnode added or updated
JSON propertyobjectives satisfied
Resolve targetexisting/new Objective
Build edge idauto_edge_…
Satisfieswith pertinence
afterAdd / afterUpdatesimplified
for declaration in parse(function["objectives satisfied"]):
    objective = findObjective(declaration.id)
    if objective is missing: create it
    edgeId = "auto_edge_" + objective.id + "_" + function.id
    if edgeId does not exist:
        add Satisfies(function, objective,
                      pertinence = declaration.pertinence)
        // no preAndPostTreatment block: CoreGovImpl skips the chain
02 · Guarantees

Deterministic, but intentionally additive

Idempotenceauto_edge_<objective>_<function>

Repeating the hook does not create the same edge twice.

Target integrityObjective exists before Satisfies

The graph never receives a relation whose target is absent.

Recursion controlno preAndPostTreatment block

Derived add/update requests carry no preAndPostTreatment block, so CoreGovImpl skips the interceptor chain for them.

Important reconciliation limit

The implementation creates missing Satisfies edges. It does not update pertinence on an existing edge and does not delete a stale relation when an objective is removed from the JSON property.

Compare with the other node behaviorsAll node interceptors →
Intercepteur de nœud / Modèle fonctionnel

Function

Convertit une propriété JSON éditable en relations Satisfies explicites et interrogeables entre fonctions et objectifs.

FN

FunctionModelsPopulateInterceptor

Matérialise la satisfaction des objectifs dans le graphe.

Function → Satisfies → Objective
DéclencheurLe type du nœud est exactement Function. Après ajout ou mise à jour, l’intercepteur lit le tableau JSON objectives satisfied.
ANALYSERLire les déclarations

Chaque entrée fournit un identifiant d’objectif et éventuellement une pertinence.

GARANTIRRésoudre l’objectif

L’Objective cible est retrouvé ou créé avant l’écriture de la relation.

MATÉRIALISERCréer Satisfies

Un identifiant déterministe évite les doublons lors d’exécutions répétées.

01 · Flux de données

La propriété devient une structure du graphe

Functionnœud ajouté ou modifié
Propriété JSONobjectives satisfied
Résoudre la cibleObjective existant/nouveau
Construire l’idauto_edge_…
Satisfiesavec pertinence
afterAdd / afterUpdatesimplifié
pour déclaration dans parse(function["objectives satisfied"]) :
    objectif = chercherObjective(déclaration.id)
    si absent : le créer
    edgeId = "auto_edge_" + objectif.id + "_" + function.id
    si edgeId n’existe pas :
        ajouter Satisfies(function, objectif, pertinence)
        // aucun bloc preAndPostTreatment : CoreGovImpl ignore la chaîne
02 · Garanties

Déterministe, mais volontairement additif

Idempotenceauto_edge_<objectif>_<fonction>

La répétition du hook ne duplique pas la relation.

Intégrité de la cibleObjective avant Satisfies

Aucune relation n’est produite vers une cible absente.

Contrôle de récursionaucun bloc preAndPostTreatment

Les requêtes dérivées ne portent aucun bloc preAndPostTreatment ; CoreGovImpl n’y rejoue donc pas la chaîne.

Limite de réconciliation

L’implémentation ajoute les relations manquantes. Elle ne met pas à jour la pertinence d’une relation existante et ne supprime pas une relation devenue obsolète après modification du JSON.

Comparer les autres comportements de nœudsTous les intercepteurs de nœuds →