pkg/errorutil/errortest/api_error_coverage_registry.go is the reviewed
contract for OCI API-error coverage inventory. It turns
internal/generator/config/services.yaml into the authoritative source for
which resources need a reviewed registration and which resources need an
explicit exemption.
selection.includeKinds plus
packageSplits.includeKinds.selection.mode: explicit for
this contract. If a future rollout needs selection.mode: all, extend the
inventory contract first instead of silently widening scope.controller.strategy: none or
serviceManager.strategy: none become explicit reviewed exceptions. They do
not disappear implicitly just because the parent service is active.Each reviewed registration records:
Each reviewed exception records:
| Family | Use For | Current Examples |
|---|---|---|
generatedruntime-plain |
shared generatedruntime CRUD with no special follow-up helper ownership | aidocument/Project, ailanguage/Project, aivision/Project, bds/BdsInstance, database/AutonomousDatabase, databasetools/DatabaseToolsConnection, datascience/Project, core/Instance, mysql/DbSystem, objectstorage/Bucket |
generatedruntime-follow-up |
generatedruntime paths whose error handling depends on follow-up helpers such as WaitForUpdatedState or WaitForWorkRequestWithErrorHandling |
containerengine/Cluster, opensearch/OpensearchCluster, streaming/Stream |
generatedruntime-workrequest |
work-request-aware flows that keep explicit work-request tracking as the reviewed contract, even when the polling adapter is handwritten | queue/Queue, redis/RedisCluster |
manual-runtime |
direct handwritten runtimes whose primary OCI error handling stays in package-local create/update logic; per-resource delete/conflict semantics may still point at generatedruntime when delete is delegated there | core/Vcn, core/InternetGateway, core/Subnet, core/SecurityList, other active core-network runtimes |
legacy-adapter |
helper and adapter paths that still own bespoke not-found, delete-guard, orphan-delete, pending-deletion, or create-fallback behavior | containerinstances/ContainerInstance, functions/Application, functions/Function, keymanagement/Vault, nosql/Table, psql/DbSystem, identity/Compartment |
For the split-core parity clients, family and delete semantics are intentionally
separate reviewed fields. core/Vcn, core/InternetGateway,
core/NatGateway, core/NetworkSecurityGroup, and core/ServiceGateway stay
in the manual-runtime family because create/update ownership is handwritten,
but their registry entries record generatedruntime delete semantics because
Delete delegates to serviceclients with DeleteFollowUp.Strategy =
"confirm-delete".
Legacy-adapter registrations are also intentionally explicit about the helper behavior that falls outside the base matrix:
404 responses broadly,
including NamespaceNotFound and auth-shaped NotAuthorizedOrNotFound, as
not-found during tracked rereads and delete confirmation.identity/Compartment keeps orphan-delete success separate from plain delete
semantics by rereading lifecycle state before deciding whether a 409
conflict means retry or success.nosql/Table and psql/DbSystem keep adapter-level confirm-delete rereads
explicit instead of pretending generatedruntime owns those delete semantics.redis/RedisCluster now belongs to the work-request family because
create/update/delete all poll Redis work requests through a repo-owned
adapter, but it still keeps the live-state delete guard explicit so 409
delete conflicts reread the cluster lifecycle before finalizer removal.Active selected services can still carry non-selected subresources that remain outside the controller-backed API-error gate. The reviewed registry keeps those exceptions explicit today:
keymanagement: Key, KeyVersion, ReplicationStatus, WrappingKeyopensearch: Manifest, OpensearchClusterBackup,
OpensearchOpensearchVersion, WorkRequest, WorkRequestError,
WorkRequestLogEach of these stays exempt because services.yaml still marks the subresource
with strategy: none.
aidocument: Model, ProcessorJob, WorkRequest, WorkRequestError,
WorkRequestLogailanguage: Endpoint, EvaluationResult, Model, ModelType,
WorkRequest, WorkRequestError, WorkRequestLogaivision: DocumentJob, ImageJob, Model, WorkRequest,
WorkRequestError, WorkRequestLogbds: AutoScalingConfiguration, BdsApiKey,
BdsMetastoreConfiguration, OsPatch, OsPatchDetail, Patch,
PatchHistory, WorkRequest, WorkRequestError, WorkRequestLogdatabasetools: DatabaseToolsEndpointService,
DatabaseToolsPrivateEndpoint, WorkRequest, WorkRequestError,
WorkRequestLogdatascience: DataSciencePrivateEndpoint, FastLaunchJobConfig, Job,
JobArtifact, JobArtifactContent, JobRun, JobShape, Model,
ModelArtifact, ModelArtifactContent, ModelDeployment,
ModelDeploymentShape, ModelProvenance, ModelVersionSet,
NotebookSession, NotebookSessionShape, Pipeline, PipelineRun,
StepArtifact, StepArtifactContent, WorkRequest, WorkRequestError,
WorkRequestLogWhen services.yaml changes:
selection.includeKinds or
packageSplits.includeKinds, add a reviewed registration with an explicit
family, operation set, delete not-found semantics, retryable conflict
semantics, and any deviation note.strategy: none, add or keep an explicit reviewed exception.go test ./pkg/errorutil/errortest to verify the reviewed registry still
matches the authoritative inventory.This contract is intentionally inventory-first. The registry can lead the test backfill work, but it should not silently trail the selected rollout surface.