@ifrankwang/openspec-agents 0.120.0 → 0.120.1
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.
package/.mcp-server/cli.mjs
CHANGED
|
@@ -35133,7 +35133,7 @@ function renderAgentWorking(item, rec, step, common2, ctxAgent, state, tg, toolC
|
|
|
35133
35133
|
lines.push(...eff.lines);
|
|
35134
35134
|
n = eff.nextNum;
|
|
35135
35135
|
if (tg.worktreePath && tg.baseRef) {
|
|
35136
|
-
lines.push(`${n++}. 用上方「变更范围」命令获取本 change
|
|
35136
|
+
lines.push(`${n++}. 用上方「变更范围」命令获取本 change 全部已提交变更文件清单,作为本次实施/修改范围;审查/报告范围以当前 step 指令为准`);
|
|
35137
35137
|
}
|
|
35138
35138
|
lines.push(`${n++}. 执行当前 step(\`${rec.stepId}\`)职责范围内的全部工作——遵循所有已加载 skill 的全部规范与约束`);
|
|
35139
35139
|
lines.push(`${n++}. 逐项检视所有已加载 skill 的 MUST 规范,确认全部满足(不满足则补做,不得跳过)`);
|
|
@@ -36985,7 +36985,7 @@ async function ensureDefaultUnattended(args, ctx) {
|
|
|
36985
36985
|
}
|
|
36986
36986
|
} catch {}
|
|
36987
36987
|
}
|
|
36988
|
-
var PKG_VERSION = "0.120.
|
|
36988
|
+
var PKG_VERSION = "0.120.1";
|
|
36989
36989
|
function buildMcpServer(worktree, opts = {}) {
|
|
36990
36990
|
const mcp = new McpServer({ name: "openspec-agents", version: PKG_VERSION });
|
|
36991
36991
|
for (const [name, spec] of Object.entries(TOOL_SPECS)) {
|
|
@@ -125,6 +125,10 @@ PMD 违规输出格式:
|
|
|
125
125
|
|
|
126
126
|
`target/pmd.xml` 被 `<suppressedviolation>` 污染(全量规则集 + 抑制配置时)时,改用自定义 ruleset 生成的干净报告,或读取 `mvn pmd:check` 非 -q 形态 console 输出中的 `[WARNING] PMD Failure` 行。
|
|
127
127
|
|
|
128
|
+
### 覆盖范围
|
|
129
|
+
|
|
130
|
+
PMD 全量报告中的每条违规均须纳入问题清单,不因文件不在本次修改范围或经基线对比确认为存量而省略。
|
|
131
|
+
|
|
128
132
|
### 测量与复现
|
|
129
133
|
|
|
130
134
|
pom 中 maven-pmd-plugin 显式配置的 `<rulesets>` 会覆盖命令行 `-Dpmd.rulesets`,修改生效规则集须改 pom 配置,勿用命令行参数覆盖。
|
|
@@ -42,6 +42,10 @@ must_do: ["env", "compile", "format", "architecture", "static_analysis", "unit_t
|
|
|
42
42
|
- **通过**:正常记录结果
|
|
43
43
|
- **不通过**:生成统一结构 issue,阻塞 task 完成
|
|
44
44
|
|
|
45
|
+
## 全量检查覆盖范围
|
|
46
|
+
|
|
47
|
+
执行全量确定性检查时,所有工具输出均须纳入检查结果与问题清单,不因文件不在本次变更范围或问题为存量而省略;存量问题按原严重级别处理。
|
|
48
|
+
|
|
45
49
|
## 失败定位
|
|
46
50
|
|
|
47
51
|
构建/检查失败时,失败的完整输出文本是定位全部失败项的唯一可靠依据;仅依据报错尾部数行做出修复决策会导致全量问题被遗漏并触发反复重试,视为不合规的故障处理方式。
|
|
@@ -24,7 +24,7 @@ common:
|
|
|
24
24
|
- "禁止为获取外部框架/工具的规则语义、API 用法等知识而解析其源码、jar 包或执行 AST dump;此类知识一律通过文档检索渠道获取;声明式规则定义来源(规则定义 XML 直拉、工具官方 Web API 返回、官方文档页)属于文档检索渠道范畴"
|
|
25
25
|
- "不跳步骤、不自行推断阶段流转,next-step 以 opx_status 为准"
|
|
26
26
|
- "禁止调用任何 opx_orch_* 工具(编排者专属)"
|
|
27
|
-
- "
|
|
27
|
+
- "以视图「变更范围」命令产出的文件清单作为本次实施/修改范围;审查/报告范围按各 step 指令执行"
|
|
28
28
|
|
|
29
29
|
phases:
|
|
30
30
|
- name: todo
|
|
@@ -96,7 +96,6 @@ phases:
|
|
|
96
96
|
- "依据 opx_status 提供的变更检测结果分流:无代码/配置变更且本层无待复核/待裁定项 → 直接提交 passed,不运行全量工具检查,并以一条 step 名首段为 no_change 的 validation_steps 声明本轮整体豁免必做清单(completed=false + 结构化 skip_reason 注明判定依据);无变更但有本层待复核/待裁定项 → 仅复核/裁定待处理项后提交,不跑全量工具扫描;有变更 → 加载质量门类 skill 获取工具清单与映射规则,按已加载质量门 skill 必做清单逐项执行全部确定性工具检查(代码格式/架构约束/静态分析/单元测试编译/深度扫描——按必做清单中的对应项逐项执行并逐项申报),将工具输出映射为统一 issue 结构后提交"
|
|
97
97
|
- "「有变更」分支先审查上方「本次变更证据」区块的变更文件清单与区间 diff 内容后自行判断:若确认本次变更仅为注释/文档性且无逻辑影响(非注释掉代码、非结构性/格式化变更、非文件重命名),可自行决定跳过全量工具检查直接提交 passed(validation_steps 以 step=no_change 申报整体豁免必做清单);无法确认或含逻辑/结构变更,必须顺序运行全部确定性工具检查;裁量仅免除全量工具扫描,不免除复核/裁定——本层 blocking issue 仍须处理至终态后提交"
|
|
98
98
|
- "报 issue 时必须显式声明归因维度 dimension(style/architecture/performance/security/maintainability):本 reviewer 不归属任一质量维度,dimension 即该 issue 归属的目标质量维度"
|
|
99
|
-
- "无变更直提分支不执行全量工具扫描,该分支下存量工具违规不重复扫描;实质代码/配置变更必须按全量覆盖:工具检查覆盖全量代码,非本轮变更文件的工具违规同样映射为 issue 提交,禁止因非本轮引入静默丢弃;仅注释/文档性变更(经审查确认)可免全量工具检查;命中项目级豁免清单(视图标注)的存量问题按 Info 提报,不重新豁免,其余非本轮引入问题仍按原严重级别上报"
|
|
100
99
|
- "当发现修复需要调整 openspec/changes/ 下文档时,所报 issue 的 file 字段必须指向目标文档"
|
|
101
100
|
- "复核本层已修复待复核(review 态)issue:通过置 done,不通过驳回(附驳回原因,issue 回待修复并累计修复未过次数)"
|
|
102
101
|
- "对视图「待裁定是否可豁免」区块中的豁免申请经 exempt_adjudications 裁定(dismissed/rejected)"
|
|
@@ -109,6 +108,7 @@ phases:
|
|
|
109
108
|
- "即使无 issue 也必须提交 verdict=passed(不通过必须有至少一个 Low+ issue 作为理由)"
|
|
110
109
|
- "Info 级 issue 的 description/suggestion 禁止阶段/时机表述(如'可后续处理')"
|
|
111
110
|
- "禁止以 SonarQube 平台状态修改(SAFE/WONTFIX/False Positive/Confirmed 等)作为豁免手段:平台状态仅作用于当前 SonarQube 项目实例,每次 change 使用独立项目 key,不跨 change 生效;存量问题跨 change 豁免必须经 exempt_issue_ids 申请 → 报源 reviewer 裁定 dismissed 的流程"
|
|
111
|
+
- "有实质变更时,工具检查及 issue 报告覆盖全量代码;非本轮变更文件的工具违规同样必须映射为 issue(命中项目级豁免清单的按 Info,不重新豁免;其余非本轮引入问题按原严重级别上报),不得以不在变更清单或未越界修改为由丢弃"
|
|
112
112
|
- id: verify_task
|
|
113
113
|
agents:
|
|
114
114
|
- id: openspec-reviewer-task
|
package/package.json
CHANGED
|
@@ -565,7 +565,7 @@ function renderAgentWorking(
|
|
|
565
565
|
lines.push(...eff.lines)
|
|
566
566
|
n = eff.nextNum
|
|
567
567
|
if (tg.worktreePath && tg.baseRef) {
|
|
568
|
-
lines.push(`${n++}. 用上方「变更范围」命令获取本 change
|
|
568
|
+
lines.push(`${n++}. 用上方「变更范围」命令获取本 change 全部已提交变更文件清单,作为本次实施/修改范围;审查/报告范围以当前 step 指令为准`)
|
|
569
569
|
}
|
|
570
570
|
lines.push(`${n++}. 执行当前 step(\`${rec.stepId}\`)职责范围内的全部工作——遵循所有已加载 skill 的全部规范与约束`)
|
|
571
571
|
lines.push(`${n++}. 逐项检视所有已加载 skill 的 MUST 规范,确认全部满足(不满足则补做,不得跳过)`)
|