@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,101 @@
1
+ # Table Safety Validation Patterns
2
+
3
+ ## IsTemporary Safeguard Implementation
4
+ ```al
5
+ procedure ProcessBulkData(var DataBuffer: Record "Data Processing Buffer")
6
+ begin
7
+ // Always validate temporary status before bulk operations
8
+ if not DataBuffer.IsTemporary then
9
+ Error('This procedure requires a temporary table to prevent data corruption.');
10
+
11
+ DataBuffer.Reset();
12
+ if DataBuffer.FindSet() then
13
+ repeat
14
+ ProcessIndividualRecord(DataBuffer);
15
+ DataBuffer.Delete(); // Safe because table is confirmed temporary
16
+ until DataBuffer.Next() = 0;
17
+ end;
18
+ ```
19
+
20
+ ## Database Write Protection
21
+ ```al
22
+ procedure SafeDataManipulation(var TempCustomer: Record Customer temporary)
23
+ var
24
+ Customer: Record Customer;
25
+ begin
26
+ // Validate temporary status before any modifications
27
+ if not TempCustomer.IsTemporary then
28
+ Error('Database safety violation: Expected temporary table for data manipulation.');
29
+
30
+ // Safe to perform destructive operations
31
+ TempCustomer.Reset();
32
+ TempCustomer.DeleteAll();
33
+
34
+ // Load fresh data from permanent table
35
+ Customer.FindSet();
36
+ repeat
37
+ TempCustomer := Customer;
38
+ TempCustomer.Insert();
39
+ until Customer.Next() = 0;
40
+ end;
41
+ ```
42
+
43
+ ## Bulk Operation Validation
44
+ ```al
45
+ procedure ProcessLargeDataSet(var TempItem: Record Item temporary; ProcessingMode: Option Validate,Update,Delete)
46
+ begin
47
+ // Critical safety check for bulk operations
48
+ if not TempItem.IsTemporary then
49
+ Error('Bulk processing operations require temporary tables. This prevents accidental permanent data modification.');
50
+
51
+ case ProcessingMode of
52
+ ProcessingMode::Validate:
53
+ ValidateAllRecords(TempItem);
54
+ ProcessingMode::Update:
55
+ UpdateAllRecords(TempItem);
56
+ ProcessingMode::Delete:
57
+ TempItem.DeleteAll(); // Safe deletion
58
+ end;
59
+ end;
60
+
61
+ local procedure ValidateAllRecords(var TempItem: Record Item temporary)
62
+ begin
63
+ TempItem.Reset();
64
+ if TempItem.FindSet() then
65
+ repeat
66
+ ValidateItemData(TempItem);
67
+ until TempItem.Next() = 0;
68
+ end;
69
+ ```
70
+
71
+ ## Data Integrity Protection
72
+ ```al
73
+ procedure SecureDataProcessing(var WorkingTable: Record "Working Data Buffer")
74
+ var
75
+ OriginalFilters: Text;
76
+ begin
77
+ // Mandatory safety validation
78
+ if not WorkingTable.IsTemporary then
79
+ Error('Data integrity protection: This operation requires a temporary working table.');
80
+
81
+ OriginalFilters := WorkingTable.GetFilters();
82
+
83
+ try
84
+ WorkingTable.Reset();
85
+ ProcessAllRecords(WorkingTable);
86
+ finally
87
+ // Restore original state
88
+ WorkingTable.Reset();
89
+ WorkingTable.SetView(OriginalFilters);
90
+ end;
91
+ end;
92
+
93
+ local procedure ProcessAllRecords(var WorkingTable: Record "Working Data Buffer")
94
+ begin
95
+ if WorkingTable.FindSet(true) then
96
+ repeat
97
+ WorkingTable."Processing Status" := WorkingTable."Processing Status"::Completed;
98
+ WorkingTable.Modify();
99
+ until WorkingTable.Next() = 0;
100
+ end;
101
+ ```
@@ -0,0 +1,91 @@
1
+ # Temporary Table Operation Validation
2
+
3
+ ## Pre-Operation Validation
4
+ ```al
5
+ procedure ValidateTemporaryTableOperation(var TempRecord: Record "Generic Record"; OperationType: Text)
6
+ begin
7
+ if not TempRecord.IsTemporary then
8
+ Error('Operation "%1" requires a temporary table to ensure data safety. Current table is permanent.', OperationType);
9
+
10
+ if TempRecord.IsEmpty() then
11
+ Error('Cannot perform "%1" operation on empty temporary table.', OperationType);
12
+ end;
13
+ ```
14
+
15
+ ## Batch Processing Safety Check
16
+ ```al
17
+ procedure ProcessTemporaryRecords(var TempSalesLine: Record "Sales Line" temporary)
18
+ var
19
+ LineCount: Integer;
20
+ begin
21
+ // Validate temporary status before bulk operations
22
+ if not TempSalesLine.IsTemporary then
23
+ Error('Batch processing requires temporary table to prevent permanent data corruption.');
24
+
25
+ TempSalesLine.Reset();
26
+ LineCount := TempSalesLine.Count();
27
+
28
+ if LineCount = 0 then
29
+ Error('No records found in temporary table for processing.');
30
+
31
+ if LineCount > 10000 then
32
+ if not Confirm('Processing %1 records may take considerable time. Continue?', false, LineCount) then
33
+ exit;
34
+
35
+ ProcessBatchRecords(TempSalesLine);
36
+ end;
37
+ ```
38
+
39
+ ## Complex Operation Validation
40
+ ```al
41
+ procedure ExecuteComplexDataOperation(var TempCustomer: Record Customer temporary; var TempVendor: Record Vendor temporary)
42
+ begin
43
+ // Validate both tables are temporary
44
+ ValidateAllTablesTemporary(TempCustomer, TempVendor);
45
+
46
+ // Validate data consistency
47
+ if TempCustomer.IsEmpty() and TempVendor.IsEmpty() then
48
+ Error('At least one temporary table must contain data for processing.');
49
+
50
+ // Execute complex operation safely
51
+ ProcessCustomerVendorRelationship(TempCustomer, TempVendor);
52
+ end;
53
+
54
+ local procedure ValidateAllTablesTemporary(var TempCustomer: Record Customer temporary; var TempVendor: Record Vendor temporary)
55
+ begin
56
+ if not TempCustomer.IsTemporary then
57
+ Error('Customer table must be temporary for this operation.');
58
+
59
+ if not TempVendor.IsTemporary then
60
+ Error('Vendor table must be temporary for this operation.');
61
+ end;
62
+ ```
63
+
64
+ ## Transaction Safety Validation
65
+ ```al
66
+ procedure SafeTemporaryTableTransaction(var TempGLEntry: Record "G/L Entry" temporary)
67
+ begin
68
+ if not TempGLEntry.IsTemporary then
69
+ Error('Financial data operations require temporary tables to prevent accidental posting.');
70
+
71
+ // Validate data integrity before processing
72
+ ValidateFinancialData(TempGLEntry);
73
+
74
+ // Process in transaction
75
+ if TempGLEntry.FindSet() then
76
+ repeat
77
+ ProcessGLEntry(TempGLEntry);
78
+ until TempGLEntry.Next() = 0;
79
+ end;
80
+
81
+ local procedure ValidateFinancialData(var TempGLEntry: Record "G/L Entry" temporary)
82
+ var
83
+ TotalAmount: Decimal;
84
+ begin
85
+ TempGLEntry.CalcSums(Amount);
86
+ TotalAmount := TempGLEntry.Amount;
87
+
88
+ if Abs(TotalAmount) > 1000000 then
89
+ Error('Total amount %1 exceeds safety threshold for temporary table operations.', TotalAmount);
90
+ end;
91
+ ```
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: "Table Safety Validation Patterns for Error Prevention"
3
+ domain: "quinn-tester"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["error-prevention", "table-safety", "validation", "defensive-programming", "data-protection"]
7
+ prerequisites: ["error-handling", "al-tables"]
8
+ samples: "samples/table-safety-validation-patterns.md"
9
+ ---
10
+ # Table Safety Validation Patterns for Error Prevention
11
+
12
+ ## Overview
13
+
14
+ Table safety validation patterns provide defensive programming approaches that prevent common data manipulation errors by validating table state, operation context, and business constraints before executing potentially destructive operations.
15
+
16
+ **Prevention Strategy**: Implement validation barriers that catch dangerous operations before they can cause data corruption, performance issues, or business logic violations.
17
+
18
+ ## Strategic Framework
19
+
20
+ ### Proactive Error Prevention
21
+ - **Validation gates**: Check conditions that could lead to errors before execution
22
+ - **Safe defaults**: Design operations to fail safely when validation is incomplete
23
+ - **Context awareness**: Validate operations against current business and technical context
24
+ - **Recovery preparation**: Include error recovery information in validation failures
25
+
26
+ ### Risk Assessment Strategy
27
+ - **Impact evaluation**: Assess potential damage from failed validations
28
+ - **Probability analysis**: Focus validation on most likely error scenarios
29
+ - **Cost-benefit balance**: Optimize validation overhead against error prevention value
30
+ - **Monitoring integration**: Track validation patterns to improve error prevention
31
+
32
+ ## Architecture Patterns
33
+
34
+ ### Multi-Layer Validation Architecture
35
+ Implement validation at multiple levels (table, operation, business rule) to create comprehensive error prevention coverage without excessive performance overhead.
36
+
37
+ ### Fail-Fast Pattern Implementation
38
+ Design validation to detect and report errors as early as possible in operation execution, minimizing resource waste and simplifying error recovery.
39
+
40
+ ### Contextual Safety Checks
41
+ Build validation that considers current operational context, user permissions, data state, and business rules to prevent context-inappropriate operations.
42
+
43
+ ## Implementation Guidelines
44
+
45
+ ### Validation Design Principles
46
+ - **Specific error identification**: Provide precise information about validation failures
47
+ - **Performance optimization**: Design efficient validation that doesn't significantly impact operation speed
48
+ - **Maintainable validation**: Create validation rules that are easy to update as requirements change
49
+ - **Comprehensive coverage**: Address common error scenarios systematically
50
+
51
+ ### Error Prevention Strategy
52
+ Implement validation patterns that catch errors before they propagate through the system, focusing on operations that could cause data integrity issues or performance problems.
53
+
54
+ ### Recovery Planning Integration
55
+ Design validation failures to include guidance for correcting the conditions that caused the validation to fail.
56
+
57
+ ## Best Practices
58
+
59
+ ### Defensive Programming Approach
60
+ - **Assume input variability**: Validate all external inputs and parameters
61
+ - **Check preconditions**: Verify system state meets operation requirements
62
+ - **Validate postconditions**: Ensure operations completed as expected
63
+ - **Monitor edge cases**: Pay special attention to boundary conditions and unusual scenarios
64
+
65
+ ### Systematic Validation Implementation
66
+ Apply consistent validation patterns across similar operations, ensuring comprehensive error prevention coverage without creating maintenance overhead.
67
+
68
+ ### Documentation and Communication
69
+ Clearly document validation logic and error prevention strategies to help team members understand and maintain safety measures.
70
+
71
+ ## Anti-Patterns
72
+
73
+ ### Avoid These Approaches
74
+ - **Validation bypass**: Skipping safety checks for convenience or performance
75
+ - **Generic error handling**: Non-specific error messages that don't help diagnosis
76
+ - **Late validation**: Checking safety conditions after beginning operations
77
+ - **Inconsistent application**: Using validation in some contexts but not others
78
+ - **Over-validation**: Excessive checking that significantly impacts performance
79
+
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: "Temporary Table Operation Validation Patterns"
3
+ domain: "quinn-tester"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["validation", "temporary-tables", "data-integrity", "operation-safety", "preconditions"]
7
+ prerequisites: ["al-tables", "validation-patterns"]
8
+ samples: "samples/temporary-table-operation-validation.md"
9
+ ---
10
+ # Temporary Table Operation Validation Patterns
11
+
12
+ ## Overview
13
+
14
+ Temporary table operation validation ensures data manipulation procedures correctly identify and handle temporary versus permanent tables, preventing unintended data modifications and maintaining operation safety through systematic validation patterns.
15
+
16
+ **Validation Principle**: Validate table characteristics and operational context before executing data modifications to ensure operations match intended scope and safety requirements.
17
+
18
+ ## Strategic Framework
19
+
20
+ ### Validation Layer Architecture
21
+ - **Precondition validation**: Verify table state before operation execution
22
+ - **Operation scoping**: Ensure operations match table characteristics
23
+ - **Context awareness**: Validate operations against business rules and data constraints
24
+ - **Safety enforcement**: Prevent operations that violate data integrity principles
25
+
26
+ ### Multi-Level Validation Strategy
27
+ - **Table-level checks**: Validate table properties and characteristics
28
+ - **Operation-level checks**: Ensure operation appropriateness for table type
29
+ - **Data-level checks**: Verify data consistency and integrity requirements
30
+ - **Business rule validation**: Confirm operations align with business logic
31
+
32
+ ## Architecture Patterns
33
+
34
+ ### Precondition Validation Framework
35
+ Implement systematic validation that checks table properties, operation parameters, and business context before allowing data manipulation operations to proceed.
36
+
37
+ ### Conditional Operation Pattern
38
+ Design operations that adapt their behavior based on table validation results, providing different execution paths for temporary versus permanent tables.
39
+
40
+ ### Validation Chain Architecture
41
+ Build validation sequences that check multiple conditions in logical order, failing fast when validation criteria are not met.
42
+
43
+ ## Implementation Guidelines
44
+
45
+ ### Validation Sequence Design
46
+ - **Early validation**: Check conditions before resource allocation or lock acquisition
47
+ - **Logical ordering**: Validate quick checks before expensive operations
48
+ - **Clear failure points**: Provide specific validation failure information
49
+ - **Recovery guidance**: Include corrective action suggestions in validation messages
50
+
51
+ ### Table Characteristic Validation
52
+ Implement checks for table temporariness, permissions, field availability, and other characteristics that affect operation safety and appropriateness.
53
+
54
+ ### Operation Context Validation
55
+ Validate that proposed operations are appropriate for current business context, user permissions, and data state conditions.
56
+
57
+ ## Best Practices
58
+
59
+ ### Comprehensive Validation Coverage
60
+ - **Complete condition checking**: Validate all relevant preconditions systematically
61
+ - **Consistent validation patterns**: Apply similar validation approaches across related operations
62
+ - **Performance optimization**: Balance thoroughness with execution efficiency
63
+ - **Maintainable validation**: Design validation rules that are easy to update and extend
64
+
65
+ ### Error Communication Strategy
66
+ Provide clear, specific error messages that help developers understand validation failures and guide them toward correct implementation approaches.
67
+
68
+ ### Testing Integration
69
+ Include validation testing in unit test suites, ensuring validation logic correctly identifies valid and invalid operation scenarios.
70
+
71
+ ## Anti-Patterns
72
+
73
+ ### Avoid These Approaches
74
+ - **Incomplete validation**: Missing critical precondition checks
75
+ - **Late validation**: Checking conditions after beginning modifications
76
+ - **Silent validation failures**: Not providing clear feedback when validation fails
77
+ - **Inconsistent validation**: Different validation approaches for similar operations
78
+ - **Performance-over-safety**: Skipping validation for perceived performance benefits
79
+
@@ -0,0 +1,89 @@
1
+ ---
2
+ title: "AL Begin/End Block Structure Conventions"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["al-syntax", "code-structure", "triggers", "blocks"]
7
+ samples: "samples/al-begin-end-blocks.md"
8
+ type: "language-feature"
9
+ category: "al-syntax"
10
+ pattern_type: "good"
11
+ severity: "low"
12
+ impact_level: "medium"
13
+ improvement_suggestion: "Use proper begin/end block structure for maintainable AL code"
14
+ implementation_steps: ["understand-block-types", "apply-nesting-rules", "maintain-indentation"]
15
+ validation_criteria: ["proper-block-nesting", "consistent-indentation", "clear-trigger-structure"]
16
+ technical_areas: ["al-code", "syntax"]
17
+ ---
18
+
19
+ # AL Begin/End Block Structure Conventions
20
+
21
+ ## Overview
22
+
23
+ Begin/end blocks form the fundamental structure of AL code organization, defining scope boundaries for triggers, procedures, and control statements. Proper block structure ensures code readability, maintainability, and compiler compliance across all AL object types.
24
+
25
+ **Key Principle**: Every begin statement must have a corresponding end statement, with consistent indentation and logical organization that reflects the code's hierarchical structure.
26
+
27
+ AL uses begin/end blocks to group statements in triggers, procedures, and control structures. Unlike languages that use curly braces, AL's explicit begin/end syntax requires careful attention to matching pairs and proper nesting levels.
28
+
29
+ ## Strategic Framework
30
+
31
+ ### Block Types and Usage Patterns
32
+ **Object Triggers**: Table, page, and report triggers use begin/end to define event handling logic with specific indentation conventions that reflect the trigger's scope within the object hierarchy.
33
+
34
+ **Procedure Bodies**: Function and procedure definitions require begin/end blocks to encapsulate implementation logic, with parameter validation and return value handling organized within the block structure.
35
+
36
+ **Control Structures**: If/then/else, case, while, and for statements use begin/end blocks to group multiple statements, enabling complex conditional and iterative logic organization.
37
+
38
+ **Exception Handling**: Try/catch blocks and error handling patterns rely on proper begin/end structure to define exception scope and recovery logic boundaries.
39
+
40
+ ### Scope Management Principles
41
+ Begin/end blocks establish variable scope boundaries and memory management contexts. Local variables declared within blocks have limited lifetime, while proper nesting ensures predictable variable accessibility patterns.
42
+
43
+ Block structure directly impacts debugging capabilities, with debugger stepping behavior following begin/end boundaries. Well-structured blocks enable precise breakpoint placement and variable inspection at appropriate scope levels.
44
+
45
+ ## Architecture Focus
46
+
47
+ ### Trigger Structure Patterns
48
+ Object triggers follow established conventions where the trigger keyword is followed by begin/end blocks containing the implementation logic. Primary triggers like OnInsert, OnModify, and OnDelete use consistent indentation patterns.
49
+
50
+ Complex triggers may contain nested begin/end blocks for conditional logic, but excessive nesting indicates potential refactoring opportunities toward separate procedures or better logical organization.
51
+
52
+ ### Procedure Organization Standards
53
+ Procedure definitions separate the signature line from the implementation block, with local variables declared between the signature and begin statement. This separation clarifies parameter contracts and local variable scope.
54
+
55
+ Return statements within procedure blocks require careful placement, ensuring all code paths properly handle return values and that unreachable code warnings are addressed through proper block organization.
56
+
57
+ ### Control Flow Architecture
58
+ Nested control structures require systematic indentation increases for each begin/end level, creating visual hierarchy that matches the logical structure. Deep nesting beyond three levels suggests architectural refactoring needs.
59
+
60
+ Exception handling blocks integrate with normal control flow through try/catch patterns that maintain clear begin/end boundaries while providing comprehensive error recovery mechanisms.
61
+
62
+ ## Best Practices
63
+
64
+ ### Indentation and Formatting Standards
65
+ - **Consistent Indentation**: Maintain four-space indentation for each begin/end nesting level, aligning begin and end keywords at the same indentation level
66
+ - **Visual Block Boundaries**: Create clear visual block boundaries that match logical code organization
67
+ - **Semicolon Placement**: Place semicolons correctly after end keywords to maintain AL syntax compliance
68
+
69
+ ### Block Boundary Management
70
+ - **Matched Pairs**: Every begin statement requires a corresponding end statement at the same indentation level
71
+ - **Meaningful Blocks**: Avoid empty begin/end blocks except where required by AL syntax
72
+ - **Logical Organization**: Group related statements within begin/end blocks to create coherent units of work
73
+
74
+ ### Variable Scope Optimization
75
+ - **Appropriate Scope**: Declare variables at the narrowest appropriate scope level using begin/end blocks
76
+ - **Meaningful Names**: Use descriptive variable names that reflect their purpose within specific block contexts
77
+ - **Memory Management**: Leverage begin/end blocks to limit variable lifetime and improve memory usage patterns
78
+
79
+ ## Anti-Patterns
80
+
81
+ ### Avoid These Approaches
82
+ - **Mismatched Pairs**: Missing or extra begin/end statements create compilation errors and logical inconsistencies
83
+ - **Inconsistent Indentation**: Irregular indentation patterns obscure block boundaries and complicate maintenance
84
+ - **Excessive Nesting**: Deep begin/end nesting beyond reasonable levels indicates architectural problems requiring refactoring
85
+ - **Empty Blocks**: Unnecessary empty begin/end blocks add visual clutter without functional value
86
+ - **Poor Exception Boundaries**: Exception handling blocks that don't align with logical begin/end boundaries create unclear error recovery patterns
87
+
88
+ *Implementation examples: see samples/al-begin-end-blocks.md*
89
+ *Related patterns: al-procedure-organization.md, al-error-handling-patterns.md*
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "AL Binary Operator Spacing"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["operators", "spacing", "expressions"]
7
+ samples: "samples/al-binary-operator-spacing.md"
8
+ type: "improvement-pattern"
9
+ category: "code-formatting"
10
+ pattern_type: "good"
11
+ severity: "medium"
12
+ impact_level: "medium"
13
+ improvement_suggestion: "Use consistent spacing around binary operators to improve expression readability"
14
+ implementation_steps: ["standardize-operator-spacing", "apply-consistent-patterns", "validate-readability"]
15
+ validation_criteria: ["consistent-operator-spacing", "improved-expression-clarity"]
16
+ technical_areas: ["al-code"]
17
+ ---
18
+
19
+ # AL Binary Operator Spacing
20
+
21
+ ## Overview
22
+
23
+ Consistent spacing around binary operators in AL expressions improves readability and helps developers quickly understand mathematical, logical, and comparison operations. Proper operator spacing is a fundamental formatting practice that enhances code clarity.
24
+
25
+ **Key Principle**: Use consistent spacing around binary operators to create clear, readable expressions that are easy to understand and maintain.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Expression Clarity
30
+ - **Visual Separation**: Clear spacing around operators for easy parsing
31
+ - **Readability Focus**: Formatting that supports quick expression comprehension
32
+ - **Consistency Standards**: Uniform spacing patterns across all expressions
33
+ - **Mathematical Convention**: Spacing that follows standard mathematical notation
34
+
35
+ ### Code Comprehension
36
+ Well-spaced operators help developers quickly identify expression structure, operator precedence, and logical relationships within complex calculations and conditions.
37
+
38
+ ## Architecture Focus
39
+
40
+ ### Operator Categories
41
+ - **Arithmetic Operators**: +, -, *, /, mod with consistent spacing
42
+ - **Comparison Operators**: =, <>, <, >, <=, >= with clear separation
43
+ - **Logical Operators**: and, or, not with appropriate spacing
44
+ - **Assignment Operators**: := with consistent formatting
45
+
46
+ ### Spacing Patterns
47
+ Establish consistent spacing rules that work well with AL syntax and support effective expression formatting across different operator types and complexity levels.
48
+
49
+ ## Best Practices
50
+
51
+ ### Spacing Guidelines
52
+ - **Single space before and after** binary operators
53
+ - **Consistent application** across all expression types
54
+ - **Clear operator separation** in complex expressions
55
+ - **Parentheses coordination** with operator spacing
56
+ - **Alignment consideration** in multi-line expressions
57
+
58
+ ### Expression Organization
59
+ Structure complex expressions with appropriate spacing to maintain readability. Use consistent patterns for operator spacing that integrate well with overall code formatting.
60
+
61
+ ### Readability Optimization
62
+ Format expressions to minimize cognitive load when understanding mathematical and logical operations. Use spacing to create natural reading flow in complex calculations.
63
+
64
+ ## Anti-Patterns
65
+
66
+ ### Avoid These Approaches
67
+ - **No spacing around operators** creating cramped expressions
68
+ - **Inconsistent spacing** within single expressions
69
+ - **Excessive spacing** disrupting expression flow
70
+ - **Mixed spacing styles** across different AL objects
71
+ - **Poor alignment** in multi-line expressions
72
+
73
+ Poor operator spacing makes expressions harder to read and increases the likelihood of errors when understanding complex calculations and logical conditions.
74
+
75
+ *Implementation examples: see samples/al-binary-operator-spacing.md*
76
+ *Related patterns: al-comment-spacing-standards.md, al-readability-optimization.md*
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "AL Blank Line Organization"
3
+ domain: "roger-reviewer"
4
+ difficulty: "beginner"
5
+ bc_versions: "14+"
6
+ tags: ["formatting", "readability", "code-organization"]
7
+ samples: "samples/al-blank-line-organization.md"
8
+ type: "improvement-pattern"
9
+ category: "code-formatting"
10
+ pattern_type: "good"
11
+ severity: "medium"
12
+ impact_level: "medium"
13
+ improvement_suggestion: "Use strategic blank lines to organize AL code into logical sections"
14
+ implementation_steps: ["identify-logical-sections", "insert-separating-blank-lines", "validate-consistency"]
15
+ validation_criteria: ["logical-grouping-clear", "consistent-spacing-applied"]
16
+ technical_areas: ["al-code"]
17
+ ---
18
+
19
+ # AL Blank Line Organization
20
+
21
+ ## Overview
22
+
23
+ Strategic blank line placement in AL code creates visual separation between logical sections, improving readability and maintainability. Proper blank line organization helps developers quickly identify code structure and navigate complex procedures and functions.
24
+
25
+ **Key Principle**: Use blank lines to separate distinct logical operations, not arbitrary code segments.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Visual Code Organization
30
+ - **Logical Grouping**: Separate variable declarations, business logic sections, and error handling
31
+ - **Functional Boundaries**: Use blank lines before and after major functional blocks
32
+ - **Context Switching**: Insert blank lines when switching between different data operations
33
+ - **Method Structure**: Consistent spacing patterns within methods and triggers
34
+
35
+ ### Readability Enhancement
36
+ Blank lines act as visual punctuation, allowing developers to parse code structure quickly. They reduce cognitive load by creating natural reading breaks and highlighting important transitions.
37
+
38
+ ## Architecture Focus
39
+
40
+ ### Code Structure Patterns
41
+ - **Declaration Blocks**: Separate variable declarations from executable code
42
+ - **Business Logic Sections**: Group related operations with clear boundaries
43
+ - **Error Handling**: Isolate error handling code with appropriate spacing
44
+ - **Data Processing**: Separate input validation, processing, and output operations
45
+
46
+ ### Consistency Principles
47
+ Establish team-wide conventions for blank line usage to ensure consistent code appearance across all AL objects. Consistent formatting reduces context switching overhead when reviewing code.
48
+
49
+ ## Best Practices
50
+
51
+ ### Effective Blank Line Placement
52
+ - **After variable declarations** before first executable statement
53
+ - **Between major functional blocks** within procedures
54
+ - **Before and after loops** containing significant logic
55
+ - **Around error handling blocks** for clear separation
56
+ - **Between related but distinct operations** for logical grouping
57
+
58
+ ### Grouping Strategies
59
+ Group related variable declarations together, separate business logic sections clearly, and use blank lines to emphasize important transitions in code flow.
60
+
61
+ ### Consistency Rules
62
+ Apply blank line patterns consistently across all AL objects in your extension. Document team conventions for blank line usage in coding standards.
63
+
64
+ ## Anti-Patterns
65
+
66
+ ### Avoid These Approaches
67
+ - **Excessive blank lines** that fragment code unnecessarily
68
+ - **Random spacing** without logical organization principles
69
+ - **No blank lines** creating dense, hard-to-read code blocks
70
+ - **Inconsistent patterns** across different AL objects
71
+ - **Blank lines within tightly coupled operations** that should remain grouped
72
+
73
+ Inconsistent blank line usage creates visual noise and makes code harder to scan effectively. Avoid both extremes of no spacing and excessive spacing.
74
+
75
+ *Implementation examples: see samples/al-blank-line-organization.md*
76
+ *Related patterns: al-formatting-consistency-patterns.md, al-readability-optimization.md*
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: "AL Case Action Formatting"
3
+ domain: "roger-reviewer"
4
+ difficulty: "intermediate"
5
+ bc_versions: "14+"
6
+ tags: ["case-statements", "formatting", "control-flow"]
7
+ samples: "samples/al-case-action-formatting.md"
8
+ type: "improvement-pattern"
9
+ category: "code-formatting"
10
+ pattern_type: "good"
11
+ severity: "medium"
12
+ impact_level: "medium"
13
+ improvement_suggestion: "Format case statement actions with consistent indentation and clear action boundaries"
14
+ implementation_steps: ["standardize-case-indentation", "align-action-blocks", "validate-readability"]
15
+ validation_criteria: ["consistent-indentation", "clear-action-separation"]
16
+ technical_areas: ["al-code"]
17
+ ---
18
+
19
+ # AL Case Action Formatting
20
+
21
+ ## Overview
22
+
23
+ Proper formatting of case statement actions in AL code ensures clear visual separation between different case branches and improves code readability. Consistent case action formatting helps developers quickly understand control flow logic and reduces errors in complex decision structures.
24
+
25
+ **Key Principle**: Each case action should be clearly separated and consistently indented to highlight the decision structure.
26
+
27
+ ## Strategic Framework
28
+
29
+ ### Case Statement Structure
30
+ - **Visual Hierarchy**: Clear indentation showing case relationship to parent statement
31
+ - **Action Boundaries**: Distinct separation between different case actions
32
+ - **Consistent Patterns**: Uniform formatting across all case statements in codebase
33
+ - **Readability Focus**: Format that supports quick visual parsing of decision logic
34
+
35
+ ### Control Flow Clarity
36
+ Case formatting should make the decision structure immediately apparent to code reviewers and maintainers. Well-formatted case statements reduce cognitive overhead when understanding complex business logic.
37
+
38
+ ## Architecture Focus
39
+
40
+ ### Indentation Standards
41
+ - **Case Labels**: Consistent alignment with case keyword
42
+ - **Action Blocks**: Proper indentation for multi-line actions
43
+ - **Nested Structures**: Clear hierarchy for nested case statements
44
+ - **Code Organization**: Logical grouping of related case branches
45
+
46
+ ### Visual Consistency
47
+ Establish consistent patterns for case action formatting that work well with AL language structure and team coding practices. Consistent formatting improves code review efficiency.
48
+
49
+ ## Best Practices
50
+
51
+ ### Formatting Patterns
52
+ - **Consistent indentation** for all case actions within statement
53
+ - **Clear separation** between case labels and actions
54
+ - **Aligned case labels** for easy visual scanning
55
+ - **Proper spacing** around case statement boundaries
56
+ - **Multi-line action formatting** with appropriate indentation
57
+
58
+ ### Action Organization
59
+ Group related case actions logically, use consistent formatting for single-line versus multi-line actions, and maintain clear visual boundaries between different branches.
60
+
61
+ ### Readability Optimization
62
+ Format case statements to support quick visual parsing of decision logic. Use whitespace effectively to create clear visual separation between different execution paths.
63
+
64
+ ## Anti-Patterns
65
+
66
+ ### Avoid These Approaches
67
+ - **Inconsistent case label alignment** making structure unclear
68
+ - **Poor action block indentation** obscuring code hierarchy
69
+ - **Cramped formatting** without adequate spacing
70
+ - **Mixed formatting styles** within single case statement
71
+ - **Unclear action boundaries** between different cases
72
+
73
+ Poor case formatting makes decision logic harder to follow and increases the likelihood of errors during code maintenance and enhancement.
74
+
75
+ *Implementation examples: see samples/al-case-action-formatting.md*
76
+ *Related patterns: al-keyword-indentation-rules.md, al-separate-if-else-formatting.md*