Files
blackroad-operating-system/.github/workflows/issue-triage.yml
Alexa Louise c00b6ee2a1 fix: Add Railway deployment configs and GitHub workflows
- Add Railway configuration (railway.toml)
- Add GitHub Actions workflows
  - Railway deployment automation
  - Python/Node.js testing
  - Health check monitoring
- Add GitHub templates (CODEOWNERS, PR template)
- Add requirements files if missing
- Standardize deployment across all services

This ensures consistent deployment patterns across the entire
BlackRoad OS infrastructure.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 15:35:09 -06:00

104 lines
3.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================================
# BlackRoad OS - Issue Triage Automation
# Copyright (c) 2025 BlackRoad OS, Inc. / Alexa Louise Amundson
# All Rights Reserved.
# ============================================================================
#
# Automatically triages and organizes new issues.
# ============================================================================
name: Issue Triage
on:
issues:
types: [opened, labeled]
permissions:
issues: write
jobs:
triage:
name: Triage New Issues
runs-on: ubuntu-latest
steps:
- name: Add triage label to new issues
if: github.event.action == 'opened'
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
// Check if issue has any labels
if (issue.labels.length === 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['triage']
});
console.log('Added triage label to issue #' + issue.number);
}
- name: Remove triage label when other labels added
if: github.event.action == 'labeled' && github.event.label.name != 'triage'
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const hasTriageLabel = issue.labels.some(l => l.name === 'triage');
if (hasTriageLabel) {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
name: 'triage'
});
console.log('Removed triage label from issue #' + issue.number);
} catch (e) {
console.log('Could not remove triage label:', e.message);
}
}
- name: Add priority based on title
if: github.event.action == 'opened'
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const title = issue.title.toLowerCase();
const body = (issue.body || '').toLowerCase();
// Check for priority indicators
if (title.includes('critical') || title.includes('urgent') || title.includes('security')) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['priority/high']
});
}
// Check for component mentions
const components = {
'quantum': ['quantum', 'ψ', 'brq-', 'pennylane'],
'operator': ['operator', 'ledger', 'promotion'],
'teacher': ['teacher', 'σ', 'lesson', 'quiz'],
'cli': ['br-', 'cli', 'terminal', 'command'],
'web': ['console', 'dashboard', 'ui', 'web'],
'agents': ['agent', 'lucidia', 'cece', 'roadie']
};
for (const [label, keywords] of Object.entries(components)) {
if (keywords.some(k => title.includes(k) || body.includes(k))) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: [label]
});
break;
}
}