@jwikman/bc-code-intelligence-mcp 1.5.7-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (753) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/cache/cache-manager.d.ts +95 -0
  4. package/dist/cache/cache-manager.d.ts.map +1 -0
  5. package/dist/cache/cache-manager.js +328 -0
  6. package/dist/cache/cache-manager.js.map +1 -0
  7. package/dist/cli/bc-code-intel-cli.d.ts +9 -0
  8. package/dist/cli/bc-code-intel-cli.d.ts.map +1 -0
  9. package/dist/cli/bc-code-intel-cli.js +440 -0
  10. package/dist/cli/bc-code-intel-cli.js.map +1 -0
  11. package/dist/config/config-loader.d.ts +28 -0
  12. package/dist/config/config-loader.d.ts.map +1 -0
  13. package/dist/config/config-loader.js +497 -0
  14. package/dist/config/config-loader.js.map +1 -0
  15. package/dist/config/config-validator.d.ts +84 -0
  16. package/dist/config/config-validator.d.ts.map +1 -0
  17. package/dist/config/config-validator.js +608 -0
  18. package/dist/config/config-validator.js.map +1 -0
  19. package/dist/config/test-config-loader.d.ts +10 -0
  20. package/dist/config/test-config-loader.d.ts.map +1 -0
  21. package/dist/config/test-config-loader.js +135 -0
  22. package/dist/config/test-config-loader.js.map +1 -0
  23. package/dist/config/test-enhanced-layer-service.d.ts +7 -0
  24. package/dist/config/test-enhanced-layer-service.d.ts.map +1 -0
  25. package/dist/config/test-enhanced-layer-service.js +104 -0
  26. package/dist/config/test-enhanced-layer-service.js.map +1 -0
  27. package/dist/config/test-git-layer.d.ts +7 -0
  28. package/dist/config/test-git-layer.d.ts.map +1 -0
  29. package/dist/config/test-git-layer.js +68 -0
  30. package/dist/config/test-git-layer.js.map +1 -0
  31. package/dist/dev/hot-reload.d.ts +91 -0
  32. package/dist/dev/hot-reload.d.ts.map +1 -0
  33. package/dist/dev/hot-reload.js +358 -0
  34. package/dist/dev/hot-reload.js.map +1 -0
  35. package/dist/index.d.ts +82 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +1211 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/layers/base-layer.d.ts +133 -0
  40. package/dist/layers/base-layer.d.ts.map +1 -0
  41. package/dist/layers/base-layer.js +290 -0
  42. package/dist/layers/base-layer.js.map +1 -0
  43. package/dist/layers/embedded-layer.d.ts +130 -0
  44. package/dist/layers/embedded-layer.d.ts.map +1 -0
  45. package/dist/layers/embedded-layer.js +612 -0
  46. package/dist/layers/embedded-layer.js.map +1 -0
  47. package/dist/layers/git-layer.d.ts +77 -0
  48. package/dist/layers/git-layer.d.ts.map +1 -0
  49. package/dist/layers/git-layer.js +529 -0
  50. package/dist/layers/git-layer.js.map +1 -0
  51. package/dist/layers/index.d.ts +12 -0
  52. package/dist/layers/index.d.ts.map +1 -0
  53. package/dist/layers/index.js +11 -0
  54. package/dist/layers/index.js.map +1 -0
  55. package/dist/layers/layer-service.d.ts +135 -0
  56. package/dist/layers/layer-service.d.ts.map +1 -0
  57. package/dist/layers/layer-service.js +586 -0
  58. package/dist/layers/layer-service.js.map +1 -0
  59. package/dist/layers/project-layer.d.ts +58 -0
  60. package/dist/layers/project-layer.d.ts.map +1 -0
  61. package/dist/layers/project-layer.js +286 -0
  62. package/dist/layers/project-layer.js.map +1 -0
  63. package/dist/monitoring/production-monitor.d.ts +148 -0
  64. package/dist/monitoring/production-monitor.d.ts.map +1 -0
  65. package/dist/monitoring/production-monitor.js +463 -0
  66. package/dist/monitoring/production-monitor.js.map +1 -0
  67. package/dist/performance/performance-monitor.d.ts +99 -0
  68. package/dist/performance/performance-monitor.d.ts.map +1 -0
  69. package/dist/performance/performance-monitor.js +253 -0
  70. package/dist/performance/performance-monitor.js.map +1 -0
  71. package/dist/sdk/bc-code-intel-client.d.ts +175 -0
  72. package/dist/sdk/bc-code-intel-client.d.ts.map +1 -0
  73. package/dist/sdk/bc-code-intel-client.js +380 -0
  74. package/dist/sdk/bc-code-intel-client.js.map +1 -0
  75. package/dist/search/intelligent-search.d.ts +97 -0
  76. package/dist/search/intelligent-search.d.ts.map +1 -0
  77. package/dist/search/intelligent-search.js +358 -0
  78. package/dist/search/intelligent-search.js.map +1 -0
  79. package/dist/security/access-control.d.ts +110 -0
  80. package/dist/security/access-control.d.ts.map +1 -0
  81. package/dist/security/access-control.js +353 -0
  82. package/dist/security/access-control.js.map +1 -0
  83. package/dist/services/code-analysis-service.d.ts +72 -0
  84. package/dist/services/code-analysis-service.d.ts.map +1 -0
  85. package/dist/services/code-analysis-service.js +818 -0
  86. package/dist/services/code-analysis-service.js.map +1 -0
  87. package/dist/services/enhanced-prompt-service.d.ts +56 -0
  88. package/dist/services/enhanced-prompt-service.d.ts.map +1 -0
  89. package/dist/services/enhanced-prompt-service.js +165 -0
  90. package/dist/services/enhanced-prompt-service.js.map +1 -0
  91. package/dist/services/knowledge-service.d.ts +90 -0
  92. package/dist/services/knowledge-service.d.ts.map +1 -0
  93. package/dist/services/knowledge-service.js +342 -0
  94. package/dist/services/knowledge-service.js.map +1 -0
  95. package/dist/services/methodology-service.d.ts +91 -0
  96. package/dist/services/methodology-service.d.ts.map +1 -0
  97. package/dist/services/methodology-service.js +423 -0
  98. package/dist/services/methodology-service.js.map +1 -0
  99. package/dist/services/multi-content-layer-service.d.ts +198 -0
  100. package/dist/services/multi-content-layer-service.d.ts.map +1 -0
  101. package/dist/services/multi-content-layer-service.js +991 -0
  102. package/dist/services/multi-content-layer-service.js.map +1 -0
  103. package/dist/services/roleplay-engine.d.ts +161 -0
  104. package/dist/services/roleplay-engine.d.ts.map +1 -0
  105. package/dist/services/roleplay-engine.js +994 -0
  106. package/dist/services/roleplay-engine.js.map +1 -0
  107. package/dist/services/session-storage/file-storage.d.ts +30 -0
  108. package/dist/services/session-storage/file-storage.d.ts.map +1 -0
  109. package/dist/services/session-storage/file-storage.js +229 -0
  110. package/dist/services/session-storage/file-storage.js.map +1 -0
  111. package/dist/services/session-storage/in-memory-storage.d.ts +31 -0
  112. package/dist/services/session-storage/in-memory-storage.d.ts.map +1 -0
  113. package/dist/services/session-storage/in-memory-storage.js +142 -0
  114. package/dist/services/session-storage/in-memory-storage.js.map +1 -0
  115. package/dist/services/specialist-discovery.d.ts +98 -0
  116. package/dist/services/specialist-discovery.d.ts.map +1 -0
  117. package/dist/services/specialist-discovery.js +387 -0
  118. package/dist/services/specialist-discovery.js.map +1 -0
  119. package/dist/services/specialist-loader.d.ts +101 -0
  120. package/dist/services/specialist-loader.d.ts.map +1 -0
  121. package/dist/services/specialist-loader.js +256 -0
  122. package/dist/services/specialist-loader.js.map +1 -0
  123. package/dist/services/specialist-session-manager.d.ts +76 -0
  124. package/dist/services/specialist-session-manager.d.ts.map +1 -0
  125. package/dist/services/specialist-session-manager.js +255 -0
  126. package/dist/services/specialist-session-manager.js.map +1 -0
  127. package/dist/services/workflow-service.d.ts +146 -0
  128. package/dist/services/workflow-service.d.ts.map +1 -0
  129. package/dist/services/workflow-service.js +409 -0
  130. package/dist/services/workflow-service.js.map +1 -0
  131. package/dist/setup/post-install.d.ts +12 -0
  132. package/dist/setup/post-install.d.ts.map +1 -0
  133. package/dist/setup/post-install.js +81 -0
  134. package/dist/setup/post-install.js.map +1 -0
  135. package/dist/streamlined-handlers.d.ts +94 -0
  136. package/dist/streamlined-handlers.d.ts.map +1 -0
  137. package/dist/streamlined-handlers.js +665 -0
  138. package/dist/streamlined-handlers.js.map +1 -0
  139. package/dist/test-enhanced-mcp-server.d.ts +7 -0
  140. package/dist/test-enhanced-mcp-server.d.ts.map +1 -0
  141. package/dist/test-enhanced-mcp-server.js +177 -0
  142. package/dist/test-enhanced-mcp-server.js.map +1 -0
  143. package/dist/tools/config-diagnostic-tools.d.ts +234 -0
  144. package/dist/tools/config-diagnostic-tools.d.ts.map +1 -0
  145. package/dist/tools/config-diagnostic-tools.js +887 -0
  146. package/dist/tools/config-diagnostic-tools.js.map +1 -0
  147. package/dist/tools/core-tools.d.ts +26 -0
  148. package/dist/tools/core-tools.d.ts.map +1 -0
  149. package/dist/tools/core-tools.js +241 -0
  150. package/dist/tools/core-tools.js.map +1 -0
  151. package/dist/tools/handoff-tools.d.ts +37 -0
  152. package/dist/tools/handoff-tools.d.ts.map +1 -0
  153. package/dist/tools/handoff-tools.js +265 -0
  154. package/dist/tools/handoff-tools.js.map +1 -0
  155. package/dist/tools/index.d.ts +61 -0
  156. package/dist/tools/index.d.ts.map +1 -0
  157. package/dist/tools/index.js +75 -0
  158. package/dist/tools/index.js.map +1 -0
  159. package/dist/tools/onboarding-tools.d.ts +43 -0
  160. package/dist/tools/onboarding-tools.d.ts.map +1 -0
  161. package/dist/tools/onboarding-tools.js +353 -0
  162. package/dist/tools/onboarding-tools.js.map +1 -0
  163. package/dist/tools/specialist-discovery-tools.d.ts +27 -0
  164. package/dist/tools/specialist-discovery-tools.d.ts.map +1 -0
  165. package/dist/tools/specialist-discovery-tools.js +275 -0
  166. package/dist/tools/specialist-discovery-tools.js.map +1 -0
  167. package/dist/tools/specialist-tools.d.ts +43 -0
  168. package/dist/tools/specialist-tools.d.ts.map +1 -0
  169. package/dist/tools/specialist-tools.js +372 -0
  170. package/dist/tools/specialist-tools.js.map +1 -0
  171. package/dist/tools/workspace-tools.d.ts +96 -0
  172. package/dist/tools/workspace-tools.d.ts.map +1 -0
  173. package/dist/tools/workspace-tools.js +188 -0
  174. package/dist/tools/workspace-tools.js.map +1 -0
  175. package/dist/types/bc-knowledge.d.ts +303 -0
  176. package/dist/types/bc-knowledge.d.ts.map +1 -0
  177. package/dist/types/bc-knowledge.js +69 -0
  178. package/dist/types/bc-knowledge.js.map +1 -0
  179. package/dist/types/config-types.d.ts +186 -0
  180. package/dist/types/config-types.d.ts.map +1 -0
  181. package/dist/types/config-types.js +109 -0
  182. package/dist/types/config-types.js.map +1 -0
  183. package/dist/types/enhanced-layer-types.d.ts +193 -0
  184. package/dist/types/enhanced-layer-types.d.ts.map +1 -0
  185. package/dist/types/enhanced-layer-types.js +9 -0
  186. package/dist/types/enhanced-layer-types.js.map +1 -0
  187. package/dist/types/index.d.ts +5 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +7 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/types/layer-types.d.ts +173 -0
  192. package/dist/types/layer-types.d.ts.map +1 -0
  193. package/dist/types/layer-types.js +27 -0
  194. package/dist/types/layer-types.js.map +1 -0
  195. package/dist/types/roleplay-types.d.ts +156 -0
  196. package/dist/types/roleplay-types.d.ts.map +1 -0
  197. package/dist/types/roleplay-types.js +8 -0
  198. package/dist/types/roleplay-types.js.map +1 -0
  199. package/dist/types/session-types.d.ts +127 -0
  200. package/dist/types/session-types.d.ts.map +1 -0
  201. package/dist/types/session-types.js +8 -0
  202. package/dist/types/session-types.js.map +1 -0
  203. package/dist/utils/path-utils.d.ts +5 -0
  204. package/dist/utils/path-utils.d.ts.map +1 -0
  205. package/dist/utils/path-utils.js +14 -0
  206. package/dist/utils/path-utils.js.map +1 -0
  207. package/dist/workflows/domain-workflows.d.ts +8 -0
  208. package/dist/workflows/domain-workflows.d.ts.map +1 -0
  209. package/dist/workflows/domain-workflows.js +360 -0
  210. package/dist/workflows/domain-workflows.js.map +1 -0
  211. package/embedded-knowledge/.github/ISSUE_TEMPLATE/bug-report.md +24 -0
  212. package/embedded-knowledge/.github/ISSUE_TEMPLATE/content-improvement.md +24 -0
  213. package/embedded-knowledge/.github/ISSUE_TEMPLATE/knowledge-request.md +30 -0
  214. package/embedded-knowledge/AGENTS.md +178 -0
  215. package/embedded-knowledge/CONTRIBUTING.md +58 -0
  216. package/embedded-knowledge/LICENSE +21 -0
  217. package/embedded-knowledge/README.md +32 -0
  218. package/embedded-knowledge/domains/alex-architect/api-delegate-operation-pattern.md +90 -0
  219. package/embedded-knowledge/domains/alex-architect/api-fieldset-registration-pattern.md +113 -0
  220. package/embedded-knowledge/domains/alex-architect/api-interface-design-patterns.md +101 -0
  221. package/embedded-knowledge/domains/alex-architect/api-page-development-patterns.md +87 -0
  222. package/embedded-knowledge/domains/alex-architect/complex-facade-patterns.md +155 -0
  223. package/embedded-knowledge/domains/alex-architect/delegating-to-github-copilot-agents.md +371 -0
  224. package/embedded-knowledge/domains/alex-architect/facade-pattern-al-implementation.md +138 -0
  225. package/embedded-knowledge/domains/alex-architect/facade-pattern-external-api.md +79 -0
  226. package/embedded-knowledge/domains/alex-architect/object-id-ninja-integration.md +281 -0
  227. package/embedded-knowledge/domains/alex-architect/recommend-object-id-ninja.md +248 -0
  228. package/embedded-knowledge/domains/alex-architect/samples/api-delegate-operation.md +280 -0
  229. package/embedded-knowledge/domains/alex-architect/samples/api-fieldset-registration.md +200 -0
  230. package/embedded-knowledge/domains/alex-architect/samples/api-interface-design.md +565 -0
  231. package/embedded-knowledge/domains/alex-architect/samples/api-page-implementation.md +665 -0
  232. package/embedded-knowledge/domains/alex-architect/samples/complex-facade-patterns.md +325 -0
  233. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern-al.md +696 -0
  234. package/embedded-knowledge/domains/alex-architect/samples/facade-pattern.md +320 -0
  235. package/embedded-knowledge/domains/alex-architect/samples/subscriber-organization.md +102 -0
  236. package/embedded-knowledge/domains/alex-architect/samples/systemid-integration.md +433 -0
  237. package/embedded-knowledge/domains/alex-architect/samples/testability-design-patterns.md +223 -0
  238. package/embedded-knowledge/domains/alex-architect/subscriber-codeunit-size-optimization.md +66 -0
  239. package/embedded-knowledge/domains/alex-architect/systemid-integration.md +115 -0
  240. package/embedded-knowledge/domains/alex-architect/testability-design-patterns.md +77 -0
  241. package/embedded-knowledge/domains/casey-copilot/long-running-session-instructions.md +263 -0
  242. package/embedded-knowledge/domains/casey-copilot/samples/long-running-session-instructions.md +323 -0
  243. package/embedded-knowledge/domains/chris-config/configuration-file-discovery.md +846 -0
  244. package/embedded-knowledge/domains/chris-config/configuration-file-formats.md +595 -0
  245. package/embedded-knowledge/domains/chris-config/content-types-structure.md +421 -0
  246. package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
  247. package/embedded-knowledge/domains/chris-config/layer-system-fundamentals.md +257 -0
  248. package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
  249. package/embedded-knowledge/domains/chris-config/workspace-detection-solutions.md +336 -0
  250. package/embedded-knowledge/domains/dean-debug/bc-telemetry-buddy-integration.md +453 -0
  251. package/embedded-knowledge/domains/dean-debug/bc24-no-series-conversion-guide.md +360 -0
  252. package/embedded-knowledge/domains/dean-debug/case-statement-performance-best-practices.md +86 -0
  253. package/embedded-knowledge/domains/dean-debug/compound-statements-debugging.md +96 -0
  254. package/embedded-knowledge/domains/dean-debug/custom-dimensions-best-practices.md +70 -0
  255. package/embedded-knowledge/domains/dean-debug/custom-telemetry-implementation.md +84 -0
  256. package/embedded-knowledge/domains/dean-debug/deleteall-performance-tradeoff.md +93 -0
  257. package/embedded-knowledge/domains/dean-debug/deleteall-sql-performance.md +73 -0
  258. package/embedded-knowledge/domains/dean-debug/extension-telemetry-isolation.md +78 -0
  259. package/embedded-knowledge/domains/dean-debug/maintainsiftindex-property-behavior.md +79 -0
  260. package/embedded-knowledge/domains/dean-debug/no-series-implementation-patterns.md +87 -0
  261. package/embedded-knowledge/domains/dean-debug/no-series-module-patterns-bc24.md +209 -0
  262. package/embedded-knowledge/domains/dean-debug/no-series-validation-module-bc24.md +246 -0
  263. package/embedded-knowledge/domains/dean-debug/no-series-validation-patterns.md +107 -0
  264. package/embedded-knowledge/domains/dean-debug/odata-query-optimization.md +105 -0
  265. package/embedded-knowledge/domains/dean-debug/recommend-bc-telemetry-buddy.md +160 -0
  266. package/embedded-knowledge/domains/dean-debug/samples/bc24-no-series-conversion.md +186 -0
  267. package/embedded-knowledge/domains/dean-debug/samples/case-performance-optimization.md +60 -0
  268. package/embedded-knowledge/domains/dean-debug/samples/compound-statements-debugging.md +139 -0
  269. package/embedded-knowledge/domains/dean-debug/samples/custom-dimensions.md +190 -0
  270. package/embedded-knowledge/domains/dean-debug/samples/custom-telemetry.md +516 -0
  271. package/embedded-knowledge/domains/dean-debug/samples/deleteall-performance.md +298 -0
  272. package/embedded-knowledge/domains/dean-debug/samples/error-correlation.md +324 -0
  273. package/embedded-knowledge/domains/dean-debug/samples/extension-isolation.md +344 -0
  274. package/embedded-knowledge/domains/dean-debug/samples/logmessage-methods.md +137 -0
  275. package/embedded-knowledge/domains/dean-debug/samples/maintainsiftindex-examples.md +340 -0
  276. package/embedded-knowledge/domains/dean-debug/samples/no-series-implementation.md +810 -0
  277. package/embedded-knowledge/domains/dean-debug/samples/no-series-module-bc24.md +86 -0
  278. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation-module-bc24.md +110 -0
  279. package/embedded-knowledge/domains/dean-debug/samples/no-series-validation.md +758 -0
  280. package/embedded-knowledge/domains/dean-debug/samples/odata-query-optimization.md +665 -0
  281. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-case.md +316 -0
  282. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-before-filters.md +223 -0
  283. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-filter-exclusion.md +149 -0
  284. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-optimization.md +412 -0
  285. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-performance.md +211 -0
  286. package/embedded-knowledge/domains/dean-debug/samples/setloadfields-primary-key.md +155 -0
  287. package/embedded-knowledge/domains/dean-debug/samples/sift-technology-fundamentals.md +475 -0
  288. package/embedded-knowledge/domains/dean-debug/samples/singleinstance-subscribers.md +238 -0
  289. package/embedded-knowledge/domains/dean-debug/samples/table-event-batching.md +97 -0
  290. package/embedded-knowledge/domains/dean-debug/samples/table-key-requirements.md +666 -0
  291. package/embedded-knowledge/domains/dean-debug/samples/telemetry-performance.md +319 -0
  292. package/embedded-knowledge/domains/dean-debug/samples/verbosity-strategy.md +236 -0
  293. package/embedded-knowledge/domains/dean-debug/session-logmessage-methods.md +59 -0
  294. package/embedded-knowledge/domains/dean-debug/setloadfields-filter-field-exclusion.md +67 -0
  295. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-impact.md +70 -0
  296. package/embedded-knowledge/domains/dean-debug/setloadfields-performance-optimization.md +90 -0
  297. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-case-statements.md +87 -0
  298. package/embedded-knowledge/domains/dean-debug/setloadfields-placement-before-filters.md +70 -0
  299. package/embedded-knowledge/domains/dean-debug/setloadfields-primary-key-optimization.md +74 -0
  300. package/embedded-knowledge/domains/dean-debug/sift-technology-fundamentals.md +81 -0
  301. package/embedded-knowledge/domains/dean-debug/subscriber-singleinstance-performance.md +56 -0
  302. package/embedded-knowledge/domains/dean-debug/table-event-batch-operation-impact.md +66 -0
  303. package/embedded-knowledge/domains/dean-debug/table-key-requirements.md +79 -0
  304. package/embedded-knowledge/domains/dean-debug/telemetry-error-correlation.md +78 -0
  305. package/embedded-knowledge/domains/dean-debug/telemetry-performance-considerations.md +83 -0
  306. package/embedded-knowledge/domains/dean-debug/telemetry-verbosity-strategy.md +76 -0
  307. package/embedded-knowledge/domains/dean-debug/testfield-performance.md +104 -0
  308. package/embedded-knowledge/domains/eva-errors/codeunit-run-pattern.md +159 -0
  309. package/embedded-knowledge/domains/eva-errors/fielderror-default-messages.md +145 -0
  310. package/embedded-knowledge/domains/eva-errors/fielderror-message-construction.md +104 -0
  311. package/embedded-knowledge/domains/eva-errors/fielderror-method-syntax.md +114 -0
  312. package/embedded-knowledge/domains/eva-errors/samples/codeunit-run-pattern.md +239 -0
  313. package/embedded-knowledge/domains/eva-errors/samples/fielderror-default-messages.md +356 -0
  314. package/embedded-knowledge/domains/eva-errors/samples/fielderror-syntax.md +256 -0
  315. package/embedded-knowledge/domains/eva-errors/samples/table-safety-validation-patterns.md +101 -0
  316. package/embedded-knowledge/domains/eva-errors/samples/testfield-error-handling.md +108 -0
  317. package/embedded-knowledge/domains/eva-errors/samples/try-function-usage.md +195 -0
  318. package/embedded-knowledge/domains/eva-errors/testfield-error-handling.md +80 -0
  319. package/embedded-knowledge/domains/eva-errors/try-function-usage.md +129 -0
  320. package/embedded-knowledge/domains/jordan-bridge/al-event-subscriber-architecture.md +98 -0
  321. package/embedded-knowledge/domains/jordan-bridge/automatic-registration.md +123 -0
  322. package/embedded-knowledge/domains/jordan-bridge/business-process-template-patterns.md +96 -0
  323. package/embedded-knowledge/domains/jordan-bridge/error-response-patterns.md +115 -0
  324. package/embedded-knowledge/domains/jordan-bridge/etag-implementation.md +115 -0
  325. package/embedded-knowledge/domains/jordan-bridge/field-control-selection.md +114 -0
  326. package/embedded-knowledge/domains/jordan-bridge/samples/al-event-subscriber-architecture.md +395 -0
  327. package/embedded-knowledge/domains/jordan-bridge/samples/api-error-responses.md +479 -0
  328. package/embedded-knowledge/domains/jordan-bridge/samples/api-field-control.md +548 -0
  329. package/embedded-knowledge/domains/jordan-bridge/samples/api-url-naming.md +287 -0
  330. package/embedded-knowledge/domains/jordan-bridge/samples/business-process-templates.md +434 -0
  331. package/embedded-knowledge/domains/jordan-bridge/samples/etag-implementation.md +508 -0
  332. package/embedded-knowledge/domains/jordan-bridge/samples/task-scheduler-pattern.md +615 -0
  333. package/embedded-knowledge/domains/jordan-bridge/task-scheduler-pattern-implementation.md +144 -0
  334. package/embedded-knowledge/domains/jordan-bridge/url-structure-naming-patterns.md +96 -0
  335. package/embedded-knowledge/domains/maya-mentor/case-multiple-conditions-ranges.md +124 -0
  336. package/embedded-knowledge/domains/maya-mentor/case-statement-syntax-structure.md +84 -0
  337. package/embedded-knowledge/domains/maya-mentor/fielderror-syntax-usage.md +75 -0
  338. package/embedded-knowledge/domains/maya-mentor/fielderror-vs-testfield.md +96 -0
  339. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-multiple-conditions.md +385 -0
  340. package/embedded-knowledge/domains/maya-mentor/samples/case-statement-syntax-structure.md +72 -0
  341. package/embedded-knowledge/domains/maya-mentor/samples/fielderror-syntax-usage.md +48 -0
  342. package/embedded-knowledge/domains/maya-mentor/samples/testfield-basic-syntax.md +49 -0
  343. package/embedded-knowledge/domains/maya-mentor/testfield-basic-syntax.md +67 -0
  344. package/embedded-knowledge/domains/morgan-market/partner-readiness-analysis.md +201 -0
  345. package/embedded-knowledge/domains/morgan-market/samples/partner-readiness-checklist.md +288 -0
  346. package/embedded-knowledge/domains/parker-pragmatic/README.md +39 -0
  347. package/embedded-knowledge/domains/parker-pragmatic/proposal-workflows/creating-effective-proposals.md +583 -0
  348. package/embedded-knowledge/domains/parker-pragmatic/trust-building/working-with-ai-skeptics.md +587 -0
  349. package/embedded-knowledge/domains/quinn-tester/fielderror-validation-patterns.md +119 -0
  350. package/embedded-knowledge/domains/quinn-tester/isolation-testing-patterns.md +82 -0
  351. package/embedded-knowledge/domains/quinn-tester/rule-execution.md +123 -0
  352. package/embedded-knowledge/domains/quinn-tester/samples/case-error-handling.md +64 -0
  353. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-message-construction.md +60 -0
  354. package/embedded-knowledge/domains/quinn-tester/samples/fielderror-validation-patterns.md +83 -0
  355. package/embedded-knowledge/domains/quinn-tester/samples/isolation-testing-patterns.md +424 -0
  356. package/embedded-knowledge/domains/quinn-tester/samples/rule-execution.md +716 -0
  357. package/embedded-knowledge/domains/quinn-tester/samples/table-safety-validation-patterns.md +101 -0
  358. package/embedded-knowledge/domains/quinn-tester/samples/temporary-table-operation-validation.md +91 -0
  359. package/embedded-knowledge/domains/quinn-tester/table-safety-validation-patterns.md +79 -0
  360. package/embedded-knowledge/domains/quinn-tester/temporary-table-operation-validation.md +79 -0
  361. package/embedded-knowledge/domains/roger-reviewer/al-begin-end-block-structure.md +89 -0
  362. package/embedded-knowledge/domains/roger-reviewer/al-binary-operator-spacing.md +76 -0
  363. package/embedded-knowledge/domains/roger-reviewer/al-blank-line-organization.md +76 -0
  364. package/embedded-knowledge/domains/roger-reviewer/al-case-action-formatting.md +76 -0
  365. package/embedded-knowledge/domains/roger-reviewer/al-code-spacing-conventions.md +81 -0
  366. package/embedded-knowledge/domains/roger-reviewer/al-comment-spacing-standards.md +76 -0
  367. package/embedded-knowledge/domains/roger-reviewer/al-end-else-pairing.md +75 -0
  368. package/embedded-knowledge/domains/roger-reviewer/al-keyword-indentation-rules.md +76 -0
  369. package/embedded-knowledge/domains/roger-reviewer/al-line-start-keyword-positioning.md +76 -0
  370. package/embedded-knowledge/domains/roger-reviewer/al-separate-if-else-formatting.md +76 -0
  371. package/embedded-knowledge/domains/roger-reviewer/al-standard-abbreviations.md +96 -0
  372. package/embedded-knowledge/domains/roger-reviewer/al-statement-per-line-rule.md +76 -0
  373. package/embedded-knowledge/domains/roger-reviewer/al-unnecessary-else-elimination.md +86 -0
  374. package/embedded-knowledge/domains/roger-reviewer/al-variable-declaration-order.md +90 -0
  375. package/embedded-knowledge/domains/roger-reviewer/al-variable-naming-conventions.md +82 -0
  376. package/embedded-knowledge/domains/roger-reviewer/begin-block-statement-clarity.md +78 -0
  377. package/embedded-knowledge/domains/roger-reviewer/begin-end-positioning-patterns.md +76 -0
  378. package/embedded-knowledge/domains/roger-reviewer/binary-operator-line-positioning.md +78 -0
  379. package/embedded-knowledge/domains/roger-reviewer/boolean-expression-simplification-al.md +100 -0
  380. package/embedded-knowledge/domains/roger-reviewer/case-statement-error-handling-troubleshooting.md +115 -0
  381. package/embedded-knowledge/domains/roger-reviewer/compound-statement-readability.md +124 -0
  382. package/embedded-knowledge/domains/roger-reviewer/lonely-repeat-statement-pattern.md +110 -0
  383. package/embedded-knowledge/domains/roger-reviewer/samples/al-begin-end-blocks.md +438 -0
  384. package/embedded-knowledge/domains/roger-reviewer/samples/al-binary-operator-spacing.md +255 -0
  385. package/embedded-knowledge/domains/roger-reviewer/samples/al-comment-spacing-standards.md +209 -0
  386. package/embedded-knowledge/domains/roger-reviewer/samples/al-keyword-indentation-rules.md +218 -0
  387. package/embedded-knowledge/domains/roger-reviewer/samples/al-line-start-keyword-positioning.md +218 -0
  388. package/embedded-knowledge/domains/roger-reviewer/samples/al-separate-if-else-formatting.md +280 -0
  389. package/embedded-knowledge/domains/roger-reviewer/samples/al-statement-per-line-rule.md +188 -0
  390. package/embedded-knowledge/domains/roger-reviewer/samples/al-unnecessary-else-elimination.md +245 -0
  391. package/embedded-knowledge/domains/roger-reviewer/samples/al-variable-declaration-order.md +244 -0
  392. package/embedded-knowledge/domains/roger-reviewer/samples/begin-end-positioning.md +278 -0
  393. package/embedded-knowledge/domains/roger-reviewer/samples/boolean-simplification-examples.md +484 -0
  394. package/embedded-knowledge/domains/roger-reviewer/samples/case-error-handling.md +64 -0
  395. package/embedded-knowledge/domains/roger-reviewer/samples/compound-statement-readability.md +107 -0
  396. package/embedded-knowledge/domains/roger-reviewer/samples/lonely-repeat-examples.md +280 -0
  397. package/embedded-knowledge/domains/roger-reviewer/samples/testability-code-smells.md +256 -0
  398. package/embedded-knowledge/domains/roger-reviewer/testability-code-smells.md +67 -0
  399. package/embedded-knowledge/domains/sam-coder/al-formatting-consistency-patterns.md +75 -0
  400. package/embedded-knowledge/domains/sam-coder/al-line-comment-formatting.md +67 -0
  401. package/embedded-knowledge/domains/sam-coder/al-lonely-repeat-pattern.md +76 -0
  402. package/embedded-knowledge/domains/sam-coder/al-named-parameter-pattern.md +98 -0
  403. package/embedded-knowledge/domains/sam-coder/al-object-navigation-shortcuts.md +128 -0
  404. package/embedded-knowledge/domains/sam-coder/al-readability-optimization.md +75 -0
  405. package/embedded-knowledge/domains/sam-coder/al-record-find-early-exit.md +95 -0
  406. package/embedded-knowledge/domains/sam-coder/command-queue-pattern-al.md +141 -0
  407. package/embedded-knowledge/domains/sam-coder/deleteall-alternative-implementation.md +91 -0
  408. package/embedded-knowledge/domains/sam-coder/deleteall-method-usage.md +118 -0
  409. package/embedded-knowledge/domains/sam-coder/deleteall-trigger-execution.md +111 -0
  410. package/embedded-knowledge/domains/sam-coder/event-bridge-pattern-al.md +113 -0
  411. package/embedded-knowledge/domains/sam-coder/event-payload-design-patterns.md +127 -0
  412. package/embedded-knowledge/domains/sam-coder/generic-method-patterns-al.md +141 -0
  413. package/embedded-knowledge/domains/sam-coder/manual-binding-conditional-subscribers.md +66 -0
  414. package/embedded-knowledge/domains/sam-coder/nested-compound-best-practices.md +96 -0
  415. package/embedded-knowledge/domains/sam-coder/samples/al-blank-line-organization.md +161 -0
  416. package/embedded-knowledge/domains/sam-coder/samples/al-case-action-formatting.md +177 -0
  417. package/embedded-knowledge/domains/sam-coder/samples/al-lonely-repeat-pattern.md +239 -0
  418. package/embedded-knowledge/domains/sam-coder/samples/al-named-parameter-pattern.md +346 -0
  419. package/embedded-knowledge/domains/sam-coder/samples/al-record-find-early-exit.md +298 -0
  420. package/embedded-knowledge/domains/sam-coder/samples/command-queue-pattern.md +677 -0
  421. package/embedded-knowledge/domains/sam-coder/samples/deleteall-alternative-implementation.md +117 -0
  422. package/embedded-knowledge/domains/sam-coder/samples/deleteall-triggers.md +75 -0
  423. package/embedded-knowledge/domains/sam-coder/samples/deleteall-usage.md +169 -0
  424. package/embedded-knowledge/domains/sam-coder/samples/event-bridge-pattern.md +399 -0
  425. package/embedded-knowledge/domains/sam-coder/samples/event-payload-design.md +356 -0
  426. package/embedded-knowledge/domains/sam-coder/samples/generic-method-patterns.md +889 -0
  427. package/embedded-knowledge/domains/sam-coder/samples/manual-binding.md +84 -0
  428. package/embedded-knowledge/domains/sam-coder/samples/nested-compound-best-practices.md +127 -0
  429. package/embedded-knowledge/domains/sam-coder/samples/single-to-compound-conversion.md +89 -0
  430. package/embedded-knowledge/domains/sam-coder/samples/template-method-pattern.md +516 -0
  431. package/embedded-knowledge/domains/sam-coder/samples/testfield-patterns.md +61 -0
  432. package/embedded-knowledge/domains/sam-coder/samples/type-safe-operations.md +427 -0
  433. package/embedded-knowledge/domains/sam-coder/single-to-compound-conversion.md +122 -0
  434. package/embedded-knowledge/domains/sam-coder/template-method-pattern-al.md +96 -0
  435. package/embedded-knowledge/domains/sam-coder/testfield-patterns.md +101 -0
  436. package/embedded-knowledge/domains/sam-coder/type-safe-operations-al.md +149 -0
  437. package/embedded-knowledge/domains/sam-coder/vs-code-al-keyboard-shortcuts.md +107 -0
  438. package/embedded-knowledge/domains/seth-security/al-temporary-table-safety.md +95 -0
  439. package/embedded-knowledge/domains/seth-security/api-permission-model.md +115 -0
  440. package/embedded-knowledge/domains/seth-security/istemporary-safeguard-pattern.md +78 -0
  441. package/embedded-knowledge/domains/seth-security/samples/al-temporary-table-safety.md +373 -0
  442. package/embedded-knowledge/domains/seth-security/samples/api-permission-model.md +308 -0
  443. package/embedded-knowledge/domains/shared/al-file-naming-conventions.md +146 -0
  444. package/embedded-knowledge/domains/taylor-docs/al-xml-documentation-structure.md +79 -0
  445. package/embedded-knowledge/domains/uma-ux/bc-action-shortcuts-syntax.md +78 -0
  446. package/embedded-knowledge/domains/uma-ux/shortcut-key-user-experience-design.md +81 -0
  447. package/embedded-knowledge/indexes/bc-version-matrix.json +188 -0
  448. package/embedded-knowledge/indexes/domain-catalog.json +106 -0
  449. package/embedded-knowledge/indexes/tags/abbreviations.json +1 -0
  450. package/embedded-knowledge/indexes/tags/abstraction.json +1 -0
  451. package/embedded-knowledge/indexes/tags/access-control.json +1 -0
  452. package/embedded-knowledge/indexes/tags/accessibility.json +1 -0
  453. package/embedded-knowledge/indexes/tags/actions.json +1 -0
  454. package/embedded-knowledge/indexes/tags/advanced-patterns.json +1 -0
  455. package/embedded-knowledge/indexes/tags/advanced.json +1 -0
  456. package/embedded-knowledge/indexes/tags/al-extension.json +1 -0
  457. package/embedded-knowledge/indexes/tags/al-generics.json +1 -0
  458. package/embedded-knowledge/indexes/tags/al-objects.json +1 -0
  459. package/embedded-knowledge/indexes/tags/al-syntax.json +1 -0
  460. package/embedded-knowledge/indexes/tags/algorithm-structure.json +1 -0
  461. package/embedded-knowledge/indexes/tags/alternatives.json +1 -0
  462. package/embedded-knowledge/indexes/tags/analytics.json +1 -0
  463. package/embedded-knowledge/indexes/tags/api-delegates.json +1 -0
  464. package/embedded-knowledge/indexes/tags/api-design.json +1 -0
  465. package/embedded-knowledge/indexes/tags/api-documentation.json +1 -0
  466. package/embedded-knowledge/indexes/tags/api-endpoints.json +1 -0
  467. package/embedded-knowledge/indexes/tags/api-extensibility.json +1 -0
  468. package/embedded-knowledge/indexes/tags/api-fieldsets.json +1 -0
  469. package/embedded-knowledge/indexes/tags/api-integration.json +1 -0
  470. package/embedded-knowledge/indexes/tags/api-interfaces.json +1 -0
  471. package/embedded-knowledge/indexes/tags/api-optimization.json +1 -0
  472. package/embedded-knowledge/indexes/tags/api-pages.json +1 -0
  473. package/embedded-knowledge/indexes/tags/api-patterns.json +1 -0
  474. package/embedded-knowledge/indexes/tags/api-permissions.json +1 -0
  475. package/embedded-knowledge/indexes/tags/api-responses.json +1 -0
  476. package/embedded-knowledge/indexes/tags/api-simplification.json +1 -0
  477. package/embedded-knowledge/indexes/tags/api.json +1 -0
  478. package/embedded-knowledge/indexes/tags/architecture.json +1 -0
  479. package/embedded-knowledge/indexes/tags/async-patterns.json +1 -0
  480. package/embedded-knowledge/indexes/tags/async-processing.json +1 -0
  481. package/embedded-knowledge/indexes/tags/automatic-registration.json +1 -0
  482. package/embedded-knowledge/indexes/tags/batch-operations.json +1 -0
  483. package/embedded-knowledge/indexes/tags/bc24-migration.json +1 -0
  484. package/embedded-knowledge/indexes/tags/begin-blocks.json +1 -0
  485. package/embedded-knowledge/indexes/tags/begin-end.json +1 -0
  486. package/embedded-knowledge/indexes/tags/behavioral-patterns.json +1 -0
  487. package/embedded-knowledge/indexes/tags/best-practices.json +1 -0
  488. package/embedded-knowledge/indexes/tags/binding.json +1 -0
  489. package/embedded-knowledge/indexes/tags/block-structure.json +1 -0
  490. package/embedded-knowledge/indexes/tags/blocks.json +1 -0
  491. package/embedded-knowledge/indexes/tags/boolean-expressions.json +1 -0
  492. package/embedded-knowledge/indexes/tags/branching.json +1 -0
  493. package/embedded-knowledge/indexes/tags/breaking-changes.json +1 -0
  494. package/embedded-knowledge/indexes/tags/breakpoints.json +1 -0
  495. package/embedded-knowledge/indexes/tags/business-foundation.json +1 -0
  496. package/embedded-knowledge/indexes/tags/business-infrastructure.json +1 -0
  497. package/embedded-knowledge/indexes/tags/business-process.json +1 -0
  498. package/embedded-knowledge/indexes/tags/business-rules.json +1 -0
  499. package/embedded-knowledge/indexes/tags/caching.json +1 -0
  500. package/embedded-knowledge/indexes/tags/case-statements.json +1 -0
  501. package/embedded-knowledge/indexes/tags/case.json +1 -0
  502. package/embedded-knowledge/indexes/tags/code-analysis.json +1 -0
  503. package/embedded-knowledge/indexes/tags/code-clarity.json +1 -0
  504. package/embedded-knowledge/indexes/tags/code-comprehension.json +1 -0
  505. package/embedded-knowledge/indexes/tags/code-conversion.json +1 -0
  506. package/embedded-knowledge/indexes/tags/code-formatting.json +1 -0
  507. package/embedded-knowledge/indexes/tags/code-organization.json +1 -0
  508. package/embedded-knowledge/indexes/tags/code-patterns.json +1 -0
  509. package/embedded-knowledge/indexes/tags/code-quality.json +1 -0
  510. package/embedded-knowledge/indexes/tags/code-reuse.json +1 -0
  511. package/embedded-knowledge/indexes/tags/code-simplification.json +1 -0
  512. package/embedded-knowledge/indexes/tags/code-standards.json +1 -0
  513. package/embedded-knowledge/indexes/tags/code-structure.json +1 -0
  514. package/embedded-knowledge/indexes/tags/code-style.json +1 -0
  515. package/embedded-knowledge/indexes/tags/codeunit-design.json +1 -0
  516. package/embedded-knowledge/indexes/tags/command-queue.json +1 -0
  517. package/embedded-knowledge/indexes/tags/comments.json +1 -0
  518. package/embedded-knowledge/indexes/tags/compile-time-validation.json +1 -0
  519. package/embedded-knowledge/indexes/tags/complex-facade.json +1 -0
  520. package/embedded-knowledge/indexes/tags/complexity-hiding.json +1 -0
  521. package/embedded-knowledge/indexes/tags/complexity-management.json +1 -0
  522. package/embedded-knowledge/indexes/tags/compound-statements.json +1 -0
  523. package/embedded-knowledge/indexes/tags/concurrency.json +1 -0
  524. package/embedded-knowledge/indexes/tags/conditional-logic.json +1 -0
  525. package/embedded-knowledge/indexes/tags/conditional.json +1 -0
  526. package/embedded-knowledge/indexes/tags/conflict-resolution.json +1 -0
  527. package/embedded-knowledge/indexes/tags/consistency.json +1 -0
  528. package/embedded-knowledge/indexes/tags/contract-design.json +1 -0
  529. package/embedded-knowledge/indexes/tags/control-flow.json +1 -0
  530. package/embedded-knowledge/indexes/tags/conversion-guide.json +1 -0
  531. package/embedded-knowledge/indexes/tags/correlation.json +1 -0
  532. package/embedded-knowledge/indexes/tags/custom-messages.json +1 -0
  533. package/embedded-knowledge/indexes/tags/data-access.json +1 -0
  534. package/embedded-knowledge/indexes/tags/data-exposure.json +1 -0
  535. package/embedded-knowledge/indexes/tags/data-integrity.json +1 -0
  536. package/embedded-knowledge/indexes/tags/data-loading.json +1 -0
  537. package/embedded-knowledge/indexes/tags/data-manipulation.json +1 -0
  538. package/embedded-knowledge/indexes/tags/data-modeling.json +1 -0
  539. package/embedded-knowledge/indexes/tags/data-patterns.json +1 -0
  540. package/embedded-knowledge/indexes/tags/data-protection.json +1 -0
  541. package/embedded-knowledge/indexes/tags/data-validation.json +1 -0
  542. package/embedded-knowledge/indexes/tags/database.json +1 -0
  543. package/embedded-knowledge/indexes/tags/debugging.json +1 -0
  544. package/embedded-knowledge/indexes/tags/decision-making.json +1 -0
  545. package/embedded-knowledge/indexes/tags/declaration.json +1 -0
  546. package/embedded-knowledge/indexes/tags/default-messages.json +1 -0
  547. package/embedded-knowledge/indexes/tags/defensive-programming.json +1 -0
  548. package/embedded-knowledge/indexes/tags/deleteall.json +1 -0
  549. package/embedded-knowledge/indexes/tags/dependencies.json +1 -0
  550. package/embedded-knowledge/indexes/tags/deployment.json +1 -0
  551. package/embedded-knowledge/indexes/tags/developer-productivity.json +1 -0
  552. package/embedded-knowledge/indexes/tags/development-workflow.json +1 -0
  553. package/embedded-knowledge/indexes/tags/diagnostics.json +1 -0
  554. package/embedded-knowledge/indexes/tags/dimensions.json +1 -0
  555. package/embedded-knowledge/indexes/tags/documentation.json +1 -0
  556. package/embedded-knowledge/indexes/tags/early-exit.json +1 -0
  557. package/embedded-knowledge/indexes/tags/else-clauses.json +1 -0
  558. package/embedded-knowledge/indexes/tags/end-statements.json +1 -0
  559. package/embedded-knowledge/indexes/tags/enterprise-patterns.json +1 -0
  560. package/embedded-knowledge/indexes/tags/entity-relationships.json +1 -0
  561. package/embedded-knowledge/indexes/tags/error-handling.json +1 -0
  562. package/embedded-knowledge/indexes/tags/error-messages.json +1 -0
  563. package/embedded-knowledge/indexes/tags/error-prevention.json +1 -0
  564. package/embedded-knowledge/indexes/tags/error-text.json +1 -0
  565. package/embedded-knowledge/indexes/tags/etag.json +1 -0
  566. package/embedded-knowledge/indexes/tags/event-bridge.json +1 -0
  567. package/embedded-knowledge/indexes/tags/event-payload.json +1 -0
  568. package/embedded-knowledge/indexes/tags/event-routing.json +1 -0
  569. package/embedded-knowledge/indexes/tags/events.json +1 -0
  570. package/embedded-knowledge/indexes/tags/execution-flow.json +1 -0
  571. package/embedded-knowledge/indexes/tags/expressions.json +1 -0
  572. package/embedded-knowledge/indexes/tags/extensibility.json +1 -0
  573. package/embedded-knowledge/indexes/tags/extensions.json +1 -0
  574. package/embedded-knowledge/indexes/tags/facade-composition.json +1 -0
  575. package/embedded-knowledge/indexes/tags/facade-pattern.json +1 -0
  576. package/embedded-knowledge/indexes/tags/field-control.json +1 -0
  577. package/embedded-knowledge/indexes/tags/field-exclusion.json +1 -0
  578. package/embedded-knowledge/indexes/tags/field-registration.json +1 -0
  579. package/embedded-knowledge/indexes/tags/field-state.json +1 -0
  580. package/embedded-knowledge/indexes/tags/field-validation.json +1 -0
  581. package/embedded-knowledge/indexes/tags/fielderror.json +1 -0
  582. package/embedded-knowledge/indexes/tags/fields.json +1 -0
  583. package/embedded-knowledge/indexes/tags/filtering.json +1 -0
  584. package/embedded-knowledge/indexes/tags/filters.json +1 -0
  585. package/embedded-knowledge/indexes/tags/formatting.json +1 -0
  586. package/embedded-knowledge/indexes/tags/generic-methods.json +1 -0
  587. package/embedded-knowledge/indexes/tags/http-status.json +1 -0
  588. package/embedded-knowledge/indexes/tags/if-statements.json +1 -0
  589. package/embedded-knowledge/indexes/tags/implementation.json +1 -0
  590. package/embedded-knowledge/indexes/tags/indentation.json +1 -0
  591. package/embedded-knowledge/indexes/tags/index-summary.json +277 -0
  592. package/embedded-knowledge/indexes/tags/indexing.json +1 -0
  593. package/embedded-knowledge/indexes/tags/inheritance.json +1 -0
  594. package/embedded-knowledge/indexes/tags/integration.json +1 -0
  595. package/embedded-knowledge/indexes/tags/integrity-checking.json +1 -0
  596. package/embedded-knowledge/indexes/tags/intellisense.json +1 -0
  597. package/embedded-knowledge/indexes/tags/interface-design.json +1 -0
  598. package/embedded-knowledge/indexes/tags/interface-segregation.json +1 -0
  599. package/embedded-knowledge/indexes/tags/isolation.json +1 -0
  600. package/embedded-knowledge/indexes/tags/job-processing.json +1 -0
  601. package/embedded-knowledge/indexes/tags/keyboard-navigation.json +1 -0
  602. package/embedded-knowledge/indexes/tags/keywords.json +1 -0
  603. package/embedded-knowledge/indexes/tags/legacy-modernization.json +1 -0
  604. package/embedded-knowledge/indexes/tags/line-breaks.json +1 -0
  605. package/embedded-knowledge/indexes/tags/line-organization.json +1 -0
  606. package/embedded-knowledge/indexes/tags/line-positioning.json +1 -0
  607. package/embedded-knowledge/indexes/tags/localization.json +1 -0
  608. package/embedded-knowledge/indexes/tags/logging.json +1 -0
  609. package/embedded-knowledge/indexes/tags/loose-coupling.json +1 -0
  610. package/embedded-knowledge/indexes/tags/maintainability.json +1 -0
  611. package/embedded-knowledge/indexes/tags/memory-management.json +1 -0
  612. package/embedded-knowledge/indexes/tags/memory-optimization.json +1 -0
  613. package/embedded-knowledge/indexes/tags/memory.json +1 -0
  614. package/embedded-knowledge/indexes/tags/message-design.json +1 -0
  615. package/embedded-knowledge/indexes/tags/message-formatting.json +1 -0
  616. package/embedded-knowledge/indexes/tags/message-patterns.json +1 -0
  617. package/embedded-knowledge/indexes/tags/metadata-driven.json +1 -0
  618. package/embedded-knowledge/indexes/tags/method-comparison.json +1 -0
  619. package/embedded-knowledge/indexes/tags/module-architecture.json +1 -0
  620. package/embedded-knowledge/indexes/tags/module-validation.json +1 -0
  621. package/embedded-knowledge/indexes/tags/monitoring.json +1 -0
  622. package/embedded-knowledge/indexes/tags/multi-layer-facade.json +1 -0
  623. package/embedded-knowledge/indexes/tags/multi-tenancy.json +1 -0
  624. package/embedded-knowledge/indexes/tags/multiple-values.json +1 -0
  625. package/embedded-knowledge/indexes/tags/naming-conventions.json +1 -0
  626. package/embedded-knowledge/indexes/tags/naming.json +1 -0
  627. package/embedded-knowledge/indexes/tags/navigation.json +1 -0
  628. package/embedded-knowledge/indexes/tags/nested-statements.json +1 -0
  629. package/embedded-knowledge/indexes/tags/no-series-conversion.json +1 -0
  630. package/embedded-knowledge/indexes/tags/no-series-validation.json +1 -0
  631. package/embedded-knowledge/indexes/tags/no-series.json +1 -0
  632. package/embedded-knowledge/indexes/tags/number-generation.json +1 -0
  633. package/embedded-knowledge/indexes/tags/object-documentation.json +1 -0
  634. package/embedded-knowledge/indexes/tags/odata.json +1 -0
  635. package/embedded-knowledge/indexes/tags/ondelete.json +1 -0
  636. package/embedded-knowledge/indexes/tags/onvalidate.json +1 -0
  637. package/embedded-knowledge/indexes/tags/operation-delegation.json +1 -0
  638. package/embedded-knowledge/indexes/tags/operation-safety.json +1 -0
  639. package/embedded-knowledge/indexes/tags/operators.json +1 -0
  640. package/embedded-knowledge/indexes/tags/optimization.json +1 -0
  641. package/embedded-knowledge/indexes/tags/order.json +1 -0
  642. package/embedded-knowledge/indexes/tags/organization.json +1 -0
  643. package/embedded-knowledge/indexes/tags/pages.json +1 -0
  644. package/embedded-knowledge/indexes/tags/parameters.json +1 -0
  645. package/embedded-knowledge/indexes/tags/patterns.json +1 -0
  646. package/embedded-knowledge/indexes/tags/performance-optimization.json +1 -0
  647. package/embedded-knowledge/indexes/tags/performance.json +1 -0
  648. package/embedded-knowledge/indexes/tags/placement.json +1 -0
  649. package/embedded-knowledge/indexes/tags/posting-codeunits.json +1 -0
  650. package/embedded-knowledge/indexes/tags/posting.json +1 -0
  651. package/embedded-knowledge/indexes/tags/preconditions.json +1 -0
  652. package/embedded-knowledge/indexes/tags/primary-key.json +1 -0
  653. package/embedded-knowledge/indexes/tags/privacy.json +1 -0
  654. package/embedded-knowledge/indexes/tags/process-automation.json +1 -0
  655. package/embedded-knowledge/indexes/tags/production.json +1 -0
  656. package/embedded-knowledge/indexes/tags/productivity.json +1 -0
  657. package/embedded-knowledge/indexes/tags/query-performance.json +1 -0
  658. package/embedded-knowledge/indexes/tags/queue-management.json +1 -0
  659. package/embedded-knowledge/indexes/tags/ranges.json +1 -0
  660. package/embedded-knowledge/indexes/tags/readability.json +1 -0
  661. package/embedded-knowledge/indexes/tags/record-access.json +1 -0
  662. package/embedded-knowledge/indexes/tags/record-methods.json +1 -0
  663. package/embedded-knowledge/indexes/tags/refactoring.json +1 -0
  664. package/embedded-knowledge/indexes/tags/reference.json +1 -0
  665. package/embedded-knowledge/indexes/tags/repeat-loops.json +1 -0
  666. package/embedded-knowledge/indexes/tags/repeat-statement.json +1 -0
  667. package/embedded-knowledge/indexes/tags/runtime-errors.json +1 -0
  668. package/embedded-knowledge/indexes/tags/runtime.json +1 -0
  669. package/embedded-knowledge/indexes/tags/safeguards.json +1 -0
  670. package/embedded-knowledge/indexes/tags/security.json +1 -0
  671. package/embedded-knowledge/indexes/tags/sequence-management.json +1 -0
  672. package/embedded-knowledge/indexes/tags/serialization.json +1 -0
  673. package/embedded-knowledge/indexes/tags/session-logmessage.json +1 -0
  674. package/embedded-knowledge/indexes/tags/session.json +1 -0
  675. package/embedded-knowledge/indexes/tags/setloadfields.json +1 -0
  676. package/embedded-knowledge/indexes/tags/shortcuts.json +1 -0
  677. package/embedded-knowledge/indexes/tags/sift.json +1 -0
  678. package/embedded-knowledge/indexes/tags/singleinstance.json +1 -0
  679. package/embedded-knowledge/indexes/tags/spacing.json +1 -0
  680. package/embedded-knowledge/indexes/tags/sql-translation.json +1 -0
  681. package/embedded-knowledge/indexes/tags/standards.json +1 -0
  682. package/embedded-knowledge/indexes/tags/statements.json +1 -0
  683. package/embedded-knowledge/indexes/tags/streaming.json +1 -0
  684. package/embedded-knowledge/indexes/tags/strong-typing.json +1 -0
  685. package/embedded-knowledge/indexes/tags/structural-patterns.json +1 -0
  686. package/embedded-knowledge/indexes/tags/structure.json +1 -0
  687. package/embedded-knowledge/indexes/tags/subscribers.json +1 -0
  688. package/embedded-knowledge/indexes/tags/switch.json +1 -0
  689. package/embedded-knowledge/indexes/tags/symbol-search.json +1 -0
  690. package/embedded-knowledge/indexes/tags/syntax.json +1 -0
  691. package/embedded-knowledge/indexes/tags/systemid.json +1 -0
  692. package/embedded-knowledge/indexes/tags/table-configuration.json +1 -0
  693. package/embedded-knowledge/indexes/tags/table-events.json +1 -0
  694. package/embedded-knowledge/indexes/tags/table-keys.json +1 -0
  695. package/embedded-knowledge/indexes/tags/table-safety.json +1 -0
  696. package/embedded-knowledge/indexes/tags/task-scheduler.json +1 -0
  697. package/embedded-knowledge/indexes/tags/telemetry.json +1 -0
  698. package/embedded-knowledge/indexes/tags/template-method.json +1 -0
  699. package/embedded-knowledge/indexes/tags/temporary-tables.json +1 -0
  700. package/embedded-knowledge/indexes/tags/testfield.json +1 -0
  701. package/embedded-knowledge/indexes/tags/tradeoffs.json +1 -0
  702. package/embedded-knowledge/indexes/tags/triggers.json +1 -0
  703. package/embedded-knowledge/indexes/tags/troubleshooting.json +1 -0
  704. package/embedded-knowledge/indexes/tags/type-safety.json +1 -0
  705. package/embedded-knowledge/indexes/tags/url-structure.json +1 -0
  706. package/embedded-knowledge/indexes/tags/user-experience.json +1 -0
  707. package/embedded-knowledge/indexes/tags/user-feedback.json +1 -0
  708. package/embedded-knowledge/indexes/tags/user-interface.json +1 -0
  709. package/embedded-knowledge/indexes/tags/validation-feedback.json +1 -0
  710. package/embedded-knowledge/indexes/tags/validation.json +1 -0
  711. package/embedded-knowledge/indexes/tags/variables.json +1 -0
  712. package/embedded-knowledge/indexes/tags/verbosity.json +1 -0
  713. package/embedded-knowledge/indexes/tags/vs-code.json +1 -0
  714. package/embedded-knowledge/indexes/tags/web-services.json +1 -0
  715. package/embedded-knowledge/indexes/tags/workflow-management.json +1 -0
  716. package/embedded-knowledge/indexes/tags/workflow-optimization.json +1 -0
  717. package/embedded-knowledge/indexes/tags/workflow-templates.json +1 -0
  718. package/embedded-knowledge/indexes/tags/workspace.json +1 -0
  719. package/embedded-knowledge/indexes/tags/xml-documentation.json +1 -0
  720. package/embedded-knowledge/indexes/topic-relationships.json +128 -0
  721. package/embedded-knowledge/methodologies/index.json +81 -0
  722. package/embedded-knowledge/methodologies/phases/analysis-full.md +208 -0
  723. package/embedded-knowledge/methodologies/phases/analysis-quick.md +44 -0
  724. package/embedded-knowledge/methodologies/phases/analysis.md +182 -0
  725. package/embedded-knowledge/methodologies/phases/execution-validation-full.md +174 -0
  726. package/embedded-knowledge/methodologies/phases/execution-validation-quick.md +31 -0
  727. package/embedded-knowledge/methodologies/phases/execution-validation.md +174 -0
  728. package/embedded-knowledge/methodologies/phases/performance-full.md +211 -0
  729. package/embedded-knowledge/methodologies/phases/performance-quick.md +32 -0
  730. package/embedded-knowledge/methodologies/phases/performance.md +211 -0
  731. package/embedded-knowledge/methodologies/phases/verification-full.md +162 -0
  732. package/embedded-knowledge/methodologies/phases/verification-quick.md +48 -0
  733. package/embedded-knowledge/methodologies/phases/verification.md +146 -0
  734. package/embedded-knowledge/methodologies/workflow-enforcement.md +142 -0
  735. package/embedded-knowledge/methodologies/workflows/code-review-workflow.md +99 -0
  736. package/embedded-knowledge/methodologies/workflows/proposal-review-workflow.md +535 -0
  737. package/embedded-knowledge/specialists/alex-architect.md +305 -0
  738. package/embedded-knowledge/specialists/casey-copilot.md +314 -0
  739. package/embedded-knowledge/specialists/chris-config.md +226 -0
  740. package/embedded-knowledge/specialists/dean-debug.md +365 -0
  741. package/embedded-knowledge/specialists/eva-errors.md +291 -0
  742. package/embedded-knowledge/specialists/jordan-bridge.md +291 -0
  743. package/embedded-knowledge/specialists/logan-legacy.md +265 -0
  744. package/embedded-knowledge/specialists/maya-mentor.md +299 -0
  745. package/embedded-knowledge/specialists/morgan-market.md +281 -0
  746. package/embedded-knowledge/specialists/parker-pragmatic.md +564 -0
  747. package/embedded-knowledge/specialists/quinn-tester.md +323 -0
  748. package/embedded-knowledge/specialists/roger-reviewer.md +317 -0
  749. package/embedded-knowledge/specialists/sam-coder.md +342 -0
  750. package/embedded-knowledge/specialists/seth-security.md +290 -0
  751. package/embedded-knowledge/specialists/taylor-docs.md +312 -0
  752. package/embedded-knowledge/specialists/uma-ux.md +291 -0
  753. package/package.json +82 -0
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: "AL Unnecessary Else Elimination"
3
+ domain: "roger-reviewer"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["control-flow", "code-clarity", "optimization", "refactoring"]
7
+ type: "improvement-pattern"
8
+ category: "code-quality"
9
+ pattern_type: "good"
10
+ severity: "medium"
11
+ impact_level: "medium"
12
+ improvement_suggestion: "Eliminate unnecessary else statements to improve code readability and reduce nesting complexity"
13
+ implementation_steps: ["identify-redundant-else", "apply-early-exit-patterns", "validate-logic-flow"]
14
+ validation_criteria: ["reduced-complexity", "improved-readability"]
15
+ technical_areas: ["al-code"]
16
+ samples: "samples/al-unnecessary-else-elimination.md"
17
+ ---
18
+
19
+ # AL Unnecessary Else Elimination
20
+
21
+ ## Overview
22
+
23
+ Eliminating unnecessary else statements in AL code improves readability, reduces nesting complexity, and creates cleaner control flow. This optimization technique focuses on early returns and guard clauses to simplify conditional logic.
24
+
25
+ **Key Principle**: Use early exit patterns and guard clauses to eliminate else statements when the if block ends execution flow.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Early Return Pattern
30
+ When an if statement ends with exit, return, or error, the subsequent else becomes unnecessary. The code after the if statement naturally handles the alternative case.
31
+
32
+ ### Guard Clause Implementation
33
+ Replace nested if-else structures with guard clauses at the beginning of procedures. This creates a clear validation phase followed by main logic.
34
+
35
+ ### Positive Logic Flow
36
+ Structure conditions to handle the expected path first, with error or edge cases handled through early exits.
37
+
38
+ ### Reduced Cognitive Load
39
+ Fewer else statements mean less mental tracking of conditional paths and reduced nesting complexity.
40
+
41
+ ## Architecture Focus
42
+
43
+ ### Control Flow Simplification
44
+ **Linear Flow**: Early exits create straightforward top-to-bottom execution paths
45
+ **Reduced Nesting**: Elimination of else statements flattens nested conditional structures
46
+ **Clear Validation**: Guard clauses separate input validation from business logic
47
+ **Maintainable Structure**: Simplified control flow reduces modification complexity
48
+
49
+ ### Error Handling Integration
50
+ Guard clauses naturally integrate with AL error handling patterns, creating clear separation between validation failures and business logic execution.
51
+
52
+ ### Performance Considerations
53
+ Early exits can improve performance by avoiding unnecessary condition evaluation and code execution in error scenarios.
54
+
55
+ ## Best Practices
56
+
57
+ ### Identification Patterns
58
+ - **Exit After If**: When if block contains exit statement, else is unnecessary
59
+ - **Error After If**: When if block throws error, else clause is redundant
60
+ - **Return After If**: When if block returns value, subsequent code handles alternative
61
+ - **Guard Conditions**: Replace if-else with early validation checks
62
+
63
+ ### Refactoring Approach
64
+ 1. **Identify Candidates**: Look for if statements ending with exit/error/return
65
+ 2. **Verify Logic**: Ensure else block logic can move to main flow
66
+ 3. **Apply Transformation**: Remove else, unindent subsequent code
67
+ 4. **Test Thoroughly**: Validate that logic behavior remains unchanged
68
+
69
+ ### Readability Enhancement
70
+ - **Clear Intent**: Early exits make error conditions immediately obvious
71
+ - **Reduced Indentation**: Flatter code structure improves visual scanning
72
+ - **Logical Grouping**: Validation separated from main business logic
73
+ - **Simplified Debugging**: Fewer conditional paths to trace during troubleshooting
74
+
75
+ ## Anti-Patterns
76
+
77
+ ### Avoid These Approaches
78
+ - **Complex Else Logic**: Don't eliminate else when it contains substantial conditional logic
79
+ - **Parallel Conditions**: Keep else when both paths are equally valid business cases
80
+ - **State Dependencies**: Maintain else when subsequent code depends on if condition state
81
+ - **Performance Impact**: Avoid elimination if it duplicates expensive operations
82
+
83
+ Eliminating else statements that contain important alternative logic paths creates incorrect program behavior and should be avoided.
84
+
85
+ *Related patterns: al-early-exit-patterns.md, al-guard-clauses.md*
86
+ *Implementation examples: see samples/al-unnecessary-else-elimination.md*
@@ -0,0 +1,90 @@
1
+ ---
2
+ title: "AL Variable Declaration Order"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["variables", "declaration", "code-structure", "organization"]
7
+ type: "improvement-pattern"
8
+ category: "code-quality"
9
+ pattern_type: "good"
10
+ severity: "medium"
11
+ impact_level: "medium"
12
+ improvement_suggestion: "Organize variable declarations in logical order to improve code readability and maintainability"
13
+ implementation_steps: ["establish-declaration-order", "group-related-variables", "apply-consistent-patterns"]
14
+ validation_criteria: ["consistent-declaration-order", "improved-organization"]
15
+ technical_areas: ["al-code"]
16
+ samples: "samples/al-variable-declaration-order.md"
17
+ ---
18
+
19
+ # AL Variable Declaration Order
20
+
21
+ ## Overview
22
+
23
+ Systematic variable declaration ordering in AL improves code readability, maintenance efficiency, and team collaboration. Consistent ordering patterns help developers quickly locate and understand variable purposes within procedures and objects.
24
+
25
+ **Key Principle**: Group related variables together and order by importance, scope, and usage patterns to create predictable code structure.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Standard Declaration Sequence
30
+ 1. **Input Parameters**: Method inputs in logical order
31
+ 2. **Output Parameters**: Return values and output references
32
+ 3. **Record Variables**: Primary business objects
33
+ 4. **Temporary Records**: Buffer and temporary storage
34
+ 5. **Management Objects**: Codeunits, pages, reports
35
+ 6. **Simple Data Types**: Text, Integer, Decimal, Boolean
36
+ 7. **System Objects**: Dialog, File, Stream variables
37
+
38
+ ### Grouping Principles
39
+ - **Related Functionality**: Group variables serving similar purposes
40
+ - **Usage Frequency**: Most-used variables declared first within groups
41
+ - **Data Flow**: Input → Processing → Output variable ordering
42
+ - **Alphabetical Within Groups**: When no logical order exists, use alphabetical sorting
43
+
44
+ ## Architecture Focus
45
+
46
+ ### Scope-Based Organization
47
+ **Global Variables** follow object-level importance - core business records first, followed by supporting objects and simple types.
48
+
49
+ **Local Variables** prioritize procedure-specific logic flow - parameters first, then main processing variables, finally utility variables.
50
+
51
+ **Temporary Variables** grouped separately to clearly indicate their transient nature and memory management requirements.
52
+
53
+ ### Type-Specific Patterns
54
+ - **Record Variables**: Order by relationship hierarchy (master records before detail records)
55
+ - **Management Variables**: Group by functional area (sales management, posting management)
56
+ - **Configuration Variables**: Place setup and configuration records after main business records
57
+ - **System Variables**: Group system objects (Dialog, File) at end of declarations
58
+
59
+ ## Best Practices
60
+
61
+ ### Logical Grouping
62
+ - **Business Context First**: Primary business objects at top of declarations
63
+ - **Supporting Objects Next**: Helper records and management objects follow
64
+ - **Utility Variables Last**: Counters, flags, and temporary values at end
65
+ - **Related Variables Together**: Keep functionally related variables adjacent
66
+
67
+ ### Readability Enhancement
68
+ - **Blank Line Separation**: Use blank lines between logical groups
69
+ - **Inline Comments**: Document variable groups and their collective purpose
70
+ - **Consistent Spacing**: Align variable names and types for visual clarity
71
+ - **Descriptive Ordering**: Within groups, order by business logic flow
72
+
73
+ ### Maintenance Considerations
74
+ - **Standard Patterns**: Follow consistent ordering across all team code
75
+ - **Refactoring Support**: Logical ordering simplifies variable impact analysis
76
+ - **Documentation**: Variable order should tell the story of the procedure's logic
77
+ - **Review Guidelines**: Include declaration order in code review checklists
78
+
79
+ ## Anti-Patterns
80
+
81
+ ### Avoid These Approaches
82
+ - **Random Ordering**: Variables declared in order of coding rather than logical importance
83
+ - **Mixed Types**: Simple types scattered between complex objects
84
+ - **No Grouping**: Related variables separated by unrelated declarations
85
+ - **Inconsistent Patterns**: Different ordering approaches within same codebase
86
+
87
+ Poorly ordered declarations make code changes more error-prone and time-consuming, with variable relationships becoming unclear and increasing maintenance risk.
88
+
89
+ *Related patterns: al-variable-naming-conventions.md, al-code-organization.md*
90
+ *Implementation examples: see samples/al-variable-declaration-order.md*
@@ -0,0 +1,82 @@
1
+ ---
2
+ title: "AL Variable Naming Conventions"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["variables", "naming", "code-style", "readability"]
7
+ type: "improvement-pattern"
8
+ category: "code-quality"
9
+ pattern_type: "good"
10
+ severity: "medium"
11
+ impact_level: "medium"
12
+ improvement_suggestion: "Apply consistent variable naming conventions to enhance code readability and maintainability"
13
+ implementation_steps: ["establish-naming-standards", "apply-consistent-patterns", "validate-conventions"]
14
+ validation_criteria: ["consistent-naming-application", "improved-readability"]
15
+ technical_areas: ["al-code"]
16
+ ---
17
+
18
+ # AL Variable Naming Conventions
19
+
20
+ ## Overview
21
+
22
+ Consistent variable naming in AL code improves readability, maintainability, and team collaboration. Business Central development follows Microsoft's naming conventions with specific adaptations for ERP domain concepts.
23
+
24
+ **Key Principle**: Variable names should clearly communicate purpose, scope, and data type without requiring additional documentation.
25
+
26
+ ## Strategic Framework
27
+
28
+ ### Naming Pattern Hierarchy
29
+ - **Local Variables**: CamelCase starting with lowercase (customerRecord, totalAmount)
30
+ - **Global Variables**: CamelCase starting with uppercase (CustomerBuffer, TotalSalesAmount)
31
+ - **Constants**: ALL_CAPS with underscores (MAX_RETRY_COUNT, DEFAULT_TIMEOUT)
32
+ - **Temporary Variables**: Prefix with "Temp" (TempCustomer, TempItemLedgerEntry)
33
+
34
+ ### Domain-Specific Patterns
35
+ - **Record Variables**: Use table name without "Record" suffix (Customer, not CustomerRecord)
36
+ - **Buffer Variables**: Append "Buffer" for temporary storage (CustomerBuffer)
37
+ - **Counter Variables**: Use descriptive names (CustomerCount, not i or counter)
38
+ - **Boolean Variables**: Use positive phrasing with "Is/Has/Can" prefixes (IsPosted, HasPermission)
39
+
40
+ ## Architecture Focus
41
+
42
+ ### Scope-Based Conventions
43
+ **Local Variables** follow function-specific naming that clearly indicates their role within the procedure context.
44
+
45
+ **Global Variables** use broader context names that reflect their application-wide purpose and lifetime.
46
+
47
+ **Parameter Variables** match their usage pattern - input parameters use descriptive names, output parameters often include "Result" or "Output" suffixes.
48
+
49
+ ### Type-Specific Patterns
50
+ - **Codeunit Variables**: Include "Mgt" or "Management" suffix (CustomerMgt, SalesMgt)
51
+ - **Page Variables**: Use "Page" suffix when storing page references (CustomerPage)
52
+ - **Report Variables**: Use "Report" suffix for report references (SalesReport)
53
+ - **XMLport Variables**: Use "XMLport" suffix (CustomerXMLport)
54
+
55
+ ## Best Practices
56
+
57
+ ### Clarity and Context
58
+ - **Avoid Abbreviations**: Use complete words unless standard BC abbreviations (Qty, Amt, No.)
59
+ - **Include Units**: For measurements, include unit context (AmountLCY, QtyBase)
60
+ - **Specify Direction**: For parameters, indicate flow (CustomerNoIn, ResultOut)
61
+ - **Use Business Terms**: Prefer domain language over technical terms (PostingDate vs DateVar)
62
+
63
+ ### Consistency Patterns
64
+ - **Maintain Team Standards**: Follow established project conventions over personal preferences
65
+ - **Use Standard Prefixes**: Apply consistent prefixes for similar variable types
66
+ - **Document Deviations**: When breaking convention for specific reasons, include inline comments
67
+ - **Review and Refactor**: Regular code reviews should enforce naming consistency
68
+
69
+ ### Hungarian Notation Avoidance
70
+ Modern AL development avoids Hungarian notation. Variable types are clear from declaration context, making type prefixes unnecessary and potentially misleading during refactoring.
71
+
72
+ ## Anti-Patterns
73
+
74
+ ### Avoid These Approaches
75
+ - **Generic Names**: Avoid "Rec", "TempRec", "Buffer" without context
76
+ - **Misleading Abbreviations**: Don't create custom abbreviations (CustAddr vs CustomerAddress)
77
+ - **Type Prefixes**: Avoid Hungarian notation (strName, intCount, bolIsValid)
78
+ - **Inconsistent Casing**: Mixed casing patterns within same codebase
79
+
80
+ Poor variable naming creates maintenance problems and makes code harder to understand, review, and modify effectively.
81
+
82
+ *Related patterns: al-variable-declaration-order.md, al-standard-abbreviations.md*
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: "Begin Block Statement Clarity for Developer Experience"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["user-experience", "code-clarity", "begin-blocks", "developer-productivity", "code-comprehension"]
7
+ prerequisites: ["al-syntax", "code-style"]
8
+ ---
9
+ # Begin Block Statement Clarity for Developer Experience
10
+
11
+ ## Overview
12
+
13
+ Strategic use of begin-end blocks enhances developer experience by creating clear code structure boundaries, improving comprehension speed, and reducing cognitive load when navigating complex procedural logic.
14
+
15
+ **Clarity Principle**: Use begin-end blocks consistently to create visual and logical boundaries that help developers quickly understand code structure and flow.
16
+
17
+ ## Strategic Framework
18
+
19
+ ### Developer Comprehension Strategy
20
+ - **Visual boundaries**: Use begin-end blocks to clearly delineate code sections
21
+ - **Logical grouping**: Group related statements within clear block structures
22
+ - **Navigation efficiency**: Create landmarks that help developers orient within procedures
23
+ - **Maintenance clarity**: Make code modifications easier by clarifying block scope
24
+
25
+ ### Cognitive Load Reduction
26
+ - **Structural indicators**: Provide visual cues for code organization
27
+ - **Scope clarity**: Make variable and statement scope immediately apparent
28
+ - **Flow comprehension**: Help developers follow execution paths quickly
29
+ - **Error prevention**: Reduce mistakes caused by unclear code boundaries
30
+
31
+ ## Architecture Patterns
32
+
33
+ ### Explicit Block Structure
34
+ Use begin-end blocks even when not syntactically required to create consistent visual patterns that improve code readability and maintainability.
35
+
36
+ ### Logical Section Grouping
37
+ Organize related statements within begin-end blocks to create clear functional sections within larger procedures.
38
+
39
+ ### Nested Block Clarity
40
+ Structure nested blocks with consistent indentation and clear boundary markers to maintain comprehension in complex logic structures.
41
+
42
+ ## Implementation Guidelines
43
+
44
+ ### Block Usage Standards
45
+ - **Consistent application**: Use begin-end blocks uniformly across similar code structures
46
+ - **Logical boundaries**: Align block boundaries with functional or logical code sections
47
+ - **Indentation consistency**: Maintain clear visual hierarchy through consistent indentation
48
+ - **Comment integration**: Use comments with blocks to explain section purpose
49
+
50
+ ### Developer Experience Optimization
51
+ Format blocks to support quick visual scanning, easy modification, and clear understanding of code structure and purpose.
52
+
53
+ ### Team Collaboration Enhancement
54
+ Use consistent block patterns that help team members quickly understand and modify each other's code.
55
+
56
+ ## Best Practices
57
+
58
+ ### Structural Consistency
59
+ - **Pattern adherence**: Apply consistent begin-end block patterns across the codebase
60
+ - **Visual hierarchy**: Use indentation to show clear nesting and relationship patterns
61
+ - **Purposeful grouping**: Organize statements within blocks based on logical relationships
62
+ - **Maintenance support**: Structure blocks to facilitate easy code modification and extension
63
+
64
+ ### Readability Enhancement
65
+ Design block usage to minimize the time required for developers to understand code structure and locate specific functionality.
66
+
67
+ ### Tool Integration
68
+ Configure development tools to support consistent block formatting and provide visual indicators for block boundaries.
69
+
70
+ ## Anti-Patterns
71
+
72
+ ### Avoid These Approaches
73
+ - **Inconsistent block usage**: Mixing different approaches to block structure within the same codebase
74
+ - **Unclear boundaries**: Poor indentation or formatting that obscures block structure
75
+ - **Unnecessary complexity**: Over-nesting or excessive block subdivision
76
+ - **Missing logical grouping**: Failing to group related statements within clear block boundaries
77
+ - **Ignored formatting standards**: Manual formatting that creates inconsistent visual patterns
78
+
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "Begin/End Positioning in AL Code"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["code-style", "readability", "structure", "begin-end", "formatting"]
7
+ samples: "samples/begin-end-positioning.md"
8
+ type: "best-practice"
9
+ category: "code-structure"
10
+ pattern_type: "good"
11
+ severity: "low"
12
+ impact_level: "medium"
13
+ improvement_suggestion: "Use consistent begin/end positioning for improved code readability"
14
+ implementation_steps: ["establish-team-standards", "configure-formatting-tools", "apply-consistently"]
15
+ validation_criteria: ["consistent-positioning", "improved-readability", "team-adoption"]
16
+ technical_areas: ["al-code", "formatting"]
17
+ ---
18
+
19
+ # Begin/End Positioning in AL Code
20
+
21
+ ## Overview
22
+
23
+ Begin/end positioning in AL code significantly impacts readability and maintainability. Strategic placement of begin/end keywords creates visual structure that helps developers quickly understand code flow and hierarchy. The positioning choice affects scan-ability, debugging efficiency, and team collaboration effectiveness.
24
+
25
+ **Key Principle**: Position begin/end keywords to maximize code readability and create clear visual structure that supports rapid code comprehension.
26
+
27
+ The "begin as afterword" pattern places the begin keyword on the same line as the procedure declaration, optimizing vertical space while maintaining clear block boundaries. This approach balances conciseness with structural clarity.
28
+
29
+ ## Strategic Framework
30
+
31
+ ### Readability Optimization Patterns
32
+ **Primary Goal**: Create code structure that supports rapid visual scanning and comprehension. Begin/end positioning should enhance, not hinder, a developer's ability to understand code intent and flow.
33
+
34
+ **Visual Hierarchy**: Consistent begin/end positioning creates predictable visual patterns that help developers navigate code efficiently. The eye learns to recognize structural boundaries, reducing cognitive load during code review and debugging.
35
+
36
+ ### Team Collaboration Benefits
37
+ **Consistency Standards**: Uniform begin/end positioning across team codebases reduces context switching overhead when developers work on different modules. Consistent formatting patterns become familiar navigation aids.
38
+
39
+ **Code Review Efficiency**: Well-positioned begin/end keywords facilitate faster code reviews by creating clear visual boundaries around logical code blocks. Reviewers can quickly identify scope and structure without mental parsing overhead.
40
+
41
+ ## Architecture Focus
42
+
43
+ ### Structural Clarity Principles
44
+ **Block Boundary Definition**: Begin/end positioning should clearly delineate logical code blocks without creating visual noise. The positioning choice affects how developers perceive code organization and flow.
45
+
46
+ **Nesting Visualization**: Proper begin/end positioning helps visualize nested code structures, making complex procedure hierarchies easier to understand and maintain.
47
+
48
+ ### Scanning Optimization
49
+ **Vertical Space Efficiency**: Strategic begin/end positioning optimizes vertical screen real estate while maintaining structural clarity. This balance is crucial for modern development environments with limited vertical display space.
50
+
51
+ **Pattern Recognition**: Consistent positioning patterns enable rapid visual pattern recognition, allowing developers to quickly identify procedure boundaries, conditional blocks, and loop structures.
52
+
53
+ ## Best Practices
54
+
55
+ ### Consistency Implementation
56
+ - **Team Standards**: Establish and document team-wide begin/end positioning standards. Consistency across the codebase is more valuable than individual preference optimization.
57
+ - **Tool Integration**: Configure AL development tools to automatically format begin/end positioning according to team standards. Automated formatting reduces inconsistency and discussion overhead.
58
+
59
+ ### Readability Enhancement
60
+ - **Logical Grouping**: Use begin/end positioning to reinforce logical code grouping. The visual structure should align with the logical structure of the procedure or function.
61
+ - **Debugging Support**: Position begin/end keywords to facilitate debugging workflows. Clear block boundaries help when setting breakpoints and stepping through code execution.
62
+
63
+ ### Professional Standards
64
+ - **Industry Conventions**: Align begin/end positioning with broader AL and Business Central community conventions. This facilitates knowledge transfer and reduces onboarding friction for new team members.
65
+ - **Documentation Integration**: Ensure begin/end positioning supports code documentation patterns. Clear structural boundaries enhance documentation readability and usefulness.
66
+
67
+ ## Anti-Patterns
68
+
69
+ ### Avoid These Approaches
70
+ - **Mixed Positioning**: Avoid mixing different begin/end positioning styles within the same codebase. Inconsistency creates cognitive overhead and reduces code professionalism.
71
+ - **Context-Dependent Formatting**: Don't vary begin/end positioning based on procedure complexity or developer preference. Consistency trumps optimization for specific scenarios.
72
+ - **Excessive Compaction**: Avoid positioning choices that sacrifice readability for minimal space savings. Code clarity should take precedence over character count optimization.
73
+ - **Unclear Boundaries**: Don't use begin/end positioning that obscures logical code block boundaries. The positioning should enhance, not hinder, structural understanding.
74
+
75
+ *Implementation examples: see samples/begin-end-positioning.md*
76
+ *Related patterns: code-formatting-standards.md, procedure-organization-patterns.md*
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: "Binary Operator Line Positioning and Code Readability"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["code-style", "operators", "readability", "formatting", "line-breaks"]
7
+ prerequisites: ["al-syntax", "code-formatting"]
8
+ ---
9
+ # Binary Operator Line Positioning and Code Readability
10
+
11
+ ## Overview
12
+
13
+ Strategic positioning of binary operators in multi-line expressions enhances code readability by creating clear visual alignment and logical flow, making complex expressions easier to parse and maintain.
14
+
15
+ **Readability Principle**: Position binary operators consistently to create visual patterns that guide the reader's eye through complex logical and mathematical expressions.
16
+
17
+ ## Strategic Framework
18
+
19
+ ### Visual Alignment Strategy
20
+ - **Leading operators**: Place operators at the beginning of continuation lines
21
+ - **Consistent indentation**: Align continuation lines for visual clarity
22
+ - **Logical grouping**: Use operator positioning to show expression hierarchy
23
+ - **Scanning optimization**: Format for efficient visual parsing of complex conditions
24
+
25
+ ### Expression Flow Design
26
+ - **Left-to-right reading**: Support natural reading patterns in operator placement
27
+ - **Precedence clarity**: Use positioning to reinforce operator precedence
28
+ - **Continuation indicators**: Make line breaks and continuations obvious
29
+ - **Nested expression handling**: Maintain clarity in complex nested conditions
30
+
31
+ ## Architecture Patterns
32
+
33
+ ### Leading Operator Pattern
34
+ Place binary operators at the beginning of continuation lines to create clear visual indicators of expression continuation and logical flow.
35
+
36
+ ### Aligned Continuation Pattern
37
+ Indent continuation lines consistently to create visual columns that make it easy to follow complex multi-line expressions.
38
+
39
+ ### Hierarchical Expression Layout
40
+ Use operator positioning and indentation to visually represent the logical structure of complex boolean and mathematical expressions.
41
+
42
+ ## Implementation Guidelines
43
+
44
+ ### Formatting Standards
45
+ - **Operator placement**: Consistently place binary operators at line beginnings
46
+ - **Indentation depth**: Use consistent indentation for continuation lines
47
+ - **Spacing consistency**: Maintain uniform spacing around operators
48
+ - **Line break logic**: Break lines at logical expression boundaries
49
+
50
+ ### Complex Expression Handling
51
+ Break long expressions at appropriate logical points, using operator positioning to maintain readability and show the relationship between expression parts.
52
+
53
+ ### Tool Integration
54
+ Configure code formatting tools to apply consistent binary operator positioning rules across the codebase automatically.
55
+
56
+ ## Best Practices
57
+
58
+ ### Consistency Standards
59
+ - **Team conventions**: Establish and follow team-wide operator positioning standards
60
+ - **Automated formatting**: Use formatting tools to maintain consistency
61
+ - **Code review focus**: Include operator positioning in code review criteria
62
+ - **Style guide documentation**: Document operator positioning rules clearly
63
+
64
+ ### Readability Optimization
65
+ Format expressions to minimize cognitive load, using operator positioning and alignment to create visual patterns that aid comprehension.
66
+
67
+ ### Maintenance Considerations
68
+ Choose operator positioning patterns that remain clear and maintainable as expressions grow in complexity over time.
69
+
70
+ ## Anti-Patterns
71
+
72
+ ### Avoid These Approaches
73
+ - **Inconsistent positioning**: Mixing operator placement styles within the same codebase
74
+ - **Poor alignment**: Misaligned continuation lines that create visual confusion
75
+ - **Trailing operators**: Placing operators at the end of lines where they're less visible
76
+ - **Random line breaks**: Breaking lines without considering logical expression structure
77
+ - **Ignored formatting tools**: Manual formatting instead of automated consistency
78
+
@@ -0,0 +1,100 @@
1
+ ---
2
+ title: "Boolean Expression Simplification in AL"
3
+ domain: "roger-reviewer"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["boolean-expressions", "code-simplification", "readability", "performance", "refactoring"]
7
+ prerequisites: ["al-syntax-basics", "conditional-logic"]
8
+ samples: "samples/boolean-simplification-examples.md"
9
+ ---
10
+
11
+ # Boolean Expression Simplification in AL
12
+
13
+ ## Overview
14
+
15
+ Complex boolean expressions in AL code often become difficult to read, maintain, and debug. Systematic simplification techniques improve code clarity while maintaining logical correctness and often enhancing performance.
16
+
17
+ **Core Principle**: Simplify boolean expressions to their most readable form while preserving exact logical behavior.
18
+
19
+ ## Simplification Principles
20
+
21
+ ### De Morgan's Laws Application
22
+ Transform complex negations using logical equivalencies:
23
+ - **NOT (A AND B) = (NOT A) OR (NOT B)**
24
+ - **NOT (A OR B) = (NOT A) AND (NOT B)**
25
+
26
+ These transformations often reveal simpler positive conditions that improve readability.
27
+
28
+ ### Short-Circuit Evaluation Optimization
29
+ AL evaluates boolean expressions left-to-right with short-circuiting:
30
+ - **AND expressions**: Place most likely false conditions first
31
+ - **OR expressions**: Place most likely true conditions first
32
+ - **Performance impact**: Expensive operations should appear later in expression
33
+
34
+ ### Positive Logic Preference
35
+ Express conditions in positive terms when possible:
36
+ - **Avoid double negatives**: Replace `not (not Condition)` with `Condition`
37
+ - **Prefer positive checks**: Use `IsValid` instead of `not IsInvalid`
38
+ - **Clear intent**: Positive expressions communicate intent more directly
39
+
40
+ ## Common Simplification Patterns
41
+
42
+ ### Redundant Condition Elimination
43
+ ```
44
+ // Complex: Redundant conditions
45
+ if (Status = Status::Active) and (Status <> Status::Inactive) then
46
+ ```
47
+ **Simplification**: Remove redundant negative condition - if Status is Active, it cannot be Inactive.
48
+
49
+ ### Range Condition Optimization
50
+ ```
51
+ // Complex: Multiple range checks
52
+ if (Amount >= 0) and (Amount <= MaxAmount) and (Amount <> 0) then
53
+ ```
54
+ **Simplification**: Combine overlapping conditions and eliminate redundancy.
55
+
56
+ ### Nested Condition Flattening
57
+ ```
58
+ // Complex: Deep nesting
59
+ if Condition1 then
60
+ if Condition2 then
61
+ if Condition3 then
62
+ ProcessRecord();
63
+ ```
64
+ **Simplification**: Use combined boolean expression with early exit patterns.
65
+
66
+ ## Refactoring Techniques
67
+
68
+ ### Extract Boolean Variables
69
+ Replace complex inline expressions with descriptive boolean variables:
70
+ - **Improved readability**: Self-documenting variable names explain logic
71
+ - **Easier debugging**: Individual conditions can be evaluated separately
72
+ - **Maintainability**: Changes to logic isolated to variable assignment
73
+
74
+ ### Method Extraction for Complex Logic
75
+ Move complex boolean expressions into dedicated functions:
76
+ - **Single responsibility**: Each function handles one logical concept
77
+ - **Reusability**: Complex conditions can be reused across objects
78
+ - **Testability**: Isolated boolean logic easier to unit test
79
+
80
+ ### Conditional Inversion
81
+ Sometimes inverting conditional logic simplifies overall expression:
82
+ - **Guard clauses**: Use early returns to eliminate nesting
83
+ - **Exception handling**: Check for invalid conditions first
84
+ - **Default behavior**: Structure logic around normal case flow
85
+
86
+ ## Performance Guidelines
87
+
88
+ Order expressions strategically with expensive operations last, leverage short-circuit evaluation, and always check for null/empty conditions first.
89
+
90
+ ## Readability Guidelines
91
+
92
+ Use meaningful variable names, logical grouping with parentheses, and consistent team formatting standards for boolean expressions.
93
+
94
+ ## Best Practices
95
+
96
+ Use truth table analysis for complex expressions, recognize common AL patterns, and ensure behavioral testing preserves original logic during simplification.
97
+
98
+ *Complete simplification examples: samples/boolean-simplification-examples.md*
99
+ *AL performance patterns: roger-reviewer-index.json#performance-optimization*
100
+ *Refactoring techniques: code-design-index.json#refactoring-patterns*