diff --git a/Directory.Build.props b/Directory.Build.props
index 6868d47..c115875 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -15,6 +15,6 @@
true
MeWeb.Shared
NumbersExtensions,Texts
- $(WarningsAsErrors);HR0001;HR0002;HR0003;HR0004;HR0005;HR0006;HR0007;HR0008;HR0009;HR0010;HR0011;HR0101;HR0102;HR0103;HR0104;HR0105;HR0106;HR0201
+ $(WarningsAsErrors);HR0001;HR0002;HR0003;HR0004;HR0005;HR0006;HR0007;HR0008;HR0009;HR0010;HR0011;HR0012;HR0013;HR0101;HR0102;HR0103;HR0104;HR0105;HR0106;HR0107;HR0108;HR0201
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 977a4ad..7342c8d 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -24,6 +24,6 @@
-
+
diff --git a/PATTERNS.md b/PATTERNS.md
index a2d644f..0848787 100644
--- a/PATTERNS.md
+++ b/PATTERNS.md
@@ -50,7 +50,12 @@ MeWeb builds with none and carries no suppression. Applied to MeWeb:
- `NumbersExtensions` holds the invariant values that fill a localized template: `ToOneDecimal`, `ToWholeMegabytes`.
- `Texts` holds what the App formats in the reader's culture: money and dates.
- **JSON:** one source-generated context per assembly (#84).
-- **Not applicable:** the `.razor` rules (HR0101–HR0106, HR0201), since the App is Avalonia. Their counterparts are
+- **Error codes** (HR0012, HR0013) are not turned on: a refusal already carries a stable machine code,
+ `ViewRefusal.Reason` (`too-many`, `busy`, `bad-ports`…), which installed apps read and translate. A numbered prefix
+ would change what they receive.
+- **Spreadsheets** (HR0319): none; findings are shown in the app and shared as the submission JSON the person reads.
+- **Not applicable:** passwords (HR0311), since there are no accounts.
+- **Not applicable:** the `.razor` rules (HR0101–HR0108, HR0201), since the App is Avalonia. Their counterparts are
#27, #43, #44 and #93. `Localizer.Instance[key]` already returns a string (#91).
---