@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,114 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: collections
7
+ subcategory: arrays
8
+ tier: T0
9
+
10
+ bugs_caught:
11
+ - "Index out of bounds"
12
+ - "Empty array handling"
13
+ - "Array mutation bugs"
14
+
15
+ values:
16
+ empty:
17
+ value: []
18
+ bugs_caught:
19
+ - "Empty array iteration"
20
+ - "First/last element access on empty"
21
+ - "Reduce without initial value"
22
+ safe_for_automation: true
23
+
24
+ single_element:
25
+ value: ["only"]
26
+ bugs_caught:
27
+ - "Single element handling"
28
+ - "prev/next navigation edge"
29
+ safe_for_automation: true
30
+
31
+ two_elements:
32
+ value: ["first", "last"]
33
+ bugs_caught:
34
+ - "Two-element array"
35
+ - "First !== last distinction"
36
+ safe_for_automation: true
37
+
38
+ large_array:
39
+ value_template: "Array(10000).fill('item')"
40
+ bugs_caught:
41
+ - "Performance with large arrays"
42
+ - "Memory allocation"
43
+ safe_for_automation: true
44
+
45
+ nested_arrays:
46
+ value: [["a", "b"], ["c", "d"]]
47
+ bugs_caught:
48
+ - "Nested array handling"
49
+ - "Flattening operations"
50
+ safe_for_automation: true
51
+
52
+ deeply_nested:
53
+ value: [[[[["deep"]]]]]
54
+ bugs_caught:
55
+ - "Deep nesting handling"
56
+ - "Stack overflow on recursion"
57
+ safe_for_automation: true
58
+
59
+ mixed_types:
60
+ value: [1, "two", true, null, {"key": "value"}]
61
+ bugs_caught:
62
+ - "Mixed type array handling"
63
+ - "Type assumptions"
64
+ safe_for_automation: true
65
+
66
+ sparse_array:
67
+ value_template: "[1, , , 4]"
68
+ bugs_caught:
69
+ - "Sparse array holes"
70
+ - "undefined vs hole distinction"
71
+ safe_for_automation: true
72
+ note: "Array with holes (not undefined values)"
73
+
74
+ array_with_undefined:
75
+ value: [1, "undefined", 3]
76
+ bugs_caught:
77
+ - "Explicit undefined values"
78
+ safe_for_automation: true
79
+
80
+ array_with_null:
81
+ value: [1, null, 3]
82
+ bugs_caught:
83
+ - "Null values in array"
84
+ - "Filter/map with nulls"
85
+ safe_for_automation: true
86
+
87
+ duplicate_elements:
88
+ value: ["a", "b", "a", "c", "a"]
89
+ bugs_caught:
90
+ - "Duplicate handling"
91
+ - "Set conversion edge cases"
92
+ safe_for_automation: true
93
+
94
+ array_like:
95
+ value_template: "{0: 'a', 1: 'b', length: 2}"
96
+ bugs_caught:
97
+ - "Array-like object handling"
98
+ - "Array.from requirements"
99
+ safe_for_automation: true
100
+ note: "Object with numeric keys and length"
101
+
102
+ negative_index:
103
+ access: "arr[-1]"
104
+ bugs_caught:
105
+ - "Negative index access"
106
+ - "Language-specific behavior (Python vs JS)"
107
+ safe_for_automation: true
108
+
109
+ float_index:
110
+ access: "arr[1.5]"
111
+ bugs_caught:
112
+ - "Non-integer index"
113
+ - "Implicit truncation"
114
+ safe_for_automation: true
@@ -0,0 +1,123 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: collections
7
+ subcategory: objects
8
+ tier: T0
9
+
10
+ bugs_caught:
11
+ - "Null reference on property access"
12
+ - "Prototype pollution"
13
+ - "Circular reference handling"
14
+
15
+ values:
16
+ empty:
17
+ value: {}
18
+ bugs_caught:
19
+ - "Empty object handling"
20
+ - "Object.keys empty check"
21
+ safe_for_automation: true
22
+
23
+ single_property:
24
+ value: {"key": "value"}
25
+ bugs_caught:
26
+ - "Single property access"
27
+ safe_for_automation: true
28
+
29
+ nested:
30
+ value: {"a": {"b": {"c": "deep"}}}
31
+ bugs_caught:
32
+ - "Nested property access"
33
+ - "Optional chaining need"
34
+ safe_for_automation: true
35
+
36
+ deeply_nested:
37
+ value: {"l1": {"l2": {"l3": {"l4": {"l5": "value"}}}}}
38
+ bugs_caught:
39
+ - "Deep nesting handling"
40
+ - "Stack overflow on recursion"
41
+ safe_for_automation: true
42
+
43
+ null_value:
44
+ value: {"key": null}
45
+ bugs_caught:
46
+ - "Null property value"
47
+ - "hasOwnProperty vs truthy check"
48
+ safe_for_automation: true
49
+
50
+ undefined_value:
51
+ value: {"key": "undefined"}
52
+ bugs_caught:
53
+ - "Undefined property value"
54
+ safe_for_automation: true
55
+
56
+ numeric_keys:
57
+ value: {"0": "zero", "1": "one"}
58
+ bugs_caught:
59
+ - "Numeric string keys"
60
+ - "Array-like object confusion"
61
+ safe_for_automation: true
62
+
63
+ special_keys:
64
+ value: {"": "empty", " ": "space", "a.b": "dotted"}
65
+ bugs_caught:
66
+ - "Special key handling"
67
+ - "Dot notation failure"
68
+ safe_for_automation: true
69
+
70
+ # Prototype pollution vectors
71
+ proto_key:
72
+ value: {"__proto__": {"polluted": true}}
73
+ bugs_caught:
74
+ - "Prototype pollution"
75
+ - "__proto__ key handling"
76
+ safe_for_automation: true
77
+ severity: security
78
+
79
+ constructor_key:
80
+ value: {"constructor": {"prototype": {}}}
81
+ bugs_caught:
82
+ - "Constructor pollution"
83
+ safe_for_automation: true
84
+ severity: security
85
+
86
+ prototype_key:
87
+ value: {"prototype": {"polluted": true}}
88
+ bugs_caught:
89
+ - "Prototype key confusion"
90
+ safe_for_automation: true
91
+
92
+ # Special built-in keys
93
+ hasownproperty_key:
94
+ value: {"hasOwnProperty": "overwritten"}
95
+ bugs_caught:
96
+ - "Built-in method shadowing"
97
+ safe_for_automation: true
98
+
99
+ tostring_key:
100
+ value: {"toString": "not a function"}
101
+ bugs_caught:
102
+ - "toString override"
103
+ - "String coercion failure"
104
+ safe_for_automation: true
105
+
106
+ # Circular reference
107
+ circular:
108
+ value_template: "let obj = {}; obj.self = obj;"
109
+ bugs_caught:
110
+ - "Circular reference handling"
111
+ - "JSON.stringify failure"
112
+ - "Infinite recursion"
113
+ safe_for_automation: true
114
+ note: "Object containing reference to itself"
115
+
116
+ # Symbol keys
117
+ symbol_key:
118
+ value_template: "{[Symbol('key')]: 'value'}"
119
+ bugs_caught:
120
+ - "Symbol key enumeration"
121
+ - "Object.keys misses symbols"
122
+ safe_for_automation: true
123
+ note: "JavaScript Symbol as key"
@@ -0,0 +1,118 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: concurrency
7
+ subcategory: race-conditions
8
+ tier: T2
9
+ type: scenario_pattern
10
+
11
+ bugs_caught:
12
+ - "Race conditions"
13
+ - "Data corruption"
14
+ - "Lost updates"
15
+
16
+ scenarios:
17
+ double_submit:
18
+ description: "User submits form twice rapidly"
19
+ setup: "Create pending transaction or form state"
20
+ action: "Submit same request 2x with <100ms delay"
21
+ expected_behavior: "Second request rejected or idempotent"
22
+ bugs_caught:
23
+ - "Duplicate records created"
24
+ - "Double charge/action"
25
+ - "Non-idempotent operations"
26
+ safe_for_automation: true
27
+
28
+ concurrent_edit:
29
+ description: "Two users edit same record simultaneously"
30
+ setup: "User A and B both load record #123"
31
+ action: "User A saves, then User B saves"
32
+ expected_behavior: "Conflict detection or last-write-wins"
33
+ bugs_caught:
34
+ - "Lost updates"
35
+ - "Data corruption"
36
+ - "No optimistic locking"
37
+ safe_for_automation: true
38
+
39
+ read_modify_write:
40
+ description: "Increment counter from multiple sources"
41
+ setup: "Counter at value 10"
42
+ action: "Two processes read 10, add 1, write 11"
43
+ expected_behavior: "Final value should be 12"
44
+ bugs_caught:
45
+ - "Non-atomic operations"
46
+ - "Counter drift"
47
+ safe_for_automation: true
48
+
49
+ check_then_act:
50
+ description: "File exists check before operation"
51
+ setup: "File may or may not exist"
52
+ action: "Check exists, then read/delete"
53
+ expected_behavior: "Handle file disappearing between check and act"
54
+ bugs_caught:
55
+ - "TOCTOU (time-of-check-time-of-use)"
56
+ - "File deleted between check and use"
57
+ safe_for_automation: true
58
+
59
+ lazy_initialization:
60
+ description: "Singleton or lazy init from multiple threads"
61
+ setup: "Uninitialized shared resource"
62
+ action: "Multiple threads trigger initialization"
63
+ expected_behavior: "Only one instance created"
64
+ bugs_caught:
65
+ - "Multiple singleton instances"
66
+ - "Initialization race"
67
+ safe_for_automation: true
68
+
69
+ cache_stampede:
70
+ description: "Cache expires while many requests arrive"
71
+ setup: "Cached value about to expire"
72
+ action: "Many requests hit as cache expires"
73
+ expected_behavior: "Only one backend call, others wait"
74
+ bugs_caught:
75
+ - "Thundering herd"
76
+ - "Backend overload"
77
+ safe_for_automation: true
78
+
79
+ publish_subscribe_ordering:
80
+ description: "Message ordering in pub/sub"
81
+ setup: "Subscriber expecting ordered events"
82
+ action: "Publisher sends A, B, C rapidly"
83
+ expected_behavior: "Subscriber receives A, B, C in order"
84
+ bugs_caught:
85
+ - "Out-of-order messages"
86
+ - "Lost messages"
87
+ safe_for_automation: true
88
+
89
+ connection_pool_exhaustion:
90
+ description: "All connections in use when new request arrives"
91
+ setup: "Pool at max capacity"
92
+ action: "New request needs connection"
93
+ expected_behavior: "Timeout or queue, not hang"
94
+ bugs_caught:
95
+ - "Deadlock"
96
+ - "Infinite wait"
97
+ safe_for_automation: true
98
+
99
+ transaction_isolation:
100
+ description: "Concurrent transactions reading/writing same data"
101
+ setup: "Transaction A reads, Transaction B writes"
102
+ action: "A reads again after B commits"
103
+ expected_behavior: "Consistent read based on isolation level"
104
+ bugs_caught:
105
+ - "Phantom reads"
106
+ - "Non-repeatable reads"
107
+ - "Dirty reads"
108
+ safe_for_automation: true
109
+
110
+ websocket_reconnect:
111
+ description: "Reconnection during active operation"
112
+ setup: "WebSocket connection active with pending request"
113
+ action: "Connection drops, client reconnects"
114
+ expected_behavior: "Pending operation handled correctly"
115
+ bugs_caught:
116
+ - "Lost requests"
117
+ - "Duplicate processing on retry"
118
+ safe_for_automation: true
@@ -0,0 +1,115 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: concurrency
7
+ subcategory: state-machines
8
+ tier: T2
9
+ type: scenario_pattern
10
+
11
+ bugs_caught:
12
+ - "Invalid state transitions"
13
+ - "Stuck states"
14
+ - "Interrupted workflows"
15
+
16
+ scenarios:
17
+ invalid_transition:
18
+ description: "Attempt transition that shouldn't be allowed"
19
+ setup: "Order in 'shipped' state"
20
+ action: "Try to mark as 'pending'"
21
+ expected_behavior: "Transition rejected with error"
22
+ bugs_caught:
23
+ - "Invalid state transition allowed"
24
+ - "Business rule violation"
25
+ safe_for_automation: true
26
+
27
+ skip_required_state:
28
+ description: "Jump directly to final state"
29
+ setup: "Order in 'pending' state"
30
+ action: "Try to mark as 'delivered' without 'shipped'"
31
+ expected_behavior: "Transition rejected"
32
+ bugs_caught:
33
+ - "Skipped required state"
34
+ - "Missing validation"
35
+ safe_for_automation: true
36
+
37
+ duplicate_transition:
38
+ description: "Apply same transition twice"
39
+ setup: "Order in 'pending' state"
40
+ action: "Ship order twice"
41
+ expected_behavior: "Second transition no-op or error"
42
+ bugs_caught:
43
+ - "Duplicate action processing"
44
+ - "Non-idempotent transitions"
45
+ safe_for_automation: true
46
+
47
+ interrupted_flow:
48
+ description: "Process crashes mid-transition"
49
+ setup: "Multi-step state change in progress"
50
+ action: "Crash after first step, before commit"
51
+ expected_behavior: "Rollback or resumable state"
52
+ bugs_caught:
53
+ - "Inconsistent state"
54
+ - "Orphaned records"
55
+ safe_for_automation: true
56
+
57
+ terminal_state_escape:
58
+ description: "Try to exit terminal state"
59
+ setup: "Order in 'cancelled' (terminal) state"
60
+ action: "Try to reopen or ship"
61
+ expected_behavior: "Transition rejected"
62
+ bugs_caught:
63
+ - "Terminal state escape"
64
+ - "Zombie records"
65
+ safe_for_automation: true
66
+
67
+ parallel_conflicting_transitions:
68
+ description: "Two valid transitions attempted simultaneously"
69
+ setup: "Order in 'pending' state"
70
+ action: "User A ships, User B cancels at same time"
71
+ expected_behavior: "One succeeds, one fails"
72
+ bugs_caught:
73
+ - "Both transitions applied"
74
+ - "Inconsistent final state"
75
+ safe_for_automation: true
76
+
77
+ timeout_transition:
78
+ description: "State expires without action"
79
+ setup: "Order in 'awaiting_payment' with 30min timeout"
80
+ action: "Wait for timeout"
81
+ expected_behavior: "Auto-transition to 'expired'"
82
+ bugs_caught:
83
+ - "Stuck in waiting state"
84
+ - "Timer not firing"
85
+ safe_for_automation: true
86
+
87
+ retry_failed_transition:
88
+ description: "Transition fails, then retry"
89
+ setup: "Payment transition failed"
90
+ action: "User retries payment"
91
+ expected_behavior: "Retry allowed from failed state"
92
+ bugs_caught:
93
+ - "Retry blocked"
94
+ - "Wrong state after failure"
95
+ safe_for_automation: true
96
+
97
+ conditional_branch:
98
+ description: "State transition with conditions"
99
+ setup: "Order with mixed inventory (some available, some not)"
100
+ action: "Process order"
101
+ expected_behavior: "Correct branch based on condition"
102
+ bugs_caught:
103
+ - "Wrong branch taken"
104
+ - "Condition evaluated incorrectly"
105
+ safe_for_automation: true
106
+
107
+ reentry_same_state:
108
+ description: "Transition to current state"
109
+ setup: "Order in 'processing' state"
110
+ action: "Mark as 'processing' again"
111
+ expected_behavior: "No-op or trigger side effects?"
112
+ bugs_caught:
113
+ - "Unexpected side effects on re-entry"
114
+ - "Counter increment on no-op"
115
+ safe_for_automation: true
@@ -0,0 +1,137 @@
1
+ metadata:
2
+ version: "1.0.0"
3
+ last_updated: "2026-02-01"
4
+ source_urls: []
5
+
6
+ category: dates
7
+ subcategory: boundaries
8
+ tier: T2
9
+
10
+ bugs_caught:
11
+ - "Epoch handling"
12
+ - "Y2K38 overflow"
13
+ - "Leap year calculations"
14
+
15
+ values:
16
+ epoch:
17
+ value: "1970-01-01T00:00:00Z"
18
+ timestamp: 0
19
+ bugs_caught:
20
+ - "Epoch/zero date handling"
21
+ - "Default date confusion"
22
+ safe_for_automation: true
23
+
24
+ before_epoch:
25
+ value: "1969-12-31T23:59:59Z"
26
+ timestamp: -1
27
+ bugs_caught:
28
+ - "Negative timestamp handling"
29
+ - "Pre-epoch dates"
30
+ safe_for_automation: true
31
+
32
+ y2k:
33
+ value: "2000-01-01T00:00:00Z"
34
+ bugs_caught:
35
+ - "Y2K date handling"
36
+ safe_for_automation: true
37
+
38
+ y2k38:
39
+ value: "2038-01-19T03:14:07Z"
40
+ timestamp: 2147483647
41
+ bugs_caught:
42
+ - "Y2K38 32-bit overflow"
43
+ - "Unix timestamp max"
44
+ safe_for_automation: true
45
+
46
+ y2k38_plus_1:
47
+ value: "2038-01-19T03:14:08Z"
48
+ timestamp: 2147483648
49
+ bugs_caught:
50
+ - "Y2K38 overflow"
51
+ - "32-bit signed integer overflow"
52
+ safe_for_automation: true
53
+
54
+ leap_year_feb_29:
55
+ value: "2024-02-29"
56
+ bugs_caught:
57
+ - "Leap year February 29"
58
+ safe_for_automation: true
59
+
60
+ non_leap_year_feb_28:
61
+ value: "2023-02-28"
62
+ bugs_caught:
63
+ - "Non-leap year February end"
64
+ safe_for_automation: true
65
+
66
+ century_non_leap:
67
+ value: "1900-02-28"
68
+ bugs_caught:
69
+ - "Century year not divisible by 400"
70
+ - "1900 was not a leap year"
71
+ safe_for_automation: true
72
+
73
+ century_leap:
74
+ value: "2000-02-29"
75
+ bugs_caught:
76
+ - "Century year divisible by 400"
77
+ - "2000 was a leap year"
78
+ safe_for_automation: true
79
+
80
+ month_31_days:
81
+ value: "2024-01-31"
82
+ bugs_caught:
83
+ - "31-day month end"
84
+ safe_for_automation: true
85
+
86
+ month_30_days:
87
+ value: "2024-04-30"
88
+ bugs_caught:
89
+ - "30-day month end"
90
+ safe_for_automation: true
91
+
92
+ year_end:
93
+ value: "2024-12-31T23:59:59Z"
94
+ bugs_caught:
95
+ - "Year end handling"
96
+ - "New Year rollover"
97
+ safe_for_automation: true
98
+
99
+ year_start:
100
+ value: "2024-01-01T00:00:00Z"
101
+ bugs_caught:
102
+ - "Year start handling"
103
+ safe_for_automation: true
104
+
105
+ far_future:
106
+ value: "9999-12-31T23:59:59Z"
107
+ bugs_caught:
108
+ - "Far future date handling"
109
+ safe_for_automation: true
110
+
111
+ far_past:
112
+ value: "0001-01-01T00:00:00Z"
113
+ bugs_caught:
114
+ - "Far past date handling"
115
+ - "Year 1 AD"
116
+ safe_for_automation: true
117
+
118
+ midnight:
119
+ value: "2024-06-15T00:00:00Z"
120
+ bugs_caught:
121
+ - "Midnight handling"
122
+ - "Day boundary"
123
+ safe_for_automation: true
124
+
125
+ end_of_day:
126
+ value: "2024-06-15T23:59:59Z"
127
+ bugs_caught:
128
+ - "End of day"
129
+ - "23:59:59 vs 24:00:00"
130
+ safe_for_automation: true
131
+
132
+ noon:
133
+ value: "2024-06-15T12:00:00Z"
134
+ bugs_caught:
135
+ - "Noon/12 PM handling"
136
+ - "AM/PM boundary"
137
+ safe_for_automation: true