Skip to content

feat(initiative): dependency-aware driver to deliver epics agentically - #507

Merged
don-petry merged 4 commits into
mainfrom
feat/initiative-driver
Jun 9, 2026
Merged

don-petry merged 4 commits into
mainfrom
feat/initiative-driver

Conversation

@don-petry

@don-petry don-petry commented Jun 9, 2026 •

Copy link
Copy Markdown
Collaborator

What

Adds an orchestration layer that delivers an initiative epic's child issues through the existing
per-item dev-lead agent in dependency order — without modifying dev-lead itself.

  • scripts/initiative-driver.sh — reads an epic's native "blocked by" edges and applies the
    dev-lead label to each OPEN sub-issue whose blockers are all closed, bounded by MAX_IN_FLIGHT.
  • .github/workflows/initiative-driver.yml — runs on issues:[closed] (merge → close → unblock →
    label → next pickup), a safety-net cron, and workflow_dispatch.
  • docs/initiatives/agentic-release-strategy-orchestration.md — model, DAG/waves, gates, the
    human→agent bootstrap order, and an operator runbook.

Companion to #504 (the analysis). Dependency edges for epic #495's children (#496–#506) are already
set as native GitHub "blocked by" relationships.

Why

Dev-lead is reactive and per-item (triggers only on the dev-lead label). Coordinating a multi-issue
initiative = deciding when that label is applied to each ready issue. This driver makes that
decision from the dependency graph, so a merge automatically releases the now-unblocked successors.

Safety design

Validation

Follow-ups (noted in the doc, not in this PR)

  • A bats test mocking gh for the gate/blocker/cap logic.
  • Generalize the hard-coded EPIC=495 default if a second initiative adopts the driver.

Summary by CodeRabbit

  • New Features

    • Added automated initiative release orchestration with dependency-aware task assignment.
    • Supports manual triggers, scheduled runs, and automatic activation on issue closure.
    • Includes safety gates, hold mechanisms, and in-flight limits for controlled rollout.
  • Documentation

    • Added comprehensive guide for release orchestration strategy and operational procedures.

Adds an orchestration layer that turns the per-item dev-lead agent into ordered,
dependency-gated delivery of a whole initiative — without changing the agent.

- scripts/initiative-driver.sh: reads an epic's native 'blocked by' edges and
  applies the `dev-lead` label to each OPEN sub-issue whose blockers are all
  closed, bounded by MAX_IN_FLIGHT. Gated on `initiative:auto` (off by default,
  so Phase 1 stays human-driven); skips `dev-lead:hands-off`/`initiative:hold`.
- .github/workflows/initiative-driver.yml: runs on issues:[closed] (merge ->
  close -> unblock -> label -> next pickup), a safety-net cron, and dispatch.
  Applies the label via GH_PAT_WORKFLOWS — a GITHUB_TOKEN-applied label does NOT
  trigger dev-lead (loop-prevention; same class as pr-review #463).
- docs/initiatives/agentic-release-strategy-orchestration.md: model, DAG/waves,
  gates, the human->agent bootstrap order, and an operator runbook.

Dependency edges for epic #495's children (#496-#506) are set as native GitHub
'blocked by' relationships. Validated: shellcheck clean; dry-run against the live
DAG releases only #496 (no blockers) and correctly holds the rest; the default
`initiative:auto` gate no-ops as intended.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@don-petry don-petry added enhancement Feature requests initiative Epic / initiative tracking issue labels Jun 9, 2026
@don-petry
don-petry requested a review from a team as a code owner June 9, 2026 02:44
Copilot AI review requested due to automatic review settings June 9, 2026 02:44
@coderabbitai

coderabbitai Bot commented Jun 9, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@don-petry, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 40 minutes and 47 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: c0defa5c-24da-471d-aac2-be50834fa08f

📥 Commits

Reviewing files that changed from the base of the PR and between 71d1cc3 and 4d969f9.

📒 Files selected for processing (5)
  • .github/workflows/initiative-driver.yml
  • .github/workflows/lint.yml
  • docs/initiatives/agentic-release-strategy-orchestration.md
  • scripts/initiative-driver.sh
  • tests/test_initiative_driver.bats
📝 Walkthrough

Walkthrough

This PR introduces a GitHub Actions-driven orchestration system for initiative epics. A new workflow triggers on issue closure, scheduled cron, or manual dispatch, executing a Bash driver script that labels sub-issues for automated processing only when their dependency blockers are resolved and safety gates are satisfied, up to a bounded concurrency limit.

Changes

Initiative Driver Orchestration

Layer / File(s) Summary
Workflow triggers and execution environment
.github/workflows/initiative-driver.yml
GitHub Actions workflow Initiative Driver triggered on issues closed, 6-hour cron, or manual dispatch with epic, dry_run, max_in_flight inputs. Sets issue write permissions, non-canceling concurrency keyed by epic, validates GH_TOKEN presence, and passes environment variables to the driver script.
Driver script: initialization, gates, and release logic
scripts/initiative-driver.sh
Bash driver that requires EPIC env var and optionally CLOSED_ISSUE. Checks epic gate label (initiative:auto) and exits if absent. Enumerates sub-issues, verifies closed issue membership, counts in-flight releases (those already labeled dev-lead), and iteratively releases ready candidates up to MAX_IN_FLIGHT cap by querying blocked_by dependencies and labeling with dev-lead (or dry-run logging). Respects dev-lead:hands-off and initiative:hold safety labels.
Initiative orchestration documentation
docs/initiatives/agentic-release-strategy-orchestration.md
Operational guide describing the driver's role in orchestrating per-issue dev-lead agents, safety gates, concurrency bounds, event-driven triggering with cron safety backstop, epic dependency DAG, two-phase rollout strategy (human bootstrap then auto-enablement), and runbook commands (dry-run, arm/disarm, throttle).

Sequence Diagrams

sequenceDiagram
  participant Trigger as Issue Closed / Cron / Manual
  participant Workflow as Initiative Driver Workflow
  participant Driver as initiative-driver.sh
  Trigger->>Workflow: event.inputs.epic or env.CLOSED_ISSUE
  Workflow->>Workflow: Validate GH_TOKEN present
  Workflow->>Workflow: Set concurrency and permissions
  Workflow->>Driver: Run with EPIC, CLOSED_ISSUE, DRY_RUN, MAX_IN_FLIGHT
Loading
flowchart
  Init["Initialize env vars<br/>Set strict mode"] --> GateCheck["Check epic<br/>GATE_LABEL present?"]
  GateCheck -->|No| Exit["Exit no-op"]
  GateCheck -->|Yes| EnumSubs["Enumerate epic<br/>sub-issues"]
  EnumSubs --> ClosedCheck["If CLOSED_ISSUE:<br/>verify in epic?"]
  ClosedCheck -->|No| Exit
  ClosedCheck -->|Yes| CountInflight["Count open sub-issues<br/>with DEV_LEAD_LABEL"]
  CountInflight --> CalcCapacity["capacity = MAX_IN_FLIGHT<br/>- in_flight_count"]
  CalcCapacity --> IterateOpen["For each open<br/>sub-issue"]
  IterateOpen --> SkipCheck["Skip if:<br/>in-flight or<br/>hands-off or hold?"]
  SkipCheck -->|Yes| IterateOpen
  SkipCheck -->|No| CheckBlockers["Query blocked_by<br/>any open blockers?"]
  CheckBlockers -->|Yes| IterateOpen
  CheckBlockers -->|No| Label["Label with<br/>DEV_LEAD_LABEL<br/>or dry-run log"]
  Label --> DecrementCap["capacity--"]
  DecrementCap --> CapCheck{"capacity > 0?"}
  CapCheck -->|Yes| IterateOpen
  CapCheck -->|No| LogTotal["Log released count"]
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(initiative): dependency-aware driver to deliver epics agentically' clearly and specifically summarizes the main change: adding a dependency-aware driver for epic delivery, which is the core objective of this PR.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/initiative-driver

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-bot-comment (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) June 9, 2026 02:46
@don-petry
don-petry disabled auto-merge June 9, 2026 02:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds an initiative “driver” that orchestrates dev-lead pickups for an epic’s child issues by reading native GitHub dependency edges (“blocked by”) and applying the dev-lead label in dependency order, bounded by MAX_IN_FLIGHT, without changing dev-lead itself.

Changes:

  • Introduces scripts/initiative-driver.sh to gate on initiative:auto, compute in-flight capacity, and label newly-unblocked sub-issues.
  • Adds .github/workflows/initiative-driver.yml to run the driver on issues: closed, a safety-net cron, and workflow_dispatch.
  • Documents the orchestration model and operator runbook in docs/initiatives/agentic-release-strategy-orchestration.md.

Reviewed changes

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

File Description
scripts/initiative-driver.sh New bash dispatcher that evaluates sub-issue readiness (blockers, hold/hands-off labels, in-flight cap) and applies dev-lead.
.github/workflows/initiative-driver.yml New workflow to invoke the driver on issue-closure events, cron backstop, and manual runs.
docs/initiatives/agentic-release-strategy-orchestration.md New doc describing the DAG/waves model, PAT requirement, and runbook for operating the driver.

Comment thread .github/workflows/initiative-driver.yml
Comment thread docs/initiatives/agentic-release-strategy-orchestration.md Outdated
Comment thread .github/workflows/initiative-driver.yml
Comment thread scripts/initiative-driver.sh Outdated
Comment thread scripts/initiative-driver.sh
Comment thread scripts/initiative-driver.sh Outdated
@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — waiting on PR blockers (intent: review-changes)

PR: #507
No changes were committed, but the PR still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews). The retry cron will re-attempt automatically. Next attempt after: 2026-06-09T03:17:20Z

@don-petry

Copy link
Copy Markdown
Collaborator Author

Note

@don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically.
Next attempt after: 2026-06-09T03:17:20Z

@don-petry
don-petry enabled auto-merge (squash) June 9, 2026 02:47

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 71d1cc353c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/initiative-driver.yml Outdated
@don-petry
don-petry disabled auto-merge June 9, 2026 02:48

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request introduces the agentic release strategy orchestration initiative, adding documentation and a Bash script (scripts/initiative-driver.sh) to automate dependency-aware label dispatching for initiative epics. The code review feedback highlights several critical robustness issues in the Bash script, particularly regarding silent failures under set -e when using process substitution with mapfile or executing subshells directly inside if conditions. Additionally, it suggests optimizing the has_label function using pure Bash pattern matching to avoid spawning unnecessary subprocesses.

Comment thread scripts/initiative-driver.sh
Comment thread scripts/initiative-driver.sh
Comment thread scripts/initiative-driver.sh Outdated
Comment thread scripts/initiative-driver.sh Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/initiative-driver.yml:
- Around line 43-52: The GH_PAT_WORKFLOWS token (GH_TOKEN) is currently set
under the global env and is exposed to every step (including actions/checkout);
remove GH_TOKEN from the top-level env and instead add GH_TOKEN: ${{
secrets.GH_PAT_WORKFLOWS }} to the env blocks of only the steps that invoke the
GitHub CLI or require the PAT (the guard step and the driver step referenced in
the workflow), and apply the same scoping fix for the second occurrence noted
around lines 59-72 so only those specific steps receive the token.
- Around line 36-37: The workflow currently grants only issues: write and
exposes GH_TOKEN at workflow level which breaks actions/checkout and
unnecessarily exposes the PAT; update the workflow permissions to include
contents: read (so actions/checkout succeeds) and remove or narrow issues: write
from the global permissions, and move the GH_TOKEN environment variable out of
the global env into the specific steps that need it (the PAT guard step and the
step that runs bash scripts/initiative-driver.sh which calls gh); ensure
actions/checkout step remains unprivileged by not inheriting the PAT and that
only the two gh-related steps have env: GH_TOKEN set.

In `@scripts/initiative-driver.sh`:
- Around line 42-50: Validate and normalize EPIC, CLOSED_ISSUE, MAX_IN_FLIGHT
and DRY_RUN early: require EPIC and CLOSED_ISSUE to match only digits and use
`${EPIC:?}` style with a clear error message to fail fast if empty/invalid;
ensure MAX_IN_FLIGHT is a positive integer (reject non-digits like "1+4" and
optionally clamp to a sensible max) before any arithmetic or use in API paths;
normalize DRY_RUN to a canonical "true" or "false" (accept common user values
like "true|false|1|0|yes|no" case-insensitively and convert to lowercase
"true"/"false") and use that normalized value for branching and before the first
`gh api` call; perform these checks and normalizations at the top of the script
(near the variable definitions for EPIC, CLOSED_ISSUE, MAX_IN_FLIGHT, DRY_RUN)
so invalid inputs fail with clear messages and never get passed to shell
commands or API endpoints.
- Around line 42-50: Make the top-level configuration variables (REPO, EPIC,
CLOSED_ISSUE, DEV_LEAD_LABEL, GATE_LABEL, HANDS_OFF_LABEL, HOLD_LABEL,
MAX_IN_FLIGHT, DRY_RUN) readonly by declaring them with readonly after their
default assignments, replace all single-bracket test expressions ([ ... ]) with
the safer double-bracket form ([[ ... ]]) wherever those variables are
evaluated, and convert any use of arithmetic conditional syntax from (( ... ))
to the POSIX-friendly $(( ... )) form in the arithmetic checks that reference
MAX_IN_FLIGHT or similar counters; locate these changes around the conditional
checks and arithmetic expressions that reference the above symbols and update
them consistently.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8e78a357-0665-4903-9314-5841d03a4dd3

📥 Commits

Reviewing files that changed from the base of the PR and between 93f03db and 71d1cc3.

📒 Files selected for processing (3)
  • .github/workflows/initiative-driver.yml
  • docs/initiatives/agentic-release-strategy-orchestration.md
  • scripts/initiative-driver.sh

Comment thread .github/workflows/initiative-driver.yml Outdated
Comment thread .github/workflows/initiative-driver.yml
Comment thread scripts/initiative-driver.sh
@don-petry

Copy link
Copy Markdown
Collaborator Author

@coderabbitai resolve

@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-reviews (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) June 9, 2026 02:57
@don-petry
don-petry disabled auto-merge June 9, 2026 02:58
coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 9, 2026
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — review-changes (applied)

Changes committed and pushed.

@don-petry
don-petry enabled auto-merge (squash) June 9, 2026 03:03
@don-petry
don-petry disabled auto-merge June 9, 2026 03:03
@sonarqubecloud

sonarqubecloud Bot commented Jun 9, 2026

Copy link
Copy Markdown

@don-petry

Copy link
Copy Markdown
Collaborator Author

Dev-Lead — fix-reviews (no-changes)

Agent reasoning
Addressed 4 threads:
- Thread PRRT_kwDOR9SdIs6IA8mN: all_children mapfile fix already present (lines 85–90); confirmed in reply [replied + resolved]
- Thread PRRT_kwDOR9SdIs6IA8mW: open_children mapfile fix already present (lines 111–117); confirmed in reply [replied + resolved]
- Thread PRRT_kwDOR9SdIs6IA8mY: outdated — in-flight loop fix already at lines 118–124 [resolved]
- Thread PRRT_kwDOR9SdIs6IA8ma: outdated — has_label pure-bash fix already at line 70 [resolved]
Test verification: pass — 8/8 bats tests in tests/test_initiative_driver.bats
Files changed: none (all fixes were already committed)
```

@donpetry-bot donpetry-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Automated review — APPROVED ✓

Risk: LOW
Reviewed commit: 4d969f91e9aede964a138a3a28380ae7e99c18b6
Review mode: triage-approved (single reviewer)

Summary

Adds a dependency-aware label dispatcher (scripts/initiative-driver.sh + .github/workflows/initiative-driver.yml) that releases an epic's sub-issues to the dev-lead agent in DAG order. Confirmation review of triage's low-risk assessment — all CI green, well-tested, properly hardened.

Linked issue analysis

No closing issue reference. PR body identifies this as a companion to #504 (analysis) and dependency edges for epic #495's children (#496–#506). Scope matches the description: orchestration layer that does not modify dev-lead itself.

Findings

Workflow hardening — .github/workflows/initiative-driver.yml is well-locked-down: contents: read only, persist-credentials: false, pinned actions/checkout SHA with version comment, 10-min timeout, concurrency group keyed by epic, fail-fast PAT-presence guard. The PAT requirement (GH_PAT_WORKFLOWS) is correctly motivated — a GITHUB_TOKEN-applied label would not retrigger dev-lead.yml.

Script safety — scripts/initiative-driver.sh uses set -euo pipefail, validates EPIC/MAX_IN_FLIGHT as integers, normalizes DRY_RUN, marks all config readonly after validation. has_label uses pure-bash exact-line matching (no regex injection risk). Gate label (initiative:auto on the epic) keeps Phase 1 human-driven by default. Per-issue dev-lead:hands-off / initiative:hold escape hatches honored. MAX_IN_FLIGHT cap bounds blast radius.

Tests — tests/test_initiative_driver.bats mocks gh to cover gate behavior, MAX_IN_FLIGHT cap, blocked_by evaluation, and label application. Note: the has_label micro-tests redefine the function locally with grep -qxF rather than invoking the script's pure-bash implementation, but the integration tests exercise the real script via bash $SCRIPT. Acceptable. lint.yml is updated to run the new bats file.

Docs — docs/initiatives/agentic-release-strategy-orchestration.md clearly explains the model, DAG/waves, gates, PAT requirement, and bootstrap order. Prior bot review threads (CodeRabbit, Codex, Gemini, Copilot) all resolved or dismissed; SonarCloud quality gate passed.

CI status

All required checks green: Lint, ShellCheck, bats, validate-agent-profiles, Agent Security Scan, Compile agentic workflows, CodeQL (actions + python), SonarCloud, AgentShield, Secret scan (gitleaks), unit-tests, gh-aw-compile, dependency-audit (no applicable ecosystems). review workflow runs from earlier cycles are CANCELLED/SKIPPED as expected.


Reviewed automatically by the PR-review agent (single-reviewer mode: opus 4.7). Reply if you need a human review.

@don-petry
don-petry merged commit facf168 into main Jun 9, 2026
36 of 39 checks passed
@don-petry
don-petry deleted the feat/initiative-driver branch June 9, 2026 03:07

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4d969f91e9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +147 to +148
gh api "repos/$REPO/issues/$n/dependencies/blocked_by" \
--jq '[.[] | select(.state=="open") | .number] | join(",")'

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 Paginate blocked-by dependencies before releasing

When a ready candidate has more than 30 blocked_by dependencies, this call only inspects the first page; I checked GitHub's REST docs for this endpoint, which list per_page with a default of 30 plus page pagination parameters. Because the sub-issues calls above use --paginate but this one does not, an open blocker on page 2+ is missed and the driver can apply dev-lead before all blockers are closed.

Useful? React with 👍 / 👎.

don-petry added a commit that referenced this pull request Jun 12, 2026
#507)

* feat(initiative): dependency-aware driver to deliver epics agentically

Adds an orchestration layer that turns the per-item dev-lead agent into ordered,
dependency-gated delivery of a whole initiative — without changing the agent.

- scripts/initiative-driver.sh: reads an epic's native 'blocked by' edges and
  applies the `dev-lead` label to each OPEN sub-issue whose blockers are all
  closed, bounded by MAX_IN_FLIGHT. Gated on `initiative:auto` (off by default,
  so Phase 1 stays human-driven); skips `dev-lead:hands-off`/`initiative:hold`.
- .github/workflows/initiative-driver.yml: runs on issues:[closed] (merge ->
  close -> unblock -> label -> next pickup), a safety-net cron, and dispatch.
  Applies the label via GH_PAT_WORKFLOWS — a GITHUB_TOKEN-applied label does NOT
  trigger dev-lead (loop-prevention; same class as pr-review #463).
- docs/initiatives/agentic-release-strategy-orchestration.md: model, DAG/waves,
  gates, the human->agent bootstrap order, and an operator runbook.

Dependency edges for epic #495's children (#496-#506) are set as native GitHub
'blocked by' relationships. Validated: shellcheck clean; dry-run against the live
DAG releases only #496 (no blockers) and correctly holds the rest; the default
`initiative:auto` gate no-ops as intended.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(reviews): address review comments [skip ci-relay]

* chore: apply manual instructions [skip ci-relay]

---------

Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Jun 14, 2026
#507)

* feat(initiative): dependency-aware driver to deliver epics agentically

Adds an orchestration layer that turns the per-item dev-lead agent into ordered,
dependency-gated delivery of a whole initiative — without changing the agent.

- scripts/initiative-driver.sh: reads an epic's native 'blocked by' edges and
  applies the `dev-lead` label to each OPEN sub-issue whose blockers are all
  closed, bounded by MAX_IN_FLIGHT. Gated on `initiative:auto` (off by default,
  so Phase 1 stays human-driven); skips `dev-lead:hands-off`/`initiative:hold`.
- .github/workflows/initiative-driver.yml: runs on issues:[closed] (merge ->
  close -> unblock -> label -> next pickup), a safety-net cron, and dispatch.
  Applies the label via GH_PAT_WORKFLOWS — a GITHUB_TOKEN-applied label does NOT
  trigger dev-lead (loop-prevention; same class as pr-review #463).
- docs/initiatives/agentic-release-strategy-orchestration.md: model, DAG/waves,
  gates, the human->agent bootstrap order, and an operator runbook.

Dependency edges for epic #495's children (#496-#506) are set as native GitHub
'blocked by' relationships. Validated: shellcheck clean; dry-run against the live
DAG releases only #496 (no blockers) and correctly holds the rest; the default
`initiative:auto` gate no-ops as intended.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(reviews): address review comments [skip ci-relay]

* chore: apply manual instructions [skip ci-relay]

---------

Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Jun 18, 2026
#507)

* feat(initiative): dependency-aware driver to deliver epics agentically

Adds an orchestration layer that turns the per-item dev-lead agent into ordered,
dependency-gated delivery of a whole initiative — without changing the agent.

- scripts/initiative-driver.sh: reads an epic's native 'blocked by' edges and
  applies the `dev-lead` label to each OPEN sub-issue whose blockers are all
  closed, bounded by MAX_IN_FLIGHT. Gated on `initiative:auto` (off by default,
  so Phase 1 stays human-driven); skips `dev-lead:hands-off`/`initiative:hold`.
- .github/workflows/initiative-driver.yml: runs on issues:[closed] (merge ->
  close -> unblock -> label -> next pickup), a safety-net cron, and dispatch.
  Applies the label via GH_PAT_WORKFLOWS — a GITHUB_TOKEN-applied label does NOT
  trigger dev-lead (loop-prevention; same class as pr-review #463).
- docs/initiatives/agentic-release-strategy-orchestration.md: model, DAG/waves,
  gates, the human->agent bootstrap order, and an operator runbook.

Dependency edges for epic #495's children (#496-#506) are set as native GitHub
'blocked by' relationships. Validated: shellcheck clean; dry-run against the live
DAG releases only #496 (no blockers) and correctly holds the rest; the default
`initiative:auto` gate no-ops as intended.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(reviews): address review comments [skip ci-relay]

* chore: apply manual instructions [skip ci-relay]

---------

Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
@don-petry don-petry mentioned this pull request Jun 21, 2026
4 tasks
don-petry added a commit that referenced this pull request Jun 25, 2026
#507)

* feat(initiative): dependency-aware driver to deliver epics agentically

Adds an orchestration layer that turns the per-item dev-lead agent into ordered,
dependency-gated delivery of a whole initiative — without changing the agent.

- scripts/initiative-driver.sh: reads an epic's native 'blocked by' edges and
  applies the `dev-lead` label to each OPEN sub-issue whose blockers are all
  closed, bounded by MAX_IN_FLIGHT. Gated on `initiative:auto` (off by default,
  so Phase 1 stays human-driven); skips `dev-lead:hands-off`/`initiative:hold`.
- .github/workflows/initiative-driver.yml: runs on issues:[closed] (merge ->
  close -> unblock -> label -> next pickup), a safety-net cron, and dispatch.
  Applies the label via GH_PAT_WORKFLOWS — a GITHUB_TOKEN-applied label does NOT
  trigger dev-lead (loop-prevention; same class as pr-review #463).
- docs/initiatives/agentic-release-strategy-orchestration.md: model, DAG/waves,
  gates, the human->agent bootstrap order, and an operator runbook.

Dependency edges for epic #495's children (#496-#506) are set as native GitHub
'blocked by' relationships. Validated: shellcheck clean; dry-run against the live
DAG releases only #496 (no blockers) and correctly holds the rest; the default
`initiative:auto` gate no-ops as intended.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(reviews): address review comments [skip ci-relay]

* chore: apply manual instructions [skip ci-relay]

---------

Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
don-petry added a commit that referenced this pull request Jun 25, 2026
#507)

* feat(initiative): dependency-aware driver to deliver epics agentically

Adds an orchestration layer that turns the per-item dev-lead agent into ordered,
dependency-gated delivery of a whole initiative — without changing the agent.

- scripts/initiative-driver.sh: reads an epic's native 'blocked by' edges and
  applies the `dev-lead` label to each OPEN sub-issue whose blockers are all
  closed, bounded by MAX_IN_FLIGHT. Gated on `initiative:auto` (off by default,
  so Phase 1 stays human-driven); skips `dev-lead:hands-off`/`initiative:hold`.
- .github/workflows/initiative-driver.yml: runs on issues:[closed] (merge ->
  close -> unblock -> label -> next pickup), a safety-net cron, and dispatch.
  Applies the label via GH_PAT_WORKFLOWS — a GITHUB_TOKEN-applied label does NOT
  trigger dev-lead (loop-prevention; same class as pr-review #463).
- docs/initiatives/agentic-release-strategy-orchestration.md: model, DAG/waves,
  gates, the human->agent bootstrap order, and an operator runbook.

Dependency edges for epic #495's children (#496-#506) are set as native GitHub
'blocked by' relationships. Validated: shellcheck clean; dry-run against the live
DAG releases only #496 (no blockers) and correctly holds the rest; the default
`initiative:auto` gate no-ops as intended.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(bot): address bot feedback [skip ci-relay]

* fix(reviews): address review comments [skip ci-relay]

* chore: apply manual instructions [skip ci-relay]

---------

Co-authored-by: donpetry-bot <{}+donpetry-bot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Feature requests initiative Epic / initiative tracking issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants