Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
* @Coding-Autopilot-System/core
/.github/ @Coding-Autopilot-System/core
1 change: 1 addition & 0 deletions .github/workflows/autopilot-create-issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ jobs:
create-issue:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Create or update issue
uses: actions/github-script@v9
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/autopilot-docs-daily.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ permissions:
jobs:
docs:
runs-on: ubuntu-latest
timeout-minutes: 15
env:
ORG: ${{ vars.ORG || github.repository_owner }}
GH_TOKEN: ${{ secrets.ORG_READ_TOKEN || github.token }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/autopilot-operator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ permissions:
jobs:
operator:
runs-on: [self-hosted, Windows]
# Cover the intended batch work: clone, Codex, dependency install, and tests.
timeout-minutes: 60

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Avoid shortening operator timeout below default

With the default MAX_ISSUES of 5, this job can legitimately spend more than an hour across Codex plus dependency installs and tests. GitHub's workflow syntax docs state that timeout-minutes auto-cancels the job and defaults to 360 minutes, so this new 60-minute cap is a sixfold reduction from the previous behavior; when it fires after Run operator has removed queued and added in-progress, PowerShell never reaches the catch block that marks the issue blocked, recreating the stranded in-progress state this change is meant to prevent.

Useful? React with 👍 / 👎.

env:
ORG: ${{ vars.ORG }}
GH_TOKEN: ${{ secrets.ORG_AUTOPILOT_TOKEN }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/autopilot-org-installer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ permissions:
jobs:
installer:
runs-on: ubuntu-latest
timeout-minutes: 15

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep installer runs from timing out mid-repo

On orgs where the repository loop takes over 15 minutes, especially when opted-in repos are cloned, committed, pushed, and PR-created, this new cap can cancel the shell in the middle of a repo. The workflow previously inherited GitHub's 360-minute default; after cancellation between git push -u origin "autopilot/install-intake" and gh pr create, later runs still see no intake workflow on the default branch but the remote branch already exists, so the non-forced push fails and the repo remains stuck without an installer PR.

Useful? React with 👍 / 👎.

env:
ORG: ${{ vars.ORG }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@ on:
branches: ["main", "master"]
pull_request:
branches: ["main", "master"]
permissions:
contents: read

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
actions: read
contents: read
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ concurrency:
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v5
Expand All @@ -29,6 +30,7 @@ jobs:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
timeout-minutes: 10
needs: build
steps:
- name: Deploy to GitHub Pages
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/pr-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@ on:
pull_request:
types: ['opened', 'edited', 'reopened', 'synchronize']

permissions:
contents: read
pull-requests: read

jobs:
main:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@ on:
schedule:
- cron: '30 1 * * *'

permissions:
contents: read
issues: write
pull-requests: write

jobs:
stale:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/stale@v8
with:
Expand Down
8 changes: 8 additions & 0 deletions memory/examples/20260704_operator-timeout-safe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# F-07 operator timeout safety

Issue Description: The GitHub Actions operator job could time out after marking an issue `in-progress`, leaving it stranded until a later manual cleanup.
State: The workflow timeout was too short for the intended batch work of clone, Codex, dependency install, and tests.
Action: Increased `.github/workflows/autopilot-operator.yml` timeout to 60 minutes and added a contract assertion in `tests/contract-tests.ps1`.
Result: The operator job now has enough time for its designed batch work, and CI prevents the timeout from being reduced unnoticed.
Diff Patch: Updated the workflow timeout and added a workflow contract check.
Rationale: Batch automation should not strand claim-state on a predictable timeout boundary.
1 change: 1 addition & 0 deletions tests/contract-tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Assert-TextMatch -Text $operator -Pattern 'Assert-SafeChangeSet' -Message "Opera
Assert-TextMatch -Text $operator -Pattern 'ALLOW_UNVERIFIED' -Message "Operator must enforce verification by default."
Assert-TextMatch -Text $workflow -Pattern 'secrets\.ORG_AUTOPILOT_TOKEN' -Message "Workflow must use an explicit org mutation token."
Assert-TextNotMatch -Text $workflow -Pattern 'GH_TOKEN: \$\{\{ secrets\.GITHUB_TOKEN \}\}' -Message "Workflow must not use repository token for org mutations."
Assert-TextMatch -Text $workflow -Pattern 'timeout-minutes: 60' -Message "Operator workflow must allow enough time for the intended batch work."

Assert-TextNotMatch -Text $installer -Pattern 'autofix,queued,docs' -Message "Installer must not queue automation before repository opt-in."

Expand Down
Loading