feat(serenity): expose semrush provisioning status on brand reads (LLMO-7352/LLMO-7418) - #3250
Open
IrisAlexandrescu wants to merge 1 commit into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 9, 2026 14:47
a048d64 to
c7c0239
Compare
Contributor
Author
|
Rebased onto Phase 4's (#3249) fix commit — no changes needed in this PR itself, the fixed |
|
This PR will trigger a minor release when merged. |
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
from
September 9, 2026 16:20
4d3123e to
a964882
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 9, 2026 16:36
c7c0239 to
2be9230
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
2 times, most recently
from
September 9, 2026 17:29
135eec6 to
e888c2a
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 9, 2026 17:33
2be9230 to
581d363
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 9, 2026 18:00 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
from
September 9, 2026 18:42
e888c2a to
f822111
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 9, 2026 18:47
581d363 to
feb52c7
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 9, 2026 19:03 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
from
September 10, 2026 08:17
f822111 to
a587be3
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 08:21
feb52c7 to
60e70ad
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 10, 2026 08:35 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 08:46
60e70ad to
24911fc
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 10, 2026 08:58 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 09:10
24911fc to
d8befb8
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 10, 2026 09:23 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
from
September 10, 2026 10:23
b0a89f6 to
90986fd
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 10:23
d8befb8 to
d4706fd
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 10, 2026 10:32 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
from
September 10, 2026 11:17
90986fd to
f77926a
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 11:17
d4706fd to
fdc0a01
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 10, 2026 11:31 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 16:08
fdc0a01 to
8473538
Compare
IrisAlexandrescu
temporarily deployed
to
dev-branches
September 10, 2026 16:21 — with
GitHub Actions
Inactive
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-phase4-skip-mode-async
branch
from
September 10, 2026 17:54
af1cbe8 to
fe80d7d
Compare
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 17:54
8473538 to
3925628
Compare
…MO-7352/LLMO-7418) Surfaces brands.semrush_provisioning_status/semrush_provisioning_error as read-only fields (semrushProvisioningStatus/semrushProvisioningError) on the V2 Brand DTO. These columns previously existed only for the async provisioning worker's own internal CAS bookkeeping (getBrandProvisioningState's narrow PROVISIONING_SELECT) -- no GET response exposed them, so a client had no way to show a persistent provisioning-status indicator without relying on an `async: true` create/activate response's one-shot jobId. mapDbBrandToV2 is the single mapping point for all 3 GET paths (listBrandsForOrg/getBrandForOrg/getBrandForOrgSite) and the create/update write-response paths (all route through withSerenityState, which just spreads whatever the mapper produced) -- fixing it there propagates everywhere for free, no SELECT/query changes needed since PostgREST's `'*'` already returns every brands column. Prerequisite for the frontend UI-states work (LLMO-7419): a persistent Setting-up/Ready/Setup-failed indicator on the brand list/detail views can't exist without a backend field to read it from. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
IrisAlexandrescu
force-pushed
the
feat/LLMO-7418-expose-provisioning-status
branch
from
September 10, 2026 18:35
3925628 to
7fc9a1f
Compare
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.
Summary
Fifth PR in the LLMO-7352/LLMO-7418 stack (after #3223, #3233, #3246, #3249). Small, focused prerequisite for the frontend UI-states work (LLMO-7419): surfaces
brands.semrush_provisioning_status/semrush_provisioning_erroras read-onlysemrushProvisioningStatus/semrushProvisioningErrorfields on the V2 Brand DTO.Why this PR exists: these two columns previously existed only for the async provisioning worker's own internal CAS bookkeeping (
getBrandProvisioningState's narrowPROVISIONING_SELECT) — noGETresponse exposed them. The frontend has no way to show a persistent "Setting up / Ready / Setup failed" indicator on the brand list or detail view without this — it would otherwise have to rely on the one-shotjobIdanasync: truecreate/activate response carries, which is useless on any later page load.Changes
mapDbBrandToV2(src/support/brands-storage.js) — the single mapping point for all 3 GET paths (listBrandsForOrg/getBrandForOrg/getBrandForOrgSite) and the create/update write-response paths (all route throughwithSerenityState, which just spreads whatever the mapper produced) — now copies the two columns onto the DTO. NoSELECT/query changes needed: PostgREST's'*'already returns everybrandscolumn.docs/openapi/schemas.yaml'sV2Brandschema — both fields added asreadOnly, nullable, not inrequired.Test plan
npm run lint,npm run type-check,npm run docs:lint— all cleanbrands-storage.test.jsasserting the mapping (both thefailed-with-error case and the null/never-provisioned case)🤖 Generated with Claude Code