diff --git a/docs/workbench-history.md b/docs/workbench-history.md
index 0e13546..a00092e 100644
--- a/docs/workbench-history.md
+++ b/docs/workbench-history.md
@@ -1,5 +1,19 @@
# Workbench history and rechecks
+## Choose a task and continue from its result
+
+The single-directory page separates Skill inspection from artifact acceptance.
+Each choice explains its directory and contract requirements. Empty inputs are
+marked next to the field before a verification request is sent. After a run, a
+summary above the sandboxed report explains its outcome and next step. Only a
+complete current Skill result with actionable issues offers a plan; artifact
+checks direct you to repair the original inputs and verify again.
+
+A historical verification is labelled read-only. Its **Recheck current files**
+action returns to the single-directory task and performs a fresh selection and
+verification. It never applies the stored plan. Multi-batch reports retain their
+separate package summary and do not show a single-directory action summary.
+
The local graphical workbench keeps immutable index records beside reports,
plans and receipts in its private state directory. Open **History** to inspect a
previous verification and use it as a baseline. Click **Verify directory** to
diff --git a/src/workbench/journey-summary.ts b/src/workbench/journey-summary.ts
new file mode 100644
index 0000000..cdf3a26
--- /dev/null
+++ b/src/workbench/journey-summary.ts
@@ -0,0 +1,14 @@
+import type { VerificationReport } from '../cli/commands/verify.js';
+import type { ArtifactReport } from '../domain/artifact-report.js';
+export type JourneySummary={title:string;description:string;counts:Array<{label:string;count:number}>;canPlan:boolean;readOnly:boolean};
+export function journeySummary(kind:'skill'|'artifacts',report:VerificationReport|ArtifactReport,readOnly=false):JourneySummary{
+ const incomplete=[2,4].includes(report.exitCode)||(kind==='artifacts'&&(report as ArtifactReport).reconciliations?.some(check=>check.status==='unknown'));
+ let counts:JourneySummary['counts'],actionable=0;
+ if(kind==='skill'){
+ const value=report as VerificationReport;actionable=value.issues.filter(issue=>['fail','warn'].includes(issue.finding.status)).length;
+ counts=[{label:'阻断问题',count:value.summary.fail},{label:'建议核对',count:value.summary.warn},{label:'尚未确认',count:value.summary.unknown}];
+ }else{const value=report as ArtifactReport;counts=[{label:'已读取文件',count:value.files.length},{label:'问题定位',count:value.findings.length},{label:'未完成对账',count:value.reconciliations?.filter(check=>check.status==='unknown').length||0}];}
+ const canPlan=!readOnly&&kind==='skill'&&!incomplete&&actionable>0;
+ return {title:readOnly?'历史证据 · 只读':incomplete?'本次检查尚未完整':report.exitCode===0?'所声明的检查通过':'存在需要处理的项目',
+ description:readOnly?'打开历史不会重新核验或恢复修复权限。可重新核验当前目录再决定下一步。':incomplete?'先查看报告中的输入、容量或未完成原因,修正后重新核验;当前结果不能作为完整通过。':kind==='artifacts'?'交付检查不提供自动修改。按报告修正原文件或清单,再明确重新检查;本报告会保留。':canPlan?'可先生成处理计划,区分安全修改与人工步骤;审阅并明确确认后才会写文件。':'可查看报告或保存摘要。继续修改文件后,请重新核验。',counts,canPlan,readOnly};
+}
diff --git a/src/workbench/page.ts b/src/workbench/page.ts
index 06d558d..aeee7ba 100644
--- a/src/workbench/page.ts
+++ b/src/workbench/page.ts
@@ -5,17 +5,17 @@ export function workbenchPage(nonce: string): string {
预检计划 → 逐批核验 → 保存复核包 按计划只读核验多个交付;修正失败批次后保留已通过的证据。打开复核包只检查完整性,不重新核验原始数据或认证作者。 此操作只读取已有证据,不重新核验原始文件。 选择历史记录作为基线,再核验当前文件。历史记录只读,打开不会重新执行核验或授予修复权限。 选择目录与范围 → 核验 → 查看结果验收多个交付
查阅已保存的复核包
查看已存证据
核验一个目录
尚未核验
选择目录与范围 → 核验 → 查看结果
尚未核验