soloforge 1.1.73 → 1.1.75
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/dist/gate/executors/executors_arch_conduction.d.ts.map +1 -1
- package/dist/gate/executors/executors_arch_conduction.js +4 -1
- package/dist/gate/executors/executors_arch_conduction.js.map +1 -1
- package/dist/gate/executors/executors_arch_coverage.d.ts.map +1 -1
- package/dist/gate/executors/executors_arch_coverage.js +2 -1
- package/dist/gate/executors/executors_arch_coverage.js.map +1 -1
- package/package.json +1 -1
- package/templates/design/enforced.md +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executors_arch_conduction.d.ts","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_conduction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executors_arch_conduction.d.ts","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_conduction.ts"],"names":[],"mappings":"AAsBA,wBAAgB,8BAA8B,IAAI,IAAI,CAsCrD"}
|
|
@@ -11,8 +11,11 @@ import { join } from "node:path";
|
|
|
11
11
|
/** 从架构文档提取引用的产物路径(反引号包裹的 docs/ 或 deploy/ 路径)。 */
|
|
12
12
|
function extractArchReferences(content) {
|
|
13
13
|
const refs = new Set();
|
|
14
|
-
for (const m of content.matchAll(/`((?:docs|deploy)\/[^`\s|]+)`/g))
|
|
14
|
+
for (const m of content.matchAll(/`((?:docs|deploy)\/[^`\s|]+)`/g)) {
|
|
15
|
+
if (m[1].includes("{"))
|
|
16
|
+
continue; // 跳过通配路径({端}/{slug} 是模板占位非真实文件,不该校验 existsSync)
|
|
15
17
|
refs.add(m[1]);
|
|
18
|
+
}
|
|
16
19
|
return [...refs];
|
|
17
20
|
}
|
|
18
21
|
export function registerArchConductionExecutor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executors_arch_conduction.js","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_conduction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,iDAAiD;AACjD,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"executors_arch_conduction.js","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_conduction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executors_arch_coverage.d.ts","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_coverage.ts"],"names":[],"mappings":"AAaA,wBAAgB,4BAA4B,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"executors_arch_coverage.d.ts","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_coverage.ts"],"names":[],"mappings":"AAaA,wBAAgB,4BAA4B,IAAI,IAAI,CA6CnD"}
|
|
@@ -12,7 +12,8 @@ import { resolveCrossValidationArtifact } from "./executors_trace.js";
|
|
|
12
12
|
export function registerArchCoverageExecutor() {
|
|
13
13
|
gateExecutors.register("arch_translation_coverage", async (check, ctx) => {
|
|
14
14
|
try {
|
|
15
|
-
|
|
15
|
+
// 固定读需求分析(提 REQ);required_artifact 仅作 per-产物路由 key(绑架构设计模版,verify design_doc 才跑)
|
|
16
|
+
const reqPaths = resolveCrossValidationArtifact("需求分析模版", ctx.projectRoot);
|
|
16
17
|
if (reqPaths.length === 0) {
|
|
17
18
|
return { check_id: check.id, executed_by: "code", passed: true, skipped: true,
|
|
18
19
|
evidence: "需求分析产物不存在(非功能开发任务),跳过架构翻译覆盖" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executors_arch_coverage.js","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_coverage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,UAAU,4BAA4B;IAC1C,aAAa,CAAC,QAAQ,CACpB,2BAA2B,EAC3B,KAAK,EAAE,KAAgB,EAAE,GAAsB,EAAwB,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,8BAA8B,CAAC,
|
|
1
|
+
{"version":3,"file":"executors_arch_coverage.js","sourceRoot":"","sources":["../../../src/gate/executors/executors_arch_coverage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -212,6 +212,7 @@ checks:
|
|
|
212
212
|
check_type: deterministic
|
|
213
213
|
severity: error
|
|
214
214
|
gate: design-gate
|
|
215
|
+
required_artifact: API接口规格文档模版
|
|
215
216
|
rule: "openapi.yaml 资源型接口(GET列表+POST创建)须有 PUT/PATCH+DELETE——堵契约粒度偏差(只查+增不能改删,如 20GET+20POST+0DELETE);动作型(/login /calculate 无列表)不要求;scope≠api 跳过"
|
|
216
217
|
evidence_required: ["docs/api/openapi.yaml"]
|
|
217
218
|
target: self
|
|
@@ -220,7 +221,7 @@ checks:
|
|
|
220
221
|
check_type: deterministic
|
|
221
222
|
severity: error
|
|
222
223
|
gate: design-gate
|
|
223
|
-
required_artifact:
|
|
224
|
+
required_artifact: 架构设计模版
|
|
224
225
|
rule: "架构设计须承载所有 REQ-*(每个 REQ 在架构模块/状态机/流程被引用)——堵架构翻译层偏差(架构漏 REQ 则下游 DB/API/实现全漏,偏差传播链源头)"
|
|
225
226
|
evidence_required: ["docs/architecture/01-架构设计文档.md"]
|
|
226
227
|
target: self
|
|
@@ -229,6 +230,7 @@ checks:
|
|
|
229
230
|
check_type: deterministic
|
|
230
231
|
severity: error
|
|
231
232
|
gate: design-gate
|
|
233
|
+
required_artifact: 架构设计模版
|
|
232
234
|
rule: "架构 §8 引用的下游产物路径(DB/API/openapi/sql)须真实存在——堵传导层偏差(如 docs/architecture/ vs docs/design/ 错位致下游定位失败)"
|
|
233
235
|
evidence_required: ["docs/architecture/01-架构设计文档.md"]
|
|
234
236
|
target: self
|
|
@@ -237,6 +239,7 @@ checks:
|
|
|
237
239
|
check_type: deterministic
|
|
238
240
|
severity: error
|
|
239
241
|
gate: design-gate
|
|
242
|
+
required_artifact: 架构设计模版
|
|
240
243
|
rule: "架构 §4 模块划分须有模块表格(≥3 行,禁 bullet 空话);§9 状态机须有 Mermaid stateDiagram + 状态表(≥2 行)——堵复杂内部逻辑章节退化(状态机/模块边界弱)"
|
|
241
244
|
evidence_required: ["docs/architecture/01-架构设计文档.md"]
|
|
242
245
|
target: self
|
|
@@ -245,6 +248,7 @@ checks:
|
|
|
245
248
|
check_type: deterministic
|
|
246
249
|
severity: error
|
|
247
250
|
gate: design-gate
|
|
251
|
+
required_artifact: 架构设计模版
|
|
248
252
|
rule: "架构决策记录 docs/architecture/00-架构决策记录.md 须存在——接上 ADR 机制最后半截(研讨/guidance/模板强制已有,独缺产物存在 gate);架构文档为前提(未产 skip)"
|
|
249
253
|
evidence_required: ["docs/architecture/01-架构设计文档.md", "docs/architecture/00-架构决策记录.md"]
|
|
250
254
|
target: self
|
|
@@ -253,6 +257,7 @@ checks:
|
|
|
253
257
|
check_type: deterministic
|
|
254
258
|
severity: error
|
|
255
259
|
gate: design-gate
|
|
260
|
+
required_artifact: API接口规格文档模版
|
|
256
261
|
rule: "主产物 md ↔ companion 数量一致(API md endpoint vs openapi operation 差≤30%;DB md 表 vs schema.sql 表 差≤10%)——堵契约层内部各说各话"
|
|
257
262
|
evidence_required: ["docs/design/02-API接口规格文档.md", "docs/api/openapi.yaml", "docs/design/01-数据库设计文档.md", "docs/design/schema.sql"]
|
|
258
263
|
target: self
|