docs(release): v0.105.0 change list, test checklist, and UI QA sweep log - #3427
Merged
Conversation
Two release-prep artifacts for v0.105.0. **docs/superpowers/plans/2026-08-11-v0105-release-change-and-test-list.md** — all 103 commits in v0.104.0..main, bucketed (37 UI-affecting, 14 agent, 11 API, 11 release/CI infra, 17 dependency bumps collapsed, 9 docs-only), plus the self-hoster section the GitHub Release body needs: 10 new or changed env vars, 12 new migrations with the two destructive ones called out, and the breaking response-shape changes. Ends with 52 concrete "go to X, do Y, expect Z" test steps grouped by app area, with the ones that need real Windows/macOS hardware or a live Graph tenant marked NOT BROWSER-TESTABLE and why. **docs/testing/FEATURE_TEST_LOG.md** — the sweep that ran against that checklist. Records the full nav crawl (~40 routes, no whole-page failures) and deep passes on the highest-risk areas: CIS Hardening dual-ownership, Compliance and Audit baseline org-scoping, PSA connection dual-ownership, the webhook self-hosted gate, and Config Policies. Every dual-ownership and org-scoping fix in the range passed under real two-org testing. Attempt 1 is logged as blocked rather than deleted, because the cause is worth keeping: the worktree had node_modules from a branch pinning astro 7.1.6 while main requires ^7.2.0, so @astrojs/react could not register a renderer and every browser navigation 500'd at SSR — while curl kept returning clean 200s, which is what made it look like a product bug. Findings that came out of the sweep: #3425, #3426, and PR #3424. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Deploying breeze with
|
| Latest commit: |
60538dd
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://b121a828.breeze-9te.pages.dev |
| Branch Preview URL: | https://docs-v0105-release-qa.breeze-9te.pages.dev |
…pt 2 Covers the release surface the first pass didn't reach: what's-new splash, Partner Settings (Company + Remote Access provider validation), Org Settings Remote Access, the full Quick Support flow, both quote/invoice fixes, AI Assistant tool-count and live spend, the remaining Settings sub-pages, and a pt-BR localization spot-check. Confirmed PASS on five of the range's fixes: fce4f05 (duplicate provider id and dangling-default rejection), 9344a2b (Quick Support digit codes, reopen, IPv6 rate limiting), 48b819a (quote unit-price clipping), 81ce580 (quote line name carried onto the converted invoice), ff147bd (AI tool executions in the usage rollup with live spend refresh, cross-checked on two surfaces). Not reached, with prerequisites recorded: the network-device proxy popover (no discovered-device fixture), a live read-only-user login, and the short-link enrollment-key child slot counter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two release-prep artifacts for v0.105.0. Docs only — no runtime code.
1. Change list + manual test checklist
docs/superpowers/plans/2026-08-11-v0105-release-change-and-test-list.mdAll 103 commits in
v0.104.0..main, bucketed:Plus the section the GitHub Release body needs: 10 new or changed env vars, 12 new migrations (with the two destructive ones — dropping
patch_policies.sourcesand theorganizations.accounting_*columns — called out as contract, not accident), and the breaking response-shape changes.Ends with 52 concrete "go to X → do Y → expect Z" steps grouped by app area, derived from the diffs rather than the commit subjects. Items needing real Windows/macOS hardware or a live Graph tenant are marked NOT BROWSER-TESTABLE with the reason, so nobody records a false pass.
Headline call-out:
e18108457(#3299), the blocking-Redis-consumer fix, is the most operationally important change in the range and has no page to click — it needs to be verified as general responsiveness, not as a screen.2. UI QA sweep log
docs/testing/FEATURE_TEST_LOG.mdThe sweep that ran against that checklist. Full nav crawl (~40 routes, no whole-page failures) plus deep passes on the highest-risk areas: CIS Hardening dual-ownership, Compliance and Audit baseline org-scoping, PSA connection dual-ownership, the webhook self-hosted gate, Config Policies.
Every dual-ownership and org-scoping fix in the range passed under real two-org testing — a second organization was created through the UI specifically to exercise the partner-vs-org distinction, since a single-org seed cannot.
Attempt 1 is logged as blocked rather than deleted, because the cause is worth keeping: the worktree carried
node_modulesfrom a branch pinning astro7.1.6whilemainrequires^7.2.0, so@astrojs/reactcould not register a renderer for.tsxand every browser navigation 500'd at SSR — whilecurlkept returning clean 200s. That asymmetry is what made an environment fault look like a product bug, and it cost a full sweep attempt.Findings this produced
0of0policies(fixed).orgIdfrom the body while the web client sends it as a query param.🤖 Generated with Claude Code