Skip to content

[codex] Fire status listeners at commit point#472

Merged
proboscis merged 1 commit into
mainfrom
issue/inv-fire-status-change-all/run-20260612-170041
Jun 12, 2026
Merged

[codex] Fire status listeners at commit point#472
proboscis merged 1 commit into
mainfrom
issue/inv-fire-status-change-all/run-20260612-170041

Conversation

@proboscis

Copy link
Copy Markdown
Owner

Summary

  • Moves monitor-plane status listener dispatch from the old O4-only effectFireStatusChange path into Daemon.updateStatus after a successful status append.
  • Preserves captured output context on O4-derived status effects so blocked/rate-limited listeners still receive LastOutput.
  • Bridges feedback resume (orch send without --no-enter) into the same listener fanout after its legacy append, until O6 is folded into step() v2.
  • Updates the C4/I8 design docs and roadmap with the new commit-point law.

Root Cause

Status-change listeners were modeled as a separate step() effect that only stepCaptured emitted for agent inference. Other committed monitor transitions, such as PR closed/merged and dead-session verdicts, used updateStatus but never emitted that listener effect.

before:
  O4 capture -> setStatus + fireStatusChange
  O1/O5     -> setStatus only

after:
  any W1 setStatus -> updateStatus -> AppendEvent ok -> fireStatusChange once
  duplicate/no-op  -> no AppendEvent -> no listener
  append failure   -> error        -> no listener

Verification

  • go test -count=1 ./internal/daemon/
    • passed: validates daemon package including new listener tests.
  • go test ./internal/daemon/ -run 'TestStatusChangeListenersFireOnceForMonitorTransitionPaths|TestUpdateStatusSameStatusIsNoOp|TestUpdateStatusAppendEventError|TestMarkRunFeedbackSentTransitions'
    • passed: covers agent inference, PR-close terminal transition, dead-session verdict, feedback resume, duplicate no-op, and append failure.
  • make lint
    • passed: semgrep architecture rules and fixtures passed.
  • go build ./...
    • passed.

Additional Check

  • go test ./... was run and failed outside this change:
    • internal/monitor: TestSessionNameForProject expects untruncated project-name prefixes, but current output uses shortened names such as orch-myp-f9a700.
    • test/integration: TestRunWithBuiltInAgents failed when opencode session creation returned HTTP 500 (UnknownError, ref err_0c02feb6).

Issue: inv-fire-status-change-all

@proboscis proboscis force-pushed the issue/inv-fire-status-change-all/run-20260612-170041 branch from 364ffba to ebbb6a8 Compare June 12, 2026 14:27
@proboscis proboscis marked this pull request as ready for review June 12, 2026 14:28
@proboscis proboscis merged commit f39a19b into main Jun 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant