import { composeContractContributions, type InstalledContractContribution, type InstalledContractPackageIdentity, } from "../contracts/external-contract-runtime.ts"; import { REFERENCE_FEATURE_TEMPLATE_CONTRIBUTION } from "./reference-feature/contracts/reference-feature-contract-contribution.ts"; import { REFERENCE_FEATURE_ID } from "./reference-feature/contracts/reference-feature-contract.ts"; import { INSTALLED_PRODUCT_FEATURE_IDS } from "./installed-product-manifest.ts"; import { TECH_LOG_STUDIO_CONTRIBUTION } from "./tech-log/contracts/tech-log-studio-contract-contribution.ts"; /** * §4.8. Static contract selection SSOT. * * A product feature adds exactly one entry per service package here and imports * the generated package only from * `src/features//contracts/-contract-contribution.ts`. */ export const INSTALLED_CONTRACT_CONTRIBUTIONS: readonly InstalledContractContribution[] = Object.freeze( INSTALLED_PRODUCT_FEATURE_IDS.includes(REFERENCE_FEATURE_ID) ? [REFERENCE_FEATURE_TEMPLATE_CONTRIBUTION, TECH_LOG_STUDIO_CONTRIBUTION] : [TECH_LOG_STUDIO_CONTRIBUTION], ); export const COMPOSED_CONTRACT_CONTRIBUTIONS = composeContractContributions( INSTALLED_CONTRACT_CONTRIBUTIONS, ); /** * §5.4. `TEMPLATE_FIXTURE` provenance is filtered out before the contract set * is canonicalized, so a fixture can never influence the release digest. */ export const EXPECTED_CONTRACT_SET_PACKAGES: readonly InstalledContractPackageIdentity[] = COMPOSED_CONTRACT_CONTRIBUTIONS.externalPackages;