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.
|
|
155
|
-
5. Classify
|
|
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.
|