---
name: input-material-contract
scope:
  - '*'
products:
  - '*'
id: ka-hard-rule-输入材料契约规则
asset_kind: governance_rule
lifecycle_status: active
authority: canonical
owner_mechanism_id: mc-input-material-contract
routes: ['*']
primary_triggers:
  - 输入材料契约规则
secondary_triggers: []
negative_triggers: []
priority: P0
specificity: 5
consumes:
  - mc-input-material-contract
hard_blocks:
  - 材料禁止路径
  - 材料未确认
fallback: manual_required
required_evidence:
  - ingestion_evidences
  - input_materials
version: 1.1.0
last_reviewed: '2026-06-01'
type: governance_rule
when: 输入材料契约规则
stages: ["*"]
---

# 输入材料契约规则

## 核心约束

1. **外部材料边界**: 所有外部输入（文件引用、URL、粘贴内容）必须经过 Input Material Contract 校验
   - 每个外部材料必须有明确的来源标记（local_file | url | clipboard | user_provided）
   - 来源标记影响后续的权限和隐私检查

2. **路径安全**: 外部文件引用必须满足
   - 路径必须在项目根目录内（除非显式白名单）
   - 符号链接解析后仍需通过安全检查
   - 不允许读取 .env、credentials、.ssh 等敏感目录

3. **摄取边界**: 材料进入 SoloForge 管道时
   - 必须记录摄取证据（ingestion_evidence）
   - 必须通过隐私门禁（privacy_gate）
   - 拒绝的材料必须给出明确原因

4. **权限传播**: 输入材料的权限标签决定后续操作的 mutation_allowed
   - read-only 材料不得产生 write 操作
   - untrusted 材料标记为 advisory，不阻断但记录

## 验证要点

- 所有 input_materials 有 source_type 标记
- 外部路径不超出项目根目录
- 敏感文件被隐私门禁拦截
