soloforge 1.1.68 → 1.1.70

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.
Files changed (48) hide show
  1. package/dist/context/adapters/shared/integration_guide.js +1 -1
  2. package/dist/context/templates/observed_consumption.d.ts.map +1 -1
  3. package/dist/context/templates/observed_consumption.js +0 -1
  4. package/dist/context/templates/observed_consumption.js.map +1 -1
  5. package/dist/context/templates/scaffolder.js +6 -7
  6. package/dist/context/templates/scaffolder.js.map +1 -1
  7. package/dist/context/templates/standard_asset_coverage.js +2 -2
  8. package/dist/context/templates/standard_asset_coverage.js.map +1 -1
  9. package/dist/core/adversarial_review_store.d.ts +6 -0
  10. package/dist/core/adversarial_review_store.d.ts.map +1 -1
  11. package/dist/core/adversarial_review_store.js.map +1 -1
  12. package/dist/domain/asset_registry/template_asset_contract_registry.js +5 -5
  13. package/dist/domain/asset_registry/template_asset_contract_registry.js.map +1 -1
  14. package/dist/gate/release/gate_checks/checkMainlineConsumption.d.ts.map +1 -1
  15. package/dist/gate/release/gate_checks/checkMainlineConsumption.js +3 -2
  16. package/dist/gate/release/gate_checks/checkMainlineConsumption.js.map +1 -1
  17. package/dist/gate/scope_controller.d.ts.map +1 -1
  18. package/dist/gate/scope_controller.js +3 -4
  19. package/dist/gate/scope_controller.js.map +1 -1
  20. package/dist/server/tools/sf_doctor.d.ts +7 -0
  21. package/dist/server/tools/sf_doctor.d.ts.map +1 -1
  22. package/dist/server/tools/sf_doctor.js +43 -1
  23. package/dist/server/tools/sf_doctor.js.map +1 -1
  24. package/dist/server/tools/sf_work.d.ts +8 -0
  25. package/dist/server/tools/sf_work.d.ts.map +1 -1
  26. package/dist/server/tools/sf_work.js +87 -12
  27. package/dist/server/tools/sf_work.js.map +1 -1
  28. package/dist/verify/index.d.ts +0 -4
  29. package/dist/verify/index.d.ts.map +1 -1
  30. package/dist/verify/index.js +0 -2
  31. package/dist/verify/index.js.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/verify/audit/code_reviewer.d.ts +0 -78
  34. package/dist/verify/audit/code_reviewer.d.ts.map +0 -1
  35. package/dist/verify/audit/code_reviewer.js +0 -647
  36. package/dist/verify/audit/code_reviewer.js.map +0 -1
  37. package/dist/verify/audit/confidence_scorer.d.ts +0 -65
  38. package/dist/verify/audit/confidence_scorer.d.ts.map +0 -1
  39. package/dist/verify/audit/confidence_scorer.js +0 -73
  40. package/dist/verify/audit/confidence_scorer.js.map +0 -1
  41. package/dist/verify/audit/debt_tracker.d.ts +0 -85
  42. package/dist/verify/audit/debt_tracker.d.ts.map +0 -1
  43. package/dist/verify/audit/debt_tracker.js +0 -244
  44. package/dist/verify/audit/debt_tracker.js.map +0 -1
  45. package/dist/verify/audit/evolver.d.ts +0 -103
  46. package/dist/verify/audit/evolver.d.ts.map +0 -1
  47. package/dist/verify/audit/evolver.js +0 -420
  48. package/dist/verify/audit/evolver.js.map +0 -1
@@ -73,6 +73,13 @@ export interface DoctorReport {
73
73
  overlaps: number;
74
74
  message: string;
75
75
  };
76
+ reviews?: {
77
+ total: number;
78
+ with_reviewer_id: number;
79
+ duplicate_session_reviews: number;
80
+ duplicate_sessions: string[];
81
+ message: string;
82
+ };
76
83
  }
77
84
  /** 项目探针健康(doctor 硬预检:加载错误/依赖缺失 = 需修复项,不降级) */
78
85
  export interface ProbeHealth {
@@ -1 +1 @@
1
- {"version":3,"file":"sf_doctor.d.ts","sourceRoot":"","sources":["../../../src/server/tools/sf_doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAuB/D,0CAA0C;AAC1C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnE,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtG,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IAEzH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9H,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAE1I,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEhF,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IAEhH,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnG;AAED,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gCAAgC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,GAAE,eAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+BpH;AAmDD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvF"}
1
+ {"version":3,"file":"sf_doctor.d.ts","sourceRoot":"","sources":["../../../src/server/tools/sf_doctor.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ import { WaiverStore } from "../../core/waiver_store.js";
19
19
  import { getFileGitHash } from "../../core/git_utils.js";
20
20
  import { aggregateMultiSrcHash } from "../../domain/engine_helpers.js";
21
21
  import { join } from "node:path";
22
- import { existsSync, readdirSync } from "node:fs";
22
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
23
23
  import { execa } from "execa";
24
24
  import { Observer } from "../../core/observer.js";
25
25
  import { ALL_CONTRACTS } from "../../domain/index.js";
@@ -55,6 +55,7 @@ export async function runDoctorCheck(projectRoot, checkType = "full") {
55
55
  const knowledge = checkKnowledge(projectRoot);
56
56
  const probeHealth = await checkProbes(projectRoot);
57
57
  const registryHealth = checkRegistryHealth();
58
+ const reviewsHealth = checkReviews(projectRoot);
58
59
  return {
59
60
  check_type: "full",
60
61
  success: true,
@@ -64,6 +65,7 @@ export async function runDoctorCheck(projectRoot, checkType = "full") {
64
65
  scope: { project_root: scope.project_root, denied_patterns: scope.denied_patterns, message: scope.message },
65
66
  knowledge: { ...knowledge, probe_health: probeHealth },
66
67
  registry: registryHealth,
68
+ reviews: reviewsHealth,
67
69
  };
68
70
  }
69
71
  catch (err) {
@@ -293,4 +295,44 @@ function checkRegistryHealth() {
293
295
  message: `内置规则注册表:${report.total} 个资产,${report.zombies.length} 僵尸,${report.orphans.length} 孤儿,${report.overlaps.length} 重叠`,
294
296
  };
295
297
  }
298
+ /** 检查对抗审查独立性留痕(reviews 的 reviewer_session_id 多轮重复统计——半强制独立 doctor 可追入口)。
299
+ * 纯数据探测:读 .soloforge/reviews/*.json,统计每 review 多轮 reviewer_session_id 重复(疑似同 session 自审,确认偏见风险),不写盘。 */
300
+ function checkReviews(projectRoot) {
301
+ const reviewsDir = join(projectRoot, ".soloforge", "reviews");
302
+ if (!existsSync(reviewsDir)) {
303
+ return { total: 0, with_reviewer_id: 0, duplicate_session_reviews: 0, duplicate_sessions: [], message: "无对抗审查记录" };
304
+ }
305
+ let total = 0;
306
+ let withReviewerId = 0;
307
+ let duplicateReviews = 0;
308
+ const dupSessions = [];
309
+ for (const f of readdirSync(reviewsDir)) {
310
+ if (!f.endsWith(".json"))
311
+ continue;
312
+ let rec;
313
+ try {
314
+ rec = JSON.parse(readFileSync(join(reviewsDir, f), "utf-8"));
315
+ }
316
+ catch {
317
+ continue;
318
+ }
319
+ total++;
320
+ const sessionIds = (rec.rounds ?? []).map((r) => r?.reviewer_session_id).filter((x) => typeof x === "string");
321
+ if (sessionIds.length > 0)
322
+ withReviewerId++;
323
+ const dup = sessionIds.find((s, i) => sessionIds.indexOf(s) !== i);
324
+ if (dup) {
325
+ duplicateReviews++;
326
+ if (!dupSessions.includes(dup))
327
+ dupSessions.push(dup);
328
+ }
329
+ }
330
+ const parts = [`对抗审查记录 ${total} 个`];
331
+ if (total > 0) {
332
+ parts.push(withReviewerId === 0 ? "⚠️ 均未声明 reviewer_session_id(半强制独立无追溯)" : `${withReviewerId} 个声明了 reviewer_session_id`);
333
+ if (duplicateReviews > 0)
334
+ parts.push(`⚠️ ${duplicateReviews} 个多轮 session 重复(疑似同 session 自审,确认偏见风险)`);
335
+ }
336
+ return { total, with_reviewer_id: withReviewerId, duplicate_session_reviews: duplicateReviews, duplicate_sessions: dupSessions, message: parts.join(",") };
337
+ }
296
338
  //# sourceMappingURL=sf_doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sf_doctor.js","sourceRoot":"","sources":["../../../src/server/tools/sf_doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sf_doctor.js","sourceRoot":"","sources":["../../../src/server/tools/sf_doctor.ts"],"names":[],"mappings":"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"}
@@ -254,6 +254,7 @@ export declare function handleAdversarialReview(projectRoot: string, task: TaskC
254
254
  review_mode: string;
255
255
  artifact_count: number;
256
256
  artifacts: string[];
257
+ references: string[];
257
258
  prompt: string;
258
259
  next_step: string;
259
260
  error?: undefined;
@@ -264,6 +265,7 @@ export declare function handleAdversarialReview(projectRoot: string, task: TaskC
264
265
  intersection_findings?: undefined;
265
266
  retained_count?: undefined;
266
267
  completed?: undefined;
268
+ independence_warning?: undefined;
267
269
  rounds_completed?: undefined;
268
270
  };
269
271
  } | {
@@ -278,6 +280,7 @@ export declare function handleAdversarialReview(projectRoot: string, task: TaskC
278
280
  review_mode?: undefined;
279
281
  artifact_count?: undefined;
280
282
  artifacts?: undefined;
283
+ references?: undefined;
281
284
  prompt?: undefined;
282
285
  review_status?: undefined;
283
286
  sample_k?: undefined;
@@ -286,6 +289,7 @@ export declare function handleAdversarialReview(projectRoot: string, task: TaskC
286
289
  intersection_findings?: undefined;
287
290
  retained_count?: undefined;
288
291
  completed?: undefined;
292
+ independence_warning?: undefined;
289
293
  rounds_completed?: undefined;
290
294
  };
291
295
  } | {
@@ -304,11 +308,13 @@ export declare function handleAdversarialReview(projectRoot: string, task: TaskC
304
308
  intersection_findings: ReviewFinding[];
305
309
  retained_count: number;
306
310
  completed: boolean;
311
+ independence_warning: string | undefined;
307
312
  next_step: string;
308
313
  mode?: undefined;
309
314
  review_mode?: undefined;
310
315
  artifact_count?: undefined;
311
316
  artifacts?: undefined;
317
+ references?: undefined;
312
318
  prompt?: undefined;
313
319
  error?: undefined;
314
320
  rounds_completed?: undefined;
@@ -326,12 +332,14 @@ export declare function handleAdversarialReview(projectRoot: string, task: TaskC
326
332
  errors: number;
327
333
  warnings: number;
328
334
  };
335
+ independence_warning: string | undefined;
329
336
  prompt: string;
330
337
  next_step: string;
331
338
  mode?: undefined;
332
339
  review_mode?: undefined;
333
340
  artifact_count?: undefined;
334
341
  artifacts?: undefined;
342
+ references?: undefined;
335
343
  error?: undefined;
336
344
  intersection_count?: undefined;
337
345
  intersection_findings?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"sf_work.d.ts","sourceRoot":"","sources":["../../../src/server/tools/sf_work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAML,KAAK,aAAa,EAGnB,MAAM,wCAAwC,CAAC;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAwC/E,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFrF;AAcD,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAlDV,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiHX;AAED,oBAAoB;AACpB,wBAAsB,SAAS,CAC7B,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkNjC;AAED;;;kFAGkF;AAClF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4ChC;AAED,mCAAmC;AACnC,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsR9B;AA0ED;;;;qDAIqD;AACrD,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHjC"}
1
+ {"version":3,"file":"sf_work.d.ts","sourceRoot":"","sources":["../../../src/server/tools/sf_work.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAML,KAAK,aAAa,EAGnB,MAAM,wCAAwC,CAAC;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAe,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAyC/E,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFrF;AAcD,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAxDsE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuH3F;AAED,oBAAoB;AACpB,wBAAsB,SAAS,CAC7B,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkNjC;AAED;;;kFAGkF;AAClF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4ChC;AAED,mCAAmC;AACnC,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACzC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsR9B;AA0ED;;;;qDAIqD;AACrD,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmIjC"}
@@ -18,7 +18,7 @@ import { createToolRegistrar } from "./middleware.js";
18
18
  import { initializeDomainEngines, ALL_CONTRACTS } from "../../domain/index.js";
19
19
  import { DomainRegistry } from "../../domain/registry.js";
20
20
  import { GateRecordStore } from "../../core/gate_record_store.js";
21
- import { meetsUpstreamCondition } from "../../core/condition_evaluators.js";
21
+ import { meetsArtifactCondition, meetsUpstreamCondition } from "../../core/condition_evaluators.js";
22
22
  import { AdversarialReviewStore, REVIEW_SAMPLE_K, checkSamplingComplete, computeIntersection, countBySeverity, } from "../../core/adversarial_review_store.js";
23
23
  import { isTransitionAllowed, detectLoop } from "../../core/domain_transition.js";
24
24
  import { getGlobArtifactHash } from "../../core/git_utils.js";
@@ -52,6 +52,7 @@ const sfWorkSchema = {
52
52
  round: z.number().optional().describe("对抗审查轮次(1=首轮新建会话;>=2=后续轮,须带 review_id + findings)"),
53
53
  review_id: z.string().optional().describe("对抗审查会话 ID(round>=2 必填,首轮返回)"),
54
54
  findings: z.array(z.any()).optional().describe("对抗审查本轮发现(round>=2 客户端结构化提交:[{severity:'error|warning|info', artifact, location, quote, issue, suggestion}])"),
55
+ reviewer_session_id: z.string().optional().describe("审查者 session/agent 标识(round>=2 声明,半强制独立:每轮传独立 subagent/新 session 的 ID,多轮须不同 + ≠产出 session,引擎留痕可追)"),
55
56
  };
56
57
  // 缓存域引擎注册表(每个 projectRoot 一个)
57
58
  const registryCache = new Map();
@@ -804,6 +805,10 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
804
805
  if (round <= 1) {
805
806
  const mode = artifactKind ? "per_artifact" : "cross_artifact";
806
807
  const artifacts = await collectReviewArtifacts(projectRoot, mode, artifactKind);
808
+ // per 模式收集 target 的承接对照素材(requires 上游 + companion + references)——审查者对照验证承接
809
+ const references = mode === "per_artifact" && artifactKind
810
+ ? collectReviewReferences(artifactKind, task, projectRoot)
811
+ : [];
807
812
  const reviewId = store.generateReviewId();
808
813
  const now = Date.now();
809
814
  const record = {
@@ -812,6 +817,7 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
812
817
  mode,
813
818
  artifact_path: mode === "per_artifact" ? artifactKind : undefined, // per_artifact 模式此字段存 artifact **kind**(非文件路径);④门禁 reviewedKinds 据此比 verified_artifacts.kind——名实澄清(domain/core 审查),改存储格式需同步 ④比较+迁移旧记录
814
819
  artifacts,
820
+ references,
815
821
  rounds: [],
816
822
  total_rounds: 0,
817
823
  completed: false,
@@ -822,7 +828,7 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
822
828
  updated_at: now,
823
829
  };
824
830
  await store.create(record);
825
- const prompt = buildReviewPrompt(artifacts, mode, "");
831
+ const prompt = buildReviewPrompt(artifacts, mode, "", references);
826
832
  return {
827
833
  result: {
828
834
  success: true,
@@ -833,8 +839,9 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
833
839
  review_mode: mode === "per_artifact" ? "per-artifact 单产物深度对抗审查" : "cross-artifact 跨产物一致性对抗审查",
834
840
  artifact_count: artifacts.length,
835
841
  artifacts,
842
+ references,
836
843
  prompt,
837
- next_step: `用独立 session/subagent 执行上述 prompt(勿在产出产物的同一 session 审查,避免确认偏见)。审查完把 findings 结构化带回:sf_work action="adversarial_review" round=2 review_id="${reviewId}" findings=[{severity,artifact,location,quote,issue,suggestion},...]`,
844
+ next_step: `用独立 session/subagent 执行上述 prompt(勿在产出产物的同一 session 审查,避免确认偏见)。审查完把 findings 结构化带回:sf_work action="adversarial_review" round=2 review_id="${reviewId}" reviewer_session_id="<本轮独立 session/agent ID>" findings=[{severity,artifact,location,quote,issue,suggestion},...]`,
838
845
  },
839
846
  };
840
847
  }
@@ -845,11 +852,13 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
845
852
  }
846
853
  const findings = normalizeFindings(args.findings);
847
854
  const { error_count, warning_count } = countBySeverity(findings);
855
+ const reviewerSessionId = args.reviewer_session_id;
848
856
  const roundRecord = {
849
857
  round,
850
858
  findings,
851
859
  error_count,
852
860
  warning_count,
861
+ reviewer_session_id: reviewerSessionId,
853
862
  reviewed_at: Date.now(),
854
863
  };
855
864
  // 原子追加(per-reviewId 锁,防并发 reviewer 覆盖——原 read-push-write 无锁致后者覆盖前者,K-sample 交集算在子集上)
@@ -857,6 +866,14 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
857
866
  if (!record) {
858
867
  return { result: { success: false, error: `review_id ${reviewId} 不存在(可能跨会话丢失)`, next_step: "review_id 跨会话丢失,重新 sf_work action=\"adversarial_review\" round=1(不传 review_id)建新会话" } };
859
868
  }
869
+ // 半强制独立校验:多轮 reviewer_session_id 须不同(声明独立,留痕不阻断——可伪造,纯编排边界,真独立靠客户端配合)
870
+ const sessionIds = record.rounds.map((r) => r.reviewer_session_id).filter((x) => Boolean(x));
871
+ const dup = sessionIds.find((s, i) => sessionIds.indexOf(s) !== i);
872
+ const independence_warning = !reviewerSessionId
873
+ ? "⚠️ 未声明 reviewer_session_id(半强制独立:建议每轮传独立 subagent/session 标识,便于追溯独立性)"
874
+ : dup
875
+ ? `⚠️ 半强制独立告警:reviewer_session_id="${dup}" 在多轮重复,疑似同 session 自审(确认偏见风险)。引擎不验真(纯编排),已留痕可追溯——每轮应用独立 subagent/新 session`
876
+ : undefined;
860
877
  const k = record.sample_k ?? REVIEW_SAMPLE_K;
861
878
  // K 次独立采样完成 → 聚合取交集,达标(findings 留痕不阻断)
862
879
  if (checkSamplingComplete(record.rounds, k)) {
@@ -880,13 +897,14 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
880
897
  intersection_findings: intersection,
881
898
  retained_count: record.retained_findings.length,
882
899
  completed: true,
900
+ independence_warning,
883
901
  next_step: `对抗审查完成(${k} 次独立采样,交集 ${intersection.length} 条发现)。error 留痕不阻断,可继续下一产物或切换域。`,
884
902
  },
885
903
  };
886
904
  }
887
905
  // 未完成 K 轮 → 继续(每轮独立,不注入前轮反馈,保独立性)
888
906
  await store.write(record);
889
- const prompt = buildReviewPrompt(record.artifacts, record.mode, "");
907
+ const prompt = buildReviewPrompt(record.artifacts, record.mode, "", record.references);
890
908
  return {
891
909
  result: {
892
910
  success: true,
@@ -897,19 +915,40 @@ export async function handleAdversarialReview(projectRoot, task, args, _taskCont
897
915
  rounds_completed: record.rounds.length,
898
916
  sample_k: k,
899
917
  round_summary: { errors: error_count, warnings: warning_count },
918
+ independence_warning,
900
919
  prompt,
901
- next_step: `已完成 ${record.rounds.length}/${k} 轮独立采样。用全新独立 session 执行上述 prompt(不参考前轮结论,保持独立性),完成后带回 findings:sf_work action="adversarial_review" round=${round + 1} review_id="${reviewId}" findings=[...]`,
920
+ next_step: `已完成 ${record.rounds.length}/${k} 轮独立采样。用全新独立 session/subagent 执行上述 prompt(不参考前轮结论,保持独立性;传 reviewer_session_id 声明本轮独立 session 标识),完成后带回 findings:sf_work action="adversarial_review" round=${round + 1} review_id="${reviewId}" reviewer_session_id="<本轮独立 session ID>" findings=[...]`,
902
921
  },
903
922
  };
904
923
  }
924
+ /** 解析产物路径模式为实际文件相对路径列表。
925
+ * glob 模式(如 docs/analyze/<端>/pages/<页>-原型说明.md 多端多页)展开为全部匹配文件;
926
+ * 字面路径走 existsSync。照搬 loadUpstreamContent 三目——修原 collectReviewArtifacts 用 existsSync
927
+ * 对含 * 路径恒 false 致 prototype_spec 永不进审查清单的不一致 bug。 */
928
+ function resolveArtifactPaths(projectRoot, pattern) {
929
+ return containsGlob(pattern)
930
+ ? resolveArtifactsByGlob(projectRoot, pattern)
931
+ : (existsSync(join(projectRoot, pattern)) ? [pattern] : []);
932
+ }
933
+ /** 跨域查找产物声明(去重 collectReviewArtifacts / loadUpstreamContent 等 produces.find 内联)。 */
934
+ function findArtifactByKind(kind) {
935
+ for (const c of ALL_CONTRACTS) {
936
+ const a = c.produces.find((p) => p.kind === kind);
937
+ if (a)
938
+ return { contract: c, artifact: a };
939
+ }
940
+ return undefined;
941
+ }
905
942
  /** 收集审查产物:per=指定单产物 / cross=所有域所有已产出 docs/ 产物;二者都额外收集研讨记录(审查充分性维度) */
906
943
  async function collectReviewArtifacts(projectRoot, mode, artifactKind) {
907
944
  const artifacts = [];
908
945
  if (mode === "per_artifact" && artifactKind) {
909
946
  for (const c of ALL_CONTRACTS) {
910
947
  const p = c.produces.find((a) => a.kind === artifactKind);
911
- if (p && p.path_pattern.startsWith("docs/") && existsSync(join(projectRoot, p.path_pattern))) {
912
- artifacts.push(`${p.path_pattern}(${c.name}/${p.kind})`);
948
+ if (p && p.path_pattern.startsWith("docs/")) {
949
+ for (const path of resolveArtifactPaths(projectRoot, p.path_pattern)) {
950
+ artifacts.push(`${path}(${c.name}/${p.kind})`);
951
+ }
913
952
  }
914
953
  }
915
954
  }
@@ -918,8 +957,8 @@ async function collectReviewArtifacts(projectRoot, mode, artifactKind) {
918
957
  for (const p of c.produces) {
919
958
  if (!p.path_pattern.startsWith("docs/"))
920
959
  continue;
921
- if (existsSync(join(projectRoot, p.path_pattern))) {
922
- artifacts.push(`${p.path_pattern}(${c.name}/${p.kind})`);
960
+ for (const path of resolveArtifactPaths(projectRoot, p.path_pattern)) {
961
+ artifacts.push(`${path}(${c.name}/${p.kind})`);
923
962
  }
924
963
  }
925
964
  }
@@ -928,6 +967,38 @@ async function collectReviewArtifacts(projectRoot, mode, artifactKind) {
928
967
  await collectDeliberationRecords(projectRoot, artifacts);
929
968
  return artifacts;
930
969
  }
970
+ /** per 模式收集 target 产物的承接对照素材(requires 上游 + companion_files + references)。
971
+ * 审查者据此对照验证 target 是否真承接上游意图——**勿审素材本身**(承接是关系判断,需两端对照)。
972
+ * requires.when 用 meetsArtifactCondition 评估(scope 缺失=false:旧任务/无 scope 不带条件上游,
973
+ * 与 observer/design engine 同源)。路径走 resolveArtifactPaths 展开 glob。 */
974
+ function collectReviewReferences(target, task, projectRoot) {
975
+ const found = findArtifactByKind(target);
976
+ if (!found)
977
+ return [];
978
+ const { artifact } = found;
979
+ const refs = [];
980
+ for (const req of artifact.requires ?? []) {
981
+ if (!meetsArtifactCondition({ condition: req.when }, task.scope))
982
+ continue;
983
+ const up = findArtifactByKind(req.kind);
984
+ if (!up)
985
+ continue;
986
+ for (const path of resolveArtifactPaths(projectRoot, up.artifact.path_pattern)) {
987
+ refs.push(`${path}(上游·承接对照)`);
988
+ }
989
+ }
990
+ for (const comp of artifact.companion_files ?? []) {
991
+ for (const path of resolveArtifactPaths(projectRoot, comp)) {
992
+ refs.push(`${path}(附件·对照)`);
993
+ }
994
+ }
995
+ for (const ref of artifact.references ?? []) {
996
+ for (const path of resolveArtifactPaths(projectRoot, ref)) {
997
+ refs.push(`${path}(引用·对照)`);
998
+ }
999
+ }
1000
+ return refs;
1001
+ }
931
1002
  /** 扫描 docs/deliberation/ 收集研讨记录(条件触发的研讨留痕,cross 审查复核充分性) */
932
1003
  async function collectDeliberationRecords(projectRoot, artifacts) {
933
1004
  const { readdirSync, statSync } = await import("node:fs");
@@ -951,7 +1022,7 @@ async function collectDeliberationRecords(projectRoot, artifacts) {
951
1022
  /** 组装多利益方独立对抗审查 prompt。
952
1023
  * 5 方(用户/攻击者/维护者/性能/合规)各自独立目标函数,审查前不得互参,最后交叉汇总。
953
1024
  * K 次独立采样语义写进 prompt:每轮独立不互参,完成后取多数交集。 */
954
- function buildReviewPrompt(artifacts, mode, prevFeedback) {
1025
+ function buildReviewPrompt(artifacts, mode, prevFeedback, references) {
955
1026
  const modeLabel = mode === "per_artifact" ? "per-artifact 单产物深度" : "cross-artifact 跨产物一致性";
956
1027
  const extraDim = mode === "cross_artifact"
957
1028
  ? `### 跨产物一致性(cross 专项)
@@ -963,7 +1034,11 @@ function buildReviewPrompt(artifacts, mode, prevFeedback) {
963
1034
  - **研讨记录充分性**:复杂产物的研讨记录(docs/deliberation/)若全是"无疑问一行举证"——质疑:这个点真无疑问吗?产出是否真承接研讨结论?`
964
1035
  : `### 单产物内部深度(per 专项)
965
1036
  - 该产物内部逻辑自洽、章节完整、无空章节/TODO/占位符
966
- - 按产物类型重点关注:API 文档→字段映射与 schema 对齐;架构→决策依据/回滚/兼容;测试→REQ 覆盖/可执行性`;
1037
+ - 按产物类型重点关注:API 文档→字段映射与 schema 对齐;架构→决策依据/回滚/兼容;测试→REQ 覆盖/可执行性
1038
+ - **承接对照**:对照下方"承接对照素材"验证 target 是否真承接上游意图(需求覆盖 / 原型 UI 约束 / 数据契约 / 附件一致),勿审素材本身`;
1039
+ const referencesSection = references && references.length > 0
1040
+ ? `\n## 承接对照素材(用于验证承接,**勿审素材本身**)\n对照下列上游 / 附件 / 引用,验证 target 是否真承接(未承接 / 承接错位 / 凭空发挥 → 记 error)。**不要挑这些素材自身的毛病**——它们各自的 per 审查负责。\n${references.map((r) => `- \`${r}\``).join("\n")}\n`
1041
+ : "";
967
1042
  const feedbackSection = prevFeedback
968
1043
  ? `\n## ⚠️ 上轮审查发现(必须先验证是否已修复,再继续找新问题)\n${prevFeedback}\n`
969
1044
  : "";
@@ -973,7 +1048,7 @@ function buildReviewPrompt(artifacts, mode, prevFeedback) {
973
1048
 
974
1049
  ## 审查范围
975
1050
  ${artifacts.length > 0 ? artifacts.map((a) => `- \`${a}\``).join("\n") : "(暂无已产出产物,先产出再审查,本轮返回空 findings)"}
976
-
1051
+ ${referencesSection}
977
1052
  ## 多利益方独立对抗(每方独立审查,审查前不得参考他方结论,最后才交叉汇总)
978
1053
 
979
1054
  ### 用户方审查