soloforge 1.4.3 → 1.4.4
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/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +7 -2
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/bin/soloforge.d.ts.map +1 -1
- package/dist/bin/soloforge.js +126 -62
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/asset_manifest.js +1 -1
- package/dist/engine/asset_manifest.js.map +1 -1
- package/dist/engine/consumable_asset_registry.d.ts.map +1 -1
- package/dist/engine/consumable_asset_registry.js +1 -0
- package/dist/engine/consumable_asset_registry.js.map +1 -1
- package/dist/engine/control_plane_contract.d.ts.map +1 -1
- package/dist/engine/control_plane_contract.js +1 -0
- package/dist/engine/control_plane_contract.js.map +1 -1
- package/dist/engine/design_artifact_pack.d.ts +3 -0
- package/dist/engine/design_artifact_pack.d.ts.map +1 -1
- package/dist/engine/design_artifact_pack.js +3 -0
- package/dist/engine/design_artifact_pack.js.map +1 -1
- package/dist/engine/explicit_asset_registry.d.ts.map +1 -1
- package/dist/engine/explicit_asset_registry.js +16 -0
- package/dist/engine/explicit_asset_registry.js.map +1 -1
- package/dist/engine/next_action_planner.d.ts +9 -4
- package/dist/engine/next_action_planner.d.ts.map +1 -1
- package/dist/engine/next_action_planner.js +11 -4
- package/dist/engine/next_action_planner.js.map +1 -1
- package/dist/engine/release_readiness_gate.d.ts.map +1 -1
- package/dist/engine/release_readiness_gate.js +28 -2
- package/dist/engine/release_readiness_gate.js.map +1 -1
- package/dist/engine/traceability.d.ts +6 -0
- package/dist/engine/traceability.d.ts.map +1 -1
- package/dist/engine/traceability.js +14 -2
- package/dist/engine/traceability.js.map +1 -1
- package/package.json +1 -1
- package/templates/knowledge/acceptance_templates//351/234/200/346/261/202/345/216/237/345/236/213/350/256/276/350/256/241/345/256/236/347/216/260/350/277/275/350/270/252/347/237/251/351/230/265/346/250/241/347/211/210.md +98 -0
- package/templates/knowledge/procedures//345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201/345/257/274/350/210/252.md +13 -0
- package/templates/knowledge/rules//345/267/245/344/275/234/346/265/201/345/257/274/350/210/252/345/245/221/347/272/246/350/247/204/345/210/231.md +12 -0
|
@@ -2101,6 +2101,16 @@ async function checkReleaseIssueDesignPath(rootDir, hardFail, _info) {
|
|
|
2101
2101
|
!toolsText.includes("TOOL_DIAGNOSTIC_CODES.traceabilityVerifyFailed")) {
|
|
2102
2102
|
hardFail("RELEASE_ISSUE_TRACEABILITY_MAINLINE_MISSING", "问题七十三追踪契约未接入 sf_expand/sf_verify 主链路", ["src/adapters/claude_code/tools.ts", "src/engine/traceability.ts"], "problem-73", "只审计设计产物不能保证编码来自需求、原型、架构、详细设计和切片", "在 sf_expand 编码前门和 sf_verify changed_files 门接入追踪契约");
|
|
2103
2103
|
}
|
|
2104
|
+
const traceabilityText = safeRead(path.join(rootDir, "src", "engine", "traceability.ts")) ?? "";
|
|
2105
|
+
const nextPlannerText = safeRead(path.join(rootDir, "src", "engine", "next_action_planner.ts")) ?? "";
|
|
2106
|
+
if (!traceabilityText.includes("DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH") ||
|
|
2107
|
+
!traceabilityText.includes("recovery_command") ||
|
|
2108
|
+
!traceabilityText.includes("recovery_zh") ||
|
|
2109
|
+
!nextPlannerText.includes("DESIGN_IMPLEMENTATION_TRACEABILITY_TEMPLATE_PATH") ||
|
|
2110
|
+
!cliText.includes("finding.template_path") ||
|
|
2111
|
+
!cliText.includes("finding.recovery_command")) {
|
|
2112
|
+
hardFail("RELEASE_ISSUE_TRACEABILITY_RECOVERY_PATH_MISSING", "问题七十三追踪矩阵强门禁缺少模板/引导/审计恢复路径", ["src/engine/traceability.ts", "src/engine/next_action_planner.ts", "src/bin/soloforge.ts"], "problem-73", "强门禁只阻断不给模板和恢复命令会导致用户无法闭环", "为追踪矩阵 finding、soloforge next 和 audit-design-artifacts 输出模板路径与恢复命令");
|
|
2113
|
+
}
|
|
2104
2114
|
const designPackText = safeRead(path.join(rootDir, "src", "engine", "design_artifact_pack.ts")) ?? "";
|
|
2105
2115
|
if (!designPackText.includes("traceability_matrix") ||
|
|
2106
2116
|
!designPackText.includes("auditDesignImplementationTraceability")) {
|
|
@@ -3066,8 +3076,24 @@ async function checkControlPlaneTrustBehavior(rootDir, hardFail) {
|
|
|
3066
3076
|
}
|
|
3067
3077
|
if (!cliText.includes("仍处于 ${currentTask.status}") ||
|
|
3068
3078
|
!cliText.includes("缺少 design_artifact_pack") ||
|
|
3069
|
-
!cliText.includes("没有受控 SoloForge 任务")
|
|
3070
|
-
|
|
3079
|
+
!cliText.includes("没有受控 SoloForge 任务") ||
|
|
3080
|
+
!cliText.includes("不得取消/归档当前任务后改用 Bash/Edit/Write") ||
|
|
3081
|
+
!cliText.includes("禁止通过 Bash 直接写业务实现文件")) {
|
|
3082
|
+
hardFail("CONTROLLED_IMPLEMENTATION_WRITE_GATE_MISSING", "check-write/check-bash 未覆盖 expanding 卡死、设计产物存在但缺 design_artifact_pack、无受控任务和 Bash 直接编码旁路", ["src/bin/soloforge.ts"], "problem-72", "旧 gate 只在交付层发现非 MCP 来源,未在写入入口阻断真实用户项目旁路", "在 check-write/check-bash 对业务实现文件增加受控任务与设计产物包前置门");
|
|
3083
|
+
}
|
|
3084
|
+
const assetManifestText = safeRead(path.join(rootDir, "src", "engine", "asset_manifest.ts")) ?? "";
|
|
3085
|
+
const workflowRuleText = safeRead(path.join(rootDir, "templates", "knowledge", "rules", "工作流导航契约规则.md")) ?? "";
|
|
3086
|
+
const lifecycleProcedureText = safeRead(path.join(rootDir, "templates", "knowledge", "procedures", "全生命周期工作流导航.md")) ?? "";
|
|
3087
|
+
const antiBypassNeedles = [
|
|
3088
|
+
"不得建议取消任务后直接写",
|
|
3089
|
+
"不得建议“先用 Bash 直接修改业务代码”",
|
|
3090
|
+
"不得手动删除 `.soloforge/state`",
|
|
3091
|
+
"归档后仍必须重新 `sf_classify -> sf_expand`",
|
|
3092
|
+
];
|
|
3093
|
+
const antiBypassText = `${assetManifestText}\n${workflowRuleText}\n${lifecycleProcedureText}`;
|
|
3094
|
+
const missingAntiBypassNeedles = antiBypassNeedles.filter((needle) => !antiBypassText.includes(needle));
|
|
3095
|
+
if (missingAntiBypassNeedles.length > 0) {
|
|
3096
|
+
hardFail("CONTROL_PLANE_BLOCKED_RECOVERY_PROMPT_MISSING", `适配器/知识规则缺少阻断恢复反旁路硬规则: ${missingAntiBypassNeedles.join(", ")}`, ["src/engine/asset_manifest.ts", "templates/knowledge/rules/工作流导航契约规则.md", "templates/knowledge/procedures/全生命周期工作流导航.md"], "problem-72", "运行时 hook 能拦截写入,但模型仍可能口头建议取消任务、Bash 直写或手动清状态", "把阻断恢复反旁路协议注入 adapter workflow 和工作流导航知识资产");
|
|
3071
3097
|
}
|
|
3072
3098
|
}
|
|
3073
3099
|
catch (e) {
|