| // Copyright IBM Corp. 2014, 2026 | |
| // SPDX-License-Identifier: BUSL-1.1 | |
| // Package statekeys contains the definitions for the various different kinds | |
| // of tracking key we use (or have historically used) for objects in a stack | |
| // state. | |
| // | |
| // Stack state is a mutable data structure whose storage strategy is delegated | |
| // to whatever is calling into Terraform Core. To allow Terraform Core to | |
| // emit updates to that data structure piecemeal, rather than having to return | |
| // the whole dataset over and over, we use tracking keys for each | |
| // separately-updatable element of the state that are opaque to the caller but | |
| // meaningful to Terraform Core. | |
| // | |
| // Callers are expected to use simple character-for-character string matching | |
| // to compare these to recognize whether an update is describing an entirely | |
| // new object or a replacement for ane existing object, and so the main | |
| // requirement is that the content of these keys remains consistent across | |
| // Terraform Core releases. However, from Terraform Core's perspective we | |
| // also use these keys to carry some metadata about what is being tracked | |
| // so we can avoid redundantly storing the same information in both the key | |
| // and in the associated stored object. | |
| // | |
| // The keys defined in this package are in principle valid for use both as | |
| // raw state keys and as external description keys, but some of them are used | |
| // only for one or the other since the raw and external description forms | |
| // don't necessarily have the same level of detail. | |
| package statekeys |