Flatten resolved browser pool references - #73
Merged
Conversation
IlyaasK
force-pushed
the
hypeship/extension-example
branch
from
July 13, 2026 13:35
7bf41e8 to
12a1136
Compare
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
2 times, most recently
from
July 13, 2026 14:32
546feff to
c8beaf5
Compare
IlyaasK
force-pushed
the
hypeship/extension-example
branch
from
July 13, 2026 14:32
12a1136 to
bf17fc0
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c8beaf5. Configure here.
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
from
July 13, 2026 15:39
c8beaf5 to
8a17e4c
Compare
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
from
July 20, 2026 19:38
8a17e4c to
8791796
Compare
IlyaasK
force-pushed
the
hypeship/extension-example
branch
from
July 20, 2026 19:38
11a1872 to
210546c
Compare
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
from
July 21, 2026 14:46
8791796 to
21051bf
Compare
IlyaasK
force-pushed
the
hypeship/extension-example
branch
from
July 21, 2026 14:46
210546c to
1207b12
Compare
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
from
July 21, 2026 18:10
21051bf to
c1cb593
Compare
IlyaasK
force-pushed
the
hypeship/extension-example
branch
from
July 21, 2026 19:51
a7a7a38 to
df9604e
Compare
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
2 times, most recently
from
July 21, 2026 20:15
0418ff5 to
e569d69
Compare
Prefer the API's authoritative resolved profile ID and ordered extension IDs over echoed selectors, validate their raw response shape before writing Terraform state, and retain only an ID-based compatibility path for older responses. This prevents name selectors from becoming non-canonical durable state.
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
from
July 27, 2026 18:13
dbade85 to
3fa1515
Compare
When Kernel resolves a pool's extension IDs to an empty list, retain Terraform's prior distinction between an omitted attribute and an explicitly empty list. Validate the authoritative response first so malformed data still fails visibly, and cover both convergence paths.
IlyaasK
force-pushed
the
hypeship/browser-pool-resolved-refs
branch
from
July 27, 2026 18:17
3fa1515 to
c7c576d
Compare
Sayan-
approved these changes
Jul 28, 2026
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
profile_idfrom the authoritative resolved API fieldextension_idsfrom the authoritative resolved API fieldWhy
Terraform state must contain stable durable identities. Browser-pool configuration
echoes can contain names, while Kernel now returns canonical resolved profile and
extension IDs separately. Reading those resolved fields prevents selector names
from entering state and producing drift.
Scope
This changes only
kernel_browser_poolresponse flattening and focused unit tests.It does not add a browser-pool data source or change schema, mutations, deletion,
import, or runtime behavior.
Terraform state semantics
profile_idstores the canonical resolved profile ID when presentextension_idsstores canonical resolved extension IDs in API orderTests run
gofmt -l cmd internalgo test -short -timeout=2m ./internal/resources/browserpoolgo test -race -short -timeout=2m ./internal/resources/browserpoolgo test -short -timeout=2m ./...go vet ./...terraform fmt -check -recursive examplesbash scripts/check-docs.shgit diff --check origin/main...HEADAcceptance status
Live acceptance was not run because credentials are unavailable. Browser-pool
acceptance against the final release commit remains a release gate.
Intentionally unsupported
Note
Medium Risk
Changes only read-path flattening for
kernel_browser_poolstate, but wrong ID sourcing would cause refresh drift or failed applies; scope is limited to flatten logic and unit tests.Overview
Browser pool refresh now writes
profile_idandextension_idsfrom the API’s top-level resolved fields (profile_id,extension_ids) instead of config selector echoes that may only carry names. That keeps Terraform state on stable IDs and avoids drift when echoes differ from resolved references.When those resolved fields are absent, flattening still uses legacy
browser_pool_config.profile/extensionsID echoes. Malformed or explicit-null resolved values surface refresh errors rather than silently falling back. An authoritative emptyextension_idslist still honors prior null vs explicit-emptyextension_idsintent in state.Tests were updated and expanded for resolved-vs-legacy behavior and invalid resolved reference handling.
Reviewed by Cursor Bugbot for commit c7c576d. Bugbot is set up for automated code reviews on this repo. Configure here.