arcane-cli 0.14.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.
- package/LICENSE +21 -0
- package/README.md +253 -0
- package/dist/assets/.arcane/agents/agent-policies-template.md +414 -0
- package/dist/assets/.arcane/governance/agent-approved-paths.md +60 -0
- package/dist/assets/.arcane/governance/agent-policies.md +414 -0
- package/dist/assets/.arcane/governance/agent-work-queue-model.md +61 -0
- package/dist/assets/.arcane/governance/authentication-strategy.md +220 -0
- package/dist/assets/.arcane/governance/cicd-standards.md +227 -0
- package/dist/assets/.arcane/governance/decision-documentation-standard.md +335 -0
- package/dist/assets/.arcane/governance/development-methodology.md +384 -0
- package/dist/assets/.arcane/governance/git-conventions.md +759 -0
- package/dist/assets/.arcane/governance/hardening-checklist.md +117 -0
- package/dist/assets/.arcane/governance/naming-conventions.md +142 -0
- package/dist/assets/.arcane/governance/new-business-setup.md +182 -0
- package/dist/assets/.arcane/governance/poc-management-pattern.md +190 -0
- package/dist/assets/.arcane/governance/portable-bootstrap.md +101 -0
- package/dist/assets/.arcane/governance/product-excellence-standards.md +211 -0
- package/dist/assets/.arcane/governance/rca-process-standard.md +157 -0
- package/dist/assets/.arcane/governance/spell-authoring-standards.md +129 -0
- package/dist/assets/.arcane/governance/testing-standards.md +158 -0
- package/dist/assets/.arcane/governance/threat-model.md +104 -0
- package/dist/assets/.arcane/governance/universal-agent-rules.md +108 -0
- package/dist/assets/.arcane/image-prompts/adelaide-image-prompt.md +140 -0
- package/dist/assets/.arcane/image-prompts/alexander-image-prompt.md +138 -0
- package/dist/assets/.arcane/image-prompts/bess-image-prompt.md +139 -0
- package/dist/assets/.arcane/image-prompts/circe-image-prompt.md +143 -0
- package/dist/assets/.arcane/image-prompts/custodio-image-prompt.md +140 -0
- package/dist/assets/.arcane/image-prompts/iris-image-prompt.md +139 -0
- package/dist/assets/.arcane/image-prompts/kellar-image-prompt.md +141 -0
- package/dist/assets/.arcane/image-prompts/lafayette-image-prompt.md +140 -0
- package/dist/assets/.arcane/image-prompts/lince-image-prompt.md +142 -0
- package/dist/assets/.arcane/image-prompts/mercurio-image-prompt.md +140 -0
- package/dist/assets/.arcane/image-prompts/merlin-image-prompt.md +139 -0
- package/dist/assets/.arcane/image-prompts/prospero-image-prompt.md +141 -0
- package/dist/assets/.arcane/templates/venture-template/overview.md +66 -0
- package/dist/assets/.claude/commands/spell-address-review.md +9 -0
- package/dist/assets/.claude/commands/spell-arcane-version.md +9 -0
- package/dist/assets/.claude/commands/spell-architect.md +9 -0
- package/dist/assets/.claude/commands/spell-bootstrap-business.md +9 -0
- package/dist/assets/.claude/commands/spell-brainstorm.md +9 -0
- package/dist/assets/.claude/commands/spell-bug.md +9 -0
- package/dist/assets/.claude/commands/spell-bump.md +9 -0
- package/dist/assets/.claude/commands/spell-check-drift.md +9 -0
- package/dist/assets/.claude/commands/spell-close-session.md +9 -0
- package/dist/assets/.claude/commands/spell-commit-work.md +9 -0
- package/dist/assets/.claude/commands/spell-create-pull-request.md +9 -0
- package/dist/assets/.claude/commands/spell-document.md +9 -0
- package/dist/assets/.claude/commands/spell-dotnet-expert.md +9 -0
- package/dist/assets/.claude/commands/spell-eas-ios-deploy.md +9 -0
- package/dist/assets/.claude/commands/spell-enchant.md +9 -0
- package/dist/assets/.claude/commands/spell-explain-concept.md +9 -0
- package/dist/assets/.claude/commands/spell-feedback.md +9 -0
- package/dist/assets/.claude/commands/spell-full-cycle.md +9 -0
- package/dist/assets/.claude/commands/spell-generate-bot-icons.md +9 -0
- package/dist/assets/.claude/commands/spell-implement.md +9 -0
- package/dist/assets/.claude/commands/spell-open-session.md +9 -0
- package/dist/assets/.claude/commands/spell-plan.md +9 -0
- package/dist/assets/.claude/commands/spell-present-arcane.md +9 -0
- package/dist/assets/.claude/commands/spell-product-review.md +9 -0
- package/dist/assets/.claude/commands/spell-review-batch.md +9 -0
- package/dist/assets/.claude/commands/spell-review.md +9 -0
- package/dist/assets/.claude/commands/spell-save-idea.md +9 -0
- package/dist/assets/.claude/commands/spell-scope.md +9 -0
- package/dist/assets/.claude/commands/spell-security-review.md +9 -0
- package/dist/assets/.claude/commands/spell-ship.md +9 -0
- package/dist/assets/.claude/commands/spell-status.md +9 -0
- package/dist/assets/.claude/commands/spell-suggest-feature.md +9 -0
- package/dist/assets/.claude/commands/spell-test.md +9 -0
- package/dist/assets/.claude/commands/spell-todo.md +9 -0
- package/dist/assets/.github/agents/adelaide.agent.md +44 -0
- package/dist/assets/.github/agents/alexander.agent.md +43 -0
- package/dist/assets/.github/agents/bess.agent.md +42 -0
- package/dist/assets/.github/agents/circe.agent.md +43 -0
- package/dist/assets/.github/agents/custodio.agent.md +44 -0
- package/dist/assets/.github/agents/iris.agent.md +43 -0
- package/dist/assets/.github/agents/kellar.agent.md +43 -0
- package/dist/assets/.github/agents/lafayette.agent.md +42 -0
- package/dist/assets/.github/agents/lince.agent.md +43 -0
- package/dist/assets/.github/agents/mercurio.agent.md +43 -0
- package/dist/assets/.github/agents/merlin.agent.md +44 -0
- package/dist/assets/.github/agents/prospero.agent.md +43 -0
- package/dist/assets/.github/instructions/agent-output.instructions.md +48 -0
- package/dist/assets/.github/prompts/spell-address-review.prompt.md +114 -0
- package/dist/assets/.github/prompts/spell-arcane-version.prompt.md +82 -0
- package/dist/assets/.github/prompts/spell-architect.prompt.md +116 -0
- package/dist/assets/.github/prompts/spell-bootstrap-business.prompt.md +73 -0
- package/dist/assets/.github/prompts/spell-brainstorm.prompt.md +124 -0
- package/dist/assets/.github/prompts/spell-bug.prompt.md +109 -0
- package/dist/assets/.github/prompts/spell-bump.prompt.md +73 -0
- package/dist/assets/.github/prompts/spell-check-drift.prompt.md +97 -0
- package/dist/assets/.github/prompts/spell-close-session.prompt.md +189 -0
- package/dist/assets/.github/prompts/spell-commit-work.prompt.md +211 -0
- package/dist/assets/.github/prompts/spell-create-pull-request.prompt.md +170 -0
- package/dist/assets/.github/prompts/spell-document.prompt.md +83 -0
- package/dist/assets/.github/prompts/spell-dotnet-expert.prompt.md +117 -0
- package/dist/assets/.github/prompts/spell-eas-ios-deploy.prompt.md +183 -0
- package/dist/assets/.github/prompts/spell-enchant.prompt.md +385 -0
- package/dist/assets/.github/prompts/spell-explain-concept.prompt.md +69 -0
- package/dist/assets/.github/prompts/spell-feedback.prompt.md +113 -0
- package/dist/assets/.github/prompts/spell-full-cycle.prompt.md +201 -0
- package/dist/assets/.github/prompts/spell-generate-bot-icons.prompt.md +84 -0
- package/dist/assets/.github/prompts/spell-implement.prompt.md +101 -0
- package/dist/assets/.github/prompts/spell-open-session.prompt.md +116 -0
- package/dist/assets/.github/prompts/spell-plan.prompt.md +145 -0
- package/dist/assets/.github/prompts/spell-present-arcane.prompt.md +188 -0
- package/dist/assets/.github/prompts/spell-product-review.prompt.md +97 -0
- package/dist/assets/.github/prompts/spell-review-batch.prompt.md +94 -0
- package/dist/assets/.github/prompts/spell-review.prompt.md +131 -0
- package/dist/assets/.github/prompts/spell-save-idea.prompt.md +83 -0
- package/dist/assets/.github/prompts/spell-scope.prompt.md +263 -0
- package/dist/assets/.github/prompts/spell-security-review.prompt.md +129 -0
- package/dist/assets/.github/prompts/spell-ship.prompt.md +104 -0
- package/dist/assets/.github/prompts/spell-status.prompt.md +85 -0
- package/dist/assets/.github/prompts/spell-suggest-feature.prompt.md +110 -0
- package/dist/assets/.github/prompts/spell-test.prompt.md +87 -0
- package/dist/assets/.github/prompts/spell-todo.prompt.md +126 -0
- package/dist/assets/DECISIONS.md +19 -0
- package/dist/assets/TODO.md +7 -0
- package/dist/assets/agents/architecture-lead.yaml +61 -0
- package/dist/assets/agents/collaborator.yaml +59 -0
- package/dist/assets/agents/devops.yaml +60 -0
- package/dist/assets/agents/frontend-dev.yaml +60 -0
- package/dist/assets/agents/fullstack-dev.yaml +59 -0
- package/dist/assets/agents/marketing-strategist.yaml +60 -0
- package/dist/assets/agents/mobile-dev.yaml +59 -0
- package/dist/assets/agents/operations-comms.yaml +58 -0
- package/dist/assets/agents/orchestrator.yaml +60 -0
- package/dist/assets/agents/qa-lead.yaml +60 -0
- package/dist/assets/agents/research-analyst.yaml +59 -0
- package/dist/assets/agents/security-ops.yaml +61 -0
- package/dist/assets/ai-context/system-prompt-context.md +32 -0
- package/dist/assets/journal/.gitkeep +0 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +2313 -0
- package/dist/index.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Decision Documentation Standard
|
|
3
|
+
audience: both
|
|
4
|
+
status: active
|
|
5
|
+
distributable: true
|
|
6
|
+
tags: [governance, decisions, documentation, standards]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Decision Documentation Standard
|
|
10
|
+
|
|
11
|
+
This document defines how significant decisions are documented in this repository. It establishes the relationship between lean Architecture Decision Records (ADRs) and detailed companion documentation.
|
|
12
|
+
|
|
13
|
+
## Executive Summary
|
|
14
|
+
|
|
15
|
+
- ADRs remain lean for scanability; companion topic docs hold full rationale and trade-off depth.
|
|
16
|
+
- Every complex ADR should include a “Deep dive” link to a discoverable topic doc.
|
|
17
|
+
- Companion docs must link back to related ADRs to preserve bidirectional navigation in Obsidian.
|
|
18
|
+
- This standard exists to make “why X over Y?” answerable from one shareable file.
|
|
19
|
+
|
|
20
|
+
## Related ADRs
|
|
21
|
+
|
|
22
|
+
- [[DECISIONS#ADR-002|ADR-002: Documentation in Markdown + Git]]
|
|
23
|
+
- [[DECISIONS#ADR-011|ADR-011: Troubleshooting Standard]]
|
|
24
|
+
|
|
25
|
+
## Decision Prefixes
|
|
26
|
+
|
|
27
|
+
Arcane separates framework-level decisions from org-specific ones using two prefixes:
|
|
28
|
+
|
|
29
|
+
| Prefix | File | Scope |
|
|
30
|
+
| --------- | --------------------- | ------------------------------------------------------------------------------------ |
|
|
31
|
+
| `ADR-NNN` | `DECISIONS.md` | Org-specific decisions (ventures, infrastructure, runtime config, org conventions) |
|
|
32
|
+
| `ARC-NNN` | `arcane/DECISIONS.md` | Arcane framework decisions (spell library, CLI, agent system, governance templates) |
|
|
33
|
+
|
|
34
|
+
**Rules:**
|
|
35
|
+
|
|
36
|
+
- If the decision would apply to any organization using Arcane, it is `ARC-NNN`.
|
|
37
|
+
- If the decision is specific to how your organization operates, it is `ADR-NNN`.
|
|
38
|
+
- When uncertain, default to `ADR-NNN` in ops; promote to `ARC-NNN` later if the decision proves framework-generic.
|
|
39
|
+
- Never renumber existing entries in either sequence.
|
|
40
|
+
|
|
41
|
+
## Problem Statement
|
|
42
|
+
|
|
43
|
+
**Scannability vs. Detail Tension:**
|
|
44
|
+
|
|
45
|
+
- ADRs must be scannable (quick review of decision history)
|
|
46
|
+
- Complex decisions need deep rationale, comparisons, implementation notes
|
|
47
|
+
- Embedding all detail in ADRs makes DECISIONS.md unreadable (bloat risk)
|
|
48
|
+
- Scattering rationale across journals, audit logs, and implementation docs makes it hard to answer "why did we choose X over Y?"
|
|
49
|
+
|
|
50
|
+
**Triggered by:** Question "why SSH vs PAT?" — answer existed in [security/audit-log.md](../security/audit-log.md) but not discoverable without knowing where to look. No ADR documented the Git authentication decision.
|
|
51
|
+
|
|
52
|
+
## Solution: Two-Tier Documentation
|
|
53
|
+
|
|
54
|
+
### Tier 1: Lean ADRs in DECISIONS.md
|
|
55
|
+
|
|
56
|
+
**Purpose:** Quick-reference decision log
|
|
57
|
+
**Audience:** Anyone scanning project history
|
|
58
|
+
**Content:**
|
|
59
|
+
|
|
60
|
+
- Date, Status, Verified (with wiki-link to verification session)
|
|
61
|
+
- Context (2-3 sentences: what problem, what constraints)
|
|
62
|
+
- Decision (1 sentence: what was chosen)
|
|
63
|
+
- Reasoning (3-5 bullets: core justification)
|
|
64
|
+
- Rejected alternatives (2-3 bullets: what was considered but not chosen)
|
|
65
|
+
- **Deep dive link** (if companion doc exists): `[[path/to/detail-doc|Display Text]]`
|
|
66
|
+
|
|
67
|
+
**Keep ADRs under 20 lines** (excluding frontmatter). Longer means detail should move to companion doc.
|
|
68
|
+
|
|
69
|
+
**Naming Impact Check:** If the decision introduces, changes, or retires a name (repo, project, product, agent, service), the ADR **must** include a "Naming impact" section that:
|
|
70
|
+
|
|
71
|
+
1. Lists all existing uses of the proposed name (grep the repo)
|
|
72
|
+
2. Confirms no collision with other entities
|
|
73
|
+
3. Identifies any docs, scripts, or prompts that reference the old name
|
|
74
|
+
|
|
75
|
+
This check was added after [[governance/rcas/RCA-001-naming-collision|RCA-001]] discovered that ADR-061 named a product without checking whether the ops repo already used that name.
|
|
76
|
+
|
|
77
|
+
### Tier 2: Companion Detail Docs
|
|
78
|
+
|
|
79
|
+
**Purpose:** Deep rationale, trade-offs, implementation notes, verification procedures
|
|
80
|
+
**Audience:** Someone implementing, troubleshooting, or justifying the decision to outsiders
|
|
81
|
+
**Content:**
|
|
82
|
+
|
|
83
|
+
- Full "why X over Y" comparison with specific technical/business justification
|
|
84
|
+
- Trade-offs analysis (what we lose, why we accept it)
|
|
85
|
+
- Implementation notes (edge cases, gotchas, configuration examples)
|
|
86
|
+
- Verification procedures (how to confirm decision still valid)
|
|
87
|
+
- Future review criteria (when to re-evaluate)
|
|
88
|
+
- Related ADRs section (bidirectional links for Obsidian graph visualization)
|
|
89
|
+
|
|
90
|
+
**Location:** Domain-specific folders (security/, infrastructure/, agents/, governance/)
|
|
91
|
+
**Naming:** Topic-based, not `ADR-NNN-title.md` — groups related decisions together
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Companion Doc Creation Guidelines
|
|
96
|
+
|
|
97
|
+
### When to Create a Companion Doc
|
|
98
|
+
|
|
99
|
+
**Create a companion doc if:**
|
|
100
|
+
|
|
101
|
+
- Decision justification exceeds 5 bullets in "Reasoning" section
|
|
102
|
+
- Multiple ADRs share a common theme (e.g., authentication strategy covers ADR-007, ADR-008, ADR-009, ADR-017)
|
|
103
|
+
- Implementation has significant gotchas or edge cases
|
|
104
|
+
- Decision has ongoing review/maintenance requirements (quarterly audits, version compatibility)
|
|
105
|
+
- You anticipate "why did we do this?" questions from future team members or external auditors
|
|
106
|
+
|
|
107
|
+
**Keep detail in ADR if:**
|
|
108
|
+
|
|
109
|
+
- Reasoning fits in 3-5 clear bullets
|
|
110
|
+
- Decision is simple with no complex trade-offs
|
|
111
|
+
- Implementation is straightforward (no special notes needed)
|
|
112
|
+
- Decision unlikely to be questioned or re-evaluated
|
|
113
|
+
|
|
114
|
+
### Where to Place Companion Docs
|
|
115
|
+
|
|
116
|
+
Use existing folder structure; **do not create `deep-dives/` or `DECISIONS-details/` folders**.
|
|
117
|
+
|
|
118
|
+
| Decision Theme | Location | Example |
|
|
119
|
+
| ------------------------------------ | ------------------ | --------------------------------------------------------------------------------------- |
|
|
120
|
+
| Authentication, credentials, keys | `security/` | [security/authentication-strategy.md](../security/authentication-strategy.md) |
|
|
121
|
+
| Hardware, OS, dual-boot | `infrastructure/` | [infrastructure/compute-architecture.md](../infrastructure/compute-architecture.md) |
|
|
122
|
+
| Agent runtime config, agent policies | `agents/` | [agents/architecture-decisions.md](../agents/architecture-decisions.md) |
|
|
123
|
+
| Git, naming, documentation standards | `governance/` | This file |
|
|
124
|
+
| Business-specific operations | `ventures/{name}/` | `ventures/acme-store/DECISIONS.md`, `ventures/example-app/operations-model.md` |
|
|
125
|
+
|
|
126
|
+
**Rationale:** Keeps security knowledge with security docs, infrastructure with infrastructure, etc. Easier to discover via folder browsing.
|
|
127
|
+
|
|
128
|
+
### Naming Conventions
|
|
129
|
+
|
|
130
|
+
**Use topic-based names:**
|
|
131
|
+
|
|
132
|
+
- ✅ `security/authentication-strategy.md` — covers SSH, PATs, API keys, tokens (multiple ADRs)
|
|
133
|
+
- ✅ `infrastructure/compute-architecture.md` — covers dual-boot, Ubuntu choice, hardware sizing
|
|
134
|
+
- ❌ `security/ADR-008-deep-dive.md` — Forces 1:1 mapping, harder to group related decisions
|
|
135
|
+
|
|
136
|
+
**Filename format:** `{topic-slug}.md` (lowercase, hyphen-separated)
|
|
137
|
+
|
|
138
|
+
### Content Template
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
---
|
|
142
|
+
title: [Topic Title]
|
|
143
|
+
audience: both
|
|
144
|
+
last_updated: YYYY-MM-DD
|
|
145
|
+
status: active
|
|
146
|
+
tags: [relevant, tags]
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
# [Topic Title]
|
|
150
|
+
|
|
151
|
+
Brief description of what decisions this doc covers.
|
|
152
|
+
|
|
153
|
+
## Related ADRs
|
|
154
|
+
|
|
155
|
+
- [[DECISIONS#ADR-NNN|ADR-NNN: Short Title]]
|
|
156
|
+
- [[DECISIONS#ADR-MMM|ADR-MMM: Another Title]]
|
|
157
|
+
|
|
158
|
+
## Principles
|
|
159
|
+
|
|
160
|
+
High-level guiding principles for this decision domain (3-5 bullets).
|
|
161
|
+
|
|
162
|
+
## Decision Deep Dives
|
|
163
|
+
|
|
164
|
+
### [Decision Name]
|
|
165
|
+
|
|
166
|
+
**Context:** What problem, constraints, options available
|
|
167
|
+
|
|
168
|
+
**Decision:** What was chosen (1 sentence)
|
|
169
|
+
|
|
170
|
+
**Rationale:**
|
|
171
|
+
|
|
172
|
+
1. **First Major Point** — with technical/business justification
|
|
173
|
+
2. **Second Major Point** — with specific examples
|
|
174
|
+
3. **Third Major Point** — with comparisons to alternatives
|
|
175
|
+
|
|
176
|
+
**Trade-offs:**
|
|
177
|
+
|
|
178
|
+
- **Downside:** What we lose by choosing this
|
|
179
|
+
- **Mitigation:** How we address the downside
|
|
180
|
+
- **Chosen:** Why we accept the trade-off
|
|
181
|
+
|
|
182
|
+
**Rejected Alternatives:**
|
|
183
|
+
|
|
184
|
+
- **Alternative 1:** Why it was considered but rejected
|
|
185
|
+
- **Alternative 2:** Specific reason it didn't fit
|
|
186
|
+
|
|
187
|
+
**Verification:** How decision was confirmed working (link to audit log or journal entry)
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### [Next Decision]
|
|
192
|
+
|
|
193
|
+
...
|
|
194
|
+
|
|
195
|
+
## Future Considerations
|
|
196
|
+
|
|
197
|
+
Conditions under which this decision should be re-evaluated.
|
|
198
|
+
|
|
199
|
+
## References
|
|
200
|
+
|
|
201
|
+
- [[path/to/related-doc|Related Doc]]
|
|
202
|
+
- [[journal/YYYY-MM-DD-session-slug|Session Where Decided]]
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Linking Pattern
|
|
208
|
+
|
|
209
|
+
### ADRs Link Forward to Companion Docs
|
|
210
|
+
|
|
211
|
+
Add this section **after Reasoning, before Rejected alternatives** in the ADR:
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
**Deep dive:** [[security/authentication-strategy|Authentication Strategy]]
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Example from ADR-017:**
|
|
218
|
+
|
|
219
|
+
```markdown
|
|
220
|
+
**Reasoning:**
|
|
221
|
+
|
|
222
|
+
- PATs are bearer tokens; SSH uses challenge/response
|
|
223
|
+
- Reduces secret exposure in commands and environment variables
|
|
224
|
+
- Consistent with GitHub/GitLab industry practice
|
|
225
|
+
|
|
226
|
+
**Deep dive:** [[security/authentication-strategy#azure-devops-git-operations|Authentication Strategy — Azure DevOps]]
|
|
227
|
+
|
|
228
|
+
**Rejected alternatives:**
|
|
229
|
+
|
|
230
|
+
- PATs — bearer token replay risk
|
|
231
|
+
...
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Companion Docs Link Back to ADRs
|
|
235
|
+
|
|
236
|
+
Create "Related ADRs" section at the top of every companion doc:
|
|
237
|
+
|
|
238
|
+
```markdown
|
|
239
|
+
## Related ADRs
|
|
240
|
+
|
|
241
|
+
- [[DECISIONS#ADR-007|ADR-007: Runtime Gateway Security]]
|
|
242
|
+
- [[DECISIONS#ADR-008|ADR-008: Inter-Machine Communication]]
|
|
243
|
+
- [[DECISIONS#ADR-017|ADR-017: Git SSH Authentication]]
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Rationale:** Creates bidirectional graph edges in Obsidian visualization. Clicking ADR-017 shows link to authentication-strategy.md; clicking authentication-strategy.md shows all related ADRs.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Index-Free Discovery
|
|
251
|
+
|
|
252
|
+
**No DECISIONS-INDEX.md required.** Discovery happens via:
|
|
253
|
+
|
|
254
|
+
1. **Obsidian Graph View:** Visual clusters show related docs
|
|
255
|
+
2. **Wiki-link navigation:** Click ADR "Deep dive" link → companion doc → "Related ADRs" → back to other ADRs
|
|
256
|
+
3. **Folder browsing:** Security decisions in security/, infrastructure in infrastructure/
|
|
257
|
+
4. **Grep search:** `grep -r "authentication" **/*.md` finds all mentions
|
|
258
|
+
|
|
259
|
+
**If you need an answer:**
|
|
260
|
+
|
|
261
|
+
1. Check DECISIONS.md for high-level ADR
|
|
262
|
+
2. Follow "Deep dive" link if present
|
|
263
|
+
3. Browse domain folder (security/, infrastructure/, etc.) if no link
|
|
264
|
+
4. Search journals for session where decision was made
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Maintenance Rules
|
|
269
|
+
|
|
270
|
+
### When Editing
|
|
271
|
+
|
|
272
|
+
**If you edit an ADR:**
|
|
273
|
+
|
|
274
|
+
- Update `last_updated` in DECISIONS.md frontmatter
|
|
275
|
+
- If adding new reasoning that makes ADR >20 lines, **move detail to companion doc** instead
|
|
276
|
+
- Add "Deep dive" link if creating new companion doc
|
|
277
|
+
|
|
278
|
+
**If you edit a companion doc:**
|
|
279
|
+
|
|
280
|
+
- Update `last_updated` in companion doc frontmatter
|
|
281
|
+
- Check if related ADRs need "Deep dive" link updates (if linking pattern changed)
|
|
282
|
+
- **Do not** edit DECISIONS.md unless decision itself changed
|
|
283
|
+
|
|
284
|
+
**If you create a new ADR:**
|
|
285
|
+
|
|
286
|
+
- Decide: does this need a companion doc, or does an existing companion doc cover it?
|
|
287
|
+
- If new companion doc needed, create it first, then add "Deep dive" link in ADR
|
|
288
|
+
- If existing companion doc covers it, add new section to that doc + update "Related ADRs" list
|
|
289
|
+
|
|
290
|
+
### Quarterly Review
|
|
291
|
+
|
|
292
|
+
Every 3 months:
|
|
293
|
+
|
|
294
|
+
- [ ] Check for orphaned companion docs (docs with no ADR links pointing to them)
|
|
295
|
+
- [ ] Check for long ADRs (>20 lines) that should have detail extracted
|
|
296
|
+
- [ ] Verify Obsidian graph shows connected clusters (no isolated decision nodes)
|
|
297
|
+
- [ ] Review "Future Considerations" sections in companion docs — any re-evaluation triggers?
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Anti-Patterns (Don't Do This)
|
|
302
|
+
|
|
303
|
+
❌ **Creating `ADR-NNN-deep-dive.md` files** — Forces 1:1 mapping, prevents grouping related decisions
|
|
304
|
+
|
|
305
|
+
❌ **Duplicating content between ADR and companion doc** — ADR should summarize (3-5 bullets), companion has full detail. No copy/paste.
|
|
306
|
+
|
|
307
|
+
❌ **Putting implementation steps in companion docs** — Implementation belongs in playbooks/ or installation.md. Companion docs explain **why**, not **how** (unless "how" is a decision point).
|
|
308
|
+
|
|
309
|
+
❌ **Creating companion docs for simple decisions** — If reasoning fits in 3-5 bullets, keep it in ADR.
|
|
310
|
+
|
|
311
|
+
❌ **Forgetting bidirectional links** — Always add "Related ADRs" section in companion doc + "Deep dive" link in ADR.
|
|
312
|
+
|
|
313
|
+
❌ **Putting rationale in journals instead of companion docs** — Journals are chronological session logs (narrative). Companion docs are topic-indexed reference (structured). Rationale goes in companion docs, linked from journals.
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Evolution of This Standard
|
|
318
|
+
|
|
319
|
+
**This is ADR governance for ADRs** (meta!). Changes to this standard should be treated as significant decisions:
|
|
320
|
+
|
|
321
|
+
1. Propose change (add to TODO.md with context)
|
|
322
|
+
2. Discuss in journal session
|
|
323
|
+
3. Update this file
|
|
324
|
+
4. Add entry to DECISIONS.md if decision-making process itself changes
|
|
325
|
+
5. Announce in relevant channels (if the team expands beyond a single operator)
|
|
326
|
+
|
|
327
|
+
**Versioning note:** Per-business decisions follow this pattern — business-only decisions live in `ventures/{name}/DECISIONS.md` (unnumbered or business-prefixed); system/cross-business decisions stay in the root `DECISIONS.md`.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## References
|
|
332
|
+
|
|
333
|
+
- [[DECISIONS|Architecture Decision Records]] — The ADR list itself
|
|
334
|
+
- [[README|README]] — How to use graph view for discovery
|
|
335
|
+
- Documentation conventions — frontmatter, wiki-links, tagging
|