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
6 changes: 4 additions & 2 deletions .github/workflows/downstream-users.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1,480 changes: 1,480 additions & 0 deletions .github/workflows/gh-aw-autonomy-atomicity-analyzer.lock.yml

Large diffs are not rendered by default.

159 changes: 159 additions & 0 deletions .github/workflows/gh-aw-autonomy-atomicity-analyzer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
---
inlined-imports: true
name: "Autonomy Atomicity Analyzer"
description: "Find patterns that block concurrent development by multiple agents or developers"
imports:
- gh-aw-fragments/elastic-tools.md
- gh-aw-fragments/runtime-setup.md
- gh-aw-fragments/formatting.md
- gh-aw-fragments/rigor.md
- gh-aw-fragments/mcp-pagination.md
- gh-aw-fragments/messages-footer.md
- gh-aw-fragments/safe-output-create-issue.md
- gh-aw-fragments/previous-findings.md
- gh-aw-fragments/best-of-three-investigation.md
- gh-aw-fragments/scheduled-audit.md
- gh-aw-fragments/network-ecosystems.md
engine:
id: copilot
model: ${{ inputs.model }}
on:
workflow_call:
inputs:
model:
description: "AI model to use"
type: string
required: false
default: "gpt-5.3-codex"
additional-instructions:
description: "Repo-specific instructions appended to the agent prompt"
type: string
required: false
default: ""
setup-commands:
description: "Shell commands to run before the agent starts (dependency install, build, etc.)"
type: string
required: false
default: ""
allowed-bot-users:
description: "Allowlisted bot actor usernames (comma-separated)"
type: string
required: false
default: "github-actions[bot]"
messages-footer:
description: "Footer appended to all agent comments and reviews"
type: string
required: false
default: ""
title-prefix:
description: "Title prefix for created issues (e.g. '[autonomy-atomicity]')"
type: string
required: false
default: "[autonomy-atomicity]"
secrets:
COPILOT_GITHUB_TOKEN:
required: true
roles: [admin, maintainer, write]
bots:
- "${{ inputs.allowed-bot-users }}"
concurrency:
group: autonomy-atomicity-analyzer
cancel-in-progress: true
permissions:
contents: read
issues: read
pull-requests: read
tools:
github:
toolsets: [repos, issues, pull_requests, search, labels]
bash: true
web-fetch:
strict: false
safe-outputs:
activation-comments: false
noop:
create-issue:
max: 1
title-prefix: "${{ inputs.title-prefix }} "
timeout-minutes: 90
steps:
- name: Repo-specific setup
if: ${{ inputs.setup-commands != '' }}
env:
SETUP_COMMANDS: ${{ inputs.setup-commands }}
run: eval "$SETUP_COMMANDS"
---

You are the Autonomy & Atomicity Analyzer — an expert in concurrent development workflows who identifies patterns that cause problems when multiple agents or developers work on the repository simultaneously.

Your task is to analyze the codebase for autonomy and atomicity blockers — patterns that create contention, merge conflicts, or subtle breakage when parallel changes land.

**The bar is high.** Only file an issue when you find a concrete, actionable blocker that a maintainer could refactor to improve parallel development.

## Report Assignment

### Data Gathering

1. **Understand the architecture**
- Read `README.md`, `CONTRIBUTING.md`, `DEVELOPING.md`, and any architecture docs.
- Map out the high-level module structure — directories, key abstractions, data flow.

2. **Identify blockers**
- Scan the project structure and identify files with the highest import fan-in and fan-out.
- Look for arrays, objects, or switch statements that act as registries where every new feature must add an entry.
- Identify test files whose scope spans multiple unrelated features.
- Check for module-level mutable state (e.g., `let` declarations at module scope, mutable singletons).
- Review the store/state management layer for patterns that force all features into a single shared object.

3. **Check for duplicates**
- Search open issues: `repo:{owner}/{repo} is:issue is:open in:title "${{ inputs.title-prefix }}"`.
- Review `/tmp/previous-findings.json` for issues already filed by this agent.

### What to Look For

1. **Global mutable state** — singleton stores, module-level variables, or shared caches that multiple features read/write without isolation. Flag cases where adding a new feature requires modifying the same global object or file that every other feature also touches.
2. **Manual routing or registration** — central switch statements, lookup tables, or config arrays where every new feature must add an entry to the same file. These are merge-conflict magnets.
3. **God files** — files that are imported by or import from a disproportionate number of other modules, creating a bottleneck that many concurrent changes must touch.
4. **Over-broad tests** — test files that assert on large snapshots, full-page renders, or integration scenarios covering multiple unrelated features in a single test. These break whenever any of the covered features change, even if the change is correct.
5. **Implicit ordering dependencies** — code that relies on import side effects, specific initialization order, or assumes a particular execution sequence without explicit dependency declaration.
6. **Shared configuration hotspots** — single config files where unrelated changes regularly collide.

### What to Skip

- Minor style issues or theoretical problems with no current impact
- Patterns that are already well-isolated or that the team has intentionally centralized
- Issues already tracked by an open issue

### Quality Gate — When to Noop

Call `noop` if:
- No concrete, actionable blocker is found.
- Every finding is theoretical with no evidence of actual contention.
- A similar issue is already open.

"Autonomy Atomicity Analyzer skipped — no concrete concurrent development blockers found."

### Issue Format

**Issue title:** Brief summary of the blocker (e.g., "Central visualization registry is a merge-conflict hotspot")

**Issue body:**

> ## Autonomy / Atomicity Findings
>
> ### 1. [Brief description]
> **Category:** [Global state | Manual routing | God file | Over-broad test | Ordering dependency | Config hotspot]
> **File(s):** [paths]
> **Problem:** [What happens when two developers or agents change this area concurrently]
> **Suggested fix:** [Brief refactoring sketch]
>
> ### 2. [Next finding...]
>
> ## Suggested Actions
> - [ ] [Specific, actionable checkbox for each improvement]

### Labeling

- If the `autonomy-atomicity` label exists (check with `github-get_label`), include it in the `create_issue` call; otherwise, rely on the `${{ inputs.title-prefix }}` title prefix only.

${{ inputs.additional-instructions }}
6 changes: 4 additions & 2 deletions .github/workflows/gh-aw-bug-exterminator.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions .github/workflows/gh-aw-code-duplication-fixer.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions .github/workflows/gh-aw-code-simplifier.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 14 additions & 4 deletions .github/workflows/gh-aw-deep-research.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .github/workflows/gh-aw-deep-research.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Assist with deep research on ${{ github.repository }} from issue comments, then

- **Repository**: ${{ github.repository }}
- **Issue**: #${{ github.event.issue.number }} — ${{ github.event.issue.title }}
- **Request**: "${{ needs.activation.outputs.text }}"
- **Request**: "${{ steps.sanitized.outputs.text }}"

## Constraints

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/gh-aw-duplicate-issue-detector.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
safe-outputs:
add-comment:
max: 1
pull-requests: false
issues: true
discussions: false
---
Expand All @@ -13,6 +14,6 @@ safe-outputs:
- **Links**: Max 50 URLs per comment.
- **HTML**: Only safe tags allowed (`details`, `summary`, `code`, `pre`, `blockquote`, `table`, `b`, `em`, `strong`, `h1`–`h6`, `hr`, `br`, `li`, `ol`, `ul`, `p`, `sub`, `sup`). Other tags are converted to parentheses.
- **URLs**: Only HTTPS URLs to allowed domains. Non-HTTPS and non-allowed domains are redacted.
- **Bot triggers**: References like `fixes #123` or `closes #456` are neutralized to prevent unintended issue closures.
- **Bot triggers**: References like `fixes #123` or `closes #456` are neutralized to prevent unintended issue closures unless it's referencing the triggering issue.

If you exceed 10 mentions or 50 links, the comment will be rejected.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
safe-outputs:
add-comment:
max: 1
issues: false
pull-requests: true
discussions: false
---
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/gh-aw-fragments/safe-output-create-pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ safe-inputs:
if (contributing) checklist.push(`Review the contributing guide (${contributing}) before opening or updating a PR.`);
if (prTemplate) checklist.push(`Follow the PR template (${prTemplate}) for title, description, and validation notes.`);
checklist.push('Confirm the requested task is fully completed and validated before creating or pushing PR changes.');
return { status: 'ok', checklist, contributing_guide: contributing, pr_template: prTemplate };
const result = { status: 'ok', checklist, contributing_guide: contributing, pr_template: prTemplate };
console.log(JSON.stringify(result));
return result;
safe-outputs:
create-pull-request:
draft: ${{ inputs.draft-prs }}
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/gh-aw-fragments/safe-output-push-to-pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ safe-inputs:
if (contributing) checklist.push(`Review the contributing guide (${contributing}) before opening or updating a PR.`);
if (prTemplate) checklist.push(`Follow the PR template (${prTemplate}) for title, description, and validation notes.`);
checklist.push('Confirm the requested task is fully completed and validated before creating or pushing PR changes.');
return { status: 'ok', checklist, contributing_guide: contributing, pr_template: prTemplate };
const result = { status: 'ok', checklist, contributing_guide: contributing, pr_template: prTemplate };
console.log(JSON.stringify(result));
return result;
safe-outputs:
push-to-pull-request-branch:
---
Expand Down
Loading
Loading