arcane-cli 0.29.2 → 0.29.3

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.
@@ -36,9 +36,9 @@ Define one block per agent. Each agent gets its own isolated workspace root, plu
36
36
 
37
37
  **Conventions:**
38
38
 
39
- - Each agent operates from its own `workspace-{agent}` root — never a shared tree — so concurrent agents don't collide.
40
- - Grant the narrowest access that lets the agent do its job (research agents: `Read-only`; builders: `Read/Write`).
41
- - The operator's primary working tree is never an approved agent path.
39
+ - **Each agent operates from its own `workspace-{agent}` root. Enforcement: explicitly advisory prose (ARC-023) — this describes a convention for the operator's own agent-fleet setup; no check in this repository verifies that any agent actually runs from an isolated workspace root.** — never a shared tree — so concurrent agents don't collide.
40
+ - **Grant the narrowest access that lets the agent do its job. Enforcement: explicitly advisory prose (ARC-023) — which access level counts as "narrowest" for a given agent is a judgment call; no check verifies the grant against actual job scope.** (research agents: `Read-only`; builders: `Read/Write`).
41
+ - **The operator's primary working tree is never an approved agent path. Enforcement: explicitly advisory prose (ARC-023) — no check cross-references this file's approved-path rows against the operator's actual working-tree path to catch a violation.**
42
42
 
43
43
  ---
44
44
 
@@ -46,15 +46,15 @@ Define one block per agent. Each agent gets its own isolated workspace root, plu
46
46
 
47
47
  When a request targets a repo that is expected to be inside an approved root:
48
48
 
49
- 1. Perform read-only discovery first (list/find/read).
50
- 2. If path exists, continue task without asking for duplicate authorization.
51
- 3. If not found, request the exact path from the operator.
52
- 4. Do not search outside approved roots.
49
+ 1. **Perform read-only discovery first. Enforcement: explicitly advisory prose (ARC-023) — the same behavior universal-agent-rules.md rule 20 covers; no check verifies that an agent actually performs read-only discovery before proceeding.** (list/find/read).
50
+ 2. **If path exists, continue task without asking for duplicate authorization. Enforcement: explicitly advisory prose (ARC-023) — whether an agent treats prior discovery as sufficient and skips a redundant ask is a judgment call; no check verifies this occurred.**
51
+ 3. **If not found, request the exact path from the operator. Enforcement: explicitly advisory prose (ARC-023) — the same "before claiming no access" behavior universal-agent-rules.md rule 20 covers; no check verifies an agent actually asks rather than assuming access is absent.**
52
+ 4. **Do not search outside approved roots. Enforcement: explicitly advisory prose (ARC-023) — no check inspects an agent's actual filesystem access to confirm it stayed within approved roots.**
53
53
 
54
54
  ---
55
55
 
56
56
  ## Change Control
57
57
 
58
- - Add/remove paths only through documentation update in this file.
59
- - Reflect material scope changes in [[agents/agent-policies|agent-policies.md]].
60
- - If access boundaries meaningfully change risk posture, record an ADR.
58
+ - **Add/remove paths only through documentation update in this file. Enforcement: explicitly advisory prose (ARC-023) — no check cross-references actual agent path grants against this document to catch an undocumented change.**
59
+ - **Reflect material scope changes in [[agents/agent-policies|agent-policies.md]]. Enforcement: explicitly advisory prose (ARC-023) — whether a scope change is "material" enough to require an update, and whether the update happens, both depend on agent judgment; no check cross-validates this file against agent-policies.md.**
60
+ - **If access boundaries meaningfully change risk posture, record an ADR. Enforcement: explicitly advisory prose (ARC-023) — `check:adr-references` verifies that ADR citations elsewhere resolve, not that a change to this file actually triggered a new ADR.**
@@ -18,6 +18,8 @@ Defines a single markdown-first queue for assigning work across businesses, whil
18
18
  - Queue rows include execution host and approval gate so autonomy stays explicit.
19
19
  - {BUSINESS_NAME} starts first; same structure extends to AcmeStore and other businesses.
20
20
 
21
+ **This document specifies a queue design that has not been implemented anywhere in this codebase — no queue instance exists yet, and this document's own frontmatter is still `status: draft` (see the `## Next Action` section below). Enforcement: explicitly advisory prose (ARC-023) — every principle, field, and rollout step that follows is advisory guidance only, since no code, spell, or platform check exists yet to enforce any of it.**
22
+
21
23
  ---
22
24
 
23
25
  ## Queue Principles
@@ -24,16 +24,19 @@ This document provides rationale for authentication decisions across an agent ru
24
24
  - Bearer tokens (PATs, API keys) can be replayed if intercepted once
25
25
  - Prefer challenge/response authentication (SSH, OAuth) when available
26
26
  - When bearer tokens are required, store them as environment variables via a secret-reference pattern
27
+ - **Enforcement: explicitly advisory prose (ARC-023) — these two practices govern a downstream operator's own authentication mechanism and secret storage; no code or spell in this repository observes which mechanism or pattern is actually used.**
27
28
 
28
29
  **2. Credential Isolation**
29
30
  - Each service/agent uses separate credentials with minimal required scope
30
31
  - Credentials stored outside version control (`.env`, system keychains, secret managers)
31
32
  - Rotation/revocation must be straightforward without config file changes
33
+ - **Enforcement: explicitly advisory prose (ARC-023) — credential scoping, storage location, and rotation ease are properties of a downstream operator's own credential stores; no script in this repository inspects a consumer's `.env` files, keychains, or secret managers.**
32
34
 
33
35
  **3. Defense in Depth**
34
36
  - Authentication is one layer; combine with network isolation (loopback bind, VPN/tunnel)
35
37
  - Audit logging for all credential operations
36
38
  - Regular review of active credentials and permissions
39
+ - **Enforcement: explicitly advisory prose (ARC-023) — network isolation, audit logging, and credential review are carried out entirely in the operator's own infrastructure; this repository ships no gateway, log pipeline, or scheduled check that observes them.**
37
40
 
38
41
  ## Authentication Contexts
39
42
 
@@ -47,6 +50,8 @@ This document provides rationale for authentication decisions across an agent ru
47
50
  - Private key remains local at `~/.ssh/id_*` (`600` permissions)
48
51
  - Git remote configured to use the SSH URL
49
52
 
53
+ **Enforcement: explicitly advisory prose (ARC-023) — this decision and its mechanism and implementation-notes steps configure a downstream operator's own Git host account and local filesystem; Arcane ships no code that checks which credential type is registered with the Git host or that verifies key-file permissions.**
54
+
50
55
  **Why SSH Over PAT:**
51
56
 
52
57
  1. **Bearer Token Replay Risk**
@@ -95,6 +100,8 @@ This document provides rationale for authentication decisions across an agent ru
95
100
  - Store the key as an environment variable (e.g. in a `.env` file)
96
101
  - Reference it in config via a secret-reference rather than embedding the value
97
102
 
103
+ **Enforcement: explicitly advisory prose (ARC-023) — this decision and its mechanism and implementation-notes steps configure a downstream operator's own model-provider account and local secret storage; Arcane ships no code that verifies key scope, storage location, or file permissions.**
104
+
98
105
  **Why Scoped Keys Over Personal Keys:**
99
106
 
100
107
  1. **Organizational Boundary**
@@ -132,6 +139,8 @@ This document provides rationale for authentication decisions across an agent ru
132
139
  - Reference it from config rather than embedding the literal value
133
140
  - Require it in the HTTP header: `Authorization: Bearer <token>`
134
141
 
142
+ **Enforcement: explicitly advisory prose (ARC-023) — this decision and its mechanism and implementation-notes steps describe a gateway component operated outside this repository; Arcane's own codebase contains no gateway server to bind an address, validate a token, or enforce this header requirement.**
143
+
135
144
  **Why Token Auth:**
136
145
 
137
146
  1. **Stateless Authentication**
@@ -187,6 +196,8 @@ auth = { provider = "token", token = { source = "env", id = "SECRET_NAME" } }
187
196
  SECRET_NAME=actual-secret-value-here
188
197
  ```
189
198
 
199
+ **Enforcement: explicitly advisory prose (ARC-023) — Arcane ships no config-schema validator or lint rule in this repository that checks a downstream repo's config for inline secrets versus this reference pattern; adoption depends on the operator's own discipline.**
200
+
190
201
  **Benefits:**
191
202
  - Config files are version-controlled without exposing secrets
192
203
  - Secrets are rotated by editing the secret store only (no config changes)
@@ -212,6 +223,8 @@ Regular review (quarterly):
212
223
  - [ ] Grep the codebase for hardcoded secrets (should find zero matches)
213
224
  - [ ] Review the security audit log for any anomalous credential operations
214
225
 
226
+ **Enforcement: explicitly advisory prose (ARC-023) — this checklist runs on operator judgment and cadence; no scheduled task, spell gate, or CI check in this repository executes or verifies these items.**
227
+
215
228
  ---
216
229
 
217
230
  ## References
@@ -20,6 +20,8 @@ Step-by-step hardening for a Linux host that will run an autonomous agent runtim
20
20
 
21
21
  See also: [Threat Model](threat-model.md), [Authentication Strategy](authentication-strategy.md)
22
22
 
23
+ **Enforcement: explicitly advisory prose (ARC-023) — every item below configures a downstream operator's own Linux host, a target outside anything Arcane's own CI or spells can inspect; completion is tracked only in the operator's own security audit log, not by any Arcane mechanism.**
24
+
23
25
  ---
24
26
 
25
27
  ## Pre-Checklist: Know Your Environment
@@ -24,9 +24,9 @@ How machines, AI agents, and systems are named across your projects. This is a *
24
24
 
25
25
  Two rules govern every name in the system.
26
26
 
27
- **The Naming Test:** if an established industry term exists for the thing, use the real term — a universe name has to be *earned* by the absence of one. Two dialects result: magic grammar for the personas and vocabulary, plain functional payloads for everything technical. Corollary: the more autonomous the tool, the more boring its name should be.
27
+ **The Naming Test:** if an established industry term exists for the thing, use the real term — a universe name has to be *earned* by the absence of one. Two dialects result: magic grammar for the personas and vocabulary, plain functional payloads for everything technical. Corollary: the more autonomous the tool, the more boring its name should be. **Enforcement: explicitly advisory prose (ARC-023) — whether a real industry term already exists is a judgment call; no check screens a candidate name against this test.**
28
28
 
29
- **The IP rule:** persona names must be **public domain or your own coinage**. No living people. No franchise-coined characters — a borrowed name is owned by whoever coined it, no matter how well it fits. Before any name ships, run the four checks: who coined it; does an estate still do business in it; do same-audience products already claim it (search live — don't trust memory); and what is its first association in each market you operate in, said aloud in every language your team speaks.
29
+ **The IP rule:** persona names must be **public domain or your own coinage**. No living people. No franchise-coined characters — a borrowed name is owned by whoever coined it, no matter how well it fits. Before any name ships, run the four checks: who coined it; does an estate still do business in it; do same-audience products already claim it (search live — don't trust memory); and what is its first association in each market you operate in, said aloud in every language your team speaks. **Enforcement: explicitly advisory prose (ARC-023) — the four checks depend on human judgment and live research; `spell-scry` can perform this exact check but nothing requires it before an agent name is assigned, and the naming step in `src/modules/naming.ts` validates only that a typed name is non-empty.**
30
30
 
31
31
  Names should be memorable, distinctive, and never repeated across categories.
32
32
 
@@ -70,6 +70,7 @@ Agents get persona names paired with a role. The persona name is the primary ide
70
70
  - An agent may serve multiple projects but keeps the same name and role everywhere.
71
71
  - If an agent's role changes significantly, it gets a new name (don't reuse names for different roles).
72
72
  - If you collaborate with other operators who run their own Arcane instances, reserve names across instances so they don't collide.
73
+ - **Enforcement: explicitly advisory prose (ARC-023) — no code checks persona-name uniqueness within a roster, across projects, or across Arcane instances; `agent-schema.ts`'s roster validation checks each entry's shape only.**
73
74
 
74
75
  ### Default Roster (Arcane personas)
75
76
 
@@ -107,9 +108,9 @@ The table above is the human-readable roster; agent definitions (`agents/*.yaml`
107
108
 
108
109
  **Role consolidation (ADR-031):** Framework-specific dev roles (.NET, Blazor, React, Flutter, MAUI) are consolidated into generic roles (Full-Stack, Frontend, Mobile). The framework/stack is a prompt parameter, not an agent identity. This scales without needing a new agent for every technology.
109
110
 
110
- **Naming policy:** All agent names should be positive characters — beings, not objects — with a clear thematic connection to their role.
111
+ **Naming policy:** All agent names should be positive characters — beings, not objects — with a clear thematic connection to their role. **Enforcement: explicitly advisory prose (ARC-023) — character and tone are a judgment call; `agent-schema.ts` validates that a name is a non-empty string, not its thematic content.**
111
112
 
112
- **Canonical agent identity domain:** Use a single domain for all agent and tool Git identities — e.g., `merlin@{OPERATOR_DOMAIN}`. See [[DECISIONS#ADR-028|ADR-028]] for the full attribution model.
113
+ **Canonical agent identity domain:** Use a single domain for all agent and tool Git identities — e.g., `merlin@{OPERATOR_DOMAIN}`. See [[DECISIONS#ADR-028|ADR-028]] for the full attribution model. **Enforcement: explicitly advisory prose (ARC-023) — no commit-trailer or identity check verifies that every agent/tool email shares one domain; `git-conventions.md`'s Required Commit Trailers table validates trailer presence, not the author-email domain.**
113
114
 
114
115
  ### Power Levels (ADR-032)
115
116
 
@@ -38,6 +38,8 @@ Have the following ready:
38
38
 
39
39
  ## Phase 1 — Project & Repo Setup
40
40
 
41
+ **Every step in this phase is performed by hand in your version-control host's UI. Enforcement: explicitly advisory prose (ARC-023) — project, repo, and template creation happen entirely on the external VCS host, which no script or CI check in this repo observes or verifies.**
42
+
41
43
  ### Step 1.1 — Create the Project
42
44
 
43
45
  1. Open your version-control host's project organization
@@ -82,6 +84,8 @@ In your docs/ops repo, copy `ventures/_template/` to `ventures/{venture}/` as a
82
84
 
83
85
  ## Phase 2 — Infrastructure & Security
84
86
 
87
+ **The security checklist and docs-repo clone in this phase are unverified operator actions. Enforcement: explicitly advisory prose (ARC-023) — no script or CI check in this repo confirms these steps were completed or completed correctly.**
88
+
85
89
  ### Step 2.1 — Confirm Security Baseline
86
90
 
87
91
  Before running the agent runtime for any new business, verify:
@@ -101,6 +105,8 @@ git clone <docs-repo-url> ~/code/{repo}
101
105
 
102
106
  ## Phase 3 — Agent Runtime Configuration
103
107
 
108
+ **Steps 3.1, 3.2, and 3.4 (runtime install, configuration, and the dry-run test) are manual operator actions. Enforcement: explicitly advisory prose (ARC-023) — no script or CI check in this repo verifies the agent runtime was installed, configured, or dry-run tested before live use.**
109
+
104
110
  ### Step 3.1 — Install the Agent Runtime (if not already installed)
105
111
 
106
112
  See [[agents/installation|Runtime Installation]].
@@ -113,6 +119,8 @@ See [[agents/installation|Runtime Installation]].
113
119
 
114
120
  ### Step 3.3 — Agent Git Identity Setup
115
121
 
122
+ **Registering an agent's persona, Git identity, and `.mailmap` entry, and running the verify command below, are self-administered. Enforcement: explicitly advisory prose (ARC-023) — no script or CI check validates `.mailmap` entries or roster registration; the verify command is a manual smoke test, distinct from `spell-commit-work`'s Step 8 gate, which governs the commit action itself, not agent registration.**
123
+
116
124
  Every agent that will produce commits for this business must have a registered Git identity **before making its first commit**. See [[git-conventions#agent-attribution-model|Git Conventions — Agent Attribution]].
117
125
 
118
126
  For each agent assigned to this business:
@@ -141,6 +149,8 @@ Run the agent runtime in dry-run / observation mode first. Do not let it execute
141
149
 
142
150
  ## Phase 4 — Legal Baseline
143
151
 
152
+ **Every step in this phase happens outside Arcane — entity structuring, tax registration, and ToS review. Enforcement: explicitly advisory prose (ARC-023) — these are legal and tax determinations on external systems that no script or CI check in this repo can observe or verify.**
153
+
144
154
  ### Step 4.1 — Business Entity
145
155
 
146
156
  - Confirm operations run under {LLC_NAME}
@@ -161,6 +171,8 @@ Run the agent runtime in dry-run / observation mode first. Do not let it execute
161
171
 
162
172
  ## Phase 5 — First Launch Checklist
163
173
 
174
+ **This launch checklist is self-attested against external systems (the selling platform, the agent runtime's monitoring). Enforcement: explicitly advisory prose (ARC-023) — no script or CI check in this repo confirms any item below; the operator marks each complete by judgment.**
175
+
164
176
  - [ ] At least 10 product listings live (or equivalent for non-e-commerce)
165
177
  - [ ] Order/fulfillment workflow tested end-to-end
166
178
  - [ ] The agent runtime running and monitored (see `agents/monitoring.md`)
@@ -34,7 +34,7 @@ ventures/ Prototypes features/ business repo
34
34
 
35
35
  #### Concept (`ventures/<name>/`)
36
36
 
37
- The permanent record of every idea — good, bad, or deferred. Ideas are **never deleted**. Frontmatter `status` tracks where each idea is in its lifecycle.
37
+ The permanent record of every idea — good, bad, or deferred. Ideas are **never deleted**. **Enforcement: explicitly advisory prose (ARC-023) — no code in this repo checks for or blocks deletion of files under `ventures/<name>/`; this depends on human/agent discipline.** Frontmatter `status` tracks where each idea is in its lifecycle.
38
38
 
39
39
  **Required files:**
40
40
  - `overview.md` — What is it? Why does it matter? Who is it for? (Minimum viable concept doc.)
@@ -45,7 +45,7 @@ The permanent record of every idea — good, bad, or deferred. Ideas are **never
45
45
  - `stories.json` — If architecture produced story breakdown
46
46
  - Screenshots in `assets/screenshots/YYYY-MM-DD/` (linked from docs)
47
47
 
48
- **What does NOT belong here:** Code files (`.js`, `.ts`, `.py`, `.html`, `.css`, etc.). The docs repo is a documentation-only repository.
48
+ **What does NOT belong here:** Code files (`.js`, `.ts`, `.py`, `.html`, `.css`, etc.). The docs repo is a documentation-only repository. **Enforcement: explicitly advisory prose (ARC-023) — [[governance/agent-policies|Agent Policies]]'s repo-routing rule states the general version of this restriction; this file restates it for the docs repo specifically rather than asserting independent enforcement, and no lint/CI check here rejects code file extensions.**
49
49
 
50
50
  #### Prototype (Prototypes repo)
51
51
 
@@ -57,7 +57,7 @@ Small, self-contained, throwaway code that demonstrates a concept. Prototypes ar
57
57
 
58
58
  **Folder convention:** `<name>/` at repo root (e.g., `magic-prompt/`, `self-healing-poc/`)
59
59
 
60
- **No governance overhead:** No PRs required, no work items, no branch policies. This is a sandbox. Commit directly to main.
60
+ **No governance overhead:** No PRs required, no work items, no branch policies. This is a sandbox. Commit directly to main. **Enforcement: explicitly advisory prose (ARC-023) — this is a deliberate low-ceremony policy choice, not a constraint with a pass/fail check to enforce.**
61
61
 
62
62
  #### Feature (`features/{id}-{slug}/`)
63
63
 
@@ -116,7 +116,7 @@ Ideas evolve. Track iterations without complex versioning:
116
116
 
117
117
  2. **Screenshots:** Save evidence of each meaningful state to `assets/screenshots/YYYY-MM-DD/` per [[assets/screenshots/README|screenshot conventions]]. Link from the changelog.
118
118
 
119
- 3. **Git history is the version control.** Don't create `v1/`, `v2/` folders. The idea folder is a living document — git tracks every change.
119
+ 3. **Git history is the version control.** Don't create `v1/`, `v2/` folders. The idea folder is a living document — git tracks every change. **Enforcement: explicitly advisory prose (ARC-023) — no check inspects idea folders for `v1/`/`v2/`-style version directories; this depends on human/agent discipline.**
120
120
 
121
121
  ---
122
122
 
@@ -128,10 +128,10 @@ No formal gate. If someone (human or agent) wants to see the idea running, gener
128
128
 
129
129
  ### Concept/Prototype → Feature
130
130
 
131
- All of these must be true:
131
+ All of these must be true: **Enforcement: explicitly advisory prose (ARC-023) — no spell checks these four criteria before a `status: promoted` transition; `spell-plan` satisfies only the fourth criterion (a PRD exists) and does not gate the others, and `spell-manifest`'s promotion flow uses a separate idea-book status marker, not this file's ventures frontmatter.**
132
132
  - [ ] A tracker work item exists (User Story or Feature)
133
133
  - [ ] A business track owns it (maps to a `ventures/<name>/` folder or a project)
134
- - [ ] A target code repo exists (or needs to be created; repo creation is human-only)
134
+ - [ ] A target code repo exists (or needs to be created; repo creation is human-only) **Enforcement: explicitly advisory prose (ARC-023) — [[governance/agent-policies|Agent Policies]] is the canonical statement of this rule (Spectator-level, human-only); this restates it rather than asserting independent enforcement, and no code under `src/commands/` implements repo creation for a check to gate in the first place.**
135
135
  - [ ] The idea has at least a PRD (`spell-plan` output)
136
136
 
137
137
  When promoted: update the idea's frontmatter to `status: promoted` with `promoted_to` metadata. The idea folder stays in arcane forever as the historical record.
@@ -166,7 +166,7 @@ In the vibe coding era, a well-written spec can regenerate a prototype in minute
166
166
  |---|---|
167
167
  | [[governance/development-methodology\|Spell Loop]] | Ideas enter the loop at `spell-plan`. Concept stage is pre-loop exploration. |
168
168
  | Repo routing | Code → code repos. Docs → the docs repo. Prototypes → Prototypes repo. |
169
- | Repo governance | Repo creation is human-only. Prototypes repo is a single shared repo, not per-POC. |
169
+ | Repo governance | Repo creation is human-only. **Enforcement: explicitly advisory prose (ARC-023) — [[governance/agent-policies\|Agent Policies]] is the canonical statement of this rule; this table restates it rather than asserting independent enforcement.** Prototypes repo is a single shared repo, not per-POC. |
170
170
  | Feature folders | Feature planning artifacts live in the target code repo under `features/`. |
171
171
  | `ventures/<name>/` | Business-level docs for shipped products. Ideas that graduate here are fully promoted. |
172
172
 
@@ -64,16 +64,16 @@ superseded_by: path/to/replacement.md
64
64
 
65
65
  Rules:
66
66
 
67
- - `superseded_by` is required. A tombstone that does not say what replaced it is
67
+ - **`superseded_by` is required. Enforcement: explicitly advisory prose (ARC-023) — no script checks a superseded document's frontmatter for this field.** A tombstone that does not say what replaced it is
68
68
  worse than no tombstone: it tells the reader to stop without telling them
69
69
  where to go.
70
- - If a document was superseded by *several* documents, list all of them.
71
- - If a document was retired without replacement, say so explicitly
72
- (`superseded_by: none — <reason>`), rather than leaving the field off.
73
- - Do not delete the original content. The tombstone is a header, not a
70
+ - **If a document was superseded by *several* documents, list all of them. Enforcement: explicitly advisory prose (ARC-023) — no script cross-checks the list against the document's actual replacements.**
71
+ - **If a document was retired without replacement, say so explicitly
72
+ (`superseded_by: none — <reason>`), rather than leaving the field off. Enforcement: explicitly advisory prose (ARC-023) — no script distinguishes this explicit form from an omitted field.**
73
+ - **Do not delete the original content. Enforcement: explicitly advisory prose (ARC-023) — no diff check runs when a tombstone is added, so nothing confirms the body underneath is untouched.** The tombstone is a header, not a
74
74
  replacement for the body.
75
- - **Add the reverse link on the replacement**, so the relationship is
76
- discoverable from either end. A reader who finds only the current document
75
+ - **Add the reverse link on the replacement, so the relationship is
76
+ discoverable from either end. Enforcement: explicitly advisory prose (ARC-023) — no script checks that a `supersedes` field exists on the named replacement.** A reader who finds only the current document
77
77
  should still be able to see what it replaced:
78
78
 
79
79
  ```yaml
@@ -91,7 +91,7 @@ Supersession and deletion are different decisions and must not be conflated.
91
91
  Marking a document superseded is a routine editorial act. Deleting it is not.
92
92
 
93
93
  **Deletion is prohibited without an explicit, recorded decision when any of the
94
- following is true:**
94
+ following is true. Enforcement: explicitly advisory prose (ARC-023) — none of the four conditions below is checked by a script; `content_sensitivity`'s value is schema-validated, but nothing gates deletion on it.**
95
95
 
96
96
  - The document records a decision, agreement, or obligation that other parties
97
97
  relied on.
@@ -101,8 +101,8 @@ following is true:**
101
101
  - The repository is marked `content_sensitivity: sensitive` and the document's
102
102
  own existence is part of the record.
103
103
 
104
- When deletion *is* approved, record it: what was deleted, when, on whose
105
- authority, and why. A deletion nobody can account for later is indistinguishable
104
+ **When deletion *is* approved, record it: what was deleted, when, on whose
105
+ authority, and why. Enforcement: explicitly advisory prose (ARC-023) — no script checks that a deletion record exists after the fact.** A deletion nobody can account for later is indistinguishable
106
106
  from data loss.
107
107
 
108
108
  **Arcane does not ship a retention schedule.** Retention periods are
@@ -50,7 +50,7 @@ See also: [Hardening Checklist](hardening-checklist.md), [Authentication Strateg
50
50
  | Supply chain (package installs) | **Mitigated** | Global package installs use a user-owned directory, not a system directory. No `sudo` during install. |
51
51
  | Inter-machine communication | **Mitigated** | Encrypted mesh tunnel/VPN. No direct unencrypted LAN communication. |
52
52
  | Token/credential exposure (at rest) | **Mitigated** | Token stored as an env var in a `.env` file. Config uses a secret reference, not plaintext. State directory is mode `700`. |
53
- | Credential committed to version control | **Not mitigated** | Storage conventions are documented (secret references, `.gitignore` entries for `.env`/`*.pem`/`*.key`) but **no detection exists** — no scanner runs on the commit path, the push path, or in CI, and nothing verifies the conventions were followed. `spell-security-review`'s secrets step is an on-demand agent read, not a control. Treat every credential that reaches a commit as compromised and rotate it — history, existing clones, and remote backups all survive deleting the file (EF-35). |
53
+ | Credential committed to version control | **Not mitigated** | Storage conventions are documented (secret references, `.gitignore` entries for `.env`/`*.pem`/`*.key`) but **no detection exists** — no scanner runs on the commit path, the push path, or in CI, and nothing verifies the conventions were followed. `spell-security-review`'s secrets step is an on-demand agent read, not a control. **Treat every credential that reaches a commit as compromised and rotate it — history, existing clones, and remote backups all survive deleting the file (EF-35). Enforcement: explicitly advisory prose (ARC-023) — rotating a leaked credential happens at the third-party provider that issued it; no Arcane mechanism can perform or verify that a specific credential was actually rotated.** |
54
54
 
55
55
  ---
56
56
 
@@ -94,11 +94,11 @@ This policy defines which collaborators can access which project data. Enforce b
94
94
 
95
95
  ### Enforcement
96
96
 
97
- - Project-level isolation is the primary boundary: each business is a separate project with its own access control.
98
- - A partner's access is limited to a single business's project, through a dedicated org only.
99
- - An operations co-owner receives access only to their business's project and relevant platform accounts — not to infrastructure configs.
100
- - System-level and multi-business reference documentation stays private to the owner unless explicitly shared.
101
- - New collaborator access requires an explicit entry in this table and an entry in the security audit log.
97
+ - **Project-level isolation is the primary boundary: each business is a separate project with its own access control. Enforcement: explicitly advisory prose (ARC-023) — isolation depends on the owner actually configuring separate platform projects/repos with distinct access control; `spell doctor`'s `checkPlatformBranchPolicy` (src/modules/platform-policy.ts) verifies only branch merge-method policy and `checkDelegations` (src/commands/doctor.ts) verifies only agent power-level delegations, so no Arcane check queries collaborator or team membership to verify a given business's project is actually isolated.**
98
+ - **A partner's access is limited to a single business's project, through a dedicated org only. Enforcement: explicitly advisory prose (ARC-023) — depends on the owner correctly scoping the partner's platform account to a single org; no Arcane check inspects collaborator or team membership to verify a partner's actual access is so limited.**
99
+ - **An operations co-owner receives access only to their business's project and relevant platform accounts — not to infrastructure configs. Enforcement: explicitly advisory prose (ARC-023) — depends on the owner correctly scoping platform-account grants; no Arcane check inspects collaborator permissions to verify infrastructure configs are actually excluded.**
100
+ - **System-level and multi-business reference documentation stays private to the owner unless explicitly shared. Enforcement: explicitly advisory prose (ARC-023) — depends on the owner's manual sharing decisions; no Arcane check inspects document visibility or sharing state to verify this boundary holds.**
101
+ - **New collaborator access requires an explicit entry in this table and an entry in the security audit log. Enforcement: explicitly advisory prose (ARC-023) — a manual documentation discipline; no Arcane check verifies this table was updated or that a corresponding security audit log entry exists, and the security audit log itself is a manual record referenced across governance docs, not a system Arcane reads or writes.**
102
102
 
103
103
  ---
104
104
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcane-cli",
3
- "version": "0.29.2",
3
+ "version": "0.29.3",
4
4
  "description": "Arcane framework CLI — scaffold and manage governance files in consuming repositories",
5
5
  "keywords": [
6
6
  "arcane",