@crown-dev-studios/review-council 0.1.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.
@@ -0,0 +1,401 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'; img-src data:" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+ <title>__TITLE__</title>
8
+ <style>
9
+ :root {
10
+ color-scheme: light;
11
+ --bg: #f6f2ea;
12
+ --surface: #fffdfa;
13
+ --surface-2: #f1e7d8;
14
+ --ink: #1f1a17;
15
+ --muted: #6f6258;
16
+ --line: #d9c5ab;
17
+ --accent: #9c4f21;
18
+ --accent-soft: #f0d5bf;
19
+ --good: #2d6a4f;
20
+ --warn: #9a6b00;
21
+ --bad: #9f2f2f;
22
+ }
23
+
24
+ * {
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ body {
29
+ margin: 0;
30
+ font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif;
31
+ color: var(--ink);
32
+ background:
33
+ radial-gradient(circle at top left, rgba(156, 79, 33, 0.12), transparent 28%),
34
+ linear-gradient(180deg, #fbf7f1 0%, var(--bg) 100%);
35
+ }
36
+
37
+ main {
38
+ max-width: 1440px;
39
+ margin: 0 auto;
40
+ padding: 32px;
41
+ }
42
+
43
+ h1,
44
+ h2,
45
+ h3 {
46
+ margin: 0 0 12px;
47
+ line-height: 1.1;
48
+ }
49
+
50
+ p,
51
+ li,
52
+ td,
53
+ th,
54
+ pre {
55
+ font-size: 15px;
56
+ }
57
+
58
+ .hero {
59
+ display: grid;
60
+ gap: 16px;
61
+ padding: 24px;
62
+ border: 1px solid var(--line);
63
+ border-radius: 20px;
64
+ background: rgba(255, 253, 250, 0.92);
65
+ box-shadow: 0 24px 48px rgba(68, 43, 24, 0.08);
66
+ }
67
+
68
+ .meta {
69
+ color: var(--muted);
70
+ }
71
+
72
+ .chips {
73
+ display: flex;
74
+ flex-wrap: wrap;
75
+ gap: 8px;
76
+ }
77
+
78
+ .chip {
79
+ display: inline-flex;
80
+ align-items: center;
81
+ padding: 6px 10px;
82
+ border-radius: 999px;
83
+ border: 1px solid var(--line);
84
+ background: var(--surface-2);
85
+ font-size: 13px;
86
+ }
87
+
88
+ .grid {
89
+ display: grid;
90
+ gap: 20px;
91
+ margin-top: 24px;
92
+ }
93
+
94
+ .grid.two {
95
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
96
+ }
97
+
98
+ .grid.three {
99
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
100
+ }
101
+
102
+ .card {
103
+ padding: 20px;
104
+ border: 1px solid var(--line);
105
+ border-radius: 18px;
106
+ background: var(--surface);
107
+ }
108
+
109
+ .card h2 {
110
+ font-size: 22px;
111
+ }
112
+
113
+ .status-grid {
114
+ display: grid;
115
+ gap: 12px;
116
+ }
117
+
118
+ .status-row {
119
+ display: flex;
120
+ justify-content: space-between;
121
+ gap: 16px;
122
+ padding: 12px 14px;
123
+ border-radius: 14px;
124
+ background: #fbf7f1;
125
+ border: 1px solid var(--line);
126
+ }
127
+
128
+ .status-row strong {
129
+ font-size: 14px;
130
+ text-transform: uppercase;
131
+ letter-spacing: 0.04em;
132
+ }
133
+
134
+ .status-success {
135
+ color: var(--good);
136
+ }
137
+
138
+ .status-failed {
139
+ color: var(--bad);
140
+ }
141
+
142
+ .status-pending {
143
+ color: var(--warn);
144
+ }
145
+
146
+ table {
147
+ width: 100%;
148
+ border-collapse: collapse;
149
+ }
150
+
151
+ th,
152
+ td {
153
+ border-bottom: 1px solid var(--line);
154
+ padding: 10px 12px;
155
+ text-align: left;
156
+ vertical-align: top;
157
+ }
158
+
159
+ th {
160
+ color: var(--muted);
161
+ font-size: 13px;
162
+ text-transform: uppercase;
163
+ letter-spacing: 0.04em;
164
+ }
165
+
166
+ .severity {
167
+ font-weight: 700;
168
+ }
169
+
170
+ .severity.p1 {
171
+ color: var(--bad);
172
+ }
173
+
174
+ .severity.p2 {
175
+ color: var(--warn);
176
+ }
177
+
178
+ .severity.p3 {
179
+ color: var(--good);
180
+ }
181
+
182
+ pre {
183
+ margin: 0;
184
+ padding: 16px;
185
+ border-radius: 14px;
186
+ overflow-x: auto;
187
+ border: 1px solid var(--line);
188
+ background: #faf4ec;
189
+ white-space: pre-wrap;
190
+ word-break: break-word;
191
+ }
192
+
193
+ .markdown {
194
+ color: var(--ink);
195
+ }
196
+
197
+ .markdown > :first-child {
198
+ margin-top: 0;
199
+ }
200
+
201
+ .markdown > :last-child {
202
+ margin-bottom: 0;
203
+ }
204
+
205
+ .markdown p,
206
+ .markdown ul,
207
+ .markdown ol,
208
+ .markdown blockquote,
209
+ .markdown pre {
210
+ margin: 0 0 14px;
211
+ }
212
+
213
+ .markdown ul,
214
+ .markdown ol {
215
+ padding-left: 22px;
216
+ }
217
+
218
+ .markdown li + li {
219
+ margin-top: 8px;
220
+ }
221
+
222
+ .markdown h1,
223
+ .markdown h2,
224
+ .markdown h3,
225
+ .markdown h4,
226
+ .markdown h5,
227
+ .markdown h6 {
228
+ margin: 22px 0 12px;
229
+ line-height: 1.15;
230
+ }
231
+
232
+ .markdown h1 {
233
+ font-size: 28px;
234
+ }
235
+
236
+ .markdown h2 {
237
+ font-size: 22px;
238
+ }
239
+
240
+ .markdown h3 {
241
+ font-size: 18px;
242
+ }
243
+
244
+ .markdown code {
245
+ padding: 0.15em 0.4em;
246
+ border-radius: 6px;
247
+ background: var(--surface-2);
248
+ border: 1px solid var(--line);
249
+ font-family: "SFMono-Regular", "SF Mono", Consolas, monospace;
250
+ font-size: 0.92em;
251
+ }
252
+
253
+ .markdown pre code {
254
+ display: block;
255
+ padding: 0;
256
+ border: 0;
257
+ background: transparent;
258
+ }
259
+
260
+ .markdown blockquote {
261
+ padding: 12px 16px;
262
+ border-left: 4px solid var(--accent);
263
+ background: #faf1e7;
264
+ color: var(--muted);
265
+ border-radius: 0 12px 12px 0;
266
+ }
267
+
268
+ .markdown a {
269
+ color: var(--accent);
270
+ }
271
+
272
+ .empty {
273
+ color: var(--muted);
274
+ font-style: italic;
275
+ }
276
+
277
+ .status-details {
278
+ display: block;
279
+ font-size: 12px;
280
+ color: var(--muted);
281
+ margin-top: 2px;
282
+ }
283
+
284
+ .diagnostic-block {
285
+ padding: 14px;
286
+ border: 1px solid var(--bad);
287
+ border-radius: 14px;
288
+ background: #fdf2f2;
289
+ margin-bottom: 12px;
290
+ }
291
+
292
+ .diagnostic-block h3 {
293
+ color: var(--bad);
294
+ text-transform: uppercase;
295
+ font-size: 14px;
296
+ letter-spacing: 0.04em;
297
+ }
298
+
299
+ .stderr-excerpt {
300
+ font-size: 13px;
301
+ background: #fff0f0;
302
+ border-color: var(--bad);
303
+ max-height: 300px;
304
+ overflow-y: auto;
305
+ }
306
+
307
+ .log-paths {
308
+ display: flex;
309
+ flex-direction: column;
310
+ gap: 4px;
311
+ margin-top: 8px;
312
+ }
313
+
314
+ .log-paths code {
315
+ font-size: 12px;
316
+ color: var(--muted);
317
+ }
318
+
319
+ @media (max-width: 720px) {
320
+ main {
321
+ padding: 18px;
322
+ }
323
+ }
324
+ </style>
325
+ </head>
326
+ <body>
327
+ <main>
328
+ <section class="hero">
329
+ <div>
330
+ <h1>__HEADING__</h1>
331
+ <p class="meta">__META__</p>
332
+ </div>
333
+ <div class="chips">__CHIPS__</div>
334
+ </section>
335
+
336
+ <section class="grid two">
337
+ <article class="card">
338
+ <h2>Judge Summary</h2>
339
+ <div class="markdown">__JUDGE_SUMMARY__</div>
340
+ </article>
341
+ <article class="card">
342
+ <h2>Stage Status</h2>
343
+ <div class="status-grid">__STATUS_ROWS__</div>
344
+ </article>
345
+ </section>
346
+
347
+ <section class="grid" style="display: __DIAGNOSTICS_DISPLAY__">
348
+ <article class="card">
349
+ <h2>Diagnostics</h2>
350
+ __DIAGNOSTICS_CONTENT__
351
+ </article>
352
+ </section>
353
+
354
+ <section class="grid">
355
+ <article class="card">
356
+ <h2>Candidate Findings</h2>
357
+ <table>
358
+ <thead>
359
+ <tr>
360
+ <th>Reviewer</th>
361
+ <th>Severity</th>
362
+ <th>Title</th>
363
+ <th>Confidence</th>
364
+ <th>Files</th>
365
+ </tr>
366
+ </thead>
367
+ <tbody>__CANDIDATE_ROWS__</tbody>
368
+ </table>
369
+ </article>
370
+ </section>
371
+
372
+ <section class="grid">
373
+ <article class="card">
374
+ <h2>Judge Verdict</h2>
375
+ <table>
376
+ <thead>
377
+ <tr>
378
+ <th>Status</th>
379
+ <th>Title</th>
380
+ <th>Reason</th>
381
+ <th>Priority</th>
382
+ </tr>
383
+ </thead>
384
+ <tbody>__VERDICT_ROWS__</tbody>
385
+ </table>
386
+ </article>
387
+ </section>
388
+
389
+ <section class="grid two">
390
+ <article class="card">
391
+ <h2>Claude Report</h2>
392
+ <div class="markdown">__CLAUDE_REPORT__</div>
393
+ </article>
394
+ <article class="card">
395
+ <h2>Codex Report</h2>
396
+ <div class="markdown">__CODEX_REPORT__</div>
397
+ </article>
398
+ </section>
399
+ </main>
400
+ </body>
401
+ </html>
@@ -0,0 +1,50 @@
1
+ # {{REVIEWER_NAME}} Review Export
2
+
3
+ You are the {{REVIEWER_NAME}} reviewer inside Review Council.
4
+
5
+ ## Target
6
+
7
+ {{TARGET}}
8
+
9
+ ## Review Identity
10
+
11
+ - Review ID: `{{REVIEW_ID}}`
12
+ - Run ID: `{{RUN_ID}}`
13
+
14
+ ## Artifact Directory
15
+
16
+ {{ARTIFACT_DIR}}
17
+
18
+ ## Required Behavior
19
+
20
+ - Review the target thoroughly: bugs, regressions, security issues, performance issues, architecture risks, and missing tests
21
+ - Do not create authoritative files in `todos/`
22
+ - Do not modify code unless explicitly asked elsewhere
23
+ - Keep all raw artifacts inside `{{ARTIFACT_DIR}}`
24
+ - Treat the explicit `review_id` as canonical. Every JSON artifact must include `review_id: "{{REVIEW_ID}}"` and `run_id: "{{RUN_ID}}"`.
25
+
26
+ ## Required Outputs
27
+
28
+ 1. Write a human-readable review to:
29
+ `{{ARTIFACT_DIR}}/report.md`
30
+ 2. Write structured findings JSON matching:
31
+ `{{SCHEMA_PATH}}`
32
+ to:
33
+ `{{ARTIFACT_DIR}}/findings.json`
34
+ 3. Write a completion sentinel to:
35
+ `{{ARTIFACT_DIR}}/done.json`
36
+
37
+ ## done.json Shape
38
+
39
+ ```json
40
+ {
41
+ "review_id": "{{REVIEW_ID}}",
42
+ "run_id": "{{RUN_ID}}",
43
+ "reviewer": "{{REVIEWER_NAME_LOWER}}",
44
+ "status": "complete",
45
+ "completed_at": "ISO-8601",
46
+ "finding_count": 0
47
+ }
48
+ ```
49
+
50
+ If you find no issues, still write all three files with an empty `findings` array.