test(ceo): cover ceo_open_guidance_pr + harden the redline branch (fixes #250 RC) #251
No reviewers
Labels
No labels
Agent
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No assignees
2 participants
Notifications
Total time spent: 1 minute 17 seconds
Due date
igor
1 minute 17 seconds
No due date set.
Dependencies
No dependencies set
Reference
joshtronic/igor!251
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/ceo-guidance-test"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes forward the valid
REQUEST_CHANGESthe shadow review left on #250 (which got merged past the RC — exactly the failure mode the binding gate is meant to stop).The blocker (now fixed):
ceo_open_guidance_pr— the riskiest new path (base64 decode → conditional section-create → bullet append → re-encode → contents PUT → PR open) — was verified by nothing, and the live run never exercised it (no guidance emitted with no proposal history). So the core PR-opening mechanics had never actually run.This PR:
ceo_open_guidance_pr(the reviewer's exact ask — mirrors theceo_file_proposalPOST_BODYpattern): mock_fjto return a knownCEO.md, invoke it, assert the captured PUT body's decoded content — creates the## Decision guidanceheader when absent, does not duplicate it when present, keeps existing entries, appends the- <week>: <guidance>bullet, PUTs with the file sha, branchesceo-guidance-*.ceo_guidance_pr_open(closes the loop): aceo-guidance-*head throttles; otherwise it proceeds.ceo-guidance-<week>-<epoch>so a merged-but-undeleted same-week branch can't block a later redline on thenew_branchPUT; and the append-only placement assumption (Decision guidance stays the last section) is now an explicit comment.test-ceo(9 new checks) +check-syncgreen.Closes #238 — the final piece of the autonomous-CEO arc (#246 digest · #247 proposals · #250 decision-guidance redlines · #248 the
.agent/ceo.md→CEO.mdmove). With it landed and tested, #238's core is realized: an opt-in (mandate-file) CEO pass that gathers repo state, LLM-decides / harness-executes, and produces a board digest + greenlight-me proposals + decision-guidance redlines — never shipping code (propose + ratify, every write human-gated).Two spec items landed differently, by design:
do_review_tick), not the CEO's — that pass runs on the non-author tier to honor the supply-chain trust boundary, which the CEO (same model writing the digest) can't.Say the word if you want either built as follow-up and I'll reopen/keep #238 for it.
🤖 Review —
APPROVE(automated)CI for
4bf73316: successSummary: Small, test-focused follow-up that adds the missing coverage for
ceo_open_guidance_pr/ceo_guidance_pr_openand hardens the redline branch name with an epoch suffix. CI is green, scope is tight (~50 lines, two files), and the description matches the diff.Checklist verification (all honest):
ceo_open_guidance_pr" — present inbin/test-ceo.sh; asserts on the decoded PUT body (header creation, no-duplicate, existing-entry retention, bullet append, sha, branch prefix). ✓ceo_guidance_pr_open" — present; covers both throttle and proceed cases. ✓ceo-guidance-<week>-<epoch>" —lib/ceo.sh:295changed toceo-guidance-${week}-$(date +%s). ✓lib/ceo.sh:288. ✓Correctness notes:
return 1would leavePUT_BODYempty and fail thehas/eqassertions, so a green CI confirms the full decode→section-create→append→re-encode→PUT path actually ran.": Favor growth-lever work.", branch check is a prefix match), so they won't flake across a week boundary. Good.ceo-guidance-*prefix (test usesceo-guidance-2026-W26-1), so the hardening doesn't break throttling.Minor observations (non-blocking):
lib/ceo.shchange is purely a comment + branch-suffix tweak on the shown lines; the rest of the function body isn't in the diff, but it isn't being modified and the new tests exercise it end-to-end, so the green run is sufficient confirmation.ceo_open_guidance_pris invoked with>/dev/null 2>&1 || true, which swallows the exit code — acceptable here since correctness is asserted on the captured PUT body rather than the return value.Clean, in-scope, and well-tested. No reservations.
Independent review by the harness on
claude-opus-4-8. The human reviewer is requested once Igor has reviewed; a human still merges.Great work!