@tienne/gestalt 0.122.0 → 0.124.0

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 (89) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/plugin/.codex-plugin/plugin.json +1 -1
  3. package/dist/plugin/skills/_shared/pr-base.md +169 -0
  4. package/dist/plugin/skills/_shared/proactive-routing.md +1 -1
  5. package/dist/plugin/skills/jira-create/SKILL.md +39 -4
  6. package/dist/plugin/skills/pr/SKILL.md +32 -12
  7. package/dist/plugin/skills/review/SKILL.md +94 -29
  8. package/dist/plugin/skills/review/references/approve-when-no-blocking.md +7 -0
  9. package/dist/plugin/skills/review/references/post-confirm.md +30 -0
  10. package/dist/plugin/skills/review/references/result-lines.md +32 -0
  11. package/dist/plugin/skills/review/references/user-profile.md +19 -0
  12. package/dist/plugin/skills/review-loop/SKILL.md +83 -20
  13. package/dist/plugin/skills/review-reply/SKILL.md +4 -0
  14. package/dist/plugin/skills/ship/SKILL.md +276 -29
  15. package/dist/src/architecture/ir-schema.d.ts +26 -26
  16. package/dist/src/cli/commands/profile.d.ts +13 -0
  17. package/dist/src/cli/commands/profile.d.ts.map +1 -0
  18. package/dist/src/cli/commands/profile.js +26 -0
  19. package/dist/src/cli/commands/profile.js.map +1 -0
  20. package/dist/src/cli/commands/ship.d.ts +35 -0
  21. package/dist/src/cli/commands/ship.d.ts.map +1 -0
  22. package/dist/src/cli/commands/ship.js +146 -0
  23. package/dist/src/cli/commands/ship.js.map +1 -0
  24. package/dist/src/cli/index.d.ts.map +1 -1
  25. package/dist/src/cli/index.js +52 -0
  26. package/dist/src/cli/index.js.map +1 -1
  27. package/dist/src/core/config.d.ts +12 -12
  28. package/dist/src/core/types.d.ts +64 -0
  29. package/dist/src/core/types.d.ts.map +1 -1
  30. package/dist/src/core/user-profile.d.ts +29 -0
  31. package/dist/src/core/user-profile.d.ts.map +1 -0
  32. package/dist/src/core/user-profile.js +97 -0
  33. package/dist/src/core/user-profile.js.map +1 -0
  34. package/dist/src/digest/blocks.d.ts +34 -34
  35. package/dist/src/digest/comments.d.ts +6 -6
  36. package/dist/src/digest/lens-schema.d.ts +2 -2
  37. package/dist/src/digest/lint-lens-context.d.ts +4 -4
  38. package/dist/src/digest/schema.d.ts +55 -55
  39. package/dist/src/lens/attach.d.ts +10 -10
  40. package/dist/src/mcp/schemas.d.ts +238 -225
  41. package/dist/src/mcp/schemas.d.ts.map +1 -1
  42. package/dist/src/mcp/schemas.js +86 -16
  43. package/dist/src/mcp/schemas.js.map +1 -1
  44. package/dist/src/mcp/tools/review-passthrough.d.ts.map +1 -1
  45. package/dist/src/mcp/tools/review-passthrough.js +61 -2
  46. package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
  47. package/dist/src/mcp/tools/status.d.ts +1 -1
  48. package/dist/src/research/schema.d.ts +66 -66
  49. package/dist/src/research/target.d.ts +6 -6
  50. package/dist/src/review/consensus-input.d.ts +11 -0
  51. package/dist/src/review/consensus-input.d.ts.map +1 -0
  52. package/dist/src/review/consensus-input.js +102 -0
  53. package/dist/src/review/consensus-input.js.map +1 -0
  54. package/dist/src/review/passthrough-engine.d.ts +9 -2
  55. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  56. package/dist/src/review/passthrough-engine.js +58 -10
  57. package/dist/src/review/passthrough-engine.js.map +1 -1
  58. package/dist/src/review/verification.d.ts +48 -7
  59. package/dist/src/review/verification.d.ts.map +1 -1
  60. package/dist/src/review/verification.js +109 -23
  61. package/dist/src/review/verification.js.map +1 -1
  62. package/dist/src/review/verifier-record.d.ts +55 -0
  63. package/dist/src/review/verifier-record.d.ts.map +1 -0
  64. package/dist/src/review/verifier-record.js +228 -0
  65. package/dist/src/review/verifier-record.js.map +1 -0
  66. package/dist/src/ship/checkpoint.d.ts +145 -0
  67. package/dist/src/ship/checkpoint.d.ts.map +1 -0
  68. package/dist/src/ship/checkpoint.js +282 -0
  69. package/dist/src/ship/checkpoint.js.map +1 -0
  70. package/dist/src/ship/ci.d.ts +110 -0
  71. package/dist/src/ship/ci.d.ts.map +1 -0
  72. package/dist/src/ship/ci.js +270 -0
  73. package/dist/src/ship/ci.js.map +1 -0
  74. package/package.json +1 -1
  75. package/plugin/.codex-plugin/plugin.json +1 -1
  76. package/plugin/.mcp.json +1 -1
  77. package/plugin/mcp.json +1 -1
  78. package/plugin/skills/_shared/pr-base.md +169 -0
  79. package/plugin/skills/_shared/proactive-routing.md +1 -1
  80. package/plugin/skills/jira-create/SKILL.md +39 -4
  81. package/plugin/skills/pr/SKILL.md +32 -12
  82. package/plugin/skills/review/SKILL.md +94 -29
  83. package/plugin/skills/review/references/approve-when-no-blocking.md +7 -0
  84. package/plugin/skills/review/references/post-confirm.md +30 -0
  85. package/plugin/skills/review/references/result-lines.md +32 -0
  86. package/plugin/skills/review/references/user-profile.md +19 -0
  87. package/plugin/skills/review-loop/SKILL.md +83 -20
  88. package/plugin/skills/review-reply/SKILL.md +4 -0
  89. package/plugin/skills/ship/SKILL.md +276 -29
@@ -485,8 +485,8 @@ export declare const targetSchema: z.ZodObject<{
485
485
  value: z.ZodString;
486
486
  method: z.ZodEnum<["internal", "proxy", "business", "market", "case", "assumption"]>;
487
487
  }, "strip", z.ZodTypeAny, {
488
- value: string;
489
488
  id: string;
489
+ value: string;
490
490
  evidence: ({
491
491
  type: "capture";
492
492
  captureId: string;
@@ -506,8 +506,8 @@ export declare const targetSchema: z.ZodObject<{
506
506
  basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
507
507
  note?: string | undefined;
508
508
  }, {
509
- value: string;
510
509
  id: string;
510
+ value: string;
511
511
  method: "internal" | "proxy" | "business" | "market" | "case" | "assumption";
512
512
  label: string;
513
513
  basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
@@ -527,8 +527,8 @@ export declare const targetSchema: z.ZodObject<{
527
527
  url: string;
528
528
  })[] | undefined;
529
529
  }>, {
530
- value: string;
531
530
  id: string;
531
+ value: string;
532
532
  evidence: ({
533
533
  type: "capture";
534
534
  captureId: string;
@@ -548,8 +548,8 @@ export declare const targetSchema: z.ZodObject<{
548
548
  basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
549
549
  note?: string | undefined;
550
550
  }, {
551
- value: string;
552
551
  id: string;
552
+ value: string;
553
553
  method: "internal" | "proxy" | "business" | "market" | "case" | "assumption";
554
554
  label: string;
555
555
  basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
@@ -680,8 +680,8 @@ export declare const targetSchema: z.ZodObject<{
680
680
  denominator: string;
681
681
  };
682
682
  steps: {
683
- value: string;
684
683
  id: string;
684
+ value: string;
685
685
  evidence: ({
686
686
  type: "capture";
687
687
  captureId: string;
@@ -779,8 +779,8 @@ export declare const targetSchema: z.ZodObject<{
779
779
  denominator: string;
780
780
  };
781
781
  steps?: {
782
- value: string;
783
782
  id: string;
783
+ value: string;
784
784
  method: "internal" | "proxy" | "business" | "market" | "case" | "assumption";
785
785
  label: string;
786
786
  basis: "absent" | "observation" | "company-statement" | "interpretation" | "unconfirmed";
@@ -0,0 +1,11 @@
1
+ import type { ReviewConsensusInput, ReviewConsensusResult, ReviewResult } from '../core/types.js';
2
+ import { type Result } from '../core/result.js';
3
+ /**
4
+ * review_consensus 입력의 빈 칸을 세션에 남은 review_submit 기록으로 채운다.
5
+ *
6
+ * 메인이 빠뜨리기 쉬운 칸은 대부분 엔진이 이미 아는 값이다. 그걸 이유로 호출을 거부하면 같은
7
+ * 내용을 한 번 더 보내는 왕복만 생긴다. 판정에 쓰이는 값(mergedIssues의 severity, 뺀 이슈의
8
+ * 원본)은 여기서 만들지 않는다. overallApproved는 엔진이 판정한 뒤 따로 넣는다.
9
+ */
10
+ export declare function resolveConsensusInput(input: ReviewConsensusInput, reviewResults: ReviewResult[]): Result<Omit<ReviewConsensusResult, 'overallApproved'>>;
11
+ //# sourceMappingURL=consensus-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consensus-input.d.ts","sourceRoot":"","sources":["../../../src/review/consensus-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAWzD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,EAC3B,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC,CAwCxD"}
@@ -0,0 +1,102 @@
1
+ import { ok, err } from '../core/result.js';
2
+ import { ambiguousSourceMessage, findOriginals, givenReportedBy, hasContent, isUndroppable, pickFillSource, resolveDroppedIssues, } from './verification.js';
3
+ /**
4
+ * review_consensus 입력의 빈 칸을 세션에 남은 review_submit 기록으로 채운다.
5
+ *
6
+ * 메인이 빠뜨리기 쉬운 칸은 대부분 엔진이 이미 아는 값이다. 그걸 이유로 호출을 거부하면 같은
7
+ * 내용을 한 번 더 보내는 왕복만 생긴다. 판정에 쓰이는 값(mergedIssues의 severity, 뺀 이슈의
8
+ * 원본)은 여기서 만들지 않는다. overallApproved는 엔진이 판정한 뒤 따로 넣는다.
9
+ */
10
+ export function resolveConsensusInput(input, reviewResults) {
11
+ const problems = [];
12
+ const mergedIssues = [];
13
+ for (const issue of input.mergedIssues) {
14
+ let reportedBy = givenReportedBy(issue.reportedBy);
15
+ if (reportedBy === undefined) {
16
+ const source = pickFillSource(undefined, findOriginals({ id: issue.id }, reviewResults));
17
+ if (source === 'ambiguous') {
18
+ problems.push(`mergedIssues의 ${ambiguousSourceMessage(issue.id)}.`);
19
+ continue;
20
+ }
21
+ reportedBy = source?.reportedBy;
22
+ }
23
+ if (reportedBy === undefined) {
24
+ problems.push(`mergedIssues의 ${issue.id}: reportedBy가 비었는데 같은 id나 \`<reportedBy>:<원래 id>\` 꼴의 review_submit 원본이 없어 채울 수 없다. 그 의견을 낸 에이전트 이름 하나를 적는다.`);
25
+ continue;
26
+ }
27
+ mergedIssues.push({ ...issue, reportedBy });
28
+ }
29
+ problems.push(...unlinkedUndroppable(mergedIssues, reviewResults));
30
+ const dropped = resolveDroppedIssues(input, reviewResults);
31
+ if (!dropped.ok)
32
+ problems.push(dropped.error.message);
33
+ if (problems.length > 0)
34
+ return err(new Error(problems.join('\n\n')));
35
+ const votes = lastVotes(reviewResults);
36
+ const droppedIssues = dropped.ok ? dropped.value : undefined;
37
+ return ok({
38
+ mergedIssues,
39
+ approvedBy: input.approvedBy ?? votes.filter((v) => v.approved).map((v) => v.agentName),
40
+ blockedBy: input.blockedBy ?? votes.filter((v) => !v.approved).map((v) => v.agentName),
41
+ summary: input.summary !== undefined && hasContent(input.summary)
42
+ ? input.summary
43
+ : countSummary(mergedIssues, droppedIssues?.length ?? 0),
44
+ ...(droppedIssues ? { droppedIssues } : {}),
45
+ });
46
+ }
47
+ const SEVERITY_RANK = { warning: 0, high: 1, critical: 2 };
48
+ /**
49
+ * critical이나 security 원본마다 mergedIssues에 그대로 이어져 있는지 본다. 어긋나면 문구를 돌려준다.
50
+ *
51
+ * 이 검사는 제안 검증 기록과 상관없이 돈다. 기록이 있어도 합의를 비워 보내면 그 원본은 아무
52
+ * 대조도 안 받고 판정에서 사라진다. droppedIssues는 이런 이슈를 못 빼게 막아 둔 자리인데 합의를
53
+ * 비우면 그 금지를 건너뛰게 된다.
54
+ *
55
+ * 이어졌는지만 보면 severity나 category를 낮춰 같은 id로 보내는 길이 열린다. isUndroppable만
56
+ * 보는 것도 모자라다. 그 술어는 critical이거나 security category인 이슈를 모두 통과시켜서
57
+ * security/high를 security/warning으로 낮춘 이슈가 그대로 지나간다. 판정은 critical과 high만
58
+ * 세므로 approve로 뒤집힌다. 그래서 원본에 이어 준 이슈 가운데 critical이나 security이면서
59
+ * severity가 원본 이상인 것이 하나는 남아 있어야 통과시킨다. 검증기는 severity를 바꾸는 자리가
60
+ * 아니라서 revise 판정이어도 예외를 두지 않는다.
61
+ *
62
+ * 같은 리뷰어가 여러 번 냈으면 마지막 제출만 보지 않고 전부 훑는다. 마지막 제출만 보면 이슈를
63
+ * 비운 재제출 하나로 critical 원본이 지워진다. 새 id로 합친 이슈는 원본과 이을 수 없으므로 이
64
+ * 두 종류만 같은 id나 `<reportedBy>:<원래 id>` 꼴로 두게 한다.
65
+ */
66
+ function unlinkedUndroppable(mergedIssues, reviewResults) {
67
+ const linkPairs = mergedIssues.map((issue) => ({
68
+ issue,
69
+ originals: findOriginals(issue, reviewResults),
70
+ }));
71
+ const problems = [];
72
+ for (const result of reviewResults) {
73
+ for (const orig of result.issues) {
74
+ if (!isUndroppable(orig))
75
+ continue;
76
+ const linkedIssues = linkPairs
77
+ .filter((pair) => pair.originals.includes(orig))
78
+ .map((pair) => pair.issue);
79
+ const keptIssue = linkedIssues.some((issue) => isUndroppable(issue) && SEVERITY_RANK[issue.severity] >= SEVERITY_RANK[orig.severity]);
80
+ if (keptIssue)
81
+ continue;
82
+ const originLabel = `${orig.reportedBy}:${orig.id}: ${orig.severity}/${orig.category}`;
83
+ problems.push(linkedIssues.length === 0
84
+ ? `${originLabel} 원본이 mergedIssues에 없다. 같은 id나 \`<reportedBy>:<원래 id>\` 꼴로 mergedIssues에 둔다. critical이나 security 원본은 다른 이슈에 접지 않고 따로 둔다.`
85
+ : `${originLabel} 원본이 mergedIssues에서 ${linkedIssues.map((i) => `${i.severity}/${i.category}`).join(', ')}로 낮아졌다. critical이나 security 원본은 severity는 원본 이상으로 두고 critical이거나 security category인 채로 잇는다.`);
86
+ }
87
+ }
88
+ return problems;
89
+ }
90
+ /** 같은 리뷰어가 두 번 냈으면 마지막 제출을 그 리뷰어의 판정으로 본다. 이슈 대조는 이 규칙을 안 쓴다 */
91
+ function lastVotes(reviewResults) {
92
+ const votes = new Map();
93
+ for (const result of reviewResults)
94
+ votes.set(result.agentName, result.approved);
95
+ return [...votes].map(([agentName, approved]) => ({ agentName, approved }));
96
+ }
97
+ function countSummary(issues, droppedCount) {
98
+ const count = (severity) => issues.filter((i) => i.severity === severity).length;
99
+ const dropped = droppedCount > 0 ? `, 뺀 이슈 ${droppedCount}개` : '';
100
+ return `이슈 ${issues.length}개(critical ${count('critical')}, high ${count('high')}, warning ${count('warning')})${dropped}. 요약이 비어 엔진이 이슈 수로 채웠다.`;
101
+ }
102
+ //# sourceMappingURL=consensus-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consensus-input.js","sourceRoot":"","sources":["../../../src/review/consensus-input.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ReviewSession, ReviewResult, ReviewConsensusResult, ReviewReport, ReviewIssue, ReviewContext, ExecuteSession, AgentDefinition, ContinuityVerdict, ContinuityDriftFinding } from '../core/types.js';
1
+ import type { ReviewSession, ReviewResult, ReviewConsensusInput, ReviewReport, ReviewIssue, ReviewContext, ExecuteSession, AgentDefinition, ContinuityVerdict, ContinuityDriftFinding, ReviewVerifierRecord } from '../core/types.js';
2
2
  import { type Result } from '../core/result.js';
3
3
  import { type ReviewMatchContext } from './agent-matcher.js';
4
4
  import type { EventStore } from '../events/store.js';
@@ -42,7 +42,14 @@ export declare class PassthroughReviewEngine {
42
42
  submittedCount: number;
43
43
  expectedCount: number;
44
44
  }>;
45
- submitConsensus(sessionId: string, consensus: ReviewConsensusResult, continuityVerdict?: ContinuityVerdict): Result<{
45
+ /**
46
+ * 제안 검증 응답을 읽어 세션에 남긴다. 응답을 못 읽어도 거부하지 않는다 — 서브에이전트
47
+ * 실패도 기록으로 남아야 review_publish가 정당한 생략으로 가를 수 있다. 다만 빈 응답은
48
+ * 기록하지 않고 거부한다. 검증기를 안 띄우고 빈 문자열만 넘겨도 실패가 되면 그게 가장 싼
49
+ * 건너뛰기 길이 된다.
50
+ */
51
+ submitVerification(sessionId: string, verifierOutput: string): Result<ReviewVerifierRecord>;
52
+ submitConsensus(sessionId: string, input: ReviewConsensusInput, continuityVerdict?: ContinuityVerdict): Result<{
46
53
  approved: boolean;
47
54
  report: ReviewReport;
48
55
  needsFix: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-engine.d.ts","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"passthrough-engine.d.ts","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,9 @@ import { ReviewReportGenerator } from './report-generator.js';
8
8
  import { logger } from '../core/logger.js';
9
9
  import { EventType } from '../events/types.js';
10
10
  import { isConsensusApproved } from '../local-pr/policy.js';
11
- import { checkDroppedIssues, verificationStats } from './verification.js';
11
+ import { hasContent, verificationStats } from './verification.js';
12
+ import { resolveConsensusInput } from './consensus-input.js';
13
+ import { checkConsensusAgainstVerifier, parseVerifierOutput, stripCodeFences, summarizeVerifierRecord, verifierAtConsensus, } from './verifier-record.js';
12
14
  const MAX_REVIEW_ATTEMPTS = 3;
13
15
  // 매칭 프롬프트로 요구만 하면 호출자가 빼먹어도 그대로 합의까지 간다. 합의 입구에서 막아야 강제가 된다
14
16
  function checkMissingRequiredReviews(session) {
@@ -198,8 +200,35 @@ Review the code changes from your assigned perspective. Focus on issues that mat
198
200
  expectedCount: session.matchedAgents.length,
199
201
  });
200
202
  }
203
+ // ─── review_verify ────────────────────────────────────────────
204
+ /**
205
+ * 제안 검증 응답을 읽어 세션에 남긴다. 응답을 못 읽어도 거부하지 않는다 — 서브에이전트
206
+ * 실패도 기록으로 남아야 review_publish가 정당한 생략으로 가를 수 있다. 다만 빈 응답은
207
+ * 기록하지 않고 거부한다. 검증기를 안 띄우고 빈 문자열만 넘겨도 실패가 되면 그게 가장 싼
208
+ * 건너뛰기 길이 된다.
209
+ */
210
+ submitVerification(sessionId, verifierOutput) {
211
+ const session = this.sessions.get(sessionId);
212
+ if (!session)
213
+ return err(new Error(`Review session not found: ${sessionId}`));
214
+ if (!hasContent(stripCodeFences(verifierOutput))) {
215
+ return err(new Error('검증기 응답이 비었다. suggestion-verifier를 한 번 다시 띄워 그 응답을 넘긴다. ' +
216
+ '두 번째도 비면 그 사실을 적은 글을 넘긴다. 실패로 기록되고 초안 그대로 게시된다.'));
217
+ }
218
+ const record = parseVerifierOutput(verifierOutput, session.reviewResults.length);
219
+ session.verifier = record;
220
+ session.updatedAt = new Date().toISOString();
221
+ logger.info('review.verified', {
222
+ module: 'review',
223
+ sessionId,
224
+ status: record.status,
225
+ failure: record.failure,
226
+ ...summarizeVerifierRecord(record),
227
+ });
228
+ return ok(record);
229
+ }
201
230
  // ─── review_consensus ─────────────────────────────────────────
202
- submitConsensus(sessionId, consensus, continuityVerdict) {
231
+ submitConsensus(sessionId, input, continuityVerdict) {
203
232
  const session = this.sessions.get(sessionId);
204
233
  if (!session)
205
234
  return err(new Error(`Review session not found: ${sessionId}`));
@@ -213,17 +242,36 @@ Review the code changes from your assigned perspective. Focus on issues that mat
213
242
  });
214
243
  return err(new Error(missingProblem));
215
244
  }
216
- const dropProblem = checkDroppedIssues(consensus, session.reviewResults);
217
- if (dropProblem) {
245
+ // 뺀 이슈 검사도 여기서 돈다. 빈 칸을 채우기 전에 원본으로 금지 여부부터 본다
246
+ const resolved = resolveConsensusInput(input, session.reviewResults);
247
+ if (!resolved.ok) {
248
+ logger.warn('review.consensus_rejected', {
249
+ module: 'review',
250
+ sessionId,
251
+ reason: 'unresolvable_input',
252
+ droppedCount: input.droppedIssues?.length ?? 0,
253
+ });
254
+ return err(resolved.error);
255
+ }
256
+ const verifier = verifierAtConsensus(session);
257
+ const verifierProblem = checkConsensusAgainstVerifier(verifier, resolved.value);
258
+ if (verifierProblem) {
218
259
  logger.warn('review.consensus_rejected', {
219
260
  module: 'review',
220
261
  sessionId,
221
- droppedCount: consensus.droppedIssues?.length ?? 0,
262
+ reason: 'verifier_mismatch',
263
+ verifier: verifier.status,
222
264
  });
223
- return err(new Error(dropProblem));
265
+ return err(new Error(verifierProblem));
224
266
  }
267
+ // 두 심급을 합친 경계는 정책이 정한다. review_publish가 PR에 남길 판정도 같은
268
+ // 함수를 부른다 — 따로 세면 파이프라인은 통과인데 PR은 리젝인 상태가 생긴다.
269
+ // 입력의 overallApproved는 쓰지 않는다
270
+ const approved = isConsensusApproved(resolved.value.mergedIssues, continuityVerdict);
271
+ const consensus = { ...resolved.value, overallApproved: approved };
225
272
  session.consensus = consensus;
226
273
  session.continuityVerdict = continuityVerdict;
274
+ session.verifierAtConsensus = verifier;
227
275
  session.status = 'consensus';
228
276
  session.updatedAt = new Date().toISOString();
229
277
  const criticalHighIssues = consensus.mergedIssues.filter((i) => i.severity === 'critical' || i.severity === 'high');
@@ -231,14 +279,11 @@ Review the code changes from your assigned perspective. Focus on issues that mat
231
279
  const defectApproved = criticalHighIssues.length === 0;
232
280
  const continuityBlocks = continuityVerdict ? !continuityVerdict.coherent : false;
233
281
  const escalate = continuityVerdict?.escalate ?? false;
234
- // 두 심급을 합친 경계는 정책이 정한다. review_publish가 PR에 남길 판정도 같은
235
- // 함수를 부른다 — 따로 세면 파이프라인은 통과인데 PR은 리젝인 상태가 생긴다
236
- const approved = isConsensusApproved(consensus.mergedIssues, continuityVerdict);
237
282
  const needsFix = !approved;
238
283
  // review_fix 루프는 결함만 해결한다. 결함이 없고 정합 심급만 Block이면
239
284
  // 자동 수정 대상이 아니므로 canFix=false (escalate 신호로 라우팅).
240
285
  const canFix = !defectApproved && session.currentAttempt < session.maxAttempts;
241
- const report = this.reportGenerator.generate({ ...consensus, overallApproved: approved }, session.currentAttempt + 1, continuityVerdict, session.repoRoot);
286
+ const report = this.reportGenerator.generate(consensus, session.currentAttempt + 1, continuityVerdict, session.repoRoot);
242
287
  session.reports.push(report);
243
288
  const verification = verificationStats(consensus);
244
289
  this.emitEvent(sessionId, EventType.REVIEW_CONSENSUS_COMPLETED, {
@@ -252,6 +297,7 @@ Review the code changes from your assigned perspective. Focus on issues that mat
252
297
  escalate,
253
298
  // 제안 검증이 라운드 수를 줄였는지 나중에 재려고 남긴다
254
299
  verification,
300
+ verifier: verifier.status,
255
301
  });
256
302
  if (approved) {
257
303
  session.status = 'passed';
@@ -410,6 +456,8 @@ Fix these issues while maintaining code integrity. Run structural checks after f
410
456
  session.reviewResults = [];
411
457
  session.consensus = undefined;
412
458
  session.continuityVerdict = undefined;
459
+ session.verifier = undefined;
460
+ session.verifierAtConsensus = undefined;
413
461
  session.status = 'started';
414
462
  session.updatedAt = new Date().toISOString();
415
463
  this.emitEvent(sessionId, EventType.REVIEW_FIX_COMPLETED, {
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-engine.js","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"passthrough-engine.js","sourceRoot":"","sources":["../../../src/review/passthrough-engine.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { ReviewConsensusResult, ReviewIssue, ReviewResult } from '../core/types.js';
1
+ import type { DroppedReviewIssue, ReviewConsensusInput, ReviewConsensusResult, ReviewIssue, ReviewResult } from '../core/types.js';
2
+ import { type Result } from '../core/result.js';
2
3
  /**
3
4
  * 제안 검증이 판정에서 뺄 수 없는 이슈인가.
4
5
  *
@@ -7,8 +8,9 @@ import type { ReviewConsensusResult, ReviewIssue, ReviewResult } from '../core/t
7
8
  * category에 `secur`나 `appsec`이 들어 있으면 자리와 구분자와 상관없이 security로 본다.
8
9
  * 접두만 보면 `app-security`, 콜론만 보면 `security/xss`처럼 모양만 바꾼 이슈가 빠져나간다.
9
10
  * 넓게 막는 쪽이 싸다.
11
+ * 비어 있는 칸은 금지 근거가 못 된다. 그 자리는 review_submit 원본 대조가 맡는다.
10
12
  */
11
- export declare function isUndroppable(issue: Pick<ReviewIssue, 'severity' | 'category'>): boolean;
13
+ export declare function isUndroppable(issue: Partial<Pick<ReviewIssue, 'severity' | 'category'>>): boolean;
12
14
  export interface VerificationStats {
13
15
  keep: number;
14
16
  revise: number;
@@ -18,13 +20,52 @@ export interface VerificationStats {
18
20
  }
19
21
  /** 엔진 이벤트와 consensus 응답, 리포트가 같은 수를 쓰도록 한 자리에서 센다 */
20
22
  export declare function verificationStats(consensus: Pick<ReviewConsensusResult, 'mergedIssues' | 'droppedIssues'>): VerificationStats;
23
+ /** id와 reportedBy는 대소문자와 앞뒤 공백을 빼고 비교한다. 표기만 바꿔 대조를 피하지 못하게 */
24
+ export declare function norm(value: string): string;
21
25
  /**
22
- * droppedIssues가 우회로로 쓰이지 않았는지 본다. 문제가 없으면 null이다.
26
+ * 이슈의 review_submit 원본 후보를 찾는다. 앞에 올수록 더 확실한 후보다.
27
+ *
28
+ * 메인이 id를 고유화하는 꼴(`<reportedBy>:<원래 id>`)과 맞는 원본이 있으면 그것을 본다.
29
+ * 그 접두와 이슈의 reportedBy가 어긋나면 reportedBy 쪽 리뷰어의 같은 id 원본도 후보에 넣는다.
30
+ * 어느 쪽이 맞는지 가릴 수 없으면 둘 다 보는 게 안전해서다.
31
+ * 접두 꼴 원본이 없으면 id가 같은 원본을 reportedBy와 상관없이 전부 후보로 둔다. 병합하면서 대표
32
+ * reportedBy를 바꾸는 일이 흔해서 reportedBy까지 맞추라고 하면 그 자리로 금지를 피할 수 있다.
33
+ */
34
+ export declare function findOriginals(issue: Pick<ReviewIssue, 'id'> & {
35
+ reportedBy?: string;
36
+ }, reviewResults: ReviewResult[]): ReviewIssue[];
37
+ /**
38
+ * 글자나 숫자가 하나라도 있는 값인가. 공백과 제로폭 문자, 한글 채움 문자, 기호만 있는 값은 이유나
39
+ * 증거로 치지 않는다. 검증기 응답이 비었는지 가를 때도 쓴다.
40
+ *
41
+ * 한글 채움 문자는 글자 범주(Lo)라서 정규식만으로는 내용으로 잡히는데 화면에는 안 보인다.
42
+ * 화면에 안 보이게 처리되는 글자(Default_Ignorable_Code_Point)를 먼저 걷어낸다.
43
+ */
44
+ export declare function hasContent(text: string): boolean;
45
+ /**
46
+ * 적어 보낸 reportedBy를 쓸 수 있는 값으로 고른다. 글자나 숫자가 없는 값은 안 적은 것으로 본다.
47
+ * 제로폭 문자만 있는 값이 눈에 안 보이는 작성자로 게시되지 않게 hasContent로 가른다.
48
+ * mergedIssues와 droppedIssues가 같은 규칙으로 채우도록 두 쪽이 이 함수를 같이 쓴다.
49
+ */
50
+ export declare function givenReportedBy(value: string | undefined): string | undefined;
51
+ /**
52
+ * 빈 칸을 채울 review_submit 원본 하나를 고른다.
53
+ *
54
+ * reportedBy를 적었으면 그 리뷰어의 원본만 쓴다. 비웠는데 후보가 여러 리뷰어에 걸쳐 있으면
55
+ * 고르지 않는다. 리뷰어마다 `issue-1` 같은 흔한 id를 쓰면 첫 후보로 채운 작성자와 본문이 다른
56
+ * 리뷰어 것이 된다. 금지 판단은 여기와 상관없이 후보 전체로 한다.
57
+ */
58
+ export declare function pickFillSource(reportedBy: string | undefined, originals: ReviewIssue[]): ReviewIssue | 'ambiguous' | undefined;
59
+ /** 같은 id의 원본이 여러 리뷰어에게 있어 채울 원본을 못 고를 때의 안내 */
60
+ export declare function ambiguousSourceMessage(id: string): string;
61
+ /**
62
+ * droppedIssues의 빈 칸을 원본에서 채우고 우회로로 쓰이지 않았는지 본다.
23
63
  *
24
64
  * 애매하면 거부한다. 후보 원본 중 하나라도 금지 대상이면 막는다.
25
- * 병합하면서 severity나 category를 바꿔 금지를 피하는 길도 막으려고 review_submit 원본과
26
- * 대조한다. 원본 후보가 하나도 없을 때만 통과시킨다. 메인이 id를 다른 꼴로 바꿨을 수도 있는데
27
- * 그걸로 정상 호출까지 막으면 이 검사를 끄자는 쪽으로 가게 된다.
65
+ * 병합하면서 severity나 category를 바꾸거나 비워 금지를 피하는 길도 막으려고 review_submit
66
+ * 원본과 대조한다. 원본 후보가 하나도 없으면 적어 보낸 값으로만 판단한다. 그때 빈 칸이 있으면
67
+ * 채울 근거가 없으니 거부한다. 메인이 id를 다른 꼴로 바꿨을 수도 있는데 칸을 다 적은 정상
68
+ * 호출까지 막으면 이 검사를 끄자는 쪽으로 가게 된다.
28
69
  */
29
- export declare function checkDroppedIssues(consensus: Pick<ReviewConsensusResult, 'mergedIssues' | 'droppedIssues'>, reviewResults: ReviewResult[]): string | null;
70
+ export declare function resolveDroppedIssues(consensus: Pick<ReviewConsensusInput, 'mergedIssues' | 'droppedIssues'>, reviewResults: ReviewResult[]): Result<DroppedReviewIssue[] | undefined>;
30
71
  //# sourceMappingURL=verification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/review/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEzF;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,GAAG,OAAO,CAGxF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,eAAe,CAAC,GACvE,iBAAiB,CAgBnB;AAmCD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,eAAe,CAAC,EACxE,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,GAAG,IAAI,CAuCf"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/review/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,GAAG,OAAO,CAGjG;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,GAAG,eAAe,CAAC,GACvE,iBAAiB,CAgBnB;AAED,+DAA+D;AAC/D,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EACxD,aAAa,EAAE,YAAY,EAAE,GAC5B,WAAW,EAAE,CAaf;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7E;AAWD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,WAAW,EAAE,GACvB,WAAW,GAAG,WAAW,GAAG,SAAS,CAOvC;AAED,+CAA+C;AAC/C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzD;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,eAAe,CAAC,EACvE,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,CAAC,kBAAkB,EAAE,GAAG,SAAS,CAAC,CAwD1C"}