arcane-cli 1.20.0 → 1.20.2

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.
@@ -46,7 +46,7 @@ Agent autonomy is gamified into ascending power levels. Each level grants broade
46
46
  | Apprentice | Read and propose; changes queued for human merge. |
47
47
  | Wizard | Scoped autonomous edits in approved paths; PRs queued for review. |
48
48
  | Sorcerer | Autonomous topic-branch work; PRs queued for review. |
49
- | Magus | Self-merge within approved scope (fast-forward only). |
49
+ | Magus | Self-merge within approved scope (never squash). |
50
50
  | Archmage | Broadest autonomous authority within an approved repo. |
51
51
 
52
52
  Assign a default power level per agent × per repo. Human approval and commit governance still apply in interactive sessions.
@@ -275,8 +275,10 @@ If an agent encounters a situation outside its defined parameters, it should:
275
275
 
276
276
  4. **Push the branch** to origin (after rebase).
277
277
 
278
- 5. **Merge or queue** based on your power level:
279
- - **Magus+ power level:** self-merge via `git merge --ff-only`, push main, delete branch.
278
+ 5. **Merge or queue** based on your power level — and merge by the mechanism your repository type and working tree allow:
279
+ - **Magus+ power level, in a code repository:** self-merge by completing the PR on the platform, by rebase and fast-forward or merge without fast-forward, never squash. A code repository requires a PR and rejects direct pushes to `main`, so this holds in every working tree.
280
+ - **Magus+ power level, in a docs-only repository's primary checkout:** self-merge via `git merge --ff-only`, push main, delete branch.
281
+ - **Magus+ power level, in a linked worktree or a clone:** self-merge through the platform's PR merge instead. The authority is identical; only the mechanism changes, because a local ff-merge requires checking out `main` and another working tree already holds it.
280
282
  - **Below Magus:** push the branch, report the branch name, and queue for human merge.
281
283
 
282
284
  6. **Delete the branch** (local and remote) after merge.
@@ -285,7 +287,7 @@ If an agent encounters a situation outside its defined parameters, it should:
285
287
 
286
288
  - Use standard commit types: `feat`, `fix`, `docs`, `refactor`, `chore`, etc.
287
289
 
288
- **What happens if ff-only fails:** Another actor merged to main first. This should not happen if you followed step 3. If it does, rebase and retry:
290
+ **What happens if ff-only fails** (a docs-only repository's local merge): Another actor merged to main first. This should not happen if you followed step 3. If it does, rebase and retry, from the primary checkout, since this block checks out `main`:
289
291
 
290
292
  ```bash
291
293
  git fetch origin
@@ -294,6 +296,8 @@ git checkout main
294
296
  git merge --ff-only {your-slug}/type/short-description
295
297
  ```
296
298
 
299
+ From a linked worktree or a clone, stop after the rebase and merge through the platform's PR instead. `git checkout main` there fails with `fatal: 'main' is already used by worktree at '<path>'`.
300
+
297
301
  ### Multi-Agent Concurrency Rules
298
302
 
299
303
  When more than one agent may work in the same repository simultaneously:
@@ -47,7 +47,7 @@ Agent autonomy is gamified into ascending power levels. Each level grants broade
47
47
  | Apprentice | Read and propose; changes queued for human merge. |
48
48
  | Wizard | Scoped autonomous edits in approved paths; PRs queued for review. |
49
49
  | Sorcerer | Autonomous topic-branch work; PRs queued for review. |
50
- | Magus | Self-merge within approved scope (fast-forward only). |
50
+ | Magus | Self-merge within approved scope (never squash). |
51
51
  | Archmage | Broadest autonomous authority within an approved repo. |
52
52
 
53
53
  Assign a default power level per agent × per repo. **Enforcement: explicitly advisory prose (ARC-023) — no check verifies a level was assigned for every agent × repo pair.** Human approval and commit governance still apply in interactive sessions. **Enforcement: structured spell gate (ARC-023) — `spell-commit-work`'s execution-authority table requires exact operator approval for any interactive-context commit regardless of power level, gated by an approval-fingerprint check before `git commit` runs.**
@@ -326,8 +326,9 @@ If an agent encounters a situation outside its defined parameters, it should:
326
326
 
327
327
  4. **Push the branch** to origin (after rebase).
328
328
 
329
- 5. **Merge or queue** based on your power level — and merge by the mechanism your isolation primitive allows (ARC-028 R1):
330
- - **Magus+ power level, in the primary checkout:** self-merge via `git merge --ff-only`, push main, delete branch.
329
+ 5. **Merge or queue** based on your power level — and merge by the mechanism your repository type and isolation primitive allow (ARC-009 §7, ARC-028 R1):
330
+ - **Magus+ power level, in a code repository:** self-merge by completing the PR on the platform, by rebase and fast-forward or merge without fast-forward, never squash (ARC-009 §7). A code repository requires a PR and rejects direct pushes to `main` (`git-conventions.md` → Merge Strategy by Repo Risk), so this holds in every working tree. **Enforcement: structured spell gate (ARC-023) — `spell-commit-work` Step 9 completes a PR only by merge (no fast-forward) or rebase and fast-forward, with squash disabled; the refusal of a direct push to `main` is the platform's branch protection, which no Arcane code path verifies.**
331
+ - **Magus+ power level, in a docs-only repository's primary checkout:** self-merge via `git merge --ff-only`, push main, delete branch.
331
332
  - **Magus+ power level, in a linked worktree or a clone:** self-merge through the platform's PR merge instead. The authority is identical; only the mechanism changes, because a local ff-merge requires checking out `main` and another working tree already holds it. Power level decides *whether* you may merge without review; the isolation primitive decides *how*.
332
333
  - **Below Magus:** push the branch, report the branch name, and queue for human merge. **Enforcement: structured spell gate (ARC-023) — `spell-commit-work`'s execution-authority table and its Step 9 merge-authorization gate (and `spell-create-pull-request`'s Authorization Gate) resolve power level and `exec_allowed` through the EF-27 loader-validated roster before permitting self-merge; below-Magus or unresolved authority always downgrades to human completion.**
333
334
 
@@ -337,7 +338,7 @@ If an agent encounters a situation outside its defined parameters, it should:
337
338
 
338
339
  - Use standard commit types: `feat`, `fix`, `docs`, `refactor`, `chore`, etc. **Enforcement: explicitly advisory prose (ARC-023) — no check in this repo validates an autonomous agent's branch name against that rule; the rename gate in `git-conventions.md` → Branch Naming runs only in interactive sessions.**
339
340
 
340
- **What happens if ff-only fails:** Another actor merged to main first. This should not happen if you followed step 3. If it does, rebase and retry — **from the primary checkout**, since this block checks out `main`:
341
+ **What happens if ff-only fails** (a docs-only repository's local merge): Another actor merged to main first. This should not happen if you followed step 3. If it does, rebase and retry — **from the primary checkout**, since this block checks out `main`:
341
342
 
342
343
  ```bash
343
344
  git fetch origin
@@ -289,7 +289,11 @@ Create the session branch as the **first action** of any session, before any fil
289
289
  stale divergence. Resolve conflicts locally — never push a branch with known merge conflicts.
290
290
  4. **Push the branch to origin** (after rebase).
291
291
  5. **Merge or queue for review** based on power level:
292
- - **Magus+ agents, working in the primary checkout:** self-merge via `git merge --ff-only`, then push main
292
+ - **Magus+ agents, in a code repository:** self-merge by completing the PR on the platform, by
293
+ rebase and fast-forward or merge without fast-forward, never squash (ARC-009 §7). A code
294
+ repository requires a PR and rejects direct pushes to `main` (Merge Strategy by Repo Risk,
295
+ below), so this holds in every working tree.
296
+ - **Magus+ agents in a docs-only repository, working in the primary checkout:** self-merge via `git merge --ff-only`, then push main
293
297
  - **Magus+ agents, working in a linked worktree or a clone:** self-merge through the platform's PR
294
298
  merge instead (ARC-028 R1). The authority is the same; only the mechanism changes, because a
295
299
  local ff-merge requires checking out `main` and the primary checkout already holds it. Power
@@ -123,7 +123,7 @@ Agent autonomy is assigned per agent × per repo using gamified power levels. Se
123
123
  | 1 | **Apprentice** | Agent suggests; human executes | Human pushes all |
124
124
  | 2 | **Wizard** | Scoped autonomous edits in approved paths | Agent pushes branch; PRs queued for review |
125
125
  | 3 | **Sorcerer** | Autonomous topic-branch work | Agent pushes and creates PR; human approves |
126
- | 4 | **Magus** | Self-merge within approved scope — the "Magus+" gate | Agent merges (fast-forward only) |
126
+ | 4 | **Magus** | Self-merge within approved scope — the "Magus+" gate | Agent merges (never squash) |
127
127
  | 5 | **Archmage** | Broadest autonomous authority within an approved repo | Agent drives; human approves policy changes |
128
128
 
129
129
  A common starting policy: cap ops/docs repos at **Wizard**, allow app repos up to **Archmage**, and keep repo creation at **Spectator** (human only).
@@ -1,4 +1,4 @@
1
- <!-- @codemagician/arcane-ui v2.15.0 -- SEE LICENSE IN LICENSE. Generated by scripts/build-report-template.tsx. Do not edit by hand. -->
1
+ <!-- @codemagician/arcane-ui v2.16.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;--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"] {
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;--caution-black:#111111;--caution-yellow:#ffd100;--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;
@@ -318,16 +318,33 @@ font-style: italic;
318
318
  .arc-ledger-row > .arc-badge {
319
319
  justify-self: end;
320
320
  }
321
- .arc-needs-you {
321
+ .arc-action-required {
322
322
  margin-bottom: 26px;
323
323
  }
324
- .arc-needs-you__head {
324
+ .arc-action-required__stripe {
325
+ display: block;
326
+ height: 6px;
327
+ background: repeating-linear-gradient(
328
+ -45deg,
329
+ var(--caution-yellow) 0 8px,
330
+ var(--caution-black) 8px 16px
331
+ );
332
+ -webkit-print-color-adjust: exact;
333
+ print-color-adjust: exact;
334
+ }
335
+ .arc-action-required__stripe:first-child {
336
+ margin-bottom: 12px;
337
+ }
338
+ .arc-action-required__stripe:last-child {
339
+ margin-top: 12px;
340
+ }
341
+ .arc-action-required__head {
325
342
  display: flex;
326
343
  align-items: baseline;
327
344
  gap: 10px;
328
345
  margin-bottom: 8px;
329
346
  }
330
- .arc-needs-you__title {
347
+ .arc-action-required__title {
331
348
  font-family: var(--f-display);
332
349
  font-weight: 600;
333
350
  font-size: 12px;
@@ -336,12 +353,12 @@ text-transform: uppercase;
336
353
  color: var(--ink-90);
337
354
  margin: 0;
338
355
  }
339
- .arc-needs-you__count {
356
+ .arc-action-required__count {
340
357
  font-family: var(--f-mono);
341
358
  font-size: 11px;
342
359
  color: var(--ink-50);
343
360
  }
344
- .arc-needs-you__list {
361
+ .arc-action-required__list {
345
362
  list-style: none;
346
363
  margin: 0;
347
364
  padding: 0;
@@ -349,20 +366,20 @@ display: flex;
349
366
  flex-direction: column;
350
367
  gap: 8px;
351
368
  }
352
- .arc-needs-you__item {
369
+ .arc-action-required__item {
353
370
  border: 1px solid var(--ink-15);
354
371
  border-left: 2px solid var(--signal-warn);
355
372
  border-radius: var(--r-corner);
356
373
  background: var(--bg-1);
357
374
  padding: 12px 16px;
358
375
  }
359
- .arc-needs-you__link {
376
+ .arc-action-required__link {
360
377
  color: var(--accent);
361
378
  }
362
- .arc-needs-you__text {
379
+ .arc-action-required__text {
363
380
  color: var(--ink-90);
364
381
  }
365
- .arc-needs-you__empty {
382
+ .arc-action-required__empty {
366
383
  border: 1px solid var(--ink-15);
367
384
  border-left: 2px solid var(--signal-ok);
368
385
  border-radius: var(--r-corner);
@@ -372,14 +389,14 @@ display: flex;
372
389
  align-items: center;
373
390
  gap: 10px;
374
391
  }
375
- .arc-needs-you__dot {
392
+ .arc-action-required__dot {
376
393
  display: inline-block;
377
394
  width: 6px;
378
395
  height: 6px;
379
396
  border-radius: 50%;
380
397
  background: var(--signal-ok);
381
398
  }
382
- .arc-needs-you__empty-label {
399
+ .arc-action-required__empty-label {
383
400
  font-family: var(--f-display);
384
401
  font-size: 13px;
385
402
  letter-spacing: .04em;
@@ -628,6 +645,6 @@ padding-bottom: 0;
628
645
  }}#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>
629
646
  </head>
630
647
  <body>
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>
648
+ <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-action-required">{{#needsYouCount}}<span aria-hidden="true" class="arc-action-required__stripe"></span><div class="arc-action-required__head"><h2 class="arc-action-required__title">Action required</h2><span class="arc-action-required__count">{{needsYouCount}} open</span></div><ul class="arc-action-required__list">{{#needsYou}}<li class="arc-action-required__item">{{#href}}<a href="{{href}}" class="arc-action-required__link">{{title}}</a>{{/href}}{{^href}}<span class="arc-action-required__text">{{title}}</span>{{/href}}</li>{{/needsYou}}</ul><span aria-hidden="true" class="arc-action-required__stripe"></span>{{/needsYouCount}}{{^needsYouCount}}<div class="arc-action-required__empty"><span aria-hidden="true" class="arc-action-required__dot"></span><span class="arc-action-required__empty-label">No action required</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>
632
649
  </body>
633
650
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcane-cli",
3
- "version": "1.20.0",
3
+ "version": "1.20.2",
4
4
  "description": "Arcane framework CLI — scaffold and manage governance files in consuming repositories",
5
5
  "keywords": [
6
6
  "arcane",