diff --git a/docs/architecture.md b/docs/architecture.md index 6f629ba..3ccd903 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -73,6 +73,17 @@ Late or conditional v1 work: Blocked candidates must remain unimplemented until the API and a tagged SDK expose the required durable contract. Provider code must not guess missing semantics, patch generated SDK code, or add a fallback HTTP client to bypass the durable client module. +`kernel_deployment` remains core v1 scope but is currently blocked until a +tagged SDK exposes source provenance, the API supports deterministic durable +readback, and the write-only environment/token plus metadata-only import design +is accepted. Its current status may be exposed only as computed inspection +metadata: it cannot be configured, drive a diff, or be populated from an event +stream. The `kernel_deployment` data source is limited to fields returned by a +durable deployment GET; app name, version, and actions remain the responsibility +of the exact-lookup `kernel_app` data source until deployment reads expose them +directly. The resource omits `force` until the API implements and tests the +documented overwrite behavior. `kernel_app` remains lookup-only. + Terraform schema and model code generation remains deferred. The current tool produced valid output but did not reduce code or review complexity, and broad OpenAPI-driven generation would further weaken the durable allowlist. The evaluation evidence and reconsideration criteria are defined in [Terraform Framework Code Generation Decision](codegen.md). @@ -285,7 +296,13 @@ Data sources must not create, mutate, acquire, release, invoke, or recover Kerne Every resource should import by canonical ID where the API can reconstruct durable state. Project-scoped resources may also accept a documented project-qualified form when needed to resolve a non-default project. -Read after import must flatten durable API state into Terraform state without introducing runtime fields. If the API cannot return create-only configuration or sensitive values, the resource must document metadata-only import or remain deferred. The provider returns a clear diagnostic instead of guessing. +Read after import must flatten durable API state into Terraform state without +introducing unmanaged runtime fields. Explicitly approved computed inspection +metadata, such as deployment status, may be populated from a durable GET when +it cannot be configured or drive diffs; event and log streams are never import +read paths. If the API cannot return create-only configuration or sensitive +values, the resource must document metadata-only import or remain deferred. The +provider returns a clear diagnostic instead of guessing. ## Testing Strategy diff --git a/docs/release.md b/docs/release.md index 276aff3..b86ce06 100644 --- a/docs/release.md +++ b/docs/release.md @@ -64,11 +64,15 @@ Do not replace or mutate assets for a published version. If an asset, checksum, - Provider `api_key` remains sensitive. - `internal/kernelclient` exposes durable methods only; no acquire, release, flush, force-release, screenshots, logs, live view, or app invocation. -- Every resource state contains durable desired configuration only. +- Every resource state contains durable desired configuration plus only + explicitly approved, computed inspection metadata that cannot be configured + or drive diffs; no resource state is populated from event or log streams. - Every data source is lookup-only and side-effect free. - Project lifecycle uses organization-scoped endpoints and documents the permissions required for create, archive, and delete; if project limits are included later, their permissions receive a separate review. - If API key management is included, reads expose masked metadata only; plaintext-once values are sensitive, import cannot recover plaintext, and rotation/self-use semantics have explicit safety review. -- Proxy credentials, deployment environment variables, source tokens, and other secret inputs are sensitive and preserve configured state when API reads return masked values. +- Proxy credentials, deployment environment variables, source tokens, and + other secret inputs are sensitive write-only values that never enter state; + only explicit replacement keepers and readable masked metadata persist. - Browser pool read state does not include runtime counters, standby state, leased-browser state, runtime URLs, screenshots, logs, or live-view fields. - Delete uses `force=false`; Terraform must not terminate leased browsers as cleanup. - Each resource imports by canonical ID where the API can reconstruct durable state; metadata-only or unsupported imports are documented rather than guessed.