MESA ensures that when nodes are retrieved, viewed, or referenced, required attribution information automatically comes along with them.
When retrieving/referencing a node:
- Check the node's
licenseNamefield - If license starts with "CC":
- MUST also retrieve and include
sourceLink - MUST also retrieve and include
creator(author field) - MUST bundle these fields together in any output/display
- MUST also retrieve and include
// User requests node pages:evidence-123
// System returns:
{
"@id": "pages:evidence-123",
"title": "Cell migration speed increases 2x...",
"licenseName": "CC BY 4.0",
"sourceLink": "https://example.com/dataset",
"creator": "Jane Smith"
}// User requests node pages:evidence-123
// System returns incomplete data:
{
"@id": "pages:evidence-123",
"title": "Cell migration speed increases 2x..."
// Missing: licenseName, sourceLink, creator
}A compliant MESA implementation MUST:
- Check license on every node retrieval
- Bundle attribution fields with CC-licensed nodes
- Never serve CC-licensed content without its attribution
- Apply recursively when retrieving multiple related nodes
Node Retrieval API - validate before returning data to user
MESA applies to:
- Evidence nodes (
@type: pages:zsoX6_bEl) - Source nodes (
@type: pages:rVONqNC48)
All node types with CC licenses must include complete attribution.
The mesa_schema.json file provides formal validation:
- Conditional requirement: if
licenseNamematches^CC.*, thensourceLinkandcreatorare required - Both fields must be non-empty strings
- Validation can be applied at API boundaries or database layer
The mesa_reference.py module provides:
MESAReference.get_node()- retrieves nodes with automatic attribution bundlingMESAReference.validate_node_for_retrieval()- pre-check if node can be retrievedDiscourseGraphAPI- example API integration with enforcement
from mesa_reference import MESAReference, DiscourseGraphAPI
# Initialize with graph data
mesa = MESAReference(graph_data)
api = DiscourseGraphAPI(mesa)
# Retrieve node - automatically enforces attribution
response = api.get_node('pages:evidence-123')
if response['success']:
node = response['data']
# Guaranteed to have licenseName, sourceLink, creator if CC-licensed
else:
# Node blocked due to incomplete attribution
print(response['error'])A system is MESA-compliant if it:
- Validates
licenseNameon every node retrieval - Requires
sourceLinkfor all CC-licensed nodes - Requires
creatorfor all CC-licensed nodes - Blocks retrieval of incomplete CC-licensed nodes
- Bundles attribution fields with node data in responses
- Applies enforcement to both Evidence and Source nodes
- Logs enforcement actions for audit trail