Skip to content

bug: Requirements workflow carries stale approval status when regenerating LLDs #84

bug: Requirements workflow carries stale approval status when regenerating LLDs

bug: Requirements workflow carries stale approval status when regenerating LLDs #84

name: Unblock Dependent Issues
on:
issues:
types: [closed]
jobs:
unblock-dependents:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Find and unblock dependent issues
uses: actions/github-script@v7
with:
script: |
const closedIssueNumber = context.payload.issue.number;
const repo = context.repo;
console.log(`Issue #${closedIssueNumber} was closed. Searching for dependent issues...`);
// Search for issues that mention this one as a blocker
// Common patterns: "Blocked by #N", "blocked by #N", "Depends on #N"
const searchQuery = `repo:${repo.owner}/${repo.repo} is:issue is:open "Blocked by #${closedIssueNumber}" OR "blocked by #${closedIssueNumber}" OR "Depends on #${closedIssueNumber}" OR "depends on #${closedIssueNumber}"`;
console.log(`Search query: ${searchQuery}`);
const searchResult = await github.rest.search.issuesAndPullRequests({
q: searchQuery,
per_page: 100
});
console.log(`Found ${searchResult.data.total_count} potentially dependent issues`);
for (const issue of searchResult.data.items) {
// Skip if it's the same issue somehow
if (issue.number === closedIssueNumber) continue;
// Check if issue has the "blocked" label
const hasBlockedLabel = issue.labels.some(label => label.name === 'blocked');
if (hasBlockedLabel) {
console.log(`Removing 'blocked' label from #${issue.number}: ${issue.title}`);
// Remove the blocked label
try {
await github.rest.issues.removeLabel({
owner: repo.owner,
repo: repo.repo,
issue_number: issue.number,
name: 'blocked'
});
// Add a comment noting the unblock
await github.rest.issues.createComment({
owner: repo.owner,
repo: repo.repo,
issue_number: issue.number,
body: `## Blocker Resolved\n\n#${closedIssueNumber} has been closed. This issue is no longer blocked.\n\n---\n*Automated by The Patrician*`
});
console.log(`Successfully unblocked #${issue.number}`);
} catch (error) {
console.log(`Failed to unblock #${issue.number}: ${error.message}`);
}
} else {
console.log(`#${issue.number} mentions blocker but doesn't have 'blocked' label, skipping`);
}
}
console.log('Unblock check complete');