Fix Gantt Bar Distortion and Document Timing
The pipeline Gantt chart on proof detail pages inflates the last bar to absorb idle time between phases. A proof with 21 minutes of active pipeline time and 129 minutes wall-clock shows Verify at 86% width instead of 14%. This affects 24% of all proof entries (13 severe, 11 moderate). Separately, the docs don't explain what timing measures or why duration can exceed the sum of phases — users see "2h 9m" in the header and "21m" in the bars and have no way to reconcile them.
verdict PASSscore 15 / 15findings 4 (0 risk · 1 debt · 3 obs)duration 24mrejection cycles 0shipped May 15, 2026surface website
Pipeline timeline
Intent to proven code in 24m across Think, Plan, Build, and Verify.
Think5m
Plan4m
Build4m
Verify4m
Assertion ledger
15 claims, each independently verified. Showing 8 — show all →
| ID | Says | Matcher | |
|---|---|---|---|
| A001 | Gantt bars show time proportional to each phase, not inflated by idle gaps | verified | ok |
| A002 | The sentinel that forced the last bar to 100% is removed | verified | ok |
| A003 | The sentinel is also removed from the flat 4-bar path | verified | ok |
| A004 | A proof with 13m/2m/3m/3m shows Verify at roughly 14%, not 86% | verified | ok |
| A005 | The same proof shows Think at roughly 62% | verified | ok |
| A006 | Multi-phase proofs render last segment proportionally, not inflated | verified | ok |
| A007 | Zero-duration phases still get a minimum visible width | verified | ok |
| A008 | When all phases are zero, no bars are rendered regardless of wall-clock time | verified | ok |
Findings 4 total
obswebsite/components/docs/proof/PipelineGantt.tsx→ monitor
Negative phase values display raw in bar label while bar width is clamped
debtwebsite/components/docs/proof/PipelineGantt.tsx→ closed
buildGanttBars and GanttBar exported but only consumed within PipelineGantt.tsx
obswebsite/components/docs/proof/PipelineGantt.tsx→ closed
formatDuration defined but unused in PipelineGantt — pre-existing, still present
obswebsite/components/docs/proof/PipelineGantt.tsx→ monitor
Zero-duration bars get minimum 2% width that can push cumulative past 100% if many zero-duration phases exist
Integrity seal
scopesha256:e844acbc9283b...
contractsha256:502a340637ce1...
plansha256:e7dc0d05b5ff4...
specsha256:ab2c94a8c8be1...
build-reportsha256:88be7fc8a99c2...
build-datasha256:7b7fe5f4f09e1...
verify-reportsha256:ac0f477cc6aa8...
verify-datasha256:63d95bcd44173...
audit cmd$ ana proof audit fix-gantt-bar-distortion → all hashes match