---
name: task-context-lifecycle
scope:
  - '*'
products:
  - '*'
id: ka-hard-rule-任务上下文生命周期规则
type: governance_rule
asset_kind: governance_rule
lifecycle_status: active
authority: canonical
owner_mechanism_id: mc-task-context-lifecycle
asset_role: required
consumed_by:
  - mc-task-context-lifecycle
  - consumable_asset_registry
  - knowledge_injection
routes: ['*']
primary_triggers:
  - 任务上下文生命周期规则
secondary_triggers:
  - TaskContext
  - 任务上下文
  - task_context
negative_triggers: []
priority: P1
specificity: 5
consumes:
  - mc-task-context-lifecycle
hard_blocks:
  - TaskContext 混入推理过程
  - TaskContext 包含 stdout/stderr 原文
  - TaskContext 包含 secret
  - 无效状态转换
fallback: manual_required
required_evidence:
  - status_transition_log
  - fact_accumulation_report
version: 1.1.0
last_reviewed: '2026-06-01'
stages: ["*"]
---

# 任务上下文生命周期规则

## hard_rules

- TaskContext 只保存可恢复工程事实（facts、refs、status、evidence id），禁止存储推理过程、chain-of-thought、原始 stdout/stderr 和 Batch 临时字段。
- 状态转换必须经过 transition gate 验证：created → in_progress → verifying → delivering → completed | failed | degraded。
- `verify()` 后的 TaskContext 必须 freeze，后续修改必须走 `repair_reverify` 路径。
- `TaskContextSnapshot` 必须在每次状态转换时生成，用于审计和回滚。
- 敏感信息（secret、token、credential）禁止写入 TaskContext，必须使用 SecretReference 间接引用。
- `cleanup()` 不得删除被 evidence 引用的 TaskContext 条目。

## not_done_if_missing

- TaskContext 混入 chain-of-thought 或 secret → hard fail。
- 无效状态转换（如 created → completed）→ hard fail。
- cleanup 删除被引用的 evidence → hard fail。
- TaskContext 不可恢复（进程重启后丢失关键事实）→ degraded。

## verification_evidence

- `tests/engine/task_context.test.ts` 覆盖状态转换、字段过滤、snapshot 生成。
- `status_transition_gate` 运行时检查阻断无效转换。
- `diagnostic_codes`: invalid-transition, forbidden-field, evidence-deleted。
