Examples · µLang Git production contract

ForgeGitPush

A git push is a decision: who may update which refs of this repository, decided before any byte reaches storage.

Entity
GitPushRequest · 9 fields
Actions
push_refs
Clauses
8
sha256
ac88641f6ec1f5542102c98a609d22243529de6bf74b3dc5f2c6f6b26817220f
Source
.forge/rules/ForgeGitPush.ul · raw · open in the playground
// A git push is a decision: who may update which refs of this repository, decided before any byte reaches storage.
CONTRACT ForgeGitPush {
  ENFORCEMENT_MODE: enforced
  CONTEXT {
    ENTITIES GitPushRequest {
      operation: string
      repository_matches_main: bool
      repository_lands_only: bool
      requester_can_write: bool
      requester_is_agent: bool
      ref_updates: int
      refs_outside_agent_namespace: int
      default_branch_deleted: bool
      effect_hash: string
    }
    CONSTANTS {
      zero: int == 0 [SOURCE:FORGE-GIT-PUSH-V1]
      max_ref_updates: int == 64 [SOURCE:FORGE-GIT-PUSH-V1]
    }
  }
  TRIGGER { push_refs() }
  PROHIBITION {
    FORBID push_refs WHEN GitPushRequest.operation != "push" [SOURCE:push_operation]
    FORBID push_refs WHEN GitPushRequest.repository_matches_main == false [SOURCE:push_repository]
    FORBID push_refs WHEN GitPushRequest.repository_lands_only == true [SOURCE:push_landing_only]
    FORBID push_refs WHEN GitPushRequest.requester_can_write == false [SOURCE:push_write]
    FORBID push_refs WHEN GitPushRequest.ref_updates <= zero [SOURCE:push_nonempty]
    FORBID push_refs WHEN GitPushRequest.ref_updates > max_ref_updates [SOURCE:push_ref_cap]
    FORBID push_refs WHEN GitPushRequest.refs_outside_agent_namespace != zero [SOURCE:push_agent_namespace]
    FORBID push_refs WHEN GitPushRequest.default_branch_deleted == true [SOURCE:push_default_branch_delete]
  }
  OBSERVABILITY { LOG "ForgeGitPush evaluated" ON decision }
}