build checks.x86_64-linux.e2e-added-rule-is-run

Queued Started Finished

Reproduce this run
  1. 0.00 s $ /nix/store/9ypz3flqsrl5xl495mm8h645gadjsxi1-coreutils-9.11/bin/timeout --kill-after=15s 7200s /nix/store/23zk8sgzamrbmj1fday15szf7f2279s8-nix-2.34.7/bin/nix --extra-experimental-features nix-command --extra-experimental-features flakes --log-format internal-json build --no-link --print-out-paths git+https://github.com/NorfairKing/hopinion?ref=test-file-rules&rev=a162927286e1af0c8161a932f4de3cf90e5e9995&shallow=1#checks.x86_64-linux.e2e-added-rule-is-run --print-build-logs
  2. 1.85 s
  3. 3.17 s Downloading cached hopinion from https://cache.staging.nix-ci.com
  4. 3.17 s Downloading cached hopinion-gen from https://cache.staging.nix-ci.com
  5. 3.44 s Downloaded cached hopinion (31.9 MiB) in 276ms
  6. 3.44 s Progress: 0 of 11 built, 1 of 2 downloaded from cache (1 downloading)
  7. 3.47 s Downloaded cached hopinion-gen (31.9 MiB) in 309ms
  8. 3.53 s Building /nix/store/nmb2qadzj2bxwjqmaq7k7ww39aprlin4-lonely-hopinion.drv
  9. 3.55 s Building /nix/store/yyiszb1i01gwkxxxks8k9h14igx4vzy7-thing-gen-hopinion.drv
  10. 3.56 s Building /nix/store/h3ymk9qbz7g81z17h1jr9avgg33dw9r0-thing-hopinion.drv
  11. 3.56 s Progress: 0 of 10 built (3 building), 2 of 2 downloaded from cache
  12. 3.59 s Building /nix/store/1rqkvgfmxp5gds498d3gsriasp7sggr2-lonely-hopinion.drv
  13. 3.62 s Building /nix/store/am2dimhivhmjrd7yn6si2qgsvyiyzn3a-thing-gen-hopinion.drv
  14. 3.69 s Building /nix/store/v2v9mwh3b81zzz8a6vrg3hq61f55295d-thing-hopinion.drv
  15. 3.78 s [thing-gen-hopinion:post-build] Uploading to the NixCI staging cache: /nix/store/ah3777gn13nznxcxbadpfizjc5dmxgga-thing-gen-hopinion
  16. 3.82 s [thing-gen-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  17. 3.83 s [thing-gen-hopinion:post-build] copying 1 paths...
  18. 3.83 s [thing-gen-hopinion:post-build] copying path '/nix/store/ah3777gn13nznxcxbadpfizjc5dmxgga-thing-gen-hopinion' to 'https://cache.staging.nix-ci.com'...
  19. 3.96 s [thing-gen-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  20. 4.09 s [thing-gen-hopinion:post-build] copying 0 paths...
  21. 4.11 s Uploaded thing-gen-hopinion in 341ms
  22. 4.11 s Progress: 1 of 10 built (5 building), 2 of 2 downloaded from cache
  23. 4.11 s Built thing-gen-hopinion in 563ms
  24. 4.11 s [lonely-hopinion] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  25. 4.11 s [lonely-hopinion] ╭──▶ lonely/src/Lonely.hs@8:1-8:25
  26. 4.11 s [lonely-hopinion] │
  27. 4.11 s [lonely-hopinion] 8 │ instance GenValid Orphan
  28. 4.11 s [lonely-hopinion] • ┬───────────────────────
  29. 4.11 s [lonely-hopinion] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  30. 4.11 s [lonely-hopinion] •
  31. 4.11 s [lonely-hopinion] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  32. 4.11 s [lonely-hopinion] │ Hint: To suppress, write this directly above line 8 of lonely/src/Lonely.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  33. 4.11 s [lonely-hopinion] ─────╯
  34. 4.11 s [lonely-hopinion] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  35. 4.11 s [lonely-hopinion] ╭──▶ lonely/src/Lonely.hs@8:1-8:25
  36. 4.11 s [lonely-hopinion] │
  37. 4.11 s [lonely-hopinion] 8 │ instance GenValid Orphan
  38. 4.11 s [lonely-hopinion] • ┬───────────────────────
  39. 4.11 s [lonely-hopinion] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  40. 4.11 s [lonely-hopinion] •
  41. 4.11 s [lonely-hopinion] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  42. 4.11 s [lonely-hopinion] │ Hint: To suppress, write this directly above line 8 of lonely/src/Lonely.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  43. 4.11 s [lonely-hopinion] ─────╯
  44. 4.22 s [thing-gen-hopinion:post-build] Uploading to the NixCI staging cache: /nix/store/8i90s3y3mm31clmx46wllqf1bvyz8jzh-thing-gen-hopinion
  45. 4.26 s [thing-gen-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  46. 4.27 s [thing-gen-hopinion:post-build] copying 1 paths...
  47. 4.27 s [thing-gen-hopinion:post-build] copying path '/nix/store/8i90s3y3mm31clmx46wllqf1bvyz8jzh-thing-gen-hopinion' to 'https://cache.staging.nix-ci.com'...
  48. 4.39 s [thing-gen-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  49. 4.53 s [thing-gen-hopinion:post-build] copying 0 paths...
  50. 4.56 s Uploaded thing-gen-hopinion in 346ms
  51. 4.56 s Progress: 2 of 10 built (4 building), 2 of 2 downloaded from cache
  52. 4.56 s Built thing-gen-hopinion in 940ms
  53. 4.56 s [thing-hopinion] [error CommentBareTodo]: A bare TODO. Reference an issue or a URL, or do it.
  54. 4.56 s [thing-hopinion] ╭──▶ thing/src/Thing.hs@3:1-3:58
  55. 4.56 s [thing-hopinion] │
  56. 4.56 s [thing-hopinion] 3 │ -- TODO a bare marker, which is the module-level finding.
  57. 4.56 s [thing-hopinion] • ┬────────────────────────────────────────────────────────
  58. 4.56 s [thing-hopinion] • ╰╸ A TODO needs an issue reference or a URL saying where the follow-up is tracked.
  59. 4.56 s [thing-hopinion] •
  60. 4.56 s [thing-hopinion] │ Note: A TODO nothing points at is a note nobody is holding. It reads like a plan, so the next reader assumes it is one, and it goes stale in place because nothing brings it back up. A reference makes it findable from wherever the work is actually tracked; doing it makes the note unnecessary. If it is neither tracked nor worth doing, the honest version is a comment that says what is missing and what would make it worth doing.
  61. 4.56 s [thing-hopinion] │ Hint: To suppress, write this directly above line 4 of thing/src/Thing.hs, and say why: -- [allow:CommentBareTodo] <reason>
  62. 4.56 s [thing-hopinion] ─────╯
  63. 4.56 s [thing-hopinion]
  64. 4.56 s [thing-hopinion] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  65. 4.56 s [thing-hopinion] ╭──▶ thing/src/Thing.hs@9:1-9:25
  66. 4.56 s [thing-hopinion] │
  67. 4.56 s [thing-hopinion] 9 │ instance GenValid Widget
  68. 4.56 s [thing-hopinion] • ┬───────────────────────
  69. 4.56 s [thing-hopinion] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  70. 4.56 s [thing-hopinion] •
  71. 4.56 s [thing-hopinion] [error CommentBareTodo]: A bare TODO. Reference an issue or a URL, or do it.
  72. 4.56 s [thing-hopinion] ╭──▶ thing/src/Thing.hs@3:1-3:58
  73. 4.56 s [thing-hopinion] │
  74. 4.56 s [thing-hopinion] 3 │ -- TODO a bare marker, which is the module-level finding.
  75. 4.56 s [thing-hopinion] • ┬────────────────────────────────────────────────────────
  76. 4.56 s [thing-hopinion] • ╰╸ A TODO needs an issue reference or a URL saying where the follow-up is tracked.
  77. 4.56 s [thing-hopinion] •
  78. 4.56 s [thing-hopinion] │ Note: A TODO nothing points at is a note nobody is holding. It reads like a plan, so the next reader assumes it is one, and it goes stale in place because nothing brings it back up. A reference makes it findable from wherever the work is actually tracked; doing it makes the note unnecessary. If it is neither tracked nor worth doing, the honest version is a comment that says what is missing and what would make it worth doing.
  79. 4.56 s [thing-hopinion] │ Hint: To suppress, write this directly above line 4 of thing/src/Thing.hs, and say why: -- [allow:CommentBareTodo] <reason>
  80. 4.56 s [thing-hopinion] ─────╯
  81. 4.56 s [thing-hopinion]
  82. 4.56 s [thing-hopinion] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  83. 4.56 s [thing-hopinion] ╭──▶ thing/src/Thing.hs@9:1-9:25
  84. 4.56 s [thing-hopinion] │
  85. 4.56 s [thing-hopinion] 9 │ instance GenValid Widget
  86. 4.56 s [thing-hopinion] • ┬───────────────────────
  87. 4.56 s [thing-hopinion] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  88. 4.56 s [thing-hopinion] •
  89. 4.73 s [lonely-hopinion:post-build] Uploading to the NixCI staging cache: /nix/store/vw87c5fii9q92k5px89x5gg47hjljbjw-lonely-hopinion
  90. 4.78 s [lonely-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  91. 4.79 s [lonely-hopinion:post-build] copying 1 paths...
  92. 4.79 s [lonely-hopinion:post-build] copying path '/nix/store/vw87c5fii9q92k5px89x5gg47hjljbjw-lonely-hopinion' to 'https://cache.staging.nix-ci.com'...
  93. 4.93 s [lonely-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  94. 5.06 s [lonely-hopinion:post-build] copying 0 paths...
  95. 5.08 s Uploaded lonely-hopinion in 357ms
  96. 5.08 s Progress: 3 of 10 built (3 building), 2 of 2 downloaded from cache
  97. 5.08 s Built lonely-hopinion in 1.4s
  98. 5.11 s [lonely-hopinion:post-build] Uploading to the NixCI staging cache: /nix/store/gc99sfmnb1ri0zdxshicvf0nvi5pfcb6-lonely-hopinion
  99. 5.16 s [lonely-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  100. 5.16 s [lonely-hopinion:post-build] copying 1 paths...
  101. 5.16 s [lonely-hopinion:post-build] copying path '/nix/store/gc99sfmnb1ri0zdxshicvf0nvi5pfcb6-lonely-hopinion' to 'https://cache.staging.nix-ci.com'...
  102. 5.29 s [lonely-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  103. 5.44 s [lonely-hopinion:post-build] copying 0 paths...
  104. 5.47 s Uploaded lonely-hopinion in 366ms
  105. 5.47 s Progress: 4 of 11 built (2 building), 2 of 2 downloaded from cache
  106. 5.47 s Built lonely-hopinion in 1.9s
  107. 5.47 s [thing-hopinion] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  108. 5.47 s [thing-hopinion] │ Hint: To suppress, write this directly above line 9 of thing/src/Thing.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  109. 5.47 s [thing-hopinion] ─────╯
  110. 5.47 s [thing-hopinion] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  111. 5.47 s [thing-hopinion] │ Hint: To suppress, write this directly above line 9 of thing/src/Thing.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  112. 5.47 s [thing-hopinion] ─────╯
  113. 5.47 s [thing-hopinion]
  114. 5.47 s [thing-hopinion] [error ExampleNoShouting]: A comment in capitals.
  115. 5.47 s [thing-hopinion] ╭──▶ thing/src/Thing.hs@16:1-16:42
  116. 5.47 s [thing-hopinion] │
  117. 5.47 s [thing-hopinion] 16 │ -- SHOUTING, WHICH NO SHIPPED RULE MINDS.
  118. 5.47 s [thing-hopinion] • ┬────────────────────────────────────────
  119. 5.47 s [thing-hopinion] • ╰╸ A comment in this repository is not written in capitals.
  120. 5.47 s [thing-hopinion] •
  121. 5.47 s [thing-hopinion] │ Note: There is no standard about this and there does not need to be. It is here to be a rule that hopinion does not ship, so that a repository adding one of its own can be watched doing it.
  122. 5.47 s [thing-hopinion] │ Hint: To suppress, write this directly above line 17 of thing/src/Thing.hs, and say why: -- [allow:ExampleNoShouting] <reason>
  123. 5.47 s [thing-hopinion] ─────╯
  124. 5.57 s [thing-hopinion:post-build] Uploading to the NixCI staging cache: /nix/store/zqqkkpjnlfvd91sv8hx1xcq45kbr2vza-thing-hopinion
  125. 5.61 s [thing-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  126. 5.61 s [thing-hopinion:post-build] copying 1 paths...
  127. 5.61 s [thing-hopinion:post-build] copying path '/nix/store/zqqkkpjnlfvd91sv8hx1xcq45kbr2vza-thing-hopinion' to 'https://cache.staging.nix-ci.com'...
  128. 5.76 s [thing-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  129. 5.90 s [thing-hopinion:post-build] copying 0 paths...
  130. 5.93 s Uploaded thing-hopinion in 366ms
  131. 5.93 s Progress: 5 of 10 built (1 building), 2 of 2 downloaded from cache
  132. 5.93 s Built thing-hopinion in 2.3s
  133. 5.95 s [thing-hopinion:post-build] Uploading to the NixCI staging cache: /nix/store/gg1n7gf40rgacxb4zdsjnxf29jdiy7la-thing-hopinion
  134. 6.00 s [thing-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  135. 6.00 s [thing-hopinion:post-build] copying 1 paths...
  136. 6.00 s [thing-hopinion:post-build] copying path '/nix/store/gg1n7gf40rgacxb4zdsjnxf29jdiy7la-thing-hopinion' to 'https://cache.staging.nix-ci.com'...
  137. 6.14 s [thing-hopinion:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  138. 6.30 s [thing-hopinion:post-build] copying 0 paths...
  139. 6.32 s Uploaded thing-hopinion in 374ms
  140. 6.32 s Progress: 6 of 11 built, 2 of 2 downloaded from cache
  141. 6.32 s Built thing-hopinion in 2.6s
  142. 6.35 s Building /nix/store/d8mz2csd9hysvbncx5h5wqncwm404im8-hopinion-project.drv
  143. 6.37 s Building /nix/store/mgkki7pvm3zc1w3xp271mm8rzg4sqc82-hopinion-project.drv
  144. 6.46 s [hopinion-project] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  145. 6.46 s [hopinion-project] ╭──▶ lonely/src/Lonely.hs@8:1-8:25
  146. 6.46 s [hopinion-project] │
  147. 6.46 s [hopinion-project] 8 │ instance GenValid Orphan
  148. 6.47 s [hopinion-project] • ┬───────────────────────
  149. 6.47 s [hopinion-project] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  150. 6.47 s [hopinion-project] •
  151. 6.47 s [hopinion-project] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  152. 6.47 s [hopinion-project] │ Hint: To suppress, write this directly above line 8 of lonely/src/Lonely.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  153. 6.47 s [hopinion-project] ─────╯
  154. 6.47 s [hopinion-project]
  155. 6.47 s [hopinion-project] [error TestGenValidSpecPerGenValid]: No genValidSpec @Orphan anywhere, and there is no lonely-gen for it to be written in.
  156. 6.47 s [hopinion-project] ╭──▶ lonely/src/Lonely.hs@8:1-8:25
  157. 6.47 s [hopinion-project] │
  158. 6.47 s [hopinion-project] 8 │ instance GenValid Orphan
  159. 6.47 s [hopinion-project] • ┬───────────────────────
  160. 6.47 s [hopinion-project] • ╰╸ A GenValid instance creates an obligation: genValidSpec @T must be called in the test suite of that package's gen package.
  161. 6.47 s [hopinion-project] •
  162. 6.47 s [hopinion-project] │ Note: A generator nothing runs is a generator nobody has checked. genValid can produce values the type's own Validity instance rejects, and shrinkValid can shrink to them, and every property built on it inherits that quietly: the failures it reports are about values the code was never meant to see. genValidSpec asserts exactly the two things the instance promises, and it is one line. The spec belongs to the package that declares the instance, because a spec written next door disappears the day that other package stops mentioning the type.
  163. 6.47 s [hopinion-project] │ Hint: To suppress, write this directly above line 8 of lonely/src/Lonely.hs, and say why: -- [allow:TestGenValidSpecPerGenValid] <reason>
  164. 6.47 s [hopinion-project] ─────╯
  165. 6.47 s [hopinion-project]
  166. 6.47 s [hopinion-project] [error CommentBareTodo]: A bare TODO. Reference an issue or a URL, or do it.
  167. 6.47 s [hopinion-project] ╭──▶ thing/src/Thing.hs@3:1-3:58
  168. 6.47 s [hopinion-project] │
  169. 6.47 s [hopinion-project] 3 │ -- TODO a bare marker, which is the module-level finding.
  170. 6.47 s [hopinion-project] • ┬────────────────────────────────────────────────────────
  171. 6.47 s [hopinion-project] • ╰╸ A TODO needs an issue reference or a URL saying where the follow-up is tracked.
  172. 6.47 s [hopinion-project] •
  173. 6.47 s [hopinion-project] │ Note: A TODO nothing points at is a note nobody is holding. It reads like a plan, so the next reader assumes it is one, and it goes stale in place because nothing brings it back up. A reference makes it findable from wherever the work is actually tracked; doing it makes the note unnecessary. If it is neither tracked nor worth doing, the honest version is a comment that says what is missing and what would make it worth doing.
  174. 6.47 s [hopinion-project] │ Hint: To suppress, write this directly above line 4 of thing/src/Thing.hs, and say why: -- [allow:CommentBareTodo] <reason>
  175. 6.47 s [hopinion-project] ─────╯
  176. 6.47 s [hopinion-project]
  177. 6.47 s [hopinion-project] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  178. 6.47 s [hopinion-project] ╭──▶ thing/src/Thing.hs@9:1-9:25
  179. 6.47 s [hopinion-project] │
  180. 6.47 s [hopinion-project] 9 │ instance GenValid Widget
  181. 6.47 s [hopinion-project] • ┬───────────────────────
  182. 6.47 s [hopinion-project] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  183. 6.47 s [hopinion-project] •
  184. 6.47 s [hopinion-project] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  185. 6.47 s [hopinion-project] │ Hint: To suppress, write this directly above line 9 of thing/src/Thing.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  186. 6.47 s [hopinion-project] ─────╯
  187. 6.47 s [hopinion-project]
  188. 6.47 s [hopinion-project] [error TestGenValidSpecPerGenValid]: No genValidSpec @Widget anywhere in thing-gen's test suite.
  189. 6.47 s [hopinion-project] ╭──▶ thing/src/Thing.hs@9:1-9:25
  190. 6.47 s [hopinion-project] │
  191. 6.47 s [hopinion-project] 9 │ instance GenValid Widget
  192. 6.47 s [hopinion-project] • ┬───────────────────────
  193. 6.47 s [hopinion-project] • ╰╸ A GenValid instance creates an obligation: genValidSpec @T must be called in the test suite of that package's gen package.
  194. 6.47 s [hopinion-project] •
  195. 6.47 s [hopinion-project] │ Note: A generator nothing runs is a generator nobody has checked. genValid can produce values the type's own Validity instance rejects, and shrinkValid can shrink to them, and every property built on it inherits that quietly: the failures it reports are about values the code was never meant to see. genValidSpec asserts exactly the two things the instance promises, and it is one line. The spec belongs to the package that declares the instance, because a spec written next door disappears the day that other package stops mentioning the type.
  196. 6.47 s [hopinion-project] │ Hint: To suppress, write this directly above line 9 of thing/src/Thing.hs, and say why: -- [allow:TestGenValidSpecPerGenValid] <reason>
  197. 6.47 s [hopinion-project] ─────╯
  198. 6.54 s [hopinion-project] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  199. 6.54 s [hopinion-project] ╭──▶ lonely/src/Lonely.hs@8:1-8:25
  200. 6.54 s [hopinion-project] │
  201. 6.54 s [hopinion-project] 8 │ instance GenValid Orphan
  202. 6.54 s [hopinion-project] • ┬───────────────────────
  203. 6.54 s [hopinion-project] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  204. 6.54 s [hopinion-project] •
  205. 6.54 s [hopinion-project] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  206. 6.54 s [hopinion-project] │ Hint: To suppress, write this directly above line 8 of lonely/src/Lonely.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  207. 6.54 s [hopinion-project] ─────╯
  208. 6.54 s [hopinion-project]
  209. 6.54 s [hopinion-project] [error TestGenValidSpecPerGenValid]: No genValidSpec @Orphan anywhere, and there is no lonely-gen for it to be written in.
  210. 6.54 s [hopinion-project] ╭──▶ lonely/src/Lonely.hs@8:1-8:25
  211. 6.54 s [hopinion-project] │
  212. 6.54 s [hopinion-project] 8 │ instance GenValid Orphan
  213. 6.54 s [hopinion-project] • ┬───────────────────────
  214. 6.54 s [hopinion-project] • ╰╸ A GenValid instance creates an obligation: genValidSpec @T must be called in the test suite of that package's gen package.
  215. 6.54 s [hopinion-project] •
  216. 6.54 s [hopinion-project] │ Note: A generator nothing runs is a generator nobody has checked. genValid can produce values the type's own Validity instance rejects, and shrinkValid can shrink to them, and every property built on it inherits that quietly: the failures it reports are about values the code was never meant to see. genValidSpec asserts exactly the two things the instance promises, and it is one line. The spec belongs to the package that declares the instance, because a spec written next door disappears the day that other package stops mentioning the type.
  217. 6.54 s [hopinion-project] │ Hint: To suppress, write this directly above line 8 of lonely/src/Lonely.hs, and say why: -- [allow:TestGenValidSpecPerGenValid] <reason>
  218. 6.54 s [hopinion-project] ─────╯
  219. 6.54 s [hopinion-project]
  220. 6.54 s [hopinion-project] [error CommentBareTodo]: A bare TODO. Reference an issue or a URL, or do it.
  221. 6.54 s [hopinion-project] ╭──▶ thing/src/Thing.hs@3:1-3:58
  222. 6.54 s [hopinion-project] │
  223. 6.54 s [hopinion-project] 3 │ -- TODO a bare marker, which is the module-level finding.
  224. 6.54 s [hopinion-project] • ┬────────────────────────────────────────────────────────
  225. 6.54 s [hopinion-project] • ╰╸ A TODO needs an issue reference or a URL saying where the follow-up is tracked.
  226. 6.54 s [hopinion-project] •
  227. 6.54 s [hopinion-project] │ Note: A TODO nothing points at is a note nobody is holding. It reads like a plan, so the next reader assumes it is one, and it goes stale in place because nothing brings it back up. A reference makes it findable from wherever the work is actually tracked; doing it makes the note unnecessary. If it is neither tracked nor worth doing, the honest version is a comment that says what is missing and what would make it worth doing.
  228. 6.54 s [hopinion-project] │ Hint: To suppress, write this directly above line 4 of thing/src/Thing.hs, and say why: -- [allow:CommentBareTodo] <reason>
  229. 6.54 s [hopinion-project] ─────╯
  230. 6.54 s [hopinion-project]
  231. 6.54 s [hopinion-project] [error HsGenValidInGenPackage]: A GenValid instance outside a -gen package.
  232. 6.54 s [hopinion-project] ╭──▶ thing/src/Thing.hs@9:1-9:25
  233. 6.54 s [hopinion-project] │
  234. 6.54 s [hopinion-project] 9 │ instance GenValid Widget
  235. 6.54 s [hopinion-project] • ┬───────────────────────
  236. 6.54 s [hopinion-project] • ╰╸ A GenValid instance in a package's own library gets compiled into the executable. Move it to the matching -gen package.
  237. 6.54 s [hopinion-project] •
  238. 6.54 s [hopinion-project] │ Note: A generator is test code, and an instance in the library is linked into everything that depends on the library, so the shipped executable carries QuickCheck and the generators with it. The -gen package exists so that dependency stops at the test suite, which is also what keeps a generator free to be as slow or as elaborate as the property needs.
  239. 6.54 s [hopinion-project] │ Hint: To suppress, write this directly above line 9 of thing/src/Thing.hs, and say why: -- [allow:HsGenValidInGenPackage] <reason>
  240. 6.54 s [hopinion-project] ─────╯
  241. 6.54 s [hopinion-project]
  242. 6.54 s [hopinion-project] [error TestGenValidSpecPerGenValid]: No genValidSpec @Widget anywhere in thing-gen's test suite.
  243. 6.54 s [hopinion-project] ╭──▶ thing/src/Thing.hs@9:1-9:25
  244. 6.54 s [hopinion-project] │
  245. 6.54 s [hopinion-project] 9 │ instance GenValid Widget
  246. 6.54 s [hopinion-project] • ┬───────────────────────
  247. 6.54 s [hopinion-project] • ╰╸ A GenValid instance creates an obligation: genValidSpec @T must be called in the test suite of that package's gen package.
  248. 6.54 s [hopinion-project] •
  249. 6.54 s [hopinion-project] │ Note: A generator nothing runs is a generator nobody has checked. genValid can produce values the type's own Validity instance rejects, and shrinkValid can shrink to them, and every property built on it inherits that quietly: the failures it reports are about values the code was never meant to see. genValidSpec asserts exactly the two things the instance promises, and it is one line. The spec belongs to the package that declares the instance, because a spec written next door disappears the day that other package stops mentioning the type.
  250. 6.54 s [hopinion-project] │ Hint: To suppress, write this directly above line 9 of thing/src/Thing.hs, and say why: -- [allow:TestGenValidSpecPerGenValid] <reason>
  251. 6.54 s [hopinion-project] ─────╯
  252. 6.54 s [hopinion-project]
  253. 6.54 s [hopinion-project] [error ExampleNoShouting]: A comment in capitals.
  254. 6.54 s [hopinion-project] ╭──▶ thing/src/Thing.hs@16:1-16:42
  255. 6.54 s [hopinion-project] │
  256. 6.54 s [hopinion-project] 16 │ -- SHOUTING, WHICH NO SHIPPED RULE MINDS.
  257. 6.54 s [hopinion-project] • ┬────────────────────────────────────────
  258. 6.54 s [hopinion-project] • ╰╸ A comment in this repository is not written in capitals.
  259. 6.54 s [hopinion-project] •
  260. 6.59 s [hopinion-project] │ Note: There is no standard about this and there does not need to be. It is here to be a rule that hopinion does not ship, so that a repository adding one of its own can be watched doing it.
  261. 6.59 s [hopinion-project] │ Hint: To suppress, write this directly above line 17 of thing/src/Thing.hs, and say why: -- [allow:ExampleNoShouting] <reason>
  262. 6.59 s [hopinion-project] ─────╯
  263. 6.99 s [hopinion-project:post-build] Uploading to the NixCI staging cache: /nix/store/8yn3sd3g641qgv74c1b5ifqcn261j078-hopinion-project
  264. 7.03 s [hopinion-project:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  265. 7.04 s [hopinion-project:post-build] copying 1 paths...
  266. 7.04 s [hopinion-project:post-build] copying path '/nix/store/8yn3sd3g641qgv74c1b5ifqcn261j078-hopinion-project' to 'https://cache.staging.nix-ci.com'...
  267. 7.17 s [hopinion-project:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  268. 7.32 s [hopinion-project:post-build] copying 0 paths...
  269. 7.35 s Uploaded hopinion-project in 368ms
  270. 7.35 s Progress: 7 of 10 built (1 building), 2 of 2 downloaded from cache
  271. 7.35 s Built hopinion-project in 973ms
  272. 7.38 s [hopinion-project:post-build] Uploading to the NixCI staging cache: /nix/store/f4a27srjxa4yqy3qf3r1aqj74hkw36i3-hopinion-project
  273. 7.44 s [hopinion-project:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  274. 7.44 s [hopinion-project:post-build] copying 1 paths...
  275. 7.44 s [hopinion-project:post-build] copying path '/nix/store/f4a27srjxa4yqy3qf3r1aqj74hkw36i3-hopinion-project' to 'https://cache.staging.nix-ci.com'...
  276. 7.56 s [hopinion-project:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  277. 7.68 s [hopinion-project:post-build] copying 0 paths...
  278. 7.71 s Uploaded hopinion-project in 337ms
  279. 7.71 s Progress: 8 of 10 built, 2 of 2 downloaded from cache
  280. 7.71 s Built hopinion-project in 1.3s
  281. 7.74 s Building /nix/store/wmb9ngkwsxbph60cl47080d0xl4jlfcs-e2e-added-rule-is-run.drv
  282. 7.79 s [e2e-added-rule-is-run:post-build] Uploading to the NixCI staging cache: /nix/store/iq15sm6cidpw0ajlbpl0ijjc81pyfmz1-e2e-added-rule-is-run
  283. 7.85 s [e2e-added-rule-is-run:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  284. 7.86 s [e2e-added-rule-is-run:post-build] copying 1 paths...
  285. 7.86 s [e2e-added-rule-is-run:post-build] copying path '/nix/store/iq15sm6cidpw0ajlbpl0ijjc81pyfmz1-e2e-added-rule-is-run' to 'https://cache.staging.nix-ci.com'...
  286. 7.99 s [e2e-added-rule-is-run:post-build] warning: 'warn-short-path-literals' is deprecated, use 'lint-short-path-literals = ignore' instead
  287. 8.15 s [e2e-added-rule-is-run:post-build] copying 0 paths...
  288. 8.18 s Uploaded e2e-added-rule-is-run in 397ms
  289. 8.18 s Progress: 9 of 10 built, 2 of 2 downloaded from cache
  290. 8.18 s Built e2e-added-rule-is-run in 440ms
  291. 8.18 s Progress: 10 of 10 built, 2 of 2 downloaded from cache
  292. 8.18 s /nix/store/iq15sm6cidpw0ajlbpl0ijjc81pyfmz1-e2e-added-rule-is-run
  293. 8.23 s Build succeeded.