diff --git a/tools/workflow-engine/codeberg-world.ts b/tools/workflow-engine/codeberg-world.ts index ab095bc52c..fc76a68023 100644 --- a/tools/workflow-engine/codeberg-world.ts +++ b/tools/workflow-engine/codeberg-world.ts @@ -13,9 +13,6 @@ // substrate (community governance + EU-data-sovereignty). Substrate-naming // substrate-engineering keeps the inheritance explicit. -import { - type LifetimeState, -} from "./world.js"; import { buildGiteaWorld, type GiteaPrLifetime, @@ -29,13 +26,22 @@ import { type GitWorld } from "./git-world.js"; /** * CodebergWorld — Codeberg-specific specialization of GiteaWorld. * - * Inherits all GiteaWorld substrate + adds Codeberg-specific properties: - * - Community-moderation substrate (codeOfConduct, terms-of-service) - * - EU-data-sovereignty marker (GDPR-compliant; German non-profit) - * - Conservative rate-limit defaults (shared community instance) + * Inherits all GiteaWorld substrate fields EXCEPT forgeSpecialization, + * which is narrowed from "gitea" to "codeberg" literal. Uses Omit to + * avoid TS2430 interface-incompatible-extends error (literal types are + * invariant). + * + * Adds Codeberg-specific properties: + * - `hostingPolicy: "non-commercial-eu-sovereign"` — EU-data-sovereignty + * marker (GDPR-compliant; German non-profit; Codeberg e.V.) + * - `communityGoverned: true` — community-moderation substrate (CoC + + * community-governed terms-of-service; not commercial vendor policy) + * + * Conservative rate-limit defaults appropriate for a shared community + * instance are inherited via GiteaResourceBudget (constructed by + * buildCodebergWorld below). */ -export interface CodebergWorld extends GiteaWorld { - readonly forgeName: "git"; +export interface CodebergWorld extends Omit { readonly forgeSpecialization: "codeberg"; // narrower than gitea readonly hostingPolicy: "non-commercial-eu-sovereign"; readonly communityGoverned: true;