Skip to content

fix: remove invalid permissions block from workflow calling reusable workflow#603

Merged
stranske merged 11 commits intomainfrom
fix/workflow-startup-failure-real-fix
Jan 6, 2026
Merged

fix: remove invalid permissions block from workflow calling reusable workflow#603
stranske merged 11 commits intomainfrom
fix/workflow-startup-failure-real-fix

Conversation

@stranske
Copy link
Copy Markdown
Owner

@stranske stranske commented Jan 6, 2026

Source: Issue #253

Automated Status Summary

Scope

Address unmet acceptance criteria from PR #252.

Original scope:

  • Scope section missing from source issue.

Context for Agent

Related Issues/PRs

References

Tasks

  • Tasks section missing from source issue.

Acceptance criteria

  • Acceptance criteria section missing from source issue.

Head SHA: 4f61f04
Latest Runs: ✅ success — Gate
Required: gate: ✅ success

Workflow / Job Result Logs
Agents PR meta manager ❔ in progress View run
CI Autofix Loop ✅ success View run
Gate ✅ success View run
Health 40 Sweep ✅ success View run
Health 44 Gate Branch Protection ✅ success View run
Health 45 Agents Guard ✅ success View run
Health 50 Security Scan ✅ success View run
Maint 52 Validate Workflows ✅ success View run
PR 11 - Minimal invariant CI ✅ success View run
Selftest CI ✅ success View run
Validate Sync Manifest ✅ success View run

* fix: correct YAML syntax in agents-issue-intake.yml template

The 'if' condition in the check_labels job was improperly formatted,
causing the line to wrap incorrectly with 'runs-on' ending up on the
same line. This resulted in startup_failure errors when the workflow
was deployed to consumer repos.

Changes:
- Use multiline scalar (|) for complex if condition
- Properly indent continuation lines
- Ensure runs-on is on its own line

Fixes workflow failures in stranske/Travel-Plan-Permission and other
consumer repositories using this template.

* fix: add validation safeguards for template changes

Problem: Template changes sync to 4+ consumer repos. A syntax error
in agents-issue-intake.yml caused startup_failure in all consumer
repos because there was no validation preventing bad templates.

Changes:
1. Fix YAML syntax error in check_labels job (multiline if condition)
2. Add validate_workflow_yaml.py script to catch YAML/style issues
3. Add pre-commit hook to validate templates before commit
4. Add CRITICAL section to CLAUDE.md about template changes

Safeguards added:
- Pre-commit hook blocks template commits with validation errors
- Script checks: YAML syntax, line length (100), runs-on placement
- Clear warning in CLAUDE.md with validation commands
- Enforces repo standards before sync

Related: Travel-Plan-Permission#253, Workflows#602
Copilot AI review requested due to automatic review settings January 6, 2026 13:25
@github-actions github-actions bot added the autofix Opt-in automated formatting & lint remediation label Jan 6, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 6, 2026

Status | ✅ no new diagnostics
History points | 1
Timestamp | 2026-01-06 14:05:48 UTC
Report artifact | autofix-report-pr-603
Remaining | 0
New | 0
No additional artifacts

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 6, 2026

Automated Status Summary

Head SHA: 893e7fd
Latest Runs: ⏳ pending — Gate
Required contexts: Gate / gate, Health 45 Agents Guard / Enforce agents workflow protections
Required: core tests (3.11): ⏳ pending, core tests (3.12): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Coverage Overview

  • Coverage history entries: 1

Coverage Trend

Metric Value
Current 92.21%
Baseline 85.00%
Delta +7.21%
Minimum 70.00%
Status ✅ Pass

Top Coverage Hotspots (lowest coverage)

File Coverage Missing
scripts/workflow_health_check.py 62.6% 28
scripts/classify_test_failures.py 62.9% 37
scripts/ledger_validate.py 65.3% 63
scripts/mypy_return_autofix.py 82.6% 11
scripts/ledger_migrate_base.py 85.5% 13
scripts/fix_cosmetic_aggregate.py 92.3% 1
scripts/coverage_history_append.py 92.8% 2
scripts/workflow_validator.py 93.3% 4
scripts/update_autofix_expectations.py 93.9% 1
scripts/pr_metrics_tracker.py 95.7% 3
scripts/generate_residual_trend.py 96.6% 1
scripts/build_autofix_pr_comment.py 97.0% 2
scripts/aggregate_agent_metrics.py 97.2% 0
scripts/fix_numpy_asserts.py 98.1% 0
scripts/sync_test_dependencies.py 98.3% 1

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

Address unmet acceptance criteria from PR #252.

Original scope:

  • Scope section missing from source issue.

Context for Agent

Related Issues/PRs

References

Tasks

  • Tasks section missing from source issue.

Acceptance criteria

  • Acceptance criteria section missing from source issue.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Jan 6, 2026

🤖 Keepalive Loop Status

PR #603 | Agent: Codex | Iteration 0/5

Current State

Metric Value
Iteration progress [----------] 0/5
Action wait (missing-agent-label)
Disposition skipped (transient)
Gate success
Tasks 0/2 complete
Keepalive ❌ disabled
Autofix ❌ disabled

🔍 Failure Classification

| Error type | infrastructure |
| Error category | resource |
| Suggested recovery | Confirm the referenced resource exists (repo, PR, branch, workflow, or file). |

* fix: correct YAML syntax in agents-issue-intake.yml template

The 'if' condition in the check_labels job was improperly formatted,
causing the line to wrap incorrectly with 'runs-on' ending up on the
same line. This resulted in startup_failure errors when the workflow
was deployed to consumer repos.

Changes:
- Use multiline scalar (|) for complex if condition
- Properly indent continuation lines
- Ensure runs-on is on its own line

Fixes workflow failures in stranske/Travel-Plan-Permission and other
consumer repositories using this template.

* fix: add validation safeguards for template changes

Problem: Template changes sync to 4+ consumer repos. A syntax error
in agents-issue-intake.yml caused startup_failure in all consumer
repos because there was no validation preventing bad templates.

Changes:
1. Fix YAML syntax error in check_labels job (multiline if condition)
2. Add validate_workflow_yaml.py script to catch YAML/style issues
3. Add pre-commit hook to validate templates before commit
4. Add CRITICAL section to CLAUDE.md about template changes

Safeguards added:
- Pre-commit hook blocks template commits with validation errors
- Script checks: YAML syntax, line length (100), runs-on placement
- Clear warning in CLAUDE.md with validation commands
- Enforces repo standards before sync

Related: Travel-Plan-Permission#253, Workflows#602
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a critical GitHub Actions workflow failure by removing an invalid permissions block from a job that calls a reusable workflow, and implements YAML validation tooling to prevent similar issues in the future.

  • Removes invalid permissions block from the sync job that was preventing the workflow from starting (jobs calling reusable workflows via uses: cannot override permissions)
  • Formats long if conditions to multiline format to comply with the 100-character line length standard
  • Adds a new Python validation script and pre-commit hook to catch workflow YAML issues before they reach CI

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

File Description
templates/consumer-repo/.github/workflows/agents-issue-intake.yml Removes invalid permissions block from sync job and reformats two long if conditions to multiline format for 100-char compliance
scripts/validate_workflow_yaml.py New validation script that checks workflow YAML files for syntax errors, line length, runs-on placement, and multiline condition formatting
CLAUDE.md Adds critical warning section documenting template change procedures, validation requirements, and the 100-character line length standard
.pre-commit-config.yaml Adds pre-commit hook to automatically validate workflow template files before commit

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@stranske stranske temporarily deployed to agent-high-privilege January 6, 2026 13:29 — with GitHub Actions Inactive
The workflow now uses the CODESPACES_WORKFLOWS secret which has
merge permissions, falling back to GITHUB_TOKEN if not available.

Successfully merged sync PRs in Manager-Database, Template, and
trip-planner using this token.
@stranske stranske temporarily deployed to agent-high-privilege January 6, 2026 13:34 — with GitHub Actions Inactive
- Parse multiline REGISTERED_CONSUMER_REPOS env var instead of hardcoded list
- Add stale PR cleanup: close and delete branches for older sync PRs
- Process repos in order from REGISTERED_CONSUMER_REPOS (7 repos total)
- Increase per_page to 20 to catch multiple stale PRs
- Add stale_closed status tracking in summary
- Extract consumer repo list from maint-68-sync-consumer-repos.yml at runtime
- Use yq to parse the authoritative REGISTERED_CONSUMER_REPOS env var
- Remove duplicated hardcoded list to maintain single source of truth
@stranske stranske temporarily deployed to agent-high-privilege January 6, 2026 13:45 — with GitHub Actions Inactive
- Change default max_length from 150 to 100 to match repo standards (black, ruff, isort)
- Add explicit encoding='utf-8' to all file operations for cross-platform compatibility
- Remove redundant condition check (already verified by elif condition)
- Add critical section to CLAUDE.md about checking new workflows for file artifacts
- Create comprehensive WORKFLOW_ARTIFACT_CHECKLIST.md with decision trees and examples
- Document common artifact patterns that cause merge conflicts in consumer repos
- Provide recovery procedures for artifact pollution
- Emphasize template workflows sync to 7+ repos (one mistake = 7+ conflicts)
@stranske stranske temporarily deployed to agent-high-privilege January 6, 2026 13:58 — with GitHub Actions Inactive
- Require addressing ALL bot comments before merging PRs
- Document that bot comments are mandatory fixes, not suggestions
- Provide process for evaluating and resolving bot feedback
- Emphasize impact: ignored comments → bugs in 7+ consumer repos
- Add examples of critical issues bots catch (encoding, defaults, logic)
- Add workflow to EXPECTED_NAMES test mapping
- Document in docs/ci/WORKFLOWS.md with description
- Add to docs/ci/WORKFLOW_SYSTEM.md workflow table
- Fixes test failures: test_canonical_workflow_names_match_expected_mapping, test_workflow_names_match_filename_convention, test_inventory_docs_list_all_workflows
@stranske stranske temporarily deployed to agent-high-privilege January 6, 2026 14:03 — with GitHub Actions Inactive
- Quote $repos variable in yq pipeline to prevent word splitting (SC2086)
- Quote $GITHUB_OUTPUT and $GITHUB_STEP_SUMMARY variables
- Fixes shellcheck warnings in actionlint
@stranske stranske temporarily deployed to agent-high-privilege January 6, 2026 14:05 — with GitHub Actions Inactive
@stranske stranske merged commit 95aae00 into main Jan 6, 2026
114 checks passed
@stranske stranske deleted the fix/workflow-startup-failure-real-fix branch January 6, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autofix Opt-in automated formatting & lint remediation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants