fix(onboarding): clarify Slack and keep AWS setup non-blocking - #110
Conversation
618fb2d to
29438ee
Compare
|
Re-review requested at 29438ee — restored the ownership boundary: the installer owns the pre-consent rationale, while the CLI note now covers public selection and the private-channel invite action. Commit history is clean and validation was rerun. |
There was a problem hiding this comment.
LGTM: The multi-account AWS orchestration and Slack guidance are sound, with one non-blocking messaging nit.
Note
Approved · head 29438ee · 1 finding: 1 nit
| Severity | Finding | Where |
|---|---|---|
| nit | F1 Already-connected AWS can end with “Nothing connected” | src/commands/cloud/connect.ts:1112 |
Full review
F1 (nit, high confidence): When the interactive picker finds the chosen AWS account already connected, this branch reopens the picker without recording any activity. If the user then exits, hasSubmitted() is false and the command prints Nothing connected. immediately after reporting AWS as connected. Track the handled result or return successfully from this path to avoid the contradictory message.
|
Review finding F1 (nit) skipped under the default minor severity gate: an already-connected AWS path can still end with the generic ‘Nothing connected’ summary. No minor-or-higher finding opened the round, so the approved head remains unchanged. |
|
Pre-merge E2E receipt at 29438ee: a clean-environment production bundle (519,319 bytes; SHA-256 9dc51c6cc943a4a00562996045e31122e8cd8cd1055b919c93d74d3521d91a1a) ran under a real PTY against a contract fake. Slack captured the browser URL, completed connection polling, rendered the public/private guidance, joined #alerts with the expected request, and exited 0. AWS submitted accounts 111111111111 and 222222222222, returned to the picker after each handoff, rendered both pending, stopped both pollers on Done, printed account-specific recovery commands, and exited 7. Full suite: 530/530. Live Slack callbacks/channel membership and real CloudFormation remain human-gated. |
|
Production receipt — CLI
Live Slack OAuth/channel membership and real AWS CloudFormation remain deliberately unexercised; their branch-built PTY contract tests passed before release. |
|
Post-release onboarding-lab receipt — UAT
Scope caveat: nominal |
AWS onboarding now accepts multiple accounts without making the operator wait for CloudFormation, while Slack onboarding explains its value and the public/private channel boundary at the relevant CLI surfaces. This removes the four high-priority friction points observed in Pocket’s onboarding demo.
Why: The demo exposed two trust gaps: Slack gave too little context about its channel behavior, while AWS setup blocked further accounts and could misattribute concurrent completions. Onboarding should preserve momentum without hiding what each connection does.
Where to look
Feedback wanted: Check the AWS Done/exit semantics and whether the Slack channel guidance is concise without losing the private-channel action.
Risk: 599 changed lines, mostly concurrency tests. A mistake could duplicate AWS setup or leave pollers alive; rollback both commits. Separate Slack/AWS PRs were considered, but one onboarding PR keeps the four demo findings reviewable together.
Verified: Clean-env build/version smoke, 530 tests, typecheck/lint, and black-box PTY Slack plus two-account AWS flows passed. Live provider callbacks and CloudFormation remain human-gated.
Decisions (4)
--provider awsretains its 15-minute wait and timeout exit1; only the interactive picker backgrounds work and returns pending exit7on Done.Validation (9 criteria)
test/cloud-connect-aws-background.test.ts::tracks concurrent accounts and reports out-of-order completion exactly oncetest/cloud-connect-aws-background.test.ts::rejects a duplicate submission only while that exact account is pendingtest/cloud-connect-aws-background.test.ts::refreshes after a same-account wait completes at the pre-submit boundarytest/cloud-connect-aws-background.test.ts::does not re-enter the picker for JSON or dry-run AWS resultstest/integration-connect-slack-channels.test.tspassed#alertswith the expected body, and exited0111111111111and222222222222, rendered both pending, printed account-specific recovery, and exited7npm testpassed: 530 tests;npm run typecheck;npm run lint;npm run buildFor agents
The two commits are intentionally reviewable by concern: Slack copy first, AWS orchestration second. Generated client files were regenerated for validation but are not part of the diff.