@polderlabs/bizar 10.7.0 → 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.
Files changed (148) hide show
  1. package/.claude/agents/_shared/AGENT_BASELINE.md +266 -0
  2. package/.claude/agents/_shared/CLAUDE_TOOLS.md +412 -0
  3. package/.claude/agents/_shared/SKILLS.md +109 -0
  4. package/.claude/agents/brand-designer.md +55 -0
  5. package/.claude/agents/exec-assistant.md +34 -0
  6. package/.claude/agents/help-desk.md +44 -0
  7. package/.claude/agents/it-lead.md +53 -0
  8. package/.claude/agents/knowledge-manager.md +49 -0
  9. package/.claude/agents/office-coordinator.md +39 -0
  10. package/.claude/agents/office-greeter.md +53 -0
  11. package/.claude/agents/office-manager.md +287 -0
  12. package/.claude/agents/principal-engineer.md +58 -0
  13. package/.claude/agents/qa-reviewer.md +51 -0
  14. package/.claude/agents/research-analyst.md +53 -0
  15. package/.claude/agents/senior-engineer.md +55 -0
  16. package/.claude/agents/support-tech.md +87 -0
  17. package/.claude/agents/vp-engineering.md +54 -0
  18. package/.claude/commands/audit.md +48 -0
  19. package/.claude/commands/bizar.md +22 -0
  20. package/.claude/commands/cron.md +36 -0
  21. package/.claude/commands/explain.md +17 -0
  22. package/.claude/commands/goal.md +99 -0
  23. package/.claude/commands/init.md +15 -0
  24. package/.claude/commands/learn.md +46 -0
  25. package/.claude/commands/plan.md +35 -0
  26. package/.claude/commands/plow-through.md +50 -0
  27. package/.claude/commands/pr-review.md +49 -0
  28. package/.claude/commands/setup-provider.md +96 -0
  29. package/.claude/commands/spec.md +47 -0
  30. package/.claude/commands/sprint.md +43 -0
  31. package/.claude/commands/tailscale-serve.md +100 -0
  32. package/.claude/commands/team.md +132 -0
  33. package/.claude/commands/test.md +62 -0
  34. package/.claude/commands/validate.md +68 -0
  35. package/.claude/commands/visual-plan.md +24 -0
  36. package/.claude/hooks/README.md +108 -0
  37. package/.claude/hooks/__tests__/pretooluse-editwrite.test.mjs +146 -0
  38. package/.claude/hooks/__tests__/sessionend-recall.test.mjs +256 -0
  39. package/.claude/hooks/__tests__/sessionstart-prime.test.mjs +325 -0
  40. package/.claude/hooks/__tests__/thinking-route.test.mjs +319 -0
  41. package/.claude/hooks/auto-instinct.sh +81 -0
  42. package/.claude/hooks/learning-extract.mjs +92 -0
  43. package/.claude/hooks/post-merge-audit.sh +93 -0
  44. package/.claude/hooks/posttooluse-editwrite.mjs +91 -0
  45. package/.claude/hooks/pretooluse-bash.mjs +87 -0
  46. package/.claude/hooks/pretooluse-editwrite.mjs +117 -0
  47. package/.claude/hooks/sessionend-recall.mjs +384 -0
  48. package/.claude/hooks/sessionstart-prime.mjs +278 -0
  49. package/.claude/hooks/thinking-route.mjs +314 -0
  50. package/.claude/hooks/worker-suggest.mjs +110 -0
  51. package/.claude/settings.json +167 -0
  52. package/.claude/skills/9router/SKILL.md +80 -0
  53. package/.claude/skills/9router-chat/SKILL.md +73 -0
  54. package/.claude/skills/9router-embeddings/SKILL.md +69 -0
  55. package/.claude/skills/9router-image/SKILL.md +86 -0
  56. package/.claude/skills/9router-stt/SKILL.md +79 -0
  57. package/.claude/skills/9router-tts/SKILL.md +80 -0
  58. package/.claude/skills/9router-web-fetch/SKILL.md +99 -0
  59. package/.claude/skills/9router-web-search/SKILL.md +91 -0
  60. package/.claude/skills/agent-browser/SKILL.md +64 -0
  61. package/.claude/skills/bizar/README.md +9 -0
  62. package/.claude/skills/bizar/SKILL.md +447 -0
  63. package/.claude/skills/cpp-coding-standards/README.md +28 -0
  64. package/.claude/skills/cpp-coding-standards/SKILL.md +634 -0
  65. package/.claude/skills/cpp-coding-standards/references/concurrency.md +320 -0
  66. package/.claude/skills/cpp-coding-standards/references/error-handling.md +229 -0
  67. package/.claude/skills/cpp-coding-standards/references/memory-safety.md +216 -0
  68. package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +282 -0
  69. package/.claude/skills/cpp-coding-standards/references/review-checklist.md +96 -0
  70. package/.claude/skills/cpp-testing/README.md +28 -0
  71. package/.claude/skills/cpp-testing/SKILL.md +304 -0
  72. package/.claude/skills/cpp-testing/references/coverage.md +370 -0
  73. package/.claude/skills/cpp-testing/references/framework-compare.md +175 -0
  74. package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +499 -0
  75. package/.claude/skills/cpp-testing/references/mocking.md +364 -0
  76. package/.claude/skills/cpp-testing/references/tdd-workflow.md +308 -0
  77. package/.claude/skills/cubesandbox/SKILL.md +148 -0
  78. package/.claude/skills/de-sloppify/SKILL.md +38 -0
  79. package/.claude/skills/de-sloppify/cleanup.mjs +253 -0
  80. package/.claude/skills/de-sloppify/cleanup.test.mjs +189 -0
  81. package/.claude/skills/embedded-esp-idf/README.md +41 -0
  82. package/.claude/skills/embedded-esp-idf/SKILL.md +439 -0
  83. package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +214 -0
  84. package/.claude/skills/embedded-esp-idf/references/host-tests.md +164 -0
  85. package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +157 -0
  86. package/.claude/skills/embedded-esp-idf/references/kconfig.md +159 -0
  87. package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +118 -0
  88. package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +137 -0
  89. package/.claude/skills/embedded-esp-idf/references/nvs.md +121 -0
  90. package/.claude/skills/embedded-esp-idf/references/packed-structs.md +192 -0
  91. package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +47 -0
  92. package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +77 -0
  93. package/.claude/skills/glyph/SKILL.md +163 -0
  94. package/.claude/skills/harness-engineering/SKILL.md +142 -0
  95. package/.claude/skills/lightrag/SKILL.md +81 -0
  96. package/.claude/skills/memory-protocol/SKILL.md +105 -0
  97. package/.claude/skills/obsidian/SKILL.md +306 -0
  98. package/.claude/skills/read-the-damn-docs/SKILL.md +113 -0
  99. package/.claude/skills/self-improvement/SKILL.md +64 -0
  100. package/.claude/skills/skillopt/SKILL.md +129 -0
  101. package/.claude/skills/thinking-archetypes/SKILL.md +90 -0
  102. package/.claude/skills/thinking-bayesian/SKILL.md +267 -0
  103. package/.claude/skills/thinking-bounded-rationality/SKILL.md +406 -0
  104. package/.claude/skills/thinking-circle-of-competence/SKILL.md +216 -0
  105. package/.claude/skills/thinking-cynefin/SKILL.md +70 -0
  106. package/.claude/skills/thinking-debiasing/SKILL.md +192 -0
  107. package/.claude/skills/thinking-dual-process/SKILL.md +282 -0
  108. package/.claude/skills/thinking-effectuation/SKILL.md +366 -0
  109. package/.claude/skills/thinking-feedback-loops/SKILL.md +464 -0
  110. package/.claude/skills/thinking-fermi-estimation/SKILL.md +263 -0
  111. package/.claude/skills/thinking-first-principles/SKILL.md +167 -0
  112. package/.claude/skills/thinking-five-whys-plus/SKILL.md +139 -0
  113. package/.claude/skills/thinking-inversion/SKILL.md +195 -0
  114. package/.claude/skills/thinking-jobs-to-be-done/SKILL.md +363 -0
  115. package/.claude/skills/thinking-kepner-tregoe/SKILL.md +154 -0
  116. package/.claude/skills/thinking-leverage-points/SKILL.md +390 -0
  117. package/.claude/skills/thinking-lindy-effect/SKILL.md +331 -0
  118. package/.claude/skills/thinking-map-territory/SKILL.md +111 -0
  119. package/.claude/skills/thinking-margin-of-safety/SKILL.md +330 -0
  120. package/.claude/skills/thinking-model-combination/SKILL.md +406 -0
  121. package/.claude/skills/thinking-model-router/SKILL.md +360 -0
  122. package/.claude/skills/thinking-model-selection/SKILL.md +341 -0
  123. package/.claude/skills/thinking-occams-razor/SKILL.md +129 -0
  124. package/.claude/skills/thinking-ooda/SKILL.md +127 -0
  125. package/.claude/skills/thinking-opportunity-cost/SKILL.md +360 -0
  126. package/.claude/skills/thinking-pre-mortem/SKILL.md +170 -0
  127. package/.claude/skills/thinking-probabilistic/SKILL.md +324 -0
  128. package/.claude/skills/thinking-red-team/SKILL.md +142 -0
  129. package/.claude/skills/thinking-regret-minimization/SKILL.md +335 -0
  130. package/.claude/skills/thinking-reversibility/SKILL.md +326 -0
  131. package/.claude/skills/thinking-scientific-method/SKILL.md +162 -0
  132. package/.claude/skills/thinking-second-order/SKILL.md +184 -0
  133. package/.claude/skills/thinking-socratic/SKILL.md +198 -0
  134. package/.claude/skills/thinking-steel-manning/SKILL.md +332 -0
  135. package/.claude/skills/thinking-systems/SKILL.md +238 -0
  136. package/.claude/skills/thinking-theory-of-constraints/SKILL.md +338 -0
  137. package/.claude/skills/thinking-thought-experiment/SKILL.md +354 -0
  138. package/.claude/skills/thinking-triz/SKILL.md +171 -0
  139. package/.claude/skills/thinking-via-negativa/SKILL.md +358 -0
  140. package/bizar-dash/skills/publishing/SKILL.md +2 -1
  141. package/cli/install/postinstall.mjs +54 -28
  142. package/cli/install/postinstall.test.mjs +98 -0
  143. package/cli/provision.mjs +29 -0
  144. package/install.sh +7 -0
  145. package/package.json +7 -2
  146. package/scripts/git-hooks/__tests__/commit-msg.test.mjs +61 -0
  147. package/scripts/git-hooks/commit-msg +38 -0
  148. package/scripts/install-hooks.sh +9 -0
@@ -0,0 +1,331 @@
1
+ ---
2
+ name: thinking-lindy-effect
3
+ description: Choosing a technology/framework/dependency and longevity matters. Use the heuristic that for non-perishable things, expected remaining life is proportional to current age — favor the proven.
4
+ ---
5
+
6
+ # The Lindy Effect
7
+
8
+ ## Overview
9
+
10
+ The Lindy Effect, named after a New York deli where comedians discussed career longevity, states that for non-perishable things (ideas, technologies, books, practices), future life expectancy is proportional to current age. If a technology has survived 20 years, it's likely to survive another 20. If it's survived 2 years, expect another 2.
11
+
12
+ **Core Principle:** Time is the ultimate test. Old things that still exist have proven their value; new things are still being tested.
13
+
14
+ ## When to Use
15
+
16
+ - Technology selection (languages, frameworks, databases)
17
+ - Evaluating libraries and dependencies
18
+ - Predicting tool longevity
19
+ - Career skill investment
20
+ - Methodology and practice adoption
21
+ - Architectural patterns
22
+ - Vendor/product selection
23
+
24
+ Decision flow:
25
+
26
+ ```
27
+ Choosing between options?
28
+ → Are some options significantly older? → yes → APPLY LINDY HEURISTIC
29
+ → Is longevity important for this choice? → yes → FAVOR OLDER, PROVEN OPTIONS
30
+ → Is the new thing solving a new problem? → yes → NEW MIGHT BE APPROPRIATE
31
+ ```
32
+
33
+ ## When NOT to Use
34
+
35
+ - **Not for perishable things** — specific SaaS vendors, individual products, hardware, fashion-driven choices. Age predicts survival only for non-perishable ideas/technologies/practices.
36
+ - **Not when a paradigm shift is underway.** Lindy holds *within* a stable paradigm; a discontinuity (cloud, LLMs) can make the old thing's age irrelevant. If the ground is moving, age is not evidence.
37
+ - **Not as a tiebreaker for short-lived/experimental work** where longevity doesn't matter — pick on fit, not age.
38
+ - **Don't read Lindy as "old = best."** Survival predicts further survival; it does not say the old option is optimal for a *new* requirement. The burden of proof is on the new — but the new can meet it.
39
+
40
+ ## Trigger Card
41
+
42
+ When choosing a technology, framework, or dependency and longevity matters:
43
+
44
+ 1. **Check the age** — how long has this option survived? For non-perishable things (ideas, technologies, institutions), expected remaining life is proportional to current age.
45
+ 2. **Verify it's non-perishable** — is the option subject to rapid obsolescence (JS framework) or cumulative knowledge (database, language, protocol)? Lindy only applies to the latter.
46
+ 3. **Favor the proven over the new** — let the new option carry the burden of proof. Pick the older option unless the new one demonstrates a clear, necessary advantage.
47
+
48
+ Skip for short-lived/experimental work where longevity doesn't matter. "Old" isn't automatically "best" — survival predicts further survival, not optimality for a new requirement.
49
+
50
+ ## Understanding Lindy
51
+
52
+ ### What Lindy Applies To (Non-Perishable)
53
+
54
+ - **Technologies:** Languages, databases, protocols
55
+ - **Ideas:** Mathematical concepts, design patterns, algorithms
56
+ - **Practices:** Testing, version control, code review
57
+ - **Books:** Technical references, foundational texts
58
+ - **Institutions:** Standards bodies, open source foundations
59
+
60
+ ### What Lindy Doesn't Apply To (Perishable)
61
+
62
+ - **Hardware:** Physical degradation limits life
63
+ - **Individual careers:** Humans have biological limits
64
+ - **Specific products:** Companies can fail, be acquired
65
+ - **Fashion-driven choices:** Popularity cycles aren't Lindy
66
+
67
+ ### The Math
68
+
69
+ ```
70
+ Expected remaining life ≈ Current age
71
+
72
+ If survived 10 years → Expected to survive another ~10
73
+ If survived 50 years → Expected to survive another ~50
74
+ If survived 2 years → Expected to survive another ~2
75
+ ```
76
+
77
+ ## Applying Lindy to Technology
78
+
79
+ ### Programming Languages
80
+
81
+ | Language | Age | Lindy Expectation | Evidence |
82
+ |----------|-----|-------------------|----------|
83
+ | C | 50+ years | 50+ more years | Powers OS, embedded, will outlive us |
84
+ | Java | 30 years | 30+ more years | Enterprise backbone, not going away |
85
+ | Python | 30 years | 30+ more years | Scientific computing, ML, scripting |
86
+ | Go | 15 years | 15+ more years | Proven for infra, backed by Google |
87
+ | Rust | 10 years | 10+ more years | Growing, solving real problems |
88
+ | New hotness | 2 years | 2-5 years | Unproven, might disappear |
89
+
90
+ ### Databases
91
+
92
+ | Database | Age | Lindy Expectation | Notes |
93
+ |----------|-----|-------------------|-------|
94
+ | PostgreSQL | 35+ years | 35+ more years | SQL is 50+ years old |
95
+ | MySQL | 30 years | 30+ more years | LAMP stack foundation |
96
+ | MongoDB | 15 years | 15+ more years | Survived NoSQL hype cycle |
97
+ | CockroachDB | 10 years | 10+ more years | NewSQL, still proving itself |
98
+ | Latest DB | 2 years | Unknown | High risk for production use |
99
+
100
+ ### Frameworks
101
+
102
+ | Framework | Age | Lindy Expectation | Notes |
103
+ |-----------|-----|-------------------|-------|
104
+ | React | 10+ years | 10+ more years | Dominant, ecosystem mature |
105
+ | Rails | 20 years | 20+ more years | Productive, battle-tested |
106
+ | Django | 18 years | 18+ more years | Python's Rails, stable |
107
+ | Express | 14 years | 14+ more years | Node.js standard |
108
+ | Newest framework | 1 year | 1-3 years | Likely to be replaced |
109
+
110
+ ### Patterns and Practices
111
+
112
+ | Practice | Age | Lindy Expectation |
113
+ |----------|-----|-------------------|
114
+ | Version control | 50+ years | Permanent |
115
+ | Automated testing | 40+ years | Permanent |
116
+ | Code review | 40+ years | Permanent |
117
+ | Agile (core ideas) | 30+ years | Very long |
118
+ | CI/CD | 20+ years | Very long |
119
+ | Microservices | 10 years | Moderate |
120
+ | Latest methodology | 2 years | Unknown |
121
+
122
+ ## The Lindy Decision Process
123
+
124
+ ### Step 1: Assess Age of Options
125
+
126
+ For each option, determine how long it's been in significant use:
127
+
128
+ ```markdown
129
+ Options for message queue:
130
+ - RabbitMQ: 17 years (2007)
131
+ - Kafka: 13 years (2011)
132
+ - NATS: 11 years (2013)
133
+ - NewQueue: 2 years (2022)
134
+ ```
135
+
136
+ ### Step 2: Apply Lindy Heuristic
137
+
138
+ ```markdown
139
+ Lindy expectation:
140
+ - RabbitMQ: 17+ more years
141
+ - Kafka: 13+ more years
142
+ - NATS: 11+ more years
143
+ - NewQueue: 2-5 more years (high uncertainty)
144
+ ```
145
+
146
+ ### Step 3: Consider Context
147
+
148
+ Lindy is a heuristic, not a law. Consider:
149
+
150
+ ```markdown
151
+ When older is better:
152
+ - Long-term production systems
153
+ - Core infrastructure
154
+ - Skills investment
155
+ - Dependencies with many consumers
156
+
157
+ When newer might be appropriate:
158
+ - Solving genuinely new problems
159
+ - Performance-critical new workloads
160
+ - Specific capability older tools lack
161
+ - Temporary/experimental projects
162
+ ```
163
+
164
+ ### Step 4: Calibrate by Ecosystem Age
165
+
166
+ A 5-year-old tool in a 5-year-old ecosystem is "old" for that ecosystem:
167
+
168
+ ```markdown
169
+ Kubernetes ecosystem: ~10 years old
170
+ - Helm: 8 years → "Lindy" for K8s
171
+ - ArgoCD: 7 years → "Lindy" for K8s
172
+ - New tool: 1 year → Not Lindy yet
173
+
174
+ Node.js ecosystem: 14 years old
175
+ - Express: 14 years → Maximally Lindy for Node
176
+ - Fastify: 8 years → Moderately Lindy
177
+ - New framework: 1 year → Unproven
178
+ ```
179
+
180
+ ## Lindy Failure Modes
181
+
182
+ ### Survivor Bias Confusion
183
+
184
+ Lindy predicts future survival given current survival. It doesn't say all old things are good:
185
+
186
+ ```
187
+ Correct: "COBOL has survived 60 years, will survive 60 more"
188
+ Incorrect: "COBOL is the best choice for new projects"
189
+ (Survival ≠ Optimal for new use cases)
190
+ ```
191
+
192
+ ### Ignoring Paradigm Shifts
193
+
194
+ Lindy works within stable paradigms. Paradigm shifts create discontinuities:
195
+
196
+ ```
197
+ - Pre-cloud: On-premise databases were Lindy
198
+ - Post-cloud: Managed databases emerged
199
+ - But: Core database concepts (SQL, ACID) remained Lindy
200
+ ```
201
+
202
+ ### Confusing Perishable and Non-Perishable
203
+
204
+ ```
205
+ Perishable: Specific SaaS vendor → Can be acquired, pivoted, shut down
206
+ Non-perishable: The practice the vendor enables → Likely Lindy
207
+
208
+ E.g., Heroku might change, but "platform-as-a-service" concept is Lindy
209
+ ```
210
+
211
+ ## Lindy in Practice
212
+
213
+ ### Technology Selection
214
+
215
+ ```markdown
216
+ ## Lindy Analysis: Database for New Product
217
+
218
+ Requirements: ACID transactions, relational data, long-term stability
219
+
220
+ Options:
221
+ | Option | Age | Lindy Score | Fit for Requirements |
222
+ |--------|-----|-------------|---------------------|
223
+ | PostgreSQL | 35 years | Excellent | Excellent |
224
+ | MySQL | 30 years | Excellent | Good |
225
+ | CockroachDB | 10 years | Good | Excellent |
226
+ | PlanetScale | 5 years | Moderate | Good |
227
+
228
+ Decision: PostgreSQL (Lindy + excellent fit)
229
+ Consider CockroachDB for scale needs (worth the Lindy tax)
230
+ ```
231
+
232
+ ### Skill Investment
233
+
234
+ ```markdown
235
+ ## Lindy Career Analysis
236
+
237
+ Which skills to invest in?
238
+
239
+ Lindy skills (high confidence in future value):
240
+ - SQL (50+ years)
241
+ - Unix/Linux (50+ years)
242
+ - Git/version control (40+ years)
243
+ - Testing fundamentals (40+ years)
244
+
245
+ Moderate Lindy (good bet):
246
+ - Python (30+ years)
247
+ - JavaScript (28 years)
248
+ - Docker/containers (12 years)
249
+ - Kubernetes (10 years)
250
+
251
+ Low Lindy (speculative):
252
+ - Latest framework (1-3 years)
253
+ - Trending language (variable)
254
+
255
+ Investment strategy: Core in Lindy skills, experiments in new
256
+ ```
257
+
258
+ ### Dependency Selection
259
+
260
+ ```markdown
261
+ ## Lindy Dependency Audit
262
+
263
+ For each critical dependency:
264
+ | Dependency | Age | Last Update | Contributors | Lindy Risk |
265
+ |------------|-----|-------------|--------------|------------|
266
+ | lodash | 12 years | Active | Many | Low |
267
+ | express | 14 years | Active | Many | Low |
268
+ | new-lib | 1 year | Active | 3 | High |
269
+
270
+ Policy: Critical path requires 5+ year Lindy
271
+ Experimental features can use newer dependencies
272
+ ```
273
+
274
+ ## Lindy Template
275
+
276
+ ```markdown
277
+ # Lindy Analysis: [Decision]
278
+
279
+ ## Options with Age
280
+ | Option | First Stable | Age | Category |
281
+ |--------|--------------|-----|----------|
282
+ | | | | Proven/Moderate/New |
283
+
284
+ ## Lindy Expectations
285
+ | Option | Expected Longevity | Confidence |
286
+ |--------|-------------------|------------|
287
+ | | | High/Medium/Low |
288
+
289
+ ## Context Adjustments
290
+ - Is this a new problem domain? [Yes/No]
291
+ - Is the ecosystem mature? [Yes/No]
292
+ - Do newer options solve critical gaps? [Yes/No]
293
+
294
+ ## Lindy-Adjusted Decision
295
+ Primary choice: [Option with best Lindy + fit]
296
+ Rationale: [Why this balances Lindy with requirements]
297
+
298
+ ## Risk if Lindy is Wrong
299
+ [What happens if the non-Lindy option outlasts expectations?]
300
+ ```
301
+
302
+ ## Verification Checklist
303
+
304
+ - [ ] Identified age of all options
305
+ - [ ] Applied Lindy heuristic to estimate longevity
306
+ - [ ] Distinguished perishable from non-perishable
307
+ - [ ] Considered paradigm shift possibilities
308
+ - [ ] Checked if newer options solve genuinely new problems
309
+ - [ ] Balanced Lindy with specific requirements
310
+ - [ ] Documented reasoning
311
+
312
+ ## Key Questions
313
+
314
+ - "How long has this technology/practice existed?"
315
+ - "Is this Lindy (non-perishable) or perishable?"
316
+ - "What's the Lindy expectation for each option?"
317
+ - "Is the newer option solving a problem that didn't exist before?"
318
+ - "Am I betting against Lindy? If so, why?"
319
+ - "What's proven vs. what's hyped?"
320
+
321
+ ## Taleb's Wisdom
322
+
323
+ "If a book has been in print for forty years, I can expect it to be in print for another forty years. But, and that is the main difference, if it survives another decade, then it will be expected to be in print another fifty years."
324
+
325
+ "Technology is at its best when it is invisible."
326
+
327
+ The technologies you don't think about—TCP/IP, Unix, SQL—are the most Lindy. The technologies that demand constant attention are still being tested.
328
+
329
+ "The old is to be respected; the new is to be examined."
330
+
331
+ Lindy doesn't mean reject the new. It means: the burden of proof is on the new. New must demonstrate value; old has already demonstrated survival.
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: thinking-map-territory
3
+ description: Use when behavior contradicts the docs, tests, diagram, or your assumption — stop reasoning from the description, go verify the running code or data directly, and let the territory overrule the map.
4
+ ---
5
+
6
+ # Map-Territory Thinking
7
+
8
+ ## Overview
9
+
10
+ "The map is not the territory." Every representation — doc, test, diagram, comment, mental model — is a simplified view of reality. When behavior contradicts the description, the fastest path to resolution is to **stop reasoning from the map and go verify the territory directly**: read the actual code path, run it with instrumentation, query the real data, reproduce the behavior.
11
+
12
+ A bug *is* a map–territory mismatch. The README says X, the function name implies Y, the comment claims Z — but the code does something else. The skill is scoped to this specific agent-relevant domain: docs/tests/mental-model vs runtime/code reality. It is NOT a general philosophical framework.
13
+
14
+ **Core Principle:** The running code and actual data are the territory. The README, the test, the diagram, the comment, and your assumption are all maps. When the two disagree, the territory wins — go look at it before building a theory on top of the map.
15
+
16
+ ## When to Use
17
+
18
+ - **Debugging:** behavior contradicts the docs, a test's expectation, a comment, a diagram, or "it should work" — go read/trace the real code path
19
+ - A claim about the system comes from a doc, a comment, or recall rather than from the current code or data
20
+ - Tests pass but the behavior is wrong (the test is a map of *expected* behavior, not all behavior)
21
+ - You're about to theorize about *why* something happens instead of looking at *what* happens
22
+
23
+ Decision flow:
24
+
25
+ ```
26
+ Behavior ≠ what the doc/test/diagram/assumption says?
27
+ → Yes → GO VERIFY THE REAL CODE/DATA, then theorize
28
+ → No → Fine, but confirm before high-stakes action
29
+
30
+ Building a theory on a description rather than the thing itself?
31
+ → Yes → CHECK THE TERRITORY FIRST
32
+ ```
33
+
34
+ ## When NOT to Use
35
+
36
+ - **The map IS the artifact you're being asked to change.** When editing the docs, the spec, or the diagram itself, that *is* the territory for that task — don't spiral into verifying everything.
37
+ - **You've already verified against the territory this session.** Re-checking the same code path repeatedly is wasted budget; trust the verification you just did.
38
+ - **The map is authoritative and current** (e.g., a generated type, a schema the code is derived from). Don't second-guess a source of truth.
39
+ - **The mismatch doesn't affect the decision.** If the abstraction leaks in a way that can't change your action, note it and move on.
40
+
41
+ ## Procedure
42
+
43
+ ### Step 1: Name the Map
44
+
45
+ When something is surprising, explicitly identify the *representation* the surprise is measured against:
46
+
47
+ ```
48
+ Surprise: "This function should return the user, but the page is blank."
49
+
50
+ The map: the function name + a comment saying it returns the user
51
+ The territory: what the function body actually does on this input
52
+ ```
53
+
54
+ Be specific about which map you were trusting — the doc, the test name, the variable name, the comment, the architectural diagram, or your own assumption.
55
+
56
+ ### Step 2: Go to the Territory — Agent-Executable Verification
57
+
58
+ Don't reason about what the code *probably* does. Execute these verification actions:
59
+
60
+ 1. **Read the actual function body and the path that runs** — not the summary of it, not the docstring, the actual code
61
+ 2. **Run it / add a log / inspect the value** — instead of predicting the output from the signature
62
+ 3. **Query the real data** — instead of trusting the schema's intent
63
+ 4. **Reproduce the behavior** — instead of reasoning from the bug report's wording
64
+ 5. **Check what changed recently** — `git log`, the deploy, the config change
65
+
66
+ Only theorize AFTER you've looked at the territory.
67
+
68
+ ### Step 3: Let the Territory Overrule the Map
69
+
70
+ If the code does X and the doc says Y, the code is what ships and what breaks. Update your theory to match the territory — never the reverse.
71
+
72
+ ```
73
+ Map: "The cache makes reads fast"
74
+ Territory (measured): 30% hit rate; most reads hit the DB
75
+ Conclusion: the mental model was wrong — fix the model, then the caching
76
+ ```
77
+
78
+ ### Step 4: Note What No Map Covers
79
+
80
+ Once verified, name the aspects no available map shows — that's where the next bug hides:
81
+
82
+ ```
83
+ Have: the happy-path code, the passing tests
84
+ Don't have a map of: the error/timeout paths, contention behavior, the null case
85
+ Action: look at those before declaring it correct
86
+ ```
87
+
88
+ ### Step 5: Stop When Verified
89
+
90
+ Don't re-verify something you already confirmed this session. Trust the verification you just did and move on.
91
+
92
+ ## Output Contract
93
+
94
+ A completed Map-Territory verification produces:
95
+
96
+ 1. **Map Named** — which representation (doc/test/comment/assumption) was trusted
97
+ 2. **Territory Verified** — what the actual code/data showed (specific observation, not interpretation)
98
+ 3. **Delta Documented** — the gap between map and territory
99
+ 4. **Model Updated** — the corrected understanding after territory observation
100
+ 5. **Uncovered Aspects Noted** — what no available map covers (likely next bug site)
101
+
102
+ ## Anti-Patterns
103
+
104
+ | Anti-Pattern | Symptom | Correction |
105
+ |---|---|---|
106
+ | **Theorizing before verifying** | Reasoning about what code *probably* does without looking | Go to the territory first — read/run/query/reproduce |
107
+ | **Trusting the map over the territory** | "The doc says X, so the code must be wrong" when the code is what ships | The territory wins; update the map |
108
+ | **Re-verifying known territory** | Checking the same code path repeatedly in one session | Trust what you just verified; note it and move on |
109
+ | **Map-territory on artifacts being edited** | Spiral into verification when the doc/diagram IS the thing you're changing | The edited artifact IS the territory for that task |
110
+ | **Over-applying to authoritative maps** | Second-guessing generated types or code-derived schemas | Authoritative/generated maps ARE the territory |
111
+ | **Verifying irrelevant mismatches** | Noting a doc-code gap that can't affect the decision | If it doesn't change your action, note it and move on |