5.1 KiB
5.1 KiB
Data Model: Provider Boundary Hardening
Overview
The first slice introduces one explicit seam-ownership catalog with binary ownership plus documented exception metadata, one split between shared operation definition and provider binding, and one deterministic guard result shape. No new database persistence is introduced.
Entity: ProviderBoundarySeam
- Purpose: Declares whether a touched seam is provider-owned or platform-core, and records any documented current-release exception metadata that remains temporarily allowed.
- Identity:
seam_key— stable catalog key such asprovider.gateway_runtime,provider.identity_resolution, orprovider.operation_registry
- Core fields:
ownerdescriptionimplementation_paths[]neutral_terms[]retained_provider_semantics[]follow_up_action
- Owner values:
provider_ownedplatform_core
- Validation rules:
- Every first-slice seam must have exactly one owner classification.
platform_coreseams must list the neutral platform terms they preserve.- Any seam that retains provider-specific semantics must list them in
retained_provider_semantics[]and pair them with an explicitfollow_up_action. implementation_paths[]must reference real code paths used by tests and review guardrails.
Authoritative first-slice seam inventory
provider.gateway_runtime—ProviderGateway.php,MicrosoftGraphOptionsResolver.phpprovider.identity_resolution—ProviderIdentityResolution.php,ProviderIdentityResolver.php,PlatformProviderIdentityResolver.phpprovider.connection_resolution—ProviderConnectionResolver.php,ProviderConnectionResolution.phpprovider.operation_registry—ProviderOperationRegistry.phpprovider.operation_start_gate—ProviderOperationStartGate.php
Entity: ProviderOperationDefinition
- Purpose: Represents the platform-core definition of a provider-backed operation without silently embedding provider truth.
- Identity:
operation_type
- Core fields:
module_keylabelrequired_capability
- Validation rules:
- The definition must not require a provider field as its primary identity.
- Labels and module keys remain shared orchestration truth and do not encode Microsoft-specific vocabulary by default.
- Operation type values remain unchanged in this slice.
Entity: ProviderOperationBinding
- Purpose: Connects one shared operation definition to the current provider-owned runtime behavior.
- Fields:
operation_typeproviderbinding_statushandler_notesexception_notes
- Binding status values:
activeunsupported
- Validation rules:
- Every binding must reference an existing
operation_type. - Missing binding is explicit and must not fall back silently to Microsoft behavior.
- Provider-specific notes remain secondary to the platform-core operation definition.
- Every binding must reference an existing
Entity: ProviderBoundaryCheckResult
- Purpose: Shared deterministic result used by tests and review guardrails.
- Fields:
statusseam_keyfile_pathviolation_codemessagesuggested_follow_up
- Status values:
allowedreview_requiredblocked
- Violation code examples:
platform_core_provider_leakundeclared_exceptionmissing_provider_bindingprovider_binding_as_primary_truth
- Validation rules:
allowedmeans the touched seam matches its declared ownership.review_requiredmeans the seam has documented exception metadata or needs explicit follow-up.blockedmeans the touched change violates the seam ownership or provider-binding rules.
Relationships
- One
ProviderBoundarySeammay cover multiple implementation paths. - One
ProviderOperationDefinitionmay have one currentProviderOperationBindingin the first slice because only Microsoft runtime support exists today. - One
ProviderBoundaryCheckResultreferences exactly one seam evaluation, but a review may emit multiple results across multiple touched files.
Lifecycle
Boundary seam lifecycle
provider_owned: provider-specific semantics are allowed inside the seam.platform_core: provider-specific semantics are blocked unless explicitly extracted.platform_corewith documented exception metadata: named provider-specific details remain temporarily allowed only while the seam records the retained semantics and explicit follow-up action.
Operation binding lifecycle
active: current provider runtime is explicitly supported for the operation.unsupported: the operation definition exists, but the current seam must fail explicitly instead of inheriting default provider behavior.
Rollout Model
- The first slice keeps the catalog in code, not in the database.
- Existing Microsoft-backed runtime behavior remains the only shipped provider binding.
- Shared identity resolution and operation registry cleanup happen before any persistence or UI neutrality changes.
- Deeper target-scope and provider-connection neutrality remain follow-up work.