test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@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

test(agent-queue): cover status/blocked in non-actionable exclusion test - #780

Merged
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772
Aug 18, 2026
Merged

test(agent-queue): cover status/blocked in non-actionable exclusion test#780
joryirving merged 1 commit into
mainfrom
foreman/wl-misospace-dispatch-772/issue-772

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Approve: adds "status/blocked" status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly

Fixes#772

Opened by foreman on review GO (workload wl-misospace-dispatch-772).

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

its-saffron[bot]

This comment was marked as outdated.

joryirving
joryirving previously requested changes Aug 18, 2026

@joryirvingjoryirving 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.

Minor (docs): AGENTS.md's status-label list still omits status/blocked; update the documented label conventions to match the new column.

its-saffron[bot]

This comment was marked as outdated.

Implements issue #772:
- Add `status/blocked` to the `StatusLabel` union, `BOARD_COLUMNS`,
`LABEL_COLORS`, and to AGENTS.md's status-label list. The column
renders between `status/in-review` and `status/done`.
- `STATUS_LABELS` is derived from `BOARD_COLUMNS`, so the
`POST /api/issues/status` endpoint automatically accepts `blocked`
via `isStatusLabel()` without a separate route change.
- `src/lib/agent-queue.ts` excludes `status/blocked` from circulation
the same way `status/done` is excluded: both `isActionable()` and
`isClaimableStatus()` return false, so blocked issues are filtered
out of the default queue, the claimable-only queue, and
`includeClaimed: true`. Returning to `status/ready` puts the issue
back in circulation with no residue.
- `set_issue_status` MCP tool description now lists `blocked` as a
valid value and explains that it parks the issue until a human
moves it back.
- Tests added for: blocked exclusion (default, includeClaimed,
claimableOnly, with agent label); return-to-circulation after the
label is removed; API acceptance of `blocked` and round-trip
transitions in and out of the column; updated board-column counts
(5 → 6) in `BOARD_COLUMNS` and kanban-board tests.
The `status/blocked` column is intentionally not in `ACTIVE_STATUS_LABELS`
— a blocked issue is parked, not in flight. No automatic migration
of existing `status/backlog` items is performed; the bridge-side
change that would fill the column is out of scope for this issue.
Fixes#772
Signed-off-by: Saffron <263493777+itsmiso-ai@users.noreply.github.com>
@itsmiso-ai
itsmiso-aiforce-pushed the foreman/wl-misospace-dispatch-772/issue-772 branch from a1b1c1b to 2cbabd9CompareAugust 18, 2026 03:38
@its-saffron
its-saffronBot dismissed their stale reviewAugust 18, 2026 03:43

Superseded by a newer automated review for this pull request.

@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: PR PR 780 — status/blocked Board Column

Recommendation: Approve

This PR adds status/blocked as a board column for issues requiring human attention, correctly excluding blocked issues from agent queue circulation. The implementation is thorough, well-tested, and fully addresses the linked issue PR 772.


Change-by-Change Findings

src/types/index.ts

  • StatusLabel union expanded to include "status/blocked" — criterion 1 ✅
  • BOARD_COLUMNS now includes { id: "status/blocked", title: "Blocked" } at canonical position (before Done) — criterion 1 ✅
  • LABEL_COLORS maps status/blocked to dc2626 (red) ✅

src/lib/agent-queue.ts

  • BLOCKED_STATUS constant declared ✅
  • isActionable() now returns false for status/blocked — criterion 3 ✅
  • isClaimableStatus() now returns false for status/blocked — blocks inclusion with claimableOnly: true and includeClaimed: true
  • Comments explicitly compare status/blocked behavior to status/done (both park issues until human intervention) ✅

src/app/api/issues/status/route.test.ts

  • Validation loop now covers "blocked" alongside existing statuses ✅
  • New test: transition to status/blocked — verifies label removal/addition ✅
  • New test: transition from status/blocked back to status/ready — criterion 6 ✅

src/lib/agent-queue.test.ts

  • excludes blocked issues from default queue
  • excludes blocked issues even with agent label and includeClaimed
  • excludes blocked issues with claimableOnly=true
  • returns blocked issues to circulation once the label is removed

src/components/kanban-board.test.tsx

  • Test updated: "renders all six columns" (5→6) ✅
  • Column titles array includes "Blocked" at correct position ✅
  • Section count assertion updated (5→6) ✅

src/mcp/server.ts

  • set_issue_status description updated to include blocked in examples — criterion 5 ✅
  • status field description updated: "backlog, ready, in-progress, in-review, blocked, or done" ✅

AGENTS.md

  • Label conventions docs updated to include status/blocked

Standards Compliance

Per AGENTS.md conventions:

  • ✅ Label naming follows category/value pattern (status/blocked)
  • ✅ No agent-specific names in documentation
  • ✅ TypeScript types updated to match runtime behavior
  • ✅ Error handling: no new paths introduced that would break the error instanceof Error pattern
  • ✅ No secrets committed

Linked Issue Fit

Issue PR 772 acceptance criteria checked against implementation:

CriterionRequirementStatus
1status/blocked in StatusLabel and BOARD_COLUMNS✅ Implemented
2Not in ACTIVE_STATUS_LABELS (blocked ≠ active)isActionable returns false for blocked
3Agent queue does not serve status/blocked issuesisActionable and isClaimableStatus both filter it out
4Status API accepts blocked as valid target✅ Validated by route tests
5set_issue_status MCP tool accepts blocked✅ Description and schema updated
6Moving from status/blocked to status/ready returns to circulation✅ Tested in agent-queue.test.ts
7No automatic migration of existing issues✅ No migration logic added

Tool Harness Findings

  • git_log (ok): PR commit 2cbabd9 confirmed at HEAD of feature branch
  • gh_api (error): GitHub API error on open PRs search — not relevant to this PR's changes
  • read_file (ok): src/lib/agent-queue.ts and src/types/index.ts verified as modified with expected content

Minor Note

The PR title is slightly narrower than the scope — it describes only the test additions but the PR also implements the full feature. This is a style issue, not a blocker. The PR body is accurate: "adds 'status/blocked' status label to dispatch system, updates types, BOARD_COLUMNS, isActionable filter, and all tests accordingly."


Unknowns / Needs Verification

None. All acceptance criteria are verifiable from the diff and CI results. The ACTIVE_STATUS_LABELS constant referenced in criterion 2 was not visible in the truncated diff, but the practical behavior (blocked issues not being served to agents) is verified by the isActionable and isClaimableStatus implementations and their test coverage.


Summary

The PR is well-implemented with comprehensive test coverage across the agent queue filter, status API, and Kanban board rendering. All seven acceptance criteria from issue PR 772 are satisfied. CI passes. No issues found.

@joryirving
joryirving merged commit bf80b03 into mainAug 18, 2026
8 checks passed
@joryirving
joryirving deleted the foreman/wl-misospace-dispatch-772/issue-772 branch August 18, 2026 12:27
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.

Add a status/blocked board column for work that needs a human

2 participants

@itsmiso-ai@joryirving