@tailor-platform/erp-kit 0.5.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +10 -10
  3. package/dist/cli.mjs +499 -81
  4. package/package.json +1 -1
  5. package/skills/erp-kit-app-1-requirements/SKILL.md +33 -17
  6. package/skills/erp-kit-app-2-requirements-review/SKILL.md +12 -0
  7. package/skills/erp-kit-app-3-plan/SKILL.md +18 -4
  8. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +1 -1
  9. package/skills/erp-kit-app-3-plan/references/screen-extraction.md +1 -1
  10. package/skills/erp-kit-app-4-plan-review/SKILL.md +12 -0
  11. package/skills/erp-kit-app-5-impl-backend/SKILL.md +19 -4
  12. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +12 -0
  13. package/skills/erp-kit-app-7-impl-review/SKILL.md +14 -2
  14. package/skills/erp-kit-app-shared/references/progress-protocol.md +77 -0
  15. package/skills/erp-kit-mock-scenario/SKILL.md +1 -1
  16. package/skills/erp-kit-module-1-requirements/SKILL.md +1 -1
  17. package/skills/erp-kit-module-3-plan/SKILL.md +3 -3
  18. package/skills/erp-kit-module-3-update-plan/SKILL.md +3 -3
  19. package/skills/erp-kit-module-5-impl/SKILL.md +1 -1
  20. package/skills/erp-kit-module-6-impl-review/SKILL.md +39 -17
  21. package/src/commands/app/index.ts +2 -0
  22. package/src/commands/app/progress/git-context.ts +16 -0
  23. package/src/commands/app/progress/index.ts +45 -0
  24. package/src/commands/app/progress/log.ts +49 -0
  25. package/src/commands/app/progress/progress.test.ts +128 -0
  26. package/src/commands/app/progress/schema-cmd.ts +10 -0
  27. package/src/commands/check.test.ts +4 -4
  28. package/src/commands/generate-doc.ts +1 -1
  29. package/src/commands/lib/discovery.test.ts +18 -10
  30. package/src/commands/lib/discovery.ts +17 -9
  31. package/src/commands/lib/paths.ts +4 -2
  32. package/src/commands/lib/sync-check-source.test.ts +1 -1
  33. package/src/commands/lib/sync-check-source.ts +6 -1
  34. package/src/commands/lib/sync-check-tests.test.ts +127 -6
  35. package/src/commands/lib/sync-check-tests.ts +82 -4
  36. package/src/commands/sync-check.ts +10 -3
  37. package/src/generator/generate-app-code.test.ts +0 -6
  38. package/src/generator/generate-app-code.ts +47 -22
  39. package/src/generator/generate-code.test.ts +10 -40
  40. package/src/generator/generate-code.ts +6 -12
  41. package/src/generator/stub-templates.test.ts +9 -5
  42. package/src/generator/stub-templates.ts +16 -9
  43. package/src/modules/finance-ledger/README.md +50 -0
  44. package/src/modules/finance-ledger/command/.gitkeep +0 -0
  45. package/src/modules/finance-ledger/command/addJournalLine.generated.ts +6 -0
  46. package/src/modules/finance-ledger/command/addJournalLine.test.ts +438 -0
  47. package/src/modules/finance-ledger/command/addJournalLine.ts +122 -0
  48. package/src/modules/finance-ledger/command/approveAndLockPeriod.generated.ts +6 -0
  49. package/src/modules/finance-ledger/command/approveAndLockPeriod.test.ts +107 -0
  50. package/src/modules/finance-ledger/command/approveAndLockPeriod.ts +72 -0
  51. package/src/modules/finance-ledger/command/beginClose.generated.ts +6 -0
  52. package/src/modules/finance-ledger/command/beginClose.test.ts +106 -0
  53. package/src/modules/finance-ledger/command/beginClose.ts +58 -0
  54. package/src/modules/finance-ledger/command/closePeriod.generated.ts +6 -0
  55. package/src/modules/finance-ledger/command/closePeriod.test.ts +87 -0
  56. package/src/modules/finance-ledger/command/closePeriod.ts +44 -0
  57. package/src/modules/finance-ledger/command/createAccountingPeriod.generated.ts +6 -0
  58. package/src/modules/finance-ledger/command/createAccountingPeriod.test.ts +425 -0
  59. package/src/modules/finance-ledger/command/createAccountingPeriod.ts +133 -0
  60. package/src/modules/finance-ledger/command/createFiscalYear.generated.ts +6 -0
  61. package/src/modules/finance-ledger/command/createFiscalYear.test.ts +197 -0
  62. package/src/modules/finance-ledger/command/createFiscalYear.ts +70 -0
  63. package/src/modules/finance-ledger/command/createJournalEntry.generated.ts +6 -0
  64. package/src/modules/finance-ledger/command/createJournalEntry.test.ts +261 -0
  65. package/src/modules/finance-ledger/command/createJournalEntry.ts +121 -0
  66. package/src/modules/finance-ledger/command/deleteAccountingPeriod.generated.ts +6 -0
  67. package/src/modules/finance-ledger/command/deleteAccountingPeriod.test.ts +71 -0
  68. package/src/modules/finance-ledger/command/deleteAccountingPeriod.ts +55 -0
  69. package/src/modules/finance-ledger/command/deleteFiscalYear.generated.ts +6 -0
  70. package/src/modules/finance-ledger/command/deleteFiscalYear.test.ts +38 -0
  71. package/src/modules/finance-ledger/command/deleteFiscalYear.ts +34 -0
  72. package/src/modules/finance-ledger/command/deleteJournalEntry.generated.ts +6 -0
  73. package/src/modules/finance-ledger/command/deleteJournalEntry.test.ts +58 -0
  74. package/src/modules/finance-ledger/command/deleteJournalEntry.ts +43 -0
  75. package/src/modules/finance-ledger/command/executeYearEndClose.generated.ts +6 -0
  76. package/src/modules/finance-ledger/command/executeYearEndClose.test.ts +239 -0
  77. package/src/modules/finance-ledger/command/executeYearEndClose.ts +415 -0
  78. package/src/modules/finance-ledger/command/finalCloseAndLockPeriod.generated.ts +6 -0
  79. package/src/modules/finance-ledger/command/finalCloseAndLockPeriod.test.ts +102 -0
  80. package/src/modules/finance-ledger/command/finalCloseAndLockPeriod.ts +76 -0
  81. package/src/modules/finance-ledger/command/finalizeFinancialStatement.generated.ts +6 -0
  82. package/src/modules/finance-ledger/command/finalizeFinancialStatement.test.ts +73 -0
  83. package/src/modules/finance-ledger/command/finalizeFinancialStatement.ts +73 -0
  84. package/src/modules/finance-ledger/command/generateFinancialStatement.generated.ts +6 -0
  85. package/src/modules/finance-ledger/command/generateFinancialStatement.test.ts +311 -0
  86. package/src/modules/finance-ledger/command/generateFinancialStatement.ts +275 -0
  87. package/src/modules/finance-ledger/command/generatePreliminaryStatements.generated.ts +6 -0
  88. package/src/modules/finance-ledger/command/generatePreliminaryStatements.test.ts +152 -0
  89. package/src/modules/finance-ledger/command/generatePreliminaryStatements.ts +140 -0
  90. package/src/modules/finance-ledger/command/generateTrialBalance.generated.ts +6 -0
  91. package/src/modules/finance-ledger/command/generateTrialBalance.test.ts +439 -0
  92. package/src/modules/finance-ledger/command/generateTrialBalance.ts +268 -0
  93. package/src/modules/finance-ledger/command/initiatePeriodClose.generated.ts +6 -0
  94. package/src/modules/finance-ledger/command/initiatePeriodClose.test.ts +153 -0
  95. package/src/modules/finance-ledger/command/initiatePeriodClose.ts +84 -0
  96. package/src/modules/finance-ledger/command/openForAdvanceEntry.generated.ts +6 -0
  97. package/src/modules/finance-ledger/command/openForAdvanceEntry.test.ts +87 -0
  98. package/src/modules/finance-ledger/command/openForAdvanceEntry.ts +44 -0
  99. package/src/modules/finance-ledger/command/openPeriod.generated.ts +6 -0
  100. package/src/modules/finance-ledger/command/openPeriod.test.ts +90 -0
  101. package/src/modules/finance-ledger/command/openPeriod.ts +44 -0
  102. package/src/modules/finance-ledger/command/permanentlyClosePeriod.generated.ts +6 -0
  103. package/src/modules/finance-ledger/command/permanentlyClosePeriod.test.ts +87 -0
  104. package/src/modules/finance-ledger/command/permanentlyClosePeriod.ts +48 -0
  105. package/src/modules/finance-ledger/command/postAdjustingEntries.generated.ts +6 -0
  106. package/src/modules/finance-ledger/command/postAdjustingEntries.test.ts +392 -0
  107. package/src/modules/finance-ledger/command/postAdjustingEntries.ts +156 -0
  108. package/src/modules/finance-ledger/command/postJournalEntry.generated.ts +6 -0
  109. package/src/modules/finance-ledger/command/postJournalEntry.test.ts +346 -0
  110. package/src/modules/finance-ledger/command/postJournalEntry.ts +160 -0
  111. package/src/modules/finance-ledger/command/processInventoryHandoff.generated.ts +6 -0
  112. package/src/modules/finance-ledger/command/processInventoryHandoff.test.ts +211 -0
  113. package/src/modules/finance-ledger/command/processInventoryHandoff.ts +133 -0
  114. package/src/modules/finance-ledger/command/processManufacturingHandoff.generated.ts +6 -0
  115. package/src/modules/finance-ledger/command/processManufacturingHandoff.test.ts +221 -0
  116. package/src/modules/finance-ledger/command/processManufacturingHandoff.ts +133 -0
  117. package/src/modules/finance-ledger/command/processPurchaseHandoff.generated.ts +6 -0
  118. package/src/modules/finance-ledger/command/processPurchaseHandoff.test.ts +222 -0
  119. package/src/modules/finance-ledger/command/processPurchaseHandoff.ts +133 -0
  120. package/src/modules/finance-ledger/command/processSalesHandoff.generated.ts +6 -0
  121. package/src/modules/finance-ledger/command/processSalesHandoff.test.ts +257 -0
  122. package/src/modules/finance-ledger/command/processSalesHandoff.ts +135 -0
  123. package/src/modules/finance-ledger/command/regenerateFinancialStatement.generated.ts +6 -0
  124. package/src/modules/finance-ledger/command/regenerateFinancialStatement.test.ts +129 -0
  125. package/src/modules/finance-ledger/command/regenerateFinancialStatement.ts +186 -0
  126. package/src/modules/finance-ledger/command/removeJournalLine.generated.ts +6 -0
  127. package/src/modules/finance-ledger/command/removeJournalLine.test.ts +65 -0
  128. package/src/modules/finance-ledger/command/removeJournalLine.ts +39 -0
  129. package/src/modules/finance-ledger/command/reopenPeriod.generated.ts +6 -0
  130. package/src/modules/finance-ledger/command/reopenPeriod.test.ts +87 -0
  131. package/src/modules/finance-ledger/command/reopenPeriod.ts +44 -0
  132. package/src/modules/finance-ledger/command/reverseJournalEntry.generated.ts +6 -0
  133. package/src/modules/finance-ledger/command/reverseJournalEntry.test.ts +337 -0
  134. package/src/modules/finance-ledger/command/reverseJournalEntry.ts +140 -0
  135. package/src/modules/finance-ledger/command/revertSoftLock.generated.ts +6 -0
  136. package/src/modules/finance-ledger/command/revertSoftLock.test.ts +96 -0
  137. package/src/modules/finance-ledger/command/revertSoftLock.ts +67 -0
  138. package/src/modules/finance-ledger/command/updateFiscalYear.generated.ts +6 -0
  139. package/src/modules/finance-ledger/command/updateFiscalYear.test.ts +138 -0
  140. package/src/modules/finance-ledger/command/updateFiscalYear.ts +85 -0
  141. package/src/modules/finance-ledger/command/updateJournalEntry.generated.ts +6 -0
  142. package/src/modules/finance-ledger/command/updateJournalEntry.test.ts +195 -0
  143. package/src/modules/finance-ledger/command/updateJournalEntry.ts +86 -0
  144. package/src/modules/finance-ledger/command/updateJournalLine.generated.ts +6 -0
  145. package/src/modules/finance-ledger/command/updateJournalLine.test.ts +385 -0
  146. package/src/modules/finance-ledger/command/updateJournalLine.ts +155 -0
  147. package/src/modules/finance-ledger/command/verifySubledgerTransfers.generated.ts +6 -0
  148. package/src/modules/finance-ledger/command/verifySubledgerTransfers.test.ts +201 -0
  149. package/src/modules/finance-ledger/command/verifySubledgerTransfers.ts +113 -0
  150. package/src/modules/finance-ledger/command/verifyTrialBalance.generated.ts +6 -0
  151. package/src/modules/finance-ledger/command/verifyTrialBalance.test.ts +136 -0
  152. package/src/modules/finance-ledger/command/verifyTrialBalance.ts +97 -0
  153. package/src/modules/finance-ledger/db/.gitkeep +0 -0
  154. package/src/modules/finance-ledger/db/accountingPeriod.ts +58 -0
  155. package/src/modules/finance-ledger/db/financialStatement.ts +92 -0
  156. package/src/modules/finance-ledger/db/financialStatementLineItem.ts +76 -0
  157. package/src/modules/finance-ledger/db/fiscalYear.ts +41 -0
  158. package/src/modules/finance-ledger/db/journalEntry.ts +101 -0
  159. package/src/modules/finance-ledger/db/journalLine.ts +64 -0
  160. package/src/modules/finance-ledger/db/periodClose.ts +97 -0
  161. package/src/modules/finance-ledger/db/trialBalance.ts +63 -0
  162. package/src/modules/finance-ledger/db/trialBalanceLine.ts +63 -0
  163. package/src/modules/finance-ledger/docs/commands/AddJournalLine.md +74 -0
  164. package/src/modules/finance-ledger/docs/commands/ApproveAndLockPeriod.md +53 -0
  165. package/src/modules/finance-ledger/docs/commands/BeginClose.md +47 -0
  166. package/src/modules/finance-ledger/docs/commands/ClosePeriod.md +45 -0
  167. package/src/modules/finance-ledger/docs/commands/CreateAccountingPeriod.md +69 -0
  168. package/src/modules/finance-ledger/docs/commands/CreateFiscalYear.md +56 -0
  169. package/src/modules/finance-ledger/docs/commands/CreateJournalEntry.md +63 -0
  170. package/src/modules/finance-ledger/docs/commands/DeleteAccountingPeriod.md +46 -0
  171. package/src/modules/finance-ledger/docs/commands/DeleteFiscalYear.md +40 -0
  172. package/src/modules/finance-ledger/docs/commands/DeleteJournalEntry.md +44 -0
  173. package/src/modules/finance-ledger/docs/commands/ExecuteYearEndClose.md +81 -0
  174. package/src/modules/finance-ledger/docs/commands/FinalCloseAndLockPeriod.md +49 -0
  175. package/src/modules/finance-ledger/docs/commands/FinalizeFinancialStatement.md +43 -0
  176. package/src/modules/finance-ledger/docs/commands/GenerateFinancialStatement.md +86 -0
  177. package/src/modules/finance-ledger/docs/commands/GeneratePreliminaryStatements.md +53 -0
  178. package/src/modules/finance-ledger/docs/commands/GenerateTrialBalance.md +75 -0
  179. package/src/modules/finance-ledger/docs/commands/InitiatePeriodClose.md +58 -0
  180. package/src/modules/finance-ledger/docs/commands/OpenForAdvanceEntry.md +44 -0
  181. package/src/modules/finance-ledger/docs/commands/OpenPeriod.md +45 -0
  182. package/src/modules/finance-ledger/docs/commands/PermanentlyClosePeriod.md +45 -0
  183. package/src/modules/finance-ledger/docs/commands/PostAdjustingEntries.md +61 -0
  184. package/src/modules/finance-ledger/docs/commands/PostJournalEntry.md +81 -0
  185. package/src/modules/finance-ledger/docs/commands/ProcessInventoryHandoff.md +72 -0
  186. package/src/modules/finance-ledger/docs/commands/ProcessManufacturingHandoff.md +68 -0
  187. package/src/modules/finance-ledger/docs/commands/ProcessPurchaseHandoff.md +68 -0
  188. package/src/modules/finance-ledger/docs/commands/ProcessSalesHandoff.md +71 -0
  189. package/src/modules/finance-ledger/docs/commands/RegenerateFinancialStatement.md +60 -0
  190. package/src/modules/finance-ledger/docs/commands/RemoveJournalLine.md +42 -0
  191. package/src/modules/finance-ledger/docs/commands/ReopenPeriod.md +45 -0
  192. package/src/modules/finance-ledger/docs/commands/ReverseJournalEntry.md +62 -0
  193. package/src/modules/finance-ledger/docs/commands/RevertSoftLock.md +49 -0
  194. package/src/modules/finance-ledger/docs/commands/UpdateFiscalYear.md +60 -0
  195. package/src/modules/finance-ledger/docs/commands/UpdateJournalEntry.md +50 -0
  196. package/src/modules/finance-ledger/docs/commands/UpdateJournalLine.md +61 -0
  197. package/src/modules/finance-ledger/docs/commands/VerifySubledgerTransfers.md +59 -0
  198. package/src/modules/finance-ledger/docs/commands/VerifyTrialBalance.md +53 -0
  199. package/src/modules/finance-ledger/docs/features/accounting-period-management.md +110 -0
  200. package/src/modules/finance-ledger/docs/features/financial-statement-generation.md +115 -0
  201. package/src/modules/finance-ledger/docs/features/journal-entry-management.md +138 -0
  202. package/src/modules/finance-ledger/docs/features/period-end-close.md +102 -0
  203. package/src/modules/finance-ledger/docs/features/subledger-integration.md +141 -0
  204. package/src/modules/finance-ledger/docs/features/trial-balance.md +99 -0
  205. package/src/modules/finance-ledger/docs/features/year-end-close.md +84 -0
  206. package/src/modules/finance-ledger/docs/models/AccountingPeriod.md +71 -0
  207. package/src/modules/finance-ledger/docs/models/FinancialStatement.md +76 -0
  208. package/src/modules/finance-ledger/docs/models/FinancialStatementLineItem.md +41 -0
  209. package/src/modules/finance-ledger/docs/models/FiscalYear.md +41 -0
  210. package/src/modules/finance-ledger/docs/models/JournalEntry.md +80 -0
  211. package/src/modules/finance-ledger/docs/models/JournalLine.md +47 -0
  212. package/src/modules/finance-ledger/docs/models/PeriodClose.md +83 -0
  213. package/src/modules/finance-ledger/docs/models/TrialBalance.md +56 -0
  214. package/src/modules/finance-ledger/docs/models/TrialBalanceLine.md +37 -0
  215. package/src/modules/finance-ledger/docs/queries/GetAccountingPeriod.md +35 -0
  216. package/src/modules/finance-ledger/docs/queries/GetFinancialStatement.md +38 -0
  217. package/src/modules/finance-ledger/docs/queries/GetFiscalYear.md +35 -0
  218. package/src/modules/finance-ledger/docs/queries/GetJournalEntry.md +37 -0
  219. package/src/modules/finance-ledger/docs/queries/GetPeriodByDate.md +38 -0
  220. package/src/modules/finance-ledger/docs/queries/GetPeriodClose.md +36 -0
  221. package/src/modules/finance-ledger/docs/queries/GetSubledgerTransferStatus.md +45 -0
  222. package/src/modules/finance-ledger/docs/queries/GetTrialBalance.md +38 -0
  223. package/src/modules/finance-ledger/docs/queries/ListAccountingPeriods.md +46 -0
  224. package/src/modules/finance-ledger/docs/queries/ListFinancialStatements.md +46 -0
  225. package/src/modules/finance-ledger/docs/queries/ListFiscalYears.md +42 -0
  226. package/src/modules/finance-ledger/docs/queries/ListJournalEntries.md +48 -0
  227. package/src/modules/finance-ledger/docs/queries/ListPeriodCloses.md +46 -0
  228. package/src/modules/finance-ledger/docs/queries/ListTrialBalances.md +51 -0
  229. package/src/modules/finance-ledger/executor/.gitkeep +0 -0
  230. package/src/modules/finance-ledger/generated/enums.ts +109 -0
  231. package/src/modules/finance-ledger/generated/kysely-tailordb.ts +202 -0
  232. package/src/modules/finance-ledger/index.ts +2 -0
  233. package/src/modules/finance-ledger/lib/_db_deps.ts +56 -0
  234. package/src/modules/finance-ledger/lib/errors.generated.ts +332 -0
  235. package/src/modules/finance-ledger/lib/permissions.generated.ts +41 -0
  236. package/src/modules/finance-ledger/lib/types.ts +66 -0
  237. package/src/modules/finance-ledger/module.ts +262 -0
  238. package/src/modules/finance-ledger/package.json +26 -0
  239. package/src/modules/finance-ledger/permissions.ts +3 -0
  240. package/src/modules/finance-ledger/query/.gitkeep +0 -0
  241. package/src/modules/finance-ledger/query/getAccountingPeriod.generated.ts +5 -0
  242. package/src/modules/finance-ledger/query/getAccountingPeriod.test.ts +31 -0
  243. package/src/modules/finance-ledger/query/getAccountingPeriod.ts +21 -0
  244. package/src/modules/finance-ledger/query/getFinancialStatement.generated.ts +5 -0
  245. package/src/modules/finance-ledger/query/getFinancialStatement.test.ts +35 -0
  246. package/src/modules/finance-ledger/query/getFinancialStatement.ts +29 -0
  247. package/src/modules/finance-ledger/query/getFiscalYear.generated.ts +5 -0
  248. package/src/modules/finance-ledger/query/getFiscalYear.test.ts +31 -0
  249. package/src/modules/finance-ledger/query/getFiscalYear.ts +21 -0
  250. package/src/modules/finance-ledger/query/getJournalEntry.generated.ts +5 -0
  251. package/src/modules/finance-ledger/query/getJournalEntry.test.ts +35 -0
  252. package/src/modules/finance-ledger/query/getJournalEntry.ts +29 -0
  253. package/src/modules/finance-ledger/query/getPeriodByDate.generated.ts +5 -0
  254. package/src/modules/finance-ledger/query/getPeriodByDate.test.ts +53 -0
  255. package/src/modules/finance-ledger/query/getPeriodByDate.ts +27 -0
  256. package/src/modules/finance-ledger/query/getPeriodClose.generated.ts +5 -0
  257. package/src/modules/finance-ledger/query/getPeriodClose.test.ts +31 -0
  258. package/src/modules/finance-ledger/query/getPeriodClose.ts +21 -0
  259. package/src/modules/finance-ledger/query/getSubledgerTransferStatus.generated.ts +5 -0
  260. package/src/modules/finance-ledger/query/getSubledgerTransferStatus.test.ts +101 -0
  261. package/src/modules/finance-ledger/query/getSubledgerTransferStatus.ts +68 -0
  262. package/src/modules/finance-ledger/query/getTrialBalance.generated.ts +5 -0
  263. package/src/modules/finance-ledger/query/getTrialBalance.test.ts +33 -0
  264. package/src/modules/finance-ledger/query/getTrialBalance.ts +30 -0
  265. package/src/modules/finance-ledger/query/listAccountingPeriods.generated.ts +5 -0
  266. package/src/modules/finance-ledger/query/listAccountingPeriods.test.ts +81 -0
  267. package/src/modules/finance-ledger/query/listAccountingPeriods.ts +61 -0
  268. package/src/modules/finance-ledger/query/listFinancialStatements.generated.ts +5 -0
  269. package/src/modules/finance-ledger/query/listFinancialStatements.test.ts +76 -0
  270. package/src/modules/finance-ledger/query/listFinancialStatements.ts +62 -0
  271. package/src/modules/finance-ledger/query/listFiscalYears.generated.ts +5 -0
  272. package/src/modules/finance-ledger/query/listFiscalYears.test.ts +63 -0
  273. package/src/modules/finance-ledger/query/listFiscalYears.ts +45 -0
  274. package/src/modules/finance-ledger/query/listJournalEntries.generated.ts +5 -0
  275. package/src/modules/finance-ledger/query/listJournalEntries.test.ts +91 -0
  276. package/src/modules/finance-ledger/query/listJournalEntries.ts +64 -0
  277. package/src/modules/finance-ledger/query/listPeriodCloses.generated.ts +5 -0
  278. package/src/modules/finance-ledger/query/listPeriodCloses.test.ts +63 -0
  279. package/src/modules/finance-ledger/query/listPeriodCloses.ts +64 -0
  280. package/src/modules/finance-ledger/query/listTrialBalances.generated.ts +5 -0
  281. package/src/modules/finance-ledger/query/listTrialBalances.test.ts +78 -0
  282. package/src/modules/finance-ledger/query/listTrialBalances.ts +56 -0
  283. package/src/modules/finance-ledger/seed/index.ts +19 -0
  284. package/src/modules/finance-ledger/tailor.config.ts +13 -0
  285. package/src/modules/finance-ledger/tailor.d.ts +13 -0
  286. package/src/modules/finance-ledger/testing/commandTestUtils.ts +35 -0
  287. package/src/modules/finance-ledger/testing/fixtures.ts +382 -0
  288. package/src/modules/finance-ledger/tsconfig.json +16 -0
  289. package/src/modules/inventory/docs/features/inventory-adjustment.md +2 -1
  290. package/src/modules/inventory/docs/features/scrap-management.md +39 -1
  291. package/src/modules/manufacturing/README.md +63 -0
  292. package/src/modules/manufacturing/command/.gitkeep +0 -0
  293. package/src/modules/manufacturing/command/activateBillOfMaterial.generated.ts +6 -0
  294. package/src/modules/manufacturing/command/activateBillOfMaterial.test.ts +166 -0
  295. package/src/modules/manufacturing/command/activateBillOfMaterial.ts +173 -0
  296. package/src/modules/manufacturing/command/activateRouting.generated.ts +6 -0
  297. package/src/modules/manufacturing/command/activateRouting.test.ts +152 -0
  298. package/src/modules/manufacturing/command/activateRouting.ts +92 -0
  299. package/src/modules/manufacturing/command/activateWorkCenter.generated.ts +6 -0
  300. package/src/modules/manufacturing/command/activateWorkCenter.test.ts +135 -0
  301. package/src/modules/manufacturing/command/activateWorkCenter.ts +91 -0
  302. package/src/modules/manufacturing/command/cancelProductionOrder.generated.ts +6 -0
  303. package/src/modules/manufacturing/command/cancelProductionOrder.test.ts +151 -0
  304. package/src/modules/manufacturing/command/cancelProductionOrder.ts +114 -0
  305. package/src/modules/manufacturing/command/closeProductionOrder.generated.ts +6 -0
  306. package/src/modules/manufacturing/command/closeProductionOrder.test.ts +126 -0
  307. package/src/modules/manufacturing/command/closeProductionOrder.ts +87 -0
  308. package/src/modules/manufacturing/command/completeProductionOrder.generated.ts +6 -0
  309. package/src/modules/manufacturing/command/completeProductionOrder.test.ts +132 -0
  310. package/src/modules/manufacturing/command/completeProductionOrder.ts +97 -0
  311. package/src/modules/manufacturing/command/completeWorkOrder.generated.ts +6 -0
  312. package/src/modules/manufacturing/command/completeWorkOrder.test.ts +369 -0
  313. package/src/modules/manufacturing/command/completeWorkOrder.ts +212 -0
  314. package/src/modules/manufacturing/command/createBillOfMaterial.generated.ts +6 -0
  315. package/src/modules/manufacturing/command/createBillOfMaterial.test.ts +210 -0
  316. package/src/modules/manufacturing/command/createBillOfMaterial.ts +176 -0
  317. package/src/modules/manufacturing/command/createProductionOrder.generated.ts +6 -0
  318. package/src/modules/manufacturing/command/createProductionOrder.test.ts +160 -0
  319. package/src/modules/manufacturing/command/createProductionOrder.ts +129 -0
  320. package/src/modules/manufacturing/command/createRouting.generated.ts +6 -0
  321. package/src/modules/manufacturing/command/createRouting.test.ts +168 -0
  322. package/src/modules/manufacturing/command/createRouting.ts +128 -0
  323. package/src/modules/manufacturing/command/createWorkCenter.generated.ts +6 -0
  324. package/src/modules/manufacturing/command/createWorkCenter.test.ts +148 -0
  325. package/src/modules/manufacturing/command/createWorkCenter.ts +131 -0
  326. package/src/modules/manufacturing/command/deactivateBillOfMaterial.generated.ts +6 -0
  327. package/src/modules/manufacturing/command/deactivateBillOfMaterial.test.ts +103 -0
  328. package/src/modules/manufacturing/command/deactivateBillOfMaterial.ts +78 -0
  329. package/src/modules/manufacturing/command/deactivateRouting.generated.ts +6 -0
  330. package/src/modules/manufacturing/command/deactivateRouting.test.ts +112 -0
  331. package/src/modules/manufacturing/command/deactivateRouting.ts +76 -0
  332. package/src/modules/manufacturing/command/deactivateWorkCenter.generated.ts +6 -0
  333. package/src/modules/manufacturing/command/deactivateWorkCenter.test.ts +113 -0
  334. package/src/modules/manufacturing/command/deactivateWorkCenter.ts +85 -0
  335. package/src/modules/manufacturing/command/pauseWorkOrder.generated.ts +6 -0
  336. package/src/modules/manufacturing/command/pauseWorkOrder.test.ts +118 -0
  337. package/src/modules/manufacturing/command/pauseWorkOrder.ts +82 -0
  338. package/src/modules/manufacturing/command/recordInventoryIssueOutcome.generated.ts +6 -0
  339. package/src/modules/manufacturing/command/recordInventoryIssueOutcome.test.ts +183 -0
  340. package/src/modules/manufacturing/command/recordInventoryIssueOutcome.ts +139 -0
  341. package/src/modules/manufacturing/command/recordManufacturingCostSettlementAcknowledgment.generated.ts +6 -0
  342. package/src/modules/manufacturing/command/recordManufacturingCostSettlementAcknowledgment.test.ts +120 -0
  343. package/src/modules/manufacturing/command/recordManufacturingCostSettlementAcknowledgment.ts +110 -0
  344. package/src/modules/manufacturing/command/releaseProductionOrder.generated.ts +6 -0
  345. package/src/modules/manufacturing/command/releaseProductionOrder.test.ts +220 -0
  346. package/src/modules/manufacturing/command/releaseProductionOrder.ts +450 -0
  347. package/src/modules/manufacturing/command/reopenProductionOrder.generated.ts +6 -0
  348. package/src/modules/manufacturing/command/reopenProductionOrder.test.ts +196 -0
  349. package/src/modules/manufacturing/command/reopenProductionOrder.ts +98 -0
  350. package/src/modules/manufacturing/command/reportWorkOrderProgress.generated.ts +6 -0
  351. package/src/modules/manufacturing/command/reportWorkOrderProgress.test.ts +204 -0
  352. package/src/modules/manufacturing/command/reportWorkOrderProgress.ts +129 -0
  353. package/src/modules/manufacturing/command/rescheduleProductionOrder.generated.ts +6 -0
  354. package/src/modules/manufacturing/command/rescheduleProductionOrder.test.ts +185 -0
  355. package/src/modules/manufacturing/command/rescheduleProductionOrder.ts +95 -0
  356. package/src/modules/manufacturing/command/resumeWorkOrder.generated.ts +6 -0
  357. package/src/modules/manufacturing/command/resumeWorkOrder.test.ts +122 -0
  358. package/src/modules/manufacturing/command/resumeWorkOrder.ts +94 -0
  359. package/src/modules/manufacturing/command/reviewManufacturingCostSummary.generated.ts +6 -0
  360. package/src/modules/manufacturing/command/reviewManufacturingCostSummary.test.ts +231 -0
  361. package/src/modules/manufacturing/command/reviewManufacturingCostSummary.ts +137 -0
  362. package/src/modules/manufacturing/command/startWorkOrder.generated.ts +6 -0
  363. package/src/modules/manufacturing/command/startWorkOrder.test.ts +118 -0
  364. package/src/modules/manufacturing/command/startWorkOrder.ts +126 -0
  365. package/src/modules/manufacturing/command/technicallyCompleteProductionOrder.generated.ts +6 -0
  366. package/src/modules/manufacturing/command/technicallyCompleteProductionOrder.test.ts +153 -0
  367. package/src/modules/manufacturing/command/technicallyCompleteProductionOrder.ts +106 -0
  368. package/src/modules/manufacturing/command/unreleaseProductionOrder.generated.ts +6 -0
  369. package/src/modules/manufacturing/command/unreleaseProductionOrder.test.ts +140 -0
  370. package/src/modules/manufacturing/command/unreleaseProductionOrder.ts +131 -0
  371. package/src/modules/manufacturing/command/updateBillOfMaterial.generated.ts +6 -0
  372. package/src/modules/manufacturing/command/updateBillOfMaterial.test.ts +149 -0
  373. package/src/modules/manufacturing/command/updateBillOfMaterial.ts +174 -0
  374. package/src/modules/manufacturing/command/updateProductionOrder.generated.ts +6 -0
  375. package/src/modules/manufacturing/command/updateProductionOrder.test.ts +112 -0
  376. package/src/modules/manufacturing/command/updateProductionOrder.ts +145 -0
  377. package/src/modules/manufacturing/command/updateRouting.generated.ts +6 -0
  378. package/src/modules/manufacturing/command/updateRouting.test.ts +211 -0
  379. package/src/modules/manufacturing/command/updateRouting.ts +124 -0
  380. package/src/modules/manufacturing/command/updateWorkCenter.generated.ts +6 -0
  381. package/src/modules/manufacturing/command/updateWorkCenter.test.ts +152 -0
  382. package/src/modules/manufacturing/command/updateWorkCenter.ts +137 -0
  383. package/src/modules/manufacturing/db/.gitkeep +0 -0
  384. package/src/modules/manufacturing/db/billOfMaterial.ts +70 -0
  385. package/src/modules/manufacturing/db/billOfMaterialLine.ts +49 -0
  386. package/src/modules/manufacturing/db/costVarianceLine.ts +53 -0
  387. package/src/modules/manufacturing/db/manufacturingCostLine.ts +35 -0
  388. package/src/modules/manufacturing/db/manufacturingCostSettlementRecord.ts +39 -0
  389. package/src/modules/manufacturing/db/manufacturingCostSummary.ts +59 -0
  390. package/src/modules/manufacturing/db/productionOrder.ts +83 -0
  391. package/src/modules/manufacturing/db/productionOrderBomSnapshot.ts +44 -0
  392. package/src/modules/manufacturing/db/productionOrderCostBaseline.ts +44 -0
  393. package/src/modules/manufacturing/db/productionOrderMaterialRequirement.ts +57 -0
  394. package/src/modules/manufacturing/db/productionOrderRoutingSnapshot.ts +43 -0
  395. package/src/modules/manufacturing/db/routing.ts +63 -0
  396. package/src/modules/manufacturing/db/routingOperation.ts +57 -0
  397. package/src/modules/manufacturing/db/workCenter.ts +87 -0
  398. package/src/modules/manufacturing/db/workOrder.ts +65 -0
  399. package/src/modules/manufacturing/db/workOrderExecutionEvent.ts +54 -0
  400. package/src/modules/manufacturing/docs/commands/ActivateBillOfMaterial.md +50 -0
  401. package/src/modules/manufacturing/docs/commands/ActivateRouting.md +48 -0
  402. package/src/modules/manufacturing/docs/commands/ActivateWorkCenter.md +49 -0
  403. package/src/modules/manufacturing/docs/commands/CancelProductionOrder.md +48 -0
  404. package/src/modules/manufacturing/docs/commands/CloseProductionOrder.md +46 -0
  405. package/src/modules/manufacturing/docs/commands/CompleteProductionOrder.md +48 -0
  406. package/src/modules/manufacturing/docs/commands/CompleteWorkOrder.md +66 -0
  407. package/src/modules/manufacturing/docs/commands/CreateBillOfMaterial.md +54 -0
  408. package/src/modules/manufacturing/docs/commands/CreateProductionOrder.md +49 -0
  409. package/src/modules/manufacturing/docs/commands/CreateRouting.md +50 -0
  410. package/src/modules/manufacturing/docs/commands/CreateWorkCenter.md +51 -0
  411. package/src/modules/manufacturing/docs/commands/DeactivateBillOfMaterial.md +45 -0
  412. package/src/modules/manufacturing/docs/commands/DeactivateRouting.md +45 -0
  413. package/src/modules/manufacturing/docs/commands/DeactivateWorkCenter.md +45 -0
  414. package/src/modules/manufacturing/docs/commands/PauseWorkOrder.md +44 -0
  415. package/src/modules/manufacturing/docs/commands/RecordInventoryIssueOutcome.md +59 -0
  416. package/src/modules/manufacturing/docs/commands/RecordManufacturingCostSettlementAcknowledgment.md +49 -0
  417. package/src/modules/manufacturing/docs/commands/ReleaseProductionOrder.md +57 -0
  418. package/src/modules/manufacturing/docs/commands/ReopenProductionOrder.md +54 -0
  419. package/src/modules/manufacturing/docs/commands/ReportWorkOrderProgress.md +53 -0
  420. package/src/modules/manufacturing/docs/commands/RescheduleProductionOrder.md +45 -0
  421. package/src/modules/manufacturing/docs/commands/ResumeWorkOrder.md +44 -0
  422. package/src/modules/manufacturing/docs/commands/ReviewManufacturingCostSummary.md +52 -0
  423. package/src/modules/manufacturing/docs/commands/StartWorkOrder.md +46 -0
  424. package/src/modules/manufacturing/docs/commands/TechnicallyCompleteProductionOrder.md +51 -0
  425. package/src/modules/manufacturing/docs/commands/UnreleaseProductionOrder.md +46 -0
  426. package/src/modules/manufacturing/docs/commands/UpdateBillOfMaterial.md +48 -0
  427. package/src/modules/manufacturing/docs/commands/UpdateProductionOrder.md +48 -0
  428. package/src/modules/manufacturing/docs/commands/UpdateRouting.md +52 -0
  429. package/src/modules/manufacturing/docs/commands/UpdateWorkCenter.md +48 -0
  430. package/src/modules/manufacturing/docs/features/bill-of-material-management.md +83 -0
  431. package/src/modules/manufacturing/docs/features/manufacturing-cost-and-variance.md +191 -0
  432. package/src/modules/manufacturing/docs/features/production-order-lifecycle.md +103 -0
  433. package/src/modules/manufacturing/docs/features/routing-and-work-center-definition.md +63 -0
  434. package/src/modules/manufacturing/docs/features/work-order-execution.md +115 -0
  435. package/src/modules/manufacturing/docs/models/BillOfMaterial.md +60 -0
  436. package/src/modules/manufacturing/docs/models/ManufacturingCostSummary.md +66 -0
  437. package/src/modules/manufacturing/docs/models/ProductionOrder.md +76 -0
  438. package/src/modules/manufacturing/docs/models/Routing.md +58 -0
  439. package/src/modules/manufacturing/docs/models/WorkCenter.md +56 -0
  440. package/src/modules/manufacturing/docs/models/WorkOrder.md +63 -0
  441. package/src/modules/manufacturing/docs/queries/DetectBillOfMaterialCircularReference.md +39 -0
  442. package/src/modules/manufacturing/docs/queries/ExplodeBillOfMaterial.md +56 -0
  443. package/src/modules/manufacturing/docs/queries/GetBillOfMaterial.md +37 -0
  444. package/src/modules/manufacturing/docs/queries/GetManufacturingCostSummary.md +39 -0
  445. package/src/modules/manufacturing/docs/queries/GetProductionOrder.md +37 -0
  446. package/src/modules/manufacturing/docs/queries/GetRouting.md +39 -0
  447. package/src/modules/manufacturing/docs/queries/GetWorkCenter.md +35 -0
  448. package/src/modules/manufacturing/docs/queries/GetWorkOrder.md +38 -0
  449. package/src/modules/manufacturing/docs/queries/ListBillOfMaterialsByItem.md +42 -0
  450. package/src/modules/manufacturing/docs/queries/ListManufacturingCostSummariesByStatus.md +41 -0
  451. package/src/modules/manufacturing/docs/queries/ListProductionOrdersByStatus.md +41 -0
  452. package/src/modules/manufacturing/docs/queries/ListRoutingsByItem.md +42 -0
  453. package/src/modules/manufacturing/docs/queries/ListWorkCentersBySite.md +38 -0
  454. package/src/modules/manufacturing/docs/queries/ListWorkOrdersByProductionOrder.md +39 -0
  455. package/src/modules/manufacturing/docs/queries/ListWorkOrdersByWorkCenter.md +43 -0
  456. package/src/modules/manufacturing/executor/.gitkeep +0 -0
  457. package/src/modules/manufacturing/generated/enums.ts +113 -0
  458. package/src/modules/manufacturing/generated/kysely-tailordb.ts +247 -0
  459. package/src/modules/manufacturing/index.ts +2 -0
  460. package/src/modules/manufacturing/lib/_db_deps.ts +22 -0
  461. package/src/modules/manufacturing/lib/errors.generated.ts +592 -0
  462. package/src/modules/manufacturing/lib/permissions.generated.ts +35 -0
  463. package/src/modules/manufacturing/lib/types.ts +111 -0
  464. package/src/modules/manufacturing/module.ts +226 -0
  465. package/src/modules/manufacturing/permissions.ts +3 -0
  466. package/src/modules/manufacturing/query/.gitkeep +0 -0
  467. package/src/modules/manufacturing/query/detectBillOfMaterialCircularReference.generated.ts +5 -0
  468. package/src/modules/manufacturing/query/detectBillOfMaterialCircularReference.test.ts +115 -0
  469. package/src/modules/manufacturing/query/detectBillOfMaterialCircularReference.ts +79 -0
  470. package/src/modules/manufacturing/query/explodeBillOfMaterial.generated.ts +5 -0
  471. package/src/modules/manufacturing/query/explodeBillOfMaterial.test.ts +445 -0
  472. package/src/modules/manufacturing/query/explodeBillOfMaterial.ts +306 -0
  473. package/src/modules/manufacturing/query/getBillOfMaterial.generated.ts +5 -0
  474. package/src/modules/manufacturing/query/getBillOfMaterial.test.ts +64 -0
  475. package/src/modules/manufacturing/query/getBillOfMaterial.ts +27 -0
  476. package/src/modules/manufacturing/query/getManufacturingCostSummary.generated.ts +5 -0
  477. package/src/modules/manufacturing/query/getManufacturingCostSummary.test.ts +147 -0
  478. package/src/modules/manufacturing/query/getManufacturingCostSummary.ts +46 -0
  479. package/src/modules/manufacturing/query/getProductionOrder.generated.ts +5 -0
  480. package/src/modules/manufacturing/query/getProductionOrder.test.ts +139 -0
  481. package/src/modules/manufacturing/query/getProductionOrder.ts +84 -0
  482. package/src/modules/manufacturing/query/getRouting.generated.ts +5 -0
  483. package/src/modules/manufacturing/query/getRouting.test.ts +71 -0
  484. package/src/modules/manufacturing/query/getRouting.ts +34 -0
  485. package/src/modules/manufacturing/query/getWorkCenter.generated.ts +5 -0
  486. package/src/modules/manufacturing/query/getWorkCenter.test.ts +37 -0
  487. package/src/modules/manufacturing/query/getWorkCenter.ts +21 -0
  488. package/src/modules/manufacturing/query/getWorkOrder.generated.ts +5 -0
  489. package/src/modules/manufacturing/query/getWorkOrder.test.ts +73 -0
  490. package/src/modules/manufacturing/query/getWorkOrder.ts +28 -0
  491. package/src/modules/manufacturing/query/listBillOfMaterialsByItem.generated.ts +5 -0
  492. package/src/modules/manufacturing/query/listBillOfMaterialsByItem.test.ts +107 -0
  493. package/src/modules/manufacturing/query/listBillOfMaterialsByItem.ts +58 -0
  494. package/src/modules/manufacturing/query/listManufacturingCostSummariesByStatus.generated.ts +5 -0
  495. package/src/modules/manufacturing/query/listManufacturingCostSummariesByStatus.test.ts +96 -0
  496. package/src/modules/manufacturing/query/listManufacturingCostSummariesByStatus.ts +77 -0
  497. package/src/modules/manufacturing/query/listProductionOrdersByStatus.generated.ts +5 -0
  498. package/src/modules/manufacturing/query/listProductionOrdersByStatus.test.ts +121 -0
  499. package/src/modules/manufacturing/query/listProductionOrdersByStatus.ts +83 -0
  500. package/src/modules/manufacturing/query/listRoutingsByItem.generated.ts +5 -0
  501. package/src/modules/manufacturing/query/listRoutingsByItem.test.ts +110 -0
  502. package/src/modules/manufacturing/query/listRoutingsByItem.ts +54 -0
  503. package/src/modules/manufacturing/query/listWorkCentersBySite.generated.ts +5 -0
  504. package/src/modules/manufacturing/query/listWorkCentersBySite.test.ts +81 -0
  505. package/src/modules/manufacturing/query/listWorkCentersBySite.ts +70 -0
  506. package/src/modules/manufacturing/query/listWorkOrdersByProductionOrder.generated.ts +5 -0
  507. package/src/modules/manufacturing/query/listWorkOrdersByProductionOrder.test.ts +102 -0
  508. package/src/modules/manufacturing/query/listWorkOrdersByProductionOrder.ts +53 -0
  509. package/src/modules/manufacturing/query/listWorkOrdersByWorkCenter.generated.ts +5 -0
  510. package/src/modules/manufacturing/query/listWorkOrdersByWorkCenter.test.ts +143 -0
  511. package/src/modules/manufacturing/query/listWorkOrdersByWorkCenter.ts +56 -0
  512. package/src/modules/manufacturing/seed/index.ts +19 -0
  513. package/src/modules/manufacturing/tailor.config.ts +13 -0
  514. package/src/modules/manufacturing/tailor.d.ts +13 -0
  515. package/src/modules/manufacturing/testing/commandTestUtils.ts +29 -0
  516. package/src/modules/manufacturing/testing/fixtures.ts +402 -0
  517. package/src/progress/schema.test.ts +161 -0
  518. package/src/progress/schema.ts +316 -0
  519. package/templates/scaffold/app/backend/package.json +7 -2
  520. package/templates/scaffold/app/backend/src/tests/utils/graphql-client.ts +66 -0
  521. package/templates/scaffold/app/backend/src/tests/utils/setup.ts +21 -0
  522. package/templates/scaffold/app/backend/tsconfig.json +9 -2
  523. package/templates/scaffold/app/backend/vitest.config.ts +18 -0
  524. package/templates/scaffold/app/frontend/package.json +2 -2
  525. package/src/generator/generate-stubs.ts +0 -31
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailor-platform/erp-kit",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "description": "Opinionated ERP toolkit for building business applications on Tailor Platform",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -7,6 +7,18 @@ description: Create Tier 1-2 documentation (requirements, actors, business-flow)
7
7
 
8
8
  Create Tier 1-2 documentation: Requirements, Actors, and Business Flows.
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## Workflow Phases
11
23
 
12
24
  ```
@@ -28,12 +40,12 @@ Focus on "what" the application should do, not "how" it will be implemented.
28
40
 
29
41
  Use AskUserQuestion to clarify undefined requirements. Focus on business-level scope and workflows — not platform capabilities like authentication.
30
42
 
31
- | Category | Example Questions |
32
- | ---------------- | ---------------------------------------------------------------------------- |
33
- | Scope | Which steps are MVP-essential? Any steps that can be deferred? |
34
- | Edge Cases | How far to handle cancellation, rejection, or mid-flow abandonment? |
35
- | Actor Boundaries | Are approver and executor separate? What is each actor's operational scope? |
36
- | Business Rules | Which steps are automated vs manual? What conditional branches exist? |
43
+ | Category | Example Questions |
44
+ | ---------------- | --------------------------------------------------------------------------- |
45
+ | Scope | Which steps are MVP-essential? Any steps that can be deferred? |
46
+ | Edge Cases | How far to handle cancellation, rejection, or mid-flow abandonment? |
47
+ | Actor Boundaries | Are approver and executor separate? What is each actor's operational scope? |
48
+ | Business Rules | Which steps are automated vs manual? What conditional branches exist? |
37
49
 
38
50
  Ask 3-4 questions at a time using multiSelect where appropriate.
39
51
 
@@ -44,13 +56,13 @@ Generate documentation using `erp-kit` CLI. `{APP_ROOT}` is the parent directory
44
56
  ```bash
45
57
  # Tier 1: Requirements + project structure
46
58
  # Creates {APP_ROOT}/{APP_NAME}/README.md
47
- erp-kit app init {APP_NAME} {APP_ROOT}
59
+ npx erp-kit app init {APP_NAME} {APP_ROOT}
48
60
 
49
61
  # Tier 2: Actors
50
- erp-kit app generate doc actors {ACTOR_NAME} -p {APP_ROOT}/{APP_NAME}
62
+ npx erp-kit app generate doc actors {ACTOR_NAME} -p {APP_ROOT}/{APP_NAME}
51
63
 
52
64
  # Tier 2: Business Flows
53
- erp-kit app generate doc business-flow {FLOW_NAME} -p {APP_ROOT}/{APP_NAME}
65
+ npx erp-kit app generate doc business-flow {FLOW_NAME} -p {APP_ROOT}/{APP_NAME}
54
66
  ```
55
67
 
56
68
  **Directory structure after init + generate:**
@@ -80,6 +92,7 @@ After creating business flows, extract and create story documentation.
80
92
 
81
93
  1. **Collect** all business flow docs: glob `<APP_ROOT>/docs/business-flow/*/README.md`
82
94
  2. **Dispatch story extraction agents** — one Agent per business flow (parallelize if possible). Each agent:
95
+
83
96
  - Reads the prompt template from [references/story-extraction.md](references/story-extraction.md)
84
97
  - Replace `{{APP_NAME}}` with the resolved app name
85
98
  - Replace `{{ACTOR_DOCS}}` with the actor doc file paths
@@ -90,7 +103,7 @@ After creating business flows, extract and create story documentation.
90
103
 
91
104
  ```bash
92
105
  # For each story identified
93
- erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
106
+ npx erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
94
107
  ```
95
108
 
96
109
  4. **Link stories** in business flow READMEs: replace `- TBD` placeholders in each flow's `## Stories` section with actual links:
@@ -102,18 +115,21 @@ erp-kit app generate doc story <flow>/<actor>--<story> -p {APP_ROOT}/{APP_NAME}
102
115
  ### Phase 4: Validate
103
116
 
104
117
  ```bash
105
- erp-kit app check -p {APP_ROOT}
118
+ # NOTE: -p takes {APP_ROOT} (parent directory), NOT {APP_ROOT}/{APP_NAME}.
119
+ # generate doc uses -p {APP_ROOT}/{APP_NAME}, but check uses -p {APP_ROOT}.
120
+ # Example: if app is at apps/user-management, use -p apps
121
+ npx erp-kit app check -p {APP_ROOT}
106
122
  ```
107
123
 
108
- See [schema-constraints.md](../erp-kit-app-shared/references/schema-constraints.md) for notes on expected "No matching files found" output.
124
+ **Expected passing output:** `✓ No violations found` for each doc type that has files. "No matching files found" appears for doc types not yet created (e.g., screens and resolvers at Tier 1-2) — this is normal and not an error.
109
125
 
110
126
  ## Schema Reference
111
127
 
112
- | Schema | Tier | Output Path |
113
- | ------------------- | ---- | ------------------------------------- |
114
- | `requirements.yml` | 1 | `README.md` |
115
- | `actors.yml` | 2 | `docs/actors/<name>.md` |
116
- | `business-flow.yml` | 2 | `docs/business-flow/<flow>/README.md` |
128
+ | Schema | Tier | Output Path |
129
+ | ------------------- | ---- | ---------------------------------------------------- |
130
+ | `requirements.yml` | 1 | `README.md` |
131
+ | `actors.yml` | 2 | `docs/actors/<name>.md` |
132
+ | `business-flow.yml` | 2 | `docs/business-flow/<flow>/README.md` |
117
133
  | `story.yml` | 2 | `docs/business-flow/<flow>/story/<actor>--<name>.md` |
118
134
 
119
135
  ## Next Step
@@ -7,6 +7,18 @@ description: Review requirements quality and documentation consistency for appli
7
7
 
8
8
  Review **requirements quality** and **documentation consistency** for an application's Tier 1-2 documentation.
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## When to Use
11
23
 
12
24
  - After writing application requirements and business flows (step 1)
@@ -7,6 +7,18 @@ description: Create Tier 3-4 documentation (screens, resolvers) by breaking down
7
7
 
8
8
  Convert Tier 2 business flows and stories into Tier 3 (screens) and Tier 4 (resolvers) documentation using parallel extraction agents.
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## When to Use
11
23
 
12
24
  - User has Tier 1-2 documentation and wants to plan Tier 3-4
@@ -40,7 +52,7 @@ Verify at least `STORY_DOCS` is non-empty. If no story docs exist, stop with: "N
40
52
  Collect module overview:
41
53
 
42
54
  ```bash
43
- erp-kit doc modules
55
+ npx erp-kit doc modules
44
56
  ```
45
57
 
46
58
  This returns each module's name, overview, command/query/model counts, and dependencies. Save the full output as `MODULE_OVERVIEW` — both agents receive it.
@@ -100,10 +112,10 @@ Scaffold using `erp-kit` CLI:
100
112
 
101
113
  ```bash
102
114
  # Tier 3: Screens
103
- erp-kit app generate doc screen <screen-name> -p {APP_ROOT}/{APP_NAME}
115
+ npx erp-kit app generate doc screen <screen-name> -p {APP_ROOT}/{APP_NAME}
104
116
 
105
117
  # Tier 4: Resolvers
106
- erp-kit app generate doc resolver <resolver-name> -p {APP_ROOT}/{APP_NAME}
118
+ npx erp-kit app generate doc resolver <resolver-name> -p {APP_ROOT}/{APP_NAME}
107
119
  ```
108
120
 
109
121
  Fill scaffolded docs with details from agent extraction results.
@@ -119,7 +131,9 @@ Read-only stories should have `None` under `## Resolvers`.
119
131
  ## Step 6: Validate
120
132
 
121
133
  ```bash
122
- erp-kit app check -p {APP_ROOT}
134
+ # NOTE: -p takes {APP_ROOT} (parent directory), NOT {APP_ROOT}/{APP_NAME}.
135
+ # generate doc uses -p {APP_ROOT}/{APP_NAME}, but check uses -p {APP_ROOT}.
136
+ npx erp-kit app check -p {APP_ROOT}
123
137
  ```
124
138
 
125
139
  ## Naming Conventions
@@ -16,7 +16,7 @@ The following modules are available in erp-kit. Use this to map resolvers to rea
16
16
  To inspect a specific module's commands in detail, run:
17
17
 
18
18
  ```bash
19
- erp-kit doc module <module-name> command <command-name>
19
+ npx erp-kit doc module <module-name> command <command-name>
20
20
  ```
21
21
 
22
22
  ## Instructions
@@ -16,7 +16,7 @@ The following modules are available in erp-kit. Use this to understand which ent
16
16
  To inspect a specific module's model (domain description, state transitions, invariants, commands), run:
17
17
 
18
18
  ```bash
19
- erp-kit doc module <module-name> model <model-name>
19
+ npx erp-kit doc module <module-name> model <model-name>
20
20
  ```
21
21
 
22
22
  ## Instructions
@@ -7,6 +7,18 @@ description: Review parity between Tier 2 (business flows, actors, stories) and
7
7
 
8
8
  Review **documentation consistency** across Tier 2 (business flows, actors, stories), Tier 3 (screens), and Tier 4 (resolvers) documentation.
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## When to Use
11
23
 
12
24
  - After writing Tier 3-4 documentation, check for gaps
@@ -7,6 +7,18 @@ description: Implement backend code for applications using erp-kit modules. Use
7
7
 
8
8
  Implement backend resolvers and application configuration for an application, driven by Tier 1-4 documentation (actors, business flows, stories, screens, resolvers).
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## When to Use
11
23
 
12
24
  - Implementing backend resolvers from resolver spec docs
@@ -90,7 +102,10 @@ For each resolver, check whether its spec (`docs/resolver/*.md`) documents error
90
102
 
91
103
  Do not directly mutate module-owned tables via Kysely — always use module commands.
92
104
 
105
+ After resolvers are done, implement the story integration test stubs generated in Phase 1b (`backend/src/tests/stories/`). Each stub has `it()` descriptions from the story doc's `## Test Cases`. Use the scaffolded GraphQL client and `inject("url")` / `inject("token")` to call resolvers. Run `pnpm test:integration` and `pnpm erp-kit app sync-check` to verify.
106
+
93
107
  > **Parallelize if possible:** Dispatch one agent per resolver. Each agent writes only to its own files:
108
+ >
94
109
  > - `src/resolvers/<resolverName>.ts`
95
110
  > - `src/executors/<resolverName>.ts`
96
111
  >
@@ -107,10 +122,10 @@ Do not directly mutate module-owned tables via Kysely — always use module comm
107
122
 
108
123
  Frontend implementation requires a deployed backend (for GraphQL schema generation). Prompt the user to:
109
124
 
110
- 1. Create a workspace and configure `.env` (including `TAILOR_PLATFORM_WORKSPACE_ID`)
111
- 2. Run `pnpm deploy` and `pnpm generate`
112
- 3. Run `pnpm seed` if seed data was created
113
- 4. Retrieve OAuth2 client ID via `tailor-sdk oauth2client get default --json` for frontend `.env`
125
+ 1. Create a workspace via `tailor-sdk workspace create --name <NAME> --region <us-west|asia-northeast>` and configure `.env` (including `TAILOR_PLATFORM_WORKSPACE_ID`)
126
+ 2. Run `pnpm run deploy` and `pnpm run generate`
127
+ 3. Run `pnpm run seed` if seed data was created
128
+ 4. Retrieve OAuth2 client ID via `tailor-sdk oauth2client get default --json --env-file-if-exists .env` for frontend `.env`
114
129
 
115
130
  Wait for the user to confirm deployment is complete before proceeding.
116
131
 
@@ -7,6 +7,18 @@ description: Implement frontend code for applications. Use after deploying the b
7
7
 
8
8
  Implement frontend pages for an application, driven by screen spec documentation and a deployed backend.
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## When to Use
11
23
 
12
24
  - Implementing frontend pages from screen spec docs
@@ -7,6 +7,18 @@ description: Review implementation parity between documentation and code for app
7
7
 
8
8
  Review **implementation consistency** between Tier 3-4 documentation and actual backend/frontend code.
9
9
 
10
+ ## Progress Logging
11
+
12
+ Log to the audit trail at every checkpoint. See [erp-kit-app-shared/references/progress-protocol.md](../erp-kit-app-shared/references/progress-protocol.md) for the full protocol.
13
+
14
+ ```bash
15
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
16
+ ```
17
+
18
+ Required checkpoints: `step.start` (on invocation), `decision` (on user choices), `agent.dispatch`/`agent.result` (on subagent lifecycle), `artifact.create` (on file writes), `validation` (on `erp-kit app check` or build commands), `step.complete` (on finish), `error` (on failures).
19
+
20
+ Bundle all conversation since the last checkpoint into the `conversation` array. Use your session ID as `sessionId`. Use the user's original prompt as `prompt`.
21
+
10
22
  ## When to Use
11
23
 
12
24
  - After backend and frontend implementation, verify code matches documentation
@@ -60,10 +72,10 @@ Run build checks and source-doc sync check inline:
60
72
  ```bash
61
73
  cd <APP_ROOT>/backend && pnpm lint && pnpm typecheck
62
74
  cd <APP_ROOT>/frontend && pnpm lint && pnpm typecheck && pnpm build
63
- erp-kit app sync-check -p <APP_ROOT>/..
75
+ npx erp-kit app sync-check -p <APP_ROOT>
64
76
  ```
65
77
 
66
- Report pass/fail for each check. `sync-check` detects missing resolver implementations and orphaned docs, so groups A-C agents can skip file-existence checks and focus on content parity.
78
+ Report pass/fail for each check. `sync-check` detects missing resolver implementations, orphaned docs, and story doc ↔ integration test case mismatches, so groups A-C agents can skip file-existence checks and focus on content parity.
67
79
 
68
80
  ## Step 3: Aggregate Results
69
81
 
@@ -0,0 +1,77 @@
1
+ # Progress Logging Protocol
2
+
3
+ ## Overview
4
+
5
+ All `erp-kit-app-*` skills log to an append-only audit trail at `.erp-kit/progress.jsonl`. This records conversations, decisions, and agent activity across sessions.
6
+
7
+ The log is NOT the source of truth for progress — the produced docs and code are. The log answers "what happened and why."
8
+
9
+ ## CLI Commands
10
+
11
+ ### Log an event
12
+
13
+ ```bash
14
+ npx erp-kit app progress log --json '<ProgressInput JSON>'
15
+ ```
16
+
17
+ ### Validate without writing
18
+
19
+ ```bash
20
+ npx erp-kit app progress log --dry-run --json '<ProgressInput JSON>'
21
+ ```
22
+
23
+ ### Get the JSON Schema
24
+
25
+ ```bash
26
+ npx erp-kit app progress schema
27
+ ```
28
+
29
+ ## When to Log
30
+
31
+ Log at natural checkpoints — moments where the skill is already pausing to take action. Bundle all conversation since the last checkpoint into the `conversation` array.
32
+
33
+ | Checkpoint | Event type | When |
34
+ |---|---|---|
35
+ | Skill invocation | `step.start` | First thing after skill is invoked |
36
+ | User decision | `decision` | User approves, corrects, or chooses |
37
+ | Subagent launch | `agent.dispatch` | Before dispatching a subagent |
38
+ | Subagent return | `agent.result` | After subagent completes |
39
+ | File write | `artifact.create` | After creating/modifying/deleting a file |
40
+ | Validation | `validation` | After running `erp-kit app check`, build, lint, etc. |
41
+ | Skill completion | `step.complete` | Last thing before skill finishes |
42
+ | Failure | `error` | When something fails |
43
+ | Free-form | `note` | Anything else (e.g., session pause) |
44
+
45
+ ## Entry Format
46
+
47
+ Every entry requires:
48
+
49
+ - `v` — Schema version, always `1`
50
+ - `sessionId` — Your AI session ID
51
+ - `prompt` — The user's original prompt (the request that triggered this skill)
52
+ - `event` — Event type from the table above
53
+ - `data` — Event-specific payload (see schema)
54
+ - `conversation` — Array of `{role, message}` since last checkpoint (optional, defaults to `[]`)
55
+
56
+ The CLI auto-adds `timestamp` and `git` context.
57
+
58
+ ## Example
59
+
60
+ ```bash
61
+ npx erp-kit app progress log --json '{
62
+ "v": 1,
63
+ "sessionId": "claude-abc123",
64
+ "prompt": "Create screens for manufacturing flows",
65
+ "event": "decision",
66
+ "conversation": [
67
+ {"role": "agent", "message": "Flat list or collapsible tree for BOM?"},
68
+ {"role": "user", "message": "Collapsible tree"}
69
+ ],
70
+ "data": {
71
+ "question": "BOM list view style",
72
+ "choice": "Collapsible tree",
73
+ "alternatives": ["Flat list with indent"],
74
+ "rationale": "Better UX for multi-level BOMs"
75
+ }
76
+ }'
77
+ ```
@@ -112,7 +112,7 @@ Create `mocks/{provider}/{scenario}/README.md` with:
112
112
  ### Step 5: Validate
113
113
 
114
114
  ```bash
115
- erp-kit mock validate
115
+ npx erp-kit mock validate
116
116
  ```
117
117
 
118
118
  Fix any failures before finishing.
@@ -70,7 +70,7 @@ The final feature set becomes the union of all `Include` features. Proceed with
70
70
  First, scaffold the module if it doesn't exist:
71
71
 
72
72
  ```bash
73
- erp-kit module init <module-name> <MODULES_ROOT>/<module-name>
73
+ npx erp-kit module init <module-name> <MODULES_ROOT>/<module-name>
74
74
  ```
75
75
 
76
76
  Then, for each `Include` feature, launch an Agent:
@@ -44,9 +44,9 @@ Produce consolidated plan:
44
44
  Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
45
45
 
46
46
  ```bash
47
- erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
48
- erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
49
- erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
47
+ npx erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
48
+ npx erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
49
+ npx erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
50
50
  ```
51
51
 
52
52
  Fill in the scaffolded docs with details from the extraction in Step 2.
@@ -78,9 +78,9 @@ For each item in the fix plan:
78
78
  Scaffold using `erp-kit` CLI. **Names must be PascalCase** (see [naming convention](references/naming.md)):
79
79
 
80
80
  ```bash
81
- erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
82
- erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
83
- erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
81
+ npx erp-kit module generate doc model ModelName -p <MODULES_ROOT>/<module-name>
82
+ npx erp-kit module generate doc command CommandName -p <MODULES_ROOT>/<module-name>
83
+ npx erp-kit module generate doc query QueryName -p <MODULES_ROOT>/<module-name>
84
84
  ```
85
85
 
86
86
  Populate the new docs using the extraction rules from:
@@ -37,7 +37,7 @@ Verify at least one doc type exists. If none, stop with: "No docs found for modu
37
37
  Run generation first to create `.generated.ts` files (error classes, permission definitions, command/query shells) before implementing any code:
38
38
 
39
39
  ```bash
40
- erp-kit module generate code -p <MODULES_ROOT>/<module>
40
+ npx erp-kit module generate code -p <MODULES_ROOT>/<module>
41
41
  ```
42
42
 
43
43
  Never edit these generated files.
@@ -31,35 +31,57 @@ Define shared context for all agents:
31
31
 
32
32
  Verify at least `MODEL_DOCS`, `COMMAND_DOCS`, or `QUERY_DOCS` is non-empty. If no docs exist, stop with: "No docs found for module <MODULE_NAME>."
33
33
 
34
- ## Step 2: Dispatch Agents (parallelize if possible)
34
+ ## Step 2: Dispatch Agents (parallelize ALL agents in a single message)
35
35
 
36
- Launch 3 Agent tool calls in parallel one per domain (model, command, query).
37
- Each agent receives: MODULE_NAME, all relevant doc/code/test file paths for its domain.
38
- Each agent runs all parity perspectives (doc→code, error, doc→test) internally and returns: structured JSON per [references/impl-parity-report-format.md](references/impl-parity-report-format.md).
39
- If a doc or code directory is empty, the agent reports "no files found" and skips.
36
+ Split each parity check into its own agent, then further split by file batches when there are many files. Target **~5 agents per domain** (model, command, query) for maximum parallelism. Launch **ALL agents in a single message** — do NOT wait for one domain to finish before starting another.
40
37
 
41
- | Agent | Domain | Prompt Templates | Inputs |
42
- | ----- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
43
- | 1 | Model | [references/model-doc-code-parity.md](references/model-doc-code-parity.md) | MODEL_DOCS, MODEL_CODE |
44
- | 2 | Command | [references/command-doc-code-parity.md](references/command-doc-code-parity.md), [references/command-error-implementation-parity.md](references/command-error-implementation-parity.md), [references/command-doc-test-parity.md](references/command-doc-test-parity.md) | COMMAND_DOCS, COMMAND_CODE, COMMAND_TEST_CODE, ERROR_DEFS |
45
- | 3 | Query | [references/query-doc-code-parity.md](references/query-doc-code-parity.md), [references/query-error-implementation-parity.md](references/query-error-implementation-parity.md), [references/query-doc-test-parity.md](references/query-doc-test-parity.md) | QUERY_DOCS, QUERY_CODE, QUERY_TEST_CODE, ERROR_DEFS |
38
+ If a doc or code directory is empty, skip that agent entirely.
39
+
40
+ ### Splitting Strategy
41
+
42
+ 1. **Each parity check type = separate agent** (never combine different check types in one agent)
43
+ 2. **File batching**: If a check has more than 5 doc files, split docs into batches of 3-5 files each. Each batch becomes its own agent running the same check type on a subset of files.
44
+ 3. **Corresponding code/test files**: When batching by doc files, include only the matching code and test files for those specific docs (match by filename stem, e.g., `docs/commands/createFoo.md` → `command/createFoo.ts` + `command/createFoo.test.ts`).
45
+
46
+ ### Agent Table
47
+
48
+ | Check Type | Domain | Prompt Template | Inputs per agent |
49
+ | ---------- | ------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
50
+ | M-1 | Model | [references/model-doc-code-parity.md](references/model-doc-code-parity.md) | MODEL_DOCS (batch), MODEL_CODE (matching) |
51
+ | C-1 | Command | [references/command-doc-code-parity.md](references/command-doc-code-parity.md) | COMMAND_DOCS (batch), COMMAND_CODE (matching) |
52
+ | C-2 | Command | [references/command-error-implementation-parity.md](references/command-error-implementation-parity.md) | COMMAND_DOCS (batch), COMMAND_CODE (matching), ERROR_DEFS |
53
+ | C-3 | Command | [references/command-doc-test-parity.md](references/command-doc-test-parity.md) | COMMAND_DOCS (batch), COMMAND_TEST_CODE (matching) |
54
+ | Q-1 | Query | [references/query-doc-code-parity.md](references/query-doc-code-parity.md) | QUERY_DOCS (batch), QUERY_CODE (matching) |
55
+ | Q-2 | Query | [references/query-error-implementation-parity.md](references/query-error-implementation-parity.md) | QUERY_DOCS (batch), QUERY_CODE (matching), ERROR_DEFS |
56
+ | Q-3 | Query | [references/query-doc-test-parity.md](references/query-doc-test-parity.md) | QUERY_DOCS (batch), QUERY_TEST_CODE (matching) |
57
+
58
+ ### Batching Example
59
+
60
+ If a module has 8 command docs: split into 3 batches (3+3+2). Each batch spawns 3 agents (C-1, C-2, C-3) → 9 command agents total. If it has 4 command docs: no batching needed, 3 agents (C-1, C-2, C-3).
61
+
62
+ For model docs: if 6 models → 2 batches (3+3) → 2 agents (M-1 × 2). If 3 models → 1 agent.
63
+
64
+ ### Agent Dispatch
46
65
 
47
66
  For each agent:
48
67
 
49
- 1. Read ALL prompt template files listed for that agent
68
+ 1. Read the prompt template file for that check type
50
69
  2. Replace `{{MODULE_NAME}}` with the resolved module name
51
- 3. Replace `{{MODEL_DOCS}}`, `{{COMMAND_DOCS}}`, `{{QUERY_DOCS}}`, `{{MODEL_CODE}}`, `{{COMMAND_CODE}}`, `{{QUERY_CODE}}`, `{{COMMAND_TEST_CODE}}`, `{{QUERY_TEST_CODE}}`, `{{ERROR_DEFS}}` with the actual file paths
52
- 4. Combine the templates into a single prompt and dispatch the agent
70
+ 3. Replace template placeholders (`{{MODEL_DOCS}}`, `{{COMMAND_DOCS}}`, `{{QUERY_DOCS}}`, `{{MODEL_CODE}}`, `{{COMMAND_CODE}}`, `{{QUERY_CODE}}`, `{{COMMAND_TEST_CODE}}`, `{{QUERY_TEST_CODE}}`, `{{ERROR_DEFS}}`) with the actual file paths **for this batch only**
71
+ 4. Dispatch the agent with the filled prompt
72
+
73
+ **IMPORTANT**: Launch ALL agents across ALL domains in a single parallel message. Do not serialize by domain.
53
74
 
54
75
  ## Step 3: Aggregate Results
55
76
 
56
77
  After ALL agents return:
57
78
 
58
79
  1. Collect the JSON results from each agent
59
- 2. Merge all `gaps[]` arrays into a single list
60
- 3. Merge all `inconsistencies[]` arrays into a single list
61
- 4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
62
- 5. Calculate totals across all summaries
80
+ 2. **Merge batches**: If a check type was split across multiple batches (e.g., C-1 batch 1 + C-1 batch 2), merge their `gaps[]` and `inconsistencies[]` into a single result per check type
81
+ 3. Merge all `gaps[]` arrays across all check types into a single list
82
+ 4. Merge all `inconsistencies[]` arrays into a single list
83
+ 5. Deduplicate: if two gaps share the same `source + target + check`, keep only one
84
+ 6. Calculate totals across all summaries
63
85
 
64
86
  ## Step 4: Severity Validation
65
87
 
@@ -8,6 +8,7 @@ import { runGenerateAppCode } from "../../generator/generate-app-code";
8
8
  import { runGenerateSeed } from "../../generator/generate-seed";
9
9
  import { runInitAppWithReadme } from "../init-module";
10
10
  import { executeCommand, success, silentFailure } from "../lib/command-result";
11
+ import { progressCommand } from "./progress/index";
11
12
 
12
13
  const cwd = process.cwd();
13
14
 
@@ -129,5 +130,6 @@ export const appCommand = defineCommand({
129
130
  "sync-check": syncCheckCommand,
130
131
  init: initCommand,
131
132
  generate: generateCommand,
133
+ progress: progressCommand,
132
134
  },
133
135
  });
@@ -0,0 +1,16 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import type { GitContext } from "../../../progress/schema";
3
+
4
+ export function getGitContext(cwd: string): GitContext {
5
+ const branch = execFileSync("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
6
+ cwd,
7
+ encoding: "utf-8",
8
+ }).trim();
9
+
10
+ const commit = execFileSync("git", ["rev-parse", "--short", "HEAD"], {
11
+ cwd,
12
+ encoding: "utf-8",
13
+ }).trim();
14
+
15
+ return { branch, commit };
16
+ }
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ import { defineCommand, arg } from "politty";
3
+ import { executeCommand } from "../../lib/command-result";
4
+ import { runProgressLog } from "./log";
5
+ import { runProgressSchema } from "./schema-cmd";
6
+
7
+ const cwd = process.cwd();
8
+
9
+ const logCommand = defineCommand({
10
+ name: "log",
11
+ description: "Append a validated entry to the progress log",
12
+ args: z.object({
13
+ json: arg(z.string(), {
14
+ description: "JSON payload (ProgressInput schema)",
15
+ }),
16
+ "dry-run": arg(z.boolean().default(false), {
17
+ description: "Validate without writing",
18
+ }),
19
+ }),
20
+ run: (args) => {
21
+ return executeCommand(() => {
22
+ return runProgressLog(args.json, args["dry-run"], cwd);
23
+ });
24
+ },
25
+ });
26
+
27
+ const schemaCommand = defineCommand({
28
+ name: "schema",
29
+ description: "Output JSON Schema for progress log input",
30
+ args: z.object({}),
31
+ run: () => {
32
+ return executeCommand(() => {
33
+ return runProgressSchema();
34
+ });
35
+ },
36
+ });
37
+
38
+ export const progressCommand = defineCommand({
39
+ name: "progress",
40
+ description: "Audit log for app skill sessions",
41
+ subCommands: {
42
+ log: logCommand,
43
+ schema: schemaCommand,
44
+ },
45
+ });