Skip to content

fix(ci): expose jobs cancelled by timeouts - #53

Merged
konard merged 2 commits into
mainfrom
issue-50-df71ee6f2bd4
Aug 9, 2026
Merged

fix(ci): expose jobs cancelled by timeouts#53
konard merged 2 commits into
mainfrom
issue-50-df71ee6f2bd4

Conversation

@konard

@konard konard commented Aug 9, 2026

Copy link
Copy Markdown
Member

Summary

  • add a terminal Pipeline Status job that observes every other CI/CD job
  • fail aggregate runs for ordinary job failures and for cancelled jobs on main
  • preserve warning-only handling for superseded runs on non-default refs
  • prevent read-only jobs from being superseded on main, making cancellation classification reliable
  • add structural and behavioural regression tests plus a changelog fragment

Reproduction

A job terminated by its own timeout-minutes receives the GitHub Actions conclusion cancelled, not failure. Without an aggregate observer, a run containing that timeout can remain grey and absent from failed-run filters.

Verification

  • pytest — 71 passed
  • ruff check .
  • ruff format --check .
  • mypy src
  • python scripts/check_file_size.py
  • workflow YAML parse and bash -n scripts/check-pipeline-status.sh

The behavioural test covers successful/skipped jobs, an ordinary failure, a cancellation on main, and a cancellation on another ref. A structural test verifies the gate continues to needs: every other job as the workflow evolves.

Fixes #50

Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: #50
@konard konard self-assigned this Aug 9, 2026
GitHub reports jobs killed by timeout-minutes as cancelled. Add an aggregate gate that fails those cancellations on main while preserving superseded runs on other refs.\n\nCloses #50
@konard konard changed the title [WIP] release.yml: a job killed by timeout-minutes is reported as 'cancelled', so timeouts silently pass CI fix(ci): expose jobs cancelled by timeouts Aug 9, 2026
@konard
konard marked this pull request as ready for review August 9, 2026 03:41
@konard

konard commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

Working session summary

Implemented and finalized PR #53.

Key changes:

  • Added terminal Pipeline Status gate covering every workflow job.
  • Main-branch cancellations now fail visibly; PR supersedes remain warnings.
  • Added structural and behavioral regression tests.
  • Added changelog fragment and removed WIP metadata.
  • Committed and pushed as f8e0eda.

Verification:

  • 71 tests passed.
  • Ruff, formatting, mypy, file-size, YAML, and shell syntax checks passed.
  • Fresh CI/CD, Security, CodeQL, dependency review, and link checks all passed.
  • PR is ready for review; working tree is clean.

This summary was automatically extracted from the AI working session output.

@konard

konard commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Model: GPT-5.6 Sol
  • Provider: OpenAI
  • Public pricing estimate: $3.578604

📊 Context and tokens usage:

  • 110.2K / 200K (55%) input tokens, 10.8K / 128K (8%) output tokens

Total: (110.2K + 2.0M cached) input tokens, 10.8K output tokens, $3.578604 cost

🤖 Models used:

  • Tool: OpenAI Codex
  • Requested: gpt-5.6-sol
  • Thinking level: low (~7999 tokens)
  • Model: GPT 5.6 Sol (gpt-5.6-sol)

📎 Log file uploaded as Gist (1210KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard
konard merged commit bd07d1c into main Aug 9, 2026
14 checks passed
@konard

konard commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

🎉 Auto-merged

This pull request has been automatically merged by hive-mind.

  • All CI checks have passed

Auto-merged by hive-mind with --auto-merge flag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

release.yml: a job killed by timeout-minutes is reported as 'cancelled', so timeouts silently pass CI

1 participant