Category: data-layer | Epic: 0 | Priority: high
Summary
Implement CRUD operations for ProposedChange documents in MongoDB. These are
staging documents for canonical changes that CanonKeeper evaluates at scene end.
Supports different change types (fact, entity, relationship, state_change, event)
and status transitions (pending → accepted/rejected).
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/proposed_changes.py
packages/data-layer/tests/test_tools/test_proposed_change_tools.py
Files to modify:
packages/data-layer/src/monitor_data/tools/mongodb_tools.py
packages/data-layer/src/monitor_data/middleware/auth.py
MONGODB Operations:
mongodb_create_proposed_change (authority: *)
mongodb_get_proposed_change (authority: *)
mongodb_list_proposed_changes (authority: *)
mongodb_update_proposed_change (authority: CanonKeeper)
Notes:
- Any agent can propose changes (authority: *)
- Only CanonKeeper can accept/reject (update status)
- Accepted changes should include canonical_ref pointing to created node
- Consider indexing by scene_id for efficient batch retrieval
Testing Requirements
Minimum coverage: 80%
Unit tests:
- test_create_proposed_change_fact: change_type=fact → valid doc
- test_create_proposed_change_entity: change_type=entity → valid doc
- test_create_proposed_change_relationship: change_type=relationship → valid doc
- test_list_by_scene: scene_id filter returns relevant proposals
- test_list_by_status: pending filter works
- ... and 3 more
Integration tests:
- test_proposal_lifecycle: create → list → accept → verify canonical created
- test_batch_canonization: multiple proposals → batch accept/reject
References
Documentation:
Generated from /home/sebas/monitor2/docs/use-cases/data-layer/DL-5.yml
Category: data-layer | Epic: 0 | Priority: high
Summary
Implement CRUD operations for ProposedChange documents in MongoDB. These are
staging documents for canonical changes that CanonKeeper evaluates at scene end.
Supports different change types (fact, entity, relationship, state_change, event)
and status transitions (pending → accepted/rejected).
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/proposed_changes.pypackages/data-layer/tests/test_tools/test_proposed_change_tools.pyFiles to modify:
packages/data-layer/src/monitor_data/tools/mongodb_tools.pypackages/data-layer/src/monitor_data/middleware/auth.pyMONGODB Operations:
mongodb_create_proposed_change(authority: *)mongodb_get_proposed_change(authority: *)mongodb_list_proposed_changes(authority: *)mongodb_update_proposed_change(authority: CanonKeeper)Notes:
Testing Requirements
Minimum coverage: 80%
Unit tests:
Integration tests:
References
Documentation:
Code:
packages/data-layer/src/monitor_data/db/mongodb.pyGenerated from
/home/sebas/monitor2/docs/use-cases/data-layer/DL-5.yml