Category: data-layer | Epic: 0 | Priority: medium
Summary
Implement CRUD operations for relationships between entities and state tag
management. Relationships include membership, ownership, social, spatial,
and participation types. State tags track dynamic entity status (alive, dead,
wounded, hidden, etc.).
Acceptance Criteria
Dependencies
This use case depends on:
Blocks
This use case blocks:
Implementation
Layer: 1
Files to create:
packages/data-layer/src/monitor_data/schemas/relationships.py
packages/data-layer/tests/test_tools/test_relationship_tools.py
Files to modify:
packages/data-layer/src/monitor_data/tools/neo4j_tools.py
packages/data-layer/src/monitor_data/middleware/auth.py
NEO4J Operations:
neo4j_create_relationship (authority: CanonKeeper)
neo4j_get_relationship (authority: *)
neo4j_list_relationships (authority: *)
neo4j_update_relationship (authority: CanonKeeper)
neo4j_delete_relationship (authority: CanonKeeper)
neo4j_update_state_tags (authority: CanonKeeper)
neo4j_get_state_tags (authority: *)
Notes:
- Relationships are edges, not nodes
- State tags only on EntityInstance, not EntityArchetype
- Consider temporal properties (valid_from, valid_to)
- Common patterns: faction membership, location containment
Testing Requirements
Minimum coverage: 80%
Unit tests:
- test_create_relationship_success: valid params → edge created
- test_create_relationship_types: each rel_type works
- test_list_relationships_by_entity: entity filter works
- test_list_relationships_by_type: rel_type filter works
- test_list_relationships_direction: direction filter works
- ... and 5 more
Integration tests:
- test_relationship_lifecycle: create → update → delete
- test_state_tag_lifecycle: add tags → verify → remove tags
References
Documentation:
Generated from /home/sebas/monitor2/docs/use-cases/data-layer/DL-14.yml
Category: data-layer | Epic: 0 | Priority: medium
Summary
Implement CRUD operations for relationships between entities and state tag
management. Relationships include membership, ownership, social, spatial,
and participation types. State tags track dynamic entity status (alive, dead,
wounded, hidden, etc.).
Acceptance Criteria
Dependencies
This use case depends on:
Blocks
This use case blocks:
Implementation
Layer: 1
Files to create:
packages/data-layer/src/monitor_data/schemas/relationships.pypackages/data-layer/tests/test_tools/test_relationship_tools.pyFiles to modify:
packages/data-layer/src/monitor_data/tools/neo4j_tools.pypackages/data-layer/src/monitor_data/middleware/auth.pyNEO4J Operations:
neo4j_create_relationship(authority: CanonKeeper)neo4j_get_relationship(authority: *)neo4j_list_relationships(authority: *)neo4j_update_relationship(authority: CanonKeeper)neo4j_delete_relationship(authority: CanonKeeper)neo4j_update_state_tags(authority: CanonKeeper)neo4j_get_state_tags(authority: *)Notes:
Testing Requirements
Minimum coverage: 80%
Unit tests:
Integration tests:
References
Documentation:
Code:
packages/data-layer/src/monitor_data/db/neo4j.pypackages/data-layer/src/monitor_data/schemas/entities.pyGenerated from
/home/sebas/monitor2/docs/use-cases/data-layer/DL-14.yml