Examples · µLang Git production contract

ForgeTaskReconcile

Owner-only reconcile of a wedged task: fork credentials revoked and fork head recorded before its claim is released.

Entity
TaskReconcileRequest · 11 fields
Actions
reconcile_task
Clauses
9
sha256
fa65aa09b3219cfb143caa92ce8db72d4e14fe4119766c674399f560f42f0dfe
Source
.forge/rules/ForgeTaskReconcile.ul · raw · open in the playground
// Owner-only reconcile of a wedged task: fork credentials revoked and fork head recorded before its claim is released.
CONTRACT ForgeTaskReconcile {
  ENFORCEMENT_MODE: enforced
  CONTEXT {
    ENTITIES TaskReconcileRequest {
      operation: string
      repository_matches_main: bool
      requester_is_owner: bool
      task_exists: bool
      task_held: bool
      inflight_guard_set: bool
      fork_tokens_revoked: bool
      fork_head_recorded: bool
      idle_seconds: int
      idle_threshold_seconds: int
      effect_hash: string
    }
    CONSTANTS {
      min_idle_threshold_seconds: int == 300 [SOURCE:FORGE-RECONCILE-V1]
    }
  }
  TRIGGER { reconcile_task() }
  PROHIBITION {
    FORBID reconcile_task WHEN TaskReconcileRequest.operation != "reconcile" [SOURCE:reconcile_operation]
    FORBID reconcile_task WHEN TaskReconcileRequest.repository_matches_main == false [SOURCE:reconcile_repository]
    FORBID reconcile_task WHEN TaskReconcileRequest.requester_is_owner == false [SOURCE:reconcile_owner]
    FORBID reconcile_task WHEN TaskReconcileRequest.task_exists == false [SOURCE:reconcile_task_exists]
    FORBID reconcile_task WHEN TaskReconcileRequest.task_held == false [SOURCE:reconcile_task_held]
    FORBID reconcile_task WHEN TaskReconcileRequest.idle_seconds < TaskReconcileRequest.idle_threshold_seconds [SOURCE:reconcile_idle]
    FORBID reconcile_task WHEN TaskReconcileRequest.idle_threshold_seconds < min_idle_threshold_seconds [SOURCE:reconcile_idle_floor]
    FORBID reconcile_task WHEN TaskReconcileRequest.fork_tokens_revoked == false [SOURCE:reconcile_fork_tokens]
    FORBID reconcile_task WHEN TaskReconcileRequest.fork_head_recorded == false [SOURCE:reconcile_fork_head]
  }
  OBSERVABILITY { LOG "ForgeTaskReconcile evaluated" ON decision }
}