QuantEcon / QuantEcon/actions

test-containers-lectures: lecture-python.myst doubled to the 120-minute ceiling

Open
#141 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

high-priority infrastructure
Dominant language
Shell
Stars
0
Forks
1
Avg merge
32m
Merged PRs (30d)
3

Description

lecture-python.myst in the weekly container-validation matrix roughly doubled from ~54 minutes to over 120 over two weeks, and now hits the job ceiling. #140 restores the alerting that should have surfaced this three weeks ago; this issue is the diagnosis and the capacity decision it exposed.

What the run history shows

Last green sweep was 2026-07-27. Durations for lecture-python.myst, both images, since:

Sweep · quantecon · quantecon-build
2026-07-27 green green
2026-08-03 120m (ceiling) 120m (ceiling)
2026-08-05 120m (ceiling) 120m (ceiling)
2026-08-10 109m 120m (ceiling)

The other two repos are stable and nowhere near the ceiling: lecture-python-intro 12–19m, lecture-python-advanced.myst 43–52m. So this is specific to one repo, not a runner-wide or image-wide slowdown.

The 08-10 leg finishing at 109m is the more alarming datapoint than the timeouts — it means the job now passes or fails on the margin, so the matrix will flap rather than fail cleanly.

What to work out

  • Whether the cause is upstream content (lectures added or made heavier in lecture-python.myst), the container baseline, or execution behaviour — a git log over that repo's lectures/ across the window, against a manual dispatch at a pinned older image, separates the two
  • Whether both images regressed by the same factor, which would point at content rather than the image
  • Whether the GPU-dependent lectures are executing on CPU runners and dominating the time

The capacity decision this forces

timeout-minutes: 120 at .github/workflows/test-containers-lectures.yml:37 is a single ceiling shared by every leg, sized for the smallest. Options, in rough order of preference:

  • Split the three builders into separate jobs, so html (where execution happens) is timed and reported independently of pdflatex/jupyter rendering — also makes the next regression legible without a stopwatch
  • Raise the ceiling for the known-heavy repos only, per matrix entry rather than per workflow
  • Reduce what this repo validates weekly, if the answer is that a full three-builder pass over the largest lecture repo is no longer the right weekly cost

Preventive half

Slow drift is invisible here by construction: the only symptom is duration, and nothing records it. #140 now reports per-leg duration inside the failure issue, which helps only once something already broke.

  • Record per-leg durations to $GITHUB_STEP_SUMMARY on every run, and warn when a leg exceeds the previous successful run's time by a threshold

Comparing against the previous successful run (via the runs API) rather than a checked-in baseline is deliberate: these durations track upstream lecture content this repo does not control, so a committed baseline would go stale on every upstream lecture addition and become noise nobody maintains — which is how containers/VALIDATION.md's timing table died.

This is the third silent-duration failure in this repo, after #103 (nine weeks of cold-but-green container builds) and #83 (two months of 40-minute cold lecture builds). In all three the only observable symptom was time.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with .github/workflows/test-containers-lectures.yml:37 and inspect the weekly run history, then compare a git log of lecture-python.myst/lectures with a manual dispatch using a pinned older image. Review the runs API approach and containers/VALIDATION.md before determining the capacity and duration-reporting changes; done requires an agreed implementation scope and acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, shell
Domain
ci-cd, devops, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.