update(gantt-dependencies): highcharts — comprehensive quality review#4405
Conversation
AI Review - Attempt 1/3Image Description
Score: 87/100
Visual Quality (26/30)
Design Excellence (13/20)
Spec Compliance (14/15)
Data Quality (15/15)
Code Quality (10/10)
Library Mastery (9/10)
Score Caps Applied
Strengths
Weaknesses
Issues Found
AI Feedback for Next Attempt
Verdict: REJECTED |
There was a problem hiding this comment.
Pull request overview
Updates the Highcharts implementation for the gantt-dependencies plot spec, aiming to improve dependency direction/flow and introduce clearer phase grouping while keeping spec/metadata in sync.
Changes:
- Updated the spec YAML timestamp and expanded spec tags.
- Refined the spec Markdown notes around dependency arrow semantics and scheduling constraints.
- Reworked the Highcharts Gantt implementation (grouping + connector styling + screenshot capture) and refreshed Highcharts metadata.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| plots/gantt-dependencies/specification.yaml | Updates updated timestamp and adds classification tags. |
| plots/gantt-dependencies/specification.md | Clarifies dependency arrow direction and scheduling constraints in the spec notes. |
| plots/gantt-dependencies/metadata/highcharts.yaml | Refreshes metadata fields (versions, generator) for the Highcharts implementation. |
| plots/gantt-dependencies/implementations/highcharts.py | Rebuilds the Highcharts Gantt config and rendering approach (dependencies + grouping + element screenshot). |
| Library: highcharts unknown | Python 3.13.11 | ||
| Quality: 91/100 | Created: 2026-01-15 | ||
| Library: highcharts 1.10.3 | Python 3.14 | ||
| Quality: /100 | Updated: 2026-02-25 |
There was a problem hiding this comment.
The implementation header has an incomplete quality field (Quality: /100), which breaks the standard header format and makes it unclear what score this file corresponds to. Populate the numeric quality score (or restore the previous score) so the header reads Quality: <number>/100.
| Quality: /100 | Updated: 2026-02-25 | |
| Quality: 92/100 | Updated: 2026-02-25 |
| # Save HTML for interactive version | ||
| html_output = """<!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <meta charset="utf-8"> | ||
| <title>gantt-dependencies - Highcharts - pyplots.ai</title> | ||
| <script src="https://code.highcharts.com/gantt/highcharts-gantt.js"></script> | ||
| </head> | ||
| <body style="margin:0; padding:20px; background:#ffffff;"> | ||
| <div id="container" style="width:100%; height:800px;"></div> | ||
| <script> | ||
| {chart_config} | ||
| Highcharts.ganttChart('container', { | ||
| title: { | ||
| text: 'Software Development Project Schedule' | ||
| }, | ||
| subtitle: { | ||
| text: 'gantt-dependencies \\u00b7 highcharts \\u00b7 pyplots.ai' | ||
| }, | ||
| xAxis: [{ | ||
| min: Date.UTC(2024, 0, 1), | ||
| max: Date.UTC(2024, 2, 28) | ||
| }], |
There was a problem hiding this comment.
plot.html is generated from a separate hard-coded chart config and a different Highcharts script URL than the one used for the PNG render, so the interactive output can diverge from plot.png. In addition, xAxis.max is set to 2024-03-28 while at least one task ends on 2024-03-29, which can truncate the last task in the interactive chart. Reuse the same chart_config (or a single shared options object) for both outputs and ensure the axis range covers all tasks (or omit the explicit max).
| preview_thumb: https://storage.googleapis.com/pyplots-images/plots/gantt-dependencies/highcharts/plot_thumb.png | ||
| preview_html: https://storage.googleapis.com/pyplots-images/plots/gantt-dependencies/highcharts/plot.html | ||
| quality_score: 91 | ||
| quality_score: null |
There was a problem hiding this comment.
quality_score is set to null, but other Highcharts metadata files use a numeric score. This makes it harder for automation/filters to reason about implementation quality; set it to the computed score (or keep the prior score if that’s the intent).
| quality_score: null | |
| quality_score: 92 |
AI Review - Attempt 1/3Image Description
Score: 86/100
Visual Quality (26/30)
Design Excellence (13/20)
Spec Compliance (14/15)
Data Quality (15/15)
Code Quality (10/10)
Library Mastery (8/10)
Score Caps Applied
Strengths
Weaknesses
Issues Found
AI Feedback for Next Attempt
Verdict: REJECTED |
🔧 Repair Attempt 1/3Applied fixes based on AI review feedback. Status: Repair completed, re-triggering review... |
AI Review - Attempt 2/3Image Description
Score: 89/100
Visual Quality (27/30)
Design Excellence (14/20)
Spec Compliance (15/15)
Data Quality (15/15)
Code Quality (10/10)
Library Mastery (8/10)
Score Caps Applied
Strengths
Weaknesses
Issues Found
AI Feedback for Next Attempt
Verdict: REJECTED |
🔧 Repair Attempt 2/3Applied fixes based on AI review feedback. Status: Repair completed, re-triggering review... |
AI Review - Attempt 3/3Image Description
Score: 91/100
Visual Quality (26/30)
Design Excellence (15/20)
Spec Compliance (15/15)
Data Quality (15/15)
Code Quality (10/10)
Library Mastery (10/10)
Score Caps Applied
Strengths
Weaknesses
Issues Found
AI Feedback for Next Attempt
Verdict: APPROVED |
528d84e to
a3960e0
Compare
Attempt 1/3 - fixes based on AI review
Attempt 2/3 - fixes based on AI review
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
You can also share your feedback on Copilot code review. Take the survey.
| @@ -304,56 +364,64 @@ | |||
| <title>gantt-dependencies - Highcharts - pyplots.ai</title> | |||
| <script src="https://code.highcharts.com/gantt/highcharts-gantt.js"></script> | |||
There was a problem hiding this comment.
The static PNG render uses a pinned Highcharts Gantt bundle (jsdelivr @11.4.8), but the interactive plot.html loads an unpinned "https://code.highcharts.com/gantt/highcharts-gantt.js". This can lead to the HTML output diverging from the PNG (and future breaking changes if Highcharts updates). Consider pinning plot.html to the same Highcharts version URL used for the screenshot render to keep outputs consistent and reproducible.
| <script src="https://code.highcharts.com/gantt/highcharts-gantt.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/highcharts@11.4.8/highcharts-gantt.js"></script> |
Summary
Updated highcharts implementation for gantt-dependencies.
Changes: Fix backwards dependency lines, add phase grouping, ensure left→right flow
Test Plan
Generated with Claude Code
/updatecommand