feat: add driving flag to relationship query responses

Add computed driving flag to all relationship queries (list_relationships,
get_predecessors, get_successors). A relationship is marked as driving when
the predecessor's early end date plus lag determines the successor's early
start date.

Changes:
- Add early_start_date and early_end_date columns to activities schema
- Parse early dates from TASK table in XER files
- Implement is_driving_relationship() helper with 24hr tolerance for
  calendar gaps
- Update all relationship queries to compute and return driving flag
- Add contract and unit tests for driving flag functionality
- Update spec, contracts, and documentation
This commit is contained in:
2026-01-07 07:21:58 -05:00
parent 2255b65ef6
commit af8cdc1d31
17 changed files with 654 additions and 324 deletions

View File

@@ -152,19 +152,23 @@ Use the get_predecessors tool with activity_id="A1050"
"task_code": "A1000",
"task_name": "Site Preparation",
"relationship_type": "FS",
"lag_hr_cnt": 0
"lag_hr_cnt": 0,
"driving": true
},
{
"task_id": "A1010",
"task_code": "A1010",
"task_name": "Permits Approved",
"relationship_type": "FS",
"lag_hr_cnt": 8
"lag_hr_cnt": 8,
"driving": false
}
]
}
```
The `driving` flag indicates which predecessor relationship constrains the successor's early start date. A driving relationship is one where the predecessor's completion (plus lag) determines when the successor can begin.
### 6. Get Project Summary
```