arcane-cli 1.15.0 → 1.16.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.
@@ -1,4 +1,4 @@
1
- <!-- @codemagician/arcane-ui v2.10.0 -- SEE LICENSE IN LICENSE. Generated by scripts/build-report-template.tsx. Do not edit by hand. -->
1
+ <!-- @codemagician/arcane-ui v2.15.0 -- SEE LICENSE IN LICENSE. Generated by scripts/build-report-template.tsx. Do not edit by hand. -->
2
2
  <!doctype html>
3
3
  <html lang="en">
4
4
  <head>
@@ -7,7 +7,7 @@
7
7
  <title>{{masthead.title}}</title>
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com">
9
9
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@500;600;700&family=Rajdhani:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap">
10
- <style>:root{--cat-platform:#7fdfff;--cat-docs:#aac0d6;--cat-process:#c3d97a;--cat-fix:#ff7a6b;--cat-decision:#ffb547;--cat-governance:#8ab4ff;--cat-feature:#5cf2a4;--cat-spell:#c9a2ff;--ink-60:#9fb8d6;--f-display:'Chakra Petch', 'Saira Condensed', system-ui, sans-serif;--f-mono:'JetBrains Mono', ui-monospace, monospace;--ink-100:#ffffff;--accent:#ffffff;--ink-50:#7c95b5;--ink-70:#aac0d6;--r-corner:var(--r-chamfer);--r-chamfer:2px;--bg-1:#060708;--ink-30:#4f6a8a;--signal-info:#7fdfff;--signal-alert:#ff3a3a;--signal-warn:#ffb547;--signal-ok:#5cf2a4;--stroke-hair:.5px;--ink-10:#1d2a3d;--ink-80:#c8d5e6;--f-ui:'Rajdhani', 'Chakra Petch', system-ui, sans-serif;--ink-90:#e4eaf0;--bg:#000000;--ink-15:#2a3e58}@media (prefers-color-scheme: light){:root{--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--ink-100:#070c14;--accent:#595959;--ink-50:#435b78;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-30:#8aaac8;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-10:#cddae8;--ink-80:#1f2f46;--ink-90:#141e2e;--bg:#f0f4f8;--ink-15:#bdd0e2}}@media print{:root{--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--ink-100:#070c14;--accent:#595959;--ink-50:#435b78;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-30:#8aaac8;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-10:#cddae8;--ink-80:#1f2f46;--ink-90:#141e2e;--bg:#f0f4f8;--ink-15:#bdd0e2}}:root[data-theme="dark"]{--cat-platform:#7fdfff;--cat-docs:#aac0d6;--cat-process:#c3d97a;--cat-fix:#ff7a6b;--cat-decision:#ffb547;--cat-governance:#8ab4ff;--cat-feature:#5cf2a4;--cat-spell:#c9a2ff;--ink-60:#9fb8d6;--ink-100:#ffffff;--accent:#ffffff;--ink-50:#7c95b5;--ink-70:#aac0d6;--bg-1:#060708;--ink-30:#4f6a8a;--signal-info:#7fdfff;--signal-alert:#ff3a3a;--signal-warn:#ffb547;--signal-ok:#5cf2a4;--ink-10:#1d2a3d;--ink-80:#c8d5e6;--ink-90:#e4eaf0;--bg:#000000;--ink-15:#2a3e58}:root[data-theme="light"]{--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--ink-100:#070c14;--accent:#595959;--ink-50:#435b78;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-30:#8aaac8;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-10:#cddae8;--ink-80:#1f2f46;--ink-90:#141e2e;--bg:#f0f4f8;--ink-15:#bdd0e2}:root:has(#arcane-report-theme-dark:checked){--cat-platform:#7fdfff;--cat-docs:#aac0d6;--cat-process:#c3d97a;--cat-fix:#ff7a6b;--cat-decision:#ffb547;--cat-governance:#8ab4ff;--cat-feature:#5cf2a4;--cat-spell:#c9a2ff;--ink-60:#9fb8d6;--ink-100:#ffffff;--accent:#ffffff;--ink-50:#7c95b5;--ink-70:#aac0d6;--bg-1:#060708;--ink-30:#4f6a8a;--signal-info:#7fdfff;--signal-alert:#ff3a3a;--signal-warn:#ffb547;--signal-ok:#5cf2a4;--ink-10:#1d2a3d;--ink-80:#c8d5e6;--ink-90:#e4eaf0;--bg:#000000;--ink-15:#2a3e58}:root:has(#arcane-report-theme-light:checked){--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--ink-100:#070c14;--accent:#595959;--ink-50:#435b78;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-30:#8aaac8;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-10:#cddae8;--ink-80:#1f2f46;--ink-90:#141e2e;--bg:#f0f4f8;--ink-15:#bdd0e2}@layer arcane-ui{.arc-badge[data-variant="pill"] {
10
+ <style>:root{--cat-platform:#7fdfff;--cat-docs:#aac0d6;--cat-process:#c3d97a;--cat-fix:#ff7a6b;--cat-decision:#ffb547;--cat-governance:#8ab4ff;--cat-feature:#5cf2a4;--cat-spell:#c9a2ff;--ink-60:#9fb8d6;--f-display:'Chakra Petch', 'Saira Condensed', system-ui, sans-serif;--bg:#000000;--r-corner:var(--r-chamfer);--r-chamfer:2px;--ink-30:#4f6a8a;--ink-10:#1d2a3d;--ink-70:#aac0d6;--f-mono:'JetBrains Mono', ui-monospace, monospace;--bg-1:#060708;--ink-15:#2a3e58;--ink-50:#7c95b5;--ink-90:#e4eaf0;--signal-info:#7fdfff;--signal-alert:#ff3a3a;--signal-warn:#ffb547;--signal-ok:#5cf2a4;--f-ui:'Rajdhani', 'Chakra Petch', system-ui, sans-serif;--ink-80:#c8d5e6;--accent:#ffffff;--ink-100:#ffffff;--stroke-hair:.5px}@media (prefers-color-scheme: light){:root{--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--bg:#f0f4f8;--ink-30:#8aaac8;--ink-10:#cddae8;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-15:#bdd0e2;--ink-50:#435b78;--ink-90:#141e2e;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-80:#1f2f46;--accent:#595959;--ink-100:#070c14}}@media print{:root{--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--bg:#f0f4f8;--ink-30:#8aaac8;--ink-10:#cddae8;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-15:#bdd0e2;--ink-50:#435b78;--ink-90:#141e2e;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-80:#1f2f46;--accent:#595959;--ink-100:#070c14}}:root[data-theme="dark"]{--cat-platform:#7fdfff;--cat-docs:#aac0d6;--cat-process:#c3d97a;--cat-fix:#ff7a6b;--cat-decision:#ffb547;--cat-governance:#8ab4ff;--cat-feature:#5cf2a4;--cat-spell:#c9a2ff;--ink-60:#9fb8d6;--bg:#000000;--ink-30:#4f6a8a;--ink-10:#1d2a3d;--ink-70:#aac0d6;--bg-1:#060708;--ink-15:#2a3e58;--ink-50:#7c95b5;--ink-90:#e4eaf0;--signal-info:#7fdfff;--signal-alert:#ff3a3a;--signal-warn:#ffb547;--signal-ok:#5cf2a4;--ink-80:#c8d5e6;--accent:#ffffff;--ink-100:#ffffff}:root[data-theme="light"]{--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--bg:#f0f4f8;--ink-30:#8aaac8;--ink-10:#cddae8;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-15:#bdd0e2;--ink-50:#435b78;--ink-90:#141e2e;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-80:#1f2f46;--accent:#595959;--ink-100:#070c14}:root:has(#arcane-report-theme-dark:checked){--cat-platform:#7fdfff;--cat-docs:#aac0d6;--cat-process:#c3d97a;--cat-fix:#ff7a6b;--cat-decision:#ffb547;--cat-governance:#8ab4ff;--cat-feature:#5cf2a4;--cat-spell:#c9a2ff;--ink-60:#9fb8d6;--bg:#000000;--ink-30:#4f6a8a;--ink-10:#1d2a3d;--ink-70:#aac0d6;--bg-1:#060708;--ink-15:#2a3e58;--ink-50:#7c95b5;--ink-90:#e4eaf0;--signal-info:#7fdfff;--signal-alert:#ff3a3a;--signal-warn:#ffb547;--signal-ok:#5cf2a4;--ink-80:#c8d5e6;--accent:#ffffff;--ink-100:#ffffff}:root:has(#arcane-report-theme-light:checked){--cat-platform:#0d6179;--cat-docs:#3d5578;--cat-process:#50600f;--cat-fix:#a42f26;--cat-decision:#844c00;--cat-governance:#2856ad;--cat-feature:#136640;--cat-spell:#6b3fbf;--ink-60:#3d5578;--bg:#f0f4f8;--ink-30:#8aaac8;--ink-10:#cddae8;--ink-70:#2e4260;--bg-1:#e4eaef;--ink-15:#bdd0e2;--ink-50:#435b78;--ink-90:#141e2e;--signal-info:#006181;--signal-alert:#b70000;--signal-warn:#824d00;--signal-ok:#086736;--ink-80:#1f2f46;--accent:#595959;--ink-100:#070c14}@layer arcane-ui{.arc-badge[data-variant="pill"] {
11
11
  display: inline-flex;
12
12
  align-items: center;
13
13
  gap: 6px;
@@ -127,9 +127,507 @@ letter-spacing: .18em;
127
127
  text-transform: uppercase;
128
128
  color: var(--ink-60);
129
129
  margin-top: 4px;
130
+ }
131
+ .arc-cast__title {
132
+ font-family: var(--f-mono);
133
+ font-size: 10px;
134
+ letter-spacing: .12em;
135
+ text-transform: uppercase;
136
+ color: var(--ink-50);
137
+ margin: 0 0 8px;
138
+ }
139
+ .arc-cast__list {
140
+ display: flex;
141
+ flex-direction: column;
142
+ gap: 4px;
143
+ font-family: var(--f-mono);
144
+ font-size: 11px;
145
+ color: var(--ink-70);
146
+ }
147
+ .arc-cast__row {
148
+ display: flex;
149
+ justify-content: space-between;
150
+ gap: 12px;
151
+ max-width: 220px;
152
+ }
153
+ .arc-cast__commits {
154
+ color: var(--ink-50);
155
+ font-variant-numeric: tabular-nums;
156
+ }
157
+ .arc-category-icons__sprite {
158
+ position: absolute;
159
+ width: 0;
160
+ height: 0;
161
+ }
162
+ .arc-category-legend {
163
+ display: flex;
164
+ flex-wrap: wrap;
165
+ gap: 8px 16px;
166
+ padding: 12px 0;
167
+ border-top: 1px solid var(--ink-10);
168
+ border-bottom: 1px solid var(--ink-10);
169
+ margin-bottom: 26px;
170
+ }
171
+ .arc-category-legend__item {
172
+ display: inline-flex;
173
+ align-items: center;
174
+ gap: 6px;
175
+ font-family: var(--f-mono);
176
+ font-size: 10px;
177
+ letter-spacing: .1em;
178
+ text-transform: uppercase;
179
+ color: var(--ink-50);
180
+ }
181
+ .arc-category-legend__icon[data-tone] {
182
+ --arc-category-legend-tone: var(--arc-category-legend-cat);
183
+ color: var(--arc-category-legend-tone);
184
+ }
185
+ .arc-category-legend__icon[data-tone="spell"] { --arc-category-legend-tone: var(--cat-spell); }
186
+ .arc-category-legend__icon[data-tone="feature"] { --arc-category-legend-tone: var(--cat-feature); }
187
+ .arc-category-legend__icon[data-tone="governance"] { --arc-category-legend-tone: var(--cat-governance); }
188
+ .arc-category-legend__icon[data-tone="decision"] { --arc-category-legend-tone: var(--cat-decision); }
189
+ .arc-category-legend__icon[data-tone="fix"] { --arc-category-legend-tone: var(--cat-fix); }
190
+ .arc-category-legend__icon[data-tone="process"] { --arc-category-legend-tone: var(--cat-process); }
191
+ .arc-category-legend__icon[data-tone="docs"] { --arc-category-legend-tone: var(--cat-docs); }
192
+ .arc-category-legend__icon[data-tone="platform"] { --arc-category-legend-tone: var(--cat-platform); }
193
+ .arc-corrections {
194
+ border: 1px solid var(--ink-15);
195
+ border-radius: var(--r-corner);
196
+ background: var(--bg-1);
197
+ padding: 14px 16px;
198
+ margin-bottom: 18px;
199
+ }
200
+ .arc-corrections__head {
201
+ display: flex;
202
+ align-items: baseline;
203
+ gap: 10px;
204
+ margin-bottom: 8px;
205
+ }
206
+ .arc-corrections__title {
207
+ font-family: var(--f-display);
208
+ font-weight: 600;
209
+ font-size: 12px;
210
+ letter-spacing: .04em;
211
+ text-transform: uppercase;
212
+ color: var(--ink-90);
213
+ margin: 0;
214
+ }
215
+ .arc-corrections__summary {
216
+ font-family: var(--f-mono);
217
+ font-size: 11px;
218
+ color: var(--ink-50);
219
+ }
220
+ .arc-corrections__scope {
221
+ font-family: var(--f-ui);
222
+ font-size: 14px;
223
+ line-height: 1.45;
224
+ color: var(--ink-60);
225
+ max-width: 62ch;
226
+ margin-bottom: 12px;
227
+ }
228
+ .arc-corrections__highlights {
229
+ display: flex;
230
+ flex-direction: column;
231
+ gap: 10px;
232
+ border-top: 1px solid var(--ink-10);
233
+ padding-top: 12px;
234
+ }
235
+ .arc-corrections__highlight {
236
+ display: grid;
237
+ grid-template-columns: 84px 1fr;
238
+ gap: 12px;
239
+ align-items: baseline;
240
+ }
241
+ .arc-corrections__tag {
242
+ font-family: var(--f-mono);
243
+ font-size: 10px;
244
+ letter-spacing: .1em;
245
+ text-transform: uppercase;
246
+ color: var(--signal-warn);
247
+ }
248
+ .arc-corrections__highlight-title {
249
+ font-family: var(--f-display);
250
+ font-weight: 600;
251
+ font-size: 12px;
252
+ letter-spacing: .02em;
253
+ color: var(--ink-90);
254
+ margin-bottom: 3px;
255
+ }
256
+ .arc-corrections__description {
257
+ font-family: var(--f-ui);
258
+ font-size: 14px;
259
+ line-height: 1.45;
260
+ color: var(--ink-60);
261
+ font-style: normal;
262
+ max-width: 62ch;
263
+ }
264
+ .arc-corrections__description[data-state="unwritten"] {
265
+ color: var(--ink-50);
266
+ font-style: italic;
267
+ }
268
+ .arc-ledger-list {
269
+ list-style: none;
270
+ margin: 0;
271
+ padding: 0;
272
+ }
273
+ .arc-ledger-list__item {
274
+ border-bottom: 1px solid var(--ink-10);
275
+ }
276
+ .arc-ledger-list__item[data-alt] {
277
+ background: var(--bg-1);
278
+ }
279
+ .arc-ledger-list__item[data-last] {
280
+ border-bottom: none;
281
+ }
282
+ .arc-ledger-row {
283
+ display: grid;
284
+ grid-template-columns: 68px 1fr 128px;
285
+ gap: 14px;
286
+ padding: 13px 14px;
287
+ align-items: start;
288
+ }
289
+ .arc-ledger-row__id {
290
+ font-family: var(--f-mono);
291
+ font-size: 11px;
292
+ color: var(--ink-50);
293
+ }
294
+ .arc-ledger-row__id[href] {
295
+ color: var(--accent);
296
+ }
297
+ .arc-ledger-row__title {
298
+ font-family: var(--f-display);
299
+ font-weight: 600;
300
+ font-size: 13px;
301
+ letter-spacing: .03em;
302
+ text-transform: uppercase;
303
+ color: var(--ink-90);
304
+ margin-bottom: 4px;
305
+ }
306
+ .arc-ledger-row__description {
307
+ font-family: var(--f-ui);
308
+ font-size: 14px;
309
+ line-height: 1.45;
310
+ color: var(--ink-60);
311
+ font-style: normal;
312
+ max-width: 58ch;
313
+ }
314
+ .arc-ledger-row__description[data-state="unwritten"] {
315
+ color: var(--ink-50);
316
+ font-style: italic;
317
+ }
318
+ .arc-ledger-row > .arc-badge {
319
+ justify-self: end;
320
+ }
321
+ .arc-needs-you {
322
+ margin-bottom: 26px;
323
+ }
324
+ .arc-needs-you__head {
325
+ display: flex;
326
+ align-items: baseline;
327
+ gap: 10px;
328
+ margin-bottom: 8px;
329
+ }
330
+ .arc-needs-you__title {
331
+ font-family: var(--f-display);
332
+ font-weight: 600;
333
+ font-size: 12px;
334
+ letter-spacing: .04em;
335
+ text-transform: uppercase;
336
+ color: var(--ink-90);
337
+ margin: 0;
338
+ }
339
+ .arc-needs-you__count {
340
+ font-family: var(--f-mono);
341
+ font-size: 11px;
342
+ color: var(--ink-50);
343
+ }
344
+ .arc-needs-you__list {
345
+ list-style: none;
346
+ margin: 0;
347
+ padding: 0;
348
+ display: flex;
349
+ flex-direction: column;
350
+ gap: 8px;
351
+ }
352
+ .arc-needs-you__item {
353
+ border: 1px solid var(--ink-15);
354
+ border-left: 2px solid var(--signal-warn);
355
+ border-radius: var(--r-corner);
356
+ background: var(--bg-1);
357
+ padding: 12px 16px;
358
+ }
359
+ .arc-needs-you__link {
360
+ color: var(--accent);
361
+ }
362
+ .arc-needs-you__text {
363
+ color: var(--ink-90);
364
+ }
365
+ .arc-needs-you__empty {
366
+ border: 1px solid var(--ink-15);
367
+ border-left: 2px solid var(--signal-ok);
368
+ border-radius: var(--r-corner);
369
+ background: var(--bg-1);
370
+ padding: 12px 16px;
371
+ display: flex;
372
+ align-items: center;
373
+ gap: 10px;
374
+ }
375
+ .arc-needs-you__dot {
376
+ display: inline-block;
377
+ width: 6px;
378
+ height: 6px;
379
+ border-radius: 50%;
380
+ background: var(--signal-ok);
381
+ }
382
+ .arc-needs-you__empty-label {
383
+ font-family: var(--f-display);
384
+ font-size: 13px;
385
+ letter-spacing: .04em;
386
+ text-transform: uppercase;
387
+ color: var(--signal-ok);
388
+ }
389
+ .arc-parked {
390
+ border: 1px solid var(--ink-15);
391
+ border-radius: var(--r-corner);
392
+ background: var(--bg);
393
+ padding: 14px 16px;
394
+ margin-bottom: 26px;
395
+ }
396
+ .arc-parked__header {
397
+ display: flex;
398
+ align-items: baseline;
399
+ gap: 10px;
400
+ margin-bottom: 10px;
401
+ }
402
+ .arc-parked__heading {
403
+ font-family: var(--f-display);
404
+ font-weight: 600;
405
+ font-size: 12px;
406
+ letter-spacing: .04em;
407
+ text-transform: uppercase;
408
+ color: var(--ink-90);
409
+ margin: 0;
410
+ }
411
+ .arc-parked__count {
412
+ font-family: var(--f-mono);
413
+ font-size: 11px;
414
+ color: var(--ink-50);
415
+ }
416
+ .arc-parked__list {
417
+ display: grid;
418
+ grid-template-columns: 1fr 1fr;
419
+ gap: 8px 24px;
420
+ }
421
+ .arc-parked__item {
422
+ display: grid;
423
+ grid-template-columns: 8px 1fr;
424
+ gap: 10px;
425
+ align-items: baseline;
426
+ font-family: var(--f-ui);
427
+ font-size: 13px;
428
+ line-height: 1.4;
429
+ color: var(--ink-60);
430
+ }
431
+ .arc-parked__dash {
432
+ width: 8px;
433
+ height: 1px;
434
+ background: var(--ink-30);
435
+ align-self: center;
436
+ }
437
+ .arc-parked__title {
438
+ color: var(--ink-80);
439
+ font-weight: 600;
440
+ }
441
+ .arc-report-masthead__top {
442
+ display: flex;
443
+ align-items: baseline;
444
+ gap: 12px;
445
+ margin-bottom: 16px;
446
+ }
447
+ .arc-report-masthead__label {
448
+ font-family: var(--f-mono);
449
+ font-size: 10px;
450
+ letter-spacing: .12em;
451
+ text-transform: uppercase;
452
+ color: var(--ink-50);
453
+ }
454
+ .arc-report-masthead__rule {
455
+ flex-grow: 1;
456
+ height: 1px;
457
+ background: var(--ink-10);
458
+ }
459
+ .arc-report-masthead__title {
460
+ font-family: var(--f-display);
461
+ font-weight: 600;
462
+ font-size: 30px;
463
+ line-height: 1.15;
464
+ letter-spacing: .04em;
465
+ text-transform: uppercase;
466
+ color: var(--ink-90);
467
+ margin: 0 0 10px;
468
+ max-width: 24ch;
469
+ }
470
+ .arc-report-masthead__dek {
471
+ font-family: var(--f-ui);
472
+ font-size: 15px;
473
+ color: var(--ink-60);
474
+ margin: 0 0 14px;
475
+ max-width: 62ch;
476
+ }
477
+ .arc-report-masthead__meta {
478
+ display: flex;
479
+ flex-wrap: wrap;
480
+ gap: 6px 18px;
481
+ font-family: var(--f-mono);
482
+ font-size: 11px;
483
+ color: var(--ink-70);
484
+ margin-bottom: 26px;
485
+ }
486
+ .arc-report-masthead__key {
487
+ color: var(--ink-50);
488
+ }
489
+ .arc-report-masthead__status[data-tone="ok"] { color: var(--signal-ok); }
490
+ .arc-report-masthead__status[data-tone="warn"] { color: var(--signal-warn); }
491
+ .arc-report-masthead__status[data-tone="alert"] { color: var(--signal-alert); }
492
+ .arc-report-masthead__status[data-tone="info"] { color: var(--signal-info); }
493
+ .arc-report-provenance__heading {
494
+ font-family: var(--f-mono);
495
+ font-size: 10px;
496
+ letter-spacing: .12em;
497
+ text-transform: uppercase;
498
+ color: var(--ink-50);
499
+ margin: 0 0 8px;
500
+ }
501
+ .arc-report-provenance__body {
502
+ font-family: var(--f-mono);
503
+ font-size: 11px;
504
+ line-height: 1.7;
505
+ color: var(--ink-50);
506
+ }
507
+ .arc-report-section {
508
+ border: 1px solid var(--ink-30);
509
+ border-radius: var(--r-corner);
510
+ background: var(--bg);
511
+ margin-bottom: 18px;
512
+ }
513
+ .arc-report-section__header {
514
+ display: flex;
515
+ align-items: center;
516
+ gap: 10px;
517
+ padding: 9px 14px;
518
+ border-bottom: 1px solid var(--ink-10);
519
+ background: var(--bg-1);
520
+ }
521
+ .arc-report-section__title {
522
+ font-family: var(--f-display);
523
+ font-weight: 600;
524
+ font-size: 12px;
525
+ letter-spacing: .04em;
526
+ text-transform: uppercase;
527
+ color: var(--ink-90);
528
+ margin: 0;
529
+ }
530
+ .arc-report-section__spacer {
531
+ flex-grow: 1;
532
+ }
533
+ .arc-report-section__count {
534
+ font-family: var(--f-mono);
535
+ font-size: 10px;
536
+ color: var(--ink-50);
537
+ }
538
+ .arc-report-theme-toggle {
539
+ display: flex;
540
+ justify-content: flex-end;
541
+ gap: 4px;
542
+ margin-bottom: 8px;
543
+ border: 0;
544
+ padding: 0;
545
+ }
546
+ .arc-report-theme-toggle__legend,
547
+ .arc-report-theme-toggle__input {
548
+ position: absolute;
549
+ width: 1px;
550
+ height: 1px;
551
+ padding: 0;
552
+ margin: -1px;
553
+ overflow: hidden;
554
+ clip: rect(0,0,0,0);
555
+ white-space: nowrap;
556
+ border: 0;
557
+ }
558
+ .arc-report-theme-toggle__label {
559
+ font-family: var(--f-mono);
560
+ font-size: 10px;
561
+ letter-spacing: .1em;
562
+ text-transform: uppercase;
563
+ color: var(--ink-50) !important;
564
+ background: var(--bg-1);
565
+ border: 1px solid var(--ink-15) !important;
566
+ border-radius: var(--r-corner);
567
+ padding: 6px 10px;
568
+ cursor: pointer;
569
+ }
570
+ .arc-show-report__stats {
571
+ margin-bottom: 20px;
572
+ }
573
+ .arc-show-report__split {
574
+ display: flex;
575
+ gap: 12px;
576
+ align-items: stretch;
577
+ margin-bottom: 26px;
578
+ }
579
+ .arc-show-report__needs {
580
+ flex-grow: 1;
581
+ }
582
+ .arc-show-report__outcome {
583
+ border: 1px solid var(--ink-15);
584
+ border-radius: var(--r-corner);
585
+ background: var(--bg-1);
586
+ padding: 12px 16px;
587
+ display: flex;
588
+ align-items: center;
589
+ font-family: var(--f-mono);
590
+ font-size: 11px;
591
+ color: var(--ink-70);
592
+ }
593
+ .arc-show-report__footer {
594
+ display: grid;
595
+ grid-template-columns: 1fr 1.4fr;
596
+ gap: 24px;
597
+ padding-top: 16px;
598
+ border-top: 1px solid var(--ink-10);
599
+ }
600
+ .arc-stat-rail {
601
+ display: grid;
602
+ grid-auto-flow: column;
603
+ grid-auto-columns: minmax(0, 1fr);
604
+ gap: 1px;
605
+ background: var(--ink-10);
606
+ border: 1px solid var(--ink-30);
607
+ border-radius: var(--r-corner);
608
+ margin: 0;
609
+ }
610
+ .arc-stat-rail__cell {
611
+ background: var(--bg);
612
+ display: flex;
613
+ flex-direction: column-reverse;
614
+ }
615
+ .arc-stat-rail__label {
616
+ margin: 4px 16px 14px;
617
+ font-family: var(--f-display);
618
+ font-size: 10px;
619
+ letter-spacing: .18em;
620
+ text-transform: uppercase;
621
+ color: var(--ink-60);
622
+ }
623
+ .arc-stat-rail__value {
624
+ margin: 0;
625
+ }
626
+ .arc-stat-rail__tile.arc-stat-tile[data-size="sm"] {
627
+ padding-bottom: 0;
130
628
  }}#arcane-report-theme-toggle-wrap input:checked+label{color:var(--ink-90);border-color:var(--ink-30)}#arcane-report-theme-toggle-wrap input:focus-visible+label{box-shadow:0 0 0 2px var(--ink-50)}@media print{#arcane-report-theme-toggle-wrap{display:none}} body{margin:0;background:var(--bg);color:var(--ink-80);font-family:var(--f-ui),system-ui,sans-serif} a{text-decoration:none} a:hover{text-decoration:underline} code{font-family:var(--f-mono);font-size:.92em} .unwritten{color:var(--ink-50);font-style:italic}</style>
131
629
  </head>
132
630
  <body>
133
- <svg width="0" height="0" style="position:absolute;width:0;height:0" aria-hidden="true" focusable="false"><symbol id="cat-spell" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75v3.5M8 10.75v3.5M1.75 8h3.5M10.75 8h3.5M3.6 3.6l2.4 2.4M10 10l2.4 2.4M12.4 3.6 10 6M6 10l-2.4 2.4"></path></symbol><symbol id="cat-feature" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.25" y="2.25" width="11.5" height="11.5" rx="1"></rect><path d="M8 5.25v5.5M5.25 8h5.5"></path></symbol><symbol id="cat-governance" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75 13.25 3.75v4.2c0 3.05-2.2 5.3-5.25 6.3-3.05-1-5.25-3.25-5.25-6.3v-4.2z"></path></symbol><symbol id="cat-decision" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75 14.25 8 8 14.25 1.75 8z"></path></symbol><symbol id="cat-fix" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75 13.4 4.9v6.2L8 14.25 2.6 11.1V4.9z"></path><circle cx="8" cy="8" r="2.25"></circle></symbol><symbol id="cat-process" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M13 8a5 5 0 0 1-8.65 3.45M3 8a5 5 0 0 1 8.65-3.45"></path><path d="M11.65 2.15v2.4h-2.4M4.35 13.85v-2.4h2.4"></path></symbol><symbol id="cat-docs" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.75 1.75h5.75l2.75 2.75v9.75h-8.5z"></path><path d="M9.5 1.75v3h3M6 8h4M6 10.75h4"></path></symbol><symbol id="cat-platform" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.25" y="2.25" width="11.5" height="3.75" rx=".75"></rect><rect x="2.25" y="8.25" width="11.5" height="3.75" rx=".75"></rect><path d="M4.75 4.1h.01M4.75 10.1h.01"></path><path d="M8 12v2.25"></path></symbol></svg><main><fieldset id="arcane-report-theme-toggle-wrap" role="radiogroup" style="display:flex;justify-content:flex-end;gap:4px;margin-bottom:8px;border:0;padding:0"><legend style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0">Report color theme</legend><input type="radio" id="arcane-report-theme-auto" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0" name="arcane-report-theme" checked="" value="auto"/><label for="arcane-report-theme-auto" style="font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-50);background:var(--bg-1);border:1px solid var(--ink-15);border-radius:var(--r-corner);padding:6px 10px;cursor:pointer">Auto</label><input type="radio" id="arcane-report-theme-light" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0" name="arcane-report-theme" value="light"/><label for="arcane-report-theme-light" style="font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-50);background:var(--bg-1);border:1px solid var(--ink-15);border-radius:var(--r-corner);padding:6px 10px;cursor:pointer">Light</label><input type="radio" id="arcane-report-theme-dark" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0" name="arcane-report-theme" value="dark"/><label for="arcane-report-theme-dark" style="font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-50);background:var(--bg-1);border:1px solid var(--ink-15);border-radius:var(--r-corner);padding:6px 10px;cursor:pointer">Dark</label></fieldset><div><div style="display:flex;align-items:baseline;gap:12px;margin-bottom:16px"><span style="font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-50)">{{masthead.eyebrow}}</span><span aria-hidden="true" style="flex-grow:1;height:1px;background:var(--ink-10)"></span><span style="font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-50)">{{program.slug}}</span></div><h1 style="font-family:var(--f-display);font-weight:600;font-size:30px;line-height:1.15;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-90);margin:0 0 10px;max-width:24ch">{{masthead.title}}</h1><p style="font-family:var(--f-ui);font-size:15px;color:var(--ink-60);margin:0 0 14px;max-width:62ch">{{masthead.dek}}</p><div style="display:flex;flex-wrap:wrap;gap:6px 18px;font-family:var(--f-mono);font-size:11px;color:var(--ink-70);margin-bottom:26px"><span><span style="color:var(--ink-50)">status</span> <span style="color:var(--signal-ok)">{{program.status}}</span></span><span><span style="color:var(--ink-50)">started</span> {{program.started}}</span><span><span style="color:var(--ink-50)">completed</span> {{program.completed}}</span><span><span style="color:var(--ink-50)">baseline</span> {{program.baseline}}</span></div></div><div style="margin-bottom:20px"><dl style="display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0, 1fr);gap:1px;background:var(--ink-10);border:1px solid var(--ink-30);border-radius:var(--r-corner);margin:0">{{#stats}}<div style="background:var(--bg);display:flex;flex-direction:column-reverse"><dt style="margin:4px 16px 14px;font-family:var(--f-display);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-60)">{{label}}</dt><dd style="margin:0"><div class="arc-stat-tile arc-stat-tile--sm" data-size="sm" style="padding-bottom:0"><div class="arc-num arc-stat-tile__value">{{value}}</div></div></dd></div>{{/stats}}</dl></div><div style="display:flex;gap:12px;align-items:stretch;margin-bottom:26px"><div style="flex-grow:1"><div style="margin-bottom:26px">{{#needsYouCount}}<div style="display:flex;align-items:baseline;gap:10px;margin-bottom:8px"><h2 style="font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-90);margin:0">Needs you</h2><span style="font-family:var(--f-mono);font-size:11px;color:var(--ink-50)">{{needsYouCount}} open</span></div><ul style="list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px">{{#needsYou}}<li style="border:1px solid var(--ink-15);border-left:2px solid var(--signal-warn);border-radius:var(--r-corner);background:var(--bg-1);padding:12px 16px">{{#href}}<a href="{{href}}" style="color:var(--accent)">{{title}}</a>{{/href}}{{^href}}<span style="color:var(--ink-90)">{{title}}</span>{{/href}}</li>{{/needsYou}}</ul>{{/needsYouCount}}{{^needsYouCount}}<div style="border:1px solid var(--ink-15);border-left:2px solid var(--signal-ok);border-radius:var(--r-corner);background:var(--bg-1);padding:12px 16px;display:flex;align-items:center;gap:10px"><span aria-hidden="true" style="display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--signal-ok)"></span><span style="font-family:var(--f-display);font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--signal-ok)">Nothing needs you</span></div>{{/needsYouCount}}</div></div>{{#hasOutcome}}<div style="border:1px solid var(--ink-15);border-radius:var(--r-corner);background:var(--bg-1);padding:12px 16px;display:flex;align-items:center;font-family:var(--f-mono);font-size:11px;color:var(--ink-70)">{{outcome}}</div>{{/hasOutcome}}</div><div style="display:flex;flex-wrap:wrap;gap:8px 16px;padding:12px 0;border-top:1px solid var(--ink-10);border-bottom:1px solid var(--ink-10);margin-bottom:26px">{{#legend}}<span style="display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-50)"><span style="color:var(--cat-{{key}})"><svg width="12" height="12" aria-hidden="true" focusable="false"><use href="#cat-{{key}}"></use></svg></span>{{label}}</span>{{/legend}}</div>{{#sections}}<div style="border:1px solid var(--ink-30);border-radius:var(--r-corner);background:var(--bg);margin-bottom:18px"><div style="display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--ink-10);background:var(--bg-1)"><h2 style="font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-90);margin:0">{{title}}</h2><span style="flex-grow:1"></span><span style="font-family:var(--f-mono);font-size:10px;color:var(--ink-50)">{{rowCount}}</span></div><ol style="list-style:none;margin:0;padding:0">{{#rows}}<li style="border-bottom:1px solid var(--ink-10)"><div style="display:grid;grid-template-columns:68px 1fr 128px;gap:14px;padding:13px 14px;align-items:start">{{#hasHref}}<a href="{{href}}" style="font-family:var(--f-mono);font-size:11px;color:var(--accent)">{{id}}</a>{{/hasHref}}{{^hasHref}}<span style="font-family:var(--f-mono);font-size:11px;color:var(--ink-50)">{{id}}</span>{{/hasHref}}<div><div style="font-family:var(--f-display);font-weight:600;font-size:13px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-90);margin-bottom:4px">{{title}}</div><div style="font-family:var(--f-ui);font-size:14px;line-height:1.45;color:var(--ink-60);font-style:normal;max-width:58ch">{{#isUnwritten}}<span class="unwritten">unwritten</span>{{/isUnwritten}}{{^isUnwritten}}{{{descriptionHtml}}}{{/isUnwritten}}</div></div><span class="arc-badge" data-variant="pill" data-tone="{{category}}" style="justify-self:end"><svg width="12" height="12" aria-hidden="true" focusable="false"><use href="#cat-{{category}}"></use></svg>{{categoryLabel}}</span></div></li>{{/rows}}</ol></div>{{/sections}}{{#hasCorrections}}{{#corrections}}<div style="border:1px solid var(--ink-15);border-radius:var(--r-corner);background:var(--bg-1);padding:14px 16px;margin-bottom:18px"><div style="display:flex;align-items:baseline;gap:10px;margin-bottom:8px"><h2 style="font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-90);margin:0">Calibration</h2><span style="font-family:var(--f-mono);font-size:11px;color:var(--ink-50)">{{checked}} checked · {{corrected}} corrected · {{unverifiable}} unverifiable</span></div><div style="font-family:var(--f-ui);font-size:14px;line-height:1.45;color:var(--ink-60);max-width:62ch;margin-bottom:12px">{{scopeNote}}</div><div style="display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--ink-10);padding-top:12px">{{#highlights}}<div style="display:grid;grid-template-columns:84px 1fr;gap:12px;align-items:baseline"><span style="font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--signal-warn)">{{categoryLabel}}</span><div><div style="font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.02em;color:var(--ink-90);margin-bottom:3px">{{title}}</div><div style="font-family:var(--f-ui);font-size:14px;line-height:1.45;color:var(--ink-60);font-style:normal;max-width:62ch">{{#isUnwritten}}<span class="unwritten">unwritten</span>{{/isUnwritten}}{{^isUnwritten}}{{{descriptionHtml}}}{{/isUnwritten}}</div></div></div>{{/highlights}}</div></div>{{/corrections}}{{/hasCorrections}}{{#hasParked}}<div style="border:1px solid var(--ink-15);border-radius:var(--r-corner);background:var(--bg);padding:14px 16px;margin-bottom:26px"><div style="display:flex;align-items:baseline;gap:10px;margin-bottom:10px"><h2 style="font-family:var(--f-display);font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-90);margin:0">Parked</h2><span style="font-family:var(--f-mono);font-size:11px;color:var(--ink-50)">{{parkedCount}} item{{^parkedIsSingular}}s{{/parkedIsSingular}} · deliberately not built</span></div><div style="display:grid;grid-template-columns:1fr 1fr;gap:8px 24px">{{#parked}}<div style="display:grid;grid-template-columns:8px 1fr;gap:10px;align-items:baseline;font-family:var(--f-ui);font-size:13px;line-height:1.4;color:var(--ink-60)"><span aria-hidden="true" style="width:8px;height:1px;background:var(--ink-30);align-self:center"></span><span><span style="color:var(--ink-80);font-weight:600">{{title}}</span> — {{reason}}</span></div>{{/parked}}</div></div>{{/hasParked}}</main><footer style="display:grid;grid-template-columns:1fr 1.4fr;gap:24px;padding-top:16px;border-top:1px solid var(--ink-10)">{{#hasCast}}<div><h2 style="font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-50);margin:0 0 8px">Cast</h2><div style="display:flex;flex-direction:column;gap:4px;font-family:var(--f-mono);font-size:11px;color:var(--ink-70)">{{#cast}}<div style="display:flex;justify-content:space-between;gap:12px;max-width:220px"><span>{{name}}</span><span style="color:var(--ink-50);font-variant-numeric:tabular-nums">{{commits}} commit{{^isSingular}}s{{/isSingular}}</span></div>{{/cast}}</div></div>{{/hasCast}}<div><h2 style="font-family:var(--f-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-50);margin:0 0 8px">Provenance</h2><div style="font-family:var(--f-mono);font-size:11px;line-height:1.7;color:var(--ink-50)">compiled from {{sourcesJoined}}<br/>as of {{compiledAtDate}} · template {{provenance.templateVersion}} · schema {{schemaVersion}} · no runtime scripts</div></div></footer>
631
+ <svg width="0" height="0" class="arc-category-icons__sprite" aria-hidden="true" focusable="false"><symbol id="cat-spell" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75v3.5M8 10.75v3.5M1.75 8h3.5M10.75 8h3.5M3.6 3.6l2.4 2.4M10 10l2.4 2.4M12.4 3.6 10 6M6 10l-2.4 2.4"></path></symbol><symbol id="cat-feature" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.25" y="2.25" width="11.5" height="11.5" rx="1"></rect><path d="M8 5.25v5.5M5.25 8h5.5"></path></symbol><symbol id="cat-governance" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75 13.25 3.75v4.2c0 3.05-2.2 5.3-5.25 6.3-3.05-1-5.25-3.25-5.25-6.3v-4.2z"></path></symbol><symbol id="cat-decision" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75 14.25 8 8 14.25 1.75 8z"></path></symbol><symbol id="cat-fix" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 1.75 13.4 4.9v6.2L8 14.25 2.6 11.1V4.9z"></path><circle cx="8" cy="8" r="2.25"></circle></symbol><symbol id="cat-process" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M13 8a5 5 0 0 1-8.65 3.45M3 8a5 5 0 0 1 8.65-3.45"></path><path d="M11.65 2.15v2.4h-2.4M4.35 13.85v-2.4h2.4"></path></symbol><symbol id="cat-docs" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3.75 1.75h5.75l2.75 2.75v9.75h-8.5z"></path><path d="M9.5 1.75v3h3M6 8h4M6 10.75h4"></path></symbol><symbol id="cat-platform" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.25" y="2.25" width="11.5" height="3.75" rx=".75"></rect><rect x="2.25" y="8.25" width="11.5" height="3.75" rx=".75"></rect><path d="M4.75 4.1h.01M4.75 10.1h.01"></path><path d="M8 12v2.25"></path></symbol></svg><main><fieldset id="arcane-report-theme-toggle-wrap" role="radiogroup" class="arc-report-theme-toggle"><legend class="arc-report-theme-toggle__legend">Report color theme</legend><input type="radio" id="arcane-report-theme-auto" class="arc-report-theme-toggle__input" name="arcane-report-theme" checked="" value="auto"/><label for="arcane-report-theme-auto" class="arc-report-theme-toggle__label">Auto</label><input type="radio" id="arcane-report-theme-light" class="arc-report-theme-toggle__input" name="arcane-report-theme" value="light"/><label for="arcane-report-theme-light" class="arc-report-theme-toggle__label">Light</label><input type="radio" id="arcane-report-theme-dark" class="arc-report-theme-toggle__input" name="arcane-report-theme" value="dark"/><label for="arcane-report-theme-dark" class="arc-report-theme-toggle__label">Dark</label></fieldset><div class="arc-report-masthead"><div class="arc-report-masthead__top"><span class="arc-report-masthead__label">{{masthead.eyebrow}}</span><span aria-hidden="true" class="arc-report-masthead__rule"></span><span class="arc-report-masthead__label">{{program.slug}}</span></div><h1 class="arc-report-masthead__title">{{masthead.title}}</h1><p class="arc-report-masthead__dek">{{masthead.dek}}</p><div class="arc-report-masthead__meta"><span><span class="arc-report-masthead__key">status</span> <span class="arc-report-masthead__status" data-tone="ok">{{program.status}}</span></span><span><span class="arc-report-masthead__key">started</span> {{program.started}}</span><span><span class="arc-report-masthead__key">completed</span> {{program.completed}}</span><span><span class="arc-report-masthead__key">baseline</span> {{program.baseline}}</span></div></div><div class="arc-show-report__stats"><dl class="arc-stat-rail">{{#stats}}<div class="arc-stat-rail__cell"><dt class="arc-stat-rail__label">{{label}}</dt><dd class="arc-stat-rail__value"><div class="arc-stat-tile arc-stat-tile--sm arc-stat-rail__tile" data-size="sm"><div class="arc-num arc-stat-tile__value">{{value}}</div></div></dd></div>{{/stats}}</dl></div><div class="arc-show-report__split"><div class="arc-show-report__needs"><div class="arc-needs-you">{{#needsYouCount}}<div class="arc-needs-you__head"><h2 class="arc-needs-you__title">Needs you</h2><span class="arc-needs-you__count">{{needsYouCount}} open</span></div><ul class="arc-needs-you__list">{{#needsYou}}<li class="arc-needs-you__item">{{#href}}<a href="{{href}}" class="arc-needs-you__link">{{title}}</a>{{/href}}{{^href}}<span class="arc-needs-you__text">{{title}}</span>{{/href}}</li>{{/needsYou}}</ul>{{/needsYouCount}}{{^needsYouCount}}<div class="arc-needs-you__empty"><span aria-hidden="true" class="arc-needs-you__dot"></span><span class="arc-needs-you__empty-label">Nothing needs you</span></div>{{/needsYouCount}}</div></div>{{#hasOutcome}}<div class="arc-show-report__outcome">{{outcome}}</div>{{/hasOutcome}}</div><div class="arc-category-legend">{{#legend}}<span class="arc-category-legend__item"><span class="arc-category-legend__icon" data-tone="{{key}}"><svg width="12" height="12" aria-hidden="true" focusable="false"><use href="#cat-{{key}}"></use></svg></span>{{label}}</span>{{/legend}}</div>{{#sections}}<div class="arc-report-section"><div class="arc-report-section__header"><h2 class="arc-report-section__title">{{title}}</h2><span class="arc-report-section__spacer"></span><span class="arc-report-section__count">{{rowCount}}</span></div><ol class="arc-ledger-list">{{#rows}}<li class="arc-ledger-list__item"><div class="arc-ledger-row">{{#hasHref}}<a href="{{href}}" class="arc-ledger-row__id">{{id}}</a>{{/hasHref}}{{^hasHref}}<span class="arc-ledger-row__id">{{id}}</span>{{/hasHref}}<div><div class="arc-ledger-row__title">{{title}}</div><div class="arc-ledger-row__description">{{#isUnwritten}}<span class="unwritten">unwritten</span>{{/isUnwritten}}{{^isUnwritten}}{{{descriptionHtml}}}{{/isUnwritten}}</div></div><span class="arc-badge" data-variant="pill" data-tone="{{category}}"><svg width="12" height="12" aria-hidden="true" focusable="false"><use href="#cat-{{category}}"></use></svg>{{categoryLabel}}</span></div></li>{{/rows}}</ol></div>{{/sections}}{{#hasCorrections}}{{#corrections}}<div class="arc-corrections"><div class="arc-corrections__head"><h2 class="arc-corrections__title">Calibration</h2><span class="arc-corrections__summary">{{checked}} checked · {{corrected}} corrected · {{unverifiable}} unverifiable</span></div><div class="arc-corrections__scope">{{scopeNote}}</div><div class="arc-corrections__highlights">{{#highlights}}<div class="arc-corrections__highlight"><span class="arc-corrections__tag">{{categoryLabel}}</span><div><div class="arc-corrections__highlight-title">{{title}}</div><div class="arc-corrections__description">{{#isUnwritten}}<span class="unwritten">unwritten</span>{{/isUnwritten}}{{^isUnwritten}}{{{descriptionHtml}}}{{/isUnwritten}}</div></div></div>{{/highlights}}</div></div>{{/corrections}}{{/hasCorrections}}{{#hasParked}}<div class="arc-parked"><div class="arc-parked__header"><h2 class="arc-parked__heading">Parked</h2><span class="arc-parked__count">{{parkedCount}} item{{^parkedIsSingular}}s{{/parkedIsSingular}} · deliberately not built</span></div><div class="arc-parked__list">{{#parked}}<div class="arc-parked__item"><span aria-hidden="true" class="arc-parked__dash"></span><span><span class="arc-parked__title">{{title}}</span> — {{reason}}</span></div>{{/parked}}</div></div>{{/hasParked}}</main><footer class="arc-show-report__footer">{{#hasCast}}<div class="arc-cast"><h2 class="arc-cast__title">Cast</h2><div class="arc-cast__list">{{#cast}}<div class="arc-cast__row"><span>{{name}}</span><span class="arc-cast__commits">{{commits}} commit{{^isSingular}}s{{/isSingular}}</span></div>{{/cast}}</div></div>{{/hasCast}}<div class="arc-report-provenance"><h2 class="arc-report-provenance__heading">Provenance</h2><div class="arc-report-provenance__body">compiled from {{sourcesJoined}}<br/>as of {{compiledAtDate}} · template {{provenance.templateVersion}} · schema {{schemaVersion}} · no runtime scripts</div></div></footer>
134
632
  </body>
135
633
  </html>
package/dist/index.js CHANGED
@@ -607,6 +607,16 @@ function validateSecretsScanExcludePrefixes(value, filePath) {
607
607
  function isValidIdeaTags(value) {
608
608
  return isRecord(value) && (value["mode"] === "extend" || value["mode"] === "replace") && Array.isArray(value["tags"]) && value["tags"].every((tag) => typeof tag === "string" && tag.trim() !== "");
609
609
  }
610
+ var TODO_DONE_BOOK_RESERVED = /* @__PURE__ */ new Set(["todo.md", "ideas.md", "decisions.md", "changelog.md"]);
611
+ function isValidTodoDoneBook(value) {
612
+ if (value === false) return true;
613
+ if (typeof value !== "string" || !isValidSubjectRoot(value)) return false;
614
+ if (value !== value.trim() || value.includes(":")) return false;
615
+ const normalized = path2.posix.normalize(value.replace(/\\/g, "/"));
616
+ const segments = normalized.split("/");
617
+ const basename5 = segments[segments.length - 1] ?? "";
618
+ return /^[^/]+\.md$/i.test(basename5) && !/^\.md$/i.test(basename5) && !segments.slice(0, -1).some((segment) => segment.startsWith(".") && segment !== ".") && !TODO_DONE_BOOK_RESERVED.has(basename5.toLowerCase());
619
+ }
610
620
  function manifestPath(targetDir) {
611
621
  return path2.join(targetDir, MANIFEST_FILE);
612
622
  }
@@ -651,6 +661,9 @@ function validateManifestFields(manifest, filePath) {
651
661
  if (manifest.idea_tags !== void 0 && !isValidIdeaTags(manifest.idea_tags)) {
652
662
  throw new ManifestInvalidFieldError(filePath, "idea_tags", manifest.idea_tags);
653
663
  }
664
+ if (manifest.todo_done_book !== void 0 && !isValidTodoDoneBook(manifest.todo_done_book)) {
665
+ throw new ManifestInvalidFieldError(filePath, "todo_done_book", manifest.todo_done_book);
666
+ }
654
667
  }
655
668
  async function readManifest(targetDir) {
656
669
  const filePath = manifestPath(targetDir);