Test the extension lifecycle against Kernel - #71
Open
IlyaasK wants to merge 1 commit into
Open
Conversation
IlyaasK
requested review from
Sayan- and
tnsardesai
and removed request for
Sayan- and
tnsardesai
July 11, 2026 08:51
IlyaasK
force-pushed
the
hypeship/extension-plan-archive
branch
from
July 13, 2026 13:34
e8209f1 to
77e6c31
Compare
IlyaasK
force-pushed
the
hypeship/extension-acceptance
branch
from
July 13, 2026 13:34
6c048e0 to
4764988
Compare
IlyaasK
force-pushed
the
hypeship/extension-plan-archive
branch
from
July 13, 2026 14:32
77e6c31 to
89a023f
Compare
IlyaasK
force-pushed
the
hypeship/extension-acceptance
branch
2 times, most recently
from
July 13, 2026 15:39
6d28e8a to
d50f6f7
Compare
IlyaasK
force-pushed
the
hypeship/extension-plan-archive
branch
from
July 20, 2026 19:38
1a00529 to
c831c66
Compare
IlyaasK
force-pushed
the
hypeship/extension-acceptance
branch
from
July 20, 2026 19:38
d50f6f7 to
979a552
Compare
IlyaasK
force-pushed
the
hypeship/extension-plan-archive
branch
from
July 21, 2026 14:46
c831c66 to
ba94d10
Compare
IlyaasK
force-pushed
the
hypeship/extension-acceptance
branch
from
July 21, 2026 14:46
979a552 to
24bb022
Compare
IlyaasK
force-pushed
the
hypeship/extension-plan-archive
branch
from
July 21, 2026 18:10
ba94d10 to
af6f0c1
Compare
IlyaasK
force-pushed
the
hypeship/extension-acceptance
branch
2 times, most recently
from
July 21, 2026 19:51
54324d8 to
d4303ee
Compare
Add an opt-in Terraform acceptance test that uploads a valid extension archive, verifies stable plans and import, replaces content by checksum, confirms the old object is deleted, and checks final cleanup. Extend the manual acceptance matrix and release guidance so the durable extension resource has an explicit real-API release gate.
IlyaasK
force-pushed
the
hypeship/extension-acceptance
branch
from
July 21, 2026 20:15
d4303ee to
88438e4
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
kernel_extensionTerraform acceptance lifecycle testWhy this is v1 work
A production-ready durable resource needs proof against the real Kernel API, not only fake-client unit tests. This PR adds that proof without running network tests in normal PR CI and without expanding Terraform into browser/session runtime operations.
Resource scope
Only
kernel_extensionacceptance coverage and shared acceptance cleanup are added. Provider schema and lifecycle behavior are unchanged.API contract notes
404within a bounded 30-second checkTerraform state semantics
source_pathremains write-only and is never asserted from statesource_sha256, canonicalid, durablename, and resolvedproject_idare verifiedSensitive fields
No secret is added to Terraform configuration or state. The workflow reads the existing
KERNEL_API_KEYrepository secret only at execution time.Import behavior
The acceptance test exercises bare canonical extension ID import under the provider project default. Project-qualified import remains covered by focused unit tests.
Tests run
gofmt -l cmd internalgo test -short -timeout=2m ./...go test -count=20 ./internal/acctest ./internal/resources/extensiongo test -race -timeout=5m ./internal/acctest ./internal/resources/extensiongo vet ./...go mod verifygo mod tidy -diffterraform fmt -check -recursive examplesbash scripts/check-docs.shbash scripts/check-examples.shbash scripts/check-markdown-links.shgit diff --checkAcceptance status
The test compiles and remains disabled by default. It was not run against the live API locally because
KERNEL_API_KEYandKERNEL_PROJECT_IDwere unavailable. Before a v1 tag, run the manual Acceptance workflow or:TF_ACC=1 KERNEL_ACC=1 KERNEL_API_KEY=... KERNEL_PROJECT_ID=... go test -count=1 -timeout=30m -v ./internal/resources/extension -run TestAccDeferred concerns
GitHub issues
This PR does not resolve an issue.
#24force destroy and#25code generation remain explicitly deferred/rejected by the v1 architecture.Note
Low Risk
Test and documentation only; no production provider or API client behavior changes.
Overview
Adds live API acceptance coverage for
kernel_extensionwithout changing provider schema or lifecycle behavior.A new
TestAccExtensionLifecyclebuilds temporary Manifest V3 ZIPs and exercises create/read, stable plan, import, checksum-driven replacement (new canonical ID, old object 404 within 30s), and destroy. SharedCleanupExtensionregisters deletes for every extension ID seen in state, with unit tests mirroring browser pool cleanup.The manual Acceptance workflow matrix gains the extension package (project-scoped secrets). README and release docs document
kernel_extensionas a supported resource, import forms, the extensiongo testcommand, and leaked-resource cleanup for extensions.Reviewed by Cursor Bugbot for commit 88438e4. Bugbot is set up for automated code reviews on this repo. Configure here.