Registers the TECH_LOG_STUDIO_SESSION SAME_ORIGIN_COOKIE auth profile and declares the tech-log-studio-http-v1 contribution covering all 18 JSON Studio operations (everything except the multipart uploadStudioAsset), built from two shared builders (safeOperation/keyedOperation) so every KEYED command gets IDEMPOTENCY_REPLAY recovery and a zero retry budget, and every SAFE read gets a plain retry budget, without repeating the declaration shape 18 times. Rescopes the canonical package identity from "tech-log-studio-contract" to "@tech-log/studio-contract" (generator, canonical-source.json, contract-generation.test.ts) because the platform's contribution composer requires an npm-scoped packageId; the unscoped form failed composition. Updates the release-manifest test fixture, which hardcoded an empty expected contract set, to derive its expected packages from the real installed set now that TechLog is always installed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
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/<feature>/contracts/<service>-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;
|