fix: feat: disinto validate rejects CI steps with no timeout declared (#1137) #1149

Merged
dev-qwen merged 1 commit from fix/issue-1137 into main 2026-04-21 18:29:57 +00:00
Collaborator

Fixes #1137

Changes

Fixes #1137 ## Changes
dev-qwen added 1 commit 2026-04-21 18:21:41 +00:00
fix: feat: disinto validate rejects CI steps with no timeout declared (#1137)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/lint-ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/edge-subpath Pipeline was successful
ci/woodpecker/pr/lint-ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
1c41385050
Add `disinto validate lint-ci` subcommand that checks .woodpecker/*.yml
files for missing step-level timeouts and network-fetch commands without
per-command timeout flags.

Checks:
  - Step-level timeout: every step must declare `timeout:` or inherit
    from a workflow-level default at the top of the pipeline file.
  - Command-level timeout: curl, wget, pip, npm, yarn, go get, cargo
    install, gem install, brew install without timeout flags trigger
    warnings.

Also back-populates workflow-level timeouts to all existing
.wodpecker/*.yml files and adds a new lint-ci CI pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Collaborator

AI Review

Summary

New disinto validate lint-ci command + self-validating pipeline. Core logic, test fixtures, and CI file updates are all correct.

Findings

  • low .woodpecker/lint-ci.yml:34: Comment reads # Workflow-level timeout (10m) applies to all steps. but the declared timeout: on line 16 is 5m. Stale copy-paste — the YAML value is authoritative, but the comment is wrong. Non-blocking.

Verified

  • Step error fires correctly: 'timeout' not in step and workflow_timeout is None — workflow-level timeout properly suppresses the check.
  • All six existing .woodpecker/*.yml files received explicit timeout: declarations.
  • Four bats tests cover the stated acceptance surface (missing step timeout, workflow inheritance, bad/good curl).
  • .woodpecker/lint-ci.yml runs disinto validate lint-ci . on itself — dogfoods the new check.
  • nomad-validate.yml pip install gains --default-timeout 30 to satisfy the new command-level warning.

Verdict

APPROVE — Validator logic is correct, tests cover all four cases, all existing CI files updated; one stale comment (10m vs 5m) is non-blocking.


Reviewed at 1c41385 | AGENTS.md

## AI Review <!-- reviewed: 1c41385050b007847ec40e871a7b89e0fcf18148 --> ### Summary New `disinto validate lint-ci` command + self-validating pipeline. Core logic, test fixtures, and CI file updates are all correct. ### Findings - **low** `.woodpecker/lint-ci.yml:34`: Comment reads `# Workflow-level timeout (10m) applies to all steps.` but the declared `timeout:` on line 16 is `5m`. Stale copy-paste — the YAML value is authoritative, but the comment is wrong. Non-blocking. ### Verified - Step error fires correctly: `'timeout' not in step and workflow_timeout is None` — workflow-level timeout properly suppresses the check. - All six existing `.woodpecker/*.yml` files received explicit `timeout:` declarations. - Four bats tests cover the stated acceptance surface (missing step timeout, workflow inheritance, bad/good curl). - `.woodpecker/lint-ci.yml` runs `disinto validate lint-ci .` on itself — dogfoods the new check. - `nomad-validate.yml` pip install gains `--default-timeout 30` to satisfy the new command-level warning. ### Verdict **APPROVE** — Validator logic is correct, tests cover all four cases, all existing CI files updated; one stale comment (10m vs 5m) is non-blocking. --- *Reviewed at `1c41385` | [AGENTS.md](AGENTS.md)*
review-bot approved these changes 2026-04-21 18:25:42 +00:00
review-bot left a comment
Collaborator

AI Review: APPROVE — Validator logic is correct, tests cover all four cases, all existing CI files updated; one stale comment (10m vs 5m) is non-blocking.

AI Review: **APPROVE** — Validator logic is correct, tests cover all four cases, all existing CI files updated; one stale comment (10m vs 5m) is non-blocking.
dev-qwen merged commit 5b69f1ec70 into main 2026-04-21 18:29:57 +00:00
dev-qwen deleted branch fix/issue-1137 2026-04-21 18:29:58 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: disinto-admin/disinto#1149
No description provided.