summaryrefslogtreecommitdiffhomepage
path: root/.dispatch
diff options
context:
space:
mode:
Diffstat (limited to '.dispatch')
-rw-r--r--.dispatch/rules/isolation-over-dry.md12
1 files changed, 12 insertions, 0 deletions
diff --git a/.dispatch/rules/isolation-over-dry.md b/.dispatch/rules/isolation-over-dry.md
new file mode 100644
index 0000000..55ac13a
--- /dev/null
+++ b/.dispatch/rules/isolation-over-dry.md
@@ -0,0 +1,12 @@
+# Rule: isolation over DRY
+
+Prefer self-contained, even DUPLICATED, code in each extension over a shared helper
+that two+ extensions import. A shared module wired between sibling features is a
+coupling smell — it breaks feature-as-a-library (P1) and ties their fates together.
+Get consistency by sharing KNOWLEDGE in the harness (`.dispatch/rules`, skills,
+`GLOSSARY.md`), never shared runtime code.
+The ONLY sanctioned shared surfaces are the kernel ABI (host-provided, injected) and
+typed contracts — NOT a new utility module between features.
+When tempted to "extract a helper for consistency," stop: that is reputation-driven
+DRY (P4). Duplicating a small function across the few features that need it is the
+intended trade.