aiwf 0.3.22 → 0.4.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 (456) hide show
  1. package/.claude-plugin/marketplace.json +146 -0
  2. package/CHANGELOG.md +49 -1
  3. package/README.ko.md +118 -309
  4. package/README.md +68 -254
  5. package/docs/modernization/BROWNFIELD-GREENFIELD.ko.md +105 -0
  6. package/docs/modernization/CLAUDE-PLAN-REVIEW-2026-10-03.ko.md +77 -0
  7. package/docs/modernization/CLI-PRODUCTIVITY-REVIEWED-2026-10-03.ko.md +177 -0
  8. package/docs/modernization/CLI-PRODUCTIVITY.ko.md +193 -0
  9. package/docs/modernization/CORE-PACKAGE-PLAN.md +7 -0
  10. package/docs/modernization/DEEP-REVERSE-ENGINEERING.ko.md +88 -0
  11. package/docs/modernization/DELEGATION-OPTIONAL.ko.md +57 -0
  12. package/docs/modernization/DIRECTION.ko.md +56 -0
  13. package/docs/modernization/FULL-TEST-2026-10-03.md +49 -0
  14. package/docs/modernization/LEGACY-REMOVAL-PLAN.md +9 -0
  15. package/docs/modernization/PILOT-RESULT-2026-10-03.ko.md +85 -0
  16. package/docs/modernization/PILOT-UC-001.ko.md +79 -0
  17. package/docs/modernization/PLAN.md +28 -0
  18. package/docs/modernization/SKILLS.ko.md +105 -0
  19. package/docs/modernization/SPRINTABLE.ko.md +47 -0
  20. package/docs/modernization/SYNC-DOCS-VALIDATION-2026-10-04.ko.md +38 -0
  21. package/docs/modernization/VALIDATION.md +79 -0
  22. package/docs/modernization/evidence/example-review-packet.json +115 -0
  23. package/docs/modernization/evidence/example-spec-pin.json +48 -0
  24. package/docs/modernization/evidence/full-test-20261003/claude-lint.md +22 -0
  25. package/docs/modernization/evidence/full-test-20261003/claude-review-retry.md +56 -0
  26. package/docs/modernization/evidence/full-test-20261003/codex-review-packet.json +159 -0
  27. package/docs/modernization/evidence/full-test-20261003/src/expense.mjs +40 -0
  28. package/docs/modernization/evidence/full-test-20261003/summary.json +106 -0
  29. package/docs/modernization/evidence/full-test-20261003/tests/expense.test.mjs +61 -0
  30. package/docs/modernization/evidence/local-pilot-20261003/README.ko.md +40 -0
  31. package/docs/modernization/evidence/local-pilot-20261003/execution.json +1055 -0
  32. package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.json +24 -0
  33. package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stderr.txt +0 -0
  34. package/docs/modernization/evidence/local-pilot-20261003/maintenance/dependencies.stdout.txt +5 -0
  35. package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.json +24 -0
  36. package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stderr.txt +0 -0
  37. package/docs/modernization/evidence/local-pilot-20261003/maintenance/docs.stdout.txt +6 -0
  38. package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.json +24 -0
  39. package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stderr.txt +0 -0
  40. package/docs/modernization/evidence/local-pilot-20261003/maintenance/example.stdout.txt +5 -0
  41. package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.json +24 -0
  42. package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stderr.txt +0 -0
  43. package/docs/modernization/evidence/local-pilot-20261003/maintenance/local-docs.stdout.txt +6 -0
  44. package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.json +23 -0
  45. package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stderr.txt +0 -0
  46. package/docs/modernization/evidence/local-pilot-20261003/maintenance/node.stdout.txt +535 -0
  47. package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.json +24 -0
  48. package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stderr.txt +0 -0
  49. package/docs/modernization/evidence/local-pilot-20261003/maintenance/provenance.stdout.txt +5 -0
  50. package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.json +24 -0
  51. package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stderr.txt +0 -0
  52. package/docs/modernization/evidence/local-pilot-20261003/maintenance/readme-replay.stdout.txt +273 -0
  53. package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.json +24 -0
  54. package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stderr.txt +0 -0
  55. package/docs/modernization/evidence/local-pilot-20261003/maintenance/upstream.stdout.txt +7 -0
  56. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stderr.txt +0 -0
  57. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-service.stdout.txt +148 -0
  58. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stderr.txt +0 -0
  59. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/archive-structure.stdout.txt +9 -0
  60. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stderr.txt +0 -0
  61. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-check.stdout.txt +67 -0
  62. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-evidence.json +34 -0
  63. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.json +128 -0
  64. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stderr.txt +0 -0
  65. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-packet.stdout.txt +128 -0
  66. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.json +54 -0
  67. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stderr.txt +0 -0
  68. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-pin.stdout.txt +60 -0
  69. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-readback.json +15 -0
  70. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stderr.txt +0 -0
  71. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-service.stdout.txt +82 -0
  72. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stderr.txt +0 -0
  73. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/baseline-structure.stdout.txt +9 -0
  74. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stderr.txt +0 -0
  75. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-check.stdout.txt +79 -0
  76. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stderr.txt +0 -0
  77. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-packet-refused.stdout.txt +7 -0
  78. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stderr.txt +0 -0
  79. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin-refresh.stdout.txt +66 -0
  80. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-pin.json +60 -0
  81. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stderr.txt +0 -0
  82. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/changed-structure.stdout.txt +9 -0
  83. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stderr.txt +0 -0
  84. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-check.stdout.txt +73 -0
  85. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-evidence.json +34 -0
  86. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.json +134 -0
  87. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stderr.txt +0 -0
  88. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-packet.stdout.txt +134 -0
  89. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-readback.json +15 -0
  90. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stderr.txt +0 -0
  91. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-service.stdout.txt +148 -0
  92. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stderr.txt +0 -0
  93. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/final-structure.stdout.txt +9 -0
  94. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stderr.txt +0 -0
  95. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/node-version.stdout.txt +1 -0
  96. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stderr.txt +0 -0
  97. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/python-version.stdout.txt +1 -0
  98. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-evidence.json +34 -0
  99. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.json +134 -0
  100. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stderr.txt +0 -0
  101. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-packet.stdout.txt +134 -0
  102. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-readback.json +15 -0
  103. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stderr.txt +0 -0
  104. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-service.stdout.txt +266 -0
  105. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stderr.txt +0 -0
  106. package/docs/modernization/evidence/local-pilot-20261003/project/artifacts/red-structure.stdout.txt +9 -0
  107. package/docs/modernization/evidence/local-pilot-20261003/project/docs/entity_model.md +33 -0
  108. package/docs/modernization/evidence/local-pilot-20261003/project/docs/glossary.md +9 -0
  109. package/docs/modernization/evidence/local-pilot-20261003/project/docs/plans/UC-001.md +20 -0
  110. package/docs/modernization/evidence/local-pilot-20261003/project/docs/requirements.md +10 -0
  111. package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-001-submit-expense.md +37 -0
  112. package/docs/modernization/evidence/local-pilot-20261003/project/docs/test_cases/TC-002-description-limit.md +42 -0
  113. package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases/UC-001-submit-expense.md +76 -0
  114. package/docs/modernization/evidence/local-pilot-20261003/project/docs/use_cases.puml +12 -0
  115. package/docs/modernization/evidence/local-pilot-20261003/project/docs/vision.md +21 -0
  116. package/docs/modernization/evidence/local-pilot-20261003/project/src/expense.mjs +48 -0
  117. package/docs/modernization/evidence/local-pilot-20261003/project/tests/expense.test.mjs +116 -0
  118. package/docs/modernization/evidence/local-pilot-20261003/scope.json +31 -0
  119. package/docs/modernization/reviews/2026-10-03-claude-cli/CONTRACTS.ko.md +122 -0
  120. package/docs/modernization/reviews/2026-10-03-claude-cli/DIRECTION.ko.md +84 -0
  121. package/examples/spec-workflow/README.md +54 -0
  122. package/examples/spec-workflow/docs/entity_model.md +33 -0
  123. package/examples/spec-workflow/docs/glossary.md +9 -0
  124. package/examples/spec-workflow/docs/requirements.md +10 -0
  125. package/examples/spec-workflow/docs/test_cases/TC-001-submit-expense.md +37 -0
  126. package/examples/spec-workflow/docs/use_cases/UC-001-submit-expense.md +63 -0
  127. package/examples/spec-workflow/docs/use_cases.puml +12 -0
  128. package/examples/spec-workflow/docs/vision.md +21 -0
  129. package/package.json +37 -104
  130. package/plugins/aiwf-angular-jpa/.claude-plugin/plugin.json +11 -0
  131. package/plugins/aiwf-angular-jpa/LICENSE +201 -0
  132. package/plugins/aiwf-angular-jpa/NOTICE +16 -0
  133. package/plugins/aiwf-angular-jpa/README.md +54 -0
  134. package/plugins/aiwf-angular-jpa/UPSTREAM.json +35 -0
  135. package/plugins/aiwf-angular-jpa/agents/uc-coverage.md +263 -0
  136. package/plugins/aiwf-angular-jpa/rules/mcp-servers.md +64 -0
  137. package/plugins/aiwf-angular-jpa/skills/coverage-check/SKILL.md +190 -0
  138. package/plugins/aiwf-angular-jpa/skills/flyway-migration/SKILL.md +119 -0
  139. package/plugins/aiwf-angular-jpa/skills/implement/SKILL.md +528 -0
  140. package/plugins/aiwf-angular-jpa/skills/implement/references/module-layout.md +95 -0
  141. package/plugins/aiwf-angular-jpa/skills/playwright-test/SKILL.md +360 -0
  142. package/plugins/aiwf-angular-jpa/skills/spring-boot-test/SKILL.md +504 -0
  143. package/plugins/aiwf-angular-jpa/skills/vitest-test/SKILL.md +309 -0
  144. package/plugins/aiwf-blazor-dotnet/.claude-plugin/plugin.json +11 -0
  145. package/plugins/aiwf-blazor-dotnet/LICENSE +201 -0
  146. package/plugins/aiwf-blazor-dotnet/NOTICE +16 -0
  147. package/plugins/aiwf-blazor-dotnet/README.md +53 -0
  148. package/plugins/aiwf-blazor-dotnet/UPSTREAM.json +31 -0
  149. package/plugins/aiwf-blazor-dotnet/rules/mcp-servers.md +25 -0
  150. package/plugins/aiwf-blazor-dotnet/skills/bunit-test/SKILL.md +110 -0
  151. package/plugins/aiwf-blazor-dotnet/skills/dotnet-test/SKILL.md +108 -0
  152. package/plugins/aiwf-blazor-dotnet/skills/ef-migration/SKILL.md +43 -0
  153. package/plugins/aiwf-blazor-dotnet/skills/implement/SKILL.md +149 -0
  154. package/plugins/aiwf-blazor-dotnet/skills/playwright-test/SKILL.md +130 -0
  155. package/plugins/aiwf-core/.claude-plugin/plugin.json +11 -0
  156. package/plugins/aiwf-core/LICENSE +201 -0
  157. package/plugins/aiwf-core/NOTICE +20 -0
  158. package/plugins/aiwf-core/README.md +38 -0
  159. package/plugins/aiwf-core/UPSTREAM.json +50 -0
  160. package/plugins/aiwf-core/skills/entity-model/SKILL.md +160 -0
  161. package/plugins/aiwf-core/skills/entity-model/references/REFERENCE.md +36 -0
  162. package/plugins/aiwf-core/skills/requirements/SKILL.md +157 -0
  163. package/plugins/aiwf-core/skills/requirements/references/REFERENCE.md +70 -0
  164. package/plugins/aiwf-core/skills/requirements/references/glossary.md +7 -0
  165. package/plugins/aiwf-core/skills/reverse-engineer/SKILL.md +509 -0
  166. package/plugins/aiwf-core/skills/reverse-engineer/references/stack-signals.md +210 -0
  167. package/plugins/aiwf-core/skills/spec-review/SKILL.md +197 -0
  168. package/plugins/aiwf-core/skills/spec-review/references/lint-codes.md +63 -0
  169. package/plugins/aiwf-core/skills/spec-review/references/review-checklist.md +189 -0
  170. package/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py +1216 -0
  171. package/plugins/aiwf-core/skills/test-case/SKILL.md +138 -0
  172. package/plugins/aiwf-core/skills/test-case/references/example-process.bpmn +118 -0
  173. package/plugins/aiwf-core/skills/test-case/references/example.md +38 -0
  174. package/plugins/aiwf-core/skills/test-case/references/test-case.md +35 -0
  175. package/plugins/aiwf-core/skills/test-case/scripts/bpmn_paths.py +542 -0
  176. package/plugins/aiwf-core/skills/use-case-diagram/SKILL.md +99 -0
  177. package/plugins/aiwf-core/skills/use-case-spec/SKILL.md +257 -0
  178. package/plugins/aiwf-core/skills/use-case-spec/references/clarify-checklist.md +70 -0
  179. package/plugins/aiwf-core/skills/use-case-spec/references/example.md +88 -0
  180. package/plugins/aiwf-core/skills/use-case-spec/references/format-spec.md +246 -0
  181. package/plugins/aiwf-core/skills/use-case-spec/references/use-case.md +50 -0
  182. package/plugins/aiwf-core/skills/use-case-spec/scripts/validate_use_case.py +941 -0
  183. package/plugins/aiwf-delegate-claude/.claude-plugin/plugin.json +9 -0
  184. package/{src/lib/resources/templates/npm-library/template → plugins/aiwf-delegate-claude}/LICENSE +2 -2
  185. package/plugins/aiwf-delegate-claude/NOTICE +4 -0
  186. package/plugins/aiwf-delegate-claude/README.md +10 -0
  187. package/plugins/aiwf-delegate-claude/plugin.json +13 -0
  188. package/plugins/aiwf-delegate-claude/skills/delegate-claude/LICENSE +21 -0
  189. package/plugins/aiwf-delegate-claude/skills/delegate-claude/NOTICE +4 -0
  190. package/plugins/aiwf-delegate-claude/skills/delegate-claude/SKILL.md +49 -0
  191. package/plugins/aiwf-delegate-claude/skills/delegate-claude/agents/openai.yaml +2 -0
  192. package/plugins/aiwf-delegate-codex/.claude-plugin/plugin.json +9 -0
  193. package/plugins/aiwf-delegate-codex/LICENSE +21 -0
  194. package/plugins/aiwf-delegate-codex/NOTICE +4 -0
  195. package/plugins/aiwf-delegate-codex/README.md +10 -0
  196. package/plugins/aiwf-delegate-codex/plugin.json +13 -0
  197. package/plugins/aiwf-delegate-codex/skills/delegate-codex/LICENSE +21 -0
  198. package/plugins/aiwf-delegate-codex/skills/delegate-codex/NOTICE +4 -0
  199. package/plugins/aiwf-delegate-codex/skills/delegate-codex/SKILL.md +47 -0
  200. package/plugins/aiwf-delegate-codex/skills/delegate-codex/agents/openai.yaml +2 -0
  201. package/plugins/aiwf-nestjs-nextjs/.claude-plugin/plugin.json +11 -0
  202. package/plugins/aiwf-nestjs-nextjs/LICENSE +201 -0
  203. package/plugins/aiwf-nestjs-nextjs/NOTICE +16 -0
  204. package/plugins/aiwf-nestjs-nextjs/README.md +53 -0
  205. package/plugins/aiwf-nestjs-nextjs/UPSTREAM.json +32 -0
  206. package/plugins/aiwf-nestjs-nextjs/rules/mcp-servers.md +59 -0
  207. package/plugins/aiwf-nestjs-nextjs/skills/drizzle-migration/SKILL.md +222 -0
  208. package/plugins/aiwf-nestjs-nextjs/skills/implement/SKILL.md +393 -0
  209. package/plugins/aiwf-nestjs-nextjs/skills/implement/references/project-layout.md +158 -0
  210. package/plugins/aiwf-nestjs-nextjs/skills/nest-test/SKILL.md +300 -0
  211. package/plugins/aiwf-nestjs-nextjs/skills/playwright-test/SKILL.md +245 -0
  212. package/plugins/aiwf-nestjs-nextjs/skills/react-test/SKILL.md +217 -0
  213. package/plugins/aiwf-spec/.claude-plugin/plugin.json +9 -0
  214. package/plugins/aiwf-spec/LICENSE +201 -0
  215. package/plugins/aiwf-spec/NOTICE +20 -0
  216. package/plugins/aiwf-spec/README.md +36 -0
  217. package/plugins/aiwf-spec/skills/sync-docs/SKILL.md +47 -0
  218. package/plugins/aiwf-spec/skills/workflow/SKILL.md +42 -0
  219. package/plugins/aiwf-vaadin-jooq/.claude-plugin/plugin.json +11 -0
  220. package/plugins/aiwf-vaadin-jooq/LICENSE +201 -0
  221. package/plugins/aiwf-vaadin-jooq/NOTICE +16 -0
  222. package/plugins/aiwf-vaadin-jooq/README.md +56 -0
  223. package/plugins/aiwf-vaadin-jooq/UPSTREAM.json +43 -0
  224. package/plugins/aiwf-vaadin-jooq/agents/uc-coverage.md +260 -0
  225. package/plugins/aiwf-vaadin-jooq/rules/mcp-servers.md +44 -0
  226. package/plugins/aiwf-vaadin-jooq/skills/browserless-test/SKILL.md +407 -0
  227. package/plugins/aiwf-vaadin-jooq/skills/browserless-test/references/UC001ManagePersonsTest.java +111 -0
  228. package/plugins/aiwf-vaadin-jooq/skills/coverage-check/SKILL.md +190 -0
  229. package/plugins/aiwf-vaadin-jooq/skills/flyway-migration/SKILL.md +70 -0
  230. package/plugins/aiwf-vaadin-jooq/skills/hilla-test/SKILL.md +350 -0
  231. package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsServiceTest.java +81 -0
  232. package/plugins/aiwf-vaadin-jooq/skills/hilla-test/references/UC001ManagePersonsViewTest.tsx +87 -0
  233. package/plugins/aiwf-vaadin-jooq/skills/implement/SKILL.md +196 -0
  234. package/plugins/aiwf-vaadin-jooq/skills/implement-hilla/SKILL.md +216 -0
  235. package/plugins/aiwf-vaadin-jooq/skills/karibu-test/SKILL.md +298 -0
  236. package/plugins/aiwf-vaadin-jooq/skills/karibu-test/references/UC001ManagePersonsTest.java +93 -0
  237. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/SKILL.md +237 -0
  238. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/ExampleViewIT.java +143 -0
  239. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/TC001CustomerOnboardingIT.java +144 -0
  240. package/plugins/aiwf-vaadin-jooq/skills/playwright-test/references/dramafinder-api.md +190 -0
  241. package/scripts/check-dependencies.js +26 -96
  242. package/scripts/install-spec-skills.mjs +126 -0
  243. package/scripts/validate-spec-plugin.mjs +145 -0
  244. package/src/cli/spec-cli.js +292 -0
  245. package/src/lib/spec-workflow.js +982 -0
  246. package/docs/ADR_MANAGEMENT_GUIDE.ko.md +0 -602
  247. package/docs/ADR_MANAGEMENT_GUIDE.md +0 -602
  248. package/docs/AI-WORKFLOW.ko.md +0 -299
  249. package/docs/AI-WORKFLOW.md +0 -401
  250. package/docs/API_REFERENCE_FULL.ko.md +0 -1135
  251. package/docs/API_REFERENCE_FULL.md +0 -1135
  252. package/docs/ARCHITECTURE.ko.md +0 -314
  253. package/docs/ARCHITECTURE.md +0 -314
  254. package/docs/CLI_USAGE_GUIDE.ko.md +0 -634
  255. package/docs/CLI_USAGE_GUIDE.md +0 -640
  256. package/docs/CODE_CLEANUP_GUIDE.ko.md +0 -415
  257. package/docs/CODE_CLEANUP_GUIDE.md +0 -415
  258. package/docs/COMMANDS_GUIDE.ko.md +0 -1037
  259. package/docs/COMMANDS_GUIDE.md +0 -1037
  260. package/docs/CONTRIBUTING.ko.md +0 -408
  261. package/docs/CONTRIBUTING.md +0 -408
  262. package/docs/DEVELOPMENT_GUIDE.ko.md +0 -440
  263. package/docs/DEVELOPMENT_GUIDE.md +0 -727
  264. package/docs/EXAMPLES.ko.md +0 -695
  265. package/docs/EXAMPLES.md +0 -693
  266. package/docs/GETTING_STARTED.ko.md +0 -219
  267. package/docs/GETTING_STARTED.md +0 -476
  268. package/docs/MODULE_MANAGEMENT_GUIDE.ko.md +0 -289
  269. package/docs/MODULE_MANAGEMENT_GUIDE.md +0 -289
  270. package/docs/PERFORMANCE_ARCHITECTURE.md +0 -494
  271. package/docs/PERFORMANCE_GUIDELINES.ko.md +0 -388
  272. package/docs/PERFORMANCE_GUIDELINES.md +0 -553
  273. package/docs/PRD.ko.md +0 -148
  274. package/docs/PRD.md +0 -150
  275. package/docs/ROADMAP_v0.4.0.md +0 -286
  276. package/docs/STATE_MANAGEMENT_GUIDE.ko.md +0 -278
  277. package/docs/STATE_MANAGEMENT_GUIDE.md +0 -278
  278. package/docs/TROUBLESHOOTING.ko.md +0 -366
  279. package/docs/TROUBLESHOOTING.md +0 -722
  280. package/docs/VALIDATOR_API.ko.md +0 -324
  281. package/docs/VALIDATOR_API.md +0 -324
  282. package/docs/YOLO_SYSTEM_GUIDE.ko.md +0 -542
  283. package/docs/YOLO_SYSTEM_GUIDE.md +0 -542
  284. package/docs/designs/AI_PERSONA_SYSTEM_DESIGN.md +0 -516
  285. package/docs/designs/API_DOCUMENTATION.md +0 -932
  286. package/docs/designs/API_REFERENCE.md +0 -979
  287. package/docs/designs/Enhanced_Installation_Flow_Design.md +0 -498
  288. package/docs/designs/aiwf-metadata-system-prd.md +0 -127
  289. package/docs/designs/offline-template-cache.md +0 -323
  290. package/docs/designs/persona-aware-compression.md +0 -168
  291. package/docs/guides/ai-personas-guide-ko.md +0 -239
  292. package/docs/guides/ai-personas-guide.md +0 -239
  293. package/docs/guides/checkpoint-system-guide-ko.md +0 -356
  294. package/docs/guides/checkpoint-system-guide.md +0 -356
  295. package/docs/guides/context-compression-guide-ko.md +0 -313
  296. package/docs/guides/context-compression-guide.md +0 -313
  297. package/docs/guides/independent-sprint-guide-ko.md +0 -321
  298. package/docs/guides/independent-sprint-guide.md +0 -321
  299. package/rules/global/aiwf-code-style-guide.md +0 -30
  300. package/rules/global/aiwf-coding-principles.md +0 -33
  301. package/rules/global/aiwf-development-process.md +0 -41
  302. package/rules/global/aiwf-global-rules.md +0 -84
  303. package/rules/manual/aiwf-generate-plan-docs.md +0 -280
  304. package/scripts/run-integration-tests.js +0 -317
  305. package/scripts/update-file-lists.js +0 -267
  306. package/scripts/validate-commands.js +0 -254
  307. package/src/DEPENDENCY_MAP.md +0 -90
  308. package/src/cli/cache-cli.js +0 -459
  309. package/src/cli/checkpoint-cli.js +0 -417
  310. package/src/cli/index.js +0 -481
  311. package/src/cli/language-cli.js +0 -286
  312. package/src/cli/sprint-cli.js +0 -287
  313. package/src/commands/ai-tool.js +0 -383
  314. package/src/commands/compress.js +0 -60
  315. package/src/commands/create-project.js +0 -160
  316. package/src/commands/evaluate.js +0 -459
  317. package/src/commands/persona.js +0 -309
  318. package/src/commands/sprint-independent.js +0 -393
  319. package/src/commands/sprint-task.js +0 -262
  320. package/src/commands/state.js +0 -1164
  321. package/src/commands/token.js +0 -312
  322. package/src/commands/yolo-config.js +0 -502
  323. package/src/config/file-lists.js +0 -147
  324. package/src/config/yolo-config-template.yaml +0 -168
  325. package/src/lib/ai-persona-manager.js +0 -711
  326. package/src/lib/backup-manager.js +0 -271
  327. package/src/lib/cache-system.js +0 -332
  328. package/src/lib/context-engine.js +0 -568
  329. package/src/lib/file-downloader.js +0 -304
  330. package/src/lib/github-integration.js +0 -402
  331. package/src/lib/installer.js +0 -1066
  332. package/src/lib/memory-profiler.js +0 -471
  333. package/src/lib/metrics-collector.js +0 -885
  334. package/src/lib/offline-detector.js +0 -386
  335. package/src/lib/resource-loader-enhanced.js +0 -399
  336. package/src/lib/resource-loader.js +0 -250
  337. package/src/lib/resources/commands/ai-persona.js +0 -602
  338. package/src/lib/resources/commands/compress-context.js +0 -389
  339. package/src/lib/resources/commands/evaluate.js +0 -246
  340. package/src/lib/resources/commands/persona-context-apply.js +0 -562
  341. package/src/lib/resources/commands/token-tracking.js +0 -443
  342. package/src/lib/resources/config/commit-patterns.js +0 -103
  343. package/src/lib/resources/config/language.json +0 -6
  344. package/src/lib/resources/personas/PERSONA_INDEX.md +0 -57
  345. package/src/lib/resources/personas/analyst.json +0 -44
  346. package/src/lib/resources/personas/architect/best_practices.md +0 -136
  347. package/src/lib/resources/personas/architect/knowledge_base.md +0 -377
  348. package/src/lib/resources/personas/architect.json +0 -44
  349. package/src/lib/resources/personas/backend/best_practices.md +0 -766
  350. package/src/lib/resources/personas/backend/knowledge_base.md +0 -1070
  351. package/src/lib/resources/personas/data_analyst/best_practices.md +0 -594
  352. package/src/lib/resources/personas/data_analyst/knowledge_base.md +0 -1057
  353. package/src/lib/resources/personas/developer.json +0 -44
  354. package/src/lib/resources/personas/developer.md +0 -37
  355. package/src/lib/resources/personas/evaluation_criteria.json +0 -137
  356. package/src/lib/resources/personas/frontend/best_practices.md +0 -445
  357. package/src/lib/resources/personas/frontend/knowledge_base.md +0 -729
  358. package/src/lib/resources/personas/persona-index.json +0 -31
  359. package/src/lib/resources/personas/reviewer.json +0 -44
  360. package/src/lib/resources/personas/security/best_practices.md +0 -307
  361. package/src/lib/resources/personas/security/knowledge_base.md +0 -498
  362. package/src/lib/resources/personas/tester.json +0 -44
  363. package/src/lib/resources/templates/README.md +0 -78
  364. package/src/lib/resources/templates/api-server/config.json +0 -64
  365. package/src/lib/resources/templates/api-server/template/.aiwf/config.json +0 -56
  366. package/src/lib/resources/templates/api-server/template/.aiwf/feature-ledger.json +0 -42
  367. package/src/lib/resources/templates/api-server/template/.aiwf/personas/backend-engineer.json +0 -40
  368. package/src/lib/resources/templates/api-server/template/.aiwf/scripts/cli.js +0 -111
  369. package/src/lib/resources/templates/api-server/template/.env.example +0 -29
  370. package/src/lib/resources/templates/api-server/template/.eslintrc.json +0 -23
  371. package/src/lib/resources/templates/api-server/template/README.md +0 -171
  372. package/src/lib/resources/templates/api-server/template/jest.config.js +0 -26
  373. package/src/lib/resources/templates/api-server/template/nodemon.json +0 -9
  374. package/src/lib/resources/templates/api-server/template/package.json +0 -61
  375. package/src/lib/resources/templates/api-server/template/src/app.ts +0 -60
  376. package/src/lib/resources/templates/api-server/template/src/config/swagger.ts +0 -38
  377. package/src/lib/resources/templates/api-server/template/src/controllers/aiwfController.ts +0 -54
  378. package/src/lib/resources/templates/api-server/template/src/controllers/authController.ts +0 -128
  379. package/src/lib/resources/templates/api-server/template/src/controllers/statusController.ts +0 -28
  380. package/src/lib/resources/templates/api-server/template/src/index.ts +0 -28
  381. package/src/lib/resources/templates/api-server/template/src/middleware/aiwfMiddleware.ts +0 -50
  382. package/src/lib/resources/templates/api-server/template/src/middleware/authMiddleware.ts +0 -41
  383. package/src/lib/resources/templates/api-server/template/src/middleware/errorHandler.ts +0 -42
  384. package/src/lib/resources/templates/api-server/template/src/middleware/notFoundHandler.ts +0 -14
  385. package/src/lib/resources/templates/api-server/template/src/middleware/requestLogger.ts +0 -20
  386. package/src/lib/resources/templates/api-server/template/src/routes/aiwf.ts +0 -31
  387. package/src/lib/resources/templates/api-server/template/src/routes/index.ts +0 -13
  388. package/src/lib/resources/templates/api-server/template/src/routes/v1/index.ts +0 -67
  389. package/src/lib/resources/templates/api-server/template/src/utils/logger.ts +0 -37
  390. package/src/lib/resources/templates/api-server/template/tests/app.test.ts +0 -40
  391. package/src/lib/resources/templates/api-server/template/tsconfig.json +0 -43
  392. package/src/lib/resources/templates/npm-library/config.json +0 -61
  393. package/src/lib/resources/templates/npm-library/template/README.md +0 -201
  394. package/src/lib/resources/templates/npm-library/template/package.json +0 -78
  395. package/src/lib/resources/templates/web-app/config.json +0 -53
  396. package/src/lib/resources/templates/web-app/template/.aiwf/config.json +0 -54
  397. package/src/lib/resources/templates/web-app/template/.aiwf/feature-ledger.json +0 -37
  398. package/src/lib/resources/templates/web-app/template/.aiwf/personas/fullstack-developer.json +0 -40
  399. package/src/lib/resources/templates/web-app/template/.aiwf/scripts/cli.js +0 -110
  400. package/src/lib/resources/templates/web-app/template/.eslintrc.cjs +0 -20
  401. package/src/lib/resources/templates/web-app/template/README.md +0 -151
  402. package/src/lib/resources/templates/web-app/template/index.html +0 -14
  403. package/src/lib/resources/templates/web-app/template/package.json +0 -44
  404. package/src/lib/resources/templates/web-app/template/postcss.config.js +0 -6
  405. package/src/lib/resources/templates/web-app/template/public/vite.svg +0 -1
  406. package/src/lib/resources/templates/web-app/template/src/App.tsx +0 -21
  407. package/src/lib/resources/templates/web-app/template/src/components/Layout.tsx +0 -57
  408. package/src/lib/resources/templates/web-app/template/src/components/aiwf/ContextStatus.tsx +0 -107
  409. package/src/lib/resources/templates/web-app/template/src/components/aiwf/TokenUsage.tsx +0 -71
  410. package/src/lib/resources/templates/web-app/template/src/index.css +0 -60
  411. package/src/lib/resources/templates/web-app/template/src/main.tsx +0 -10
  412. package/src/lib/resources/templates/web-app/template/src/pages/AiwfDashboard.tsx +0 -57
  413. package/src/lib/resources/templates/web-app/template/src/pages/HomePage.tsx +0 -89
  414. package/src/lib/resources/templates/web-app/template/src/pages/NotFound.tsx +0 -25
  415. package/src/lib/resources/templates/web-app/template/src/stores/aiwfStore.ts +0 -126
  416. package/src/lib/resources/templates/web-app/template/src/types/global.d.ts +0 -9
  417. package/src/lib/resources/templates/web-app/template/src/vite-env.d.ts +0 -1
  418. package/src/lib/resources/templates/web-app/template/tailwind.config.js +0 -30
  419. package/src/lib/resources/templates/web-app/template/tsconfig.json +0 -37
  420. package/src/lib/resources/templates/web-app/template/tsconfig.node.json +0 -10
  421. package/src/lib/resources/templates/web-app/template/vite.config.ts +0 -23
  422. package/src/lib/resources/utils/background-monitor.js +0 -223
  423. package/src/lib/resources/utils/compression-metrics.js +0 -1031
  424. package/src/lib/resources/utils/compression-strategies.js +0 -557
  425. package/src/lib/resources/utils/content-normalizer.js +0 -455
  426. package/src/lib/resources/utils/context-compressor.js +0 -583
  427. package/src/lib/resources/utils/context-rule-parser.js +0 -180
  428. package/src/lib/resources/utils/context-token-monitor.js +0 -463
  429. package/src/lib/resources/utils/context-update-manager.js +0 -502
  430. package/src/lib/resources/utils/git-utils.js +0 -220
  431. package/src/lib/resources/utils/importance-classifier.js +0 -645
  432. package/src/lib/resources/utils/information-filter.js +0 -710
  433. package/src/lib/resources/utils/persona-aware-compressor.js +0 -598
  434. package/src/lib/resources/utils/prompt-injector.js +0 -242
  435. package/src/lib/resources/utils/simplified-evaluator.js +0 -119
  436. package/src/lib/resources/utils/text-summarizer.js +0 -492
  437. package/src/lib/resources/utils/token-counter.js +0 -177
  438. package/src/lib/resources/utils/token-monitor.js +0 -484
  439. package/src/lib/resources/utils/token-reporter.js +0 -452
  440. package/src/lib/resources/utils/token-storage.js +0 -433
  441. package/src/lib/resources/utils/token-tracker.js +0 -283
  442. package/src/lib/rollback-manager.js +0 -418
  443. package/src/lib/state/priority-calculator.js +0 -217
  444. package/src/lib/state/state-index.js +0 -155
  445. package/src/lib/state/task-scanner.js +0 -328
  446. package/src/lib/task-analyzer.js +0 -599
  447. package/src/lib/template-cache-system.js +0 -559
  448. package/src/lib/template-downloader.js +0 -467
  449. package/src/lib/template-version-manager.js +0 -491
  450. package/src/lib/token-optimizer.js +0 -517
  451. package/src/lib/validator.js +0 -376
  452. package/src/utils/checkpoint-manager.js +0 -435
  453. package/src/utils/engineering-guard.js +0 -399
  454. package/src/utils/language-utils.js +0 -331
  455. package/src/utils/messages.js +0 -166
  456. package/src/utils/paths.js +0 -112
@@ -0,0 +1,34 @@
1
+ {
2
+ "checks": [
3
+ {
4
+ "name": "C-STRUCTURE",
5
+ "command": "python3 /Users/moonklabs/workspace-plugin/aiwf/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py --docs docs --strict --no-baseline --format json",
6
+ "status": "passed",
7
+ "log": "artifacts/red-structure.stdout.txt"
8
+ },
9
+ {
10
+ "name": "C-SERVICE",
11
+ "command": "node --test tests/expense.test.mjs",
12
+ "status": "failed",
13
+ "log": "artifacts/red-service.stdout.txt"
14
+ },
15
+ {
16
+ "name": "C-UI",
17
+ "command": "not_run: no consuming UI/authentication app selected",
18
+ "status": "not_run"
19
+ },
20
+ {
21
+ "name": "C-HUMAN",
22
+ "command": "not_run: no human packet review recorded",
23
+ "status": "not_run"
24
+ }
25
+ ],
26
+ "unverified": [
27
+ "Login, submitter_id and real authorization",
28
+ "UI journey, error messages and receipt display",
29
+ "Real DB, cross-process durability, concurrency and Decimal precision",
30
+ "Business semantics, actual product adoption, human acceptance and active human time",
31
+ "Minimum Node 20/Python 3.9 and stack apps",
32
+ "Current CLI does not verify code/test hashes or execution-time freshness"
33
+ ]
34
+ }
@@ -0,0 +1,134 @@
1
+ {
2
+ "schema_version": 1,
3
+ "collected_at": "2026-10-03T07:20:30.528Z",
4
+ "status": "awaiting_review",
5
+ "acceptance": "not_recorded",
6
+ "remote_sync": "not_attempted",
7
+ "spec": {
8
+ "digest": "a2616b3224768a0a7972bd75ba19632d2e9b84afc5c175ae21c71281dc5017a2",
9
+ "files": [
10
+ {
11
+ "path": "docs/entity_model.md",
12
+ "sha256": "aeb25fc9017964259e74f99220b87efe13b722bffa716b1b12f3b82f9c7ee5d8",
13
+ "bytes": 1687,
14
+ "kind": "required"
15
+ },
16
+ {
17
+ "path": "docs/glossary.md",
18
+ "sha256": "093fc46be4b64534e670c046d935fce2287246190390d119f4c2edf43b7aedd9",
19
+ "bytes": 560,
20
+ "kind": "required"
21
+ },
22
+ {
23
+ "path": "docs/plans/UC-001.md",
24
+ "sha256": "e54f99e9d9cea07c2f74979f2bd2b0295d451eaf713ade031f76630d8a453491",
25
+ "bytes": 1918,
26
+ "kind": "plan"
27
+ },
28
+ {
29
+ "path": "docs/requirements.md",
30
+ "sha256": "d6190c0cfe5b43cd1fa7ba46fb252a558cc2854b0a5523cce7c2cf34db2c5254",
31
+ "bytes": 471,
32
+ "kind": "required"
33
+ },
34
+ {
35
+ "path": "docs/test_cases/TC-001-submit-expense.md",
36
+ "sha256": "f47b50f116ac8af187daf8915382c3a7e084d0110840b8b2cd0413f5d9a5d3b2",
37
+ "bytes": 1529,
38
+ "kind": "test_case"
39
+ },
40
+ {
41
+ "path": "docs/test_cases/TC-002-description-limit.md",
42
+ "sha256": "516fa1b0252d8870fe773bcd56b89b1086f45a7f792a573635395e2a89780745",
43
+ "bytes": 2021,
44
+ "kind": "test_case"
45
+ },
46
+ {
47
+ "path": "docs/use_cases.puml",
48
+ "sha256": "b693ab2ddf7896b404a5193acd1fe65c3b4e0bb768df56a54360dc0f8c3a412d",
49
+ "bytes": 208,
50
+ "kind": "required"
51
+ },
52
+ {
53
+ "path": "docs/use_cases/UC-001-submit-expense.md",
54
+ "sha256": "f41984bc93f5d352f92bc3f62a1bc6d1dae3d5e931ed5b7ce4d44506afbcf93c",
55
+ "bytes": 2703,
56
+ "kind": "use_case"
57
+ },
58
+ {
59
+ "path": "docs/vision.md",
60
+ "sha256": "52fabfa494c1419bc1045f3404e26478a523a52c0f9910c40ac0199a7a9455fd",
61
+ "bytes": 516,
62
+ "kind": "required"
63
+ }
64
+ ]
65
+ },
66
+ "pin": {
67
+ "digest": "a2616b3224768a0a7972bd75ba19632d2e9b84afc5c175ae21c71281dc5017a2",
68
+ "matched": true
69
+ },
70
+ "drift": {
71
+ "added": [],
72
+ "changed": [],
73
+ "deleted": []
74
+ },
75
+ "git": null,
76
+ "evidence": {
77
+ "trust": "reported_untrusted",
78
+ "checks_summary": {
79
+ "total": 4,
80
+ "passed": 1,
81
+ "failed": 1,
82
+ "not_run": 2
83
+ },
84
+ "checks": [
85
+ {
86
+ "name": "C-STRUCTURE",
87
+ "command": "python3 /Users/moonklabs/workspace-plugin/aiwf/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py --docs docs --strict --no-baseline --format json",
88
+ "status": "passed",
89
+ "log": {
90
+ "path": "artifacts/red-structure.stdout.txt",
91
+ "sha256": "084e217c610e298df59b5c5470daedbe0f268f1baa11f9a2d1d60a6268c0fe7c",
92
+ "bytes": 113,
93
+ "content": "{\n \"findings\": [],\n \"summary\": {\n \"errors\": 0,\n \"warnings\": 0,\n \"infos\": 0,\n \"suppressed\": 0\n }\n}\n"
94
+ }
95
+ },
96
+ {
97
+ "name": "C-SERVICE",
98
+ "command": "node --test tests/expense.test.mjs",
99
+ "status": "failed",
100
+ "log": {
101
+ "path": "artifacts/red-service.stdout.txt",
102
+ "sha256": "bd719bf3cf1e5e210d2b2ff853826dc86396d6a29a1767a4632cfe9db5bdf340",
103
+ "bytes": 10243,
104
+ "content": "TAP version 13\n# Subtest: UC-001 success persists amount, description, submitted state and receipt\nok 1 - UC-001 success persists amount, description, submitted state and receipt\n ---\n duration_ms: 1.535917\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects 0 without changing prior state\nok 2 - UC-001 BR-001/A1 rejects 0 without changing prior state\n ---\n duration_ms: 0.174875\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects -1 without changing prior state\nok 3 - UC-001 BR-001/A1 rejects -1 without changing prior state\n ---\n duration_ms: 0.091167\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects -100 without changing prior state\nok 4 - UC-001 BR-001/A1 rejects -100 without changing prior state\n ---\n duration_ms: 0.043709\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects NaN without changing prior state\nok 5 - UC-001 BR-001/A1 rejects NaN without changing prior state\n ---\n duration_ms: 0.095583\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects Infinity without changing prior state\nok 6 - UC-001 BR-001/A1 rejects Infinity without changing prior state\n ---\n duration_ms: 0.03975\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects -Infinity without changing prior state\nok 7 - UC-001 BR-001/A1 rejects -Infinity without changing prior state\n ---\n duration_ms: 0.066292\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects 12000 without changing prior state\nok 8 - UC-001 BR-001/A1 rejects 12000 without changing prior state\n ---\n duration_ms: 0.071292\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects null without changing prior state\nok 9 - UC-001 BR-001/A1 rejects null without changing prior state\n ---\n duration_ms: 0.200792\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects undefined without changing prior state\nok 10 - UC-001 BR-001/A1 rejects undefined without changing prior state\n ---\n duration_ms: 0.230291\n type: 'test'\n ...\n# Subtest: TC-001 service slice permits correction from -100 to 12000\nok 11 - TC-001 service slice permits correction from -100 to 12000\n ---\n duration_ms: 0.097125\n type: 'test'\n ...\n# Subtest: UC-001 A2 storage failure preserves earlier records and permits recovery\nok 12 - UC-001 A2 storage failure preserves earlier records and permits recovery\n ---\n duration_ms: 0.120417\n type: 'test'\n ...\n# Subtest: UC-001 BR-002 accepts 200 ASCII code points\nok 13 - UC-001 BR-002 accepts 200 ASCII code points\n ---\n duration_ms: 0.037792\n type: 'test'\n ...\n# Subtest: UC-001 BR-002/A3 rejects 201 ASCII code points without mutation\nnot ok 14 - UC-001 BR-002/A3 rejects 201 ASCII code points without mutation\n ---\n duration_ms: 0.216209\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:72:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (RangeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'RangeError'\n message: 'Description must be at most 200 Unicode code points'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:76:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002 accepts 200 astral Unicode code points\nok 15 - UC-001 BR-002 accepts 200 astral Unicode code points\n ---\n duration_ms: 0.486291\n type: 'test'\n ...\n# Subtest: UC-001 BR-002/A3 rejects 201 astral Unicode code points without mutation\nnot ok 16 - UC-001 BR-002/A3 rejects 201 astral Unicode code points without mutation\n ---\n duration_ms: 0.095916\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:72:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (RangeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'RangeError'\n message: 'Description must be at most 200 Unicode code points'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:76:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002/A3 rejects number description without mutation\nnot ok 17 - UC-001 BR-002/A3 rejects number description without mutation\n ---\n duration_ms: 0.091792\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (TypeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'TypeError'\n message: 'Description must be a string'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002/A3 rejects array description without mutation\nnot ok 18 - UC-001 BR-002/A3 rejects array description without mutation\n ---\n duration_ms: 0.044666\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (TypeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'TypeError'\n message: 'Description must be a string'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002/A3 rejects object description without mutation\nnot ok 19 - UC-001 BR-002/A3 rejects object description without mutation\n ---\n duration_ms: 0.041917\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (TypeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'TypeError'\n message: 'Description must be a string'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002 normalizes omitted optional description to empty string\nok 20 - UC-001 BR-002 normalizes omitted optional description to empty string\n ---\n duration_ms: 0.0385\n type: 'test'\n ...\n# Subtest: UC-001 BR-002 normalizes null optional description to empty string\nnot ok 21 - UC-001 BR-002 normalizes null optional description to empty string\n ---\n duration_ms: 0.185917\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:96:3'\n failureType: 'testCodeFailure'\n error: |-\n Expected values to be strictly equal:\n \n null !== ''\n \n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected: ''\n actual: ~\n operator: 'strictEqual'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:101:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002 normalizes empty optional description to empty string\nok 22 - UC-001 BR-002 normalizes empty optional description to empty string\n ---\n duration_ms: 0.029083\n type: 'test'\n ...\n# Subtest: TC-002 service slice corrects 201 to 200 and preserves earlier records\nnot ok 23 - TC-002 service slice corrects 201 to 200 and preserves earlier records\n ---\n duration_ms: 0.061167\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:106:1'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (RangeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:110:10)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n1..23\n# tests 23\n# suites 0\n# pass 16\n# fail 7\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 39.162833\n"
105
+ }
106
+ },
107
+ {
108
+ "name": "C-UI",
109
+ "command": "not_run: no consuming UI/authentication app selected",
110
+ "status": "not_run"
111
+ },
112
+ {
113
+ "name": "C-HUMAN",
114
+ "command": "not_run: no human packet review recorded",
115
+ "status": "not_run"
116
+ }
117
+ ],
118
+ "unverified": [
119
+ "Login, submitter_id and real authorization",
120
+ "UI journey, error messages and receipt display",
121
+ "Real DB, cross-process durability, concurrency and Decimal precision",
122
+ "Business semantics, actual product adoption, human acceptance and active human time",
123
+ "Minimum Node 20/Python 3.9 and stack apps",
124
+ "Current CLI does not verify code/test hashes or execution-time freshness"
125
+ ]
126
+ },
127
+ "limitations": [
128
+ "Recorded check output is not proof of business acceptance.",
129
+ "Check statuses are reported by the submitter and are not independently verified by this tool.",
130
+ "Remote synchronization was not attempted.",
131
+ "Human acceptance has not been recorded.",
132
+ "Structural and semantic lint is not performed by this tool; it remains an upstream step."
133
+ ]
134
+ }
@@ -0,0 +1,134 @@
1
+ {
2
+ "schema_version": 1,
3
+ "collected_at": "2026-10-03T07:20:30.528Z",
4
+ "status": "awaiting_review",
5
+ "acceptance": "not_recorded",
6
+ "remote_sync": "not_attempted",
7
+ "spec": {
8
+ "digest": "a2616b3224768a0a7972bd75ba19632d2e9b84afc5c175ae21c71281dc5017a2",
9
+ "files": [
10
+ {
11
+ "path": "docs/entity_model.md",
12
+ "sha256": "aeb25fc9017964259e74f99220b87efe13b722bffa716b1b12f3b82f9c7ee5d8",
13
+ "bytes": 1687,
14
+ "kind": "required"
15
+ },
16
+ {
17
+ "path": "docs/glossary.md",
18
+ "sha256": "093fc46be4b64534e670c046d935fce2287246190390d119f4c2edf43b7aedd9",
19
+ "bytes": 560,
20
+ "kind": "required"
21
+ },
22
+ {
23
+ "path": "docs/plans/UC-001.md",
24
+ "sha256": "e54f99e9d9cea07c2f74979f2bd2b0295d451eaf713ade031f76630d8a453491",
25
+ "bytes": 1918,
26
+ "kind": "plan"
27
+ },
28
+ {
29
+ "path": "docs/requirements.md",
30
+ "sha256": "d6190c0cfe5b43cd1fa7ba46fb252a558cc2854b0a5523cce7c2cf34db2c5254",
31
+ "bytes": 471,
32
+ "kind": "required"
33
+ },
34
+ {
35
+ "path": "docs/test_cases/TC-001-submit-expense.md",
36
+ "sha256": "f47b50f116ac8af187daf8915382c3a7e084d0110840b8b2cd0413f5d9a5d3b2",
37
+ "bytes": 1529,
38
+ "kind": "test_case"
39
+ },
40
+ {
41
+ "path": "docs/test_cases/TC-002-description-limit.md",
42
+ "sha256": "516fa1b0252d8870fe773bcd56b89b1086f45a7f792a573635395e2a89780745",
43
+ "bytes": 2021,
44
+ "kind": "test_case"
45
+ },
46
+ {
47
+ "path": "docs/use_cases.puml",
48
+ "sha256": "b693ab2ddf7896b404a5193acd1fe65c3b4e0bb768df56a54360dc0f8c3a412d",
49
+ "bytes": 208,
50
+ "kind": "required"
51
+ },
52
+ {
53
+ "path": "docs/use_cases/UC-001-submit-expense.md",
54
+ "sha256": "f41984bc93f5d352f92bc3f62a1bc6d1dae3d5e931ed5b7ce4d44506afbcf93c",
55
+ "bytes": 2703,
56
+ "kind": "use_case"
57
+ },
58
+ {
59
+ "path": "docs/vision.md",
60
+ "sha256": "52fabfa494c1419bc1045f3404e26478a523a52c0f9910c40ac0199a7a9455fd",
61
+ "bytes": 516,
62
+ "kind": "required"
63
+ }
64
+ ]
65
+ },
66
+ "pin": {
67
+ "digest": "a2616b3224768a0a7972bd75ba19632d2e9b84afc5c175ae21c71281dc5017a2",
68
+ "matched": true
69
+ },
70
+ "drift": {
71
+ "added": [],
72
+ "changed": [],
73
+ "deleted": []
74
+ },
75
+ "git": null,
76
+ "evidence": {
77
+ "trust": "reported_untrusted",
78
+ "checks_summary": {
79
+ "total": 4,
80
+ "passed": 1,
81
+ "failed": 1,
82
+ "not_run": 2
83
+ },
84
+ "checks": [
85
+ {
86
+ "name": "C-STRUCTURE",
87
+ "command": "python3 /Users/moonklabs/workspace-plugin/aiwf/plugins/aiwf-core/skills/spec-review/scripts/spec_lint.py --docs docs --strict --no-baseline --format json",
88
+ "status": "passed",
89
+ "log": {
90
+ "path": "artifacts/red-structure.stdout.txt",
91
+ "sha256": "084e217c610e298df59b5c5470daedbe0f268f1baa11f9a2d1d60a6268c0fe7c",
92
+ "bytes": 113,
93
+ "content": "{\n \"findings\": [],\n \"summary\": {\n \"errors\": 0,\n \"warnings\": 0,\n \"infos\": 0,\n \"suppressed\": 0\n }\n}\n"
94
+ }
95
+ },
96
+ {
97
+ "name": "C-SERVICE",
98
+ "command": "node --test tests/expense.test.mjs",
99
+ "status": "failed",
100
+ "log": {
101
+ "path": "artifacts/red-service.stdout.txt",
102
+ "sha256": "bd719bf3cf1e5e210d2b2ff853826dc86396d6a29a1767a4632cfe9db5bdf340",
103
+ "bytes": 10243,
104
+ "content": "TAP version 13\n# Subtest: UC-001 success persists amount, description, submitted state and receipt\nok 1 - UC-001 success persists amount, description, submitted state and receipt\n ---\n duration_ms: 1.535917\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects 0 without changing prior state\nok 2 - UC-001 BR-001/A1 rejects 0 without changing prior state\n ---\n duration_ms: 0.174875\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects -1 without changing prior state\nok 3 - UC-001 BR-001/A1 rejects -1 without changing prior state\n ---\n duration_ms: 0.091167\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects -100 without changing prior state\nok 4 - UC-001 BR-001/A1 rejects -100 without changing prior state\n ---\n duration_ms: 0.043709\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects NaN without changing prior state\nok 5 - UC-001 BR-001/A1 rejects NaN without changing prior state\n ---\n duration_ms: 0.095583\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects Infinity without changing prior state\nok 6 - UC-001 BR-001/A1 rejects Infinity without changing prior state\n ---\n duration_ms: 0.03975\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects -Infinity without changing prior state\nok 7 - UC-001 BR-001/A1 rejects -Infinity without changing prior state\n ---\n duration_ms: 0.066292\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects 12000 without changing prior state\nok 8 - UC-001 BR-001/A1 rejects 12000 without changing prior state\n ---\n duration_ms: 0.071292\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects null without changing prior state\nok 9 - UC-001 BR-001/A1 rejects null without changing prior state\n ---\n duration_ms: 0.200792\n type: 'test'\n ...\n# Subtest: UC-001 BR-001/A1 rejects undefined without changing prior state\nok 10 - UC-001 BR-001/A1 rejects undefined without changing prior state\n ---\n duration_ms: 0.230291\n type: 'test'\n ...\n# Subtest: TC-001 service slice permits correction from -100 to 12000\nok 11 - TC-001 service slice permits correction from -100 to 12000\n ---\n duration_ms: 0.097125\n type: 'test'\n ...\n# Subtest: UC-001 A2 storage failure preserves earlier records and permits recovery\nok 12 - UC-001 A2 storage failure preserves earlier records and permits recovery\n ---\n duration_ms: 0.120417\n type: 'test'\n ...\n# Subtest: UC-001 BR-002 accepts 200 ASCII code points\nok 13 - UC-001 BR-002 accepts 200 ASCII code points\n ---\n duration_ms: 0.037792\n type: 'test'\n ...\n# Subtest: UC-001 BR-002/A3 rejects 201 ASCII code points without mutation\nnot ok 14 - UC-001 BR-002/A3 rejects 201 ASCII code points without mutation\n ---\n duration_ms: 0.216209\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:72:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (RangeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'RangeError'\n message: 'Description must be at most 200 Unicode code points'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:76:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002 accepts 200 astral Unicode code points\nok 15 - UC-001 BR-002 accepts 200 astral Unicode code points\n ---\n duration_ms: 0.486291\n type: 'test'\n ...\n# Subtest: UC-001 BR-002/A3 rejects 201 astral Unicode code points without mutation\nnot ok 16 - UC-001 BR-002/A3 rejects 201 astral Unicode code points without mutation\n ---\n duration_ms: 0.095916\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:72:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (RangeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'RangeError'\n message: 'Description must be at most 200 Unicode code points'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:76:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002/A3 rejects number description without mutation\nnot ok 17 - UC-001 BR-002/A3 rejects number description without mutation\n ---\n duration_ms: 0.091792\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (TypeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'TypeError'\n message: 'Description must be a string'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002/A3 rejects array description without mutation\nnot ok 18 - UC-001 BR-002/A3 rejects array description without mutation\n ---\n duration_ms: 0.044666\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (TypeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'TypeError'\n message: 'Description must be a string'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002/A3 rejects object description without mutation\nnot ok 19 - UC-001 BR-002/A3 rejects object description without mutation\n ---\n duration_ms: 0.041917\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (TypeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected:\n name: 'TypeError'\n message: 'Description must be a string'\n operator: 'throws'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002 normalizes omitted optional description to empty string\nok 20 - UC-001 BR-002 normalizes omitted optional description to empty string\n ---\n duration_ms: 0.0385\n type: 'test'\n ...\n# Subtest: UC-001 BR-002 normalizes null optional description to empty string\nnot ok 21 - UC-001 BR-002 normalizes null optional description to empty string\n ---\n duration_ms: 0.185917\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:96:3'\n failureType: 'testCodeFailure'\n error: |-\n Expected values to be strictly equal:\n \n null !== ''\n \n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n expected: ''\n actual: ~\n operator: 'strictEqual'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:101:12)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n# Subtest: UC-001 BR-002 normalizes empty optional description to empty string\nok 22 - UC-001 BR-002 normalizes empty optional description to empty string\n ---\n duration_ms: 0.029083\n type: 'test'\n ...\n# Subtest: TC-002 service slice corrects 201 to 200 and preserves earlier records\nnot ok 23 - TC-002 service slice corrects 201 to 200 and preserves earlier records\n ---\n duration_ms: 0.061167\n type: 'test'\n location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:106:1'\n failureType: 'testCodeFailure'\n error: 'Missing expected exception (RangeError).'\n code: 'ERR_ASSERTION'\n name: 'AssertionError'\n stack: |-\n TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:110:10)\n Test.runInAsyncScope (node:async_hooks:214:14)\n Test.run (node:internal/test_runner/test:1047:25)\n Test.processPendingSubtests (node:internal/test_runner/test:744:18)\n Test.postRun (node:internal/test_runner/test:1173:19)\n Test.run (node:internal/test_runner/test:1101:12)\n async Test.processPendingSubtests (node:internal/test_runner/test:744:7)\n ...\n1..23\n# tests 23\n# suites 0\n# pass 16\n# fail 7\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 39.162833\n"
105
+ }
106
+ },
107
+ {
108
+ "name": "C-UI",
109
+ "command": "not_run: no consuming UI/authentication app selected",
110
+ "status": "not_run"
111
+ },
112
+ {
113
+ "name": "C-HUMAN",
114
+ "command": "not_run: no human packet review recorded",
115
+ "status": "not_run"
116
+ }
117
+ ],
118
+ "unverified": [
119
+ "Login, submitter_id and real authorization",
120
+ "UI journey, error messages and receipt display",
121
+ "Real DB, cross-process durability, concurrency and Decimal precision",
122
+ "Business semantics, actual product adoption, human acceptance and active human time",
123
+ "Minimum Node 20/Python 3.9 and stack apps",
124
+ "Current CLI does not verify code/test hashes or execution-time freshness"
125
+ ]
126
+ },
127
+ "limitations": [
128
+ "Recorded check output is not proof of business acceptance.",
129
+ "Check statuses are reported by the submitter and are not independently verified by this tool.",
130
+ "Remote synchronization was not attempted.",
131
+ "Human acceptance has not been recorded.",
132
+ "Structural and semantic lint is not performed by this tool; it remains an upstream step."
133
+ ]
134
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "checked_at": "2026-10-03T07:20:30.533565+00:00",
3
+ "packet_sha256": "b7dab2c3606278b14f7f99b9fed2e63816dbe3ec7a9e438b751f3df6b7d112c7",
4
+ "spec_digest": "a2616b3224768a0a7972bd75ba19632d2e9b84afc5c175ae21c71281dc5017a2",
5
+ "checks_summary": {
6
+ "total": 4,
7
+ "passed": 1,
8
+ "failed": 1,
9
+ "not_run": 2
10
+ },
11
+ "status": "awaiting_review",
12
+ "acceptance": "not_recorded",
13
+ "embedded_logs_byte_exact": true,
14
+ "scope": "one-off author assertions; not human acceptance"
15
+ }
@@ -0,0 +1,266 @@
1
+ TAP version 13
2
+ # Subtest: UC-001 success persists amount, description, submitted state and receipt
3
+ ok 1 - UC-001 success persists amount, description, submitted state and receipt
4
+ ---
5
+ duration_ms: 1.535917
6
+ type: 'test'
7
+ ...
8
+ # Subtest: UC-001 BR-001/A1 rejects 0 without changing prior state
9
+ ok 2 - UC-001 BR-001/A1 rejects 0 without changing prior state
10
+ ---
11
+ duration_ms: 0.174875
12
+ type: 'test'
13
+ ...
14
+ # Subtest: UC-001 BR-001/A1 rejects -1 without changing prior state
15
+ ok 3 - UC-001 BR-001/A1 rejects -1 without changing prior state
16
+ ---
17
+ duration_ms: 0.091167
18
+ type: 'test'
19
+ ...
20
+ # Subtest: UC-001 BR-001/A1 rejects -100 without changing prior state
21
+ ok 4 - UC-001 BR-001/A1 rejects -100 without changing prior state
22
+ ---
23
+ duration_ms: 0.043709
24
+ type: 'test'
25
+ ...
26
+ # Subtest: UC-001 BR-001/A1 rejects NaN without changing prior state
27
+ ok 5 - UC-001 BR-001/A1 rejects NaN without changing prior state
28
+ ---
29
+ duration_ms: 0.095583
30
+ type: 'test'
31
+ ...
32
+ # Subtest: UC-001 BR-001/A1 rejects Infinity without changing prior state
33
+ ok 6 - UC-001 BR-001/A1 rejects Infinity without changing prior state
34
+ ---
35
+ duration_ms: 0.03975
36
+ type: 'test'
37
+ ...
38
+ # Subtest: UC-001 BR-001/A1 rejects -Infinity without changing prior state
39
+ ok 7 - UC-001 BR-001/A1 rejects -Infinity without changing prior state
40
+ ---
41
+ duration_ms: 0.066292
42
+ type: 'test'
43
+ ...
44
+ # Subtest: UC-001 BR-001/A1 rejects 12000 without changing prior state
45
+ ok 8 - UC-001 BR-001/A1 rejects 12000 without changing prior state
46
+ ---
47
+ duration_ms: 0.071292
48
+ type: 'test'
49
+ ...
50
+ # Subtest: UC-001 BR-001/A1 rejects null without changing prior state
51
+ ok 9 - UC-001 BR-001/A1 rejects null without changing prior state
52
+ ---
53
+ duration_ms: 0.200792
54
+ type: 'test'
55
+ ...
56
+ # Subtest: UC-001 BR-001/A1 rejects undefined without changing prior state
57
+ ok 10 - UC-001 BR-001/A1 rejects undefined without changing prior state
58
+ ---
59
+ duration_ms: 0.230291
60
+ type: 'test'
61
+ ...
62
+ # Subtest: TC-001 service slice permits correction from -100 to 12000
63
+ ok 11 - TC-001 service slice permits correction from -100 to 12000
64
+ ---
65
+ duration_ms: 0.097125
66
+ type: 'test'
67
+ ...
68
+ # Subtest: UC-001 A2 storage failure preserves earlier records and permits recovery
69
+ ok 12 - UC-001 A2 storage failure preserves earlier records and permits recovery
70
+ ---
71
+ duration_ms: 0.120417
72
+ type: 'test'
73
+ ...
74
+ # Subtest: UC-001 BR-002 accepts 200 ASCII code points
75
+ ok 13 - UC-001 BR-002 accepts 200 ASCII code points
76
+ ---
77
+ duration_ms: 0.037792
78
+ type: 'test'
79
+ ...
80
+ # Subtest: UC-001 BR-002/A3 rejects 201 ASCII code points without mutation
81
+ not ok 14 - UC-001 BR-002/A3 rejects 201 ASCII code points without mutation
82
+ ---
83
+ duration_ms: 0.216209
84
+ type: 'test'
85
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:72:3'
86
+ failureType: 'testCodeFailure'
87
+ error: 'Missing expected exception (RangeError).'
88
+ code: 'ERR_ASSERTION'
89
+ name: 'AssertionError'
90
+ expected:
91
+ name: 'RangeError'
92
+ message: 'Description must be at most 200 Unicode code points'
93
+ operator: 'throws'
94
+ stack: |-
95
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:76:12)
96
+ Test.runInAsyncScope (node:async_hooks:214:14)
97
+ Test.run (node:internal/test_runner/test:1047:25)
98
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
99
+ Test.postRun (node:internal/test_runner/test:1173:19)
100
+ Test.run (node:internal/test_runner/test:1101:12)
101
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
102
+ ...
103
+ # Subtest: UC-001 BR-002 accepts 200 astral Unicode code points
104
+ ok 15 - UC-001 BR-002 accepts 200 astral Unicode code points
105
+ ---
106
+ duration_ms: 0.486291
107
+ type: 'test'
108
+ ...
109
+ # Subtest: UC-001 BR-002/A3 rejects 201 astral Unicode code points without mutation
110
+ not ok 16 - UC-001 BR-002/A3 rejects 201 astral Unicode code points without mutation
111
+ ---
112
+ duration_ms: 0.095916
113
+ type: 'test'
114
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:72:3'
115
+ failureType: 'testCodeFailure'
116
+ error: 'Missing expected exception (RangeError).'
117
+ code: 'ERR_ASSERTION'
118
+ name: 'AssertionError'
119
+ expected:
120
+ name: 'RangeError'
121
+ message: 'Description must be at most 200 Unicode code points'
122
+ operator: 'throws'
123
+ stack: |-
124
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:76:12)
125
+ Test.runInAsyncScope (node:async_hooks:214:14)
126
+ Test.run (node:internal/test_runner/test:1047:25)
127
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
128
+ Test.postRun (node:internal/test_runner/test:1173:19)
129
+ Test.run (node:internal/test_runner/test:1101:12)
130
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
131
+ ...
132
+ # Subtest: UC-001 BR-002/A3 rejects number description without mutation
133
+ not ok 17 - UC-001 BR-002/A3 rejects number description without mutation
134
+ ---
135
+ duration_ms: 0.091792
136
+ type: 'test'
137
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'
138
+ failureType: 'testCodeFailure'
139
+ error: 'Missing expected exception (TypeError).'
140
+ code: 'ERR_ASSERTION'
141
+ name: 'AssertionError'
142
+ expected:
143
+ name: 'TypeError'
144
+ message: 'Description must be a string'
145
+ operator: 'throws'
146
+ stack: |-
147
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)
148
+ Test.runInAsyncScope (node:async_hooks:214:14)
149
+ Test.run (node:internal/test_runner/test:1047:25)
150
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
151
+ Test.postRun (node:internal/test_runner/test:1173:19)
152
+ Test.run (node:internal/test_runner/test:1101:12)
153
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
154
+ ...
155
+ # Subtest: UC-001 BR-002/A3 rejects array description without mutation
156
+ not ok 18 - UC-001 BR-002/A3 rejects array description without mutation
157
+ ---
158
+ duration_ms: 0.044666
159
+ type: 'test'
160
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'
161
+ failureType: 'testCodeFailure'
162
+ error: 'Missing expected exception (TypeError).'
163
+ code: 'ERR_ASSERTION'
164
+ name: 'AssertionError'
165
+ expected:
166
+ name: 'TypeError'
167
+ message: 'Description must be a string'
168
+ operator: 'throws'
169
+ stack: |-
170
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)
171
+ Test.runInAsyncScope (node:async_hooks:214:14)
172
+ Test.run (node:internal/test_runner/test:1047:25)
173
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
174
+ Test.postRun (node:internal/test_runner/test:1173:19)
175
+ Test.run (node:internal/test_runner/test:1101:12)
176
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
177
+ ...
178
+ # Subtest: UC-001 BR-002/A3 rejects object description without mutation
179
+ not ok 19 - UC-001 BR-002/A3 rejects object description without mutation
180
+ ---
181
+ duration_ms: 0.041917
182
+ type: 'test'
183
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:84:3'
184
+ failureType: 'testCodeFailure'
185
+ error: 'Missing expected exception (TypeError).'
186
+ code: 'ERR_ASSERTION'
187
+ name: 'AssertionError'
188
+ expected:
189
+ name: 'TypeError'
190
+ message: 'Description must be a string'
191
+ operator: 'throws'
192
+ stack: |-
193
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:88:12)
194
+ Test.runInAsyncScope (node:async_hooks:214:14)
195
+ Test.run (node:internal/test_runner/test:1047:25)
196
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
197
+ Test.postRun (node:internal/test_runner/test:1173:19)
198
+ Test.run (node:internal/test_runner/test:1101:12)
199
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
200
+ ...
201
+ # Subtest: UC-001 BR-002 normalizes omitted optional description to empty string
202
+ ok 20 - UC-001 BR-002 normalizes omitted optional description to empty string
203
+ ---
204
+ duration_ms: 0.0385
205
+ type: 'test'
206
+ ...
207
+ # Subtest: UC-001 BR-002 normalizes null optional description to empty string
208
+ not ok 21 - UC-001 BR-002 normalizes null optional description to empty string
209
+ ---
210
+ duration_ms: 0.185917
211
+ type: 'test'
212
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:96:3'
213
+ failureType: 'testCodeFailure'
214
+ error: |-
215
+ Expected values to be strictly equal:
216
+
217
+ null !== ''
218
+
219
+ code: 'ERR_ASSERTION'
220
+ name: 'AssertionError'
221
+ expected: ''
222
+ actual: ~
223
+ operator: 'strictEqual'
224
+ stack: |-
225
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:101:12)
226
+ Test.runInAsyncScope (node:async_hooks:214:14)
227
+ Test.run (node:internal/test_runner/test:1047:25)
228
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
229
+ Test.postRun (node:internal/test_runner/test:1173:19)
230
+ Test.run (node:internal/test_runner/test:1101:12)
231
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
232
+ ...
233
+ # Subtest: UC-001 BR-002 normalizes empty optional description to empty string
234
+ ok 22 - UC-001 BR-002 normalizes empty optional description to empty string
235
+ ---
236
+ duration_ms: 0.029083
237
+ type: 'test'
238
+ ...
239
+ # Subtest: TC-002 service slice corrects 201 to 200 and preserves earlier records
240
+ not ok 23 - TC-002 service slice corrects 201 to 200 and preserves earlier records
241
+ ---
242
+ duration_ms: 0.061167
243
+ type: 'test'
244
+ location: '/private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:106:1'
245
+ failureType: 'testCodeFailure'
246
+ error: 'Missing expected exception (RangeError).'
247
+ code: 'ERR_ASSERTION'
248
+ name: 'AssertionError'
249
+ stack: |-
250
+ TestContext.<anonymous> (file:///private/tmp/aiwf-uc001-pilot-l07zou4o/project/tests/expense.test.mjs:110:10)
251
+ Test.runInAsyncScope (node:async_hooks:214:14)
252
+ Test.run (node:internal/test_runner/test:1047:25)
253
+ Test.processPendingSubtests (node:internal/test_runner/test:744:18)
254
+ Test.postRun (node:internal/test_runner/test:1173:19)
255
+ Test.run (node:internal/test_runner/test:1101:12)
256
+ async Test.processPendingSubtests (node:internal/test_runner/test:744:7)
257
+ ...
258
+ 1..23
259
+ # tests 23
260
+ # suites 0
261
+ # pass 16
262
+ # fail 7
263
+ # cancelled 0
264
+ # skipped 0
265
+ # todo 0
266
+ # duration_ms 39.162833
@@ -0,0 +1,9 @@
1
+ {
2
+ "findings": [],
3
+ "summary": {
4
+ "errors": 0,
5
+ "warnings": 0,
6
+ "infos": 0,
7
+ "suppressed": 0
8
+ }
9
+ }