feat(ceo): give the CEO the whole open board + a no-re-file rule #303

Merged
joshtronic merged 1 commit from feat/ceo-dedup into master 2026-06-30 21:24:56 +00:00
Collaborator

Systemic fix #1 of 2 for the "agent multiplies your plate" holes — born from the scenekids autopsy.

The bug

ceo_gather_week only handed the CEO the Agent-labeled queue. So it never saw onboarding (#6) or maintenance (#7) — both unlabeled — and re-filed them as its own proposals (#10#6, #11#7). A blocked repo generated more tickets, not fewer.

The fix

The CEO now sees everything — because it's the CEO:

  • Open PRs in flight (what's in review / awaiting merge), and
  • The whole open-issue board — every open issue with its labels, not just the Agent queue.

And the directive gains a no-re-file rule: dedup against the board; never propose what an open ticket already owns; and if the repo is blocked on one (e.g. not scaffolded yet), say so and propose zero rather than re-filing the blocker.

make test green (the ceo_gather_week test now asserts the open-PR + whole-board sections).

This is also the groundwork for the bigger idea you just raised — a CEO that can triage auto-opened tickets before they're worked needs to see the whole board first. It now does.

**Systemic fix #1 of 2** for the "agent multiplies your plate" holes — born from the scenekids autopsy. ## The bug `ceo_gather_week` only handed the CEO the **`Agent`-labeled** queue. So it never saw onboarding (#6) or maintenance (#7) — both unlabeled — and re-filed them as its own proposals (#10 ≈ #6, #11 ≈ #7). A blocked repo generated *more* tickets, not fewer. ## The fix The CEO now sees **everything** — because it's the CEO: - **Open PRs in flight** (what's in review / awaiting merge), and - **The whole open-issue board** — every open issue with its labels, not just the Agent queue. And the directive gains a **no-re-file rule**: dedup against the board; never propose what an open ticket already owns; and if the repo is *blocked* on one (e.g. not scaffolded yet), say so and propose **zero** rather than re-filing the blocker. `make test` green (the `ceo_gather_week` test now asserts the open-PR + whole-board sections). This is also the groundwork for the bigger idea you just raised — a CEO that can *triage* auto-opened tickets before they're worked needs to see the whole board first. It now does.
feat(ceo): give the CEO the whole open board + a no-re-file rule
All checks were successful
Lint / check-sync (pull_request) Successful in 5s
Lint / check-sync (push) Successful in 4s
63bb2dd14e
The CEO digest only saw the Agent-labeled queue, so it couldn't see onboarding,
maintenance, or its own pending proposals -- and re-filed them as parallel
proposals (scenekids #10 duplicated onboarding #6; #11 duplicated maintenance
#7), multiplying the human's plate instead of reducing it.

ceo_gather_week now shows the CEO EVERYTHING -- it's the boss: open PRs in
flight, and the whole open-issue board (labels and all), not just the Agent
queue. The directive adds a no-re-file rule: dedup against the board, never
propose what an open ticket already owns, and if the repo is blocked on one
(e.g. onboarding scaffolding), say so and propose zero rather than re-filing the
blocker as new work.

make test green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011KXPafSYJPY6XkWHHk1Lfs
joshtronic approved these changes 2026-06-30 21:20:54 +00:00
Author
Collaborator

🤖 Review — APPROVE (automated)

CI for 63bb2dd1: success

Summary: Widens ceo_gather_week to render open PRs in flight and the whole open-issue board (with labels) instead of only the Agent-labeled queue, and adds a "don't re-file what the board already owns" rule to the digest directive. Small, focused, well-tested, CI green. Approving.

Findings — nothing blocking:

  • lib/ceo.sh: New "Open PRs" section (/pulls?state=open) and "WHOLE board" section (/issues?state=open&type=issues) are sound. The select(.pull_request == null) filter still excludes PR-shaped issues even though type=issues should already do so — belt-and-suspenders, harmless, and exercised by the test.
  • Label rendering jq is correct: empty/absent labels → [unlabeled] (two spaces), non-empty → [label,...]. Matches the test assertion - #51 Login bug [unlabeled] exactly.
  • bin/test-ceo.sh: Stub-routing reorder is correct — *pulls*state=open* is listed before */pulls*, so the open-PR fetch and the (unchanged) merged-PR fetch route to distinct stubs. CI success confirms the merged-PR fetch URL does not collide with the state=open pattern.
  • Tests genuinely cover the new behavior: merged-in-window vs stale PR, open PR in flight (#99), recent-issue render (#51), PR-filtered-from-issues (#12), and whole-board + label (#51). This backs the checklist claim honestly.
  • Scope clean: only lib/ceo.sh, its test, and the directive markdown. No CI-config touches, no security surface (read-only API GETs, no injection/secrets), well under the line budget.

Notes / things the human can't unit-test:

  • The "no-re-file" behavior is a prompt-directive instruction, so its effectiveness rests on the model following it at runtime — not verifiable from the diff. The mechanical change (showing the whole board so dedup is even possible) is what's tested, and that's correct.
  • The directive still phrases the throttle as "if the open Agent queue already has work" while the digest now displays the whole board. That's consistent only if the proposal throttle's open-count query remains Agent-scoped (a separate path not in this diff). Worth a glance, but not a regression introduced here.

No defects found; merge as-is.


Independent review by the harness on claude-opus-4-8. The human reviewer is requested once Igor has reviewed; a human still merges.

### 🤖 Review — `APPROVE` _(automated)_ CI for `63bb2dd1`: **success** **Summary:** Widens `ceo_gather_week` to render open PRs in flight and the *whole* open-issue board (with labels) instead of only the `Agent`-labeled queue, and adds a "don't re-file what the board already owns" rule to the digest directive. Small, focused, well-tested, CI green. Approving. **Findings — nothing blocking:** - `lib/ceo.sh`: New "Open PRs" section (`/pulls?state=open`) and "WHOLE board" section (`/issues?state=open&type=issues`) are sound. The `select(.pull_request == null)` filter still excludes PR-shaped issues even though `type=issues` should already do so — belt-and-suspenders, harmless, and exercised by the test. - Label rendering jq is correct: empty/absent labels → ` [unlabeled]` (two spaces), non-empty → ` [label,...]`. Matches the test assertion `- #51 Login bug [unlabeled]` exactly. - `bin/test-ceo.sh`: Stub-routing reorder is correct — `*pulls*state=open*` is listed before `*/pulls*`, so the open-PR fetch and the (unchanged) merged-PR fetch route to distinct stubs. CI `success` confirms the merged-PR fetch URL does not collide with the `state=open` pattern. - Tests genuinely cover the new behavior: merged-in-window vs stale PR, open PR in flight (#99), recent-issue render (#51), PR-filtered-from-issues (#12), and whole-board + label (#51). This backs the checklist claim honestly. - Scope clean: only `lib/ceo.sh`, its test, and the directive markdown. No CI-config touches, no security surface (read-only API GETs, no injection/secrets), well under the line budget. **Notes / things the human can't unit-test:** - The "no-re-file" behavior is a prompt-directive instruction, so its effectiveness rests on the model following it at runtime — not verifiable from the diff. The mechanical change (showing the whole board so dedup is even possible) is what's tested, and that's correct. - The directive still phrases the throttle as "if the open `Agent` queue already has work" while the digest now displays the whole board. That's consistent only if the proposal throttle's open-count query remains Agent-scoped (a separate path not in this diff). Worth a glance, but not a regression introduced here. No defects found; merge as-is. --- <sub>Independent review by the harness on `claude-opus-4-8`. The human reviewer is requested once Igor has reviewed; a human still merges.</sub> <!-- review sha=63bb2dd14e640ade59be57152354115d0cce38a5 verdict=APPROVE ci=success -->
igor added spent time 2026-06-30 21:22:14 +00:00
1 minute 12 seconds
joshtronic deleted branch feat/ceo-dedup 2026-06-30 21:24:56 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No assignees
2 participants
Notifications
Total time spent: 1 minute 12 seconds
igor
1 minute 12 seconds
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joshtronic/igor!303
No description provided.