Skip to content

fix(dispatcher): keep quiet output focused - #2330

Merged
justinhelmer merged 1 commit into
mainfrom
plan/fix-coreplanelabs-switch-42ece0/u1
Sep 23, 2026
Merged

justinhelmer merged 1 commit into
mainfrom
plan/fix-coreplanelabs-switch-42ece0/u1

Conversation

@coreplane-switchboard

@coreplane-switchboard coreplane-switchboard Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Quiet mode now keeps checklists, actionable queue details, failures, and final results while suppressing routine Slack and run-lifecycle narration. Verbose and debug retain diagnostics, including across pipeline rehosting.

Why: #2329 and the observed Slack thread exposed internal narration at quiet. The verbosity contract requires suppression at emission seams without hiding outcomes people need.

Where to look

  1. Slack acceptance lifecycle Resolves verbosity before visible receipts, then gates reactions and reconnect narration without skipping intake or downloads. ⚠ Wrong ordering can leak quiet receipts or resolve against the wrong requester.
  2. Native Slack status lifecycle Keeps card ownership cleanup at quiet while restricting shimmer set and re-up behavior to verbose and debug. ⚠ A cleanup regression can leave stale shimmer after a restart.
  3. Run-card activity ladder Quiet paints the checklist alone, verbose adds compact activity, and debug adds commands plus wait diagnosis.
  4. Direct steer acknowledgement Treats a successful direct or operator-bound steer as routine narration while retaining every failed steer result.
  5. Actionable queue result Always returns queue position and withdrawal command because a queued request has no run card carrying that result. ⚠ Suppressing this leaves the requester unable to locate or withdraw queued work.
  6. Restart-card verbosity recovery Uses the hosted row’s durably resolved verbosity instead of relying on the directive-stripped input event. ⚠ A wrong fallback makes verbose and debug pipelines restart as quiet.
  7. Production recording regression Proves the real ship path strips the directive from input while persisting the resolved debug level on the hosted row.

Feedback wanted: Please judge the quiet/actionable boundary for queued work and whether the durable hosted-row verbosity is the right restart authority.

Risk: 429 changed lines span Slack and core dispatch. A mistake can hide needed outcomes or leak narration; revert the commit to roll back. Splitting transport and core was rejected because one verbosity contract and matrix cover both.

Verified: Focused 106 tests, root tsc, changed-file Prettier, hygiene and specs passed; CI typecheck, checks and most suites are green, with four jobs still pending.

Decisions (2)
  • Persist resolved verbosity on the hosted row. Recovering from the first input was rejected because production deliberately strips verbosity directives before recording it. The already-resolved value is the durable fact rehosting needs.
  • Classify queue placement as an outcome. Routine lifecycle acknowledgements remain suppressed at quiet, but queued requests have no run card. Their position and withdrawal command are therefore a necessary intermediate result, not narration.
Validation (7 criteria)
Criterion Proof
Production recording preserves request-level verbosity for rehosting RED: focused tests initially failed because hosted meta had no verbosity and verbose/debug rehosts became quiet. GREEN: ship production-path plus restart matrix pass.
Queued requests remain actionable at every verbosity RED: quiet admission produced no position or runs stop command. GREEN: admission quiet/verbose/debug table passes through replyOutcome.
Focused regression suites npx vitest run src/core/resumeLaunch.test.ts src/core/dispatch/admission.test.ts src/core/dispatch/ship.test.ts — 106 passed.
Type safety NODE_OPTIONS=--max-old-space-size=6144 npx tsc --noEmit -p tsconfig.json — passed with no output.
Formatting and repository contracts Changed-file npx prettier --check, npm run hygiene:check, and npm run specs:check — all passed.
Pull-request title npm run check:pr-title -- "fix(dispatcher): keep quiet output focused" — passed.
Continuous integration At submission: typecheck, format, lint, consistency, docs, workers, web, title, and 3/4 bot test shards passed; remaining jobs were still running.
For agents

Exact pushed head: 9816034. Existing branch was amended into one coherent commit and rebased onto origin/main (438f898). Red run: 5 failures across resume, queue, and production recording assertions before implementation. Repro: npx vitest run src/core/resumeLaunch.test.ts src/core/dispatch/admission.test.ts src/core/dispatch/ship.test.ts.
Requested by @justinhelmer in slack:C0BRRHKFLCB

🤖 Generated with Claude Code

@coreplane-switchboard coreplane-switchboard Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Changes requested: The quiet-path changes miss the restart rehost path, regressing verbose/debug Slack shimmer behavior after a process restart.

Warning

Changes requested · head 3838241 · 1 finding: 1 minor

Severity Finding Where
minor F1 Rehosted cards silently fall back to quiet verbosity src/core/resumeLaunch.ts:259
Full review

F1: SlackIO.status now treats an omitted display level as quiet, but the restart rehost path still calls io.status(...) without the resolved verbosity. After a process restart, a hosted pipeline configured for verbose or debug therefore clears and suppresses its Slack shimmer, contradicting the requirement to preserve higher-verbosity behavior. Resolve the current verbosity for the rehosted request and pass it through, with restart-path coverage for quiet and verbose/debug.

@coreplane-switchboard coreplane-switchboard Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Changes requested: Request-level verbosity is still lost on production rehost, and quiet now hides the only queued outcome.

Warning

Changes requested · head 65140a3 · 2 findings: 2 minor

Severity Finding Where
minor F1 Rehost reads verbosity from an event that has already stripped directives src/core/resumeLaunch.ts:263
minor F2 Spec contradiction — docs/reference/specs/routing-and-config.md item 28: quiet drops the only queued outcome src/core/dispatch/admission.ts:415
Full review

F1 (minor, high confidence): Production records the first input from directives.text, after verbosity:* has been stripped. Parsing that event during rehost therefore cannot recover a request-level override. Under quiet configuration, a verbosity:debug ship request still rehosts as quiet. The regression test fabricates an input shape production never writes. Persist the resolved verbosity durably or recover it from the original durable request, and test through the production recording path.

F2 (minor, high confidence): A queued request creates no run card, and routing its position and withdrawal command through replyAck leaves quiet users with no visible outcome at all. That queue result is a necessary intermediate result with an actionable stop lever, which item 28 promises at quiet. Keep the queue outcome visible while suppressing only routine lifecycle narration.

Co-Authored-By: coreplane-switchboard[bot] <318072483+coreplane-switchboard[bot]@users.noreply.github.com>
@coreplane-switchboard
coreplane-switchboard Bot force-pushed the plan/fix-coreplanelabs-switch-42ece0/u1 branch from 65140a3 to 9816034 Compare September 23, 2026 21:44
@justinhelmer

Copy link
Copy Markdown
Contributor

Re-review requested at 9816034 — F1 now persists resolved ship-request verbosity on the hosted ledger and rehost prefers it, with production-recording quiet/verbose/debug restart regressions; F2 restores the queue position and withdrawal command at every verbosity because queued asks have no run card. Tests, specs, and PR body are refreshed.

@coreplane-switchboard coreplane-switchboard Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

LGTM: Both prior findings are resolved with durable production-path coverage and aligned specifications.

Note

Approved · head 9816034 · no findings

Full review

Both prior findings are resolved. The remaining test-guard checks are verification-preserving renames: connected-hook now explicitly selects verbose, and compactActivity retains the original assertions.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Auto-approved: coreplane-switchboard[bot] reviewed this PR and posted an LGTM verdict (see its review). This repository opted in through its REVIEW_BOT_LOGIN and REVIEW_BOT_ID variables.

@justinhelmer
justinhelmer merged commit f9cba54 into main Sep 23, 2026
30 checks passed
@justinhelmer
justinhelmer deleted the plan/fix-coreplanelabs-switch-42ece0/u1 branch September 23, 2026 21:51
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