Skip to content

[Code Quality] Fix schema inconsistency: Remove duplicate timeout_minutes field #14030

@github-actions

Description

@github-actions

Description

The main workflow schema defines both timeout-minutes (kebab-case, GitHub Actions standard) and timeout_minutes (snake_case) as separate top-level properties. This creates schema pollution and potential user confusion.

Current State

Schema location: pkg/parser/schemas/main_workflow_schema.json

Both fields are defined:

  • timeout-minutes ✅ (GitHub Actions standard)
  • timeout_minutes ❌ (legacy/backwards compatibility)

Runtime behavior: pkg/workflow/compiler_orchestrator_workflow.go:149-151

  • Runtime handles both field names for backwards compatibility
  • No functional issue, but schema should reflect the preferred API

Suggested Changes

  1. Remove timeout_minutes from schema (keep only timeout-minutes)
  2. Keep runtime backwards compatibility - continue supporting both names in code
  3. Document the dual support - Add migration note if needed

Files Affected

  • pkg/parser/schemas/main_workflow_schema.json (remove timeout_minutes property definition)

Success Criteria

  • Schema contains only timeout-minutes field
  • Runtime continues to accept both field names (no breaking change)
  • Schema validation passes: make build && make test-unit
  • Documentation updated if backwards compatibility needs to be documented

Source

Extracted from Schema Consistency: Runtime Behavior vs Schema Contracts - Jan 29, 2026

Specific finding:

Dual Field Names: timeout-minutes vs timeout_minutes ⚠️

  • Impact: HIGH - Schema pollution and potential confusion
  • Schema defines BOTH fields as separate properties
  • Runtime handles both for backwards compatibility
  • Recommendation: Remove timeout_minutes from schema, keep runtime support

Priority

Medium - Improves schema clarity and prevents user confusion, but no functional breakage currently.

AI generated by Discussion Task Miner - Code Quality Improvement Agent

  • expires on Feb 7, 2026, 1:28 AM UTC

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions