Status Propagation Rules
The PTT system implements automatic status propagation between related entities following a hierarchical relationship: Project → SBD → SBI → EB.
Entity Relationships
The system maintains the following entity hierarchy:
Project: Contains multiple SBDs (one-to-many)
SBD (Scheduling Block Definition): Contains multiple SBIs (one-to-many)
SBI (Scheduling Block Instance): Contains multiple EBs (one-to-many)
EB (Execution Block): Leaf entity in the hierarchy
Top-Down Propagation
Status changes propagate from parent to child entities:
Project Status Changes
- Project → “Ready”
All associated SBDs transition to “Ready” state
Ensures all scheduling blocks are prepared when project is approved
- Project → “Cancelled”
Associated SBDs move to “Suspended” state
Associated SBIs move to “Failed” state
Associated EBs move to “Failed” state
Cascades cancellation through entire project hierarchy
Bottom-Up Propagation
Status changes propagate from child to parent entities:
EB Status Changes
- EB → “Fully Observed”
Associated SBI transitions to “Observed”
Linked SBD transitions to “Observed”
Project transitions to “Observed”
Indicates successful completion of observation
- EB → “Failed”
Associated SBI transitions to “Failed”
Linked SBD transitions to “Suspended”
Project transitions to “Cancelled”
Propagates failure up the hierarchy
SBI Status Changes
- SBI → “Executing”
Associated SBD transitions to “In Progress”
Project transitions to “Ready”
Indicates active observation execution
Implementation Notes
Status propagation is automatic and immediate
Changes are logged in the status history
The system maintains referential integrity during propagation
All status transitions are auditable through the status history API
Technical Implementation
The status propagation system is implemented using PostgreSQL’s Ltree extension for efficient hierarchical data management. This approach provides:
Hierarchical Path Representation: Each entity maintains a path showing its position in the hierarchy
Efficient Tree Operations: Fast ancestor/descendant queries using Ltree operators
Scalable Performance: Optimized for large hierarchical datasets
ACID Compliance: Ensures data consistency during propagation
For detailed technical implementation, see the Status Toy Documentation which demonstrates the Ltree-based approach used in this system.
API Endpoints
Status propagation can be monitored through:
GET /entity/latest/status- View current entity statusesGET /entity/current/status- View current status viewPUT /entity/{entity_id}/status- Update entity statusGET /entity/history- View status change historyGET /entity/status/get_entity- Get entity status dictionaryGET /status/stream- Real-time status change notifications