@afokapu/atdd-bun 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (876) hide show
  1. package/HOOK_AUDIT.md +22 -0
  2. package/PLANNER_PORT.md +55 -0
  3. package/README.md +256 -0
  4. package/bunfig.toml +2 -0
  5. package/conventions/coder.bun/coder.bun.boundaries-http-client.convention.yaml +43 -0
  6. package/conventions/coder.bun/coder.bun.commons-application-no-integration.convention.yaml +40 -0
  7. package/conventions/coder.bun/coder.bun.commons-cross-feature-imports-in.convention.yaml +39 -0
  8. package/conventions/coder.bun/coder.bun.commons-domain-no-framework-import.convention.yaml +40 -0
  9. package/conventions/coder.bun/coder.bun.commons-domain-no-outbound.convention.yaml +41 -0
  10. package/conventions/coder.bun/coder.bun.complexity-cyclomatic.convention.yaml +51 -0
  11. package/conventions/coder.bun/coder.bun.complexity-length.convention.yaml +43 -0
  12. package/conventions/coder.bun/coder.bun.complexity-nesting.convention.yaml +49 -0
  13. package/conventions/coder.bun/coder.bun.composition-consumer.convention.yaml +40 -0
  14. package/conventions/coder.bun/coder.bun.composition-root.convention.yaml +42 -0
  15. package/conventions/coder.bun/coder.bun.dead-code-reachability.convention.yaml +49 -0
  16. package/conventions/coder.bun/coder.bun.design-hierarchy-import.convention.yaml +42 -0
  17. package/conventions/coder.bun/coder.bun.dto-mapper.convention.yaml +38 -0
  18. package/conventions/coder.bun/coder.bun.dto-placement.convention.yaml +39 -0
  19. package/conventions/coder.bun/coder.bun.dto-purity.convention.yaml +40 -0
  20. package/conventions/coder.bun/coder.bun.duplication-intra-layer.convention.yaml +47 -0
  21. package/conventions/coder.bun/coder.bun.error-response-bare-string.convention.yaml +47 -0
  22. package/conventions/coder.bun/coder.bun.error-response-code-format.convention.yaml +46 -0
  23. package/conventions/coder.bun/coder.bun.green-header-order.convention.yaml +61 -0
  24. package/conventions/coder.bun/coder.bun.green-header-purpose.convention.yaml +55 -0
  25. package/conventions/coder.bun/coder.bun.green-header-runtime.convention.yaml +56 -0
  26. package/conventions/coder.bun/coder.bun.green-header-tested-by.convention.yaml +63 -0
  27. package/conventions/coder.bun/coder.bun.green-urn-layer.convention.yaml +53 -0
  28. package/conventions/coder.bun/coder.bun.green-urn-marker.convention.yaml +67 -0
  29. package/conventions/coder.bun/coder.bun.green-urn-name-matches.convention.yaml +57 -0
  30. package/conventions/coder.bun/coder.bun.green-urn-pattern.convention.yaml +56 -0
  31. package/conventions/coder.bun/coder.bun.green-urn-side.convention.yaml +54 -0
  32. package/conventions/coder.bun/coder.bun.green-urn-wagon-feature.convention.yaml +56 -0
  33. package/conventions/coder.bun/coder.bun.interlocking-bilateral-binding.convention.yaml +132 -0
  34. package/conventions/coder.bun/coder.bun.interlocking-delegates-to-trainrunner.convention.yaml +56 -0
  35. package/conventions/coder.bun/coder.bun.interlocking-does-not-carry-cargo.convention.yaml +53 -0
  36. package/conventions/coder.bun/coder.bun.interlocking-resolution-model-exists.convention.yaml +61 -0
  37. package/conventions/coder.bun/coder.bun.interlocking-runner-exists.convention.yaml +64 -0
  38. package/conventions/coder.bun/coder.bun.journey-runner-boundary.convention.yaml +55 -0
  39. package/conventions/coder.bun/coder.bun.layer-naming.convention.yaml +41 -0
  40. package/conventions/coder.bun/coder.bun.logging-console.convention.yaml +47 -0
  41. package/conventions/coder.bun/coder.bun.logging-structured.convention.yaml +49 -0
  42. package/conventions/coder.bun/coder.bun.quality-comments.convention.yaml +44 -0
  43. package/conventions/coder.bun/coder.bun.quality-mi.convention.yaml +47 -0
  44. package/conventions/coder.bun/coder.bun.runtime-executes-the-declaration.convention.yaml +104 -0
  45. package/conventions/coder.bun/coder.bun.runtime-server-is-bun-serve.convention.yaml +64 -0
  46. package/conventions/coder.bun/coder.bun.runtime-single-lockfile.convention.yaml +56 -0
  47. package/conventions/coder.bun/coder.bun.runtime-typecheck-enforced.convention.yaml +91 -0
  48. package/conventions/coder.bun/coder.bun.security-hardcoded-secret.convention.yaml +50 -0
  49. package/conventions/coder.bun/coder.bun.security-missing-auth.convention.yaml +53 -0
  50. package/conventions/coder.bun/coder.bun.security-sql-injection.convention.yaml +54 -0
  51. package/conventions/coder.bun/coder.bun.station-master-interlocking-routing.convention.yaml +62 -0
  52. package/conventions/coder.bun/coder.bun.station-master-journey-routing.convention.yaml +49 -0
  53. package/conventions/coder.bun/coder.bun.wagon-honours-its-contract.convention.yaml +64 -0
  54. package/conventions/coder.htmx/coder.htmx.fragment-escapes-interpolation.convention.yaml +72 -0
  55. package/conventions/coder.htmx/coder.htmx.swap-no-inline-handler.convention.yaml +59 -0
  56. package/conventions/coder.htmx/coder.htmx.swap-oob-carries-id.convention.yaml +56 -0
  57. package/conventions/coder.htmx/coder.htmx.verb-destructive-confirms.convention.yaml +56 -0
  58. package/conventions/coder.htmx/coder.htmx.verb-endpoint-is-routed.convention.yaml +73 -0
  59. package/conventions/coder.htmx/coder.htmx.verb-endpoint-same-origin.convention.yaml +58 -0
  60. package/conventions/coder.htmx/coder.htmx.verb-mutation-signals-progress.convention.yaml +59 -0
  61. package/conventions/planner.docs/planner.docs.adr-registry-derived.convention.yaml +83 -0
  62. package/conventions/planner.docs/planner.docs.area-index-required.convention.yaml +67 -0
  63. package/conventions/planner.docs/planner.docs.artifact-path-shape.convention.yaml +82 -0
  64. package/conventions/planner.docs/planner.docs.asciidoc-only.convention.yaml +71 -0
  65. package/conventions/planner.docs/planner.docs.doc-id-unique.convention.yaml +65 -0
  66. package/conventions/planner.docs/planner.docs.graph-target-resolves.convention.yaml +87 -0
  67. package/conventions/planner.docs/planner.docs.identity-required.convention.yaml +68 -0
  68. package/conventions/planner.docs/planner.docs.reference-integrity.convention.yaml +74 -0
  69. package/conventions/planner.docs/planner.docs.undeclared-change.convention.yaml +80 -0
  70. package/conventions/tester.bun/tester.bun.acceptance-binding-declared.convention.yaml +49 -0
  71. package/conventions/tester.bun/tester.bun.acceptance-covers-tag-well-formed.convention.yaml +50 -0
  72. package/conventions/tester.bun/tester.bun.acceptance-resolves-to-declared.convention.yaml +61 -0
  73. package/conventions/tester.bun/tester.bun.interlocking-production-runner-used.convention.yaml +76 -0
  74. package/conventions/tester.bun/tester.bun.interlocking-route-coverage.convention.yaml +66 -0
  75. package/conventions/tester.bun/tester.bun.interlocking-smoke-coverage-for-station-master.convention.yaml +76 -0
  76. package/conventions/tester.bun/tester.bun.interlocking-trace-binds-declared-route.convention.yaml +74 -0
  77. package/conventions/tester.bun/tester.bun.interlocking-train-sequence-is-exercised.convention.yaml +77 -0
  78. package/conventions/tester.bun/tester.bun.red-behavioral-assertion.convention.yaml +51 -0
  79. package/conventions/tester.bun/tester.bun.red-fails-first.convention.yaml +52 -0
  80. package/conventions/tester.bun/tester.bun.routing-runtime-family.convention.yaml +41 -0
  81. package/conventions/tester.bun/tester.bun.security-auth.convention.yaml +46 -0
  82. package/conventions/tester.bun/tester.bun.security-input.convention.yaml +45 -0
  83. package/conventions/tester.bun/tester.bun.smoke-no-collaborator-substitution.convention.yaml +45 -0
  84. package/conventions/tester.bun/tester.bun.smoke-observable-assertion.convention.yaml +54 -0
  85. package/conventions/tester.bun/tester.bun.telemetry-emit.convention.yaml +46 -0
  86. package/conventions/tester.bun/tester.bun.test-carries-urn-identity.convention.yaml +51 -0
  87. package/conventions/tester.bun/tester.bun.test-imports-bun-test.convention.yaml +55 -0
  88. package/conventions/tester.bun/tester.bun.test-isolation-no-live-state.convention.yaml +50 -0
  89. package/conventions/tester.bun/tester.bun.test-no-self-skip.convention.yaml +46 -0
  90. package/conventions/tester.bun/tester.bun.test-phase-declared.convention.yaml +45 -0
  91. package/conventions/tester.htmx/tester.htmx.fragment-asserts-returned-markup.convention.yaml +52 -0
  92. package/conventions/tester.htmx/tester.htmx.swap-oob-asserts-destination-id.convention.yaml +48 -0
  93. package/conventions/tester.htmx/tester.htmx.verb-endpoint-coverage.convention.yaml +54 -0
  94. package/conventions/traceability/traceability.plan.executable-acceptance-has-test.convention.yaml +2 -0
  95. package/conventions/traceability/traceability.source.tested-by-present.convention.yaml +2 -0
  96. package/conventions/traceability/traceability.source.tested-by-resolves.convention.yaml +2 -0
  97. package/conventions/traceability/traceability.test.binding-resolves.convention.yaml +2 -0
  98. package/detectors/atdd_traceability_closure/atdd.implementation.yaml +8 -0
  99. package/detectors/atdd_traceability_closure/detect.mjs +84 -0
  100. package/detectors/atdd_traceability_closure/fixtures/clean/plan/orders/E001.yaml +4 -0
  101. package/detectors/atdd_traceability_closure/fixtures/clean/src/order.ts +4 -0
  102. package/detectors/atdd_traceability_closure/fixtures/clean/test/order.test.ts +4 -0
  103. package/detectors/atdd_traceability_closure/fixtures/dirty/plan/orders/E001.yaml +6 -0
  104. package/detectors/atdd_traceability_closure/fixtures/dirty/src/missing-test.ts +2 -0
  105. package/detectors/atdd_traceability_closure/fixtures/dirty/src/unknown-test.ts +4 -0
  106. package/detectors/atdd_traceability_closure/fixtures/dirty/test/bad-binding.test.ts +4 -0
  107. package/detectors/atdd_traceability_closure/fixtures/dirty/test/no-binding.test.ts +3 -0
  108. package/detectors/bun_clean_architecture_detector/atdd.implementation.yaml +42 -0
  109. package/detectors/bun_clean_architecture_detector/checks/_map.json +14 -0
  110. package/detectors/bun_clean_architecture_detector/checks/a_boundaries_http_client.mjs +36 -0
  111. package/detectors/bun_clean_architecture_detector/checks/a_commons_application_no_integration.mjs +37 -0
  112. package/detectors/bun_clean_architecture_detector/checks/a_commons_cross_feature.mjs +41 -0
  113. package/detectors/bun_clean_architecture_detector/checks/a_commons_domain_no_outbound.mjs +40 -0
  114. package/detectors/bun_clean_architecture_detector/checks/a_composition_consumer.mjs +33 -0
  115. package/detectors/bun_clean_architecture_detector/checks/a_composition_root.mjs +35 -0
  116. package/detectors/bun_clean_architecture_detector/checks/a_domain_no_framework.mjs +47 -0
  117. package/detectors/bun_clean_architecture_detector/checks/a_dto_mapper.mjs +31 -0
  118. package/detectors/bun_clean_architecture_detector/checks/a_dto_placement.mjs +30 -0
  119. package/detectors/bun_clean_architecture_detector/checks/a_dto_purity.mjs +59 -0
  120. package/detectors/bun_clean_architecture_detector/checks/a_hierarchy_import.mjs +48 -0
  121. package/detectors/bun_clean_architecture_detector/checks/a_layer_naming.mjs +41 -0
  122. package/detectors/bun_clean_architecture_detector/detect.mjs +46 -0
  123. package/detectors/bun_clean_architecture_detector/fixtures/clean/contracts/order.ts +5 -0
  124. package/detectors/bun_clean_architecture_detector/fixtures/clean/features/orders/application/place.ts +3 -0
  125. package/detectors/bun_clean_architecture_detector/fixtures/clean/features/orders/composition.ts +4 -0
  126. package/detectors/bun_clean_architecture_detector/fixtures/clean/features/orders/domain/total.ts +2 -0
  127. package/detectors/bun_clean_architecture_detector/fixtures/clean/features/orders/integration/order-mapper.ts +3 -0
  128. package/detectors/bun_clean_architecture_detector/fixtures/clean/features/orders/presentation/api.ts +3 -0
  129. package/detectors/bun_clean_architecture_detector/fixtures/dirty/commons/application/flow.ts +2 -0
  130. package/detectors/bun_clean_architecture_detector/fixtures/dirty/commons/domain/billing/rules.ts +1 -0
  131. package/detectors/bun_clean_architecture_detector/fixtures/dirty/commons/domain/orders/rules.ts +5 -0
  132. package/detectors/bun_clean_architecture_detector/fixtures/dirty/commons/integration/http.ts +1 -0
  133. package/detectors/bun_clean_architecture_detector/fixtures/dirty/features/billing/application/pay.ts +2 -0
  134. package/detectors/bun_clean_architecture_detector/fixtures/dirty/features/billing/domain/rules.ts +2 -0
  135. package/detectors/bun_clean_architecture_detector/fixtures/dirty/features/billing/helper.ts +1 -0
  136. package/detectors/bun_clean_architecture_detector/fixtures/dirty/features/billing/integration/client.ts +1 -0
  137. package/detectors/bun_clean_architecture_detector/fixtures/dirty/features/billing/presentation/api.ts +2 -0
  138. package/detectors/bun_fullstack_detector/atdd.implementation.yaml +23 -0
  139. package/detectors/bun_fullstack_detector/checks/_map.json +5 -0
  140. package/detectors/bun_fullstack_detector/checks/bun_runtime_server_is_bun_serve.mjs +39 -0
  141. package/detectors/bun_fullstack_detector/checks/bun_runtime_single_lockfile.mjs +40 -0
  142. package/detectors/bun_fullstack_detector/checks/bun_runtime_typecheck_enforced.mjs +133 -0
  143. package/detectors/bun_fullstack_detector/detect.mjs +46 -0
  144. package/detectors/bun_fullstack_detector/fixtures/clean/bun_runtime_server_is_bun_serve/server.ts +7 -0
  145. package/detectors/bun_fullstack_detector/fixtures/clean/bun_runtime_single_lockfile/bun.lock +1 -0
  146. package/detectors/bun_fullstack_detector/fixtures/clean/bun_runtime_typecheck_enforced/package.json +5 -0
  147. package/detectors/bun_fullstack_detector/fixtures/clean/bun_runtime_typecheck_enforced/server.ts +3 -0
  148. package/detectors/bun_fullstack_detector/fixtures/clean/bun_runtime_typecheck_enforced/tsconfig.json +1 -0
  149. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_server_is_bun_serve/server.ts +5 -0
  150. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_single_lockfile/bun.lock +1 -0
  151. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_single_lockfile/package-lock.json +1 -0
  152. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_typecheck_enforced/package.json +4 -0
  153. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_typecheck_enforced/packages/second/index.ts +8 -0
  154. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_typecheck_enforced/packages/second/package.json +1 -0
  155. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_typecheck_enforced/server.ts +3 -0
  156. package/detectors/bun_fullstack_detector/fixtures/dirty/bun_runtime_typecheck_enforced/tsconfig.json +1 -0
  157. package/detectors/bun_green_traceability_detector/atdd.implementation.yaml +35 -0
  158. package/detectors/bun_green_traceability_detector/checks/_map.json +12 -0
  159. package/detectors/bun_green_traceability_detector/checks/green_header_order.mjs +24 -0
  160. package/detectors/bun_green_traceability_detector/checks/green_header_purpose.mjs +18 -0
  161. package/detectors/bun_green_traceability_detector/checks/green_header_runtime.mjs +25 -0
  162. package/detectors/bun_green_traceability_detector/checks/green_header_tested_by.mjs +15 -0
  163. package/detectors/bun_green_traceability_detector/checks/green_urn_layer.mjs +17 -0
  164. package/detectors/bun_green_traceability_detector/checks/green_urn_marker.mjs +18 -0
  165. package/detectors/bun_green_traceability_detector/checks/green_urn_name_matches.mjs +26 -0
  166. package/detectors/bun_green_traceability_detector/checks/green_urn_pattern.mjs +17 -0
  167. package/detectors/bun_green_traceability_detector/checks/green_urn_side.mjs +20 -0
  168. package/detectors/bun_green_traceability_detector/checks/green_urn_wagon_feature.mjs +20 -0
  169. package/detectors/bun_green_traceability_detector/detect.mjs +46 -0
  170. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_order/OrderPanel.html +7 -0
  171. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_order/OrderRow.ts +7 -0
  172. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_purpose/OrderPanel.html +7 -0
  173. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_purpose/OrderRow.ts +7 -0
  174. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_runtime/OrderPanel.html +7 -0
  175. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_runtime/OrderRow.ts +7 -0
  176. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_tested_by/OrderPanel.html +7 -0
  177. package/detectors/bun_green_traceability_detector/fixtures/clean/green_header_tested_by/OrderRow.ts +7 -0
  178. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_layer/OrderPanel.html +7 -0
  179. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_layer/OrderRow.ts +7 -0
  180. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_marker/OrderPanel.html +7 -0
  181. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_marker/OrderRow.ts +7 -0
  182. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_name_matches/OrderPanel.html +7 -0
  183. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_name_matches/OrderRow.ts +7 -0
  184. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_pattern/OrderPanel.html +7 -0
  185. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_pattern/OrderRow.ts +7 -0
  186. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_side/OrderPanel.html +7 -0
  187. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_side/OrderRow.ts +7 -0
  188. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_wagon_feature/OrderPanel.html +7 -0
  189. package/detectors/bun_green_traceability_detector/fixtures/clean/green_urn_wagon_feature/OrderRow.ts +7 -0
  190. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_header_order/OrderRow.ts +6 -0
  191. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_header_purpose/OrderRow.ts +5 -0
  192. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_header_runtime/OrderRow.ts +6 -0
  193. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_header_tested_by/OrderPanel.html +5 -0
  194. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_layer/OrderRow.ts +6 -0
  195. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_marker/OrderRow.ts +3 -0
  196. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_name_matches/OrderRow.ts +6 -0
  197. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_pattern/OrderRow.ts +6 -0
  198. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_side/OrderRow.ts +6 -0
  199. package/detectors/bun_green_traceability_detector/fixtures/dirty/green_urn_wagon_feature/OrderRow.ts +6 -0
  200. package/detectors/bun_green_traceability_detector/urn_header.mjs +191 -0
  201. package/detectors/bun_interlocking_binding/atdd.implementation.yaml +31 -0
  202. package/detectors/bun_interlocking_binding/checks/interlocking_runtime_executes.mjs +168 -0
  203. package/detectors/bun_interlocking_binding/detect.mjs +608 -0
  204. package/detectors/bun_interlocking_binding/fixtures/clean/e2e/interlockings/match-resolution/trace.test.ts +10 -0
  205. package/detectors/bun_interlocking_binding/fixtures/clean/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  206. package/detectors/bun_interlocking_binding/fixtures/clean/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  207. package/detectors/bun_interlocking_binding/fixtures/clean/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  208. package/detectors/bun_interlocking_binding/fixtures/clean/server.ts +19 -0
  209. package/detectors/bun_interlocking_binding/fixtures/clean/src/trains/interlocking.ts +66 -0
  210. package/detectors/bun_interlocking_binding/fixtures/clean/src/trains/runner.ts +7 -0
  211. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/e2e/interlockings/match-resolution/trace.test.ts +10 -0
  212. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/plan/_trains/_interlockings/match-resolution.yaml +57 -0
  213. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  214. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  215. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/server.ts +19 -0
  216. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/src/trains/interlocking.ts +28 -0
  217. package/detectors/bun_interlocking_binding/fixtures/clean_flow_style_actions/src/trains/runner.ts +7 -0
  218. package/detectors/bun_interlocking_binding/fixtures/dirty/e2e/interlockings/match-resolution/trace.test.ts +10 -0
  219. package/detectors/bun_interlocking_binding/fixtures/dirty/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  220. package/detectors/bun_interlocking_binding/fixtures/dirty/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  221. package/detectors/bun_interlocking_binding/fixtures/dirty/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  222. package/detectors/bun_interlocking_binding/fixtures/dirty/server.ts +19 -0
  223. package/detectors/bun_interlocking_binding/fixtures/dirty/src/trains/interlocking.ts +28 -0
  224. package/detectors/bun_interlocking_binding/fixtures/dirty/src/trains/runner.ts +7 -0
  225. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/e2e/interlockings/match-resolution/trace.test.ts +10 -0
  226. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/plan/_trains/_interlockings/match-resolution.yaml +54 -0
  227. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  228. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  229. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/server.ts +19 -0
  230. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/src/trains/interlocking.ts +28 -0
  231. package/detectors/bun_interlocking_binding/fixtures/dirty_parallel_field/src/trains/runner.ts +7 -0
  232. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/e2e/interlockings/match-resolution/trace.test.ts +10 -0
  233. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  234. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  235. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  236. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/server.ts +19 -0
  237. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/src/trains/interlocking.ts +28 -0
  238. package/detectors/bun_interlocking_binding/fixtures/dirty_station_missing/src/trains/runner.ts +7 -0
  239. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/e2e/interlockings/match-resolution/trace.test.ts +19 -0
  240. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  241. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  242. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  243. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/server.ts +19 -0
  244. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/src/trains/interlocking.ts +28 -0
  245. package/detectors/bun_interlocking_binding/fixtures/dirty_trace_unbound/src/trains/runner.ts +7 -0
  246. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/e2e/interlockings/match-resolution/trace.test.ts +10 -0
  247. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  248. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/plan/_trains/train:match:match-resolution-standard.yaml +4 -0
  249. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/plan/_trains/train:match:match-resolution-timeout.yaml +4 -0
  250. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/server.ts +19 -0
  251. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/src/trains/interlocking.ts +30 -0
  252. package/detectors/bun_interlocking_binding/fixtures/dirty_transcribed_runtime/src/trains/runner.ts +7 -0
  253. package/detectors/bun_interlocking_coverage/_shared/interlocking.mjs +389 -0
  254. package/detectors/bun_interlocking_coverage/atdd.implementation.yaml +27 -0
  255. package/detectors/bun_interlocking_coverage/checks/_map.json +7 -0
  256. package/detectors/bun_interlocking_coverage/checks/interlocking_production_runner.mjs +82 -0
  257. package/detectors/bun_interlocking_coverage/checks/interlocking_route_coverage.mjs +58 -0
  258. package/detectors/bun_interlocking_coverage/checks/interlocking_smoke_coverage.mjs +68 -0
  259. package/detectors/bun_interlocking_coverage/checks/interlocking_trace_binds.mjs +64 -0
  260. package/detectors/bun_interlocking_coverage/checks/interlocking_train_sequence.mjs +110 -0
  261. package/detectors/bun_interlocking_coverage/detect.mjs +46 -0
  262. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  263. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  264. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  265. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_production_runner/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  266. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  267. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  268. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  269. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_route_coverage/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  270. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  271. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  272. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  273. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  274. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  275. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  276. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/e2e/smoke/resolve-match.smoke.test.ts +19 -0
  277. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_smoke_coverage_module/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  278. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  279. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  280. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  281. package/detectors/bun_interlocking_coverage/fixtures/clean/interlocking_trace_binds/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  282. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_production_runner/e2e/interlockings/match-resolution/routes.test.ts +23 -0
  283. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_production_runner/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  284. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_production_runner/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  285. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_production_runner/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  286. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_route_coverage/e2e/interlockings/match-resolution/routes.test.ts +12 -0
  287. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_route_coverage/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  288. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_route_coverage/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  289. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_route_coverage/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  290. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_smoke_coverage/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  291. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_smoke_coverage/e2e/interlockings/match-resolution/trace.test.ts +17 -0
  292. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_smoke_coverage/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  293. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_trace_binds/e2e/interlockings/match-resolution/routes.test.ts +21 -0
  294. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_trace_binds/e2e/interlockings/match-resolution/trace.test.ts +13 -0
  295. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_trace_binds/e2e/smoke/resolve-match.smoke.test.ts +13 -0
  296. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_trace_binds/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  297. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_train_sequence/e2e/interlockings/match-resolution/routes.test.ts +16 -0
  298. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_train_sequence/plan/_trains/_interlockings/match-resolution.yaml +51 -0
  299. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_train_sequence/plan/_trains/train:match:match-resolution-standard.yaml +8 -0
  300. package/detectors/bun_interlocking_coverage/fixtures/dirty/interlocking_train_sequence/plan/_trains/train:match:match-resolution-timeout.yaml +5 -0
  301. package/detectors/bun_interlocking_infrastructure/_shared/interlocking.mjs +477 -0
  302. package/detectors/bun_interlocking_infrastructure/atdd.implementation.yaml +32 -0
  303. package/detectors/bun_interlocking_infrastructure/checks/_map.json +10 -0
  304. package/detectors/bun_interlocking_infrastructure/checks/interlocking_delegates.mjs +70 -0
  305. package/detectors/bun_interlocking_infrastructure/checks/interlocking_no_cargo.mjs +62 -0
  306. package/detectors/bun_interlocking_infrastructure/checks/interlocking_resolution_model.mjs +64 -0
  307. package/detectors/bun_interlocking_infrastructure/checks/interlocking_runner_exists.mjs +73 -0
  308. package/detectors/bun_interlocking_infrastructure/checks/interlocking_station_routing.mjs +62 -0
  309. package/detectors/bun_interlocking_infrastructure/checks/journey_runner_boundary.mjs +153 -0
  310. package/detectors/bun_interlocking_infrastructure/checks/journey_station_routing.mjs +119 -0
  311. package/detectors/bun_interlocking_infrastructure/checks/wagon_contract_honoured.mjs +149 -0
  312. package/detectors/bun_interlocking_infrastructure/detect.mjs +46 -0
  313. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_delegates/server.ts +22 -0
  314. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_delegates/src/match/wagon.ts +6 -0
  315. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_delegates/src/trains/interlocking.ts +41 -0
  316. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_delegates/src/trains/runner.ts +28 -0
  317. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_no_cargo/server.ts +22 -0
  318. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_no_cargo/src/match/wagon.ts +6 -0
  319. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_no_cargo/src/trains/interlocking.ts +41 -0
  320. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_no_cargo/src/trains/runner.ts +28 -0
  321. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_resolution_model/server.ts +22 -0
  322. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_resolution_model/src/match/wagon.ts +6 -0
  323. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_resolution_model/src/trains/interlocking.ts +41 -0
  324. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_resolution_model/src/trains/runner.ts +28 -0
  325. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_runner_exists/server.ts +22 -0
  326. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_runner_exists/src/match/wagon.ts +6 -0
  327. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_runner_exists/src/trains/interlocking.ts +41 -0
  328. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_runner_exists/src/trains/runner.ts +28 -0
  329. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_station_routing/server.ts +22 -0
  330. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_station_routing/src/match/wagon.ts +6 -0
  331. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_station_routing/src/trains/interlocking.ts +41 -0
  332. package/detectors/bun_interlocking_infrastructure/fixtures/clean/interlocking_station_routing/src/trains/runner.ts +28 -0
  333. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_runner_boundary/plan/_journeys/example.yaml +16 -0
  334. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_runner_boundary/src/trains/journey.ts +15 -0
  335. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/plan/_journeys/public.yaml +16 -0
  336. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/server.ts +13 -0
  337. package/detectors/bun_interlocking_infrastructure/fixtures/clean/journey_station_routing/src/trains/journey.ts +14 -0
  338. package/detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/plan/orders/_orders.yaml +17 -0
  339. package/detectors/bun_interlocking_infrastructure/fixtures/clean/wagon_contract_honoured/src/orders/wagon.ts +15 -0
  340. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/server.ts +22 -0
  341. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/src/match/wagon.ts +6 -0
  342. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/src/trains/interlocking.ts +49 -0
  343. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_delegates/src/trains/runner.ts +28 -0
  344. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_no_cargo/server.ts +22 -0
  345. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_no_cargo/src/match/wagon.ts +11 -0
  346. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_no_cargo/src/trains/interlocking.ts +42 -0
  347. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_no_cargo/src/trains/runner.ts +28 -0
  348. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_resolution_model/server.ts +22 -0
  349. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_resolution_model/src/match/wagon.ts +6 -0
  350. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_resolution_model/src/trains/interlocking.ts +21 -0
  351. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_resolution_model/src/trains/runner.ts +28 -0
  352. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_runner_exists/server.ts +22 -0
  353. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_runner_exists/src/match/wagon.ts +6 -0
  354. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_runner_exists/src/trains/interlocking.ts +16 -0
  355. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_runner_exists/src/trains/runner.ts +28 -0
  356. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/server.ts +19 -0
  357. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/src/match/wagon.ts +6 -0
  358. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/src/trains/interlocking.ts +41 -0
  359. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/interlocking_station_routing/src/trains/runner.ts +28 -0
  360. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_runner_boundary/plan/_journeys/example.yaml +16 -0
  361. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_runner_boundary/src/trains/journey.ts +14 -0
  362. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_routing/plan/_journeys/public.yaml +16 -0
  363. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_routing/server.ts +10 -0
  364. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/journey_station_routing/src/trains/journey.ts +14 -0
  365. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/wagon_contract_honoured/plan/orders/_orders.yaml +17 -0
  366. package/detectors/bun_interlocking_infrastructure/fixtures/dirty/wagon_contract_honoured/src/orders/wagon.ts +13 -0
  367. package/detectors/bun_security_hygiene_detector/atdd.implementation.yaml +33 -0
  368. package/detectors/bun_security_hygiene_detector/checks/_map.json +9 -0
  369. package/detectors/bun_security_hygiene_detector/checks/err_bare_string.mjs +38 -0
  370. package/detectors/bun_security_hygiene_detector/checks/err_code_format.mjs +36 -0
  371. package/detectors/bun_security_hygiene_detector/checks/log_console.mjs +33 -0
  372. package/detectors/bun_security_hygiene_detector/checks/log_structured.mjs +36 -0
  373. package/detectors/bun_security_hygiene_detector/checks/sec_hardcoded_secret.mjs +43 -0
  374. package/detectors/bun_security_hygiene_detector/checks/sec_missing_auth.mjs +63 -0
  375. package/detectors/bun_security_hygiene_detector/checks/sec_sql_injection.mjs +56 -0
  376. package/detectors/bun_security_hygiene_detector/detect.mjs +46 -0
  377. package/detectors/bun_security_hygiene_detector/fixtures/clean/server.ts +24 -0
  378. package/detectors/bun_security_hygiene_detector/fixtures/dirty/db.ts +6 -0
  379. package/detectors/bun_security_hygiene_detector/fixtures/dirty/errors.ts +6 -0
  380. package/detectors/bun_security_hygiene_detector/fixtures/dirty/logging.ts +4 -0
  381. package/detectors/bun_security_hygiene_detector/fixtures/dirty/routes.ts +10 -0
  382. package/detectors/bun_security_hygiene_detector/fixtures/dirty/secrets.ts +3 -0
  383. package/detectors/bun_tester_discipline_detector/atdd.implementation.yaml +46 -0
  384. package/detectors/bun_tester_discipline_detector/checks/_map.json +18 -0
  385. package/detectors/bun_tester_discipline_detector/checks/t_acceptance_binding.mjs +19 -0
  386. package/detectors/bun_tester_discipline_detector/checks/t_acceptance_covers_tag.mjs +25 -0
  387. package/detectors/bun_tester_discipline_detector/checks/t_acceptance_resolves.mjs +106 -0
  388. package/detectors/bun_tester_discipline_detector/checks/t_isolation_no_live_state.mjs +40 -0
  389. package/detectors/bun_tester_discipline_detector/checks/t_red_behavioral.mjs +35 -0
  390. package/detectors/bun_tester_discipline_detector/checks/t_red_fails_first.mjs +30 -0
  391. package/detectors/bun_tester_discipline_detector/checks/t_routing_runtime.mjs +22 -0
  392. package/detectors/bun_tester_discipline_detector/checks/t_security_auth.mjs +26 -0
  393. package/detectors/bun_tester_discipline_detector/checks/t_security_input.mjs +25 -0
  394. package/detectors/bun_tester_discipline_detector/checks/t_smoke_no_substitution.mjs +25 -0
  395. package/detectors/bun_tester_discipline_detector/checks/t_smoke_observable.mjs +28 -0
  396. package/detectors/bun_tester_discipline_detector/checks/t_telemetry_emit.mjs +27 -0
  397. package/detectors/bun_tester_discipline_detector/checks/t_test_imports_bun_test.mjs +31 -0
  398. package/detectors/bun_tester_discipline_detector/checks/t_test_no_self_skip.mjs +34 -0
  399. package/detectors/bun_tester_discipline_detector/checks/t_test_phase_declared.mjs +21 -0
  400. package/detectors/bun_tester_discipline_detector/checks/t_urn_identity.mjs +18 -0
  401. package/detectors/bun_tester_discipline_detector/detect.mjs +46 -0
  402. package/detectors/bun_tester_discipline_detector/fixtures/clean/audit.sec.test.ts +15 -0
  403. package/detectors/bun_tester_discipline_detector/fixtures/clean/checkout.red.test.ts +16 -0
  404. package/detectors/bun_tester_discipline_detector/fixtures/clean/emit.telemetry.test.ts +15 -0
  405. package/detectors/bun_tester_discipline_detector/fixtures/clean/marked.red.test.ts +14 -0
  406. package/detectors/bun_tester_discipline_detector/fixtures/clean/orders.smoke.test.ts +16 -0
  407. package/detectors/bun_tester_discipline_detector/fixtures/clean/payload.input.test.ts +13 -0
  408. package/detectors/bun_tester_discipline_detector/fixtures/clean/plan/orders/E001.yaml +9 -0
  409. package/detectors/bun_tester_discipline_detector/fixtures/clean/plan/orders/E002.yaml +9 -0
  410. package/detectors/bun_tester_discipline_detector/fixtures/clean/plan/orders/E020.yaml +9 -0
  411. package/detectors/bun_tester_discipline_detector/fixtures/clean/plan/orders/E021.yaml +9 -0
  412. package/detectors/bun_tester_discipline_detector/fixtures/clean/plan/orders/E022.yaml +9 -0
  413. package/detectors/bun_tester_discipline_detector/fixtures/clean/plan/orders/E023.yaml +9 -0
  414. package/detectors/bun_tester_discipline_detector/fixtures/dirty/badcovers.test.ts +7 -0
  415. package/detectors/bun_tester_discipline_detector/fixtures/dirty/badphase.test.ts +6 -0
  416. package/detectors/bun_tester_discipline_detector/fixtures/dirty/foreign_harness.test.ts +6 -0
  417. package/detectors/bun_tester_discipline_detector/fixtures/dirty/happy.auth.test.ts +9 -0
  418. package/detectors/bun_tester_discipline_detector/fixtures/dirty/happy.input.test.ts +9 -0
  419. package/detectors/bun_tester_discipline_detector/fixtures/dirty/internal.smoke.test.ts +10 -0
  420. package/detectors/bun_tester_discipline_detector/fixtures/dirty/no_header.test.ts +2 -0
  421. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E004.yaml +9 -0
  422. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E005.yaml +9 -0
  423. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E006.yaml +9 -0
  424. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E007.yaml +9 -0
  425. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E008.yaml +9 -0
  426. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E009.yaml +9 -0
  427. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E010.yaml +9 -0
  428. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E024.yaml +9 -0
  429. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E025.yaml +9 -0
  430. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E026.yaml +9 -0
  431. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E027.yaml +9 -0
  432. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E028.yaml +9 -0
  433. package/detectors/bun_tester_discipline_detector/fixtures/dirty/plan/orders/E030.yaml +9 -0
  434. package/detectors/bun_tester_discipline_detector/fixtures/dirty/polluting.test.ts +11 -0
  435. package/detectors/bun_tester_discipline_detector/fixtures/dirty/quiet.telemetry.test.ts +9 -0
  436. package/detectors/bun_tester_discipline_detector/fixtures/dirty/skipped.test.ts +6 -0
  437. package/detectors/bun_tester_discipline_detector/fixtures/dirty/substituted.smoke.test.ts +13 -0
  438. package/detectors/bun_tester_discipline_detector/fixtures/dirty/unbound.test.ts +5 -0
  439. package/detectors/bun_tester_discipline_detector/fixtures/dirty/unmarked.red.test.ts +7 -0
  440. package/detectors/bun_tester_discipline_detector/fixtures/dirty/unresolvable_binding.test.ts +17 -0
  441. package/detectors/bun_tester_discipline_detector/fixtures/dirty/vacuous.red.test.ts +7 -0
  442. package/detectors/bun_tester_discipline_detector/fixtures/dirty/wrongruntime.test.ts +7 -0
  443. package/detectors/bun_tester_discipline_detector/test_header.mjs +160 -0
  444. package/detectors/bun_ts_metrics_detector/atdd.implementation.yaml +34 -0
  445. package/detectors/bun_ts_metrics_detector/checks/_map.json +9 -0
  446. package/detectors/bun_ts_metrics_detector/checks/ts_complexity_cyclomatic.mjs +36 -0
  447. package/detectors/bun_ts_metrics_detector/checks/ts_complexity_length.mjs +36 -0
  448. package/detectors/bun_ts_metrics_detector/checks/ts_complexity_nesting.mjs +36 -0
  449. package/detectors/bun_ts_metrics_detector/checks/ts_dead_code.mjs +58 -0
  450. package/detectors/bun_ts_metrics_detector/checks/ts_duplication.mjs +70 -0
  451. package/detectors/bun_ts_metrics_detector/checks/ts_quality_comments.mjs +30 -0
  452. package/detectors/bun_ts_metrics_detector/checks/ts_quality_mi.mjs +30 -0
  453. package/detectors/bun_ts_metrics_detector/detect.mjs +46 -0
  454. package/detectors/bun_ts_metrics_detector/fixtures/clean/domain/label.ts +6 -0
  455. package/detectors/bun_ts_metrics_detector/fixtures/clean/domain/total.ts +8 -0
  456. package/detectors/bun_ts_metrics_detector/fixtures/clean/index.ts +7 -0
  457. package/detectors/bun_ts_metrics_detector/fixtures/dirty/bare.ts +2 -0
  458. package/detectors/bun_ts_metrics_detector/fixtures/dirty/big.ts +600 -0
  459. package/detectors/bun_ts_metrics_detector/fixtures/dirty/consumer.ts +2 -0
  460. package/detectors/bun_ts_metrics_detector/fixtures/dirty/domain/a.ts +9 -0
  461. package/detectors/bun_ts_metrics_detector/fixtures/dirty/domain/b.ts +9 -0
  462. package/detectors/bun_ts_metrics_detector/fixtures/dirty/gnarly.ts +22 -0
  463. package/detectors/bun_ts_metrics_detector/fixtures/dirty/index.ts +8 -0
  464. package/detectors/bun_ts_metrics_detector/fixtures/dirty/long.ts +64 -0
  465. package/detectors/bun_ts_metrics_detector/fixtures/dirty/orphan.ts +1 -0
  466. package/detectors/bun_ts_metrics_detector/fixtures/dirty/typed.ts +1 -0
  467. package/detectors/bun_ts_metrics_detector/ts_metrics.mjs +310 -0
  468. package/detectors/htmx_hypermedia_detector/atdd.implementation.yaml +28 -0
  469. package/detectors/htmx_hypermedia_detector/checks/_map.json +9 -0
  470. package/detectors/htmx_hypermedia_detector/checks/htmx_fragment_escapes_interpolation.mjs +66 -0
  471. package/detectors/htmx_hypermedia_detector/checks/htmx_swap_no_inline_handler.mjs +40 -0
  472. package/detectors/htmx_hypermedia_detector/checks/htmx_swap_oob_carries_id.mjs +37 -0
  473. package/detectors/htmx_hypermedia_detector/checks/htmx_verb_destructive_confirms.mjs +36 -0
  474. package/detectors/htmx_hypermedia_detector/checks/htmx_verb_endpoint_is_routed.mjs +133 -0
  475. package/detectors/htmx_hypermedia_detector/checks/htmx_verb_endpoint_same_origin.mjs +33 -0
  476. package/detectors/htmx_hypermedia_detector/checks/htmx_verb_mutation_signals_progress.mjs +43 -0
  477. package/detectors/htmx_hypermedia_detector/detect.mjs +46 -0
  478. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_fragment_escapes_interpolation/render.ts +6 -0
  479. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_swap_no_inline_handler/row.html +1 -0
  480. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_swap_oob_carries_id/fragment.html +1 -0
  481. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_verb_destructive_confirms/delete.html +1 -0
  482. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_verb_endpoint_is_routed/server.ts +10 -0
  483. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_verb_endpoint_is_routed/src/OrderRow.ts +7 -0
  484. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_verb_endpoint_same_origin/panel.html +3 -0
  485. package/detectors/htmx_hypermedia_detector/fixtures/clean/htmx_verb_mutation_signals_progress/form.html +4 -0
  486. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_fragment_escapes_interpolation/render.ts +3 -0
  487. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_swap_no_inline_handler/row.html +1 -0
  488. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_swap_oob_carries_id/fragment.html +1 -0
  489. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_verb_destructive_confirms/delete.html +1 -0
  490. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_verb_endpoint_is_routed/server.ts +10 -0
  491. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_verb_endpoint_is_routed/src/OrderRow.ts +9 -0
  492. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_verb_endpoint_same_origin/panel.html +3 -0
  493. package/detectors/htmx_hypermedia_detector/fixtures/dirty/htmx_verb_mutation_signals_progress/form.html +3 -0
  494. package/detectors/htmx_tester_detector/atdd.implementation.yaml +21 -0
  495. package/detectors/htmx_tester_detector/checks/_map.json +5 -0
  496. package/detectors/htmx_tester_detector/checks/t_fragment_asserts_returned_markup.mjs +40 -0
  497. package/detectors/htmx_tester_detector/checks/t_swap_oob_asserts_destination_id.mjs +38 -0
  498. package/detectors/htmx_tester_detector/checks/t_verb_endpoint_coverage.mjs +59 -0
  499. package/detectors/htmx_tester_detector/detect.mjs +46 -0
  500. package/detectors/htmx_tester_detector/fixtures/clean/orders.test.ts +23 -0
  501. package/detectors/htmx_tester_detector/fixtures/clean/panel.html +7 -0
  502. package/detectors/htmx_tester_detector/fixtures/dirty/orders.test.ts +20 -0
  503. package/detectors/htmx_tester_detector/fixtures/dirty/panel.html +7 -0
  504. package/detectors/htmx_tester_detector/fixtures/dirty/statusonly.test.ts +9 -0
  505. package/detectors/htmx_tester_detector/test_header.mjs +4 -0
  506. package/detectors/planner_docs_capability/README.md +34 -0
  507. package/detectors/planner_docs_capability/atdd.implementation.yaml +57 -0
  508. package/detectors/planner_docs_capability/detect.mjs +10 -0
  509. package/detectors/planner_docs_capability/fixtures/clean/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  510. package/detectors/planner_docs_capability/fixtures/clean/docs/architecture/decisions/index.adoc +7 -0
  511. package/detectors/planner_docs_capability/fixtures/clean/docs/architecture/index.adoc +5 -0
  512. package/detectors/planner_docs_capability/fixtures/clean/docs/architecture/shared-control-root.adoc +8 -0
  513. package/detectors/planner_docs_capability/fixtures/clean/docs/architecture/state-store.adoc +5 -0
  514. package/detectors/planner_docs_capability/fixtures/clean/docs/archive/2025-control-root.adoc +5 -0
  515. package/detectors/planner_docs_capability/fixtures/clean/docs/archive/index.adoc +5 -0
  516. package/detectors/planner_docs_capability/fixtures/clean/docs/delivery/index.adoc +5 -0
  517. package/detectors/planner_docs_capability/fixtures/clean/docs/dist/index.md +1 -0
  518. package/detectors/planner_docs_capability/fixtures/clean/docs/index.adoc +5 -0
  519. package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/index.adoc +5 -0
  520. package/detectors/planner_docs_capability/fixtures/clean/docs/purpose/worktrees.adoc +5 -0
  521. package/detectors/planner_docs_capability/fixtures/dirty/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  522. package/detectors/planner_docs_capability/fixtures/dirty/docs/architecture/decisions/index.adoc +7 -0
  523. package/detectors/planner_docs_capability/fixtures/dirty/docs/architecture/index.adoc +5 -0
  524. package/detectors/planner_docs_capability/fixtures/dirty/docs/architecture/notes.md +3 -0
  525. package/detectors/planner_docs_capability/fixtures/dirty/docs/architecture/shared-control-root.adoc +8 -0
  526. package/detectors/planner_docs_capability/fixtures/dirty/docs/architecture/state-store.adoc +5 -0
  527. package/detectors/planner_docs_capability/fixtures/dirty/docs/archive/2025-control-root.adoc +5 -0
  528. package/detectors/planner_docs_capability/fixtures/dirty/docs/archive/index.adoc +5 -0
  529. package/detectors/planner_docs_capability/fixtures/dirty/docs/delivery/index.adoc +5 -0
  530. package/detectors/planner_docs_capability/fixtures/dirty/docs/dist/index.md +1 -0
  531. package/detectors/planner_docs_capability/fixtures/dirty/docs/index.adoc +5 -0
  532. package/detectors/planner_docs_capability/fixtures/dirty/docs/purpose/index.adoc +5 -0
  533. package/detectors/planner_docs_capability/fixtures/dirty/docs/purpose/worktrees.adoc +5 -0
  534. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  535. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/architecture/decisions/adr-20260906-002-documentation-system.adoc +8 -0
  536. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/architecture/decisions/index.adoc +7 -0
  537. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/architecture/index.adoc +5 -0
  538. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/architecture/shared-control-root.adoc +8 -0
  539. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/architecture/state-store.adoc +5 -0
  540. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/archive/2025-control-root.adoc +5 -0
  541. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/archive/index.adoc +5 -0
  542. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/delivery/index.adoc +5 -0
  543. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/dist/index.md +1 -0
  544. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/index.adoc +5 -0
  545. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/purpose/index.adoc +5 -0
  546. package/detectors/planner_docs_capability/fixtures/dirty_adr_registry/docs/purpose/worktrees.adoc +5 -0
  547. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  548. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/architecture/decisions/index.adoc +7 -0
  549. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/architecture/index.adoc +5 -0
  550. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/architecture/shared-control-root.adoc +8 -0
  551. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/architecture/state-store.adoc +5 -0
  552. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/archive/2025-control-root.adoc +5 -0
  553. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/archive/index.adoc +5 -0
  554. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/delivery/index.adoc +5 -0
  555. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/delivery/worktrees.adoc +5 -0
  556. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/dist/index.md +1 -0
  557. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/index.adoc +5 -0
  558. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/purpose/index.adoc +5 -0
  559. package/detectors/planner_docs_capability/fixtures/dirty_duplicate_id/docs/purpose/worktrees.adoc +5 -0
  560. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  561. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/architecture/decisions/index.adoc +7 -0
  562. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/architecture/index.adoc +5 -0
  563. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/architecture/shared-control-root.adoc +8 -0
  564. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/architecture/state-store.adoc +5 -0
  565. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/archive/2025-control-root.adoc +5 -0
  566. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/archive/index.adoc +5 -0
  567. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/delivery/index.adoc +5 -0
  568. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/delivery/release.adoc +3 -0
  569. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/dist/index.md +1 -0
  570. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/index.adoc +5 -0
  571. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/purpose/index.adoc +5 -0
  572. package/detectors/planner_docs_capability/fixtures/dirty_identity/docs/purpose/worktrees.adoc +5 -0
  573. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  574. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/architecture/decisions/index.adoc +7 -0
  575. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/architecture/index.adoc +5 -0
  576. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/architecture/notes.md +3 -0
  577. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/architecture/shared-control-root.adoc +8 -0
  578. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/architecture/state-store.adoc +5 -0
  579. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/archive/2025-control-root.adoc +5 -0
  580. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/archive/index.adoc +5 -0
  581. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/delivery/index.adoc +5 -0
  582. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/dist/index.md +1 -0
  583. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/index.adoc +5 -0
  584. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/purpose/index.adoc +5 -0
  585. package/detectors/planner_docs_capability/fixtures/dirty_markdown/docs/purpose/worktrees.adoc +5 -0
  586. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  587. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/decisions/index.adoc +7 -0
  588. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/index.adoc +5 -0
  589. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/shared-control-root.adoc +8 -0
  590. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/architecture/state-store.adoc +5 -0
  591. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/archive/2025-control-root.adoc +5 -0
  592. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/archive/index.adoc +5 -0
  593. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/delivery/release.adoc +10 -0
  594. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/dist/index.md +1 -0
  595. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/index.adoc +5 -0
  596. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/index.adoc +5 -0
  597. package/detectors/planner_docs_capability/fixtures/dirty_missing_index/docs/purpose/worktrees.adoc +5 -0
  598. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/decisions/adr-20260906-001-shared-control-root.adoc +8 -0
  599. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/decisions/index.adoc +7 -0
  600. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/index.adoc +5 -0
  601. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/shared-control-root.adoc +8 -0
  602. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/architecture/state-store.adoc +5 -0
  603. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/archive/2025-control-root.adoc +5 -0
  604. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/archive/index.adoc +5 -0
  605. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/delivery/index.adoc +5 -0
  606. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/dist/index.md +1 -0
  607. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/index.adoc +5 -0
  608. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/purpose/index.adoc +5 -0
  609. package/detectors/planner_docs_capability/fixtures/dirty_unresolved_edge/docs/purpose/worktrees.adoc +5 -0
  610. package/detectors/planner_plan_integrity/atdd.implementation.yaml +18 -0
  611. package/detectors/planner_plan_integrity/detect.mjs +23 -0
  612. package/detectors/planner_plan_integrity/fixtures/clean/README.md +1 -0
  613. package/detectors/planner_plan_integrity/fixtures/dirty/plan/broken.yaml +1 -0
  614. package/detectors/planner_schema_validation/atdd.implementation.yaml +20 -0
  615. package/detectors/planner_schema_validation/detect.mjs +9 -0
  616. package/detectors/planner_schema_validation/fixtures/clean/contracts/_contracts.yaml +6 -0
  617. package/detectors/planner_schema_validation/fixtures/clean/contracts/orders/placed.schema.json +4 -0
  618. package/detectors/planner_schema_validation/fixtures/clean/plan/_themes.yaml +3 -0
  619. package/detectors/planner_schema_validation/fixtures/clean/plan/_trains/orders.yaml +11 -0
  620. package/detectors/planner_schema_validation/fixtures/clean/plan/orders/_orders.yaml +16 -0
  621. package/detectors/planner_schema_validation/fixtures/dirty/contracts/_contracts.yaml +3 -0
  622. package/detectors/planner_schema_validation/fixtures/dirty/plan/_themes.yaml +2 -0
  623. package/detectors/planner_schema_validation/fixtures/dirty/plan/_trains/orders.yaml +11 -0
  624. package/detectors/planner_static_validators/atdd.implementation.yaml +36 -0
  625. package/detectors/planner_static_validators/detect.mjs +9 -0
  626. package/detectors/planner_static_validators/fixtures/clean/contracts/_contracts.yaml +6 -0
  627. package/detectors/planner_static_validators/fixtures/clean/contracts/orders/placed.schema.json +4 -0
  628. package/detectors/planner_static_validators/fixtures/clean/plan/_themes.yaml +3 -0
  629. package/detectors/planner_static_validators/fixtures/clean/plan/orders/E001.yaml +10 -0
  630. package/detectors/planner_static_validators/fixtures/clean/plan/orders/_orders.yaml +19 -0
  631. package/detectors/planner_static_validators/fixtures/clean/plan/orders/features/place-order.yaml +4 -0
  632. package/detectors/planner_static_validators/fixtures/dirty/plan/_journeys/broken.yaml +22 -0
  633. package/detectors/planner_static_validators/fixtures/dirty/plan/_themes.yaml +3 -0
  634. package/detectors/planner_static_validators/fixtures/dirty/plan/_trains/_interlockings/journey-a.yaml +4 -0
  635. package/detectors/planner_static_validators/fixtures/dirty/plan/_trains/journey-a.yaml +7 -0
  636. package/detectors/planner_static_validators/fixtures/dirty/plan/_trains/probe/legacy.yaml +3 -0
  637. package/detectors/planner_static_validators/fixtures/dirty/plan/_trains/probe/orphan.yaml +3 -0
  638. package/detectors/planner_static_validators/fixtures/dirty/plan/_trains.yaml +5 -0
  639. package/detectors/planner_static_validators/fixtures/dirty/plan/also_dup/_also_dup.yaml +15 -0
  640. package/detectors/planner_static_validators/fixtures/dirty/plan/dup/E001.yaml +3 -0
  641. package/detectors/planner_static_validators/fixtures/dirty/plan/dup/_dup.yaml +27 -0
  642. package/detectors/planner_static_validators/fixtures/dirty/plan/dup/features/bad.yaml +2 -0
  643. package/lib/imports.mjs +83 -0
  644. package/lib/scan.mjs +246 -0
  645. package/package.json +35 -0
  646. package/planner-nodes/ENFORCEMENT_SCOPE.yaml +117 -0
  647. package/planner-nodes/nodes/planner.acceptance.abstract-fields-required.convention.yaml +44 -0
  648. package/planner-nodes/nodes/planner.acceptance.authoring-guidelines.convention.yaml +29 -0
  649. package/planner-nodes/nodes/planner.acceptance.boundary-kind-vocabulary.convention.yaml +38 -0
  650. package/planner-nodes/nodes/planner.acceptance.execution-kind.convention.yaml +30 -0
  651. package/planner-nodes/nodes/planner.acceptance.extraction-no-inference.convention.yaml +23 -0
  652. package/planner-nodes/nodes/planner.acceptance.generator-prompts.convention.yaml +34 -0
  653. package/planner-nodes/nodes/planner.acceptance.given-when-then-structure.convention.yaml +53 -0
  654. package/planner-nodes/nodes/planner.acceptance.harness-vocabulary.convention.yaml +99 -0
  655. package/planner-nodes/nodes/planner.acceptance.harness.convention.yaml +36 -0
  656. package/planner-nodes/nodes/planner.acceptance.hermetic-fake-contract.convention.yaml +35 -0
  657. package/planner-nodes/nodes/planner.acceptance.id-pattern.convention.yaml +34 -0
  658. package/planner-nodes/nodes/planner.acceptance.max-per-wmbt.convention.yaml +29 -0
  659. package/planner-nodes/nodes/planner.acceptance.plane-keywords.convention.yaml +87 -0
  660. package/planner-nodes/nodes/planner.acceptance.route-construction.convention.yaml +55 -0
  661. package/planner-nodes/nodes/planner.acceptance.signal-telemetry-naming.convention.yaml +61 -0
  662. package/planner-nodes/nodes/planner.acceptance.urn-generation.convention.yaml +39 -0
  663. package/planner-nodes/nodes/planner.acceptance.well-formed.convention.yaml +57 -0
  664. package/planner-nodes/nodes/planner.appendix.llm-guidelines.convention.yaml +81 -0
  665. package/planner-nodes/nodes/planner.appendix.naming-pattern.convention.yaml +45 -0
  666. package/planner-nodes/nodes/planner.appendix.storage.convention.yaml +44 -0
  667. package/planner-nodes/nodes/planner.appendix.structure.convention.yaml +17 -0
  668. package/planner-nodes/nodes/planner.appendix.types.convention.yaml +123 -0
  669. package/planner-nodes/nodes/planner.artifact-naming.anti-patterns.convention.yaml +31 -0
  670. package/planner-nodes/nodes/planner.artifact-naming.cardinality-from-aspect.convention.yaml +32 -0
  671. package/planner-nodes/nodes/planner.artifact-naming.colon-for-hierarchy.convention.yaml +25 -0
  672. package/planner-nodes/nodes/planner.artifact-naming.contract-file-mapping.convention.yaml +26 -0
  673. package/planner-nodes/nodes/planner.artifact-naming.depth-guidelines.convention.yaml +27 -0
  674. package/planner-nodes/nodes/planner.artifact-naming.dot-for-variant.convention.yaml +25 -0
  675. package/planner-nodes/nodes/planner.artifact-naming.logical-physical-mapping.convention.yaml +36 -0
  676. package/planner-nodes/nodes/planner.artifact-naming.migration-guide.convention.yaml +29 -0
  677. package/planner-nodes/nodes/planner.artifact-naming.naming-pattern.convention.yaml +44 -0
  678. package/planner-nodes/nodes/planner.artifact-naming.path-mirrors-identity.convention.yaml +40 -0
  679. package/planner-nodes/nodes/planner.artifact-naming.planner-artifacts-use-stable.convention.yaml +28 -0
  680. package/planner-nodes/nodes/planner.artifact-naming.pluralization.convention.yaml +27 -0
  681. package/planner-nodes/nodes/planner.artifact-naming.schema-identifier.convention.yaml +31 -0
  682. package/planner-nodes/nodes/planner.artifact-naming.separator-semantics.convention.yaml +42 -0
  683. package/planner-nodes/nodes/planner.artifact-naming.theme-first-identity.convention.yaml +39 -0
  684. package/planner-nodes/nodes/planner.artifact-naming.urn-structure.convention.yaml +26 -0
  685. package/planner-nodes/nodes/planner.artifact-naming.validation-rules.convention.yaml +33 -0
  686. package/planner-nodes/nodes/planner.artifact-naming.verb-object-corpus-drift.convention.yaml +49 -0
  687. package/planner-nodes/nodes/planner.artifact.definition.convention.yaml +30 -0
  688. package/planner-nodes/nodes/planner.component.artifact-derivation.convention.yaml +139 -0
  689. package/planner-nodes/nodes/planner.component.business-focus.convention.yaml +65 -0
  690. package/planner-nodes/nodes/planner.component.count-limit.convention.yaml +64 -0
  691. package/planner-nodes/nodes/planner.component.derivation.convention.yaml +117 -0
  692. package/planner-nodes/nodes/planner.component.io-alignment.convention.yaml +65 -0
  693. package/planner-nodes/nodes/planner.component.layer-assignment.convention.yaml +83 -0
  694. package/planner-nodes/nodes/planner.component.layer-consistency.convention.yaml +91 -0
  695. package/planner-nodes/nodes/planner.component.method-limit.convention.yaml +35 -0
  696. package/planner-nodes/nodes/planner.component.structure.convention.yaml +77 -0
  697. package/planner-nodes/nodes/planner.component.type-catalog.convention.yaml +436 -0
  698. package/planner-nodes/nodes/planner.component.urn.convention.yaml +86 -0
  699. package/planner-nodes/nodes/planner.contract.registry-coherence.convention.yaml +36 -0
  700. package/planner-nodes/nodes/planner.convention.remedy-must-be-followable.convention.yaml +92 -0
  701. package/planner-nodes/nodes/planner.coverage.bidirectional-coverage-between-trains.convention.yaml +33 -0
  702. package/planner-nodes/nodes/planner.coverage.bidirectional-coverage-between-wagons.convention.yaml +33 -0
  703. package/planner-nodes/nodes/planner.coverage.coverage-graph.convention.yaml +31 -0
  704. package/planner-nodes/nodes/planner.coverage.every-wmbt-must-be.convention.yaml +29 -0
  705. package/planner-nodes/nodes/planner.coverage.every-wmbt-must-have.convention.yaml +33 -0
  706. package/planner-nodes/nodes/planner.coverage.exception-handling.convention.yaml +32 -0
  707. package/planner-nodes/nodes/planner.criteria.defaults.convention.yaml +30 -0
  708. package/planner-nodes/nodes/planner.criteria.harness-templates.convention.yaml +159 -0
  709. package/planner-nodes/nodes/planner.criteria.metric-mapping.convention.yaml +136 -0
  710. package/planner-nodes/nodes/planner.criteria.plane-keywords.convention.yaml +53 -0
  711. package/planner-nodes/nodes/planner.criteria.sequence-routing.convention.yaml +26 -0
  712. package/planner-nodes/nodes/planner.criteria.shape.convention.yaml +27 -0
  713. package/planner-nodes/nodes/planner.decomposition.canonical-steps.convention.yaml +14 -0
  714. package/planner-nodes/nodes/planner.decomposition.document-trouble-obligation.convention.yaml +12 -0
  715. package/planner-nodes/nodes/planner.decomposition.domain-vs-technology.convention.yaml +13 -0
  716. package/planner-nodes/nodes/planner.decomposition.jtbd-vs-odi-grammar.convention.yaml +18 -0
  717. package/planner-nodes/nodes/planner.decomposition.keep-pivot-kill.convention.yaml +23 -0
  718. package/planner-nodes/nodes/planner.decomposition.local-scope.convention.yaml +15 -0
  719. package/planner-nodes/nodes/planner.decomposition.natural-language-normalization.convention.yaml +12 -0
  720. package/planner-nodes/nodes/planner.decomposition.train-journey.convention.yaml +13 -0
  721. package/planner-nodes/nodes/planner.decomposition.wagon-rationale.convention.yaml +12 -0
  722. package/planner-nodes/nodes/planner.definition.anchor-required.convention.yaml +34 -0
  723. package/planner-nodes/nodes/planner.feature.artifact-seeded-naming.convention.yaml +30 -0
  724. package/planner-nodes/nodes/planner.feature.definition.convention.yaml +27 -0
  725. package/planner-nodes/nodes/planner.feature.estimation.convention.yaml +29 -0
  726. package/planner-nodes/nodes/planner.feature.feedback-loop-close-the-loop.convention.yaml +33 -0
  727. package/planner-nodes/nodes/planner.feature.feedback-loop-kind.convention.yaml +30 -0
  728. package/planner-nodes/nodes/planner.feature.feedback-loop-suppression.convention.yaml +23 -0
  729. package/planner-nodes/nodes/planner.feature.footprint-scoring.convention.yaml +119 -0
  730. package/planner-nodes/nodes/planner.feature.grouping-strategy.convention.yaml +37 -0
  731. package/planner-nodes/nodes/planner.feature.hard-limits.convention.yaml +29 -0
  732. package/planner-nodes/nodes/planner.feature.name-is-verb-object.convention.yaml +40 -0
  733. package/planner-nodes/nodes/planner.feature.shape.convention.yaml +27 -0
  734. package/planner-nodes/nodes/planner.feature.size-max-rule.convention.yaml +41 -0
  735. package/planner-nodes/nodes/planner.feature.urn-naming.convention.yaml +29 -0
  736. package/planner-nodes/nodes/planner.feature.validation-rules.convention.yaml +28 -0
  737. package/planner-nodes/nodes/planner.feature.verb-selection-by-artifact-type.convention.yaml +264 -0
  738. package/planner-nodes/nodes/planner.feature.wagon-link.convention.yaml +27 -0
  739. package/planner-nodes/nodes/planner.interface.api-mapping.convention.yaml +70 -0
  740. package/planner-nodes/nodes/planner.interface.artifact-transformation.convention.yaml +103 -0
  741. package/planner-nodes/nodes/planner.interface.contract-urn.convention.yaml +119 -0
  742. package/planner-nodes/nodes/planner.interface.naming-patterns.convention.yaml +73 -0
  743. package/planner-nodes/nodes/planner.interface.orphan-detection.convention.yaml +46 -0
  744. package/planner-nodes/nodes/planner.interface.ownership-rules.convention.yaml +54 -0
  745. package/planner-nodes/nodes/planner.interface.structure-rules.convention.yaml +112 -0
  746. package/planner-nodes/nodes/planner.interface.tests-subdirectory.convention.yaml +61 -0
  747. package/planner-nodes/nodes/planner.interlocking.definition.convention.yaml +36 -0
  748. package/planner-nodes/nodes/planner.interlocking.registry-mirrors-document.convention.yaml +38 -0
  749. package/planner-nodes/nodes/planner.issue-body.dependency-entries-must-be-classified.convention.yaml +21 -0
  750. package/planner-nodes/nodes/planner.issue-body.graph-context-required.convention.yaml +21 -0
  751. package/planner-nodes/nodes/planner.journey.continuation-closure.convention.yaml +51 -0
  752. package/planner-nodes/nodes/planner.journey.definition.convention.yaml +39 -0
  753. package/planner-nodes/nodes/planner.plan.confirm-before-author.convention.yaml +28 -0
  754. package/planner-nodes/nodes/planner.plan.confirm-binds-an-issue.convention.yaml +39 -0
  755. package/planner-nodes/nodes/planner.plan.confirm-requires-interlocking-sanity.convention.yaml +30 -0
  756. package/planner-nodes/nodes/planner.plan.granularity-completeness.convention.yaml +38 -0
  757. package/planner-nodes/nodes/planner.plan.session-lifecycle.convention.yaml +23 -0
  758. package/planner-nodes/nodes/planner.plan.spec-is-schema-valid.convention.yaml +61 -0
  759. package/planner-nodes/nodes/planner.relationship.no-orphan-nodes.convention.yaml +32 -0
  760. package/planner-nodes/nodes/planner.smoke.feedback-loop-close-the-loop.convention.yaml +39 -0
  761. package/planner-nodes/nodes/planner.smoke.synthetic-fixture-bypass.convention.yaml +44 -0
  762. package/planner-nodes/nodes/planner.steps.architecture-routing.convention.yaml +109 -0
  763. package/planner-nodes/nodes/planner.steps.jtbd-taxonomy.convention.yaml +227 -0
  764. package/planner-nodes/nodes/planner.steps.linguistic-patterns.convention.yaml +81 -0
  765. package/planner-nodes/nodes/planner.steps.sequence.convention.yaml +17 -0
  766. package/planner-nodes/nodes/planner.subject.invariants.convention.yaml +34 -0
  767. package/planner-nodes/nodes/planner.theme.definition.convention.yaml +23 -0
  768. package/planner-nodes/nodes/planner.theme.must-be-canonical.convention.yaml +38 -0
  769. package/planner-nodes/nodes/planner.theme.theme-zero-mandatory.convention.yaml +39 -0
  770. package/planner-nodes/nodes/planner.theme.urn-namespace-matches.convention.yaml +34 -0
  771. package/planner-nodes/nodes/planner.train.acceptance-commit-failures-covered.convention.yaml +10 -0
  772. package/planner-nodes/nodes/planner.train.acceptances.convention.yaml +85 -0
  773. package/planner-nodes/nodes/planner.train.artifact-flow.convention.yaml +31 -0
  774. package/planner-nodes/nodes/planner.train.categories.convention.yaml +34 -0
  775. package/planner-nodes/nodes/planner.train.definition.convention.yaml +34 -0
  776. package/planner-nodes/nodes/planner.train.dependencies.convention.yaml +28 -0
  777. package/planner-nodes/nodes/planner.train.dispatch-composite-key-exceptional.convention.yaml +17 -0
  778. package/planner-nodes/nodes/planner.train.dispatch-map-is-registry.convention.yaml +17 -0
  779. package/planner-nodes/nodes/planner.train.family-matches-terminal-contract.convention.yaml +17 -0
  780. package/planner-nodes/nodes/planner.train.family.convention.yaml +17 -0
  781. package/planner-nodes/nodes/planner.train.initial-cargo-inputs-declared.convention.yaml +10 -0
  782. package/planner-nodes/nodes/planner.train.interlocking-does-not-carry-cargo.convention.yaml +28 -0
  783. package/planner-nodes/nodes/planner.train.interlocking-entrypoint-shape.convention.yaml +30 -0
  784. package/planner-nodes/nodes/planner.train.interlocking-fragment-acceptance-binding.convention.yaml +30 -0
  785. package/planner-nodes/nodes/planner.train.interlocking-guard-coverage.convention.yaml +29 -0
  786. package/planner-nodes/nodes/planner.train.interlocking-guard-grammar.convention.yaml +31 -0
  787. package/planner-nodes/nodes/planner.train.interlocking-home.convention.yaml +29 -0
  788. package/planner-nodes/nodes/planner.train.interlocking-message-payload-typed.convention.yaml +28 -0
  789. package/planner-nodes/nodes/planner.train.interlocking-payload-contract-body-required.convention.yaml +28 -0
  790. package/planner-nodes/nodes/planner.train.interlocking-payload-contract-registered.convention.yaml +31 -0
  791. package/planner-nodes/nodes/planner.train.interlocking-projection-equivalence.convention.yaml +32 -0
  792. package/planner-nodes/nodes/planner.train.interlocking-route-category-matches-train-id.convention.yaml +32 -0
  793. package/planner-nodes/nodes/planner.train.interlocking-route-resolution-deterministic.convention.yaml +30 -0
  794. package/planner-nodes/nodes/planner.train.interlocking-structural-residual-explicit.convention.yaml +30 -0
  795. package/planner-nodes/nodes/planner.train.interlocking-wmbt-surface-or-residual.convention.yaml +30 -0
  796. package/planner-nodes/nodes/planner.train.linearity.convention.yaml +28 -0
  797. package/planner-nodes/nodes/planner.train.naming.convention.yaml +26 -0
  798. package/planner-nodes/nodes/planner.train.participants.convention.yaml +27 -0
  799. package/planner-nodes/nodes/planner.train.production-implementation.convention.yaml +24 -0
  800. package/planner-nodes/nodes/planner.train.registry-coherence.convention.yaml +69 -0
  801. package/planner-nodes/nodes/planner.train.registry.convention.yaml +39 -0
  802. package/planner-nodes/nodes/planner.train.route-category-assessment.convention.yaml +43 -0
  803. package/planner-nodes/nodes/planner.train.route-space-admission.convention.yaml +41 -0
  804. package/planner-nodes/nodes/planner.train.scope.convention.yaml +38 -0
  805. package/planner-nodes/nodes/planner.train.sequence.convention.yaml +34 -0
  806. package/planner-nodes/nodes/planner.train.terminal-contract.convention.yaml +10 -0
  807. package/planner-nodes/nodes/planner.train.theme-alignment.convention.yaml +25 -0
  808. package/planner-nodes/nodes/planner.train.theme-orchestrator-urn.convention.yaml +27 -0
  809. package/planner-nodes/nodes/planner.train.theme-ranges.convention.yaml +28 -0
  810. package/planner-nodes/nodes/planner.train.validation-rules.convention.yaml +31 -0
  811. package/planner-nodes/nodes/planner.train.variation-strategies.convention.yaml +26 -0
  812. package/planner-nodes/nodes/planner.wagon.artifact-contracts.convention.yaml +29 -0
  813. package/planner-nodes/nodes/planner.wagon.complexity-model.convention.yaml +33 -0
  814. package/planner-nodes/nodes/planner.wagon.coupling-complexity.convention.yaml +32 -0
  815. package/planner-nodes/nodes/planner.wagon.definition.convention.yaml +30 -0
  816. package/planner-nodes/nodes/planner.wagon.features-format.convention.yaml +28 -0
  817. package/planner-nodes/nodes/planner.wagon.features.convention.yaml +27 -0
  818. package/planner-nodes/nodes/planner.wagon.logical-vs-filesystem-naming.convention.yaml +34 -0
  819. package/planner-nodes/nodes/planner.wagon.name-is-verb-object.convention.yaml +39 -0
  820. package/planner-nodes/nodes/planner.wagon.no-consume-cycle.convention.yaml +30 -0
  821. package/planner-nodes/nodes/planner.wagon.produce-consume-artifacts.convention.yaml +46 -0
  822. package/planner-nodes/nodes/planner.wagon.refinement-extraction.convention.yaml +49 -0
  823. package/planner-nodes/nodes/planner.wagon.semantic-coherence.convention.yaml +30 -0
  824. package/planner-nodes/nodes/planner.wagon.separability.convention.yaml +33 -0
  825. package/planner-nodes/nodes/planner.wagon.slug-dirname-conversion.convention.yaml +26 -0
  826. package/planner-nodes/nodes/planner.wagon.telemetry-filesystem.convention.yaml +52 -0
  827. package/planner-nodes/nodes/planner.wagon.urn-naming.convention.yaml +28 -0
  828. package/planner-nodes/nodes/planner.wagon.urn.convention.yaml +29 -0
  829. package/planner-nodes/nodes/planner.wmbt.context-clarifier.convention.yaml +24 -0
  830. package/planner-nodes/nodes/planner.wmbt.definition.convention.yaml +29 -0
  831. package/planner-nodes/nodes/planner.wmbt.dimension-selection.convention.yaml +37 -0
  832. package/planner-nodes/nodes/planner.wmbt.direction-selection.convention.yaml +41 -0
  833. package/planner-nodes/nodes/planner.wmbt.filename-pattern.convention.yaml +27 -0
  834. package/planner-nodes/nodes/planner.wmbt.lens-selection.convention.yaml +44 -0
  835. package/planner-nodes/nodes/planner.wmbt.must-have-smoke-acceptance.convention.yaml +55 -0
  836. package/planner-nodes/nodes/planner.wmbt.object-of-control.convention.yaml +26 -0
  837. package/planner-nodes/nodes/planner.wmbt.shape.convention.yaml +29 -0
  838. package/planner-nodes/nodes/planner.wmbt.splitting-rules.convention.yaml +37 -0
  839. package/planner-nodes/nodes/planner.wmbt.statement-template.convention.yaml +23 -0
  840. package/planner-nodes/nodes/planner.wmbt.step-code-vocabulary.convention.yaml +31 -0
  841. package/planner-nodes/nodes/planner.wmbt.urn-naming.convention.yaml +31 -0
  842. package/planner-schemas/acceptance.schema.json +396 -0
  843. package/planner-schemas/appendix.schema.json +78 -0
  844. package/planner-schemas/author/convention-node.schema.json +134 -0
  845. package/planner-schemas/author/gate.schema.json +36 -0
  846. package/planner-schemas/author/issue.schema.json +72 -0
  847. package/planner-schemas/author/relationship.schema.json +19 -0
  848. package/planner-schemas/author/scope.schema.json +28 -0
  849. package/planner-schemas/binding-lock.schema.json +38 -0
  850. package/planner-schemas/component.schema.json +114 -0
  851. package/planner-schemas/contract-registry.schema.json +47 -0
  852. package/planner-schemas/feature.schema.json +208 -0
  853. package/planner-schemas/journey.schema.json +225 -0
  854. package/planner-schemas/registry-index.schema.json +54 -0
  855. package/planner-schemas/substrate-lock.schema.json +41 -0
  856. package/planner-schemas/substrate.schema.json +38 -0
  857. package/planner-schemas/theme-registry.schema.json +28 -0
  858. package/planner-schemas/train-interlocking-registry.schema.json +49 -0
  859. package/planner-schemas/train-interlocking.schema.json +459 -0
  860. package/planner-schemas/train.schema.json +361 -0
  861. package/planner-schemas/wagon.schema.json +283 -0
  862. package/planner-schemas/wmbt.schema.json +68 -0
  863. package/src/ci.ts +9 -0
  864. package/src/cli.ts +91 -0
  865. package/src/docs-capability.ts +156 -0
  866. package/src/enforce.ts +103 -0
  867. package/src/hooks.ts +48 -0
  868. package/src/index.ts +13 -0
  869. package/src/planner-kernel.ts +112 -0
  870. package/src/planner-schema-validator.ts +101 -0
  871. package/src/planner-validators.ts +288 -0
  872. package/src/register.ts +8 -0
  873. package/src/release.ts +9 -0
  874. package/src/setup.ts +15 -0
  875. package/templates/github/atdd-bun-release.yml +16 -0
  876. package/templates/github/atdd-bun.yml +26 -0
@@ -0,0 +1,24 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.context-clarifier
3
+ kind: rule
4
+ status: active
5
+ name: WMBT context clarifier
6
+ statement: Declare a context clarifier — a detailed situational phrase specifying when/where/how the WMBT
7
+ applies (required, one line).
8
+ source:
9
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
10
+ legacy_section: context_clarifier
11
+ legacy_sha: 040256ed5588a6c7
12
+ extraction_mode: high_fidelity
13
+ parity:
14
+ source_fragments_preserved: true
15
+ examples_preserved: false
16
+ implementation_preserved: false
17
+ fix_hint_preserved: false
18
+ reviewed_at: '2026-06-16'
19
+ terms:
20
+ - term_id: context_clarifier
21
+ text: a one-line situational qualifier.
22
+ values:
23
+ required: true
24
+ pattern: detailed situational phrase, one line maximum
@@ -0,0 +1,29 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.definition
3
+ kind: family
4
+ status: draft
5
+ name: WMBT — advisory semantic anchor
6
+ statement: A WMBT (What Must Be True) is a falsifiable statement of a single outcome
7
+ that must hold for an artifact — scoped to one object of control along one dimension,
8
+ direction, and lens — declared with an id and a statement, and paired with the
9
+ acceptances that prove it, including at least one smoke acceptance. This node is an advisory semantic
10
+ anchor — it enforces nothing directly; the enforceable parts of this meaning are
11
+ decomposed into the constraint/rule nodes that require it.
12
+ terms:
13
+ - term_id: semantic_anchor
14
+ label: Advisory semantic anchor
15
+ text: a definitional node that gives the artifact a stable meaning but is not itself
16
+ bound to a validator; it is transitively protected by the enforceable constraint/rule
17
+ nodes that require it.
18
+ - term_id: wmbt
19
+ label: WMBT
20
+ text: wmbt -> {well-shaped, single-object-of-control, single-axis, statement-formed,
21
+ smoke-covered}.
22
+ values:
23
+ well-shaped: declares its id, its statement, and the artifacts that prove the statement
24
+ (see planner.wmbt.shape).
25
+ single-object-of-control: scoped to exactly one object of control (see planner.wmbt.object-of-control).
26
+ single-axis: one dimension, one direction, one lens (see planner.wmbt.dimension-selection,
27
+ planner.wmbt.direction-selection, planner.wmbt.lens-selection, planner.wmbt.splitting-rules).
28
+ statement-formed: follows the statement template (see planner.wmbt.statement-template).
29
+ smoke-covered: has at least one smoke acceptance (see planner.wmbt.must-have-smoke-acceptance).
@@ -0,0 +1,37 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.dimension-selection
3
+ kind: family
4
+ status: active
5
+ name: WMBT dimensions
6
+ statement: Select exactly one optimization dimension (the core metric the user wants to optimize) for
7
+ a WMBT.
8
+ source:
9
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
10
+ legacy_section: dimensions + dimension_instructions
11
+ legacy_sha: 040256ed5588a6c7
12
+ extraction_mode: high_fidelity
13
+ content:
14
+ operational_guidance: Match the user's intent to a dimension via its keywords; decompose into dimension/actor/action/object
15
+ using the description and rationale.
16
+ parity:
17
+ source_fragments_preserved: true
18
+ examples_preserved: true
19
+ implementation_preserved: false
20
+ fix_hint_preserved: false
21
+ reviewed_at: '2026-06-16'
22
+ terms:
23
+ - term_id: dimension
24
+ label: Dimensions
25
+ text: name -> {keywords, description}.
26
+ values:
27
+ Time: duration/speed/waiting/delay/rework — the performer's most finite resource
28
+ Effort: physical or cognitive load — muscular force or concentration/learning/decision-making
29
+ Likelihood: probability of an outcome — predictability, control, success vs error
30
+ Frequency: rate of occurrence — reduce repetitive/non-value-added tasks
31
+ Quantity/Amount: volume of a resource consumed or produced — optimize inputs/outputs
32
+ Financial Value: monetary impact — cost, revenue, opportunity cost
33
+ examples:
34
+ positive:
35
+ - 'Time: minimize onboarding time'
36
+ - 'Likelihood: increase usable experiment results'
37
+ - 'Effort: reduce mental effort to find a bug'
@@ -0,0 +1,41 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.direction-selection
3
+ kind: family
4
+ status: active
5
+ name: WMBT directions
6
+ statement: Select the optimization direction verb that matches the goal, from the controlled palette.
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: directions
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ parity:
13
+ source_fragments_preserved: true
14
+ examples_preserved: false
15
+ implementation_preserved: false
16
+ fix_hint_preserved: false
17
+ reviewed_at: '2026-06-16'
18
+ terms:
19
+ - term_id: direction
20
+ label: Direction palette
21
+ text: canonical direction -> synonyms.
22
+ values:
23
+ minimize:
24
+ - reduce
25
+ - decrease
26
+ - lower
27
+ - shrink
28
+ maximize:
29
+ - increase
30
+ - boost
31
+ - raise
32
+ - grow
33
+ increase:
34
+ - improve
35
+ - elevate
36
+ - accelerate
37
+ decrease:
38
+ - cut
39
+ - dampen
40
+ - slow
41
+ - limit
@@ -0,0 +1,27 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.filename-pattern
3
+ kind: rule
4
+ status: active
5
+ name: WMBT filename pattern
6
+ statement: A WMBT file is named {STEP_CODE}{NNN}.yaml — step-coded, no prefix.
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: filename
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ content:
13
+ examples:
14
+ - E001.yaml
15
+ - L045.yaml
16
+ - K023.yaml
17
+ parity:
18
+ source_fragments_preserved: true
19
+ examples_preserved: true
20
+ implementation_preserved: false
21
+ fix_hint_preserved: false
22
+ reviewed_at: '2026-06-16'
23
+ terms:
24
+ - term_id: filename
25
+ text: the WMBT file name.
26
+ values:
27
+ pattern: '{STEP_CODE}{NNN}.yaml'
@@ -0,0 +1,44 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.lens-selection
3
+ kind: family
4
+ status: active
5
+ name: WMBT lenses
6
+ statement: Select one quality lens (social, functional, or emotional) most relevant to the work.
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: lenses
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ parity:
13
+ source_fragments_preserved: true
14
+ examples_preserved: false
15
+ implementation_preserved: false
16
+ fix_hint_preserved: false
17
+ reviewed_at: '2026-06-16'
18
+ terms:
19
+ - term_id: social_lens
20
+ text: identity/belonging drives.
21
+ values:
22
+ belong: accepted by a group, align with norms
23
+ stand_out: differentiate positively — uniqueness/status/taste/expertise
24
+ affirm: reinforce an existing identity
25
+ aspire: become a better future self
26
+ - term_id: functional_lens
27
+ text: task-outcome qualities.
28
+ values:
29
+ efficiency: minimize time/effort/resources
30
+ effectiveness: improve quality/accuracy/impact
31
+ availability: accessible and operational when needed
32
+ adaptability: handle new/changing requirements
33
+ sustainability: maintain performance over time
34
+ - term_id: emotional_lens
35
+ text: felt reactions.
36
+ values:
37
+ joy: pleasure when friction is removed
38
+ trust: confidence it is reliable and safe
39
+ fear: anxiety about a negative outcome
40
+ surprise: reaction to the unexpected
41
+ sadness: unhappiness from loss/blocked goal
42
+ disgust: aversion to unethical/cluttered design
43
+ anger: frustration when things fail
44
+ anticipation: hopeful expectation
@@ -0,0 +1,55 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.must-have-smoke-acceptance
3
+ kind: rule
4
+ status: active
5
+ name: WMBT must have a SMOKE acceptance
6
+ statement: Every WMBT must declare at least one acceptance URN with the SMOKE harness token (acc:<wagon>:<wmbt_id>-SMOKE-NNN[-<slug>])
7
+ so the lifecycle has explicit real-infrastructure coverage before REFACTOR.
8
+ implementation:
9
+ type: validator
10
+ ref: conventions/coverage/test_wmbt_has_smoke_acceptance::test_fault_injection_legacy_parity_both_catch
11
+ source:
12
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
13
+ legacy_section: rules
14
+ legacy_sha: 040256ed5588a6c7
15
+ extraction_mode: high_fidelity
16
+ legacy_rule_id: planner.wmbt.must-have-smoke-acceptance
17
+ content:
18
+ normative_text: Mirrors tester.smoke.pres (#293) — closes the asymmetry where tester checks coverage
19
+ of SMOKE tests that exist but no rule requires SMOKE acceptances be declared in the first place.
20
+ fix_hint: "The named WMBT declares 0 acceptance URNs with a SMOKE harness token,\nso the lifecycle has\
21
+ \ no explicit real-infrastructure verification\nbetween GREEN and REFACTOR. Repair as follows\n(run\
22
+ \ `atdd repo resolve <wmbt-urn>` to inspect the WMBT file path,\n e.g. \"atdd repo resolve wmbt:govern-lifecycle:E003\"\
23
+ ):\n\n 1. Open the WMBT YAML named in the violation location\n (e.g. \"plan/govern_lifecycle/E003.yaml:1\"\
24
+ ).\n 2. Add at least one acceptance whose identity.urn matches\n \"acc:<wagon>:<wmbt_id>-SMOKE-NNN[-<slug>]\"\
25
+ \ and whose\n identity.phase is \"SMOKE\".\n 3. If this WMBT is genuinely docs-only / metadata\
26
+ \ (no real infra\n to verify), add a suppression marker on the urn: line of the\n WMBT YAML\
27
+ \ — substitute YYYY-MM-DD with today + 90 days:\n urn: \"wmbt:<wagon>:<wmbt_id>\" # atdd:suppress(planner.wmbt.must-have-smoke-acceptance)\
28
+ \ UNTIL=YYYY-MM-DD\n 4. Re-run the validator to confirm clean\n (pytest src/atdd/validators/conventions/coverage/test_wmbt_has_smoke_acceptance.py\
29
+ \ -v).\n\nSee src/atdd/tester/conventions/smoke.convention.yaml::TESTER-SMOKE-PRES-001\nfor the template\
30
+ \ pattern this rule mirrors, and issue #681 for the\nsubstrate-asymmetry incident this rule closes."
31
+ exceptions:
32
+ - 'Docs-only WMBTs that have no real infra to verify can suppress inline with `# atdd:suppress(planner.wmbt.must-have-smoke-acceptance)
33
+ UNTIL=YYYY-MM-DD` on the WMBT''s urn: line.'
34
+ metadata:
35
+ severity: 3
36
+ disposition: suppress-and-clean
37
+ introduced_in: 3.50.0
38
+ aliases: []
39
+ parity:
40
+ source_fragments_preserved: true
41
+ examples_preserved: false
42
+ implementation_preserved: true
43
+ fix_hint_preserved: true
44
+ reviewed_at: '2026-06-16'
45
+ terms:
46
+ - term_id: smoke_acceptance
47
+ text: an acceptance URN carrying the SMOKE harness token.
48
+ values:
49
+ urn_shape: acc:<wagon>:<wmbt_id>-SMOKE-NNN[-<slug>]
50
+ phase: SMOKE
51
+ - term_id: suppression_marker
52
+ text: inline opt-out for genuinely docs-only WMBTs with no real infra.
53
+ values:
54
+ syntax: '# atdd:suppress(planner.wmbt.must-have-smoke-acceptance) UNTIL=YYYY-MM-DD'
55
+ placement: 'the WMBT''s urn: line'
@@ -0,0 +1,26 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.object-of-control
3
+ kind: rule
4
+ status: active
5
+ name: WMBT object of control
6
+ statement: Synthesize the specific thing being controlled or manipulated as a kebab-case noun phrase.
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: object_of_control
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ parity:
13
+ source_fragments_preserved: true
14
+ examples_preserved: true
15
+ implementation_preserved: false
16
+ fix_hint_preserved: false
17
+ reviewed_at: '2026-06-16'
18
+ terms:
19
+ - term_id: object_of_control
20
+ text: the controlled subject of the WMBT.
21
+ values:
22
+ pattern: kebab-case noun phrase
23
+ examples:
24
+ positive:
25
+ - user-profile
26
+ - payment-flow
@@ -0,0 +1,29 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.shape
3
+ kind: rule
4
+ status: active
5
+ name: WMBT shape
6
+ statement: A WMBT entry declares its id, its statement, and the artifacts that prove the statement.
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: rules
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ legacy_rule_id: planner.wmbt.shape
13
+ metadata:
14
+ aliases:
15
+ - PLANNER-WMBT-SHAPE-001
16
+ severity: 2
17
+ disposition: documentation-only
18
+ introduced_in: 1.67.0
19
+ parity:
20
+ source_fragments_preserved: true
21
+ examples_preserved: false
22
+ implementation_preserved: false
23
+ fix_hint_preserved: false
24
+ reviewed_at: '2026-06-16'
25
+ terms:
26
+ - term_id: wmbt_entry
27
+ text: a What-Must-Be-True entry in a wagon decomposition.
28
+ - term_id: proving_artifacts
29
+ text: the acceptances/tests that prove the WMBT statement.
@@ -0,0 +1,37 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.splitting-rules
3
+ kind: rule
4
+ status: active
5
+ name: WMBT splitting rules
6
+ statement: Keep <=5 acceptances per WMBT; split on mixed dimensions, multiple actors, or divergent gates;
7
+ keep together for single-truth-multiple-layers or a coherent sequence.
8
+ source:
9
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
10
+ legacy_section: splitting_rules
11
+ legacy_sha: 040256ed5588a6c7
12
+ extraction_mode: high_fidelity
13
+ content:
14
+ normative_text: acceptance_cap maximum 5 — beyond 5 indicates mixed concerns that should be separate
15
+ WMBTs. Advisory guidance, not schema-enforced (wmbt.schema.json is not applied as a file-level
16
+ gate; see #760). Aligns with conventions:planner:acceptance acceptance_cap.
17
+ operational_guidance: 'when_to_split: mixed_dimensions (statement mentions multiple dimensions) / multiple_actors
18
+ (different actors+actions) / divergent_gates (ALL vs ANY). when_to_keep_together: single_truth_multiple_layers
19
+ (same outcome at UI/API/DB, gate ALL) / coherent_sequence (sequential steps of one process).'
20
+ parity:
21
+ source_fragments_preserved: true
22
+ examples_preserved: false
23
+ implementation_preserved: false
24
+ fix_hint_preserved: false
25
+ reviewed_at: '2026-06-16'
26
+ terms:
27
+ - term_id: acceptance_cap
28
+ text: the per-WMBT acceptance ceiling.
29
+ values:
30
+ maximum: 5
31
+ - term_id: split_trigger
32
+ text: when to split a WMBT.
33
+ values:
34
+ allowed:
35
+ - mixed_dimensions
36
+ - multiple_actors
37
+ - divergent_gates
@@ -0,0 +1,23 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.statement-template
3
+ kind: rule
4
+ status: active
5
+ name: WMBT statement template
6
+ statement: 'A WMBT statement is composed as: {direction} {dimension} of {object_of_control} [context_clarifier].'
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: statement + generators
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ parity:
13
+ source_fragments_preserved: true
14
+ examples_preserved: false
15
+ implementation_preserved: false
16
+ fix_hint_preserved: false
17
+ reviewed_at: '2026-06-16'
18
+ terms:
19
+ - term_id: statement_pattern
20
+ text: the WMBT statement composition.
21
+ values:
22
+ pattern: '${direction} ${dimension} of ${object_of_control}${context_clarifier ? '' '' + context_clarifier
23
+ : ''''}'
@@ -0,0 +1,31 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.step-code-vocabulary
3
+ kind: family
4
+ status: active
5
+ name: WMBT step codes
6
+ statement: The single-letter step codes (D L P C E M Y R K) that prefix a WMBT sequence.
7
+ source:
8
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
9
+ legacy_section: urn_naming.step_codes
10
+ legacy_sha: 040256ed5588a6c7
11
+ extraction_mode: high_fidelity
12
+ parity:
13
+ source_fragments_preserved: true
14
+ examples_preserved: false
15
+ implementation_preserved: false
16
+ fix_hint_preserved: false
17
+ reviewed_at: '2026-06-16'
18
+ terms:
19
+ - term_id: step_code
20
+ label: Step codes
21
+ text: letter -> step name + intent.
22
+ values:
23
+ D: define - Define requirements, criteria, or constraints
24
+ L: locate - Locate, discover, or find resources
25
+ P: prepare - Prepare, setup, or configure prerequisites
26
+ C: confirm - Confirm, verify, or validate conditions
27
+ E: execute - Execute, perform, or run the main action
28
+ M: monitor - Monitor, observe, or track progress
29
+ Y: modify - Modify, update, or adjust state
30
+ R: resolve - Resolve, fix, or handle issues
31
+ K: conclude - Conclude, complete, or finalize
@@ -0,0 +1,31 @@
1
+ schema_version: 1.1.0
2
+ rule_id: planner.wmbt.urn-naming
3
+ kind: rule
4
+ status: active
5
+ name: WMBT URN naming
6
+ statement: A WMBT URN is wmbt:{wagon}:{STEP_CODE}{NNN} — a unique step-coded identifier built via URNBuilder.wmbt(wagon_id,
7
+ sequence).
8
+ source:
9
+ legacy_path: src/atdd/planner/conventions/wmbt.convention.yaml
10
+ legacy_section: urn_naming
11
+ legacy_sha: 040256ed5588a6c7
12
+ extraction_mode: high_fidelity
13
+ content:
14
+ normative_text: wagon = parent wagon (kebab-case); STEP_CODE = single step letter; NNN = three-digit
15
+ zero-padded sequence (001-999).
16
+ examples:
17
+ - wmbt:resolve-dilemmas:E001
18
+ - wmbt:burn-timebank:M045
19
+ - wmbt:user-mgmt:C023
20
+ parity:
21
+ source_fragments_preserved: true
22
+ examples_preserved: true
23
+ implementation_preserved: false
24
+ fix_hint_preserved: false
25
+ reviewed_at: '2026-06-16'
26
+ terms:
27
+ - term_id: wmbt_urn
28
+ text: the WMBT identifier.
29
+ values:
30
+ pattern: ^wmbt:[a-z][a-z0-9-]*:[DLPCEMYRK][0-9]{3}$
31
+ sequence_range: 001-999