---
name: configuration-priority
scope:
  - '*'
products:
  - '*'
id: ka-hard-rule-配置优先级规则
asset_kind: governance_rule
lifecycle_status: active
authority: canonical
owner_mechanism_id: mc-config-precedence
routes: ['*']
primary_triggers:
  - 配置优先级规则
secondary_triggers: []
negative_triggers: []
priority: P0
specificity: 5
consumes:
  - mc-zero-config-init
hard_blocks:
  - 配置冲突未裁决
  - 优先级颠倒
fallback: manual_required
required_evidence:
  - config_resolution_report
version: 1.1.0
last_reviewed: '2026-06-01'
type: governance_rule
when: 配置优先级规则
stages: ["*"]
---

# 配置优先级规则

## 核心约束

1. 配置来源优先级（从高到低）:
   - `user_task` — 任务级用户声明
   - `cli_flag` — CLI 参数
   - `mcp_param` — MCP 工具参数
   - `confirmed_config` — .soloforge/config.yaml（经 config confirm 确认）
   - `project_policy` — 项目策略
   - `fingerprint` — 自动检测
   - `blueprint` — 空项目蓝图
   - `product_profile` — 产品模版
   - `knowledge_default` — 知识库默认
   - `global_default` — 全局默认
2. 高优先级覆盖低优先级，但低优先级可作为 fallback。
3. 字段级覆盖：单个字段可独立覆盖，不需要整配置替换。
4. 覆盖必须产生 `ConfigEvidenceEntry`，记录来源、时间戳、变更详情。
5. stale 配置（源文件已变更但 evidence 未更新）必须产生 warning。

## 适用场景

- 项目初始化 (`sf_init`)
- 配置解析 (`cmdConfigResolve`)
- 配置确认 (`cmdConfigConfirm`)
- 运行时配置读取

## 违规处理

- 未注册的配置来源 → hard_fail，阻断使用
- stale 配置未标记 → advisory，标记需要重新确认
- 覆盖无 evidence → hard_fail，阻断覆盖
