p6_health_check
Run a DCMA 14-point health check on a P6 project to assess schedule logic, float, constraints, links, baseline misses, and critical-path validity.
Instructions
DCMA 14 point assessment of the last P6 schedule run (F9). checks: logic, leads, lags, long_lags, fs_links, hard_constraints, high_float, negative_float, high_duration, invalid_dates, resources, missed_tasks, critical_path_test (this server's CPM engine: the earliest lowest-float open task delayed 100 working days must move the project finish as much; not run when the engine does not match the F9, see p6_cpm_validate), cpli, bei; each {count, denominator, pct, threshold, pass, sample (15)}; then key_dates (information only: constraint dates against the must finish date, the work after them and each other; count = issues, pct = constraints with an issue). Open = not completed; LOE and WBS summary activities are left out, also as either end of a link; relationship checks count links whose successor is open. pct must stay at most the threshold, except fs_links (at least), cpli and bei (value at least), compared before rounding; pass is None when not evaluated. Thresholds: the project's Check Schedule settings (PROJPROP schedule_check, limits in hours) when stored, else DCMA defaults (limits 44 d of each calendar; resources has none: not evaluated unless thresholds= sets it); threshold_source says which. thresholds= overrides by check name (not critical_path_test); high_float_days sets the high float limit. lags and fs_links also give ladder_pairs (SS + FF between the same activities with the same lag) and their values without them (information). Logic exempts only the project start and finish milestones (listed); dangling starts and finishes (milestones left out, see p6_dangling) are information only. missed_tasks and bei need a baseline: baseline= (Project ID), else the project baseline; baseline_dates 'current' (actual, else early finish) or 'planned' (its planned finish); a task is missed when not finished or finished on a later day. duration_basis: remaining or original. cpli: working days of the project calendar (calendar days beside it). check= returns that check's full list of items as a page {total, offset, returned, next_offset, rows} with result (the check) instead of the whole report. A full run saves a snapshot for p6_health_check_compare (snapshot.id; save_snapshot=False skips it). The earlier top keys stay: no_predecessor, no_successor, hard_constraints, high_float, negative_float {count, sample}; leads_negative_lag, positive_lags, non_fs_links (links whose successor is open). checks.logic_density (after logic): links whose successor is open / open activities, value at least 1.5 (not in summary or score, which stay the DCMA 14). negative_float.worst and high_float.worst: the open activity with the lowest / highest total float {task_code, task_name, total_float_d}. weighted_score {points, grade, earned, max, checks {name: {weight, status pass / warn / fail / not_evaluated, earned}}}: logic_density 20, logic 20, critical_path_test 15, negative_float 15, high_float 10, hard_constraints 10, high_duration 5, leads 5, lags 5, fs_links 5; pass = the weight, warn = half (a failed at most check up to 2 x its threshold, a failed at least check down to 0.9 x it; no band for a zero threshold), fail = 0, not evaluated left out; points = earned / weight of the evaluated checks x 100; grade A >= 90, B >= 80, C >= 70, D >= 55, else F. engine_version: the CPM engine of the critical path test.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| check | No | ||
| limit | No | Rows per page (max 200). | |
| offset | No | Rows to skip: pass next_offset from the previous page. | |
| project | Yes | Project ID as shown in P6 (p6_list_projects). | |
| baseline | No | ||
| thresholds | No | ||
| save_snapshot | No | ||
| baseline_dates | No | current | |
| duration_basis | No | remaining | |
| high_float_days | No |