|
| 1 | +# Selected-Surface Acceptance Matrix |
| 2 | + |
| 3 | +This document is the live-API release gate for the provider's selected public |
| 4 | +surface. Unit tests remain the fast default. Acceptance tests run only through |
| 5 | +explicit local opt-in or the manual GitHub Actions workflow. |
| 6 | + |
| 7 | +The selected surface contains two managed resources and four read-only data |
| 8 | +sources. It does not claim coverage for future or unregistered Kernel objects. |
| 9 | + |
| 10 | +## Gate Rules |
| 11 | + |
| 12 | +- Set both `TF_ACC=1` and `KERNEL_ACC=1`. |
| 13 | +- Use unique `kernel-tf-*` names for every created fixture. |
| 14 | +- Register cleanup as soon as a canonical ID exists. |
| 15 | +- Verify deletion through a follow-up API read. |
| 16 | +- Keep browser-pool deletion non-forceful. |
| 17 | +- Never acquire, release, flush, invoke, or recover runtime state. |
| 18 | +- Keep live tests out of pull-request CI. |
| 19 | +- Run the complete matrix against the release commit before tagging. |
| 20 | + |
| 21 | +## Environment |
| 22 | + |
| 23 | +```sh |
| 24 | +export TF_ACC=1 |
| 25 | +export KERNEL_ACC=1 |
| 26 | +export KERNEL_API_KEY=... |
| 27 | +export KERNEL_PROJECT_ID=... |
| 28 | +export KERNEL_ALT_PROJECT_ID=... # optional second project |
| 29 | +export KERNEL_BASE_URL=... # optional non-production API |
| 30 | +``` |
| 31 | + |
| 32 | +`KERNEL_PROJECT_ID` is required for the browser-pool resource and all four data |
| 33 | +sources. The project resource is organization-scoped and does not require it. |
| 34 | + |
| 35 | +## Matrix |
| 36 | + |
| 37 | +| Surface | Package | Live scenario | |
| 38 | +| --- | --- | --- | |
| 39 | +| `kernel_project` resource | `./internal/resources/project` | Create, rename with stable ID, no-drift plan, canonical-ID import, post-import no drift, delete, and HTTP 404 verification. | |
| 40 | +| `kernel_browser_pool` resource | `./internal/resources/browserpool` | Create, durable update with stable ID, no-drift plan, provider-default and explicit project scope, bare and project-qualified import, non-force delete, and HTTP 404 verification. | |
| 41 | +| `kernel_project` data source | `./internal/datasources/project` | Create a unique project fixture, read it by ID and exact name, read the provider-default project, verify durable metadata and no drift, then delete and require coded `not_found`. | |
| 42 | +| `kernel_profile` data source | `./internal/datasources/profile` | Create a durable profile fixture through the SDK, read it by ID and exact name with explicit and default project scope, verify durable metadata and no drift, then delete and require coded `not_found`. | |
| 43 | +| `kernel_proxy` data source | `./internal/datasources/proxy` | Create a managed datacenter proxy fixture through the SDK, read it by ID and exact name with explicit and default project scope, verify durable masked metadata and no drift, then delete and require coded `not_found`. | |
| 44 | +| `kernel_extension` data source | `./internal/datasources/extension` | Upload a durable extension fixture through the SDK, read it by ID and exact name with explicit and default project scope, verify durable metadata excludes runtime usage, verify no drift, then delete and require coded `not_found`. | |
| 45 | + |
| 46 | +The tests exist in the repository. That does not prove they passed against a |
| 47 | +particular release commit; the release record supplies that evidence. |
| 48 | + |
| 49 | +## Commands |
| 50 | + |
| 51 | +Run packages independently for fast failure isolation: |
| 52 | + |
| 53 | +```sh |
| 54 | +go test -count=1 -timeout=30m -v ./internal/resources/project -run TestAcc |
| 55 | +go test -count=1 -timeout=30m -v ./internal/resources/browserpool -run TestAcc |
| 56 | +go test -count=1 -timeout=30m -v ./internal/datasources/project -run TestAcc |
| 57 | +go test -count=1 -timeout=30m -v ./internal/datasources/profile -run TestAcc |
| 58 | +go test -count=1 -timeout=30m -v ./internal/datasources/proxy -run TestAcc |
| 59 | +go test -count=1 -timeout=30m -v ./internal/datasources/extension -run TestAcc |
| 60 | +``` |
| 61 | + |
| 62 | +The manual `Acceptance` workflow runs the same six packages as separate matrix |
| 63 | +jobs with `fail-fast: false`. Live acceptance remains a manual pre-tag gate. |
| 64 | + |
| 65 | +## Outside The Selected Surface |
| 66 | + |
| 67 | +The release does not include a browser-pool data source or profile, proxy, |
| 68 | +extension, deployment, app, or API-key resources. Runtime/session operations |
| 69 | +remain outside Terraform. Unregistered surfaces are not acceptance blockers for |
| 70 | +this selected release. |
| 71 | + |
| 72 | +## Release Record |
| 73 | + |
| 74 | +Record the following in the release PR or release issue: |
| 75 | + |
| 76 | +```text |
| 77 | +Commit: |
| 78 | +Workflow run URL: |
| 79 | +API environment: |
| 80 | +Started at: |
| 81 | +Completed at: |
| 82 | +Package results: |
| 83 | +Interrupted or timed-out jobs: |
| 84 | +Leaked-resource audit completed: |
| 85 | +``` |
| 86 | + |
| 87 | +Do not record credentials or secret values. A process-level timeout can bypass |
| 88 | +`t.Cleanup`; follow the cleanup procedure in |
| 89 | +[Release And Security Checklist](release.md) before rerunning or tagging. |
0 commit comments