arcane-cli 0.32.3 → 0.32.4

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.
@@ -350,6 +350,31 @@ triggers), a change to a new top-level code directory outside `src/` triggers th
350
350
  fail-safe) but does **not** require it to pass before merge (branch policy is not) — the build can
351
351
  run, fail, and be ignored, or the PR can merge before it finishes.
352
352
 
353
+ ### Self-Hosted Agents
354
+
355
+ Self-hosted agents consume **zero** hosted minutes (each org gets one free self-hosted
356
+ parallel job) — the standard fallback when the Microsoft-hosted free grant (1800
357
+ min/month) runs out mid-month. Hard-won rules for running them (origin: the Ordovica
358
+ deploy incident, 2026-07-25 — three separate failures in one night):
359
+
360
+ 1. **Disable system sleep on the agent machine.** A napping agent drops mid-job with
361
+ "We stopped hearing from agent …" and kills the stage. On macOS:
362
+ `sudo pmset -a sleep 0` (display may still sleep; the system must not). Waking the
363
+ machine is not a fix — it will re-sleep 15 minutes later, mid-retry.
364
+ 2. **Keep hosted as a selectable fallback, not a hard switch.** Add an `agentPool`
365
+ pipeline parameter (`selfhosted` default / `hosted`) mapped to conditional `pool:`
366
+ blocks, so a downed agent machine never blocks an emergency deploy once hosted
367
+ minutes exist again.
368
+ 3. **Audit network reachability before the first deploy run.** Hosted agents reach
369
+ Azure-firewalled resources (Postgres, storage) via "Allow Azure services" rules;
370
+ a self-hosted machine does **not** — its public egress IP must be allowlisted
371
+ explicitly. If that IP is residential, expect it to rotate: when deploys suddenly
372
+ fail with `connect ETIMEDOUT <db-host>:5432`, check the firewall rule's IP first.
373
+ 4. **Audit tooling parity.** Hosted images preinstall the Azure CLI, pipx, etc.;
374
+ a self-hosted machine has whatever was installed by hand. Walk the pipeline's
375
+ tasks (AzureCLI@2 → `az`, Checkov → `pipx`/`pip`, …) before pointing it at the
376
+ new pool.
377
+
353
378
  ### Prospero's Responsibilities
354
379
 
355
380
  1. **Create and maintain all CI/CD pipelines** across Azure DevOps organizations
@@ -6,6 +6,25 @@ applyTo: "**"
6
6
 
7
7
  Source of truth: `.arcane/governance/git-conventions.md` → PR Standards → PR Requirements.
8
8
 
9
+ ## Runnable Code Fences Are Commitments
10
+
11
+ Chat UIs (Claude Code, Copilot, etc.) render a one-click **Run button** on shell-tagged
12
+ code fences (```` ```bash ````, ```` ```powershell ````). Treat that button as part of
13
+ your output's meaning:
14
+
15
+ - Only commands intended for **immediate execution on the current machine** may go in a
16
+ shell-tagged fence.
17
+ - Reference, undo/revert, cleanup-someday, destructive-example, or
18
+ **run-on-a-different-machine** commands must use a ```` ```text ```` fence or inline
19
+ code, labeled "reference only — do not run here".
20
+ - Surrounding prose ("only if you ever want to undo this…") does **not** make a runnable
21
+ fence safe — users click the button, not the paragraph.
22
+
23
+ **Origin (2026-07-25, Ordovica):** an agent posted a "revert anytime"
24
+ `firewall-rule delete` example in a runnable fence; it was accidentally executed twice,
25
+ deleting a prod DB firewall rule mid-deploy and failing the pipeline's prod stage both
26
+ times.
27
+
9
28
  ## PR Link Format
10
29
 
11
30
  All PR references in agent output **must** be clickable markdown links. Never write a bare `PR #NNN`.
@@ -151,8 +151,8 @@ Execute the `spell-review` workflow:
151
151
  1. Review the full diff (`git diff main...HEAD`).
152
152
  2. Check architecture compliance against `architecture.md`.
153
153
  3. Check for OWASP Top 10 security issues.
154
- 4. Find a minimum of 3 issues or justify why fewer exist.
155
- 5. Classify findings: HIGH / MEDIUM / LOW.
154
+ 4. Explicitly cover every lens — correctness, security, performance, tests, naming/clarity, architecture — and state "no issues" for any lens that is clean. There is no finding quota: zero findings is a valid outcome on a clean or small diff; never fabricate issues to hit one.
155
+ 5. Classify each real finding: HIGH / MEDIUM / LOW.
156
156
  6. **Gate:** If any HIGH severity finding exists, loop back to Phase 3 to fix it. MEDIUM and LOW findings are noted in the ship report but do not block. Maximum 2 review-fix loops before halting.
157
157
 
158
158
  Proceed automatically to Phase 6.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcane-cli",
3
- "version": "0.32.3",
3
+ "version": "0.32.4",
4
4
  "description": "Arcane framework CLI — scaffold and manage governance files in consuming repositories",
5
5
  "keywords": [
6
6
  "arcane",