thuban 0.3.4 → 0.4.1

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 (739) hide show
  1. package/README.md +2 -0
  2. package/dist/README.md +2 -0
  3. package/dist/cli.js +1 -1
  4. package/dist/packages/crucible/.golden/golden-master.json +414 -0
  5. package/dist/packages/crucible/badge-generator.js +1 -0
  6. package/dist/packages/crucible/banner.js +1 -0
  7. package/dist/packages/crucible/ci-integration.js +1 -0
  8. package/dist/packages/crucible/golden-master.js +1 -0
  9. package/dist/packages/crucible/index.js +1 -0
  10. package/dist/packages/crucible/kenny-mode.js +1 -0
  11. package/dist/packages/crucible/leaderboard.js +1 -0
  12. package/dist/packages/crucible/mutation-engine.js +1 -0
  13. package/dist/packages/crucible/pattern-learner.js +1 -0
  14. package/dist/packages/crucible/report-generator.js +1 -0
  15. package/dist/packages/crucible/rule-loader.js +1 -0
  16. package/dist/packages/crucible/seeding-engine.js +1 -0
  17. package/dist/packages/crucible/seeds/csharp/seed-001.cs +28 -0
  18. package/dist/packages/crucible/seeds/csharp/seed-002.cs +24 -0
  19. package/dist/packages/crucible/seeds/csharp/seed-003.cs +30 -0
  20. package/dist/packages/crucible/seeds/csharp/seed-004.cs +31 -0
  21. package/dist/packages/crucible/seeds/csharp/seed-005.cs +28 -0
  22. package/dist/packages/crucible/seeds/csharp/seed-006.cs +25 -0
  23. package/dist/packages/crucible/seeds/csharp/seed-007.cs +34 -0
  24. package/dist/packages/crucible/seeds/csharp/seed-008.cs +23 -0
  25. package/dist/packages/crucible/seeds/csharp/seed-009.cs +27 -0
  26. package/dist/packages/crucible/seeds/csharp/seed-010.cs +29 -0
  27. package/dist/packages/crucible/seeds/csharp/seed-011.cs +32 -0
  28. package/dist/packages/crucible/seeds/csharp/seed-012.cs +27 -0
  29. package/dist/packages/crucible/seeds/csharp/seed-013.cs +27 -0
  30. package/dist/packages/crucible/seeds/csharp/seed-014.cs +26 -0
  31. package/dist/packages/crucible/seeds/csharp/seed-015.cs +33 -0
  32. package/dist/packages/crucible/seeds/csharp/seed-016.cs +25 -0
  33. package/dist/packages/crucible/seeds/csharp/seed-017.cs +22 -0
  34. package/dist/packages/crucible/seeds/csharp/seed-018.cs +26 -0
  35. package/dist/packages/crucible/seeds/csharp/seed-019.cs +25 -0
  36. package/dist/packages/crucible/seeds/csharp/seed-020.cs +22 -0
  37. package/dist/packages/crucible/seeds/csharp/seed-021.cs +28 -0
  38. package/dist/packages/crucible/seeds/csharp/seed-022.cs +25 -0
  39. package/dist/packages/crucible/seeds/csharp/seed-023.cs +33 -0
  40. package/dist/packages/crucible/seeds/csharp/seed-024.cs +31 -0
  41. package/dist/packages/crucible/seeds/csharp/seed-025.cs +31 -0
  42. package/dist/packages/crucible/seeds/csharp/seed-026.cs +25 -0
  43. package/dist/packages/crucible/seeds/csharp/seed-027.cs +29 -0
  44. package/dist/packages/crucible/seeds/csharp/seed-028.cs +25 -0
  45. package/dist/packages/crucible/seeds/csharp/seed-029.cs +27 -0
  46. package/dist/packages/crucible/seeds/csharp/seed-030.cs +27 -0
  47. package/dist/packages/crucible/seeds/csharp/seed-031.cs +28 -0
  48. package/dist/packages/crucible/seeds/csharp/seed-032.cs +30 -0
  49. package/dist/packages/crucible/seeds/csharp/seed-033.cs +27 -0
  50. package/dist/packages/crucible/seeds/csharp/seed-034.cs +25 -0
  51. package/dist/packages/crucible/seeds/csharp/seed-035.cs +32 -0
  52. package/dist/packages/crucible/seeds/csharp/seed-036.cs +28 -0
  53. package/dist/packages/crucible/seeds/csharp/seed-037.cs +29 -0
  54. package/dist/packages/crucible/seeds/csharp/seed-038.cs +28 -0
  55. package/dist/packages/crucible/seeds/csharp/seed-039.cs +29 -0
  56. package/dist/packages/crucible/seeds/csharp/seed-040.cs +28 -0
  57. package/dist/packages/crucible/seeds/csharp/seed-041.cs +33 -0
  58. package/dist/packages/crucible/seeds/csharp/seed-042.cs +27 -0
  59. package/dist/packages/crucible/seeds/csharp/seed-043.cs +27 -0
  60. package/dist/packages/crucible/seeds/csharp/seed-044.cs +25 -0
  61. package/dist/packages/crucible/seeds/csharp/seed-045.cs +30 -0
  62. package/dist/packages/crucible/seeds/csharp/seed-046.cs +29 -0
  63. package/dist/packages/crucible/seeds/csharp/seed-047.cs +26 -0
  64. package/dist/packages/crucible/seeds/csharp/seed-048.cs +31 -0
  65. package/dist/packages/crucible/seeds/csharp/seed-049.cs +27 -0
  66. package/dist/packages/crucible/seeds/csharp/seed-050.cs +30 -0
  67. package/dist/packages/crucible/seeds/csharp/seed-051.cs +34 -0
  68. package/dist/packages/crucible/seeds/csharp/seed-052.cs +36 -0
  69. package/dist/packages/crucible/seeds/go/seed-001.go +29 -0
  70. package/dist/packages/crucible/seeds/go/seed-002.go +27 -0
  71. package/dist/packages/crucible/seeds/go/seed-003.go +31 -0
  72. package/dist/packages/crucible/seeds/go/seed-004.go +27 -0
  73. package/dist/packages/crucible/seeds/go/seed-005.go +27 -0
  74. package/dist/packages/crucible/seeds/go/seed-006.go +29 -0
  75. package/dist/packages/crucible/seeds/go/seed-007.go +24 -0
  76. package/dist/packages/crucible/seeds/go/seed-008.go +25 -0
  77. package/dist/packages/crucible/seeds/go/seed-009.go +30 -0
  78. package/dist/packages/crucible/seeds/go/seed-010.go +35 -0
  79. package/dist/packages/crucible/seeds/go/seed-011.go +24 -0
  80. package/dist/packages/crucible/seeds/go/seed-012.go +24 -0
  81. package/dist/packages/crucible/seeds/go/seed-013.go +31 -0
  82. package/dist/packages/crucible/seeds/go/seed-014.go +35 -0
  83. package/dist/packages/crucible/seeds/go/seed-015.go +25 -0
  84. package/dist/packages/crucible/seeds/go/seed-016.go +19 -0
  85. package/dist/packages/crucible/seeds/go/seed-017.go +23 -0
  86. package/dist/packages/crucible/seeds/go/seed-018.go +23 -0
  87. package/dist/packages/crucible/seeds/go/seed-019.go +22 -0
  88. package/dist/packages/crucible/seeds/go/seed-020.go +31 -0
  89. package/dist/packages/crucible/seeds/go/seed-021.go +22 -0
  90. package/dist/packages/crucible/seeds/go/seed-022.go +29 -0
  91. package/dist/packages/crucible/seeds/go/seed-023.go +26 -0
  92. package/dist/packages/crucible/seeds/go/seed-024.go +27 -0
  93. package/dist/packages/crucible/seeds/go/seed-025.go +23 -0
  94. package/dist/packages/crucible/seeds/go/seed-026.go +29 -0
  95. package/dist/packages/crucible/seeds/go/seed-027.go +26 -0
  96. package/dist/packages/crucible/seeds/go/seed-028.go +23 -0
  97. package/dist/packages/crucible/seeds/go/seed-029.go +28 -0
  98. package/dist/packages/crucible/seeds/go/seed-030.go +27 -0
  99. package/dist/packages/crucible/seeds/go/seed-031.go +28 -0
  100. package/dist/packages/crucible/seeds/go/seed-032.go +27 -0
  101. package/dist/packages/crucible/seeds/go/seed-033.go +29 -0
  102. package/dist/packages/crucible/seeds/go/seed-034.go +22 -0
  103. package/dist/packages/crucible/seeds/go/seed-035.go +32 -0
  104. package/dist/packages/crucible/seeds/go/seed-036.go +27 -0
  105. package/dist/packages/crucible/seeds/go/seed-037.go +27 -0
  106. package/dist/packages/crucible/seeds/go/seed-038.go +27 -0
  107. package/dist/packages/crucible/seeds/go/seed-039.go +26 -0
  108. package/dist/packages/crucible/seeds/go/seed-040.go +37 -0
  109. package/dist/packages/crucible/seeds/go/seed-041.go +23 -0
  110. package/dist/packages/crucible/seeds/go/seed-042.go +32 -0
  111. package/dist/packages/crucible/seeds/go/seed-043.go +35 -0
  112. package/dist/packages/crucible/seeds/go/seed-044.go +25 -0
  113. package/dist/packages/crucible/seeds/go/seed-045.go +26 -0
  114. package/dist/packages/crucible/seeds/go/seed-046.go +34 -0
  115. package/dist/packages/crucible/seeds/go/seed-047.go +26 -0
  116. package/dist/packages/crucible/seeds/go/seed-048.go +29 -0
  117. package/dist/packages/crucible/seeds/go/seed-049.go +24 -0
  118. package/dist/packages/crucible/seeds/go/seed-050.go +27 -0
  119. package/dist/packages/crucible/seeds/go/seed-051.go +38 -0
  120. package/dist/packages/crucible/seeds/go/seed-052.go +27 -0
  121. package/dist/packages/crucible/seeds/java/seed-001.java +23 -0
  122. package/dist/packages/crucible/seeds/java/seed-002.java +22 -0
  123. package/dist/packages/crucible/seeds/java/seed-003.java +28 -0
  124. package/dist/packages/crucible/seeds/java/seed-004.java +26 -0
  125. package/dist/packages/crucible/seeds/java/seed-005.java +33 -0
  126. package/dist/packages/crucible/seeds/java/seed-006.java +22 -0
  127. package/dist/packages/crucible/seeds/java/seed-007.java +21 -0
  128. package/dist/packages/crucible/seeds/java/seed-008.java +29 -0
  129. package/dist/packages/crucible/seeds/java/seed-009.java +24 -0
  130. package/dist/packages/crucible/seeds/java/seed-010.java +30 -0
  131. package/dist/packages/crucible/seeds/java/seed-011.java +25 -0
  132. package/dist/packages/crucible/seeds/java/seed-012.java +20 -0
  133. package/dist/packages/crucible/seeds/java/seed-013.java +26 -0
  134. package/dist/packages/crucible/seeds/java/seed-014.java +23 -0
  135. package/dist/packages/crucible/seeds/java/seed-015.java +25 -0
  136. package/dist/packages/crucible/seeds/java/seed-016.java +22 -0
  137. package/dist/packages/crucible/seeds/java/seed-017.java +24 -0
  138. package/dist/packages/crucible/seeds/java/seed-018.java +24 -0
  139. package/dist/packages/crucible/seeds/java/seed-019.java +38 -0
  140. package/dist/packages/crucible/seeds/java/seed-020.java +24 -0
  141. package/dist/packages/crucible/seeds/java/seed-021.java +22 -0
  142. package/dist/packages/crucible/seeds/java/seed-022.java +22 -0
  143. package/dist/packages/crucible/seeds/java/seed-023.java +22 -0
  144. package/dist/packages/crucible/seeds/java/seed-024.java +25 -0
  145. package/dist/packages/crucible/seeds/java/seed-025.java +27 -0
  146. package/dist/packages/crucible/seeds/java/seed-026.java +25 -0
  147. package/dist/packages/crucible/seeds/java/seed-027.java +22 -0
  148. package/dist/packages/crucible/seeds/java/seed-028.java +21 -0
  149. package/dist/packages/crucible/seeds/java/seed-029.java +28 -0
  150. package/dist/packages/crucible/seeds/java/seed-030.java +27 -0
  151. package/dist/packages/crucible/seeds/java/seed-031.java +23 -0
  152. package/dist/packages/crucible/seeds/java/seed-032.java +22 -0
  153. package/dist/packages/crucible/seeds/java/seed-033.java +24 -0
  154. package/dist/packages/crucible/seeds/java/seed-034.java +24 -0
  155. package/dist/packages/crucible/seeds/java/seed-035.java +29 -0
  156. package/dist/packages/crucible/seeds/java/seed-036.java +25 -0
  157. package/dist/packages/crucible/seeds/java/seed-037.java +30 -0
  158. package/dist/packages/crucible/seeds/java/seed-038.java +29 -0
  159. package/dist/packages/crucible/seeds/java/seed-039.java +26 -0
  160. package/dist/packages/crucible/seeds/java/seed-040.java +31 -0
  161. package/dist/packages/crucible/seeds/java/seed-041.java +20 -0
  162. package/dist/packages/crucible/seeds/java/seed-042.java +26 -0
  163. package/dist/packages/crucible/seeds/java/seed-043.java +31 -0
  164. package/dist/packages/crucible/seeds/java/seed-044.java +22 -0
  165. package/dist/packages/crucible/seeds/java/seed-045.java +25 -0
  166. package/dist/packages/crucible/seeds/java/seed-046.java +22 -0
  167. package/dist/packages/crucible/seeds/java/seed-047.java +26 -0
  168. package/dist/packages/crucible/seeds/java/seed-048.java +24 -0
  169. package/dist/packages/crucible/seeds/java/seed-049.java +28 -0
  170. package/dist/packages/crucible/seeds/java/seed-050.java +29 -0
  171. package/dist/packages/crucible/seeds/java/seed-051.java +25 -0
  172. package/dist/packages/crucible/seeds/java/seed-052.java +32 -0
  173. package/dist/packages/crucible/seeds/js/seed-001.js +27 -0
  174. package/dist/packages/crucible/seeds/js/seed-002.js +28 -0
  175. package/dist/packages/crucible/seeds/js/seed-003.js +30 -0
  176. package/dist/packages/crucible/seeds/js/seed-004.js +28 -0
  177. package/dist/packages/crucible/seeds/js/seed-005.js +31 -0
  178. package/dist/packages/crucible/seeds/js/seed-006.js +28 -0
  179. package/dist/packages/crucible/seeds/js/seed-007.js +26 -0
  180. package/dist/packages/crucible/seeds/js/seed-008.js +30 -0
  181. package/dist/packages/crucible/seeds/js/seed-009.js +30 -0
  182. package/dist/packages/crucible/seeds/js/seed-010.js +29 -0
  183. package/dist/packages/crucible/seeds/js/seed-011.js +34 -0
  184. package/dist/packages/crucible/seeds/js/seed-012.js +32 -0
  185. package/dist/packages/crucible/seeds/js/seed-013.js +29 -0
  186. package/dist/packages/crucible/seeds/js/seed-014.js +29 -0
  187. package/dist/packages/crucible/seeds/js/seed-015.js +31 -0
  188. package/dist/packages/crucible/seeds/js/seed-016.js +31 -0
  189. package/dist/packages/crucible/seeds/js/seed-017.js +30 -0
  190. package/dist/packages/crucible/seeds/js/seed-018.js +29 -0
  191. package/dist/packages/crucible/seeds/js/seed-019.js +32 -0
  192. package/dist/packages/crucible/seeds/js/seed-020.js +29 -0
  193. package/dist/packages/crucible/seeds/js/seed-021.js +31 -0
  194. package/dist/packages/crucible/seeds/js/seed-022.js +31 -0
  195. package/dist/packages/crucible/seeds/js/seed-023.js +29 -0
  196. package/dist/packages/crucible/seeds/js/seed-024.js +29 -0
  197. package/dist/packages/crucible/seeds/js/seed-025.js +34 -0
  198. package/dist/packages/crucible/seeds/js/seed-026.js +31 -0
  199. package/dist/packages/crucible/seeds/js/seed-027.js +31 -0
  200. package/dist/packages/crucible/seeds/js/seed-028.js +33 -0
  201. package/dist/packages/crucible/seeds/js/seed-029.js +33 -0
  202. package/dist/packages/crucible/seeds/js/seed-030.js +30 -0
  203. package/dist/packages/crucible/seeds/js/seed-031.js +31 -0
  204. package/dist/packages/crucible/seeds/js/seed-032.js +34 -0
  205. package/dist/packages/crucible/seeds/js/seed-033.js +33 -0
  206. package/dist/packages/crucible/seeds/js/seed-034.js +33 -0
  207. package/dist/packages/crucible/seeds/js/seed-035.js +30 -0
  208. package/dist/packages/crucible/seeds/js/seed-036.js +30 -0
  209. package/dist/packages/crucible/seeds/js/seed-037.js +29 -0
  210. package/dist/packages/crucible/seeds/js/seed-038.js +31 -0
  211. package/dist/packages/crucible/seeds/js/seed-039.js +34 -0
  212. package/dist/packages/crucible/seeds/js/seed-040.js +35 -0
  213. package/dist/packages/crucible/seeds/js/seed-041.js +32 -0
  214. package/dist/packages/crucible/seeds/js/seed-042.js +32 -0
  215. package/dist/packages/crucible/seeds/js/seed-043.js +27 -0
  216. package/dist/packages/crucible/seeds/js/seed-044.js +29 -0
  217. package/dist/packages/crucible/seeds/js/seed-045.js +33 -0
  218. package/dist/packages/crucible/seeds/js/seed-046.js +33 -0
  219. package/dist/packages/crucible/seeds/js/seed-047.js +29 -0
  220. package/dist/packages/crucible/seeds/js/seed-048.js +29 -0
  221. package/dist/packages/crucible/seeds/js/seed-049.js +34 -0
  222. package/dist/packages/crucible/seeds/js/seed-050.js +34 -0
  223. package/dist/packages/crucible/seeds/js/seed-051.js +30 -0
  224. package/dist/packages/crucible/seeds/js/seed-052.js +30 -0
  225. package/dist/packages/crucible/seeds/js/seed-053.js +26 -0
  226. package/dist/packages/crucible/seeds/js/seed-054.js +35 -0
  227. package/dist/packages/crucible/seeds/js/seed-055.js +33 -0
  228. package/dist/packages/crucible/seeds/kotlin/seed-001.kt +24 -0
  229. package/dist/packages/crucible/seeds/kotlin/seed-002.kt +27 -0
  230. package/dist/packages/crucible/seeds/kotlin/seed-003.kt +29 -0
  231. package/dist/packages/crucible/seeds/kotlin/seed-004.kt +24 -0
  232. package/dist/packages/crucible/seeds/kotlin/seed-005.kt +29 -0
  233. package/dist/packages/crucible/seeds/kotlin/seed-006.kt +21 -0
  234. package/dist/packages/crucible/seeds/kotlin/seed-007.kt +23 -0
  235. package/dist/packages/crucible/seeds/kotlin/seed-008.kt +25 -0
  236. package/dist/packages/crucible/seeds/kotlin/seed-009.kt +21 -0
  237. package/dist/packages/crucible/seeds/kotlin/seed-010.kt +28 -0
  238. package/dist/packages/crucible/seeds/kotlin/seed-011.kt +22 -0
  239. package/dist/packages/crucible/seeds/kotlin/seed-012.kt +25 -0
  240. package/dist/packages/crucible/seeds/kotlin/seed-013.kt +30 -0
  241. package/dist/packages/crucible/seeds/kotlin/seed-014.kt +27 -0
  242. package/dist/packages/crucible/seeds/kotlin/seed-015.kt +24 -0
  243. package/dist/packages/crucible/seeds/kotlin/seed-016.kt +28 -0
  244. package/dist/packages/crucible/seeds/kotlin/seed-017.kt +33 -0
  245. package/dist/packages/crucible/seeds/kotlin/seed-018.kt +31 -0
  246. package/dist/packages/crucible/seeds/kotlin/seed-019.kt +28 -0
  247. package/dist/packages/crucible/seeds/kotlin/seed-020.kt +31 -0
  248. package/dist/packages/crucible/seeds/kotlin/seed-021.kt +34 -0
  249. package/dist/packages/crucible/seeds/kotlin/seed-022.kt +29 -0
  250. package/dist/packages/crucible/seeds/kotlin/seed-023.kt +20 -0
  251. package/dist/packages/crucible/seeds/kotlin/seed-024.kt +23 -0
  252. package/dist/packages/crucible/seeds/kotlin/seed-025.kt +23 -0
  253. package/dist/packages/crucible/seeds/kotlin/seed-026.kt +26 -0
  254. package/dist/packages/crucible/seeds/kotlin/seed-027.kt +29 -0
  255. package/dist/packages/crucible/seeds/kotlin/seed-028.kt +24 -0
  256. package/dist/packages/crucible/seeds/kotlin/seed-029.kt +27 -0
  257. package/dist/packages/crucible/seeds/kotlin/seed-030.kt +26 -0
  258. package/dist/packages/crucible/seeds/kotlin/seed-031.kt +28 -0
  259. package/dist/packages/crucible/seeds/kotlin/seed-032.kt +29 -0
  260. package/dist/packages/crucible/seeds/kotlin/seed-033.kt +30 -0
  261. package/dist/packages/crucible/seeds/kotlin/seed-034.kt +26 -0
  262. package/dist/packages/crucible/seeds/kotlin/seed-035.kt +33 -0
  263. package/dist/packages/crucible/seeds/kotlin/seed-036.kt +25 -0
  264. package/dist/packages/crucible/seeds/kotlin/seed-037.kt +26 -0
  265. package/dist/packages/crucible/seeds/kotlin/seed-038.kt +25 -0
  266. package/dist/packages/crucible/seeds/kotlin/seed-039.kt +29 -0
  267. package/dist/packages/crucible/seeds/kotlin/seed-040.kt +28 -0
  268. package/dist/packages/crucible/seeds/kotlin/seed-041.kt +31 -0
  269. package/dist/packages/crucible/seeds/kotlin/seed-042.kt +27 -0
  270. package/dist/packages/crucible/seeds/kotlin/seed-043.kt +26 -0
  271. package/dist/packages/crucible/seeds/kotlin/seed-044.kt +27 -0
  272. package/dist/packages/crucible/seeds/kotlin/seed-045.kt +27 -0
  273. package/dist/packages/crucible/seeds/kotlin/seed-046.kt +33 -0
  274. package/dist/packages/crucible/seeds/kotlin/seed-047.kt +32 -0
  275. package/dist/packages/crucible/seeds/kotlin/seed-048.kt +20 -0
  276. package/dist/packages/crucible/seeds/kotlin/seed-049.kt +23 -0
  277. package/dist/packages/crucible/seeds/kotlin/seed-050.kt +19 -0
  278. package/dist/packages/crucible/seeds/php/seed-001.php +23 -0
  279. package/dist/packages/crucible/seeds/php/seed-002.php +18 -0
  280. package/dist/packages/crucible/seeds/php/seed-003.php +25 -0
  281. package/dist/packages/crucible/seeds/php/seed-004.php +21 -0
  282. package/dist/packages/crucible/seeds/php/seed-005.php +21 -0
  283. package/dist/packages/crucible/seeds/php/seed-006.php +21 -0
  284. package/dist/packages/crucible/seeds/php/seed-007.php +18 -0
  285. package/dist/packages/crucible/seeds/php/seed-008.php +19 -0
  286. package/dist/packages/crucible/seeds/php/seed-009.php +24 -0
  287. package/dist/packages/crucible/seeds/php/seed-010.php +24 -0
  288. package/dist/packages/crucible/seeds/php/seed-011.php +18 -0
  289. package/dist/packages/crucible/seeds/php/seed-012.php +24 -0
  290. package/dist/packages/crucible/seeds/php/seed-013.php +23 -0
  291. package/dist/packages/crucible/seeds/php/seed-014.php +20 -0
  292. package/dist/packages/crucible/seeds/php/seed-015.php +18 -0
  293. package/dist/packages/crucible/seeds/php/seed-016.php +18 -0
  294. package/dist/packages/crucible/seeds/php/seed-017.php +18 -0
  295. package/dist/packages/crucible/seeds/php/seed-018.php +17 -0
  296. package/dist/packages/crucible/seeds/php/seed-019.php +24 -0
  297. package/dist/packages/crucible/seeds/php/seed-020.php +19 -0
  298. package/dist/packages/crucible/seeds/php/seed-021.php +22 -0
  299. package/dist/packages/crucible/seeds/php/seed-022.php +15 -0
  300. package/dist/packages/crucible/seeds/php/seed-023.php +24 -0
  301. package/dist/packages/crucible/seeds/php/seed-024.php +22 -0
  302. package/dist/packages/crucible/seeds/php/seed-025.php +20 -0
  303. package/dist/packages/crucible/seeds/php/seed-026.php +22 -0
  304. package/dist/packages/crucible/seeds/php/seed-027.php +15 -0
  305. package/dist/packages/crucible/seeds/php/seed-028.php +15 -0
  306. package/dist/packages/crucible/seeds/php/seed-029.php +21 -0
  307. package/dist/packages/crucible/seeds/php/seed-030.php +21 -0
  308. package/dist/packages/crucible/seeds/php/seed-031.php +23 -0
  309. package/dist/packages/crucible/seeds/php/seed-032.php +18 -0
  310. package/dist/packages/crucible/seeds/php/seed-033.php +18 -0
  311. package/dist/packages/crucible/seeds/php/seed-034.php +24 -0
  312. package/dist/packages/crucible/seeds/php/seed-035.php +22 -0
  313. package/dist/packages/crucible/seeds/php/seed-036.php +17 -0
  314. package/dist/packages/crucible/seeds/php/seed-037.php +19 -0
  315. package/dist/packages/crucible/seeds/php/seed-038.php +20 -0
  316. package/dist/packages/crucible/seeds/php/seed-039.php +15 -0
  317. package/dist/packages/crucible/seeds/php/seed-040.php +21 -0
  318. package/dist/packages/crucible/seeds/php/seed-041.php +20 -0
  319. package/dist/packages/crucible/seeds/php/seed-042.php +21 -0
  320. package/dist/packages/crucible/seeds/php/seed-043.php +21 -0
  321. package/dist/packages/crucible/seeds/php/seed-044.php +25 -0
  322. package/dist/packages/crucible/seeds/php/seed-045.php +25 -0
  323. package/dist/packages/crucible/seeds/php/seed-046.php +20 -0
  324. package/dist/packages/crucible/seeds/php/seed-047.php +21 -0
  325. package/dist/packages/crucible/seeds/php/seed-048.php +19 -0
  326. package/dist/packages/crucible/seeds/php/seed-049.php +18 -0
  327. package/dist/packages/crucible/seeds/php/seed-050.php +20 -0
  328. package/dist/packages/crucible/seeds/python/seed-001.py +33 -0
  329. package/dist/packages/crucible/seeds/python/seed-002.py +39 -0
  330. package/dist/packages/crucible/seeds/python/seed-003.py +31 -0
  331. package/dist/packages/crucible/seeds/python/seed-004.py +33 -0
  332. package/dist/packages/crucible/seeds/python/seed-005.py +33 -0
  333. package/dist/packages/crucible/seeds/python/seed-006.py +34 -0
  334. package/dist/packages/crucible/seeds/python/seed-007.py +33 -0
  335. package/dist/packages/crucible/seeds/python/seed-008.py +38 -0
  336. package/dist/packages/crucible/seeds/python/seed-009.py +38 -0
  337. package/dist/packages/crucible/seeds/python/seed-010.py +42 -0
  338. package/dist/packages/crucible/seeds/python/seed-011.py +30 -0
  339. package/dist/packages/crucible/seeds/python/seed-012.py +35 -0
  340. package/dist/packages/crucible/seeds/python/seed-013.py +33 -0
  341. package/dist/packages/crucible/seeds/python/seed-014.py +40 -0
  342. package/dist/packages/crucible/seeds/python/seed-015.py +33 -0
  343. package/dist/packages/crucible/seeds/python/seed-016.py +34 -0
  344. package/dist/packages/crucible/seeds/python/seed-017.py +34 -0
  345. package/dist/packages/crucible/seeds/python/seed-018.py +30 -0
  346. package/dist/packages/crucible/seeds/python/seed-019.py +33 -0
  347. package/dist/packages/crucible/seeds/python/seed-020.py +37 -0
  348. package/dist/packages/crucible/seeds/python/seed-021 2.py +37 -0
  349. package/dist/packages/crucible/seeds/python/seed-021.py +37 -0
  350. package/dist/packages/crucible/seeds/python/seed-022 2.py +34 -0
  351. package/dist/packages/crucible/seeds/python/seed-022.py +34 -0
  352. package/dist/packages/crucible/seeds/python/seed-023 2.py +37 -0
  353. package/dist/packages/crucible/seeds/python/seed-023.py +37 -0
  354. package/dist/packages/crucible/seeds/python/seed-024 2.py +38 -0
  355. package/dist/packages/crucible/seeds/python/seed-024.py +38 -0
  356. package/dist/packages/crucible/seeds/python/seed-025 2.py +40 -0
  357. package/dist/packages/crucible/seeds/python/seed-025.py +40 -0
  358. package/dist/packages/crucible/seeds/python/seed-026 2.py +35 -0
  359. package/dist/packages/crucible/seeds/python/seed-026.py +35 -0
  360. package/dist/packages/crucible/seeds/python/seed-027 2.py +35 -0
  361. package/dist/packages/crucible/seeds/python/seed-027.py +35 -0
  362. package/dist/packages/crucible/seeds/python/seed-028 2.py +42 -0
  363. package/dist/packages/crucible/seeds/python/seed-028.py +42 -0
  364. package/dist/packages/crucible/seeds/python/seed-029.py +42 -0
  365. package/dist/packages/crucible/seeds/python/seed-030 2.py +37 -0
  366. package/dist/packages/crucible/seeds/python/seed-030.py +37 -0
  367. package/dist/packages/crucible/seeds/python/seed-031 2.py +34 -0
  368. package/dist/packages/crucible/seeds/python/seed-031.py +34 -0
  369. package/dist/packages/crucible/seeds/python/seed-032.py +33 -0
  370. package/dist/packages/crucible/seeds/python/seed-033.py +32 -0
  371. package/dist/packages/crucible/seeds/python/seed-034.py +38 -0
  372. package/dist/packages/crucible/seeds/python/seed-035.py +35 -0
  373. package/dist/packages/crucible/seeds/python/seed-036 2.py +33 -0
  374. package/dist/packages/crucible/seeds/python/seed-036.py +33 -0
  375. package/dist/packages/crucible/seeds/python/seed-037 2.py +41 -0
  376. package/dist/packages/crucible/seeds/python/seed-037.py +41 -0
  377. package/dist/packages/crucible/seeds/python/seed-038 2.py +33 -0
  378. package/dist/packages/crucible/seeds/python/seed-038.py +33 -0
  379. package/dist/packages/crucible/seeds/python/seed-039 2.py +39 -0
  380. package/dist/packages/crucible/seeds/python/seed-039.py +39 -0
  381. package/dist/packages/crucible/seeds/python/seed-040 2.py +39 -0
  382. package/dist/packages/crucible/seeds/python/seed-040.py +39 -0
  383. package/dist/packages/crucible/seeds/python/seed-041 2.py +37 -0
  384. package/dist/packages/crucible/seeds/python/seed-041.py +37 -0
  385. package/dist/packages/crucible/seeds/python/seed-042 2.py +38 -0
  386. package/dist/packages/crucible/seeds/python/seed-042.py +38 -0
  387. package/dist/packages/crucible/seeds/python/seed-043 2.py +32 -0
  388. package/dist/packages/crucible/seeds/python/seed-043.py +32 -0
  389. package/dist/packages/crucible/seeds/python/seed-044 2.py +38 -0
  390. package/dist/packages/crucible/seeds/python/seed-044.py +38 -0
  391. package/dist/packages/crucible/seeds/python/seed-045 2.py +36 -0
  392. package/dist/packages/crucible/seeds/python/seed-045.py +36 -0
  393. package/dist/packages/crucible/seeds/python/seed-046 2.py +33 -0
  394. package/dist/packages/crucible/seeds/python/seed-046.py +33 -0
  395. package/dist/packages/crucible/seeds/python/seed-047 2.py +44 -0
  396. package/dist/packages/crucible/seeds/python/seed-047.py +44 -0
  397. package/dist/packages/crucible/seeds/python/seed-048 2.py +35 -0
  398. package/dist/packages/crucible/seeds/python/seed-048.py +35 -0
  399. package/dist/packages/crucible/seeds/python/seed-049 2.py +39 -0
  400. package/dist/packages/crucible/seeds/python/seed-049.py +39 -0
  401. package/dist/packages/crucible/seeds/python/seed-050 2.py +39 -0
  402. package/dist/packages/crucible/seeds/python/seed-050.py +39 -0
  403. package/dist/packages/crucible/seeds/python/seed-051 2.py +38 -0
  404. package/dist/packages/crucible/seeds/python/seed-051.py +38 -0
  405. package/dist/packages/crucible/seeds/python/seed-052 2.py +41 -0
  406. package/dist/packages/crucible/seeds/python/seed-052.py +41 -0
  407. package/dist/packages/crucible/seeds/ruby/seed-001 2.rb +15 -0
  408. package/dist/packages/crucible/seeds/ruby/seed-001.rb +15 -0
  409. package/dist/packages/crucible/seeds/ruby/seed-002 2.rb +22 -0
  410. package/dist/packages/crucible/seeds/ruby/seed-002.rb +22 -0
  411. package/dist/packages/crucible/seeds/ruby/seed-003 2.rb +25 -0
  412. package/dist/packages/crucible/seeds/ruby/seed-003.rb +25 -0
  413. package/dist/packages/crucible/seeds/ruby/seed-004 2.rb +17 -0
  414. package/dist/packages/crucible/seeds/ruby/seed-004.rb +17 -0
  415. package/dist/packages/crucible/seeds/ruby/seed-005 2.rb +21 -0
  416. package/dist/packages/crucible/seeds/ruby/seed-005.rb +21 -0
  417. package/dist/packages/crucible/seeds/ruby/seed-006 2.rb +17 -0
  418. package/dist/packages/crucible/seeds/ruby/seed-006.rb +17 -0
  419. package/dist/packages/crucible/seeds/ruby/seed-007 2.rb +16 -0
  420. package/dist/packages/crucible/seeds/ruby/seed-007.rb +16 -0
  421. package/dist/packages/crucible/seeds/ruby/seed-008 2.rb +18 -0
  422. package/dist/packages/crucible/seeds/ruby/seed-008.rb +18 -0
  423. package/dist/packages/crucible/seeds/ruby/seed-009 2.rb +20 -0
  424. package/dist/packages/crucible/seeds/ruby/seed-009.rb +20 -0
  425. package/dist/packages/crucible/seeds/ruby/seed-010 2.rb +24 -0
  426. package/dist/packages/crucible/seeds/ruby/seed-010.rb +24 -0
  427. package/dist/packages/crucible/seeds/ruby/seed-011 2.rb +21 -0
  428. package/dist/packages/crucible/seeds/ruby/seed-011.rb +21 -0
  429. package/dist/packages/crucible/seeds/ruby/seed-012 2.rb +22 -0
  430. package/dist/packages/crucible/seeds/ruby/seed-012.rb +22 -0
  431. package/dist/packages/crucible/seeds/ruby/seed-013 2.rb +21 -0
  432. package/dist/packages/crucible/seeds/ruby/seed-013.rb +21 -0
  433. package/dist/packages/crucible/seeds/ruby/seed-014 2.rb +16 -0
  434. package/dist/packages/crucible/seeds/ruby/seed-014.rb +16 -0
  435. package/dist/packages/crucible/seeds/ruby/seed-015 2.rb +18 -0
  436. package/dist/packages/crucible/seeds/ruby/seed-015.rb +18 -0
  437. package/dist/packages/crucible/seeds/ruby/seed-016 2.rb +17 -0
  438. package/dist/packages/crucible/seeds/ruby/seed-016.rb +17 -0
  439. package/dist/packages/crucible/seeds/ruby/seed-017 2.rb +25 -0
  440. package/dist/packages/crucible/seeds/ruby/seed-017.rb +25 -0
  441. package/dist/packages/crucible/seeds/ruby/seed-018 2.rb +23 -0
  442. package/dist/packages/crucible/seeds/ruby/seed-018.rb +23 -0
  443. package/dist/packages/crucible/seeds/ruby/seed-019 2.rb +20 -0
  444. package/dist/packages/crucible/seeds/ruby/seed-019.rb +20 -0
  445. package/dist/packages/crucible/seeds/ruby/seed-020 2.rb +17 -0
  446. package/dist/packages/crucible/seeds/ruby/seed-020.rb +17 -0
  447. package/dist/packages/crucible/seeds/ruby/seed-021 2.rb +20 -0
  448. package/dist/packages/crucible/seeds/ruby/seed-021.rb +20 -0
  449. package/dist/packages/crucible/seeds/ruby/seed-022 2.rb +21 -0
  450. package/dist/packages/crucible/seeds/ruby/seed-022.rb +21 -0
  451. package/dist/packages/crucible/seeds/ruby/seed-023 2.rb +19 -0
  452. package/dist/packages/crucible/seeds/ruby/seed-023.rb +19 -0
  453. package/dist/packages/crucible/seeds/ruby/seed-024 2.rb +17 -0
  454. package/dist/packages/crucible/seeds/ruby/seed-024.rb +17 -0
  455. package/dist/packages/crucible/seeds/ruby/seed-025 2.rb +17 -0
  456. package/dist/packages/crucible/seeds/ruby/seed-025.rb +17 -0
  457. package/dist/packages/crucible/seeds/ruby/seed-026 2.rb +18 -0
  458. package/dist/packages/crucible/seeds/ruby/seed-026.rb +18 -0
  459. package/dist/packages/crucible/seeds/ruby/seed-027 2.rb +21 -0
  460. package/dist/packages/crucible/seeds/ruby/seed-027.rb +21 -0
  461. package/dist/packages/crucible/seeds/ruby/seed-028 2.rb +22 -0
  462. package/dist/packages/crucible/seeds/ruby/seed-028.rb +22 -0
  463. package/dist/packages/crucible/seeds/ruby/seed-029 2.rb +19 -0
  464. package/dist/packages/crucible/seeds/ruby/seed-029.rb +19 -0
  465. package/dist/packages/crucible/seeds/ruby/seed-030 2.rb +20 -0
  466. package/dist/packages/crucible/seeds/ruby/seed-030.rb +20 -0
  467. package/dist/packages/crucible/seeds/ruby/seed-031 2.rb +17 -0
  468. package/dist/packages/crucible/seeds/ruby/seed-031.rb +17 -0
  469. package/dist/packages/crucible/seeds/ruby/seed-032 2.rb +22 -0
  470. package/dist/packages/crucible/seeds/ruby/seed-032.rb +22 -0
  471. package/dist/packages/crucible/seeds/ruby/seed-033 2.rb +18 -0
  472. package/dist/packages/crucible/seeds/ruby/seed-033.rb +18 -0
  473. package/dist/packages/crucible/seeds/ruby/seed-034 2.rb +19 -0
  474. package/dist/packages/crucible/seeds/ruby/seed-034.rb +19 -0
  475. package/dist/packages/crucible/seeds/ruby/seed-035 2.rb +19 -0
  476. package/dist/packages/crucible/seeds/ruby/seed-035.rb +19 -0
  477. package/dist/packages/crucible/seeds/ruby/seed-036 2.rb +18 -0
  478. package/dist/packages/crucible/seeds/ruby/seed-036.rb +18 -0
  479. package/dist/packages/crucible/seeds/ruby/seed-037 2.rb +21 -0
  480. package/dist/packages/crucible/seeds/ruby/seed-037.rb +21 -0
  481. package/dist/packages/crucible/seeds/ruby/seed-038 2.rb +24 -0
  482. package/dist/packages/crucible/seeds/ruby/seed-038.rb +24 -0
  483. package/dist/packages/crucible/seeds/ruby/seed-039 2.rb +24 -0
  484. package/dist/packages/crucible/seeds/ruby/seed-039.rb +24 -0
  485. package/dist/packages/crucible/seeds/ruby/seed-040 2.rb +22 -0
  486. package/dist/packages/crucible/seeds/ruby/seed-040.rb +22 -0
  487. package/dist/packages/crucible/seeds/ruby/seed-041 2.rb +23 -0
  488. package/dist/packages/crucible/seeds/ruby/seed-041.rb +23 -0
  489. package/dist/packages/crucible/seeds/ruby/seed-042 2.rb +25 -0
  490. package/dist/packages/crucible/seeds/ruby/seed-042.rb +25 -0
  491. package/dist/packages/crucible/seeds/ruby/seed-043 2.rb +23 -0
  492. package/dist/packages/crucible/seeds/ruby/seed-043.rb +23 -0
  493. package/dist/packages/crucible/seeds/ruby/seed-044 2.rb +16 -0
  494. package/dist/packages/crucible/seeds/ruby/seed-044.rb +16 -0
  495. package/dist/packages/crucible/seeds/ruby/seed-045 2.rb +22 -0
  496. package/dist/packages/crucible/seeds/ruby/seed-045.rb +22 -0
  497. package/dist/packages/crucible/seeds/ruby/seed-046 2.rb +27 -0
  498. package/dist/packages/crucible/seeds/ruby/seed-046.rb +27 -0
  499. package/dist/packages/crucible/seeds/ruby/seed-047 2.rb +26 -0
  500. package/dist/packages/crucible/seeds/ruby/seed-047.rb +26 -0
  501. package/dist/packages/crucible/seeds/ruby/seed-048 2.rb +24 -0
  502. package/dist/packages/crucible/seeds/ruby/seed-048.rb +24 -0
  503. package/dist/packages/crucible/seeds/ruby/seed-049 2.rb +20 -0
  504. package/dist/packages/crucible/seeds/ruby/seed-049.rb +20 -0
  505. package/dist/packages/crucible/seeds/ruby/seed-050 2.rb +27 -0
  506. package/dist/packages/crucible/seeds/ruby/seed-050.rb +27 -0
  507. package/dist/packages/crucible/seeds/rust/seed-001 2.rs +25 -0
  508. package/dist/packages/crucible/seeds/rust/seed-001.rs +25 -0
  509. package/dist/packages/crucible/seeds/rust/seed-002 2.rs +20 -0
  510. package/dist/packages/crucible/seeds/rust/seed-002.rs +20 -0
  511. package/dist/packages/crucible/seeds/rust/seed-003 2.rs +23 -0
  512. package/dist/packages/crucible/seeds/rust/seed-003.rs +23 -0
  513. package/dist/packages/crucible/seeds/rust/seed-004 2.rs +21 -0
  514. package/dist/packages/crucible/seeds/rust/seed-004.rs +21 -0
  515. package/dist/packages/crucible/seeds/rust/seed-005 2.rs +21 -0
  516. package/dist/packages/crucible/seeds/rust/seed-005.rs +21 -0
  517. package/dist/packages/crucible/seeds/rust/seed-006 2.rs +24 -0
  518. package/dist/packages/crucible/seeds/rust/seed-006.rs +24 -0
  519. package/dist/packages/crucible/seeds/rust/seed-007 2.rs +20 -0
  520. package/dist/packages/crucible/seeds/rust/seed-007.rs +20 -0
  521. package/dist/packages/crucible/seeds/rust/seed-008 2.rs +19 -0
  522. package/dist/packages/crucible/seeds/rust/seed-008.rs +19 -0
  523. package/dist/packages/crucible/seeds/rust/seed-009 2.rs +28 -0
  524. package/dist/packages/crucible/seeds/rust/seed-009.rs +28 -0
  525. package/dist/packages/crucible/seeds/rust/seed-010 2.rs +28 -0
  526. package/dist/packages/crucible/seeds/rust/seed-010.rs +28 -0
  527. package/dist/packages/crucible/seeds/rust/seed-011 2.rs +25 -0
  528. package/dist/packages/crucible/seeds/rust/seed-011.rs +25 -0
  529. package/dist/packages/crucible/seeds/rust/seed-012 2.rs +31 -0
  530. package/dist/packages/crucible/seeds/rust/seed-012.rs +31 -0
  531. package/dist/packages/crucible/seeds/rust/seed-013 2.rs +27 -0
  532. package/dist/packages/crucible/seeds/rust/seed-013.rs +27 -0
  533. package/dist/packages/crucible/seeds/rust/seed-014 2.rs +30 -0
  534. package/dist/packages/crucible/seeds/rust/seed-014.rs +30 -0
  535. package/dist/packages/crucible/seeds/rust/seed-015 2.rs +33 -0
  536. package/dist/packages/crucible/seeds/rust/seed-015.rs +33 -0
  537. package/dist/packages/crucible/seeds/rust/seed-016 2.rs +22 -0
  538. package/dist/packages/crucible/seeds/rust/seed-016.rs +22 -0
  539. package/dist/packages/crucible/seeds/rust/seed-017 2.rs +28 -0
  540. package/dist/packages/crucible/seeds/rust/seed-017.rs +28 -0
  541. package/dist/packages/crucible/seeds/rust/seed-018 2.rs +21 -0
  542. package/dist/packages/crucible/seeds/rust/seed-018.rs +21 -0
  543. package/dist/packages/crucible/seeds/rust/seed-019 2.rs +36 -0
  544. package/dist/packages/crucible/seeds/rust/seed-019.rs +36 -0
  545. package/dist/packages/crucible/seeds/rust/seed-020 2.rs +27 -0
  546. package/dist/packages/crucible/seeds/rust/seed-020.rs +27 -0
  547. package/dist/packages/crucible/seeds/rust/seed-021 2.rs +26 -0
  548. package/dist/packages/crucible/seeds/rust/seed-021.rs +26 -0
  549. package/dist/packages/crucible/seeds/rust/seed-022 2.rs +23 -0
  550. package/dist/packages/crucible/seeds/rust/seed-022.rs +23 -0
  551. package/dist/packages/crucible/seeds/rust/seed-023 2.rs +22 -0
  552. package/dist/packages/crucible/seeds/rust/seed-023.rs +22 -0
  553. package/dist/packages/crucible/seeds/rust/seed-024 2.rs +24 -0
  554. package/dist/packages/crucible/seeds/rust/seed-024.rs +24 -0
  555. package/dist/packages/crucible/seeds/rust/seed-025 2.rs +29 -0
  556. package/dist/packages/crucible/seeds/rust/seed-025.rs +29 -0
  557. package/dist/packages/crucible/seeds/rust/seed-026 2.rs +23 -0
  558. package/dist/packages/crucible/seeds/rust/seed-026.rs +23 -0
  559. package/dist/packages/crucible/seeds/rust/seed-027 2.rs +24 -0
  560. package/dist/packages/crucible/seeds/rust/seed-027.rs +24 -0
  561. package/dist/packages/crucible/seeds/rust/seed-028 2.rs +25 -0
  562. package/dist/packages/crucible/seeds/rust/seed-028.rs +25 -0
  563. package/dist/packages/crucible/seeds/rust/seed-029 2.rs +25 -0
  564. package/dist/packages/crucible/seeds/rust/seed-029.rs +25 -0
  565. package/dist/packages/crucible/seeds/rust/seed-030 2.rs +30 -0
  566. package/dist/packages/crucible/seeds/rust/seed-030.rs +30 -0
  567. package/dist/packages/crucible/seeds/rust/seed-031 2.rs +22 -0
  568. package/dist/packages/crucible/seeds/rust/seed-031.rs +22 -0
  569. package/dist/packages/crucible/seeds/rust/seed-032 2.rs +25 -0
  570. package/dist/packages/crucible/seeds/rust/seed-032.rs +25 -0
  571. package/dist/packages/crucible/seeds/rust/seed-033 2.rs +25 -0
  572. package/dist/packages/crucible/seeds/rust/seed-033.rs +25 -0
  573. package/dist/packages/crucible/seeds/rust/seed-034 2.rs +20 -0
  574. package/dist/packages/crucible/seeds/rust/seed-034.rs +20 -0
  575. package/dist/packages/crucible/seeds/rust/seed-035 2.rs +28 -0
  576. package/dist/packages/crucible/seeds/rust/seed-035.rs +28 -0
  577. package/dist/packages/crucible/seeds/rust/seed-036 2.rs +26 -0
  578. package/dist/packages/crucible/seeds/rust/seed-036.rs +26 -0
  579. package/dist/packages/crucible/seeds/rust/seed-037 2.rs +31 -0
  580. package/dist/packages/crucible/seeds/rust/seed-037.rs +31 -0
  581. package/dist/packages/crucible/seeds/rust/seed-038 2.rs +25 -0
  582. package/dist/packages/crucible/seeds/rust/seed-038.rs +25 -0
  583. package/dist/packages/crucible/seeds/rust/seed-039 2.rs +28 -0
  584. package/dist/packages/crucible/seeds/rust/seed-039.rs +28 -0
  585. package/dist/packages/crucible/seeds/rust/seed-040 2.rs +27 -0
  586. package/dist/packages/crucible/seeds/rust/seed-040.rs +27 -0
  587. package/dist/packages/crucible/seeds/rust/seed-041 2.rs +32 -0
  588. package/dist/packages/crucible/seeds/rust/seed-041.rs +32 -0
  589. package/dist/packages/crucible/seeds/rust/seed-042 2.rs +27 -0
  590. package/dist/packages/crucible/seeds/rust/seed-042.rs +27 -0
  591. package/dist/packages/crucible/seeds/rust/seed-043 2.rs +29 -0
  592. package/dist/packages/crucible/seeds/rust/seed-043.rs +29 -0
  593. package/dist/packages/crucible/seeds/rust/seed-044 2.rs +25 -0
  594. package/dist/packages/crucible/seeds/rust/seed-044.rs +25 -0
  595. package/dist/packages/crucible/seeds/rust/seed-045 2.rs +28 -0
  596. package/dist/packages/crucible/seeds/rust/seed-045.rs +28 -0
  597. package/dist/packages/crucible/seeds/rust/seed-046 2.rs +25 -0
  598. package/dist/packages/crucible/seeds/rust/seed-046.rs +25 -0
  599. package/dist/packages/crucible/seeds/rust/seed-047 2.rs +34 -0
  600. package/dist/packages/crucible/seeds/rust/seed-047.rs +34 -0
  601. package/dist/packages/crucible/seeds/rust/seed-048 2.rs +21 -0
  602. package/dist/packages/crucible/seeds/rust/seed-048.rs +21 -0
  603. package/dist/packages/crucible/seeds/rust/seed-049 2.rs +26 -0
  604. package/dist/packages/crucible/seeds/rust/seed-049.rs +26 -0
  605. package/dist/packages/crucible/seeds/rust/seed-050 2.rs +23 -0
  606. package/dist/packages/crucible/seeds/rust/seed-050.rs +23 -0
  607. package/dist/packages/crucible/seeds/ts/seed-001 2.ts +32 -0
  608. package/dist/packages/crucible/seeds/ts/seed-001.ts +32 -0
  609. package/dist/packages/crucible/seeds/ts/seed-002 2.ts +34 -0
  610. package/dist/packages/crucible/seeds/ts/seed-002.ts +34 -0
  611. package/dist/packages/crucible/seeds/ts/seed-003 2.ts +28 -0
  612. package/dist/packages/crucible/seeds/ts/seed-003.ts +28 -0
  613. package/dist/packages/crucible/seeds/ts/seed-004 2.ts +34 -0
  614. package/dist/packages/crucible/seeds/ts/seed-004.ts +34 -0
  615. package/dist/packages/crucible/seeds/ts/seed-005 2.ts +32 -0
  616. package/dist/packages/crucible/seeds/ts/seed-005.ts +32 -0
  617. package/dist/packages/crucible/seeds/ts/seed-006 2.ts +31 -0
  618. package/dist/packages/crucible/seeds/ts/seed-006.ts +31 -0
  619. package/dist/packages/crucible/seeds/ts/seed-007 2.ts +28 -0
  620. package/dist/packages/crucible/seeds/ts/seed-007.ts +28 -0
  621. package/dist/packages/crucible/seeds/ts/seed-008 2.ts +40 -0
  622. package/dist/packages/crucible/seeds/ts/seed-008.ts +40 -0
  623. package/dist/packages/crucible/seeds/ts/seed-009 2.ts +31 -0
  624. package/dist/packages/crucible/seeds/ts/seed-009.ts +31 -0
  625. package/dist/packages/crucible/seeds/ts/seed-010 2.ts +33 -0
  626. package/dist/packages/crucible/seeds/ts/seed-010.ts +33 -0
  627. package/dist/packages/crucible/seeds/ts/seed-011 2.ts +29 -0
  628. package/dist/packages/crucible/seeds/ts/seed-011.ts +29 -0
  629. package/dist/packages/crucible/seeds/ts/seed-012 2.ts +34 -0
  630. package/dist/packages/crucible/seeds/ts/seed-012.ts +34 -0
  631. package/dist/packages/crucible/seeds/ts/seed-013 2.ts +31 -0
  632. package/dist/packages/crucible/seeds/ts/seed-013.ts +31 -0
  633. package/dist/packages/crucible/seeds/ts/seed-014 2.ts +36 -0
  634. package/dist/packages/crucible/seeds/ts/seed-014.ts +36 -0
  635. package/dist/packages/crucible/seeds/ts/seed-015 2.ts +31 -0
  636. package/dist/packages/crucible/seeds/ts/seed-015.ts +31 -0
  637. package/dist/packages/crucible/seeds/ts/seed-016 2.ts +37 -0
  638. package/dist/packages/crucible/seeds/ts/seed-016.ts +37 -0
  639. package/dist/packages/crucible/seeds/ts/seed-017 2.ts +44 -0
  640. package/dist/packages/crucible/seeds/ts/seed-017.ts +44 -0
  641. package/dist/packages/crucible/seeds/ts/seed-018 2.ts +33 -0
  642. package/dist/packages/crucible/seeds/ts/seed-018.ts +33 -0
  643. package/dist/packages/crucible/seeds/ts/seed-019 2.ts +32 -0
  644. package/dist/packages/crucible/seeds/ts/seed-019.ts +32 -0
  645. package/dist/packages/crucible/seeds/ts/seed-020 2.ts +33 -0
  646. package/dist/packages/crucible/seeds/ts/seed-020.ts +33 -0
  647. package/dist/packages/crucible/seeds/ts/seed-021 2.ts +33 -0
  648. package/dist/packages/crucible/seeds/ts/seed-021.ts +33 -0
  649. package/dist/packages/crucible/seeds/ts/seed-022 2.ts +34 -0
  650. package/dist/packages/crucible/seeds/ts/seed-022.ts +34 -0
  651. package/dist/packages/crucible/seeds/ts/seed-023 2.ts +33 -0
  652. package/dist/packages/crucible/seeds/ts/seed-023.ts +33 -0
  653. package/dist/packages/crucible/seeds/ts/seed-024 2.ts +35 -0
  654. package/dist/packages/crucible/seeds/ts/seed-024.ts +35 -0
  655. package/dist/packages/crucible/seeds/ts/seed-025 2.ts +29 -0
  656. package/dist/packages/crucible/seeds/ts/seed-025.ts +29 -0
  657. package/dist/packages/crucible/seeds/ts/seed-026 2.ts +36 -0
  658. package/dist/packages/crucible/seeds/ts/seed-026.ts +36 -0
  659. package/dist/packages/crucible/seeds/ts/seed-027 2.ts +30 -0
  660. package/dist/packages/crucible/seeds/ts/seed-027.ts +30 -0
  661. package/dist/packages/crucible/seeds/ts/seed-028 2.ts +32 -0
  662. package/dist/packages/crucible/seeds/ts/seed-028.ts +32 -0
  663. package/dist/packages/crucible/seeds/ts/seed-029 2.ts +34 -0
  664. package/dist/packages/crucible/seeds/ts/seed-029.ts +34 -0
  665. package/dist/packages/crucible/seeds/ts/seed-030 2.ts +37 -0
  666. package/dist/packages/crucible/seeds/ts/seed-030.ts +37 -0
  667. package/dist/packages/crucible/seeds/ts/seed-031 2.ts +31 -0
  668. package/dist/packages/crucible/seeds/ts/seed-031.ts +31 -0
  669. package/dist/packages/crucible/seeds/ts/seed-032 2.ts +32 -0
  670. package/dist/packages/crucible/seeds/ts/seed-032.ts +32 -0
  671. package/dist/packages/crucible/seeds/ts/seed-033 2.ts +32 -0
  672. package/dist/packages/crucible/seeds/ts/seed-033.ts +32 -0
  673. package/dist/packages/crucible/seeds/ts/seed-034 2.ts +34 -0
  674. package/dist/packages/crucible/seeds/ts/seed-034.ts +34 -0
  675. package/dist/packages/crucible/seeds/ts/seed-035 2.ts +29 -0
  676. package/dist/packages/crucible/seeds/ts/seed-035.ts +29 -0
  677. package/dist/packages/crucible/seeds/ts/seed-036 2.ts +34 -0
  678. package/dist/packages/crucible/seeds/ts/seed-036.ts +34 -0
  679. package/dist/packages/crucible/seeds/ts/seed-037 2.ts +33 -0
  680. package/dist/packages/crucible/seeds/ts/seed-037.ts +33 -0
  681. package/dist/packages/crucible/seeds/ts/seed-038 2.ts +29 -0
  682. package/dist/packages/crucible/seeds/ts/seed-038.ts +29 -0
  683. package/dist/packages/crucible/seeds/ts/seed-039 2.ts +35 -0
  684. package/dist/packages/crucible/seeds/ts/seed-039.ts +35 -0
  685. package/dist/packages/crucible/seeds/ts/seed-040 2.ts +31 -0
  686. package/dist/packages/crucible/seeds/ts/seed-040.ts +31 -0
  687. package/dist/packages/crucible/seeds/ts/seed-041 2.ts +29 -0
  688. package/dist/packages/crucible/seeds/ts/seed-041.ts +29 -0
  689. package/dist/packages/crucible/seeds/ts/seed-042 2.ts +33 -0
  690. package/dist/packages/crucible/seeds/ts/seed-042.ts +33 -0
  691. package/dist/packages/crucible/seeds/ts/seed-043 2.ts +32 -0
  692. package/dist/packages/crucible/seeds/ts/seed-043.ts +32 -0
  693. package/dist/packages/crucible/seeds/ts/seed-044 2.ts +36 -0
  694. package/dist/packages/crucible/seeds/ts/seed-044.ts +36 -0
  695. package/dist/packages/crucible/seeds/ts/seed-045 2.ts +39 -0
  696. package/dist/packages/crucible/seeds/ts/seed-045.ts +39 -0
  697. package/dist/packages/crucible/seeds/ts/seed-046 2.ts +41 -0
  698. package/dist/packages/crucible/seeds/ts/seed-046.ts +41 -0
  699. package/dist/packages/crucible/seeds/ts/seed-047 2.ts +33 -0
  700. package/dist/packages/crucible/seeds/ts/seed-047.ts +33 -0
  701. package/dist/packages/crucible/seeds/ts/seed-048 2.ts +33 -0
  702. package/dist/packages/crucible/seeds/ts/seed-048.ts +33 -0
  703. package/dist/packages/crucible/seeds/ts/seed-049 2.ts +34 -0
  704. package/dist/packages/crucible/seeds/ts/seed-049.ts +34 -0
  705. package/dist/packages/crucible/seeds/ts/seed-050 2.ts +41 -0
  706. package/dist/packages/crucible/seeds/ts/seed-050.ts +41 -0
  707. package/dist/packages/crucible/seeds/ts/seed-051 2.ts +34 -0
  708. package/dist/packages/crucible/seeds/ts/seed-051.ts +34 -0
  709. package/dist/packages/crucible/seeds/ts/seed-052 2.ts +36 -0
  710. package/dist/packages/crucible/seeds/ts/seed-052.ts +36 -0
  711. package/dist/packages/crucible/self-attack.js +1 -0
  712. package/dist/packages/scanner/ai-confidence-scorer.js +1 -1
  713. package/dist/packages/scanner/alert-manager.js +1 -1
  714. package/dist/packages/scanner/ast-analyzer.js +1 -0
  715. package/dist/packages/scanner/baseline-manager.js +1 -1
  716. package/dist/packages/scanner/cfg-analyzer.js +1 -0
  717. package/dist/packages/scanner/code-scanner.js +1 -1
  718. package/dist/packages/scanner/dependency-graph.js +1 -1
  719. package/dist/packages/scanner/drift-detector.js +1 -1
  720. package/dist/packages/scanner/executive-report.js +1 -1
  721. package/dist/packages/scanner/export-verifier.js +1 -0
  722. package/dist/packages/scanner/file-collector.js +1 -1
  723. package/dist/packages/scanner/file-watcher.js +1 -1
  724. package/dist/packages/scanner/ghost-code-detector.js +1 -1
  725. package/dist/packages/scanner/go-ast-analyzer.js +1 -0
  726. package/dist/packages/scanner/hallucination-detector.js +1 -1
  727. package/dist/packages/scanner/html-report.js +1 -1
  728. package/dist/packages/scanner/license-manager.js +1 -1
  729. package/dist/packages/scanner/master-health-checker.js +1 -1
  730. package/dist/packages/scanner/monitor-service.js +1 -1
  731. package/dist/packages/scanner/monitor-store.js +1 -1
  732. package/dist/packages/scanner/python-ast-analyzer.js +1 -0
  733. package/dist/packages/scanner/secret-scanner.js +1 -1
  734. package/dist/packages/scanner/sentinel-core.js +1 -1
  735. package/dist/packages/scanner/taint-tracker.js +1 -0
  736. package/dist/packages/scanner/tech-debt-analyzer.js +1 -1
  737. package/dist/packages/scanner/tech-debt-cost.js +1 -1
  738. package/dist/packages/scanner/widget-generator.js +1 -1
  739. package/package.json +7 -3
@@ -0,0 +1,27 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: deserialization
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: Unsafe deserialization via DataContractSerializer reading from request body
6
+
7
+ using System.Runtime.Serialization;
8
+ using System.Xml;
9
+ using Microsoft.AspNetCore.Mvc;
10
+
11
+ namespace App.Controllers
12
+ {
13
+ [ApiController]
14
+ [Route("api/[controller]")]
15
+ public class OrderController : ControllerBase
16
+ {
17
+ [HttpPost("import")]
18
+ public IActionResult Import()
19
+ {
20
+ // Vulnerable: DataContractSerializer resolves types from XML — SSRF/RCE risk
21
+ var serializer = new DataContractSerializer(typeof(object));
22
+ using var reader = XmlReader.Create(Request.Body);
23
+ object order = serializer.ReadObject(reader);
24
+ return Ok("Imported: " + order?.GetType().Name);
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,27 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: deserialization
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: Unsafe deserialization via LosFormatter (ViewState) with user-controlled input
6
+
7
+ using System.IO;
8
+ using System.Web.UI;
9
+ using Microsoft.AspNetCore.Mvc;
10
+
11
+ namespace App.Controllers
12
+ {
13
+ [ApiController]
14
+ [Route("api/[controller]")]
15
+ public class ViewStateController : ControllerBase
16
+ {
17
+ [HttpPost("restore")]
18
+ public IActionResult Restore([FromQuery] string viewState)
19
+ {
20
+ // Vulnerable: LosFormatter deserializes attacker-controlled ViewState bytes
21
+ var formatter = new LosFormatter();
22
+ byte[] data = Convert.FromBase64String(viewState);
23
+ object result = formatter.Deserialize(Convert.ToBase64String(data));
24
+ return Ok(result?.ToString());
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,25 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: ssrf
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: SSRF via WebClient.DownloadString with user-supplied URL
6
+
7
+ using System.Net;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class ProxyController : ControllerBase
15
+ {
16
+ [HttpGet]
17
+ public IActionResult Fetch([FromQuery] string url)
18
+ {
19
+ // Vulnerable: fetches arbitrary URL including internal services
20
+ using var client = new WebClient();
21
+ string content = client.DownloadString(url);
22
+ return Content(content, "text/plain");
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,30 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: ssrf
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: SSRF via HttpClient.GetAsync with user-controlled endpoint URL
6
+
7
+ using System.Net.Http;
8
+ using System.Threading.Tasks;
9
+ using Microsoft.AspNetCore.Mvc;
10
+
11
+ namespace App.Controllers
12
+ {
13
+ [ApiController]
14
+ [Route("api/[controller]")]
15
+ public class WebhookTestController : ControllerBase
16
+ {
17
+ private static readonly HttpClient _httpClient = new HttpClient();
18
+
19
+ [HttpPost]
20
+ public async Task<IActionResult> Test([FromQuery] string webhookUrl, [FromBody] string payload)
21
+ {
22
+ // Vulnerable: attacker can target internal metadata endpoints
23
+ var response = await _httpClient.PostAsync(
24
+ webhookUrl,
25
+ new StringContent(payload, System.Text.Encoding.UTF8, "application/json"));
26
+ string body = await response.Content.ReadAsStringAsync();
27
+ return Ok(body);
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,29 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: ssrf
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: SSRF via WebRequest.Create with user-supplied URL for avatar fetching
6
+
7
+ using System.IO;
8
+ using System.Net;
9
+ using Microsoft.AspNetCore.Mvc;
10
+
11
+ namespace App.Controllers
12
+ {
13
+ [ApiController]
14
+ [Route("api/[controller]")]
15
+ public class AvatarController : ControllerBase
16
+ {
17
+ [HttpGet]
18
+ public IActionResult FetchAvatar([FromQuery] string avatarUrl)
19
+ {
20
+ // Vulnerable: server fetches any URL, allowing SSRF to internal services
21
+ WebRequest request = WebRequest.Create(avatarUrl);
22
+ WebResponse response = request.GetResponse();
23
+ using var stream = response.GetResponseStream();
24
+ using var ms = new MemoryStream();
25
+ stream.CopyTo(ms);
26
+ return File(ms.ToArray(), response.ContentType);
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,26 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: ssrf
3
+ // severity: high
4
+ // language: csharp
5
+ // expected: SSRF via HttpClient built from base URL query parameter for API aggregation
6
+
7
+ using System.Net.Http;
8
+ using System.Threading.Tasks;
9
+ using Microsoft.AspNetCore.Mvc;
10
+
11
+ namespace App.Controllers
12
+ {
13
+ [ApiController]
14
+ [Route("api/[controller]")]
15
+ public class AggregatorController : ControllerBase
16
+ {
17
+ [HttpGet]
18
+ public async Task<IActionResult> Aggregate([FromQuery] string serviceUrl, [FromQuery] string path)
19
+ {
20
+ // Vulnerable: combines user-controlled base URL and path — can reach internal services
21
+ using var client = new HttpClient { BaseAddress = new System.Uri(serviceUrl) };
22
+ string response = await client.GetStringAsync(path);
23
+ return Ok(response);
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,31 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: xxe
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: XXE via XmlReader without secure settings (DtdProcessing.Parse enabled)
6
+
7
+ using System.Xml;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class XmlImportController : ControllerBase
15
+ {
16
+ [HttpPost]
17
+ public IActionResult Import()
18
+ {
19
+ // Vulnerable: default XmlReaderSettings allows DTD and external entities
20
+ var settings = new XmlReaderSettings
21
+ {
22
+ DtdProcessing = DtdProcessing.Parse, // allows DOCTYPE
23
+ XmlResolver = new XmlUrlResolver() // resolves external entities
24
+ };
25
+ using var reader = XmlReader.Create(Request.Body, settings);
26
+ var doc = new XmlDocument();
27
+ doc.Load(reader);
28
+ return Ok("Imported " + doc.DocumentElement?.Name);
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,27 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: xxe
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: XXE via XmlDocument.LoadXml with default XmlResolver allowing entity expansion
6
+
7
+ using System.Xml;
8
+ using Microsoft.AspNetCore.Mvc;
9
+
10
+ namespace App.Controllers
11
+ {
12
+ [ApiController]
13
+ [Route("api/[controller]")]
14
+ public class FeedController : ControllerBase
15
+ {
16
+ [HttpPost("parse")]
17
+ public IActionResult ParseFeed([FromBody] string xmlContent)
18
+ {
19
+ // Vulnerable: XmlDocument with default resolver processes external entities
20
+ var doc = new XmlDocument();
21
+ doc.XmlResolver = new XmlUrlResolver(); // allows file:// and http:// entities
22
+ doc.LoadXml(xmlContent);
23
+ string rootName = doc.DocumentElement?.Name ?? "none";
24
+ return Ok($"Root element: {rootName}");
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,30 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: xxe
3
+ // severity: critical
4
+ // language: csharp
5
+ // expected: XXE via XPathDocument loaded from request body without disabling DTD processing
6
+
7
+ using System.IO;
8
+ using System.Xml;
9
+ using System.Xml.XPath;
10
+ using Microsoft.AspNetCore.Mvc;
11
+
12
+ namespace App.Controllers
13
+ {
14
+ [ApiController]
15
+ [Route("api/[controller]")]
16
+ public class XPathQueryController : ControllerBase
17
+ {
18
+ [HttpPost("query")]
19
+ public IActionResult Query([FromQuery] string xpath)
20
+ {
21
+ // Vulnerable: XPathDocument with XmlUrlResolver resolves external entities
22
+ using var reader = new StreamReader(Request.Body);
23
+ string xml = reader.ReadToEnd();
24
+ var doc = new XPathDocument(new StringReader(xml));
25
+ var nav = doc.CreateNavigator();
26
+ string result = nav.SelectSingleNode(xpath)?.Value ?? "";
27
+ return Ok(result);
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,34 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: open_redirect
3
+ // severity: medium
4
+ // language: csharp
5
+ // expected: Open redirect via Response.Redirect with unvalidated user-supplied URL
6
+
7
+ using System.Web;
8
+
9
+ namespace App.Handlers
10
+ {
11
+ public class LoginHandler : IHttpHandler
12
+ {
13
+ public bool IsReusable => false;
14
+
15
+ public void ProcessRequest(HttpContext context)
16
+ {
17
+ string username = context.Request.Form["username"];
18
+ string password = context.Request.Form["password"];
19
+ string next = context.Request.QueryString["next"];
20
+
21
+ if (Authenticate(username, password))
22
+ {
23
+ // Vulnerable: 'next' not validated — can redirect to external malicious site
24
+ context.Response.Redirect(next ?? "/dashboard");
25
+ }
26
+ else
27
+ {
28
+ context.Response.Redirect("/login?error=1");
29
+ }
30
+ }
31
+
32
+ private bool Authenticate(string u, string p) => u == "admin" && p == "password";
33
+ }
34
+ }
@@ -0,0 +1,36 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: open_redirect
3
+ // severity: medium
4
+ // language: csharp
5
+ // expected: Open redirect via LocalRedirect with user-controlled URL bypassing local check
6
+
7
+ using Microsoft.AspNetCore.Mvc;
8
+
9
+ namespace App.Controllers
10
+ {
11
+ public class AccountController : Controller
12
+ {
13
+ [HttpPost("logout")]
14
+ public IActionResult Logout(string returnUrl)
15
+ {
16
+ // Clear session
17
+ HttpContext.Session.Clear();
18
+
19
+ // Vulnerable: returnUrl not properly validated;
20
+ // attacker can supply //evil.com or /\evil.com to bypass IsLocalUrl
21
+ if (!string.IsNullOrEmpty(returnUrl))
22
+ return Redirect(returnUrl);
23
+
24
+ return RedirectToAction("Index", "Home");
25
+ }
26
+
27
+ [HttpGet("oauth-callback")]
28
+ public IActionResult OAuthCallback(string state, string code)
29
+ {
30
+ // Vulnerable: state used as redirect target without validation
31
+ string destination = System.Text.Encoding.UTF8.GetString(
32
+ Convert.FromBase64String(state));
33
+ return Redirect(destination);
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,29 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: critical
4
+ // language: go
5
+ // expected: Hardcoded AWS access key and secret key in Go constants
6
+
7
+ package config
8
+
9
+ import (
10
+ "github.com/aws/aws-sdk-go/aws"
11
+ "github.com/aws/aws-sdk-go/aws/credentials"
12
+ "github.com/aws/aws-sdk-go/aws/session"
13
+ "github.com/aws/aws-sdk-go/service/s3"
14
+ )
15
+
16
+ const (
17
+ awsAccessKeyID = "AKIAIOSFODNN7EXAMPLE"
18
+ awsSecretAccessKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
19
+ awsRegion = "us-east-1"
20
+ )
21
+
22
+ func NewS3Client() *s3.S3 {
23
+ creds := credentials.NewStaticCredentials(awsAccessKeyID, awsSecretAccessKey, "")
24
+ sess := session.Must(session.NewSession(&aws.Config{
25
+ Region: aws.String(awsRegion),
26
+ Credentials: creds,
27
+ }))
28
+ return s3.New(sess)
29
+ }
@@ -0,0 +1,27 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: critical
4
+ // language: go
5
+ // expected: Hardcoded database password in Go variable used for connection string
6
+
7
+ package database
8
+
9
+ import (
10
+ "database/sql"
11
+ "fmt"
12
+ _ "github.com/lib/pq"
13
+ )
14
+
15
+ const (
16
+ dbHost = "prod-postgres.internal"
17
+ dbPort = 5432
18
+ dbUser = "app_user"
19
+ dbPassword = "Pr0dDB$uper$ecret2024!"
20
+ dbName = "appdb"
21
+ )
22
+
23
+ func Connect() (*sql.DB, error) {
24
+ dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=require",
25
+ dbHost, dbPort, dbUser, dbPassword, dbName)
26
+ return sql.Open("postgres", dsn)
27
+ }
@@ -0,0 +1,31 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: critical
4
+ // language: go
5
+ // expected: Hardcoded JWT signing secret stored as package-level variable
6
+
7
+ package auth
8
+
9
+ import (
10
+ "time"
11
+ "github.com/golang-jwt/jwt/v4"
12
+ )
13
+
14
+ // Vulnerable: signing secret hardcoded — should come from environment/vault
15
+ var jwtSigningKey = []byte("my-super-secret-jwt-key-do-not-share")
16
+
17
+ func GenerateToken(userID string) (string, error) {
18
+ claims := jwt.MapClaims{
19
+ "sub": userID,
20
+ "iat": time.Now().Unix(),
21
+ "exp": time.Now().Add(24 * time.Hour).Unix(),
22
+ }
23
+ token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
24
+ return token.SignedString(jwtSigningKey)
25
+ }
26
+
27
+ func ValidateToken(tokenStr string) (*jwt.Token, error) {
28
+ return jwt.Parse(tokenStr, func(t *jwt.Token) (interface{}, error) {
29
+ return jwtSigningKey, nil
30
+ })
31
+ }
@@ -0,0 +1,27 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: high
4
+ // language: go
5
+ // expected: Hardcoded Stripe secret key in payment service package variable
6
+
7
+ package payments
8
+
9
+ import (
10
+ "github.com/stripe/stripe-go/v74"
11
+ "github.com/stripe/stripe-go/v74/charge"
12
+ )
13
+
14
+ const stripeSecretKey = "sk_live_51HqT4vKZ3VpNm8Yw9fX2rLcD"
15
+
16
+ func init() {
17
+ stripe.Key = stripeSecretKey
18
+ }
19
+
20
+ func CreateCharge(token string, amountCents int64) (*stripe.Charge, error) {
21
+ params := &stripe.ChargeParams{
22
+ Amount: stripe.Int64(amountCents),
23
+ Currency: stripe.String(string(stripe.CurrencyUSD)),
24
+ Source: &stripe.SourceParams{Token: stripe.String(token)},
25
+ }
26
+ return charge.New(params)
27
+ }
@@ -0,0 +1,27 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: critical
4
+ // language: go
5
+ // expected: Hardcoded Redis password and encryption key in configuration struct literal
6
+
7
+ package config
8
+
9
+ type CacheConfig struct {
10
+ Host string
11
+ Port int
12
+ Password string
13
+ EncKey string
14
+ }
15
+
16
+ // Vulnerable: both secrets hardcoded in source
17
+ var DefaultCacheConfig = CacheConfig{
18
+ Host: "redis.internal.prod",
19
+ Port: 6379,
20
+ Password: "RedisP@$$w0rd#Prod2024",
21
+ EncKey: "AES256KeyForCache!Encrypt#9876XY",
22
+ }
23
+
24
+ func GetRedisURL() string {
25
+ return "redis://:" + DefaultCacheConfig.Password +
26
+ "@" + DefaultCacheConfig.Host + ":6379"
27
+ }
@@ -0,0 +1,29 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: high
4
+ // language: go
5
+ // expected: Hardcoded GitHub personal access token in REST client
6
+
7
+ package github
8
+
9
+ import (
10
+ "net/http"
11
+ )
12
+
13
+ const githubToken = "ghp_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345"
14
+
15
+ func NewClient() *http.Client {
16
+ return &http.Client{}
17
+ }
18
+
19
+ func GetRepository(owner, repo string) (*http.Response, error) {
20
+ req, err := http.NewRequest("GET",
21
+ "https://api.github.com/repos/"+owner+"/"+repo, nil)
22
+ if err != nil {
23
+ return nil, err
24
+ }
25
+ // Vulnerable: hardcoded token added to every request
26
+ req.Header.Set("Authorization", "token "+githubToken)
27
+ req.Header.Set("Accept", "application/vnd.github.v3+json")
28
+ return http.DefaultClient.Do(req)
29
+ }
@@ -0,0 +1,24 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: critical
4
+ // language: go
5
+ // expected: Hardcoded SMTP password and SendGrid API key in notification package
6
+
7
+ package notifications
8
+
9
+ const (
10
+ smtpHost = "smtp.company.com"
11
+ smtpPort = 587
12
+ smtpUser = "alerts@company.com"
13
+ smtpPassword = "SmtpP@$$w0rd!Prod"
14
+
15
+ sendGridAPIKey = "SG.aBcDeFgHiJkLmNoPqRsTuVwXyZ.0123456789abcdefghijklmno"
16
+ )
17
+
18
+ func SMTPConnectionString() string {
19
+ return smtpUser + ":" + smtpPassword + "@" + smtpHost
20
+ }
21
+
22
+ func SendGridKey() string {
23
+ return sendGridAPIKey
24
+ }
@@ -0,0 +1,25 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: hardcoded_secret
3
+ // severity: critical
4
+ // language: go
5
+ // expected: Hardcoded OAuth2 client secret in Go OAuth configuration
6
+
7
+ package oauth
8
+
9
+ import (
10
+ "golang.org/x/oauth2"
11
+ "golang.org/x/oauth2/google"
12
+ )
13
+
14
+ const (
15
+ oauthClientID = "my-app-client-id-prod.apps.googleusercontent.com"
16
+ oauthClientSecret = "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R7wZ4"
17
+ )
18
+
19
+ var GoogleOAuthConfig = &oauth2.Config{
20
+ ClientID: oauthClientID,
21
+ ClientSecret: oauthClientSecret,
22
+ RedirectURL: "https://myapp.com/auth/callback",
23
+ Scopes: []string{"openid", "profile", "email"},
24
+ Endpoint: google.Endpoint,
25
+ }
@@ -0,0 +1,30 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: sql_injection
3
+ // severity: critical
4
+ // language: go
5
+ // expected: SQL injection via fmt.Sprintf in db.Query building WHERE clause
6
+
7
+ package repository
8
+
9
+ import (
10
+ "database/sql"
11
+ "fmt"
12
+ )
13
+
14
+ type UserRepository struct {
15
+ db *sql.DB
16
+ }
17
+
18
+ func (r *UserRepository) FindByUsername(username string) (*sql.Row, error) {
19
+ // Vulnerable: fmt.Sprintf injects username directly into query string
20
+ query := fmt.Sprintf("SELECT id, email FROM users WHERE username = '%s'", username)
21
+ row := r.db.QueryRow(query)
22
+ return row, nil
23
+ }
24
+
25
+ func (r *UserRepository) DeleteUser(userID string) error {
26
+ // Vulnerable: userID concatenated without parameterization
27
+ query := fmt.Sprintf("DELETE FROM users WHERE id = %s", userID)
28
+ _, err := r.db.Exec(query)
29
+ return err
30
+ }
@@ -0,0 +1,35 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: sql_injection
3
+ // severity: critical
4
+ // language: go
5
+ // expected: SQL injection in login handler via fmt.Sprintf with username and password
6
+
7
+ package handlers
8
+
9
+ import (
10
+ "database/sql"
11
+ "fmt"
12
+ "net/http"
13
+ )
14
+
15
+ type AuthHandler struct {
16
+ DB *sql.DB
17
+ }
18
+
19
+ func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) {
20
+ username := r.FormValue("username")
21
+ password := r.FormValue("password")
22
+
23
+ // Vulnerable: both form values injected into SQL via fmt.Sprintf
24
+ query := fmt.Sprintf(
25
+ "SELECT id FROM users WHERE username='%s' AND password='%s'",
26
+ username, password)
27
+ row := h.DB.QueryRow(query)
28
+
29
+ var id int
30
+ if err := row.Scan(&id); err == nil {
31
+ http.Redirect(w, r, "/dashboard", http.StatusFound)
32
+ } else {
33
+ http.Redirect(w, r, "/login?error=1", http.StatusFound)
34
+ }
35
+ }
@@ -0,0 +1,24 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: sql_injection
3
+ // severity: critical
4
+ // language: go
5
+ // expected: SQL injection via string concatenation in ORDER BY clause with user sort param
6
+
7
+ package repository
8
+
9
+ import (
10
+ "database/sql"
11
+ "fmt"
12
+ )
13
+
14
+ type ProductRepository struct {
15
+ DB *sql.DB
16
+ }
17
+
18
+ func (r *ProductRepository) SearchProducts(keyword, sortCol, sortDir string) (*sql.Rows, error) {
19
+ // Vulnerable: sortCol and sortDir injected without allowlist validation
20
+ query := fmt.Sprintf(
21
+ "SELECT name, price FROM products WHERE name LIKE '%%%s%%' ORDER BY %s %s",
22
+ keyword, sortCol, sortDir)
23
+ return r.DB.Query(query)
24
+ }
@@ -0,0 +1,24 @@
1
+ // [CRUCIBLE-SEED]
2
+ // category: sql_injection
3
+ // severity: critical
4
+ // language: go
5
+ // expected: SQL injection via fmt.Sprintf with dynamic table name from user input
6
+
7
+ package repository
8
+
9
+ import (
10
+ "database/sql"
11
+ "fmt"
12
+ )
13
+
14
+ type ReportRepository struct {
15
+ DB *sql.DB
16
+ }
17
+
18
+ func (r *ReportRepository) GetReport(reportType, startDate, endDate string) (*sql.Rows, error) {
19
+ // Vulnerable: reportType used as table name; cannot use placeholder for identifiers
20
+ query := fmt.Sprintf(
21
+ "SELECT * FROM %s WHERE created_at BETWEEN '%s' AND '%s'",
22
+ reportType, startDate, endDate)
23
+ return r.DB.Query(query)
24
+ }