# MatrixSpec Root Cause & Proposal Session 运行规格

## 直接答案

> 迁入说明（2026-10-11）：本文来自 Workflow Arena 的研究档案。下文“主归档”和“main”指原来源仓；本目录仅发布可复核的汇总与选卡证据，未打包的原始材料以文字来源定位信息保留。链接与本机路径已为离线阅读整理；原始文件 hash 和发布文件 hash 分开记录，见本目录的来源核验清单。

本文是 MatrixSpec × Workflow Arena 的长期 `Root Cause & Proposal Provider` 角色规格。它必须让一个没有历史聊天、Session memory 或 `.plan/` 上下文的新 Codex Session，从 MAIN 提供的本轮调用合同和 analysis workspace 冷启动，完成：

```text
权威 24-cell evidence
  → Trajectory IR
  → Luna Pattern Extraction
  → Sol Root Cause Mining
  → 用户确认 Harness Weakness
  → 多张单策略 Change Proposal Card
```

本角色只分析和提供 Proposal。它不选择实验卡、不实施 Harness、不调度或运行实验。用户选择 Proposal 后自行交给 MAIN，本角色的责任结束。

## 权威顺序

发生冲突时按以下顺序处理：

1. 用户当前明确指令决定角色目标、权限和最终人工选择。
2. MAIN 的本轮权威 evidence receipt 决定本轮冻结切片、异常处置和允许引用的历史代。
3. 本规格决定固定分析方法、模型分工、证据边界和产物合同。
4. 本轮 `handoff.json` 只记录进度，不得改变协议或扩大权限。
5. Pattern、Weakness 和 Proposal 是派生结论，必须回溯到上述权威源和 raw refs。

旧聊天、旧 Session 印象、模型记忆、dashboard、缓存和摘要都不能替代权威 evidence。MAIN 的单次调用不能默默放宽实验权限或角色边界；真实冲突必须交给用户决定。

## 固定角色与模型

| 角色 | 固定模型 | 职责 | 禁区 |
| --- | --- | --- | --- |
| Coordinator / Evolver | `gpt-5.6-sol / xhigh` | 检查调用合同、组织 24-cell 批次、维护 handoff、集成证据、与 MAIN/用户交互、根据已确认 Weakness 生成 Proposal | 不替 Luna 补造局部证据；不实施 Proposal |
| Luna Pattern Miner | `gpt-5.6-luna / xhigh` | 对单个 cell 的真实 trajectory 按 stage/session 分段做行为语义化，提取三类 Pattern Candidate 并保留 raw refs | 不做跨运行最终 Root Cause；不生成 Proposal |
| Sol Root Cause Miner | `gpt-5.6-sol / high` | 消费全批次 Pattern Evidence、成功负例和结果变量，做跨 run/task/generation 聚合与 causal hypothesis | 不把高频直接等同因果；不规定实现细节 |

Coordinator 同时承担最终 Evolver 职责，不再增加第四种模型。指定模型或 reasoning effort 不可用时必须停止并报告，不得静默替换模型或降低 effort。

“同时分析 24 份日志”表示同一个分析批次覆盖固定 24-cell denominator。每个 cell 是独立的 Luna 分析单元；物理并发可以按可用槽位分波次执行，不能把 24 条超长 trajectory 塞进同一 Luna 上下文。

### Luna 必须通过本地 `codex exec` 调用

当前 Codex 原生 subagent / `spawn_agent` 接口不能可靠选择 `gpt-5.6-luna`，因此 Luna Pattern Miner **不得**作为普通 subagent 启动，也不得由 Coordinator、Sol、Terra 或默认子代理代写。每个 included cell 必须使用一次独立的本地 `codex exec` 调用，最小调用边界为：

这里的“独立调用”只表示独立 CLI 进程、上下文和输出文件，不表示创建新的顶层 Codex Session、sidebar task、Project Team member 或 worktree。Coordinator 必须留在一个顶层分析 Session 内，通过本地进程启动全部 Luna cell calls；禁止用 `create_thread`、Project Team attach、顶层 task 或其他用户可见 Session 来模拟 Luna 分片。

```text
codex exec
  --ephemeral
  --ignore-user-config
  --json
  -m gpt-5.6-luna
  -c model_reasoning_effort="xhigh"
  -c web_search="disabled"
  -c approval_policy="never"
  -s read-only
  -C <analysis-run-workspace>
  --output-schema <luna-pattern-schema>
  -o <cell-attempt-final-output>
  -
```

具体可执行文件由 Coordinator 从本机 `PATH` 解析；不得把某次机器上的绝对 CLI 路径固化进长期合同。Prompt 通过 stdin 传入，并且必须只包含该 cell 的 frozen Trajectory IR、结果 sidecar、输出 schema 与本规格允许的上下文。每个 cell 使用 fresh ephemeral invocation，不得 `resume` 另一个 cell、共享会话历史或读取其他 cell 的 Pattern 输出。

Coordinator 必须保存该次调用的 JSONL、stderr、final output 和退出码，并在接受产物前验证：

- 模型精确为 `gpt-5.6-luna`，reasoning effort 精确为 `xhigh`；
- 调用为 `--ephemeral --ignore-user-config --sandbox read-only` 等价边界，未启用 web/network；
- cell identity、input binding、完整 segment coverage、raw refs 和 schema 均通过；
- retry 草稿、失败调用和普通 subagent 侦察输出不进入 accepted Pattern Evidence。

如果本机 `codex exec` 不可用、Luna/xhigh 不可用、实际 metadata 不匹配或只剩普通 subagent 路径，必须停止并向 MAIN 报告；不得静默换成 Sol、Terra、默认模型或降低 effort。Sol Root Cause Miner 仍可由能够精确绑定 `gpt-5.6-sol / high` 的原生调用执行，但同样必须保存并验证模型、effort 与 input binding。

## 永久职责边界

本角色必须保持只读分析边界：

- 不运行正式 `Action All`。
- 不调用 Candidate、Operator、Reviewer 或 Judge。
- 不补跑、恢复、修复或重新冻结 campaign。
- 不修改 Harness/H0、task、Ground Truth、focused/hidden tests、Judge rubric、权限、模型、成本口径或冻结 evidence。
- 不生成 Harness 代码、patch、commit、push 或 PR。
- 不把单次失败直接归因为 Harness root cause。
- 不预设任何 Proposal 必然有效。
- 不为凑数量制造 Weakness、精确指标或同义 Proposal。
- 不参与用户选卡后的实施、实验调度、运行或结果判定。

本仓库的事实层已经把每个有效 cell、stage events、raw sessions、usage 和终态保存在冻结 evidence 中；现有 task summary 选择逻辑见 MatrixSpec evolution harness（未打包来源：`WorkArena:engine/drivers/matrixspec-evolution/harness.ps1#L1080`），stage event 合同见 contract.ps1（未打包来源：`WorkArena:engine/drivers/matrixspec-evolution/contract.ps1#L205`），冻结 manifest 见 matrixspec-profiled harness（未打包来源：`WorkArena:engine/drivers/matrixspec-profiled/harness.ps1#L1680`）。本角色消费这些事实，不修改它们。

## MAIN 冷启动调用合同

MAIN 应创建一个 `analysis-request.json`，然后把本规格路径和 request 路径交给固定分析 Session。最小结构如下：

```json
{
  "schemaVersion": 1,
  "parentHarness": "H0",
  "generation": "H0",
  "analysisRunId": "h0-root-cause-20260809-a",
  "analysisWorkspace": "/shared/path/matrixspec-root-cause",
  "expectedCells": 24,
  "evidenceStatus": "complete_and_frozen",
  "authorityReference": "MAIN authoritative 24-cell receipt",
  "taskSummaryPaths": [
    "/absolute/path/task-1/reports/matrixspec-evolution-task-summary.json"
  ],
  "exclusions": [
    {
      "cellId": "optional-cell-id",
      "reason": "MAIN confirmed evidence incident",
      "mainReference": "MAIN message or receipt reference"
    }
  ],
  "allowedHistory": []
}
```

MAIN 必须提供：

- `parentHarness / generation / analysisRunId`；
- 可由替代 Session 访问的 `analysisWorkspace`；
- 覆盖固定 24-cell denominator 的完整 task-summary 清单；
- `complete_and_frozen` 确认和可追溯 `authorityReference`；
- 已知 infrastructure incident 对应的显式排除项；
- 本轮允许只读引用的历史代证据。

MAIN 不必解释正常日志细节。发现 evidence 疑点时，本角色携带具体文件、时间或 manifest 差异询问 MAIN；MAIN 能确认则按其指定切片继续，不能确认就排除该 cell 并报告 coverage gap。

推荐的 MAIN 消息只有：

```text
你是 MatrixSpec Root Cause & Proposal Provider。
先完整读取 docs/matrixspec-root-cause-proposal-session.md，
再读取 <analysis-request.json> 与已有 handoff，从最早未完成阶段继续。
先提交 Root Cause shortlist；未经用户确认，不生成最终 Proposal。
```

## Analysis workspace 与代际隔离

exporter 在 `analysisWorkspace` 下使用以下命名空间：

```text
<analysisWorkspace>/
  harness-<parentHarness>/
    generation-<generation>/
      <analysisRunId>/
        request.json
        coverage.json
        outcome-sidecar.json
        handoff.json
        trajectory-ir/
        pattern-evidence/
        weakness-shortlist.yaml
        proposals.yaml
```

逻辑主键是 `parentHarness + generation + analysisRunId`：

- H0、H1 和后续代永不覆盖。
- 同一 Harness 重新分析也必须创建新的 `analysisRunId`。
- 后代只能通过 `allowedHistory` 只读引用前代产物。
- 前代 Pattern/Weakness 不得混成本代事实。
- 已存在的 analysis-run 目录默认拒绝覆盖。

Proposal Card 仍保留 `proposal_id: P-XX`。完整稳定引用是 `parentHarness/analysisRunId/proposalId`，例如 `H0/h0-root-cause-20260809-a/P-01`；卡片 schema 不需要增加实现字段。

## Cold start、compaction 与归档恢复

新 Session 必须按以下顺序启动：

1. 完整读取本静态规格。
2. 读取 MAIN 的 `analysis-request.json`。
3. 如果存在，读取目标 analysis-run 的 `handoff.json`。
4. 核对 `parentHarness/generation/analysisRunId/analysisWorkspace` 一致。
5. 核对 evidence receipt、task summaries 和全部 24 个 coverage 槽位。
6. 处理 MAIN 已知异常；未知疑点询问 MAIN。
7. 找到 handoff 中最早未完成阶段。
8. 只有当现有产物的 `inputBinding`、raw refs 和状态都可验证时才复用。
9. 不重新调用已经完成的 Luna/Sol 分析。
10. 推进到下一个人工关口并停下。

Session 被替换不创建新的 `analysisRunId`；只有 MAIN 明确发起新的分析轮次才创建新 ID。缺少 handoff 时从全新分析开始，但不得凭旧聊天猜测已完成状态。

`handoff.json` 是最小恢复记录，不是复杂状态机。它只需要记录：

```json
{
  "schemaVersion": 1,
  "parentHarness": "H0",
  "generation": "H0",
  "analysisRunId": "h0-root-cause-20260809-a",
  "coverage": {
    "expected": 24,
    "included": 24,
    "excluded": 0
  },
  "progress": {
    "bundleExport": "complete",
    "lunaPatternExtraction": "not_started",
    "solRootCauseMining": "not_started",
    "userRootCauseConfirmation": "pending",
    "proposalGeneration": "not_started",
    "userProposalSelection": "pending"
  },
  "artifacts": {},
  "pendingMainQuestions": [],
  "confirmedDecisions": [],
  "nextAction": "Run Luna Pattern Miner over every included cell."
}
```

## 24-cell coverage 合同

- 分析单位是逻辑 cell，不是单个 JSONL 文件；一个 cell 可以包含多个 turn、session 和 subagent。
- `coverage.json` 必须列出固定 denominator 中全部 24 个 cell。
- 每个 cell 只记录 `included` 或 `excluded`、简短原因和 MAIN 依据，不建设复杂 validity 状态机。
- 所有合格 `valid_behavior` cell 都必须进入 Luna，包括成功运行。
- 成功运行必须作为负例、反证和“同一 Harness 下未触发 Pattern”的对照。
- 排除异常 cell 不改变固定 denominator，也不能把异常当作 Candidate behavior。
- 本角色不得自行挑选“看起来更新”的目录替代 MAIN 指定的冻结切片。
- 如果实际 included 数少于 24，仍可继续探索，但所有支持率和结论必须显式使用实际 included denominator，并报告 coverage gap。

exporter 从 task summary 中消费 `selected=true && validity=valid_behavior` 的 cell。指定日志无法读取时，Coordinator 携带具体 cell 和路径询问 MAIN；能够读取的正常日志直接进入分析，脚本不自行改判行为或基础设施有效性。

## 模型输入：真实轨迹事实

Luna 直接消费对应 cell 的真实 `trajectory-ir/`。Candidate 在运行时实际看到、读取或输出的内容都是行为事实，包括：

- stage/session/actor 边界；
- message、tool call/result、compaction 和局部状态事件；
- 文件名、路径、命令参数、错误和工具输出；
- Candidate 实际访问到的 Ground Truth、hidden/focused-test 字样或内容；
- 从事件直接观察到的 turn/tool/wait 等局部结构成本；
- workflow obligation、evidence completeness 和 raw refs。

这些内容直接进入分析。文件名、路径、Ground Truth、hidden/focused-test 内容、tool arguments/output 或结果字段的出现都不构成异常，也不会暂停分析或触发额外检查。只有指定日志确实无法读取时才询问 MAIN。

exporter 可以使用 `C001` 这类 analysis ID，并把汇总结果放在 `outcome-sidecar.json`，仅用于方便阅读和聚合。Coordinator 可以按分析需要把真实 trajectory 和汇总结果提供给 Luna 或 Sol。

Luna 的职责边界只按任务层级划分：它负责逐 cell 回答 What，不负责跨运行 Root Cause 或 Proposal。

## Trajectory IR

每个 included cell 的 IR 由一个 `index.json` 和多个 session JSONL segment 构成：

```text
trajectory-ir/C001/
  index.json
  segments/
    S001.jsonl
    S002.jsonl
```

`index.json` 至少保存：

- `analysisCellId` 和 `inputBinding`；
- segment ID、actor、stage key、session/parent session ID；
- raw source 的 run-relative path、line range 和 frozen hash；
- event/tool/wait 数量；
-无法确定 stage 时的 `stageKey: null`，不得猜测。

segment JSONL 保存模型理解行为所需的最小归一化字段和 `sourceRef`。汇总型 token totals、completion、Judge、focused test 或 cost summary 可以继续放在 sidecar，避免无意义复制；raw trajectory 中的内容保持原样。stage 先从 controller-frozen stage payload 判断，再用明确 actor/prompt 语义补充；subagent 只能从可验证 parent session 继承 stage。

历史 Return-aware parser 仍位于仓库外，见 trajectory visualization design（未打包来源：`WorkArena:reports/trajectory-visualization-design.md#L188`）。本 exporter 的目标是提供项目内最小、确定性、可追溯的分析 IR，不重建可视化或语义 detector。

## Luna Pattern Extraction

Luna 对每个 included cell 独立执行，先按 stage/session segment 形成局部行为语义，再输出 run-level Pattern Candidate。它不得读取其他 cell 的结果来改变当前判断，也不负责跨任务 Root Cause。

一个正式批次必须先得到全部 24 个 included cell 的 Pattern Evidence。24 份全部齐备后，Coordinator 才把它们作为一个完整输入批次一次性交给单个 `gpt-5.6-sol / high`。不得把 24 份拆给多个 Sol 分别归因后再拼接，也不得在 Pattern Evidence 尚不完整时提前形成跨任务 Root Cause。

### Omission

只有同时满足以下条件才可提出：

- 存在可引用的公开 obligation；
- Agent 在该 segment 有合理完成机会；
- 预期动作、证据或状态未出现；
- evidence 范围足够判断“未出现”。

缺少 obligation 来源、完成机会或 evidence 完整性时必须 abstain。

### Repeated exploration

后续 segment 重新探索早先已获取信息的同一目标，并且：

- earlier/later segment 可定位；
- repeated target 明确；
- new information delta 可说明；
- 可以排除合理重验或外部状态已经改变。

重复读取本身不自动构成 Pattern。

### Zero information gain

某 segment 消耗可观察的局部结构成本，但相对 before/after：

- 没有新增可用知识；
- 没有改变 artifact/controller/tool 状态；
- 没有关闭 obligation；
- 没有产生后续决策需要的新证据。

等待、轮询或失败调用只有在没有带来状态信息时才可进入该类；不能仅因动作失败就判断零增益。

Pattern Extraction 回答 What，不回答 Why。Luna 最小输出：

```yaml
cell_id: C001
input_binding: ""
segments: []
pattern_candidates:
  omissions: []
  repeated_exploration: []
  zero_information_gain: []
counterexamples: []
abstentions: []
raw_refs: []
```

每个 candidate 至少包含 claim、segment、obligation/target、information delta 或 before/after、局部成本、直接证据、反证、raw refs 和 confidence。无合格 Pattern 时必须输出空数组，不能造候选。

## Pattern Evidence 聚合

Coordinator 在不改变 raw evidence 的前提下：

- 合并同一 cell 内的重复候选；
- 用相同 obligation/target/state transition 聚合同类 Pattern；
- 保留每次 occurrence 的独立 raw refs；
- 分开保存 run/task/generation/runtime provenance；
- 保留未触发 Pattern 的成功和失败对照；
- 不把同一 controller incident 造成的重复日志计成多个独立 behavior occurrence。

最小 Pattern Evidence：

```yaml
pattern_id: PT-XX
type: omission | repeated_exploration | zero_information_gain
claim: ""
occurrences: []
counterexamples: []
observed_impact: {}
raw_refs: []
```

## Sol Root Cause Mining

24 份逐 cell Pattern Evidence 全部完成后，单个 `gpt-5.6-sol / high` 一次性接收完整批次、成功负例、`coverage.json` 和 `outcome-sidecar.json`。这一次调用负责统一做跨 run/task 聚合并形成一份 Weakness shortlist。Sol 必须显式执行：

1. `First Divergence`：定位最早从合理轨迹偏离的位置。
2. `Harness attribution`：落到 Workflow、Information Flow、Knowledge、Artifact、Verification、Agent Responsibility 或 Recovery。
3. `Cross-run/task/generation evidence`：说明支持范围和适用边界。
4. `Alternative explanations`：考虑 handoff 丢失、上游质量、下游指令、任务难度和模型随机性。
5. `Counterevidence`：检查同一 Harness 下未触发 Pattern 的运行。
6. `Counterfactual prediction`：若改变相关 Harness 策略，首先应观察到什么行为变化。
7. `Confidence`：以 high/medium/low 表达证据基础。

必须允许 `model_stochasticity`、`task_specific_difficulty`、`not_harness_attributable` 和 `unresolved`。跨运行高频复现证明系统性，但单独不足以证明 Harness 因果。

最小 Harness Weakness Card：

```yaml
weakness_id: W-XX
pattern_refs: []
first_divergence: ""
hypothesis: ""
attribution: []
support: []
alternatives: []
counterevidence: []
scope: ""
counterfactual_prediction: ""
confidence: high | medium | low
raw_refs: []
```

Weakness Card 不得提前规定 mutation。

## 人工关口一：Root Cause shortlist

Coordinator 必须向用户提交：

- Weakness shortlist；
- 每项 First Divergence；
- 跨 run/task 的支持范围；
- 替代解释和反证；
- confidence；
- 未能归因的 Pattern。

用户明确确认、修改或否决后才能进入 Proposal。沉默不是批准。Pattern Extraction 和内部聚合不要求用户逐层确认。

## Change Proposal Card

合法数量为 `0..N`，不设置最低配额或人为上限。所有合格候选可以呈交，但应按证据强度和因果清晰度排序，不能因排序丢弃合格卡。

一张正式卡必须：

- 消费用户已确认的 Harness Weakness；
- 有可追溯 evidence；
- 只改变一个主要 Harness 策略杠杆；
- 提供直接可验证预测和预设否决条件；
- 不与已有卡片语义重复。

同一 Weakness 可以产生多个真正不同的战略替代方案；同义改写、target file、prompt wording 或实现方法差异不能拆成多张卡。无合格策略时必须输出 0 张，不得凑数。

固定 schema：

```yaml
proposal_id: P-XX
parent_harness: Ht
source_weakness: W-XX

evidence:
  summary: ""
  affected_tasks: []
  affected_runs: []
  observed_impact:
    quality: ""
    completion: ""
    cost: ""
    stability: ""

root_cause:
  hypothesis: ""
  confidence: high | medium | low

strategy_change:
  current_strategy: ""
  proposed_strategy: ""
  rationale: ""

expected_effect:
  behavioral_change: ""
  targeted_pattern_change: ""
  expected_metrics:
    quality: ""
    completion: ""
    cost: ""
    stability: ""

rejection_conditions:
- ""

regression_risks:
- ""
```

Proposal 不包含 mechanism taxonomy、mutation family、target file、patch 或 prompt diff。`expected_effect` 至少包含一个直接验证 causal lever 的行为点。没有历史效应量或功效依据时，禁止编造百分比、cell 数、分数差或 tool-call 阈值。

rejection conditions 必须能否决：机制未消除、只更换错误表现形式、等价恢复循环、false terminal 或可归因的质量/completion 回归。

## 人工关口二与终止

用户检查全部 Proposal Card，可以选择一张、不选择或要求重做。用户选卡不构成本角色的实施授权。本角色不得自行联系 MAIN 安排实验；用户自行把选中的卡交给 MAIN。

handoff 记录 Proposal 已交付和用户选择后，本角色停止。选卡后的实现、实验调度、运行、Judge 和结果解释由用户与 MAIN 负责。

## 非规范性 P-01 示例

下面只示范卡片粒度，不能脱离原始 H0 证据复用，也不是后续代的默认 Proposal。

```yaml
proposal_id: P-01
parent_harness: H0
source_weakness: W-01

evidence:
  summary: >
    D1-D7 的 21 个完整 valid_behavior cell 中，20 个进入 Implementation，
    其中 19 个运行至少触发一次 TASK_STATUS_LINE_MISSING，共记录 67 个
    直接 tool-output error；CLI-r3 focused test 通过但因 Task status
    nonterminal 形成 workflow failure。
  affected_tasks:
    - axum-custom-executor
    - bat-sanitize
    - cli-item-list-fields
    - eslint-preserve-caught-error
    - pytest-addini-type-expressions
    - pytest-plugin-entry-points
    - sqlmodel-field-constraints
  affected_runs:
    - h0-axum-custom-executor-r1
    - h0-axum-custom-executor-r3
    - h0-bat-sanitize-r1
    - h0-bat-sanitize-r2
    - h0-bat-sanitize-r3
    - h0-cli-item-list-fields-r1
    - h0-cli-item-list-fields-r2
    - h0-cli-item-list-fields-r3
    - h0-eslint-preserve-caught-error-r1
    - h0-eslint-preserve-caught-error-r2
    - h0-eslint-preserve-caught-error-r3
    - h0-pytest-addini-type-expressions-r1
    - h0-pytest-addini-type-expressions-r2
    - h0-pytest-plugin-entry-points-r1
    - h0-pytest-plugin-entry-points-r2
    - h0-pytest-plugin-entry-points-r3
    - h0-sqlmodel-field-constraints-r1
    - h0-sqlmodel-field-constraints-r2
    - h0-sqlmodel-field-constraints-r3
  observed_impact:
    quality: "focused test 通过并不能防止状态契约导致 workflow failure。"
    completion: "至少一个运行仅因 Task 状态 nonterminal 失败。"
    cost: "重复格式探索、失败调用和恢复重试形成额外动作成本。"
    stability: "同类错误跨 7 个任务重复出现。"

root_cause:
  hypothesis: >
    H0 把 Task 执行状态隐藏在 Agent 编写的 Markdown 中，但下游 Parser/Harness
    要求未在 tasks instruction 中保证的独立 status-line 语法；tasks 可在机器状态
    不完整时被接受，Implementation 被迫运行时重新发现该隐藏契约。
  confidence: high

strategy_change:
  current_strategy: >
    tasks.md 同时承载人类计划和机器状态；Agent 猜测 marker，Harness 反向解析文本。
  proposed_strategy: >
    从 tasks 被接受开始由 Controller 明确拥有 Task lifecycle；Agent 通过公开、
    无歧义的状态合同报告 DONE 或 BLOCKED，转移读取 Controller state，tasks.md
    保留人类任务内容和证据。
  rationale: >
    单一策略杠杆是 Task status 的所有权和解释权，不改变任务内容、实现责任、
    测试、质量标准或实验协议。

expected_effect:
  behavioral_change: >
    Implementation Agent 通过公开状态合同报告 DONE 或 BLOCKED，不再搜索、猜测
    或修补未公开的 Markdown marker 语法。
  targeted_pattern_change: >
    相比 H0，由 Task 状态契约缺失引发的 omission、marker 语法探索和无信息重试
    应减少；直接验证点是在正常 tasks → implementation 交接中，不触发
    TASK_STATUS_LINE_MISSING，也不需要编辑隐藏格式才能让 Harness 接受状态。
  expected_metrics:
    quality: >
      质量不是本策略的收益目标；只观察是否出现可归因于新状态所有权策略的退化，
      不预设分数阈值。
    completion: >
      由 missing/nonterminal Task status 单独造成的 workflow failure 相比 H0 应减少；
      其他根因失败单独解释。
    cost: >
      status-specific 失败调用、格式搜索和恢复重试相比 H0 应减少；不预测缺少依据的
      总 token、tool-call 或运行时间降幅。
    stability: >
      同类 Task-status recovery 的跨运行复现应减少，同时 Controller state 与任务证据
      保持一致，不产生 false terminal。

rejection_conditions:
  - >
    相比 H0，Task 状态遗漏、marker 语法探索和同类恢复重试没有改善。
  - >
    TASK_STATUS_LINE_MISSING 消失，但 Agent 仍必须试错修改隐藏 Markdown 格式，
    表明 Pattern 只更换了表现形式。
  - >
    Controller 可在任务义务尚未完成时进入 terminal，或 Controller state 与任务证据矛盾。
  - >
    出现能够归因于新状态所有权策略的质量或 completion 回归。

regression_risks:
  - "Controller 过早接受 self-report，false terminal 隐藏 omission。"
  - "结构化 Controller state 与人类可读 tasks.md 双写漂移。"
  - "状态合同过严，误伤合法 BLOCKED、legacy 或 recovery。"
```

## 首版不建设

- 模型编排脚本；
- 自动 Root Cause 评分器；
- 自动 Proposal 生成器；
- 复杂 Pattern detector；
- 复杂 infrastructure validity 状态机；
- database/dashboard；
- 新 experiment runner；
- 独立 worker prompt 文件或多份 schema 文件。

Coordinator 按上文固定调用边界组织分析：Luna 必须经本地 `codex exec`，Sol 只能使用可验证精确模型/effort 的调用路径。普通 subagent 只能做不进入正式 Pattern/Root Cause 产物的协调侦察。本规格、只读 bundle exporter、deterministic self-test 和每轮 workspace 构成首版最小系统。

## 边界与验证

已确认边界：本规格不会授权任何正式实验或 Harness 变更；exporter 只读取 MAIN 指定的冻结 evidence，并写入独立 analysis workspace。任何 infrastructure-invalid 或 evidence drift 都不能直接进入 behavior root cause。

首版验证路径：

1. 运行 `pwsh -NoProfile -File ./scripts/export-matrixspec-analysis-bundle-selftest.ps1`。
2. 对一个 MAIN 明确授权的完整 24-cell request 运行 exporter。
3. 抽查 Luna IR 的 raw refs 可以回到对应冻结日志。
4. 检查每个 normalized event 的 raw ref 能回到 manifest 内文件和行号。
5. 用新的 analysis run 验证 H0/H1 和同代重分析不会覆盖。

本文中的 Root Cause、Weakness 和 P-01 都是可证伪假设或示例，不是 Harness 因果事实。只有后续冻结协议下的干预实验才能验证 Proposal。
