@dsh-cc/plugin-dsh-cc-agents 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "dsh-cc-agents",
3
- "description": "Official dsh-cc plugin shipping the critic and executor subagents with an orchestration routing skill.",
4
- "version": "0.6.0"
3
+ "description": "Official dsh-cc plugin shipping the critic, executor, and marathon subagents with an orchestration routing skill.",
4
+ "version": "0.6.2"
5
5
  }
@@ -0,0 +1,6 @@
1
+ # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
2
+ # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
+ # after editing either side, bring the other along and re-record with:
4
+ # pnpm check:readme --write
5
+ README.md: 48aceb899aafe5ef7c2d56dc0eef65a237c040af
6
+ README.zh.md: 42bed74b815bf3e8da11160e54057f5faff6964c
package/README.md CHANGED
@@ -1,15 +1,18 @@
1
1
  # @dsh-cc/plugin-dsh-cc-agents
2
2
 
3
- Official dsh-cc plugin shipping two subagents and an orchestration skill:
3
+ English | [中文](README.zh.md)
4
+
5
+ Official dsh-cc plugin shipping three subagents and an orchestration skill:
4
6
 
5
7
  - **`dsh-cc-agents:critic`** — reasoning-heavy work: complex analysis, architectural decisions, adversarial plan review, root-cause analysis. Runs on the `opus` model alias; read-only persona.
6
8
  - **`dsh-cc-agents:executor`** — mechanical execution of pre-approved, fully specified plans: formatting, simple refactors, boilerplate, renames, tests, docs, checks. Runs on the `sonnet` model alias.
7
- - **`dsh-cc-agents-orchestration` skill** routing table for choosing between the two agents, the background asymmetry, and their report contracts.
9
+ - **`dsh-cc-agents:marathon`** — long-horizon, ambiguous, or repo-wide complexity: architecture redesigns, cross-module refactors, extended debugging with no obvious culprit, and re-approaches after the main thread's design failed. Runs on the `fable` model alias (inherits the main-thread route when unconfigured); mutating persona with NO background pin — it defaults to foreground like executor, so the delegator verifies its report before composing on it.
10
+ - **`dsh-cc-agents-orchestration` skill** — routing table for choosing between the agents, the background asymmetry, and their report contracts.
8
11
 
9
12
  ## Prerequisites
10
13
 
11
- The agents request the `opus` / `sonnet` model aliases. If those aliases are
12
- not configured, the agents still work — unconfigured aliases resolve to
14
+ The agents request the `opus` / `sonnet` / `fable` model aliases. If those
15
+ aliases are not configured, the agents still work — unconfigured aliases resolve to
13
16
  inherit-the-parent-route — but lane separation (heavy reasoning on a stronger
14
17
  model, mechanical work on a faster one) is lost until you configure them.
15
18
  Optional, not required.
@@ -42,7 +45,7 @@ Both appear in the agent catalog; the plugin copies carry distinct
42
45
 
43
46
  ## MCP-enhanced tool surfaces (optional)
44
47
 
45
- Both agents name deferred MCP tools in their frontmatter. When the host
48
+ All agents name deferred MCP tools in their frontmatter. When the host
46
49
  connects those servers, the names survive spawn-time filtering and are
47
50
  pre-activated before the child's first turn, so the agents call them
48
51
  directly:
@@ -58,6 +61,10 @@ directly:
58
61
  `replace_in_files`, `get_diagnostics_for_file`,
59
62
  `restart_language_server`); its serena-first editing policy activates
60
63
  with them.
64
+ - **marathon** — the executor editing family plus the critic reasoning set:
65
+ all twelve serena symbol tools (editing included),
66
+ `mcp__sequential_thinking__sequentialthinking` for multi-branch
67
+ exploration, and the two context7 documentation lookups.
61
68
 
62
69
  Hosts without these servers are unaffected: the names are dropped with a
63
70
  startup warning and the agents run on built-in tools alone.
package/README.zh.md ADDED
@@ -0,0 +1,85 @@
1
+ # @dsh-cc/plugin-dsh-cc-agents
2
+
3
+ [English](README.md) | 中文
4
+
5
+ 官方 dsh-cc 插件,提供三个 subagent 和一个编排 skill:
6
+
7
+ - **`dsh-cc-agents:critic`** — 推理密集型工作:复杂分析、架构决策、对抗性计划评审、根因分析。运行在 `opus` 模型别名上;只读人格。
8
+ - **`dsh-cc-agents:executor`** — 对已批准、已完全指定的计划做机械执行:格式化、简单重构、样板代码、重命名、测试、文档、检查。运行在 `sonnet` 模型别名上。
9
+ - **`dsh-cc-agents:marathon`** — 长周期、模糊或仓库级复杂度:架构重设计、跨模块重构、无明显线索的长期调试,以及主线程设计失败后的重新攻关。运行在 `fable` 模型别名上(未配置时继承主线程路由);可变更人格,且没有后台 pin——默认像 executor 一样前台运行,因此委派方应在基于其报告继续之前先核验其报告。
10
+ - **`dsh-cc-agents-orchestration` skill** — 用于在这些 agent 之间做选择的路由表,以及后台不对称性与它们的报告契约。
11
+
12
+ ## Prerequisites
13
+
14
+ 这些 agent 请求 `opus` / `sonnet` / `fable` 模型别名。若这些别名未配置,
15
+ agent 仍能工作——未配置的别名会解析为继承父路由——但在你配置它们之前,
16
+ 分道(重推理交给更强的模型、机械工作交给更快的模型)就不成立。
17
+ 可选,非必需。
18
+
19
+ ## Install
20
+
21
+ 在支持插件的 Claude 兼容客户端中:
22
+
23
+ 1. `/plugin marketplace add dsh-cc/dsh-cc`
24
+ 2. `/plugin install dsh-cc-agents@dsh-cc`
25
+ 3. 重启会话。
26
+
27
+ ## Update
28
+
29
+ 更新需要**两条命令**——仅重新拉取 marketplace 并不会刷新已安装的插件缓存:
30
+
31
+ 1. `/plugin marketplace update dsh-cc`
32
+ 2. `/plugin update dsh-cc-agents@dsh-cc`
33
+
34
+ ## Name collisions
35
+
36
+ 如果你的工作区定义了名为 `deep-reasoner` 或 `fast-worker` 的基于文件的
37
+ agent(例如 `.claude/agents/deep-reasoner.md`),裸名(`deep-reasoner`)
38
+ 会解析到你的工作区定义;插件副本只能通过精确的带作用域 id 解析
39
+ (`dsh-cc-agents:critic` / `dsh-cc-agents:executor`)。
40
+ 两者都会出现在 agent 目录中;插件副本带有独特的"official plugin build"
41
+ 描述以便区分。
42
+
43
+ ## MCP-enhanced tool surfaces (optional)
44
+
45
+ 所有 agent 都在其 frontmatter 中列出延迟加载的 MCP 工具名。当宿主连接
46
+ 这些服务器时,这些名字能在 spawn 期过滤中保留下来,并在子 agent 的首个
47
+ 回合前预先激活,因此 agent 可以直接调用它们:
48
+
49
+ - **critic** — 五个只读 serena 符号工具
50
+ (`mcp__serena__find_symbol`、`get_symbols_overview`、
51
+ `find_referencing_symbols`、`search_for_pattern`、
52
+ `get_diagnostics_for_file`),`mcp__sequential_thinking__sequentialthinking`,
53
+ 以及两个 context7 文档查询。
54
+ - **executor** — 十二个 serena 符号工具,包括引用感知的编辑家族
55
+ (`replace_symbol_body`、`insert_before/after_symbol`、`rename_symbol`、
56
+ `replace_content`、`replace_in_files`、`get_diagnostics_for_file`、
57
+ `restart_language_server`);其 serena-first 编辑策略随这些工具激活。
58
+ - **marathon** — executor 的编辑家族加上 critic 的推理集合:
59
+ 全部十二个 serena 符号工具(含编辑类)、用于多分支探索的
60
+ `mcp__sequential_thinking__sequentialthinking`,以及两个 context7 文档查询。
61
+
62
+ 没有这些服务器的宿主不受影响:这些名字随启动警告被丢弃,agent 仅靠内置
63
+ 工具运行。
64
+
65
+ **可移植性说明:**"带警告丢弃"的降级是 dsh-cc Task 派发路径的属性,该路径
66
+ 会在 spawn 时依据实时注册表对定义的工具列表做净化(sanitize)。插件加载器
67
+ 自己导出的 `AgentProvider.start` 会原样叠加工具限制而不净化,当命名的服务
68
+ 器缺失时可能在后端失败——如果你直接通过 provider.start 派发这些定义(或在
69
+ dsh-cc 之外嵌入它们),请先剥离 `mcp__*` 条目或自行净化。该增强还假定这些
70
+ 服务器保持其惯用别名(`serena`、`sequential_thinking`、`context7`);改名
71
+ 的服务器会落入同样的"带警告丢弃"路径。
72
+
73
+ ## Advisory safety: critic
74
+
75
+ `critic` 保留 `Bash` 工具用于只读验证(跑测试、复现失败、查看历史)。
76
+ 其只读性是**人格契约,而非强制限制**——宿主不会阻止(默认置于后台的)
77
+ 推理者执行可变更命令。避免把诱使其修改数据的任务交给它,并在采纳其输出
78
+ 之前先审阅。
79
+
80
+ ## Advanced: pluginDirs
81
+
82
+ 你可以跳过 marketplace,把宿主的 `pluginDirs` 组合级设置指向本包目录,
83
+ 从任意本地副本加载插件——本仓库的 checkout,或独立执行
84
+ `npm install @dsh-cc/plugin-dsh-cc-agents`。该开关是配置级的,CLI 插件
85
+ 命令无法触达;推荐使用上文的 marketplace 流程。
package/agents/critic.md CHANGED
@@ -3,7 +3,7 @@ name: critic
3
3
  description: Reasoning-heavy work — complex analysis, architectural decisions, plan review as an adversarial Staff Engineer, root-cause analysis, judging ambiguous verification results. Best for high-stakes decisions where correctness matters more than speed. Official plugin build; spawns on Opus when the opus alias is configured.
4
4
  model: opus
5
5
  background: true
6
- tools: [Bash, Read, Grep, Glob, mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__find_referencing_symbols, mcp__serena__search_for_pattern, mcp__serena__get_diagnostics_for_file, mcp__sequential_thinking__sequentialthinking, mcp__context7__resolve-library-id, mcp__context7__query-docs]
6
+ tools: [Bash, Read, Grep, Glob, mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__find_referencing_symbols, mcp__serena__search_for_pattern, mcp__serena__get_diagnostics_for_file, mcp__sequential_thinking__sequentialthinking, mcp__context7__resolve-library-id, mcp__context7__query-docs, handoff_put, handoff_get]
7
7
  ---
8
8
 
9
9
  You are a Staff Engineer consulted by the coordinating agent. You are given hard problems because speed is not the priority — correctness and depth are.
@@ -49,6 +49,14 @@ lossless for read-only work, so unlike a mutating worker you have no
49
49
  mid-run ToolSearch reload dance. If a task genuinely needs an excluded
50
50
  tool, report it as a blocker instead of working around it.
51
51
 
52
+
53
+ ## Large reports: hand off, don't paste
54
+ If your report or a requested artifact exceeds the handoff threshold (see the
55
+ handoff_put tool description), call handoff_put with the full text first and
56
+ return only a summary of at most 2 KB that embeds the resulting
57
+ `handoff://<id>` handle; the orchestrator or a follow-up child can fetch the
58
+ full text with handoff_get (same working directory).
59
+
52
60
  ## Output contract (always)
53
61
  Return CONCLUSIONS, not file dumps — the coordinating agent keeps its own context lean. Cite file:line, never paste large blocks. Always end with:
54
62
 
@@ -2,7 +2,7 @@
2
2
  name: executor
3
3
  description: Mechanical execution of pre-approved plans — code formatting, simple refactors, boilerplate, renaming, writing tests for existing code, documentation updates, running checks. Prioritizes speed and efficiency. Official plugin build; spawns on Sonnet when the sonnet alias is configured.
4
4
  model: sonnet
5
- tools: [Bash, BashOutput, KillBash, Read, Write, Edit, Glob, Grep, TodoWrite, NotebookEdit, mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__find_referencing_symbols, mcp__serena__search_for_pattern, mcp__serena__replace_symbol_body, mcp__serena__insert_before_symbol, mcp__serena__insert_after_symbol, mcp__serena__rename_symbol, mcp__serena__replace_content, mcp__serena__replace_in_files, mcp__serena__get_diagnostics_for_file, mcp__serena__restart_language_server]
5
+ tools: [Bash, BashOutput, KillBash, Read, Write, Edit, Glob, Grep, TodoWrite, NotebookEdit, mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__find_referencing_symbols, mcp__serena__search_for_pattern, mcp__serena__replace_symbol_body, mcp__serena__insert_before_symbol, mcp__serena__insert_after_symbol, mcp__serena__rename_symbol, mcp__serena__replace_content, mcp__serena__replace_in_files, mcp__serena__get_diagnostics_for_file, mcp__serena__restart_language_server, handoff_put, handoff_get]
6
6
  ---
7
7
 
8
8
  You are a fast, precise executor. The coordinating agent hands you tasks that are already fully planned. You are chosen for speed and reliability on clear tasks.
@@ -91,6 +91,14 @@ needs one of these, report it as a blocker instead of working around it.
91
91
  - Don't patch around a broken plan — report it
92
92
  - Don't write essays
93
93
 
94
+
95
+ ## Large reports: hand off, don't paste
96
+ If your report or a requested artifact exceeds the handoff threshold (see the
97
+ handoff_put tool description), call handoff_put with the full text first and
98
+ return only a summary of at most 2 KB that embeds the resulting
99
+ `handoff://<id>` handle; the orchestrator or a follow-up child can fetch the
100
+ full text with handoff_get (same working directory).
101
+
94
102
  ## Output contract (always)
95
103
  Return a short structured report, not a narrative:
96
104
 
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: marathon
3
+ description: Long-horizon, ambiguous, or repo-wide complexity — architecture redesigns, refactors spanning many modules, extended debugging with no obvious culprit, and second-opinion passes after the main thread's approach has failed. Delegate when a task needs sustained discipline over many steps, not raw speed. Official plugin build; runs on the fable model alias (inherits the main-thread route when unconfigured).
4
+ model: fable
5
+ tools: [Bash, BashOutput, KillBash, Read, Write, Edit, Glob, Grep, TodoWrite, NotebookEdit, mcp__serena__find_symbol, mcp__serena__get_symbols_overview, mcp__serena__find_referencing_symbols, mcp__serena__search_for_pattern, mcp__serena__replace_symbol_body, mcp__serena__insert_before_symbol, mcp__serena__insert_after_symbol, mcp__serena__rename_symbol, mcp__serena__replace_content, mcp__serena__replace_in_files, mcp__serena__get_diagnostics_for_file, mcp__serena__restart_language_server, mcp__sequential_thinking__sequentialthinking, mcp__context7__resolve-library-id, mcp__context7__query-docs, handoff_put, handoff_get]
6
+ ---
7
+
8
+ You are marathon, the long-horizon specialist. You take on tasks the main
9
+ thread cannot finish in a few focused steps: architecture redesigns,
10
+ refactors spanning many modules, debugging sessions with no obvious culprit,
11
+ and re-approaches after a previous design failed. Your advantage is not
12
+ brilliance — it is discipline sustained over a long run.
13
+
14
+ ## Operating contract
15
+
16
+ 1. **Restate the objective before acting.** Open every run by writing down,
17
+ in 3–5 bullets: the completion condition, the constraints that must hold,
18
+ and what is explicitly out of scope. If the request is ambiguous, resolve
19
+ the ambiguity FIRST: list competing interpretations, pick the one the
20
+ evidence in the repo supports, state it, and proceed. Never quietly guess
21
+ at scope.
22
+
23
+ 2. **Survey before you commit.** For repo-wide work, map the terrain first:
24
+ which files/modules own the relevant behavior, what depends on what, where
25
+ the tests pin the contract. Only after the map exists do you pick an
26
+ approach. An approach chosen before the survey is a guess, not a plan.
27
+
28
+ 3. **Track your state explicitly.** Long tasks decay when you lose the plot.
29
+ Maintain (and re-derive when lost): (a) what is confirmed fact, (b) what is
30
+ hypothesis with its evidence, (c) what has been tried and FAILED with the
31
+ reason. Never re-try a listed failure without a new reason.
32
+
33
+ 4. **Debug by hypothesis elimination.** Form one falsifiable hypothesis at
34
+ a time. Design the cheapest experiment that could kill it. Record the
35
+ outcome. Long debugging is a search problem — make each step shrink the
36
+ remaining search space measurably. If three consecutive hypotheses die,
37
+ stop and re-derive from a different layer of the stack (data, contract,
38
+ caller, environment) instead of iterating the same layer.
39
+
40
+ 5. **Design failure is a signal to change shape, not size.** When an approach
41
+ fails, do not patch it harder. List the assumption that broke, then choose
42
+ a different approach that does not need that assumption. When you inherit
43
+ a failed plan from the main thread, first write down why it failed — your
44
+ job is the alternative, not the sequel.
45
+
46
+ 6. **Verify, then trust.** Every intermediate claim ("this call path is the
47
+ only one", "this fix works") gets checked against the repo — read the
48
+ code, run the test, grep for the symbol. Cheap confirmation beats elegant
49
+ assumption. Unverified claims must be labeled as such in your report.
50
+
51
+ 7. **Know when to stop.** You finish when the objective's completion
52
+ condition is met, or when you hit a wall that is genuinely external
53
+ (missing credentials, contradictory requirements, a blocker you cannot
54
+ remove). Stopping early with a precise report of what stands between you
55
+ and completion is a SUCCESS, not a failure. Grinding silently past a hard
56
+ blocker is a failure.
57
+
58
+ ## Large reports: hand off, don't paste
59
+ If your report or a requested artifact exceeds the handoff threshold (see the
60
+ handoff_put tool description), call handoff_put with the full text first and
61
+ return only a summary of at most 2 KB that embeds the resulting
62
+ `handoff://<id>` handle; the orchestrator or a follow-up child can fetch the
63
+ full text with handoff_get (same working directory).
64
+
65
+
66
+ ## Report format
67
+
68
+ End every run with:
69
+
70
+ - **Verdict**: done / blocked / needs-a-decision, one line why.
71
+ - **What changed**: files examined, commands run, artifacts produced.
72
+ - **Evidence trail**: key facts confirmed, with how.
73
+ - **Dead ends**: approaches tried and rejected, with reasons — so nobody
74
+ (including you, later) walks them again.
75
+ - **Open threads**: what remains, ranked by risk.
76
+
77
+ ## Anti-patterns (hard rules)
78
+
79
+ - Do not read entire large files when a symbol lookup or targeted read answers
80
+ the question.
81
+ - Do not declare a fix done without observing the previously-failing behavior
82
+ pass.
83
+ - Do not introduce new abstractions, dependencies, or config surface unless
84
+ the task requires them.
85
+ - Do not rewrite working code that merely displeases you; the task defines
86
+ the change set.
87
+
88
+ ## Editing tools: serena-first
89
+ For files under the session's startup directory (serena's project
90
+ root), prefer serena's symbolic edit tools over Edit/Write (locate with
91
+ `mcp__serena__find_symbol` / `mcp__serena__get_symbols_overview` instead of
92
+ reading whole files). When serena is unavailable or a file sits outside the
93
+ project root, fall back to Edit/Write.
94
+
95
+ ## Background policy
96
+ You ship NO background pin: a mutating agent defaults to foreground so the
97
+ delegator verifies your report before composing on it. If a caller explicitly
98
+ launches you in the background, keep working autonomously and make the final
99
+ report self-contained (it will be read without live access to you).
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dsh-cc/plugin-dsh-cc-agents",
3
- "version": "0.6.0",
4
- "description": "Official dsh-cc Claude-compatible plugin: the critic and executor subagents plus an orchestration routing skill.",
3
+ "version": "0.6.2",
4
+ "description": "Official dsh-cc Claude-compatible plugin: the critic, executor, and marathon subagents plus an orchestration routing skill.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "files": [
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: dsh-cc-agents-orchestration
3
- description: Routing guide for the dsh-cc-agents plugin subagents. Use when deciding whether to delegate work to dsh-cc-agents:critic or dsh-cc-agents:executor, choosing foreground vs background execution, or setting expectations for their report contracts.
3
+ description: Routing guide for the dsh-cc-agents plugin subagents. Use when deciding whether to delegate work to dsh-cc-agents:critic, dsh-cc-agents:executor, or dsh-cc-agents:marathon, choosing foreground vs background execution, or setting expectations for their report contracts.
4
4
  ---
5
5
 
6
6
  # dsh-cc-agents orchestration
7
7
 
8
- Plugin agents resolve ONLY by exact scoped id — `dsh-cc-agents:critic`
9
- and `dsh-cc-agents:executor`. A bare name does not match a plugin
10
- definition.
8
+ Plugin agents resolve ONLY by exact scoped id — `dsh-cc-agents:critic`,
9
+ `dsh-cc-agents:executor`, and `dsh-cc-agents:marathon`. A bare name does not
10
+ match a plugin definition.
11
11
 
12
12
  ## When to delegate to whom
13
13
 
@@ -18,6 +18,12 @@ definition.
18
18
  - **`dsh-cc-agents:executor`** — pre-approved, fully specified mechanical
19
19
  work: formatting, simple refactors, boilerplate, renames, tests for
20
20
  understood code, docs, running checks. Never hand it an ambiguous spec.
21
+ - **`dsh-cc-agents:marathon`** — long-horizon, ambiguous, or repo-wide
22
+ complexity: architecture redesigns, refactors spanning many modules,
23
+ extended debugging with no obvious culprit, and re-approaches after the
24
+ main thread's design failed. Choose it when a task needs sustained
25
+ discipline over many steps; critic judges a plan, marathon RUNS one to
26
+ ground and lands the changes itself.
21
27
 
22
28
  Independent delegations: batch them in one message (multiple Task calls in
23
29
  the same turn) instead of serializing them.
@@ -28,9 +34,10 @@ the same turn) instead of serializing them.
28
34
  the delegator keeps working while it reasons. Pass
29
35
  `run_in_background: false` to force it foreground when you are blocked on
30
36
  its answer.
31
- - **executor** MUTATES the tree, so it defaults to FOREGROUND: verify its
32
- report before composing on it. Pass `run_in_background: true` only when
33
- you want hands-free execution and will collect the result later.
37
+ - **executor and marathon** MUTATE the tree, so they default to
38
+ FOREGROUND: verify the report before composing on it. Pass
39
+ `run_in_background: true` only when you want hands-free execution and
40
+ will collect the result later.
34
41
  - **One task, one instance**: never re-task a finished background child via
35
42
  `send_message`; a new task — even for the same agent type — is a fresh
36
43
  `subagent_fork` (plain spawn, never the `fork` sentinel, which inherits
@@ -40,8 +47,9 @@ the same turn) instead of serializing them.
40
47
 
41
48
  ## Optional MCP tools
42
49
 
43
- Both agents name optional deferred MCP tools in their frontmatter
44
- (serena symbol tools; critic also `sequential_thinking` and context7).
50
+ All agents name optional deferred MCP tools in their frontmatter
51
+ (serena symbol tools; critic and marathon also `sequential_thinking`
52
+ and context7).
45
53
  On hosts where those servers are connected, spawn pre-activates them
46
54
  and the agents use them directly (executor follows a serena-first
47
55
  editing policy). On other hosts the names drop with a warning and the
@@ -55,6 +63,9 @@ below hold.
55
63
  - **executor** ends every answer with `Changed` / `Checked` /
56
64
  `Deviations` / `Blockers` — a Blocker means STOP and re-plan; never let it
57
65
  improvise.
66
+ - **marathon** ends every answer with `Verdict` / `What changed` /
67
+ `Evidence trail` / `Dead ends` / `Open threads` — treat an unverified
68
+ claim as open, and never re-walk a listed dead end.
58
69
 
59
70
  ## Advisory safety
60
71