@qball-inc/the-bulwark 1.0.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.
Files changed (175) hide show
  1. package/.claude-plugin/plugin.json +43 -0
  2. package/agents/bulwark-fix-validator.md +633 -0
  3. package/agents/bulwark-implementer.md +391 -0
  4. package/agents/bulwark-issue-analyzer.md +308 -0
  5. package/agents/bulwark-standards-reviewer.md +221 -0
  6. package/agents/plan-creation-architect.md +323 -0
  7. package/agents/plan-creation-eng-lead.md +352 -0
  8. package/agents/plan-creation-po.md +300 -0
  9. package/agents/plan-creation-qa-critic.md +334 -0
  10. package/agents/product-ideation-competitive-analyzer.md +298 -0
  11. package/agents/product-ideation-idea-validator.md +268 -0
  12. package/agents/product-ideation-market-researcher.md +292 -0
  13. package/agents/product-ideation-pattern-documenter.md +308 -0
  14. package/agents/product-ideation-segment-analyzer.md +303 -0
  15. package/agents/product-ideation-strategist.md +259 -0
  16. package/agents/statusline-setup.md +97 -0
  17. package/hooks/hooks.json +59 -0
  18. package/package.json +45 -0
  19. package/scripts/hooks/cleanup-stale.sh +13 -0
  20. package/scripts/hooks/enforce-quality.sh +166 -0
  21. package/scripts/hooks/implementer-quality.sh +256 -0
  22. package/scripts/hooks/inject-protocol.sh +52 -0
  23. package/scripts/hooks/suggest-pipeline.sh +175 -0
  24. package/scripts/hooks/track-pipeline-start.sh +37 -0
  25. package/scripts/hooks/track-pipeline-stop.sh +52 -0
  26. package/scripts/init-rules.sh +35 -0
  27. package/scripts/init.sh +151 -0
  28. package/skills/anthropic-validator/SKILL.md +607 -0
  29. package/skills/anthropic-validator/references/agents-checklist.md +131 -0
  30. package/skills/anthropic-validator/references/commands-checklist.md +102 -0
  31. package/skills/anthropic-validator/references/hooks-checklist.md +151 -0
  32. package/skills/anthropic-validator/references/mcp-checklist.md +136 -0
  33. package/skills/anthropic-validator/references/plugins-checklist.md +148 -0
  34. package/skills/anthropic-validator/references/skills-checklist.md +85 -0
  35. package/skills/assertion-patterns/SKILL.md +296 -0
  36. package/skills/bug-magnet-data/SKILL.md +284 -0
  37. package/skills/bug-magnet-data/context/cli-args.md +91 -0
  38. package/skills/bug-magnet-data/context/db-query.md +104 -0
  39. package/skills/bug-magnet-data/context/file-contents.md +103 -0
  40. package/skills/bug-magnet-data/context/http-body.md +91 -0
  41. package/skills/bug-magnet-data/context/process-spawn.md +123 -0
  42. package/skills/bug-magnet-data/data/booleans/boundaries.yaml +143 -0
  43. package/skills/bug-magnet-data/data/collections/arrays.yaml +114 -0
  44. package/skills/bug-magnet-data/data/collections/objects.yaml +123 -0
  45. package/skills/bug-magnet-data/data/concurrency/race-conditions.yaml +118 -0
  46. package/skills/bug-magnet-data/data/concurrency/state-machines.yaml +115 -0
  47. package/skills/bug-magnet-data/data/dates/boundaries.yaml +137 -0
  48. package/skills/bug-magnet-data/data/dates/invalid.yaml +132 -0
  49. package/skills/bug-magnet-data/data/dates/timezone.yaml +118 -0
  50. package/skills/bug-magnet-data/data/encoding/charset.yaml +79 -0
  51. package/skills/bug-magnet-data/data/encoding/normalization.yaml +105 -0
  52. package/skills/bug-magnet-data/data/formats/email.yaml +154 -0
  53. package/skills/bug-magnet-data/data/formats/json.yaml +187 -0
  54. package/skills/bug-magnet-data/data/formats/url.yaml +165 -0
  55. package/skills/bug-magnet-data/data/language-specific/javascript.yaml +182 -0
  56. package/skills/bug-magnet-data/data/language-specific/python.yaml +174 -0
  57. package/skills/bug-magnet-data/data/language-specific/rust.yaml +148 -0
  58. package/skills/bug-magnet-data/data/numbers/boundaries.yaml +161 -0
  59. package/skills/bug-magnet-data/data/numbers/precision.yaml +89 -0
  60. package/skills/bug-magnet-data/data/numbers/special.yaml +69 -0
  61. package/skills/bug-magnet-data/data/strings/boundaries.yaml +109 -0
  62. package/skills/bug-magnet-data/data/strings/injection.yaml +208 -0
  63. package/skills/bug-magnet-data/data/strings/special-chars.yaml +190 -0
  64. package/skills/bug-magnet-data/data/strings/unicode.yaml +139 -0
  65. package/skills/bug-magnet-data/references/external-lists.md +115 -0
  66. package/skills/bulwark-brainstorm/SKILL.md +563 -0
  67. package/skills/bulwark-brainstorm/references/at-teammate-prompts.md +60 -0
  68. package/skills/bulwark-brainstorm/references/role-critical-analyst.md +78 -0
  69. package/skills/bulwark-brainstorm/references/role-development-lead.md +66 -0
  70. package/skills/bulwark-brainstorm/references/role-product-delivery-lead.md +79 -0
  71. package/skills/bulwark-brainstorm/references/role-product-manager.md +62 -0
  72. package/skills/bulwark-brainstorm/references/role-project-sme.md +59 -0
  73. package/skills/bulwark-brainstorm/references/role-technical-architect.md +66 -0
  74. package/skills/bulwark-research/SKILL.md +298 -0
  75. package/skills/bulwark-research/references/viewpoint-contrarian.md +63 -0
  76. package/skills/bulwark-research/references/viewpoint-direct-investigation.md +62 -0
  77. package/skills/bulwark-research/references/viewpoint-first-principles.md +65 -0
  78. package/skills/bulwark-research/references/viewpoint-practitioner.md +62 -0
  79. package/skills/bulwark-research/references/viewpoint-prior-art.md +66 -0
  80. package/skills/bulwark-scaffold/SKILL.md +330 -0
  81. package/skills/bulwark-statusline/SKILL.md +161 -0
  82. package/skills/bulwark-statusline/scripts/statusline.sh +144 -0
  83. package/skills/bulwark-verify/SKILL.md +519 -0
  84. package/skills/code-review/SKILL.md +428 -0
  85. package/skills/code-review/examples/anti-patterns/linting.ts +181 -0
  86. package/skills/code-review/examples/anti-patterns/security.ts +91 -0
  87. package/skills/code-review/examples/anti-patterns/standards.ts +195 -0
  88. package/skills/code-review/examples/anti-patterns/type-safety.ts +108 -0
  89. package/skills/code-review/examples/recommended/linting.ts +195 -0
  90. package/skills/code-review/examples/recommended/security.ts +154 -0
  91. package/skills/code-review/examples/recommended/standards.ts +231 -0
  92. package/skills/code-review/examples/recommended/type-safety.ts +181 -0
  93. package/skills/code-review/frameworks/angular.md +218 -0
  94. package/skills/code-review/frameworks/django.md +235 -0
  95. package/skills/code-review/frameworks/express.md +207 -0
  96. package/skills/code-review/frameworks/flask.md +298 -0
  97. package/skills/code-review/frameworks/generic.md +146 -0
  98. package/skills/code-review/frameworks/react.md +152 -0
  99. package/skills/code-review/frameworks/vue.md +244 -0
  100. package/skills/code-review/references/linting-patterns.md +221 -0
  101. package/skills/code-review/references/security-patterns.md +125 -0
  102. package/skills/code-review/references/standards-patterns.md +246 -0
  103. package/skills/code-review/references/type-safety-patterns.md +130 -0
  104. package/skills/component-patterns/SKILL.md +131 -0
  105. package/skills/component-patterns/references/pattern-cli-command.md +118 -0
  106. package/skills/component-patterns/references/pattern-database.md +166 -0
  107. package/skills/component-patterns/references/pattern-external-api.md +139 -0
  108. package/skills/component-patterns/references/pattern-file-parser.md +168 -0
  109. package/skills/component-patterns/references/pattern-http-server.md +162 -0
  110. package/skills/component-patterns/references/pattern-process-spawner.md +133 -0
  111. package/skills/continuous-feedback/SKILL.md +327 -0
  112. package/skills/continuous-feedback/references/collect-instructions.md +81 -0
  113. package/skills/continuous-feedback/references/specialize-code-review.md +82 -0
  114. package/skills/continuous-feedback/references/specialize-general.md +98 -0
  115. package/skills/continuous-feedback/references/specialize-test-audit.md +81 -0
  116. package/skills/create-skill/SKILL.md +359 -0
  117. package/skills/create-skill/references/agent-conventions.md +194 -0
  118. package/skills/create-skill/references/agent-template.md +195 -0
  119. package/skills/create-skill/references/content-guidance.md +291 -0
  120. package/skills/create-skill/references/decision-framework.md +124 -0
  121. package/skills/create-skill/references/template-pipeline.md +217 -0
  122. package/skills/create-skill/references/template-reference-heavy.md +111 -0
  123. package/skills/create-skill/references/template-research.md +210 -0
  124. package/skills/create-skill/references/template-script-driven.md +172 -0
  125. package/skills/create-skill/references/template-simple.md +80 -0
  126. package/skills/create-subagent/SKILL.md +353 -0
  127. package/skills/create-subagent/references/agent-conventions.md +268 -0
  128. package/skills/create-subagent/references/content-guidance.md +232 -0
  129. package/skills/create-subagent/references/decision-framework.md +134 -0
  130. package/skills/create-subagent/references/template-single-agent.md +192 -0
  131. package/skills/fix-bug/SKILL.md +241 -0
  132. package/skills/governance-protocol/SKILL.md +116 -0
  133. package/skills/init/SKILL.md +341 -0
  134. package/skills/issue-debugging/SKILL.md +385 -0
  135. package/skills/issue-debugging/references/anti-patterns.md +245 -0
  136. package/skills/issue-debugging/references/debug-report-schema.md +227 -0
  137. package/skills/mock-detection/SKILL.md +511 -0
  138. package/skills/mock-detection/references/false-positive-prevention.md +402 -0
  139. package/skills/mock-detection/references/stub-patterns.md +236 -0
  140. package/skills/pipeline-templates/SKILL.md +215 -0
  141. package/skills/pipeline-templates/references/code-change-workflow.md +277 -0
  142. package/skills/pipeline-templates/references/code-review.md +336 -0
  143. package/skills/pipeline-templates/references/fix-validation.md +421 -0
  144. package/skills/pipeline-templates/references/new-feature.md +335 -0
  145. package/skills/pipeline-templates/references/research-brainstorm.md +161 -0
  146. package/skills/pipeline-templates/references/research-planning.md +257 -0
  147. package/skills/pipeline-templates/references/test-audit.md +389 -0
  148. package/skills/pipeline-templates/references/test-execution-fix.md +238 -0
  149. package/skills/plan-creation/SKILL.md +497 -0
  150. package/skills/product-ideation/SKILL.md +372 -0
  151. package/skills/product-ideation/references/analysis-frameworks.md +161 -0
  152. package/skills/session-handoff/SKILL.md +139 -0
  153. package/skills/session-handoff/references/examples.md +223 -0
  154. package/skills/setup-lsp/SKILL.md +312 -0
  155. package/skills/setup-lsp/references/server-registry.md +85 -0
  156. package/skills/setup-lsp/references/troubleshooting.md +135 -0
  157. package/skills/subagent-output-templating/SKILL.md +415 -0
  158. package/skills/subagent-output-templating/references/examples.md +440 -0
  159. package/skills/subagent-prompting/SKILL.md +364 -0
  160. package/skills/subagent-prompting/references/examples.md +342 -0
  161. package/skills/test-audit/SKILL.md +531 -0
  162. package/skills/test-audit/references/known-limitations.md +41 -0
  163. package/skills/test-audit/references/priority-classification.md +30 -0
  164. package/skills/test-audit/references/prompts/deep-mode-detection.md +83 -0
  165. package/skills/test-audit/references/prompts/synthesis.md +57 -0
  166. package/skills/test-audit/references/rewrite-instructions.md +46 -0
  167. package/skills/test-audit/references/schemas/audit-output.yaml +100 -0
  168. package/skills/test-audit/references/schemas/diagnostic-output.yaml +49 -0
  169. package/skills/test-audit/scripts/data-flow-analyzer.ts +509 -0
  170. package/skills/test-audit/scripts/integration-mock-detector.ts +462 -0
  171. package/skills/test-audit/scripts/package.json +20 -0
  172. package/skills/test-audit/scripts/skip-detector.ts +211 -0
  173. package/skills/test-audit/scripts/verification-counter.ts +295 -0
  174. package/skills/test-classification/SKILL.md +310 -0
  175. package/skills/test-fixture-creation/SKILL.md +295 -0
@@ -0,0 +1,148 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: language-specific
7
+ subcategory: rust
8
+ tier: T2
9
+
10
+ bugs_caught:
11
+ - "Ownership and borrowing edge cases"
12
+ - "Lifetime issues"
13
+ - "Unsafe code pitfalls"
14
+
15
+ values:
16
+ # Ownership
17
+ move_after_use:
18
+ code: |
19
+ let s = String::from("hello");
20
+ let s2 = s;
21
+ println!("{}", s); // Error
22
+ issue: "Use after move"
23
+ bugs_caught:
24
+ - "Value moved, then used"
25
+ safe_for_automation: true
26
+
27
+ partial_move:
28
+ code: |
29
+ struct Point { x: i32, y: i32 }
30
+ let p = Point { x: 1, y: 2 };
31
+ let x = p.x;
32
+ println!("{:?}", p); // Error
33
+ issue: "Partial move makes struct unusable"
34
+ bugs_caught:
35
+ - "Partial move of struct"
36
+ safe_for_automation: true
37
+
38
+ # Borrowing
39
+ mutable_while_borrowed:
40
+ code: |
41
+ let mut v = vec![1, 2, 3];
42
+ let first = &v[0];
43
+ v.push(4); // Error
44
+ println!("{}", first);
45
+ issue: "Mutable borrow while immutable borrow exists"
46
+ bugs_caught:
47
+ - "Borrow checker violation"
48
+ safe_for_automation: true
49
+
50
+ iterator_invalidation:
51
+ code: |
52
+ let mut v = vec![1, 2, 3];
53
+ for i in &v {
54
+ v.push(*i); // Error
55
+ }
56
+ issue: "Modification during iteration"
57
+ bugs_caught:
58
+ - "Iterator invalidation"
59
+ safe_for_automation: true
60
+
61
+ # Lifetimes
62
+ dangling_reference:
63
+ code: |
64
+ fn dangle() -> &String {
65
+ let s = String::from("hello");
66
+ &s // Error: returns reference to dropped value
67
+ }
68
+ issue: "Returning reference to local"
69
+ bugs_caught:
70
+ - "Dangling reference"
71
+ safe_for_automation: true
72
+
73
+ lifetime_elision_surprise:
74
+ code: |
75
+ fn longest(x: &str, y: &str) -> &str {
76
+ if x.len() > y.len() { x } else { y }
77
+ } // Error: need lifetime annotations
78
+ issue: "Lifetime elision rules don't apply"
79
+ bugs_caught:
80
+ - "Missing lifetime annotation"
81
+ safe_for_automation: true
82
+
83
+ # Option/Result
84
+ unwrap_none:
85
+ code: |
86
+ let x: Option<i32> = None;
87
+ x.unwrap(); // Panic!
88
+ issue: "Unwrap on None"
89
+ bugs_caught:
90
+ - "Panicking on None"
91
+ safe_for_automation: true
92
+
93
+ unwrap_err:
94
+ code: |
95
+ let x: Result<i32, &str> = Err("oops");
96
+ x.unwrap(); // Panic!
97
+ issue: "Unwrap on Err"
98
+ bugs_caught:
99
+ - "Panicking on Err"
100
+ safe_for_automation: true
101
+
102
+ # Integer overflow
103
+ overflow_debug:
104
+ code: |
105
+ let x: u8 = 255;
106
+ let y = x + 1; // Panic in debug, wrap in release
107
+ issue: "Integer overflow"
108
+ bugs_caught:
109
+ - "Different behavior debug vs release"
110
+ safe_for_automation: true
111
+
112
+ # Unsafe
113
+ unsafe_deref_null:
114
+ code: |
115
+ let ptr: *const i32 = std::ptr::null();
116
+ unsafe { *ptr } // Undefined behavior
117
+ issue: "Null pointer dereference"
118
+ bugs_caught:
119
+ - "UB in unsafe code"
120
+ safe_for_automation: true
121
+
122
+ data_race_unsafe:
123
+ code: |
124
+ static mut COUNTER: i32 = 0;
125
+ // Multiple threads accessing COUNTER
126
+ issue: "Data race in unsafe static"
127
+ bugs_caught:
128
+ - "Data race with mutable static"
129
+ safe_for_automation: true
130
+
131
+ # String/str
132
+ string_indexing:
133
+ code: |
134
+ let s = String::from("hello");
135
+ let c = s[0]; // Error: cannot index String
136
+ issue: "Direct string indexing not allowed"
137
+ bugs_caught:
138
+ - "UTF-8 aware string handling"
139
+ safe_for_automation: true
140
+
141
+ string_slice_boundary:
142
+ code: |
143
+ let s = "héllo";
144
+ let slice = &s[0..2]; // Panic if not char boundary
145
+ issue: "Slice not on char boundary"
146
+ bugs_caught:
147
+ - "Multi-byte character slicing"
148
+ safe_for_automation: true
@@ -0,0 +1,161 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: numbers
7
+ subcategory: boundaries
8
+ tier: T0
9
+
10
+ bugs_caught:
11
+ - "Integer overflow/underflow"
12
+ - "Off-by-one errors"
13
+ - "Division by zero"
14
+ - "Sign handling errors"
15
+
16
+ values:
17
+ zero:
18
+ value: 0
19
+ bugs_caught:
20
+ - "Division by zero"
21
+ - "Zero-index edge cases"
22
+ - "Falsy value handling"
23
+ safe_for_automation: true
24
+
25
+ negative_one:
26
+ value: -1
27
+ bugs_caught:
28
+ - "Array index -1 handling"
29
+ - "Invalid count/size"
30
+ - "Error return value"
31
+ safe_for_automation: true
32
+
33
+ positive_one:
34
+ value: 1
35
+ bugs_caught:
36
+ - "Minimum positive handling"
37
+ - "Off-by-one at lower bound"
38
+ safe_for_automation: true
39
+
40
+ negative_zero:
41
+ value: -0
42
+ bugs_caught:
43
+ - "Signed zero handling"
44
+ - "Comparison with zero"
45
+ safe_for_automation: true
46
+ note: "In IEEE 754, -0 === 0 but 1/-0 === -Infinity"
47
+
48
+ # 32-bit integer boundaries
49
+ int32_max:
50
+ value: 2147483647
51
+ bugs_caught:
52
+ - "32-bit integer overflow"
53
+ - "INT_MAX handling"
54
+ safe_for_automation: true
55
+ note: "2^31 - 1"
56
+
57
+ int32_max_plus_1:
58
+ value: 2147483648
59
+ bugs_caught:
60
+ - "32-bit overflow to negative"
61
+ safe_for_automation: true
62
+ note: "2^31 - overflows to -2147483648 in signed 32-bit"
63
+
64
+ int32_min:
65
+ value: -2147483648
66
+ bugs_caught:
67
+ - "32-bit integer underflow"
68
+ - "INT_MIN handling"
69
+ safe_for_automation: true
70
+ note: "-2^31"
71
+
72
+ int32_min_minus_1:
73
+ value: -2147483649
74
+ bugs_caught:
75
+ - "32-bit underflow"
76
+ safe_for_automation: true
77
+
78
+ # 64-bit integer boundaries
79
+ int64_max:
80
+ value: 9223372036854775807
81
+ bugs_caught:
82
+ - "64-bit integer overflow"
83
+ - "LONG_MAX handling"
84
+ safe_for_automation: true
85
+ note: "2^63 - 1"
86
+
87
+ int64_min:
88
+ value: -9223372036854775808
89
+ bugs_caught:
90
+ - "64-bit integer underflow"
91
+ - "LONG_MIN handling"
92
+ safe_for_automation: true
93
+ note: "-2^63"
94
+
95
+ # Unsigned boundaries
96
+ uint32_max:
97
+ value: 4294967295
98
+ bugs_caught:
99
+ - "Unsigned 32-bit max"
100
+ - "UINT_MAX handling"
101
+ safe_for_automation: true
102
+ note: "2^32 - 1"
103
+
104
+ uint64_max:
105
+ value: 18446744073709551615
106
+ bugs_caught:
107
+ - "Unsigned 64-bit max"
108
+ safe_for_automation: true
109
+ note: "2^64 - 1"
110
+
111
+ # JavaScript safe integer
112
+ js_max_safe_int:
113
+ value: 9007199254740991
114
+ bugs_caught:
115
+ - "JavaScript precision loss"
116
+ - "Number.MAX_SAFE_INTEGER"
117
+ safe_for_automation: true
118
+ note: "2^53 - 1"
119
+
120
+ js_max_safe_int_plus_1:
121
+ value: 9007199254740992
122
+ bugs_caught:
123
+ - "JavaScript precision loss at boundary"
124
+ safe_for_automation: true
125
+ note: "2^53 - loses precision"
126
+
127
+ # Common business boundaries
128
+ hundred:
129
+ value: 100
130
+ bugs_caught:
131
+ - "Percentage boundary"
132
+ - "Hundred-based calculations"
133
+ safe_for_automation: true
134
+
135
+ thousand:
136
+ value: 1000
137
+ bugs_caught:
138
+ - "Thousand separator handling"
139
+ safe_for_automation: true
140
+
141
+ million:
142
+ value: 1000000
143
+ bugs_caught:
144
+ - "Large number display"
145
+ safe_for_automation: true
146
+
147
+ # Off-by-one patterns
148
+ power_of_2_minus_1:
149
+ value: 255
150
+ bugs_caught:
151
+ - "8-bit boundary"
152
+ - "Color value max"
153
+ safe_for_automation: true
154
+ note: "2^8 - 1"
155
+
156
+ power_of_2:
157
+ value: 256
158
+ bugs_caught:
159
+ - "8-bit overflow"
160
+ safe_for_automation: true
161
+ note: "2^8"
@@ -0,0 +1,89 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: numbers
7
+ subcategory: precision
8
+ tier: T1
9
+
10
+ bugs_caught:
11
+ - "Floating point comparison failures"
12
+ - "Rounding errors in calculations"
13
+ - "Currency calculation bugs"
14
+
15
+ values:
16
+ classic_float_fail:
17
+ expression: "0.1 + 0.2"
18
+ expected: 0.3
19
+ actual: 0.30000000000000004
20
+ bugs_caught:
21
+ - "Direct float comparison"
22
+ - "Classic IEEE 754 demonstration"
23
+ safe_for_automation: true
24
+
25
+ float_subtraction:
26
+ expression: "0.3 - 0.1"
27
+ expected: 0.2
28
+ actual: 0.19999999999999998
29
+ bugs_caught:
30
+ - "Float subtraction precision"
31
+ safe_for_automation: true
32
+
33
+ currency_penny:
34
+ value: 0.01
35
+ bugs_caught:
36
+ - "Currency precision (use integers for cents)"
37
+ safe_for_automation: true
38
+
39
+ currency_calculation:
40
+ expression: "19.99 * 100"
41
+ expected: 1999
42
+ actual: 1998.9999999999998
43
+ bugs_caught:
44
+ - "Currency multiplication precision"
45
+ safe_for_automation: true
46
+
47
+ very_small:
48
+ value: 1e-300
49
+ bugs_caught:
50
+ - "Very small number handling"
51
+ - "Underflow risks"
52
+ safe_for_automation: true
53
+
54
+ very_large:
55
+ value: 1e300
56
+ bugs_caught:
57
+ - "Very large number handling"
58
+ - "Overflow risks"
59
+ safe_for_automation: true
60
+
61
+ recurring_decimal:
62
+ expression: "1 / 3"
63
+ bugs_caught:
64
+ - "Repeating decimal representation"
65
+ safe_for_automation: true
66
+
67
+ division_precision:
68
+ expression: "10 / 3 * 3"
69
+ expected: 10
70
+ actual: 9.999999999999998
71
+ bugs_caught:
72
+ - "Division-multiplication precision loss"
73
+ safe_for_automation: true
74
+
75
+ sum_many_small:
76
+ expression: "0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1"
77
+ expected: 1.0
78
+ actual: 0.9999999999999999
79
+ bugs_caught:
80
+ - "Accumulated rounding errors"
81
+ safe_for_automation: true
82
+
83
+ percentage_of_percentage:
84
+ expression: "100 * 0.7 * 0.7"
85
+ expected: 49
86
+ actual: 48.99999999999999
87
+ bugs_caught:
88
+ - "Compound percentage calculations"
89
+ safe_for_automation: true
@@ -0,0 +1,69 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: numbers
7
+ subcategory: special
8
+ tier: T1
9
+
10
+ bugs_caught:
11
+ - "NaN propagation"
12
+ - "Infinity handling"
13
+ - "Special value comparisons"
14
+
15
+ values:
16
+ nan:
17
+ value: "NaN"
18
+ bugs_caught:
19
+ - "NaN !== NaN comparison failure"
20
+ - "NaN propagation through calculations"
21
+ - "isNaN vs Number.isNaN confusion"
22
+ safe_for_automation: true
23
+ note: "Use Number.isNaN() not isNaN()"
24
+
25
+ positive_infinity:
26
+ value: "Infinity"
27
+ bugs_caught:
28
+ - "Infinite loop risks"
29
+ - "Display of infinite values"
30
+ - "Comparison with Infinity"
31
+ safe_for_automation: true
32
+
33
+ negative_infinity:
34
+ value: "-Infinity"
35
+ bugs_caught:
36
+ - "Negative infinity handling"
37
+ - "Min value calculations"
38
+ safe_for_automation: true
39
+
40
+ epsilon:
41
+ value: 2.220446049250313e-16
42
+ bugs_caught:
43
+ - "Floating point comparison threshold"
44
+ safe_for_automation: true
45
+ note: "Number.EPSILON in JavaScript"
46
+
47
+ max_value:
48
+ value: 1.7976931348623157e+308
49
+ bugs_caught:
50
+ - "Maximum float value"
51
+ - "Overflow to Infinity"
52
+ safe_for_automation: true
53
+ note: "Number.MAX_VALUE in JavaScript"
54
+
55
+ min_value:
56
+ value: 5e-324
57
+ bugs_caught:
58
+ - "Minimum positive float"
59
+ - "Underflow to zero"
60
+ safe_for_automation: true
61
+ note: "Number.MIN_VALUE in JavaScript (positive)"
62
+
63
+ min_safe_integer:
64
+ value: -9007199254740991
65
+ bugs_caught:
66
+ - "Minimum safe integer"
67
+ - "Precision loss below this"
68
+ safe_for_automation: true
69
+ note: "-(2^53 - 1)"
@@ -0,0 +1,109 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: strings
7
+ subcategory: boundaries
8
+ tier: T0
9
+
10
+ bugs_caught:
11
+ - "NullPointerException on empty input"
12
+ - "Off-by-one in length validation"
13
+ - "Buffer overflow on long strings"
14
+ - "Whitespace-only treated as empty"
15
+
16
+ values:
17
+ empty:
18
+ value: ""
19
+ bugs_caught:
20
+ - "NullPointerException"
21
+ - "Empty input not handled"
22
+ - "Length validation off-by-one"
23
+ safe_for_automation: true
24
+
25
+ single_char:
26
+ value: "a"
27
+ bugs_caught:
28
+ - "Minimum length validation"
29
+ - "Single vs empty distinction"
30
+ safe_for_automation: true
31
+
32
+ two_chars:
33
+ value: "ab"
34
+ bugs_caught:
35
+ - "Off-by-one at minimum boundary"
36
+ safe_for_automation: true
37
+
38
+ whitespace_only:
39
+ value: " "
40
+ bugs_caught:
41
+ - "Trim logic errors"
42
+ - "Empty vs whitespace distinction"
43
+ safe_for_automation: true
44
+
45
+ single_space:
46
+ value: " "
47
+ bugs_caught:
48
+ - "Space handling"
49
+ - "Trim edge case"
50
+ safe_for_automation: true
51
+
52
+ tabs_and_spaces:
53
+ value: "\t \t"
54
+ bugs_caught:
55
+ - "Mixed whitespace handling"
56
+ - "Inconsistent trim behavior"
57
+ safe_for_automation: true
58
+
59
+ leading_whitespace:
60
+ value: " hello"
61
+ bugs_caught:
62
+ - "Left trim failures"
63
+ - "Whitespace preservation bugs"
64
+ safe_for_automation: true
65
+
66
+ trailing_whitespace:
67
+ value: "hello "
68
+ bugs_caught:
69
+ - "Right trim failures"
70
+ - "Trailing space handling"
71
+ safe_for_automation: true
72
+
73
+ long_string_1000:
74
+ value_template: "a * 1000"
75
+ bugs_caught:
76
+ - "Performance degradation"
77
+ - "Memory allocation issues"
78
+ safe_for_automation: true
79
+ note: "Generate 1000 'a' characters"
80
+
81
+ long_string_10000:
82
+ value_template: "a * 10000"
83
+ bugs_caught:
84
+ - "Buffer limits"
85
+ - "Truncation errors"
86
+ safe_for_automation: true
87
+ note: "Generate 10000 'a' characters"
88
+
89
+ max_length_minus_1:
90
+ value_template: "a * (MAX_LENGTH - 1)"
91
+ bugs_caught:
92
+ - "Off-by-one at maximum"
93
+ safe_for_automation: true
94
+ note: "Use system-specific MAX_LENGTH"
95
+
96
+ max_length:
97
+ value_template: "a * MAX_LENGTH"
98
+ bugs_caught:
99
+ - "Exact boundary handling"
100
+ safe_for_automation: true
101
+ note: "Use system-specific MAX_LENGTH"
102
+
103
+ max_length_plus_1:
104
+ value_template: "a * (MAX_LENGTH + 1)"
105
+ bugs_caught:
106
+ - "Overflow at maximum"
107
+ - "Rejection message quality"
108
+ safe_for_automation: true
109
+ note: "Use system-specific MAX_LENGTH"