chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore: manage Dispatch labels from labels.yaml - #373

Merged
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels
Jun 15, 2026
Merged

chore: manage Dispatch labels from labels.yaml#373
joryirving merged 1 commit into
mainfrom
codex/dispatch-labels

Conversation

@joryirving

@joryirvingjoryirving commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Why

Dispatch worker queues and PR workflows depend on stable labels such as status/*, priority/*, agent/*, and ai-review. This moves the canonical Dispatch-managed label set into .github/labels.yaml so label setup is version-controlled instead of manual GitHub UI state.

What changed

  • Added .github/labels.yaml with Dispatch status, priority, classification, workflow, stable agent, ai-review, and active umbrella labels.
  • Added a pinned label sync workflow using EndBug/label-sync@52074158190acb45f3077f9099fea818aa43f97a.
  • The workflow supports workflow_dispatch and runs when .github/labels.yaml changes on main.

Safety

  • Add/update only for the first rollout.
  • Unknown labels are not pruned: delete-other-labels: false.
  • Repo-specific labels, Renovate labels, and dynamic agent/* labels remain untouched unless explicitly listed in the config.
  • No Dispatch runtime state, app behavior, DB data, issues, or home-ops files were changed.

Validation

  • Parsed .github/labels.yaml as YAML.
  • Parsed .github/workflows/label-sync.yaml as YAML.
  • Verified required status/*, priority/*, stable agent/*, and ai-review labels are present.
  • Verified pinned actions/checkout and pinned EndBug/label-sync references.
  • Verified minimal workflow permissions: contents: read, issues: write.
  • Verified delete-other-labels: false is present.
  • Generated a local label report from the public GitHub Labels API: create=9, update=14, delete=0.

Dispatch worker labels are now version-controlled.

@joryirving
joryirvingforce-pushed the codex/dispatch-labels branch from a5c40fc to e8f8e60CompareJune 15, 2026 02:58
@joryirving
joryirving merged commit f84f1d6 into mainJun 15, 2026
3 checks passed
@joryirving
joryirving deleted the codex/dispatch-labels branch June 15, 2026 03:04

@its-saffronits-saffronBot 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.

AI Automated Review

Full PR review.

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic) — escalated (fast_low_confidence)

Review Summary

PR PR 373 adds version-controlled label management for Dispatch via a canonical .github/labels.yaml file and a pinned GitHub Actions workflow that syncs those labels using EndBug/label-sync. The changes are well-scoped, safe by design (delete-other-labels: false), and CI has passed both Validate and Docker Build.

Change-by-Change Findings

.github/labels.yaml (76 lines)

Defines 24 labels across five categories: Status (5), Priority (4), Type/Classification (8), Dispatch/Workflow (4), and Stable Agents (2). The Status and Priority labels exactly match the conventions documented in AGENTS.md. The two stable agent labels (agent/saffron-normal, agent/saffron-escalated) follow the agent/* prefix pattern. The file includes a trailing comment noting that repo-specific labels can be appended and that unknown labels are not pruned.

Notable labels not explicitly documented in AGENTS.md but present in the codebase: pr-review-fix (referenced in the OpenClaw contract and pr-fix-queue), ai-review (implied by ai-pr-review.yaml), and umbrella (referenced in lane classification docs as a parent/audit item marker). These appear to be intentional additions reflecting operational needs. The needs-escalation label is documented in routing rules as a legacy label that should NOT trigger ESCALATED routing, but it is included here as a stable Dispatch-managed label — this is acceptable as the routing logic explicitly disregards it.

.github/workflows/label-sync.yaml (39 lines)

A minimal, well-structured workflow that:

  • Triggers on workflow_dispatch (with a dry_run toggle) and on push to main when .github/labels.yaml changes.
  • Uses pinned SHA references for both actions/checkout (v6.0.3, matching other workflows in the repo) and EndBug/label-sync (v2.3.3, commit 52074158190acb45f3077f9099fea818aa43f97a).
  • Requests minimal permissions: contents: read at the workflow level, issues: write only where needed for the sync step.
  • Sets delete-other-labels: false, ensuring existing repo-specific, Renovate, and dynamic agent/* labels are preserved.
  • Uses sparse checkout to fetch only .github/labels.yaml, keeping the checkout lightweight.
  • Sets persist-credentials: false on checkout, which is appropriate since the label-sync action authenticates via its own GitHub App installation token rather than needing persisted credentials.

Standards Compliance

ConventionStatusNotes
status/* labels follow documented pattern✅ PassAll five status labels match AGENTS.md exactly
priority/* labels follow documented pattern✅ Passp0–p3 match exactly
agent/* labels follow documented pattern✅ PassTwo stable agent labels use the agent/ prefix
No hardcoded agent names in generic docs✅ PassLabels file is operational config, not documentation; stable agent names are appropriate for Dispatch's own infrastructure
Pinned action references✅ PassBoth actions use full SHA pins matching repo usage
Minimal workflow permissions✅ Passcontents: read + issues: write only; no unneeded scopes
No commit of secrets✅ PassNo secrets or credentials in the diff

Linked Issue Fit

No linked issue was provided. The PR body states the goal is to version-control Dispatch-managed labels so label setup is no longer manual GitHub UI state. The implementation achieves this: a canonical YAML file drives label sync, and the workflow ensures the file stays applied on every main push. The Safety section accurately describes the non-destructive behavior (delete-other-labels: false).

Evidence Provider Findings

No evidence providers were configured for this review.

Tool Harness Findings

No tool harness requests were made for this review.

Unknowns / Needs Verification

None. The diff is self-contained, CI passed, the action is a well-known community tool with a pinned SHA, and the label set aligns with documented conventions and operational references found in the codebase.

Recommendation

Approve. The PR delivers version-controlled label management with a safe, minimal workflow. All label conventions are followed, permissions are scoped correctly, action references are pinned, and CI validates cleanly.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@joryirving