Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions tools/workflow-engine/codeberg-world.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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<GiteaWorld, "forgeSpecialization"> {
readonly forgeSpecialization: "codeberg"; // narrower than gitea
readonly hostingPolicy: "non-commercial-eu-sovereign";
readonly communityGoverned: true;
Expand Down
Loading