Skip to content

v1.6: align Board inventory and service guidance - #1109

Merged
jeffhuber merged 2 commits into
mainfrom
codex/issue-1063-board-clarity
Sep 22, 2026
Merged

jeffhuber merged 2 commits into
mainfrom
codex/issue-1063-board-clarity

Conversation

@jeffhuber

Copy link
Copy Markdown
Contributor

board list --repo OWNER/REPO now returns only Boards whose /api/identity response verifies that repository. Legacy, malformed, and unresponsive listeners fail closed instead of being selected from process command-line hints.

Board inventory and lanes status now share invoking, serving, and installed versions plus managed-service identity. The invoking CLI independently marks an old serving version stale even when that process reports its own installed and serving versions as equal. Identity-verified transient rows include a copyable stop-and-install promotion command; stale managed rows include an exact restart command with recording posture preserved.

Validation:

  • python -m pytest -q tests/test_board.py tests/test_lane_status.py (341 passed, 385 subtests)
  • python -m pytest -q tests/test_release_hygiene.py (364 passed, 1,313 subtests)
  • python -m ruff check .
  • python scripts/privacy_scan.py
  • python -m compileall -q src scripts
  • live board list --repo codemower-ai/code-mower --json smoke against four local listeners

Closes #1063

@jeffhuber jeffhuber added builder:codex Code Mower generated label needs-claude-audit tier:R Code Mower generated label labels Sep 22, 2026
Comment thread src/code_mower/board.py
Comment on lines 5105 to +5118
stale = [board for board in boards if board.get("restart_recommended")]
if stale:
managed_commands = [
str(board.get("restart_command") or "")
for board in stale
if board.get("restart_command")
]
if len(managed_commands) == 1 and len(stale) == 1:
return "restart stale managed Board", managed_commands[0]
ports = ", ".join(str(board.get("port")) for board in stale)
return "restart stale Board", f"stop stale Board port(s) {ports}, then restart with code-mower board serve --repo OWNER/REPO"
return (
"restart stale Board",
f"use the restart or promotion command on stale Board port(s) {ports}",
)

@gitar-bot gitar-bot Bot Sep 22, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Edge Case: Stale-board guidance drops the one available restart command

In _inventory_next_action (src/code_mower/board.py:5105-5118), when there are multiple stale boards but only one of them is managed (has restart_command), len(managed_commands) == 1 and len(stale) == 1 is False, so the specific, copyable restart_command is discarded in favor of the generic "use the restart or promotion command on stale Board port(s) ..." message — even though the exact command for the managed one is known and available on that board's row. This mainly affects operators with mixed managed/transient stale Boards, where the guidance is less helpful than it could be.

List all known commands when more than one stale board exists, instead of falling back to a generic message whenever counts don't match exactly.:

if managed_commands:
    if len(managed_commands) == 1:
        return "restart stale managed Board", managed_commands[0]
    return "restart stale managed Boards", "; ".join(managed_commands)
ports = ", ".join(str(board.get("port")) for board in stale)
return (
    "restart stale Board",
    f"use the restart or promotion command on stale Board port(s) {ports}",
)

Was this helpful? React with 👍 / 👎

@gitar-bot

gitar-bot Bot commented Sep 22, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your team has used its included automatic processing for this billing period (headroom scales with your seat count). You can still comment "Gitar review" to run one anytime, and automatic reviews resume on their own by October 1. Add seats for more headroom.
Learn more

Code Review 👍 Approved with suggestions 0 closed / 1 findings

🟡 Medium risk · Changes local Board discovery, version staleness, and service-management commands.

Aligns Board inventory and service guidance so board list --repo returns only identity-verified Boards, with invoking CLI independently marking stale versions and providing copyable stop-and-install or restart commands. Consider improving the stale-board guidance in _inventory_next_action to preserve the specific restart command when only one managed Board is stale among multiple stale Boards, rather than falling back to generic messaging.

💡 Edge Case: Stale-board guidance drops the one available restart command

📄 src/code_mower/board.py:5105-5118

In _inventory_next_action (src/code_mower/board.py:5105-5118), when there are multiple stale boards but only one of them is managed (has restart_command), len(managed_commands) == 1 and len(stale) == 1 is False, so the specific, copyable restart_command is discarded in favor of the generic "use the restart or promotion command on stale Board port(s) ..." message — even though the exact command for the managed one is known and available on that board's row. This mainly affects operators with mixed managed/transient stale Boards, where the guidance is less helpful than it could be.

List all known commands when more than one stale board exists, instead of falling back to a generic message whenever counts don't match exactly.
if managed_commands:
    if len(managed_commands) == 1:
        return "restart stale managed Board", managed_commands[0]
    return "restart stale managed Boards", "; ".join(managed_commands)
ports = ", ".join(str(board.get("port")) for board in stale)
return (
    "restart stale Board",
    f"use the restart or promotion command on stale Board port(s) {ports}",
)
🤖 Prompt for agents
Code Review: Aligns Board inventory and service guidance so `board list --repo` returns only identity-verified Boards, with invoking CLI independently marking stale versions and providing copyable stop-and-install or restart commands. Consider improving the stale-board guidance in `_inventory_next_action` to preserve the specific restart command when only one managed Board is stale among multiple stale Boards, rather than falling back to generic messaging.

1. 💡 Edge Case: Stale-board guidance drops the one available restart command
   Files: src/code_mower/board.py:5105-5118

   In `_inventory_next_action` (src/code_mower/board.py:5105-5118), when there are multiple stale boards but only one of them is managed (has `restart_command`), `len(managed_commands) == 1 and len(stale) == 1` is False, so the specific, copyable `restart_command` is discarded in favor of the generic "use the restart or promotion command on stale Board port(s) ..." message — even though the exact command for the managed one is known and available on that board's row. This mainly affects operators with mixed managed/transient stale Boards, where the guidance is less helpful than it could be.

   Fix (List all known commands when more than one stale board exists, instead of falling back to a generic message whenever counts don't match exactly.):
   if managed_commands:
       if len(managed_commands) == 1:
           return "restart stale managed Board", managed_commands[0]
       return "restart stale managed Boards", "; ".join(managed_commands)
   ports = ", ".join(str(board.get("port")) for board in stale)
   return (
       "restart stale Board",
       f"use the restart or promotion command on stale Board port(s) {ports}",
   )

Review coverage

📋 Rules No rules evaluated

🧪 Functional validation Not enabled · Set up

Options

Display: compact → Counting what did not apply, without listing it.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@github-actions

github-actions Bot commented Sep 22, 2026

Copy link
Copy Markdown

Claude audit (merge-authority lane)

Head SHA: 256da6ffd5251821996f28955d3a2fe5e3e26611
Verdict: BLOCKED
Review details remain in the local audit artifact.
Publication workflow: .github/workflows/local-audit-publication.yml at 762ca0c5f196fe20e644c062dd06bd7475476d24

@github-actions

Copy link
Copy Markdown

Code Mower notice: previously audited head 256da6ffd525 is no longer an ancestor of current head b83c5fc0b85f; commits may have been dropped. Only current-head audit verdicts count.

@github-actions

github-actions Bot commented Sep 22, 2026

Copy link
Copy Markdown

Claude audit (merge-authority lane)

Head SHA: b83c5fc0b85f24d18a92e87f8be8508831a60c31
Verdict: PASS
Review details remain in the local audit artifact.
Publication workflow: .github/workflows/local-audit-publication.yml at 762ca0c5f196fe20e644c062dd06bd7475476d24

@jeffhuber
jeffhuber enabled auto-merge (squash) September 22, 2026 01:10
@jeffhuber
jeffhuber merged commit 3cfd554 into main Sep 22, 2026
18 checks passed
@jeffhuber
jeffhuber deleted the codex/issue-1063-board-clarity branch September 22, 2026 01:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

builder:codex Code Mower generated label claude-audit-done tier:R Code Mower generated label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

v1.6.0: align Board inventory filters, versions, and service guidance

1 participant