{
  "@context": {
    "schema": "https://schema.org/",
    "mad": "https://martialartsdefinitions.com/ns/mad#",
    "mac": "https://martialartsdefinitions.com/ns/mac#",
    "mal": "https://martialartsdefinitions.com/ns/mal#",
    "dtm": "https://martialartsdefinitions.com/ns/dtm#",
    "rwk": "https://martialartsdefinitions.com/ns/rwk#",
    "relation": "https://martialartsdefinitions.com/ns/relation#"
  },
  "_linkedDataNote": "This file uses compact identifiers. Before RDF, OWL, or JSON-LD tooling is applied, verify @context resolves correctly. See manifest.json linkedDataStatus.",
  "version": "2026-06-v0.1",
  "status": "active",
  "lastUpdated": "2026-06-10",
  "schemaVersion": "0.1",
  "generatedFrom": "MAD_WORKBOOK_6-10-26 \u2014 Relation Vocabulary sheet",
  "transitivityDefault": false,
  "transitivityNote": "All predicates are non-transitive unless explicitly marked transitive:true. Only partOf is currently marked transitive.",
  "predicates": [
    {
      "id": "relation:partOf",
      "label": "partOf",
      "definition": "Subject belongs within the larger concept or structure named by the object.",
      "plainLanguageDefinition": "The subject is a part of, or contained within, the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": true,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "partOf is directional; the inverse (hasPart) is not automatically inferred unless separately declared.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "If A partOf B and B partOf C, a machine may infer A is within C. This is the only approved transitive chain in MAD.",
      "disallowedInference": "Do not infer equivalence, authority, or developmental dependency from partOf.",
      "invalidUse": "Do not use partOf to express influence, shaping, or conditional dependency. Use shapedBy, conditionedBy, or conditionsAccessTo instead.",
      "inferenceWarning": "partOf describes containment or architectural position, not causal contribution.",
      "example": {
        "subject": "DTM-065",
        "predicate": "partOf",
        "object": "DTM-060"
      },
      "notes": "Primary structural relation. The only MAD predicate explicitly permitted to be transitive. Direction: subject \u2192 larger parent. Use when: Hierarchy or containment.."
    },
    {
      "id": "relation:hasChildConcept",
      "label": "hasChildConcept",
      "definition": "Subject (parent concept) directly contains, organizes, or governs the object (child concept) within the same namespace.",
      "plainLanguageDefinition": "The subject is the parent; the object is a governed child concept within it.",
      "version": "1.0",
      "status": "reserved",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "hasChildConcept implies partOf in the reverse direction but that inverse is not auto-generated; it must be separately declared.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "Object is a governed child concept of the subject.",
      "disallowedInference": "Do not infer that children are equivalent to their parent or that the parent defines the child's behavior.",
      "invalidUse": "Do not use hasChildConcept when the subject only influences or shapes the object. Use shapedBy or conditionedBy instead.",
      "inferenceWarning": "hasChildConcept is structural, not causal. A child concept within a hub inherits position, not behavior.",
      "example": {
        "subject": "DTM-060",
        "predicate": "hasChildConcept",
        "object": "DTM-065"
      },
      "notes": "Used for parent hub \u2192 child capacity page relationships within a namespace.",
      "_reservedNote": "Not used in current v0.1 governed graph. Defined for potential future use. Do not use in core-relations.json or page-assertions.json until this status is changed to active."
    },
    {
      "id": "relation:definesScopeOf",
      "label": "definesScopeOf",
      "definition": "Subject establishes the conceptual scope or boundary of the object.",
      "plainLanguageDefinition": "The subject page or concept grounds and bounds the conceptual scope of the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is the authoritative scoping reference for the object.",
      "disallowedInference": "Do not infer that the object is subordinate to or contained within the subject.",
      "invalidUse": "Do not use for general relationships; use only for foundational definition or synthesis pages.",
      "inferenceWarning": "Scope definition is not containment. The scoping concept governs meaning, not hierarchy.",
      "example": {
        "subject": "DTM-001",
        "predicate": "definesScopeOf",
        "object": "DTM-000"
      },
      "notes": "Used when a definition/synthesis page grounds a hub or namespace. Direction: subject \u2192 scoped object. Use when: Foundational definition/synthesis pages.."
    },
    {
      "id": "relation:complementedBy",
      "label": "complementedBy",
      "definition": "Subject is paired with Object as a distinct but non-subordinate concept that completes its function.",
      "plainLanguageDefinition": "The subject and object are conceptually paired \u2014 each completes the other without either being subordinate.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed assertion with symmetric semantic meaning",
      "symmetric": true,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "conceptually symmetric but reciprocal graph row requires explicit declaration.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "Subject and object are distinct but mutually clarifying concepts.",
      "disallowedInference": "Do not infer containment, hierarchy, or causal dependency from complementedBy.",
      "invalidUse": "Do not use when one concept is clearly subordinate to the other. Use partOf instead.",
      "inferenceWarning": "Complementary pairing is not equivalence.",
      "example": {
        "subject": "MAL-010",
        "predicate": "complementedBy",
        "object": "MAL-011"
      },
      "notes": "Reserved for distinct mutually clarifying pairings \u2014 used sparingly. Direction: Paired \u2192 complementary. Use when: Distinct mutually clarifying pairings.."
    },
    {
      "id": "relation:enables",
      "label": "enables",
      "definition": "Subject makes operation of the object possible.",
      "plainLanguageDefinition": "The subject provides the necessary medium or condition for the object to operate.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is a necessary medium condition for the object.",
      "disallowedInference": "Do not infer that subject causes, produces, or guarantees outcomes from the object.",
      "invalidUse": "Do not use when the subject merely affects intensity or quality. Use shapedBy or conditionedBy instead.",
      "inferenceWarning": "Enabling is not causing. The object may still fail to produce outcomes if other conditions are absent.",
      "example": {
        "subject": "MAL-010",
        "predicate": "enables",
        "object": "MAL-020"
      },
      "notes": "Direction: subject \u2192 enabled process. Use when: One condition provides needed medium.."
    },
    {
      "id": "relation:conditionsAccessTo",
      "label": "conditionsAccessTo",
      "definition": "Subject sets the threshold for whether the object can operate.",
      "plainLanguageDefinition": "The subject is a gating condition \u2014 the object cannot function productively unless the subject condition is met.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The object cannot function productively unless the subject condition is met.",
      "disallowedInference": "Do not infer that meeting the threshold guarantees productive outcomes.",
      "invalidUse": "Do not use when subject shapes quality rather than gating access. Use shapedBy or conditionedBy.",
      "inferenceWarning": "Threshold gating is binary access logic, not quality logic.",
      "example": {
        "subject": "MAL-030",
        "predicate": "conditionsAccessTo",
        "object": "MAL-020"
      },
      "notes": "Direction: subject \u2192 gated object. Use when: Threshold or gating logic.."
    },
    {
      "id": "relation:conditionedBy",
      "label": "conditionedBy",
      "definition": "Subject is shaped in whether it can function productively by the object.",
      "plainLanguageDefinition": "The object conditions the subject \u2014 shaping whether it functions well, not just whether it operates.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The object shapes whether the subject can function productively.",
      "disallowedInference": "Do not conflate conditionedBy with conditionsAccessTo (gating) or shapedBy (broader influence).",
      "invalidUse": "Do not use when the object gates entry rather than shapes quality; use conditionsAccessTo.",
      "inferenceWarning": "Conditioning is not causation. The subject may partially function without the condition being fully met.",
      "example": {
        "subject": "MAL-010",
        "predicate": "conditionedBy",
        "object": "MAL-030"
      },
      "notes": "Direction: subject \u2190 conditioning factor. Use when: Object shapes whether Subject can function.."
    },
    {
      "id": "relation:primarilyDrives",
      "label": "primarilyDrives",
      "definition": "Subject is the main operating driver of the object.",
      "plainLanguageDefinition": "The subject is the chief generative process for the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is the primary mechanism generating the object.",
      "disallowedInference": "Do not infer that the subject is the sole driver or that the object cannot occur through other means.",
      "invalidUse": "Do not use when several co-equal drivers exist. Use contributesTo instead.",
      "inferenceWarning": "Primary driving does not imply exclusive causation.",
      "example": {
        "subject": "MAL-020",
        "predicate": "primarilyDrives",
        "object": "MAL-080"
      },
      "notes": "Direction: subject \u2192 primary effect. Use when: One process is the chief generator.."
    },
    {
      "id": "relation:contributesTo",
      "label": "contributesTo",
      "definition": "Subject supports emergence of the object but is not the sole driver.",
      "plainLanguageDefinition": "The subject is one contributing factor toward the object \u2014 partial, not primary.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json",
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is one supporting factor for the object.",
      "disallowedInference": "Do not chain contributesTo relations. A contributesTo B and B contributesTo C does not imply A contributesTo C.",
      "invalidUse": "Do not use when the relation is primary or mandatory. Use primarilyDrives or enables.",
      "inferenceWarning": "This is the highest-risk predicate for false transitivity. Never chain. See transitivityRule in manifest.",
      "example": {
        "subject": "MAL-020",
        "predicate": "contributesTo",
        "object": "MAL-090"
      },
      "notes": "Hard non-transitive. Any chaining of contributesTo is a governed error. Direction: subject \u2192 partial effect. Use when: Partial or supporting causation.."
    },
    {
      "id": "relation:calibrates",
      "label": "calibrates",
      "definition": "Subject tunes the level, intensity, or distribution of the object.",
      "plainLanguageDefinition": "The subject sets or adjusts the challenge profile or intensity of the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject shapes the intensity or distribution of the object.",
      "disallowedInference": "Do not infer that calibration produces the object or guarantees its quality.",
      "invalidUse": "Do not use for simple containment. Use for demand or load-setting relationships.",
      "inferenceWarning": "Calibration is a tuning relationship, not a generative one.",
      "example": {
        "subject": "MAL-040",
        "predicate": "calibrates",
        "object": "MAL-080"
      },
      "notes": "Direction: subject \u2192 calibrated object. Use when: Demand, load, or challenge-setting.."
    },
    {
      "id": "relation:emergesThrough",
      "label": "emergesThrough",
      "definition": "Subject comes into being through repeated operation of the object.",
      "plainLanguageDefinition": "The subject is generated over time through repeated operation of the object process.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is generated through the iterative operation of the object.",
      "disallowedInference": "Do not infer that operating the object guarantees the subject will emerge.",
      "invalidUse": "Do not use when subject merely co-occurs with the object.",
      "inferenceWarning": "Emergence is conditional. Other conditions may need to be met for the subject to actually emerge.",
      "example": {
        "subject": "MAL-080",
        "predicate": "emergesThrough",
        "object": "MAL-020"
      },
      "notes": "Direction: subject \u2190 generative process. Use when: A process generates the subject over time.."
    },
    {
      "id": "relation:emergesFrom",
      "label": "emergesFrom",
      "definition": "Subject arises out of prior change in the object.",
      "plainLanguageDefinition": "The subject depends on prior formation in the object \u2014 it arises from that earlier state.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject depends on prior change in the object.",
      "disallowedInference": "Do not infer that the subject is equivalent to the object or contained within it.",
      "invalidUse": "Do not use when the relationship is simultaneous mutual influence.",
      "inferenceWarning": "Prior-state dependency is not containment or equivalence.",
      "example": {
        "subject": "MAL-090",
        "predicate": "emergesFrom",
        "object": "MAL-080"
      },
      "notes": "Direction: subject \u2190 prior basis. Use when: One state depends on prior formation.."
    },
    {
      "id": "relation:doesNotGuarantee",
      "label": "doesNotGuarantee",
      "definition": "Subject can occur without ensuring the object.",
      "plainLanguageDefinition": "The subject does not automatically produce the object. The transition is non-automatic.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "disambiguating",
      "allowedInFiles": [
        "core-relations.json",
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject can occur without the object following.",
      "disallowedInference": "Do not infer that the object never follows; the relation asserts non-automaticity, not impossibility.",
      "invalidUse": "Do not use to claim the object never occurs; use only for important non-automatic transitions.",
      "inferenceWarning": "doesNotGuarantee is a boundary assertion, not a negation of possibility.",
      "example": {
        "subject": "MAL-080",
        "predicate": "doesNotGuarantee",
        "object": "MAL-090"
      },
      "notes": "Direction: subject \u219b guaranteed result. Use when: Important non-automatic transitions.."
    },
    {
      "id": "relation:shapedBy",
      "label": "shapedBy",
      "definition": "Subject is configured in practice by the object.",
      "plainLanguageDefinition": "The object is a background condition that shapes how the subject operates in practice.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The object is a shaping condition that configures how the subject operates.",
      "disallowedInference": "Do not infer that shapedBy implies the object interprets outcomes of the subject.",
      "invalidUse": "Do not use when the object only interprets outcomes; use interprets instead.",
      "inferenceWarning": "Shaping is a background conditioning relationship, not a causal or generative one.",
      "example": {
        "subject": "MAL-020",
        "predicate": "shapedBy",
        "object": "MAL-050"
      },
      "notes": "Direction: subject \u2190 shaping condition. Use when: Background conditions and structural influences.."
    },
    {
      "id": "relation:mediatedBy",
      "label": "mediatedBy",
      "definition": "Subject is experienced through the filtering effect of the object.",
      "plainLanguageDefinition": "The object mediates how the subject is received or experienced.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The object changes how another factor is received or experienced.",
      "disallowedInference": "Do not infer that the mediating object generates the subject.",
      "invalidUse": "Do not use when the object directly produces the subject.",
      "inferenceWarning": "Mediation is a filtering relationship, not a generative one.",
      "example": {
        "subject": "MAL-040",
        "predicate": "mediatedBy",
        "object": "MAL-060"
      },
      "notes": "Direction: subject \u2190 mediating condition. Use when: Object changes how another factor is received.."
    },
    {
      "id": "relation:interprets",
      "label": "interprets",
      "definition": "Subject reads, judges, or distinguishes the state of the object.",
      "plainLanguageDefinition": "The subject performs interpretive or diagnostic reading of the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "interpretive",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is the interpretive agent for the object.",
      "disallowedInference": "Do not infer that the interpretive relation implies causal production of the object.",
      "invalidUse": "Do not use for causal production relationships.",
      "inferenceWarning": "Interpretation is not causation.",
      "example": {
        "subject": "MAL-070",
        "predicate": "interprets",
        "object": "MAL-080"
      },
      "notes": "Direction: subject \u2192 interpreted object. Use when: Interpretive or diagnostic functions.."
    },
    {
      "id": "relation:mutuallyConstitutes",
      "label": "mutuallyConstitutes",
      "definition": "Subject and object are distinct but co-forming.",
      "plainLanguageDefinition": "Subject and object are separate concepts that shape each other's development simultaneously.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed assertion with symmetric semantic meaning",
      "symmetric": true,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "Conceptually symmetric but reciprocal graph row requires explicit declaration.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "Subject and object are co-forming and distinct.",
      "disallowedInference": "Do not infer equivalence or that one is contained within the other.",
      "invalidUse": "Do not use for one-way influence. Use shapedBy or conditionedBy instead.",
      "inferenceWarning": "Mutual constitution is not equivalence. The two concepts remain distinct.",
      "example": {
        "subject": "DTM-010",
        "predicate": "mutuallyConstitutes",
        "object": "DTM-020"
      },
      "notes": "Reserved for reciprocal constitutive pairs only. Used sparingly. Direction: subject \u2194 object. Use when: Reciprocal constitutive pairs only.."
    },
    {
      "id": "relation:derivesConditionallyFrom",
      "label": "derivesConditionallyFrom",
      "definition": "Subject depends on the object but only under additional conditions.",
      "plainLanguageDefinition": "The subject depends on the object, but only when additional conditions beyond the object alone are met.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject may derive from the object when relevant conditions are present.",
      "disallowedInference": "Do not infer that the object guarantees the subject. The relation is conditional, not automatic.",
      "invalidUse": "Do not use when dependency is unconditional.",
      "inferenceWarning": "This is a conditional dependency claim. The additional conditions required are not always named in the relation itself.",
      "example": {
        "subject": "DTM-030",
        "predicate": "derivesConditionallyFrom",
        "object": "DTM-010"
      },
      "notes": "Primary predicate for transfer/carryover claims. Never treat as automatic. Direction: subject \u2190 conditional source. Use when: Transfer/carryover claims that are not automatic.."
    },
    {
      "id": "relation:shapedThrough",
      "label": "shapedThrough",
      "definition": "Subject is formed through repeated operation of the object.",
      "plainLanguageDefinition": "The subject is shaped by sustained engagement with the object as a formative mechanism.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is shaped by the object as a formative process or mechanism.",
      "disallowedInference": "Do not infer that shapedThrough implies the subject is produced or guaranteed by the object.",
      "invalidUse": "Do not use for simple hierarchy or containment.",
      "inferenceWarning": "Formation is not production. The subject may be shaped without being determined.",
      "example": {
        "subject": "DTM-020",
        "predicate": "shapedThrough",
        "object": "MAL-020"
      },
      "notes": "Primary predicate for DTM concepts formed through MAL processes. Direction: subject \u2190 formative mechanism. Use when: DTM concepts formed through MAL processes.."
    },
    {
      "id": "relation:operatesThrough",
      "label": "operatesThrough",
      "definition": "Subject functions through the mechanism named by the object.",
      "plainLanguageDefinition": "The subject operates by means of the object mechanism.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject functions by means of the object.",
      "disallowedInference": "Do not infer containment or equivalence from operatesThrough.",
      "invalidUse": "Do not use for entity containment. Use partOf instead.",
      "inferenceWarning": "Operating through a mechanism is not the same as being part of it.",
      "example": {
        "subject": "MAC-010",
        "predicate": "operatesThrough",
        "object": "MAL-000"
      },
      "notes": "Direction: subject \u2192 operating mechanism. Use when: Domain activity explained through a framework.."
    },
    {
      "id": "relation:functionsAsMediumFor",
      "label": "functionsAsMediumFor",
      "definition": "Subject serves as the medium through which the object occurs.",
      "plainLanguageDefinition": "The subject is the medium condition that makes the object possible.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is the medium through which the object occurs.",
      "disallowedInference": "Do not infer that the subject merely contributes to the object.",
      "invalidUse": "Do not use when subject only partially contributes rather than serving as primary medium.",
      "inferenceWarning": "Medium relations are more than contribution \u2014 the subject is the site or channel of the object.",
      "example": {
        "subject": "MAC-010",
        "predicate": "functionsAsMediumFor",
        "object": "DTM-000"
      },
      "notes": "Direction: subject \u2192 medium for outcome. Use when: Activity-as-medium relations.."
    },
    {
      "id": "relation:occursThrough",
      "label": "occursThrough",
      "definition": "Subject takes place through the medium named by Object.",
      "plainLanguageDefinition": "The subject happens by means of the object as its enabling medium.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject occurs through the object as its medium.",
      "disallowedInference": "Do not confuse with enables (enabler \u2192 enabled). Direction here is subject \u2190 enabling medium.",
      "invalidUse": "Do not use interchangeably with enables.",
      "inferenceWarning": "occursThrough and enables have opposite directions. Check direction carefully.",
      "example": {
        "subject": "MAL-011",
        "predicate": "occursThrough",
        "object": "MAL-010"
      },
      "notes": "Direction: subject \u2190 enabling medium. Use when: Subject occurs through Object as medium.."
    },
    {
      "id": "relation:accumulatesThrough",
      "label": "accumulatesThrough",
      "definition": "Subject builds up progressively through the object process.",
      "plainLanguageDefinition": "The subject accumulates gradually through repeated operation of the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject progressively builds through the object.",
      "disallowedInference": "Do not use for one-time formation or consolidation into durable capacity.",
      "invalidUse": "Do not use when the subject is being consolidated rather than accumulated. Use consolidatesThrough.",
      "inferenceWarning": "Accumulation is progressive and ongoing; use consolidatesThrough for the durability stage.",
      "example": {
        "subject": "DTM-020",
        "predicate": "accumulatesThrough",
        "object": "MAL-080"
      },
      "notes": "Direction: subject \u2190 accumulating process. Use when: A developmental form gathers through a named process.."
    },
    {
      "id": "relation:consolidatesThrough",
      "label": "consolidatesThrough",
      "definition": "Subject is consolidated into durable capacity through the object process.",
      "plainLanguageDefinition": "The subject reaches durability and reliability through the object process.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject becomes durable and reliable through the object.",
      "disallowedInference": "Do not use for initial accumulation. Use accumulatesThrough.",
      "invalidUse": "Do not use when the subject is still in the accumulation stage.",
      "inferenceWarning": "Consolidation represents a later developmental stage than accumulation.",
      "example": {
        "subject": "DTM-020",
        "predicate": "consolidatesThrough",
        "object": "MAL-090"
      },
      "notes": "Direction: subject \u2190 consolidating process. Use when: A developmental form reaches durability through a named process.."
    },
    {
      "id": "relation:supportedBy",
      "label": "supportedBy",
      "definition": "Subject's likelihood or range is increased by the object without strict requirement.",
      "plainLanguageDefinition": "The object increases the likelihood or range of the subject but is not strictly required.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The object increases the likelihood or range of the subject.",
      "disallowedInference": "Do not treat supportedBy as strict requirement. Use derivesConditionallyFrom for strict conditional dependency.",
      "invalidUse": "Do not use when the object is strictly required.",
      "inferenceWarning": "Support increases probability; it does not establish necessity.",
      "example": {
        "subject": "DTM-040",
        "predicate": "supportedBy",
        "object": "MAL-070"
      },
      "notes": "Direction: subject \u2190 supporting condition. Use when: Object increases likelihood without being strictly required.."
    },
    {
      "id": "relation:bridgesTo",
      "label": "bridgesTo",
      "definition": "Subject is the primary structural connection between namespaces via the object.",
      "plainLanguageDefinition": "The subject is the strongest cross-namespace bridge pointing toward the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "cross-reference",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is the primary cross-namespace structural connection to the object.",
      "disallowedInference": "Do not infer containment, equivalence, or implementation mapping from bridgesTo.",
      "invalidUse": "Do not use for ordinary cross-references. Use crossLinksTo in page assertions instead.",
      "inferenceWarning": "bridgesTo is deliberately rare. It marks the strongest structural cross-namespace connection, not general relatedness.",
      "example": {
        "subject": "DTM-040",
        "predicate": "bridgesTo",
        "object": "RWK-000"
      },
      "notes": "Should appear at most once or twice in the entire governed graph per namespace boundary. Direction: subject \u2192 bridged target. Use when: Strongest cross-namespace connection. Rare and deliberate.."
    },
    {
      "id": "relation:drawsFrom",
      "label": "drawsFrom",
      "definition": "Subject draws conceptual or structural content from the object.",
      "plainLanguageDefinition": "The subject draws from the object as a conceptual or structural source without being contained by it.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "cross-reference",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject draws conceptual content from the object.",
      "disallowedInference": "Do not infer containment (partOf) or conditional dependency (derivesConditionallyFrom) from drawsFrom.",
      "invalidUse": "Do not use when the relationship is hierarchical (use partOf) or conditionally dependent (use derivesConditionallyFrom).",
      "inferenceWarning": "Drawing from is a loose conceptual sourcing relation. It does not imply structural containment.",
      "example": {
        "subject": "DTM-050",
        "predicate": "drawsFrom",
        "object": "DTM-020"
      },
      "notes": "Direction: subject \u2190 source concept. Use when: Framework draws from another concept without containment.."
    },
    {
      "id": "relation:hasDevelopmentalRole",
      "label": "hasDevelopmentalRole",
      "definition": "Subject occupies a named developmental role within a cluster, sequence, or conceptual system.",
      "plainLanguageDefinition": "The subject has a specific named role within a developmental sequence or capacity cluster.",
      "version": "1.0",
      "status": "reserved",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject has the named structural role within the object cluster or system.",
      "disallowedInference": "Do not infer hierarchy, containment, or causal dependency from hasDevelopmentalRole.",
      "invalidUse": "Do not use for general containment. Use partOf for structural containment.",
      "inferenceWarning": "Developmental roles describe structural position within a sequence, not causal relationships.",
      "example": {
        "subject": "DTM-061",
        "predicate": "hasDevelopmentalRole",
        "object": "DTM-060"
      },
      "notes": "Used to name special roles like sustaining capacity or closing capacity within the DTM-060 cluster.",
      "_reservedNote": "Not used in current v0.1 governed graph. Defined for potential future use. Do not use in core-relations.json or page-assertions.json until this status is changed to active."
    },
    {
      "id": "relation:precedesDevelopmentally",
      "label": "precedesDevelopmentally",
      "definition": "Subject commonly precedes object in developmental logic, without implying strict linear staging or required completion.",
      "plainLanguageDefinition": "The subject typically develops before the object, but this is a common sequence, not a strict requirement.",
      "version": "1.0",
      "status": "reserved",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject commonly precedes the object in developmental sequence.",
      "disallowedInference": "Do not infer that the subject must be complete before the object can begin. Do not chain precedesDevelopmentally relations into full sequence inference.",
      "invalidUse": "Do not use for strict causal dependency; use derivesConditionallyFrom. Do not use for general partial causation; use contributesTo.",
      "inferenceWarning": "Developmental precedence is a tendency, not a gate. Sequencing here is common, not required.",
      "example": {
        "subject": "DTM-064",
        "predicate": "precedesDevelopmentally",
        "object": "DTM-065"
      },
      "notes": "Hard non-transitive. DTM-061 precedesDevelopmentally DTM-062 and DTM-062 precedesDevelopmentally DTM-063 does NOT imply DTM-061 precedesDevelopmentally DTM-063 unless explicitly stated.",
      "_reservedNote": "Not used in current v0.1 governed graph. Defined for potential future use. Do not use in core-relations.json or page-assertions.json until this status is changed to active."
    },
    {
      "id": "relation:organizesProgression",
      "label": "organizesProgression",
      "definition": "Subject organizes the developmental movement of learners over time.",
      "plainLanguageDefinition": "The subject is the organizational container within which the object progression occurs.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject organizes the object progression.",
      "disallowedInference": "Do not infer that organization implies equivalence with the progression itself.",
      "invalidUse": "Use for MAC structural program/progression relationships only.",
      "inferenceWarning": "",
      "example": {
        "subject": "MAC-004",
        "predicate": "organizesProgression",
        "object": "MAC-006"
      },
      "notes": "Direction: subject \u2192 progression concept. Use when: Programs organizing learner progression.."
    },
    {
      "id": "relation:marksOrRecognizes",
      "label": "marksOrRecognizes",
      "definition": "Subject marks or formally recognizes the object without equating to it.",
      "plainLanguageDefinition": "The subject provides formal recognition of the object without being equivalent to it.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject provides recognition of the object.",
      "disallowedInference": "Do not infer that marking or recognition equals the thing being recognized.",
      "invalidUse": "Do not imply that rank equals progression.",
      "inferenceWarning": "Recognition systems (rank) do not define or constitute what they recognize (progression).",
      "example": {
        "subject": "MAC-007",
        "predicate": "marksOrRecognizes",
        "object": "MAC-006"
      },
      "notes": "Direction: subject \u2192 recognized concept. Use when: Rank systems marking progression.."
    },
    {
      "id": "relation:crossLinksTo",
      "label": "crossLinksTo",
      "definition": "Subject provides a navigational or conceptual cross-reference to the object.",
      "plainLanguageDefinition": "The subject and object are meaningfully related and the page notes that connection, without implying hierarchy or causality.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "cross-reference",
      "allowedInFiles": [
        "core-relations.json",
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject notes a meaningful connection to the object for navigational or conceptual purposes.",
      "disallowedInference": "Do not infer hierarchy, causality, dependency, or implementation from crossLinksTo.",
      "invalidUse": "Do not use crossLinksTo as a substitute for a governed structural or developmental predicate.",
      "inferenceWarning": "crossLinksTo is a navigational pointer, not a governed graph claim.",
      "example": {
        "subject": "DTM-060",
        "predicate": "crossLinksTo",
        "object": "RWK-000"
      },
      "notes": ""
    },
    {
      "id": "relation:implementationMappingFor",
      "label": "implementationMappingFor",
      "definition": "Subject is a framework-specific mapping of the canonical concept named by the object.",
      "plainLanguageDefinition": "The subject is a governed operational mapping of the object inside an implementation framework.",
      "version": "1.0",
      "status": "reserved",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "implementation-directed",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:ImplementationFramework"
      ],
      "range": [
        "mad:Capacity",
        "mad:Concept"
      ],
      "directionality": "strictly directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "Implementation mappings flow from implementation framework toward canonical concept. No reciprocal inference is allowed.",
      "reversalForbidden": true,
      "reversalNote": "Implementation mappings flow from an implementation framework toward a canonical concept. The reverse direction is not a valid MAD relation. RWK may operationalize DTM; DTM is not defined by RWK.",
      "allowedInference": "The subject operationalizes or maps to the object within an implementation framework.",
      "disallowedInference": "Do not infer that the canonical concept depends on, belongs to, or is defined by the implementation framework.",
      "invalidUse": "Do not use to express equivalence, containment, or developmental dependency between an implementation term and a canonical DTM concept.",
      "inferenceWarning": "An implementation mapping describes how a framework operationalizes a concept. It does not make the framework term a canonical definition or namespace-level equivalent of the DTM term.",
      "example": {
        "subject": "RWK-000",
        "predicate": "implementationMappingFor",
        "object": "DTM-060"
      },
      "notes": "All RWK Warrior Key predicates pointing toward DTM capacities use this predicate. Direction: subject \u2192 canonical term. Use when: RWK Key entries mapping to DTM capacity definitions..",
      "_reservedNote": "Not used in current v0.1 governed graph. Defined for potential future use. Do not use in core-relations.json or page-assertions.json until this status is changed to active."
    },
    {
      "id": "relation:distinctFrom",
      "label": "distinctFrom",
      "definition": "Indicates that the subject should not be conflated with the object.",
      "plainLanguageDefinition": "The subject is meaningfully different from the object and should not be treated as the same concept.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "disambiguating",
      "allowedInFiles": [
        "core-relations.json",
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept",
        "mad:SoftConcept"
      ],
      "directionality": "directed assertion with symmetric semantic meaning",
      "symmetric": true,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "The distinction is conceptually symmetric, but reciprocal machine inference is not allowed by default. Relation instances must declare assertionScope. Page-scoped assertions must not be expanded into reciprocal global graph claims.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject should not be conflated with the object within the scope of the relation instance.",
      "disallowedInference": "Do not infer hierarchy, causality, developmental dependency, implementation, or global reciprocal graph expansion from distinctFrom.",
      "invalidUse": "Do not use distinctFrom to express subtype, hierarchy, developmental sequence, implementation mapping, or causal contribution. Use the appropriate structural, taxonomic, developmental, or implementation predicate instead.",
      "inferenceWarning": "A distinctFrom relation prevents conflation. It does not mean the two concepts are unrelated in every possible way.",
      "example": {
        "subject": "DTM-065",
        "predicate": "distinctFrom",
        "object": "Self-esteem"
      },
      "notes": "Used primarily for page-level disambiguation assertions. Requires assertionScope on every instance."
    },
    {
      "id": "relation:characterizedBy",
      "label": "characterizedBy",
      "definition": "Indicates that the subject is descriptively characterized by the object property, quality, or type.",
      "plainLanguageDefinition": "The subject exhibits or is distinguished by the object characteristic. This is a descriptive classification, not a causal claim.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "interpretive",
      "allowedInFiles": [
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept",
        "mad:SoftConcept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed. Characterization is descriptive and page-scoped.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is descriptively associated with the object quality or type within the scope of the assertion.",
      "disallowedInference": "Do not infer that characterizedBy establishes causation, hierarchy, containment, or that the object defines the subject.",
      "invalidUse": "Do not use characterizedBy to assert causal production, structural containment, or canonical definition. Use appropriate structural, developmental, or causal predicates instead.",
      "inferenceWarning": "characterizedBy is a descriptive classification predicate. It describes a quality of the subject; it does not explain how that quality arose or whether it is exhaustive.",
      "example": {
        "subject": "DTM-030",
        "predicate": "characterizedBy",
        "object": "near-transfer"
      },
      "notes": "Used in page assertions for classification claims. Always page-scoped."
    },
    {
      "id": "relation:definedBy",
      "label": "definedBy",
      "definition": "Indicates that the object page or concept is the canonical definition source for the subject.",
      "plainLanguageDefinition": "The object is the authoritative page that grounds the conceptual scope of the subject.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "attribution",
      "allowedInFiles": [
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The object page is the canonical scoping reference for the subject concept.",
      "disallowedInference": "Do not read definedBy as causal determination, containment, or subordination. The subject is not caused by, governed by, or owned by the object.",
      "invalidUse": "Do not use definedBy to express that a concept is causally produced, structurally contained, or functionally dependent on the object. Use definesScopeOf (inverted) for core governance relations. definedBy is a page-assertion attribution predicate only.",
      "inferenceWarning": "definedBy means the object is the definition source. It does not mean the subject is determined by, controlled by, or subordinate to the object. A future rename to hasDefinitionSource may be considered when the vocabulary is stable.",
      "example": {
        "subject": "DTM-010",
        "predicate": "definedBy",
        "object": "DTM-001"
      },
      "notes": "Page-assertion predicate only. Points from a concept page to its canonical definition/synthesis source. Not a structural or causal predicate. Scheduled for rename to hasDefinitionSource in v1.1 to avoid collision with semantic web property inheritance patterns. All instances in page-assertions.json will be updated at that time."
    },
    {
      "id": "relation:isNot",
      "label": "isNot",
      "definition": "Explicitly excludes the object category, concept, or claim from the subject's definition or scope.",
      "plainLanguageDefinition": "The subject explicitly does not include, equal, or operate as the object. This is a boundary exclusion, stronger than disambiguation.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "disambiguating",
      "allowedInFiles": [
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept",
        "mad:SoftConcept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed. Boundary exclusion is directional and page-scoped.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject explicitly excludes the object from its definition or scope.",
      "disallowedInference": "Do not infer that isNot means the two concepts are entirely unrelated or that the object is inferior. Boundary exclusion prevents category conflation; it does not negate all possible conceptual relationship.",
      "invalidUse": "Do not use isNot as a general negation predicate or as a substitute for distinctFrom. isNot is for explicit boundary declarations \u2014 cases where the page author needs to prevent a specific category conflation that would misdefine the concept. For softer non-conflation, use distinctFrom.",
      "inferenceWarning": "isNot is a hard boundary assertion. distinctFrom prevents conflation. These are not interchangeable. isNot is the stronger claim: the subject explicitly excludes the object from its definition.",
      "example": {
        "subject": "DTM-020",
        "predicate": "isNot",
        "object": "therapy"
      },
      "notes": "Reserved for cases where a concept must explicitly exclude a category that would fundamentally mischaracterize it if included. Use sparingly."
    },
    {
      "id": "relation:producesOutcome",
      "label": "producesOutcome",
      "definition": "Indicates that the subject is associated with a named outcome type as a described result of its operation.",
      "plainLanguageDefinition": "The subject is described as producing or being associated with the named outcome. This is a named outcome claim, not a guarantee for every practitioner.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "developmental",
      "allowedInFiles": [
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept",
        "mad:SoftConcept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is described as producing or being associated with the named outcome type under the conditions described by the concept.",
      "disallowedInference": "Do not infer that producesOutcome means the outcome is automatic, guaranteed, or universal across all practitioners. producesOutcome names a described outcome category; it does not assert unconditional causation.",
      "invalidUse": "Do not use producesOutcome to make universal causal claims. If the outcome is conditional, the relation instance note should specify the conditions. Do not use as a substitute for contributesTo, which describes partial causal support.",
      "inferenceWarning": "producesOutcome describes a named outcome associated with the subject concept. It does not guarantee that outcome for every practitioner or in every training environment. The MAL conditions (readiness threshold, developmental demand, relational environment, adaptation, stabilization) govern whether the outcome actually occurs.",
      "example": {
        "subject": "DTM-020",
        "predicate": "producesOutcome",
        "object": "interpretive capacity"
      },
      "notes": "Used in page assertions to name practitioner-level outcomes. The note field on each instance should clarify whether the outcome is conditional. Always page-scoped."
    },
    {
      "id": "relation:subClassOf",
      "label": "subClassOf",
      "definition": "Indicates that the subject is a subclass or subtype of the object category.",
      "plainLanguageDefinition": "The subject belongs to the object as a more specific member of that category.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "taxonomic",
      "allowedInFiles": [
        "page-assertions.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept",
        "mad:SoftConcept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject is a more specific instance of the object category.",
      "disallowedInference": "Do not infer that subClassOf implies the subject inherits all properties, behaviors, or inferences from the object class. MAD subClassOf is a classification claim, not a full OWL subclass with property inheritance.",
      "invalidUse": "Do not use subClassOf for structural containment (use partOf), causal dependency (use derivesConditionallyFrom), or implementation mapping. subClassOf is a classification predicate for page-level taxonomic assertions only.",
      "inferenceWarning": "MAD subClassOf is not OWL subClassOf. It does not trigger property inheritance or automated class reasoning. It is a page-scoped taxonomic classification claim only.",
      "example": {
        "subject": "DTM-020",
        "predicate": "subClassOf",
        "object": "within-training developmental form"
      },
      "notes": "Page-assertion predicate for taxonomic classification. Does not carry OWL subclass semantics. If OWL tooling is applied in future, this predicate will need explicit scoping to prevent automated inheritance chains."
    },
    {
      "id": "relation:constrainedBy",
      "label": "constrainedBy",
      "definition": "Subject is bounded or gated by the named condition.",
      "plainLanguageDefinition": "Subject is bounded or gated by the named condition.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject's operation is shaped by the boundary or limitation named by the object.",
      "disallowedInference": "Do not infer that constrainedBy blocks operation entirely; it limits range or intensity, not occurrence.",
      "invalidUse": "Do not use constrainedBy for complete gating \u2014 use conditionsAccessTo.",
      "inferenceWarning": "Constraint is a limiting relationship, not a causal or generative one.",
      "example": {
        "subject": "DTM-025",
        "predicate": "constrainedBy",
        "object": "MAL-030"
      },
      "notes": "Direction rule: subject \u2192 constraint. Use when: Readiness threshold constraining competitive development.. Avoid when: shapedBy when influence is softer.."
    },
    {
      "id": "relation:dependsOn",
      "label": "dependsOn",
      "definition": "Subject requires the named condition to function developmentally.",
      "plainLanguageDefinition": "Subject requires the named condition to function developmentally.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject requires the object to function productively.",
      "disallowedInference": "Do not infer that dependsOn is equivalent to strict logical dependency or that the subject cannot exist at all without the object.",
      "invalidUse": "Do not use for background conditioning; use conditionedBy. Use dependsOn for more direct operational dependency.",
      "inferenceWarning": "Dependency is directional; do not reverse.",
      "example": {
        "subject": "DTM-025",
        "predicate": "dependsOn",
        "object": "MAL-040"
      },
      "notes": "Direction rule: subject \u2192 required condition. Use when: Competitive development depending on calibrated demand.. Avoid when: Weak influence relationships.."
    },
    {
      "id": "relation:integrates",
      "label": "integrates",
      "definition": "Subject is the context in which both developmental forms are tested together under pressure.",
      "plainLanguageDefinition": "Subject is the context in which both developmental forms are tested together under pressure.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject draws both named forms or streams into a single developmental context.",
      "disallowedInference": "Do not infer that integration means equivalence or that one integrated concept is subordinate to the other.",
      "invalidUse": "Do not use integrates for simple containment; use partOf.",
      "inferenceWarning": "Integration preserves the distinctness of the integrated forms; it does not merge them.",
      "example": {
        "subject": "DTM-025",
        "predicate": "integrates",
        "object": "DTM-010"
      },
      "notes": "Direction rule: subject \u2192 integrated term. Use when: Competitive context integrating technical and internal development.. Avoid when: Implies subject produces or contains the object.."
    },
    {
      "id": "relation:interpretedThrough",
      "label": "interpretedThrough",
      "definition": "Subject requires the named interpretive process to carry meaning.",
      "plainLanguageDefinition": "Subject requires the named interpretive process to carry meaning.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "interpretive",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject's meaning or developmental significance is read using the object as the interpretive frame.",
      "disallowedInference": "Do not infer that interpretedThrough implies the object causes or produces the subject.",
      "invalidUse": "Do not use for causal or generative relationships; use shapedThrough or contributesTo.",
      "inferenceWarning": "Interpretation is a reading relationship, not a causal one.",
      "example": {
        "subject": "DTM-061",
        "predicate": "interpretedThrough",
        "object": "MAL-070"
      },
      "notes": "Direction rule: subject \u2192 interpretive mechanism. Use when: Observations that require MAL-070 to be developmentally meaningful.. Avoid when: Generic shapedBy.."
    },
    {
      "id": "relation:makesVisible",
      "label": "makesVisible",
      "definition": "Subject concentrates or intensifies visibility of the object.",
      "plainLanguageDefinition": "Subject concentrates or intensifies visibility of the object.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "interpretive",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject creates observable conditions through which the object can be detected or interpreted.",
      "disallowedInference": "Do not infer that making visible implies causation, production, or equivalence.",
      "invalidUse": "Do not use for production or generation; use emergesThrough or accumulatesThrough.",
      "inferenceWarning": "Visibility is an observational relationship \u2014 what can be seen, not what is caused.",
      "example": {
        "subject": "DTM-025",
        "predicate": "makesVisible",
        "object": "DTM-015"
      },
      "notes": "Direction rule: subject \u2192 observable concept. Use when: Competitive context making DTM-015 correlates more visible.. Avoid when: Implies subject creates the object.."
    },
    {
      "id": "relation:mayBeAnchoredBy",
      "label": "mayBeAnchoredBy",
      "definition": "Subject may be oriented or named using the object, without architectural dependency.",
      "plainLanguageDefinition": "Subject may be oriented or named using the object, without architectural dependency.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject may find implementation grounding through the object when conditions allow.",
      "disallowedInference": "Do not infer that anchoring is required or automatic.",
      "invalidUse": "Do not use for structural containment or canonical definition.",
      "inferenceWarning": "Anchoring is conditional and implementation-facing; it does not create a canonical dependency.",
      "example": {
        "subject": "DTM-015",
        "predicate": "mayBeAnchoredBy",
        "object": "RWK-000"
      },
      "notes": "Direction rule: subject \u2192 optional anchor. Use when: Optional interpretive frameworks like RWK.. Avoid when: Required structural dependencies.."
    },
    {
      "id": "relation:mayContributeTo",
      "label": "mayContributeTo",
      "definition": "Subject may contribute to the object under the right conditions; not guaranteed.",
      "plainLanguageDefinition": "Subject may contribute to the object under the right conditions; not guaranteed.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "conditional",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject may support emergence of the object under relevant conditions.",
      "disallowedInference": "Do not chain mayContributeTo. A mayContributeTo B and B mayContributeTo C does not imply A mayContributeTo C.",
      "invalidUse": "Do not use when the contribution is primary or required; use contributesTo or primarilyDrives.",
      "inferenceWarning": "This is the softest causal predicate in MAD. Non-transitive. Never chain.",
      "example": {
        "subject": "DTM-025",
        "predicate": "mayContributeTo",
        "object": "DTM-050"
      },
      "notes": "Direction rule: subject \u2192 conditional downstream. Use when: Conditional identity formation, beyond-training transfer.. Avoid when: Guaranteed causal claims.."
    },
    {
      "id": "relation:maySurfacePatternIn",
      "label": "maySurfacePatternIn",
      "definition": "Subject may make a pattern visible in the object without proving it.",
      "plainLanguageDefinition": "Subject may make a pattern visible in the object without proving it.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "interpretive",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject may make internal developmental patterns observable within the object context.",
      "disallowedInference": "Do not infer that surfacing implies production or causation of the object.",
      "invalidUse": "Do not use for generative relationships.",
      "inferenceWarning": "Pattern surfacing is observational, not causal.",
      "example": {
        "subject": "DTM-015",
        "predicate": "maySurfacePatternIn",
        "object": "DTM-020"
      },
      "notes": "Direction rule: subject \u2192 developmental form. Use when: Correlates that may reveal internal patterns.. Avoid when: Use when causal claim is intended.."
    },
    {
      "id": "relation:operationalizes",
      "label": "operationalizes",
      "definition": "Subject implements and gives practical form to the object within a specific framework.",
      "plainLanguageDefinition": "Subject implements and gives practical form to the object within a specific framework.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "implementation-directed",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:ImplementationFramework"
      ],
      "range": [
        "mad:Capacity",
        "mad:Concept"
      ],
      "directionality": "strictly directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": true,
      "reversalNote": "operationalizes flows from implementation framework toward canonical concept. The reverse direction is not a valid MAD relation. RWK operationalizes DTM; DTM is not defined by RWK.",
      "allowedInference": "The subject expresses or enacts the object within an implementation framework.",
      "disallowedInference": "Do not infer that the canonical concept is defined by, equivalent to, or dependent on the implementation framework.",
      "invalidUse": "Do not use operationalizes for canonical concept-to-concept relationships.",
      "inferenceWarning": "operationalizes is a one-way implementation relationship. The canonical concept remains independent of its implementation expression.",
      "example": {
        "subject": "RWK-000",
        "predicate": "operationalizes",
        "object": "DTM-060"
      },
      "notes": "Direction rule: subject \u2192 canonical term. Use when: RWK operationalizing DTM-060 capacity category.. Avoid when: When subject merely references or links to object.."
    },
    {
      "id": "relation:reservedFor",
      "label": "reservedFor",
      "definition": "Subject code range is reserved for the named future concept type.",
      "plainLanguageDefinition": "Subject code range is reserved for the named future concept type.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "structural",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject code range is reserved for future governed terms within the object cluster.",
      "disallowedInference": "Do not treat reservedFor as an active governed relation. Reserved ranges are not yet canonical terms.",
      "invalidUse": "Do not use reservedFor for active concept relationships.",
      "inferenceWarning": "reservedFor marks code space reservation only. Reserved ranges must not be treated as governed canonical terms until explicitly promoted.",
      "example": {
        "subject": "DTM-070",
        "predicate": "reservedFor",
        "object": "DTM-060"
      },
      "notes": "Direction rule: code range \u2192 future concept. Use when: Documenting planned future namespace ranges.. Avoid when: Active term entries.."
    },
    {
      "id": "relation:surfacesThrough",
      "label": "surfacesThrough",
      "definition": "Observable pattern appears through the named context or demand.",
      "plainLanguageDefinition": "Observable pattern appears through the named context or demand.",
      "version": "1.0",
      "status": "active",
      "deprecatedBy": null,
      "deprecationNote": null,
      "inferenceClass": "interpretive",
      "allowedInFiles": [
        "core-relations.json"
      ],
      "domain": [
        "mad:Concept"
      ],
      "range": [
        "mad:Concept"
      ],
      "directionality": "directed",
      "symmetric": false,
      "transitive": false,
      "reciprocalInferenceAllowed": false,
      "reciprocalInferenceRule": "No reciprocal inference allowed unless explicitly permitted by predicate definition and relation instance scope.",
      "reversalForbidden": false,
      "reversalNote": null,
      "allowedInference": "The subject becomes observable or detectable through the mechanism of the object.",
      "disallowedInference": "Do not infer that surfacing implies production or that the object causes the subject.",
      "invalidUse": "Do not use for generative or causal relationships.",
      "inferenceWarning": "Surfacing is a detectability relationship, not a causal one.",
      "example": {
        "subject": "DTM-015",
        "predicate": "surfacesThrough",
        "object": "DTM-010"
      },
      "notes": "Direction rule: subject \u2192 context. Use when: Technical-internal correlates appearing through technical demands.. Avoid when: Use shapedThrough when influence is broader.."
    }
  ]
}