@polderlabs/bizar 10.7.1 → 10.7.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.
- package/.claude/agents/_shared/AGENT_BASELINE.md +266 -0
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
- package/.claude/agents/_shared/SKILLS.md +109 -0
- package/.claude/agents/brand-designer.md +55 -0
- package/.claude/agents/exec-assistant.md +34 -0
- package/.claude/agents/help-desk.md +44 -0
- package/.claude/agents/it-lead.md +53 -0
- package/.claude/agents/knowledge-manager.md +49 -0
- package/.claude/agents/office-coordinator.md +39 -0
- package/.claude/agents/office-greeter.md +53 -0
- package/.claude/agents/office-manager.md +287 -0
- package/.claude/agents/principal-engineer.md +58 -0
- package/.claude/agents/qa-reviewer.md +51 -0
- package/.claude/agents/research-analyst.md +53 -0
- package/.claude/agents/senior-engineer.md +55 -0
- package/.claude/agents/support-tech.md +87 -0
- package/.claude/agents/vp-engineering.md +54 -0
- package/.claude/commands/audit.md +48 -0
- package/.claude/commands/bizar.md +22 -0
- package/.claude/commands/cron.md +36 -0
- package/.claude/commands/explain.md +17 -0
- package/.claude/commands/goal.md +99 -0
- package/.claude/commands/init.md +15 -0
- package/.claude/commands/learn.md +46 -0
- package/.claude/commands/plan.md +35 -0
- package/.claude/commands/plow-through.md +50 -0
- package/.claude/commands/pr-review.md +49 -0
- package/.claude/commands/setup-provider.md +96 -0
- package/.claude/commands/spec.md +47 -0
- package/.claude/commands/sprint.md +43 -0
- package/.claude/commands/tailscale-serve.md +100 -0
- package/.claude/commands/team.md +132 -0
- package/.claude/commands/test.md +62 -0
- package/.claude/commands/validate.md +68 -0
- package/.claude/commands/visual-plan.md +24 -0
- package/.claude/hooks/README.md +108 -0
- package/.claude/hooks/__tests__/pretooluse-editwrite.test.mjs +146 -0
- package/.claude/hooks/__tests__/sessionend-recall.test.mjs +256 -0
- package/.claude/hooks/__tests__/sessionstart-prime.test.mjs +325 -0
- package/.claude/hooks/__tests__/thinking-route.test.mjs +319 -0
- package/.claude/hooks/auto-instinct.sh +81 -0
- package/.claude/hooks/learning-extract.mjs +92 -0
- package/.claude/hooks/post-merge-audit.sh +93 -0
- package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
- package/.claude/hooks/pretooluse-bash.mjs +87 -0
- package/.claude/hooks/pretooluse-editwrite.mjs +117 -0
- package/.claude/hooks/sessionend-recall.mjs +384 -0
- package/.claude/hooks/sessionstart-prime.mjs +278 -0
- package/.claude/hooks/thinking-route.mjs +314 -0
- package/.claude/hooks/worker-suggest.mjs +110 -0
- package/.claude/settings.json +167 -0
- package/.claude/skills/9router/SKILL.md +80 -0
- package/.claude/skills/9router-chat/SKILL.md +73 -0
- package/.claude/skills/9router-embeddings/SKILL.md +69 -0
- package/.claude/skills/9router-image/SKILL.md +86 -0
- package/.claude/skills/9router-stt/SKILL.md +79 -0
- package/.claude/skills/9router-tts/SKILL.md +80 -0
- package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
- package/.claude/skills/9router-web-search/SKILL.md +91 -0
- package/.claude/skills/agent-browser/SKILL.md +64 -0
- package/.claude/skills/bizar/README.md +9 -0
- package/.claude/skills/bizar/SKILL.md +447 -0
- package/.claude/skills/cpp-coding-standards/README.md +28 -0
- package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
- package/.claude/skills/cpp-testing/README.md +28 -0
- package/.claude/skills/cpp-testing/SKILL.md +304 -0
- package/.claude/skills/cpp-testing/references/coverage.md +370 -0
- package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
- package/.claude/skills/cpp-testing/references/mocking.md +364 -0
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
- package/.claude/skills/cubesandbox/SKILL.md +148 -0
- package/.claude/skills/de-sloppify/SKILL.md +38 -0
- package/.claude/skills/de-sloppify/cleanup.mjs +253 -0
- package/.claude/skills/de-sloppify/cleanup.test.mjs +189 -0
- package/.claude/skills/embedded-esp-idf/README.md +41 -0
- package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
- package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
- package/.claude/skills/glyph/SKILL.md +163 -0
- package/.claude/skills/harness-engineering/SKILL.md +142 -0
- package/.claude/skills/lightrag/SKILL.md +81 -0
- package/.claude/skills/memory-protocol/SKILL.md +105 -0
- package/.claude/skills/obsidian/SKILL.md +306 -0
- package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
- package/.claude/skills/self-improvement/SKILL.md +64 -0
- package/.claude/skills/skillopt/SKILL.md +129 -0
- package/.claude/skills/thinking-archetypes/SKILL.md +90 -0
- package/.claude/skills/thinking-bayesian/SKILL.md +267 -0
- package/.claude/skills/thinking-bounded-rationality/SKILL.md +406 -0
- package/.claude/skills/thinking-circle-of-competence/SKILL.md +216 -0
- package/.claude/skills/thinking-cynefin/SKILL.md +70 -0
- package/.claude/skills/thinking-debiasing/SKILL.md +192 -0
- package/.claude/skills/thinking-dual-process/SKILL.md +282 -0
- package/.claude/skills/thinking-effectuation/SKILL.md +366 -0
- package/.claude/skills/thinking-feedback-loops/SKILL.md +464 -0
- package/.claude/skills/thinking-fermi-estimation/SKILL.md +263 -0
- package/.claude/skills/thinking-first-principles/SKILL.md +167 -0
- package/.claude/skills/thinking-five-whys-plus/SKILL.md +139 -0
- package/.claude/skills/thinking-inversion/SKILL.md +195 -0
- package/.claude/skills/thinking-jobs-to-be-done/SKILL.md +363 -0
- package/.claude/skills/thinking-kepner-tregoe/SKILL.md +154 -0
- package/.claude/skills/thinking-leverage-points/SKILL.md +390 -0
- package/.claude/skills/thinking-lindy-effect/SKILL.md +331 -0
- package/.claude/skills/thinking-map-territory/SKILL.md +111 -0
- package/.claude/skills/thinking-margin-of-safety/SKILL.md +330 -0
- package/.claude/skills/thinking-model-combination/SKILL.md +406 -0
- package/.claude/skills/thinking-model-router/SKILL.md +360 -0
- package/.claude/skills/thinking-model-selection/SKILL.md +341 -0
- package/.claude/skills/thinking-occams-razor/SKILL.md +129 -0
- package/.claude/skills/thinking-ooda/SKILL.md +127 -0
- package/.claude/skills/thinking-opportunity-cost/SKILL.md +360 -0
- package/.claude/skills/thinking-pre-mortem/SKILL.md +170 -0
- package/.claude/skills/thinking-probabilistic/SKILL.md +324 -0
- package/.claude/skills/thinking-red-team/SKILL.md +142 -0
- package/.claude/skills/thinking-regret-minimization/SKILL.md +335 -0
- package/.claude/skills/thinking-reversibility/SKILL.md +326 -0
- package/.claude/skills/thinking-scientific-method/SKILL.md +162 -0
- package/.claude/skills/thinking-second-order/SKILL.md +184 -0
- package/.claude/skills/thinking-socratic/SKILL.md +198 -0
- package/.claude/skills/thinking-steel-manning/SKILL.md +332 -0
- package/.claude/skills/thinking-systems/SKILL.md +238 -0
- package/.claude/skills/thinking-theory-of-constraints/SKILL.md +338 -0
- package/.claude/skills/thinking-thought-experiment/SKILL.md +354 -0
- package/.claude/skills/thinking-triz/SKILL.md +171 -0
- package/.claude/skills/thinking-via-negativa/SKILL.md +358 -0
- package/cli/install/postinstall.mjs +54 -28
- package/cli/install/postinstall.test.mjs +98 -0
- package/package.json +7 -2
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-kepner-tregoe
|
|
3
|
+
description: Use when a defect is selective (some endpoints/regions/users/times affected, not all) and the cause is unclear — map what IS vs IS-NOT affected; the boundary contrast points at the root cause.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Kepner-Tregoe Problem Analysis
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Kepner-Tregoe (KT) is a structured root-cause method. **This skill focuses on Problem Analysis (PA) — the IS/IS-NOT boundary contrast — which is the high-value KT process for debugging.** When a defect is *selective* (some cases affected, others not), the boundary between IS and IS-NOT reveals the distinction that points at the root cause.
|
|
11
|
+
|
|
12
|
+
Decision Analysis (DA) and Potential Problem Analysis (PPA) are de-emphasized here. For pure decision-making among alternatives, use `thinking-opportunity-cost`. For risk anticipation before a change, use `thinking-pre-mortem`. Those skills are purpose-built for those tasks; KT's DA/PPA add overhead without unique mechanism.
|
|
13
|
+
|
|
14
|
+
Situation Analysis (SA) is retained as a lightweight triage step when facing multiple concerns, but it is not a required preamble — jump directly to PA when the problem is already clear.
|
|
15
|
+
|
|
16
|
+
**Core Principle:** The boundary between what IS affected and what IS NOT affected encodes the root cause. Find the distinction, find the cause.
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
- A defect is **selective**: affects some endpoints/regions/users/times but NOT others — there is an IS-vs-IS-NOT boundary to contrast
|
|
21
|
+
- The cause is unclear and not obvious from a stack trace, error message, or a single recent change
|
|
22
|
+
- Multiple possible causes exist and you need a systematic way to narrow them
|
|
23
|
+
- A complex situation has multiple concerns that need triage before diving in
|
|
24
|
+
|
|
25
|
+
Decision flow:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Defect is selective (not 100%)? → No → IS/IS-NOT has no signal; use direct debugging or thinking-systems
|
|
29
|
+
→ Yes → Cause obvious from stack trace/recent change? → Yes → Just fix it
|
|
30
|
+
→ No → APPLY KT PROBLEM ANALYSIS
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## When NOT to Use
|
|
34
|
+
|
|
35
|
+
- **The failure is uniform** (affects 100% of requests/everything) — there is no IS-vs-IS-NOT boundary to contrast; PA gives no signal. Use `thinking-systems` or direct debugging.
|
|
36
|
+
- **The cause is already obvious** from a stack trace, error message, or a single recent change — just fix it; IS/IS-NOT is overhead here.
|
|
37
|
+
- **A pam hypothesis is cheaply testable** — test it (`thinking-occams-razor`) before building a full specification matrix.
|
|
38
|
+
- **Pure decision-making with no deviation to diagnose** — use `thinking-opportunity-cost`, not KT's Decision Analysis.
|
|
39
|
+
- **Risk assessment for a planned change** — use `thinking-pre-mortem`, not KT's Potential Problem Analysis.
|
|
40
|
+
|
|
41
|
+
## Trigger Card
|
|
42
|
+
|
|
43
|
+
When a defect is selective (some cases affected, others not) and the cause is unclear:
|
|
44
|
+
|
|
45
|
+
1. **State the problem precisely** — what is the deviation? In what object? Where/when does it occur?
|
|
46
|
+
2. **Map IS vs IS-NOT** — what IS affected vs what IS NOT, side by side. The boundary is the signal.
|
|
47
|
+
3. **Find the distinction** — what is different about the IS cases vs the IS-NOT cases? That distinction IS the cause.
|
|
48
|
+
|
|
49
|
+
Skip if the failure is uniform (100%) — there's no boundary to contrast; use direct debugging. If the cause is obvious from a stack trace or recent change, just fix it. For a single cheaply-testable hypothesis, test it first.
|
|
50
|
+
|
|
51
|
+
## Procedure
|
|
52
|
+
|
|
53
|
+
### Step 1 (optional): Situation Analysis — Triage Multiple Concerns
|
|
54
|
+
|
|
55
|
+
Only when facing several problems at once. List all concerns, separate them if compound, and prioritize by Timing/Impact/Trend:
|
|
56
|
+
|
|
57
|
+
| Concern | Timing | Impact | Trend | Priority |
|
|
58
|
+
|---------|--------|--------|-------|----------|
|
|
59
|
+
| API latency spike | Urgent | High | Worsening | P0 |
|
|
60
|
+
| Checkout errors | Soon | High | Stable | P1 |
|
|
61
|
+
|
|
62
|
+
For each concern, decide: Problem Analysis (PA), or delegate to another skill.
|
|
63
|
+
|
|
64
|
+
### Step 2: State the Problem Precisely
|
|
65
|
+
|
|
66
|
+
Describe the deviation from expected behavior with specificity:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
"API response time increased from 200ms to 800ms for /checkout endpoint,
|
|
70
|
+
US-East only, starting Monday 9 AM, affecting ~30% of requests."
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Step 3: Build the IS/IS-NOT Matrix
|
|
74
|
+
|
|
75
|
+
Specify the problem across four dimensions. The power is in the **distinction** column — what's unique about the IS side?
|
|
76
|
+
|
|
77
|
+
| Dimension | IS (affected) | IS NOT (not affected) | Distinction |
|
|
78
|
+
|-----------|---------------|----------------------|-------------|
|
|
79
|
+
| **WHAT** — object | /checkout endpoint | /cart, /product, /user | Payment processing |
|
|
80
|
+
| **WHAT** — defect | 4x latency increase | Errors, timeouts, data corruption | Performance only |
|
|
81
|
+
| **WHERE** — location | Production US-East | EU, US-West, staging | Single region |
|
|
82
|
+
| **WHERE** — on object | Database query phase | Auth, validation, serialization | DB layer |
|
|
83
|
+
| **WHEN** — first seen | Monday 9:00 AM | Before Monday, after 6 PM | Business hours |
|
|
84
|
+
| **WHEN** — pattern | During checkout submit | During browsing, cart add | Write operations |
|
|
85
|
+
| **EXTENT** — how many | ~30% of requests | 100% of requests | Intermittent |
|
|
86
|
+
| **EXTENT** — trend | Stable since Tuesday | Getting worse | Plateaued |
|
|
87
|
+
|
|
88
|
+
### Step 4: Extract Distinctions
|
|
89
|
+
|
|
90
|
+
For each row, ask: "What's unique or distinctive about the IS side compared to the IS-NOT side?"
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Distinctions:
|
|
94
|
+
- Only /checkout (payment processing) — not other endpoints
|
|
95
|
+
- Only US-East (specific DB replica) — not other regions
|
|
96
|
+
- Only during business hours (load-related?) — not off-peak
|
|
97
|
+
- Only ~30% of requests (specific query pattern?) — not all
|
|
98
|
+
- Started Monday 9 AM — what changed?
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Step 5: Identify Changes
|
|
102
|
+
|
|
103
|
+
What changed in, on, around, or about the distinctions near the first observation time?
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
Changes near Monday 9 AM:
|
|
107
|
+
- Payment provider SDK updated (Sunday night deploy)
|
|
108
|
+
- Database index rebuild scheduled (Sunday maintenance)
|
|
109
|
+
- New fraud detection rules enabled (Monday 8:45 AM)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Step 6: Generate and Test Possible Causes
|
|
113
|
+
|
|
114
|
+
Each candidate cause must explain BOTH the IS and the IS-NOT:
|
|
115
|
+
|
|
116
|
+
| Possible Cause | Explains IS? | Explains IS-NOT? | Verdict |
|
|
117
|
+
|----------------|-------------|------------------|---------|
|
|
118
|
+
| Fraud rules adding DB queries | ✓ Only checkout, only write ops | ✓ Not other endpoints | **Pursue** |
|
|
119
|
+
| Payment SDK change | ✓ Only checkout | ✗ Would affect all regions | Ruled out |
|
|
120
|
+
| Index rebuild | ✓ DB layer | ✗ Would affect all queries | Ruled out |
|
|
121
|
+
|
|
122
|
+
### Step 7: Verify the True Cause
|
|
123
|
+
|
|
124
|
+
Design a test to confirm or rule out the leading candidate:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Verification for "Fraud detection rules":
|
|
128
|
+
1. Check: Rules enabled 8:45 AM (matches timeline)
|
|
129
|
+
2. Check: Rules only on checkout (matches scope)
|
|
130
|
+
3. Test: Disable rules in canary, measure latency
|
|
131
|
+
4. Examine: Query logs for fraud check queries
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Output Contract
|
|
135
|
+
|
|
136
|
+
A completed KT Problem Analysis produces:
|
|
137
|
+
|
|
138
|
+
1. **Problem Statement** — specific, measurable deviation
|
|
139
|
+
2. **IS/IS-NOT Matrix** — all four dimensions with distinctions extracted
|
|
140
|
+
3. **Changes List** — what changed near the distinctions around the first observation
|
|
141
|
+
4. **Cause Test Table** — each candidate tested against IS and IS-NOT
|
|
142
|
+
5. **Confirmed Root Cause** — with verification evidence
|
|
143
|
+
6. **If used, SA Triage** — prioritized concern list with assigned processes
|
|
144
|
+
|
|
145
|
+
## Anti-Patterns
|
|
146
|
+
|
|
147
|
+
| Anti-Pattern | Symptom | Correction |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| **KT on uniform failure** | Running PA when 100% of requests fail | No boundary to contrast; use direct debugging or `thinking-systems` |
|
|
150
|
+
| **Over-specifying the matrix** | Filling every IS/IS-NOT cell for a simple bug | Stop when the distinction is clear; don't ritualize |
|
|
151
|
+
| **DA/PPA sprawl** | Running full Decision Analysis or Potential Problem Analysis for routine tasks | Redirect to `thinking-opportunity-cost` (decisions) or `thinking-pre-mortem` (risks) |
|
|
152
|
+
| **Skipping cause testing** | Pursuing the first plausible cause without testing against IS-NOT | Every cause must explain BOTH IS and IS-NOT |
|
|
153
|
+
| **SA as mandatory preamble** | Running full Situation Analysis before every PA | Jump directly to PA when the problem is already clear |
|
|
154
|
+
| **Ignoring the distinction** | Building the matrix but not extracting what's unique about IS | The distinction IS the signal; without it, the matrix is just a table |
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: thinking-leverage-points
|
|
3
|
+
description: Use when picking where to intervene in a system and tuning parameters keeps not sticking—rank candidate interventions by Meadows' hierarchy and choose the highest-leverage point you can move.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Leverage Points
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Donella Meadows' "Places to Intervene in a System" ranks intervention points by their power to change behavior. Most effort goes into low-leverage moves (parameters, buffers) when higher-leverage points (rules, goals, structure) change behavior with less force. This is the canonical home of the 12-level hierarchy—other skills (`thinking-systems`, `thinking-feedback-loops`) reference it instead of duplicating it.
|
|
11
|
+
|
|
12
|
+
**Core Principle:** Higher in the hierarchy = more leverage, but more resistance. Find the highest leverage point you can actually move.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- Choosing where to focus engineering effort on a system you can already see
|
|
17
|
+
- Incremental tweaks (timeouts, buffer sizes, more instances) keep not solving the problem
|
|
18
|
+
- Deciding between a pam parameter change and a structural fix
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Want to change system behavior?
|
|
22
|
+
→ Stuck tuning parameters with no lasting effect? → MOVE UP THE HIERARCHY
|
|
23
|
+
→ Found the lever but the change won't stick? → look for a balancing loop resisting it
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## When NOT to Use
|
|
27
|
+
|
|
28
|
+
- You haven't yet located the cause or mapped the system → use `thinking-systems` first; you can't rank interventions on a system you don't understand.
|
|
29
|
+
- A single low-level parameter genuinely is the fix (e.g., a wrong timeout value) → just change it; don't manufacture a paradigm shift.
|
|
30
|
+
- The decision is a one-off with no system behind it → this hierarchy adds nothing.
|
|
31
|
+
|
|
32
|
+
## Trigger Card
|
|
33
|
+
|
|
34
|
+
When tuning parameters keeps not sticking and you need to pick where to intervene:
|
|
35
|
+
|
|
36
|
+
1. **Identify the system goal** — what is the system trying to do? This is the highest-leverage point.
|
|
37
|
+
2. **Scan the hierarchy top-down** — from goals/rules/power down to parameters. Don't start at the bottom.
|
|
38
|
+
3. **Intervene at the highest feasible point** — pick the highest-leverage point you can actually change, not the easiest.
|
|
39
|
+
|
|
40
|
+
If a single low-level parameter genuinely is the fix (wrong timeout value), just change it. If there's no system behind the decision, skip — this hierarchy adds nothing.
|
|
41
|
+
|
|
42
|
+
## The 12 Leverage Points (Low to High)
|
|
43
|
+
|
|
44
|
+
### Level 12: Constants and Parameters (LOWEST LEVERAGE)
|
|
45
|
+
|
|
46
|
+
**What:** Numbers—budgets, rates, thresholds, timeouts
|
|
47
|
+
|
|
48
|
+
**Examples:**
|
|
49
|
+
- Adjusting cache TTL
|
|
50
|
+
- Changing retry counts
|
|
51
|
+
- Modifying timeout values
|
|
52
|
+
- Tweaking rate limits
|
|
53
|
+
|
|
54
|
+
**Why low leverage:** Parameters rarely change behavior fundamentally. The system absorbs parameter changes and continues its pattern.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Intervention: Increase server timeout from 30s to 60s
|
|
58
|
+
Result: Slow requests succeed, but root cause remains
|
|
59
|
+
Leverage: Very low—masks symptom, doesn't fix system
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Level 11: Buffer Sizes
|
|
63
|
+
|
|
64
|
+
**What:** Stabilizing stocks—queues, caches, inventories
|
|
65
|
+
|
|
66
|
+
**Examples:**
|
|
67
|
+
- Queue depth limits
|
|
68
|
+
- Connection pool sizes
|
|
69
|
+
- Memory allocations
|
|
70
|
+
- Batch sizes
|
|
71
|
+
|
|
72
|
+
**Why low leverage:** Buffers absorb fluctuations but don't change system dynamics. Bigger buffer = slower response to change.
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Intervention: Increase message queue size
|
|
76
|
+
Result: Handles traffic spikes, but processing lag grows
|
|
77
|
+
Leverage: Low—buys time but doesn't address throughput
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Level 10: Stock-and-Flow Structures
|
|
81
|
+
|
|
82
|
+
**What:** Physical architecture—how things are connected
|
|
83
|
+
|
|
84
|
+
**Examples:**
|
|
85
|
+
- Database schema
|
|
86
|
+
- Service topology
|
|
87
|
+
- Network architecture
|
|
88
|
+
- Team structure
|
|
89
|
+
|
|
90
|
+
**Why medium leverage:** Hard to change once built; design matters but is often locked in.
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Intervention: Add read replica to reduce DB load
|
|
94
|
+
Result: Significant improvement in read performance
|
|
95
|
+
Leverage: Medium—structural change, but within existing paradigm
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Level 9: Delays
|
|
99
|
+
|
|
100
|
+
**What:** Time lags in feedback loops
|
|
101
|
+
|
|
102
|
+
**Examples:**
|
|
103
|
+
- Deployment pipeline duration
|
|
104
|
+
- Feedback cycle time
|
|
105
|
+
- Onboarding time
|
|
106
|
+
- Release frequency
|
|
107
|
+
|
|
108
|
+
**Why medium leverage:** Shortening delays makes systems more responsive and stable. Many oscillation problems are actually delay problems.
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
Intervention: Reduce deployment time from 2 hours to 10 minutes
|
|
112
|
+
Result: Faster feedback, fewer bugs reaching production
|
|
113
|
+
Leverage: Medium-high—changes system responsiveness fundamentally
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Level 8: Balancing Feedback Loops
|
|
117
|
+
|
|
118
|
+
**What:** Negative feedback that counteracts change
|
|
119
|
+
|
|
120
|
+
**Examples:**
|
|
121
|
+
- Auto-scaling rules
|
|
122
|
+
- Circuit breakers
|
|
123
|
+
- Quality gates
|
|
124
|
+
- Alerting thresholds
|
|
125
|
+
|
|
126
|
+
**Why medium-high leverage:** Strengthening balancing loops increases stability; weakening them enables change.
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Intervention: Implement circuit breaker with automatic recovery
|
|
130
|
+
Result: Failures isolated, cascade prevention
|
|
131
|
+
Leverage: Medium-high—changes failure dynamics
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Level 7: Reinforcing Feedback Loops
|
|
135
|
+
|
|
136
|
+
**What:** Positive feedback that amplifies change
|
|
137
|
+
|
|
138
|
+
**Examples:**
|
|
139
|
+
- Growth loops (viral, network effects)
|
|
140
|
+
- Technical debt spirals
|
|
141
|
+
- Talent attraction/attrition cycles
|
|
142
|
+
- Performance improvement loops
|
|
143
|
+
|
|
144
|
+
**Why high leverage:** Reinforcing loops drive exponential growth or collapse. Controlling gain = controlling trajectory.
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Intervention: Create "fix broken windows" culture that reinforces quality
|
|
148
|
+
Result: Quality begets quality, technical debt decreases
|
|
149
|
+
Leverage: High—self-sustaining improvement
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Level 6: Information Flows
|
|
153
|
+
|
|
154
|
+
**What:** What signal is surfaced, and where
|
|
155
|
+
|
|
156
|
+
**Examples:**
|
|
157
|
+
- Surfacing a previously-hidden metric (queue depth, error budget, p99)
|
|
158
|
+
- Logging the value that was silently defaulting
|
|
159
|
+
- Making a failure mode observable instead of swallowed
|
|
160
|
+
|
|
161
|
+
**Why high leverage:** A component can only respond to what it can see. Adding a feedback signal where one was missing changes behavior without changing any logic.
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
Intervention: Emit and alert on cache hit-rate that was previously invisible
|
|
165
|
+
Result: Regression caught immediately instead of after an outage
|
|
166
|
+
Leverage: High—behavior change through visibility
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Level 5: System Rules
|
|
170
|
+
|
|
171
|
+
**What:** Constraints the system enforces—what's allowed, required, or rejected
|
|
172
|
+
|
|
173
|
+
**Examples:**
|
|
174
|
+
- A required CI gate / merge check
|
|
175
|
+
- A schema or contract that rejects invalid input at the boundary
|
|
176
|
+
- A deployment policy (canary, required rollback path)
|
|
177
|
+
- A rate limit or quota
|
|
178
|
+
|
|
179
|
+
**Why high leverage:** Rules define what's even possible. Change the rule and a whole class of behavior changes or becomes impossible.
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
Intervention: Make the type checker / schema validation a hard CI gate
|
|
183
|
+
Result: An entire class of bug can no longer reach production
|
|
184
|
+
Leverage: High—changes what's acceptable
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Level 4: Self-Organization
|
|
188
|
+
|
|
189
|
+
**What:** Ability of the system to change its own structure
|
|
190
|
+
|
|
191
|
+
**Examples:**
|
|
192
|
+
- Plugin/extension points instead of hardcoded behavior
|
|
193
|
+
- Services that can register/discover each other dynamically
|
|
194
|
+
- Auto-scaling and self-healing instead of fixed topology
|
|
195
|
+
- Schema/config that the system can evolve safely
|
|
196
|
+
|
|
197
|
+
**Why very high leverage:** Systems that can adapt their own structure survive change; rigid systems eventually break.
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
Intervention: Replace a hardcoded dispatch table with a plugin registry
|
|
201
|
+
Result: New behavior added without touching the core; the system evolves
|
|
202
|
+
Leverage: Very high—enables adaptation
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Level 3: System Goals
|
|
206
|
+
|
|
207
|
+
**What:** What the system is actually optimizing for
|
|
208
|
+
|
|
209
|
+
**Examples:**
|
|
210
|
+
- The objective a scheduler/optimizer maximizes
|
|
211
|
+
- The SLO the system is built to hold
|
|
212
|
+
- The success metric a pipeline is tuned against
|
|
213
|
+
|
|
214
|
+
**Why very high leverage:** Everything downstream serves the goal. Optimizing for the wrong target reliably produces the wrong behavior, no matter how good the parts are.
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
Intervention: Change a cache eviction goal from "max hit rate" to "bound tail latency"
|
|
218
|
+
Result: Different eviction policy, different downstream behavior entirely
|
|
219
|
+
Leverage: Very high—redirects all effort
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Level 2: Paradigm (Mindset)
|
|
223
|
+
|
|
224
|
+
**What:** The shared assumptions from which goals and architecture arise
|
|
225
|
+
|
|
226
|
+
**Examples:**
|
|
227
|
+
- "Cache everything" vs "Cache only what's measured hot"
|
|
228
|
+
- "Microservices always" vs "Right tool for context"
|
|
229
|
+
- "Avoid failure" vs "Design for graceful degradation"
|
|
230
|
+
|
|
231
|
+
**Why transformational:** Paradigms are upstream of goals, rules, and structure. Shift the paradigm, transform the system.
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
Intervention: Shift from "retry until success" to "fail fast + shed load"
|
|
235
|
+
Result: Retry storms become impossible; the whole failure mode changes
|
|
236
|
+
Leverage: Transformational—changes what's thinkable
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Level 1: Transcending Paradigms (HIGHEST LEVERAGE)
|
|
240
|
+
|
|
241
|
+
**What:** The ability to change paradigms, recognizing no paradigm is "true"
|
|
242
|
+
|
|
243
|
+
**Examples:**
|
|
244
|
+
- Recognizing that current best practices are temporary
|
|
245
|
+
- Ability to hold multiple paradigms simultaneously
|
|
246
|
+
- Knowing when to abandon a paradigm
|
|
247
|
+
|
|
248
|
+
**Why highest leverage:** Freedom from paradigm lock-in enables choosing the right paradigm for each context.
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
Mastery: Recognize when "microservices always" became dogma
|
|
252
|
+
Choose monolith when it's right
|
|
253
|
+
Result: Optimal architecture for each situation
|
|
254
|
+
Leverage: Highest—freedom from ideological constraints
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Applying Leverage Points
|
|
258
|
+
|
|
259
|
+
### Step 1: Identify Current Interventions
|
|
260
|
+
|
|
261
|
+
Where are you currently trying to create change?
|
|
262
|
+
|
|
263
|
+
```markdown
|
|
264
|
+
Current interventions:
|
|
265
|
+
- Increasing server count (Level 11 - buffers)
|
|
266
|
+
- Adjusting timeout parameters (Level 12 - parameters)
|
|
267
|
+
- Adding monitoring (Level 6 - information flows)
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Step 2: Map to Hierarchy
|
|
271
|
+
|
|
272
|
+
Plot on the hierarchy to see leverage distribution:
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
High Leverage [3] Goals
|
|
276
|
+
[5] Rules
|
|
277
|
+
[6] Information ← Monitoring
|
|
278
|
+
[7] Reinforcing loops
|
|
279
|
+
Medium [8] Balancing loops
|
|
280
|
+
[9] Delays
|
|
281
|
+
[10] Structure
|
|
282
|
+
Low Leverage [11] Buffers ← Server count
|
|
283
|
+
[12] Parameters ← Timeouts
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Step 3: Look Higher
|
|
287
|
+
|
|
288
|
+
For each low-leverage intervention, ask: "What's the higher-leverage version?"
|
|
289
|
+
|
|
290
|
+
| Low Leverage | Ask | Higher Leverage |
|
|
291
|
+
|--------------|-----|-----------------|
|
|
292
|
+
| More instances | Why do we need more capacity? | Fix the inefficient algorithm/query (structure) |
|
|
293
|
+
| Longer timeouts | Why are things slow? | Reduce a delay in the pipeline (Level 9) |
|
|
294
|
+
| Patch each bug instance | Why does this class recur? | Make it unrepresentable / add a CI gate (10, 5) |
|
|
295
|
+
|
|
296
|
+
### Step 4: Assess Feasibility
|
|
297
|
+
|
|
298
|
+
Higher leverage usually means more cost or more resistance. Evaluate before committing:
|
|
299
|
+
|
|
300
|
+
```markdown
|
|
301
|
+
Intervention: Make schema validation a hard gate (Level 5)
|
|
302
|
+
Leverage: High—blocks a whole bug class
|
|
303
|
+
Cost/resistance: Touches every caller; needs migration of existing data
|
|
304
|
+
Strategy: Validate in warn-only mode first, then flip to enforce
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Step 5: Choose Highest Feasible Leverage
|
|
308
|
+
|
|
309
|
+
Select the highest-leverage intervention you can actually execute now.
|
|
310
|
+
|
|
311
|
+
## Common Patterns
|
|
312
|
+
|
|
313
|
+
### The Parameter Trap
|
|
314
|
+
|
|
315
|
+
Endlessly tuning parameters when the real issue is structural:
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
Symptom: Constantly adjusting cache TTLs, retry counts, timeouts
|
|
319
|
+
Reality: Architecture doesn't match access patterns
|
|
320
|
+
Solution: Redesign the data flow (Level 10) instead of tuning parameters
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### The Information Unlock
|
|
324
|
+
|
|
325
|
+
A component behaves badly because a signal is invisible to it:
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
Symptom: A regression ships repeatedly and is only caught downstream
|
|
329
|
+
Reality: The relevant metric is never surfaced
|
|
330
|
+
Solution: Emit + alert on it (Level 6)—behavior corrects without new logic
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### The Goal Inversion
|
|
334
|
+
|
|
335
|
+
The system optimizes a proxy that diverges from the real objective:
|
|
336
|
+
|
|
337
|
+
```
|
|
338
|
+
Symptom: Cache maximizes hit-rate but tail latency is terrible
|
|
339
|
+
Reality: The optimization target is wrong
|
|
340
|
+
Solution: Change the goal to "bound p99" (Level 3)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### The Paradigm Shift
|
|
344
|
+
|
|
345
|
+
Sometimes the whole frame is wrong:
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
Symptom: Recurring retry storms despite tuning retry counts
|
|
349
|
+
Reality: "Retry until success" is the wrong paradigm under load
|
|
350
|
+
Solution: Shift to "fail fast + shed load" (Level 2)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Leverage Points for Common Problems
|
|
354
|
+
|
|
355
|
+
| Problem | Low-Leverage Response | High-Leverage Alternative |
|
|
356
|
+
|---------|----------------------|---------------------------|
|
|
357
|
+
| System too slow | Add caching (11) | Fix algorithm; surface latency in feedback (6, 10) |
|
|
358
|
+
| Too many bugs slip through | More manual testing (12) | Make the check a required gate / CI rule (5) |
|
|
359
|
+
| Repeated cascading failures | Bigger timeouts (12) | Add circuit breaker / backpressure loop (8) |
|
|
360
|
+
| Retry storms under load | Lower retry count (12) | Change the retry paradigm: fail fast + shed (2) |
|
|
361
|
+
| Same bug class recurs | Patch each instance (12) | Make it unrepresentable via type/schema (10, 4) |
|
|
362
|
+
| Hidden, wrong defaults | Tune the value (12) | Make the config visible/validated (6, 5) |
|
|
363
|
+
|
|
364
|
+
## Verification Checklist
|
|
365
|
+
|
|
366
|
+
- [ ] Identified current intervention points
|
|
367
|
+
- [ ] Mapped interventions to leverage hierarchy
|
|
368
|
+
- [ ] Asked "what's the higher-leverage version?" for each
|
|
369
|
+
- [ ] Assessed feasibility vs. leverage tradeoff
|
|
370
|
+
- [ ] Selected highest feasible leverage point
|
|
371
|
+
- [ ] Considered resistance and how to address it
|
|
372
|
+
- [ ] Have strategy for paradigm-level resistance if applicable
|
|
373
|
+
|
|
374
|
+
## Key Questions
|
|
375
|
+
|
|
376
|
+
- "What level of leverage am I operating at?"
|
|
377
|
+
- "What's one level higher I could try?"
|
|
378
|
+
- "Why hasn't this parameter tuning fixed the problem?"
|
|
379
|
+
- "What information is missing that would change behavior?"
|
|
380
|
+
- "What rule change would make this unnecessary?"
|
|
381
|
+
- "What goal are we actually optimizing for?"
|
|
382
|
+
- "What paradigm is constraining our thinking?"
|
|
383
|
+
|
|
384
|
+
## Meadows' Wisdom
|
|
385
|
+
|
|
386
|
+
"People who manage to intervene in systems at the level of paradigm hit a leverage point that totally transforms systems."
|
|
387
|
+
|
|
388
|
+
"Magical leverage points are not easily accessible, even if we know where they are. There are no cheap tickets to mastery."
|
|
389
|
+
|
|
390
|
+
The highest leverage requires the most skill and often the most patience. But knowing where leverage exists helps you stop wasting effort at the bottom of the hierarchy.
|