/** * 终态五名与非终态注记(编码规范 §8.1;语义出处 OS 4.3 / AM 1.3)。 * * 终态由**系统**裁定,封闭枚举,活动与模型不得增删。 */ import { z } from 'zod'; /** 终态五名 —— 唯一成功终态是 released(放行通过且落地收敛,输出口已发射) */ export const TERMINAL_STATES = ['released', 'blocked', 'stalled', 'exhausted', 'terminated'] as const; export const terminalStateSchema = z.enum(TERMINAL_STATES); export type TerminalState = z.infer; export const TERMINAL_STATE_LABEL: Readonly> = { released: '放行完成', blocked: '受阻待人', stalled: '停滞熔断', exhausted: '预算耗尽', terminated: '被终止', }; /** 触发者 —— OS 4.3 的第三列 */ export const TERMINAL_STATE_TRIGGER: Readonly> = { released: '放行卡 + 落地执行', blocked: 'Agent 机制申报,或治理台判定', stalled: '预算执行器 · 停滞检测', exhausted: '预算执行器 · 预算越限', terminated: '控制事件 · 终止(含工作流级联)', }; export function isSuccessTerminal(state: TerminalState): boolean { return state === 'released'; } /* ── 非终态注记(OS 4.3「不是终态」) ─────────────────────────────────── */ /** 驳回:放行卡的环内回转,任务继续 —— redo 按原要求重做 / revise 带意见迭代 */ export const REJECTION_KINDS = ['redo', 'revise'] as const; export const rejectionKindSchema = z.enum(REJECTION_KINDS); export type RejectionKind = z.infer; export const REJECTION_KIND_LABEL: Readonly> = { redo: '驳回重做', revise: '驳回迭代', }; /** 控制三语义(OS 06):暂停 = 可恢复冻结 · 叫停 = 负责人紧急中断 · 终止 = 不可恢复关闭 */ export const CONTROL_SEMANTICS = ['pause', 'halt', 'terminate'] as const; export const controlSemanticSchema = z.enum(CONTROL_SEMANTICS); export type ControlSemantic = z.infer; export const CONTROL_SEMANTIC_LABEL: Readonly> = { pause: '暂停', halt: '叫停', terminate: '终止', }; /** * 任务运行态 —— 与终态分层:终态是收场名,运行态是「此刻在干嘛」。 * landing-blocked(落地受阻)是运行态不是终态,处置后仍收敛于终态名录(OS 7.3)。 */ export const TASK_RUNTIME_STATES = [ 'running', 'awaiting-human', 'awaiting-event', 'suspended', 'landing-blocked', 'terminal', ] as const; export const taskRuntimeStateSchema = z.enum(TASK_RUNTIME_STATES); export type TaskRuntimeState = z.infer; export const TASK_RUNTIME_STATE_LABEL: Readonly> = { running: '运行中', 'awaiting-human': '等人回传', 'awaiting-event': '监听中', suspended: '已挂起', 'landing-blocked': '落地受阻', terminal: '已终结', }; /* ── 工作流状态:流内各任务状态的聚合投影(OS 3.2) ──────────────────── */ export const WORKFLOW_STATES = ['running', 'waiting', 'completed', 'terminated', 'abnormal'] as const; export const workflowStateSchema = z.enum(WORKFLOW_STATES); export type WorkflowState = z.infer; export const WORKFLOW_STATE_LABEL: Readonly> = { running: '运行中', waiting: '等待中', completed: '已完成', terminated: '已终止', abnormal: '异常', }; /* ── 归侧四标签(OS 8.1):度量的口径来源,零埋点 ─────────────────────── */ export const ATTRIBUTION_SIDES = ['machine', 'human', 'human-verdict', 'world-wait'] as const; export const attributionSideSchema = z.enum(ATTRIBUTION_SIDES); export type AttributionSide = z.infer; export const ATTRIBUTION_SIDE_LABEL: Readonly> = { machine: '机器产出', human: '人产出', 'human-verdict': '人裁决', 'world-wait': '世界等待', }; /* ── 验收分级 L1–L5(AM 10.2) ──────────────────────────────────────── */ export const ACCEPTANCE_LEVELS = ['L1', 'L2', 'L3', 'L4', 'L5'] as const; export const acceptanceLevelSchema = z.enum(ACCEPTANCE_LEVELS); export type AcceptanceLevel = z.infer; export const ACCEPTANCE_LEVEL_LABEL: Readonly> = { L1: '形式校验 · 引擎自动', L2: '机检 · 引擎自动', L3: '抽验 · 环内实证', L4: '独立评审 · LLM 评审者', L5: '人放行 · 责任关', }; /** L1–L4 是质量关,L5 是责任关 —— 判据全绿只是可提交,完成只出自放行通过 */ export function isResponsibilityGate(level: AcceptanceLevel): boolean { return level === 'L5'; }