<language_directive>
重要语言指令：所有输出字段请使用简体中文；`optimizedProposalName` 例外，必须保持 kebab-case 英文格式。
</language_directive>

<task>
返回一个 JSON 对象，用于 bundled proposal optimization。
整个响应必须按 UTF-8 without BOM 文本语义生成。不要在开头的 `{` 之前输出 BOM、U+FEFF、零宽不换行空格或其他隐藏前缀/控制字符。
</task>

<authority>
- 当前输入是仓库边界、权限和可编辑范围的唯一权威来源。
- 不得虚构仓库、权限、项目约束或未提供的英雄设置。
- 词云记忆仅作辅助线索，不得覆盖当前输入。
</authority>

<input>
{{#if hasCustomTitle}}
<title>{{ title }}</title>
{{else}}
<title>（默认标题占位，可按需提供 optimizedTitle）</title>
{{/if}}
<description>
{{{ description }}}
</description>
</input>

{{#if wordCloudContext}}
<word_cloud_summary>
<project_key>{{ wordCloudContext.ProjectKey }}</project_key>
{{#if wordCloudContext.HighFrequencyTerms}}
<high_frequency_terms>
{{#each wordCloudContext.HighFrequencyTerms}}
- term: {{ Term }} | frequency: {{ Frequency }} | focusState: {{ FocusState }}{{#if ClassicPhrasing}} | classicPhrasing: {{ ClassicPhrasing }}{{/if}}{{#if CorrectionHint}} | correctionHint: {{ CorrectionHint }}{{/if}}{{#if ConceptHint}} | conceptHint: {{ ConceptHint }}{{/if}}
{{/each}}
</high_frequency_terms>
{{/if}}
{{#if wordCloudContext.CanonicalTerms}}
<canonical_terms>{{#each wordCloudContext.CanonicalTerms}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}</canonical_terms>
{{/if}}
{{#if wordCloudContext.RepositoryHints}}
<repository_hints>{{#each wordCloudContext.RepositoryHints}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}</repository_hints>
{{/if}}
{{#if wordCloudContext.NegativePatternHints}}
<negative_pattern_hints>{{#each wordCloudContext.NegativePatternHints}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}</negative_pattern_hints>
{{/if}}
{{#if wordCloudContext.Diagnostics}}
<memory_diagnostics>
{{#each wordCloudContext.Diagnostics}}
- [{{ Severity }}] {{ Code }}: {{ Message }}
{{/each}}
</memory_diagnostics>
{{/if}}
</word_cloud_summary>
{{/if}}

{{#if dungeonSettings}}
<dungeon_settings>
<script_key>{{ dungeonSettings.ScriptKey }}</script_key>
<selected_hero_id>{{ dungeonSettings.SelectedHeroId }}</selected_hero_id>
<captain_hero_id>{{ dungeonSettings.CaptainHeroId }}</captain_hero_id>
<roster_id>{{ dungeonSettings.RosterId }}</roster_id>
{{#if dungeonSettings.ExtensionFields}}
<extension_fields>
{{#each dungeonSettings.ExtensionFields}}
- {{@key}}: {{this}}
{{/each}}
</extension_fields>
{{/if}}
</dungeon_settings>
{{/if}}

{{#if imageContexts}}
<local_image_context>
{{#each imageContexts}}
- File: {{ FileName }}
  - Physical path: {{ StoragePath }}
{{/each}}
</local_image_context>
{{/if}}

{{#if optimizationDirection}}
<optimization_direction>{{ optimizationDirection }}</optimization_direction>
{{/if}}

<keyword_semantics>
关键词必须表达过去类似场景中的关注重点、经典表述、概念纠偏线索，而不只是表面名词。
</keyword_semantics>

<optimized_description_requirements>
`optimizedDescription` 作为 bundled 输出中的一等结果，必须满足以下全部要求：

- 保留原始描述中提及的所有 Repo / 项目引用 / Vault 范围信息、名称、路径、物理路径、可编辑属性与用途含义。
- 若用户明确给出仓库、项目引用或 Vault 引用、编辑范围或物理路径，必须严格沿用；不得改写、验证、补充或虚构任何 Repo 路径、项目路径、Vault 物理路径、权限或用途。
- 对前端系统拼接的 Repo / 项目引用 / Vault scope 块（如 `### 目标仓库`、`### Target Repositories`、`### 目标项目引用`、`### Target Project References`、`### 目标 Vault`、`### Target Vaults`）应在 `optimizedDescription` 中归一化为标准 Markdown 表格，而不是保留原始项目符号块。
- 若原始描述中存在用户手写引用段落、HagIndex 引用或 Markdown 表格，且这些内容不属于上述系统拼接的 Repo / 项目引用 / Vault scope 块，必须在 `optimizedDescription` 中原样保留，不得改写、重排或删除。
- 必须保持原始语言语义；中文输入输出中文，英文输入输出英文。
- 当 `hasCustomTitle=true` 时，标题语义必须纳入 `optimizedDescription`；当 `hasCustomTitle=false` 时，仅依据 description 生成描述内容。
- `optimizedDescription` 必须是结构化 Markdown，并以第一个二级标题立即开始，不得加前言。
- `optimizedDescription` 的章节结构必须延续旧版要求：
  - `## 涉及仓库`
  - `## 背景`
  - `## 问题`
  - `## 解决方案`
  - `## 影响`
  - `## 附加引用`（仅当原始描述存在相关引用段落时）
- `## 涉及仓库` 必须保留为唯一顶层范围章节；当存在范围信息时，应在该章节内按需使用以下子块：
  - `### Repos`
  - `### Projects`
  - `### Vaults`
- Repo 信息必须使用标准 Markdown 表格，列标题固定为：
  `| 仓库名称 | 路径 | 编辑权限 | 用途 |`
- 项目引用信息必须使用独立的标准 Markdown 表格，列标题固定为：
  `| 项目名称 | 路径 | 编辑权限 | 用途 |`
- Vault 信息必须使用独立的标准 Markdown 表格，列标题固定为：
  `| Vault 名称 | 路径 | 编辑权限 | 用途 |`
- 当 Repo、项目引用与 Vault 同时存在时，必须在同一个 `## 涉及仓库` 章节内分别渲染 `### Repos`、`### Projects` 与 `### Vaults` 三张表；不得合并为同一张表，也不得拆成新的顶层章节。
- 可编辑 Repo 或 Vault 在“编辑权限”列中标记为 `[editable]`；仅参考范围标记为 `-`。
- 可编辑项目引用在“编辑权限”列中标记为 `[editable]`；仅参考范围标记为 `-`。
- 若用户既未指定 Repo、项目引用，也未指定 Vault，必须明确写出“用户未指定任何仓库、项目引用或 Vault”，且不要构造 Repo 表格、项目表格或 Vault 表格。
- 所有 Markdown 表格必须保持多行换行：表头、分隔线与每一行数据都必须单独占行，不得压平成单行。
- 不得使用 Markdown 代码块包裹 `optimizedDescription`。
- `optimizedDescription` 必须保持为可直接按 UTF-8 without BOM 落盘的 Markdown 文本；不得在内容开头加入 BOM、U+FEFF 或隐藏前缀/控制字符。
- 总体应保持清晰结构、专业措辞、逻辑层次与可执行性。
</optimized_description_requirements>

<output_contract>
仅返回 JSON。不要使用 Markdown 代码块，不要附加说明。
整个 JSON 响应必须符合 UTF-8 without BOM 语义，返回内容的首个字符必须就是 `{`。
任何后续可能直接写入文件的字符串字段，尤其是 `optimizedDescription`、`optimizedProposalMarkdown` 以及出现时的 `optimizedTitle`，都不得携带 BOM、U+FEFF 或隐藏前缀字符，并应保持可直接按 UTF-8 without BOM 文本落盘。

必需字段：
- optimizedProposalName：kebab-case、小写、长度不超过 100
- optimizedDescription：完整优化描述，且必须满足上方 `optimized_description_legacy_requirements`
- keywords：非空数组

可选字段：
- optimizedTitle：默认标题场景尤其建议提供
- optimizedProposalMarkdown：可选的提案草稿内容
- dungeonSettings：按需回显或轻度规范化传入设置

JSON 结构：
{
  "optimizedTitle": "可选字符串",
  "optimizedProposalMarkdown": "可选字符串",
  "optimizedProposalName": "必填 kebab-case",
  "optimizedDescription": "必填字符串",
  "keywords": [
    {
      "term": "必填字符串",
      "canonicalTerm": "可选字符串",
      "focusState": "primary|secondary|watch|deprecated|neutral",
      "classicPhrasing": "可选字符串",
      "correctionHint": "可选字符串",
      "conceptHint": "可选字符串"
    }
  ],
  "dungeonSettings": {
    "scriptKey": "可选字符串",
    "selectedHeroId": "可选字符串",
    "captainHeroId": "可选字符串",
    "rosterId": "可选字符串",
    "extensionFields": {
      "futureKey": "futureValue"
    }
  }
}
</output_contract>
