gennady 0.8.3 → 0.8.4-draft.2

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 (2907) hide show
  1. package/README.md +212 -3
  2. package/ai/directives/agent-inbox/arch-interrogation.directive.xml +387 -0
  3. package/ai/directives/agent-inbox/change-interrogation.directive.xml +107 -0
  4. package/ai/directives/agent-inbox/code-interrogation.directive.xml +54 -0
  5. package/ai/directives/agent-inbox/contract-interrogation.directive.xml +93 -0
  6. package/ai/directives/agent-inbox/golden-chat-output.example.md +176 -0
  7. package/ai/directives/agent-inbox/inbox-flow.directive.xml +588 -0
  8. package/ai/directives/agent-inbox/posting-rules.directive.xml +260 -0
  9. package/ai/directives/agent-inbox/security-interrogation.directive.xml +108 -0
  10. package/ai/directives/agent-inbox/update-review.directive.xml +136 -0
  11. package/ai/directives/agent-inbox/visual-vocabulary.directive.xml +188 -0
  12. package/ai/directives/coding/result-conventions.xml +4 -4
  13. package/ai/directives/coding/svelte5-runes.xml +30 -30
  14. package/ai/directives/coding/sveltekit-rules.xml +27 -27
  15. package/ai/directives/coding/typescript-rules.xml +50 -50
  16. package/ai/directives/coding/uikit-component-storybook.xml +32 -32
  17. package/ai/directives/coding/uikit-component-svelte.xml +35 -35
  18. package/ai/directives/coding/uikit-spec-drafting.xml +22 -22
  19. package/ai/directives/infra/eslint-setup.xml +29 -29
  20. package/ai/directives/infra/git-setup.xml +25 -25
  21. package/ai/directives/infra/nodejs-npm-setup.xml +36 -36
  22. package/ai/directives/infra/storybook-setup.xml +22 -22
  23. package/ai/directives/knowledge.xml +0 -46
  24. package/ai/directives/sdd-v2/agent-inbox/code-lens.directive.xml +108 -0
  25. package/ai/directives/sdd-v2/agent-inbox/enrich.directive.xml +222 -0
  26. package/ai/directives/sdd-v2/agent-inbox/security-lens.directive.xml +161 -0
  27. package/ai/directives/sdd-v2/agent-inbox/synthesize.directive.xml +113 -0
  28. package/ai/directives/sdd-v2/agent-inbox/track-review.directive.xml +439 -0
  29. package/ai/directives/sdd-v2/amplify-nfr.directive.xml +93 -0
  30. package/ai/directives/sdd-v2/amplify-observability.directive.xml +98 -0
  31. package/ai/directives/sdd-v2/amplify-security.directive.xml +104 -0
  32. package/ai/directives/sdd-v2/amplify-storage.directive.xml +95 -0
  33. package/ai/directives/sdd-v2/audit.directive.xml +473 -0
  34. package/ai/directives/sdd-v2/code-review.directive.xml +260 -0
  35. package/ai/directives/sdd-v2/compression.directive.xml +214 -0
  36. package/ai/directives/sdd-v2/critic-protocol.directive.xml +210 -0
  37. package/ai/directives/sdd-v2/critic.directive.xml +210 -0
  38. package/ai/directives/sdd-v2/discover-from-code.directive.xml +173 -0
  39. package/ai/directives/sdd-v2/execute.directive.xml +337 -0
  40. package/ai/directives/sdd-v2/formats/audit-round.xml +37 -0
  41. package/ai/directives/sdd-v2/formats/change-manifest.xml +30 -0
  42. package/ai/directives/sdd-v2/formats/dbc-contracts.xml +59 -0
  43. package/ai/directives/sdd-v2/formats/diagram-vocabulary.xml +181 -0
  44. package/ai/directives/sdd-v2/formats/entity-inventory-format.xml +17 -0
  45. package/ai/directives/sdd-v2/formats/entity-surface-format.xml +24 -0
  46. package/ai/directives/sdd-v2/formats/infra-base-minimal-spec.xml +22 -0
  47. package/ai/directives/sdd-v2/formats/infrastructure-spec-structure.xml +121 -0
  48. package/ai/directives/sdd-v2/formats/interface-spec-structure.xml +91 -0
  49. package/ai/directives/sdd-v2/formats/library-spec-structure.xml +100 -0
  50. package/ai/directives/sdd-v2/formats/module-map-update.xml +33 -0
  51. package/ai/directives/sdd-v2/formats/module-spec-structure.xml +150 -0
  52. package/ai/directives/sdd-v2/formats/module-tasks-index.xml +30 -0
  53. package/ai/directives/sdd-v2/formats/nfr-budgets-format.xml +21 -0
  54. package/ai/directives/sdd-v2/formats/pivot-formats.xml +27 -0
  55. package/ai/directives/sdd-v2/formats/portal-structure.xml +29 -0
  56. package/ai/directives/sdd-v2/formats/product-spec-structure.xml +109 -0
  57. package/ai/directives/sdd-v2/formats/project-tasks-index.xml +36 -0
  58. package/ai/directives/sdd-v2/formats/scope-tasks-index.xml +35 -0
  59. package/ai/directives/sdd-v2/formats/security-section-format.xml +26 -0
  60. package/ai/directives/sdd-v2/formats/task-ticket-structure.xml +125 -0
  61. package/ai/directives/sdd-v2/guides/project-setup.md +41 -0
  62. package/ai/directives/sdd-v2/guides/v1-to-v2-migration.md +104 -0
  63. package/ai/directives/sdd-v2/infra.directive.xml +331 -0
  64. package/ai/directives/sdd-v2/interface.directive.xml +277 -0
  65. package/ai/directives/sdd-v2/interview-protocol.directive.xml +284 -0
  66. package/ai/directives/sdd-v2/migration-v1-v2.directive.xml +472 -0
  67. package/ai/directives/sdd-v2/module.directive.xml +462 -0
  68. package/ai/directives/sdd-v2/phase-execution-protocol.directive.xml +460 -0
  69. package/ai/directives/sdd-v2/readiness.directive.xml +303 -0
  70. package/ai/directives/sdd-v2/reconcile.directive.xml +405 -0
  71. package/ai/directives/sdd-v2/recover-from-code.directive.xml +174 -0
  72. package/ai/directives/sdd-v2/review-lifecycle.directive.xml +108 -0
  73. package/ai/directives/sdd-v2/root.directive.xml +217 -0
  74. package/ai/directives/sdd-v2/router.directive.xml +384 -0
  75. package/ai/directives/sdd-v2/scaffold.directive.xml +513 -0
  76. package/ai/directives/sdd-v2/scope.directive.xml +421 -0
  77. package/ai/directives/testing/common.xml +42 -7
  78. package/ai/directives/testing/node-test.xml +33 -23
  79. package/ai/directives/testing/playwright-cli.xml +29 -29
  80. package/ai/directives/testing/playwright-e2e.xml +29 -29
  81. package/ai/directives/testing/storybook-usage.xml +27 -27
  82. package/ai/directives/testing/svelte-testing.xml +27 -27
  83. package/ai/directives/testing/vitest-rules.xml +25 -25
  84. package/ai/flow-sim/PROTOCOL.md +159 -0
  85. package/ai/flow-sim/README.md +39 -0
  86. package/ai/flow-sim/scenarios/S1-route-new-scope.md +107 -0
  87. package/ai/flow-sim/scenarios/S10-multi-scope-route.md +213 -0
  88. package/ai/flow-sim/scenarios/S11-migration-full.md +501 -0
  89. package/ai/flow-sim/scenarios/S2-preflight-migration.md +129 -0
  90. package/ai/flow-sim/scenarios/S3-preflight-carveout.md +141 -0
  91. package/ai/flow-sim/scenarios/S4-discover.md +112 -0
  92. package/ai/flow-sim/scenarios/S5-recover.md +154 -0
  93. package/ai/flow-sim/scenarios/S6-scaffold-ticket.md +283 -0
  94. package/ai/flow-sim/scenarios/S7-execute-lifecycle.md +750 -0
  95. package/ai/flow-sim/scenarios/S8-reconcile-trivial.md +696 -0
  96. package/ai/flow-sim/scenarios/S9-reconcile-from-code.md +669 -0
  97. package/ai/inspector/README.md +40 -0
  98. package/ai/inspector/core/__tests__/parse-directive.test.ts +155 -0
  99. package/ai/inspector/core/__tests__/parse-skill.test.ts +80 -0
  100. package/ai/inspector/core/model.ts +37 -0
  101. package/ai/inspector/core/parse-directive.ts +181 -0
  102. package/ai/inspector/core/parse-skill.ts +89 -0
  103. package/ai/inspector/core/resolve.ts +53 -0
  104. package/ai/inspector/core/scan.ts +109 -0
  105. package/ai/inspector/e2e/inspector.spec.ts +117 -0
  106. package/ai/inspector/generate.ts +154 -0
  107. package/ai/inspector/playwright.config.ts +20 -0
  108. package/ai/inspector/serve.ts +30 -0
  109. package/ai/inspector/web/__tests__/debug.test.ts +173 -0
  110. package/ai/inspector/web/__tests__/markdown.test.ts +185 -0
  111. package/ai/inspector/web/app.js +324 -0
  112. package/ai/inspector/web/debug.js +202 -0
  113. package/ai/inspector/web/index.html +38 -0
  114. package/ai/inspector/web/markdown.js +85 -0
  115. package/ai/inspector/web/styles.css +569 -0
  116. package/ai/kit/AUTHORING.md +121 -0
  117. package/ai/kit/__tests__/deps.test.ts +61 -0
  118. package/ai/kit/__tests__/lint-axioms.test.ts +192 -0
  119. package/ai/kit/__tests__/render.test.ts +192 -0
  120. package/ai/kit/__tests__/skeleton-parity.test.ts +50 -0
  121. package/ai/kit/anti-pattern/coding/AP_FALSE_PRIVATE_AND_ENUM.xml +27 -0
  122. package/ai/kit/anti-pattern/coding/AP_OVEREDIT.xml +2 -0
  123. package/ai/kit/anti-pattern/coding/ap-builtin-without-prefix.xml +6 -0
  124. package/ai/kit/anti-pattern/coding/ap-false-private-and-enum.xml +27 -0
  125. package/ai/kit/anti-pattern/coding/ap-mixed-module-system.xml +6 -0
  126. package/ai/kit/anti-pattern/coding/ap-overedit.xml +2 -0
  127. package/ai/kit/anti-pattern/coding/ap-redundant-jsdoc-duplication.xml +19 -0
  128. package/ai/kit/anti-pattern/critic/AP_CERTAINTY.xml +2 -0
  129. package/ai/kit/anti-pattern/critic/AP_CREEP.xml +2 -0
  130. package/ai/kit/anti-pattern/critic/AP_DISMISS_CONFUSION.xml +2 -0
  131. package/ai/kit/anti-pattern/critic/AP_EDIT.xml +2 -0
  132. package/ai/kit/anti-pattern/critic/AP_FORMAT_BIAS.xml +2 -0
  133. package/ai/kit/anti-pattern/critic/AP_INTERNAL_PARANOIA.xml +2 -0
  134. package/ai/kit/anti-pattern/critic/AP_NITPICK.xml +2 -0
  135. package/ai/kit/anti-pattern/critic/AP_REUSE_BLIND.xml +2 -0
  136. package/ai/kit/anti-pattern/critic/AP_SELF_CRITIQUE.xml +2 -0
  137. package/ai/kit/anti-pattern/critic/AP_SURFACE.xml +2 -0
  138. package/ai/kit/anti-pattern/critic/ap-certainty.xml +2 -0
  139. package/ai/kit/anti-pattern/critic/ap-creep.xml +2 -0
  140. package/ai/kit/anti-pattern/critic/ap-dismiss-confusion.xml +2 -0
  141. package/ai/kit/anti-pattern/critic/ap-edit.xml +2 -0
  142. package/ai/kit/anti-pattern/critic/ap-format-bias.xml +2 -0
  143. package/ai/kit/anti-pattern/critic/ap-internal-paranoia.xml +2 -0
  144. package/ai/kit/anti-pattern/critic/ap-nitpick.xml +2 -0
  145. package/ai/kit/anti-pattern/critic/ap-reuse-blind.xml +2 -0
  146. package/ai/kit/anti-pattern/critic/ap-self-critique.xml +2 -0
  147. package/ai/kit/anti-pattern/critic/ap-surface.xml +2 -0
  148. package/ai/kit/anti-pattern/e2e/AP_CLI_AUTO_UPDATE_SNAPSHOTS.xml +6 -0
  149. package/ai/kit/anti-pattern/e2e/AP_CLI_CSS_XPATH_FROM_CODEGEN.xml +6 -0
  150. package/ai/kit/anti-pattern/e2e/AP_CLI_HEADED_FOR_AGENT.xml +6 -0
  151. package/ai/kit/anti-pattern/e2e/AP_CLI_SKIP_TRACE_ON_FAILURE.xml +6 -0
  152. package/ai/kit/anti-pattern/e2e/AP_CLI_WRITE_TEST_WITHOUT_AX_TREE.xml +6 -0
  153. package/ai/kit/anti-pattern/e2e/AP_E2E_CSS_LOCATOR.xml +6 -0
  154. package/ai/kit/anti-pattern/e2e/AP_E2E_FULL_PAGE_SNAPSHOT.xml +6 -0
  155. package/ai/kit/anti-pattern/e2e/AP_E2E_INLINE_LOGIN.xml +6 -0
  156. package/ai/kit/anti-pattern/e2e/AP_E2E_STANDALONE_POM.xml +6 -0
  157. package/ai/kit/anti-pattern/e2e/AP_E2E_UNMOCKED_NETWORK.xml +6 -0
  158. package/ai/kit/anti-pattern/e2e/ap-cli-auto-update-snapshots.xml +6 -0
  159. package/ai/kit/anti-pattern/e2e/ap-cli-css-xpath-from-codegen.xml +6 -0
  160. package/ai/kit/anti-pattern/e2e/ap-cli-headed-for-agent.xml +6 -0
  161. package/ai/kit/anti-pattern/e2e/ap-cli-skip-trace-on-failure.xml +6 -0
  162. package/ai/kit/anti-pattern/e2e/ap-cli-write-test-without-ax-tree.xml +6 -0
  163. package/ai/kit/anti-pattern/e2e/ap-e2e-css-locator.xml +6 -0
  164. package/ai/kit/anti-pattern/e2e/ap-e2e-full-page-snapshot.xml +6 -0
  165. package/ai/kit/anti-pattern/e2e/ap-e2e-inline-login.xml +6 -0
  166. package/ai/kit/anti-pattern/e2e/ap-e2e-standalone-pom.xml +6 -0
  167. package/ai/kit/anti-pattern/e2e/ap-e2e-unmocked-network.xml +6 -0
  168. package/ai/kit/anti-pattern/infra/AP_AGENT_DISABLE_COMMENT.xml +6 -0
  169. package/ai/kit/anti-pattern/infra/AP_FORCE_PUSH_TO_MAIN.xml +6 -0
  170. package/ai/kit/anti-pattern/infra/AP_FORMATTING_DUPLICATION.xml +6 -0
  171. package/ai/kit/anti-pattern/infra/AP_LIGHTWEIGHT_TAG.xml +6 -0
  172. package/ai/kit/anti-pattern/infra/AP_MULTIPLE_LOCK_FILES.xml +6 -0
  173. package/ai/kit/anti-pattern/infra/AP_NODE_MODULES_COMMITTED.xml +6 -0
  174. package/ai/kit/anti-pattern/infra/AP_NO_VERIFY_AS_HABIT.xml +6 -0
  175. package/ai/kit/anti-pattern/infra/AP_NVMRC_ENGINES_MISMATCH.xml +6 -0
  176. package/ai/kit/anti-pattern/infra/AP_NVMRC_RANGE.xml +6 -0
  177. package/ai/kit/anti-pattern/infra/AP_SECRET_IN_HISTORY.xml +6 -0
  178. package/ai/kit/anti-pattern/infra/AP_TYPE_AWARE_DUPLICATION.xml +6 -0
  179. package/ai/kit/anti-pattern/infra/AP_UNMOTIVATED_NON_AUTOFIX_RULE.xml +6 -0
  180. package/ai/kit/anti-pattern/infra/AP_WARN_LEVEL_USAGE.xml +6 -0
  181. package/ai/kit/anti-pattern/infra/ap-agent-disable-comment.xml +6 -0
  182. package/ai/kit/anti-pattern/infra/ap-force-push-to-main.xml +6 -0
  183. package/ai/kit/anti-pattern/infra/ap-formatting-duplication.xml +6 -0
  184. package/ai/kit/anti-pattern/infra/ap-lightweight-tag.xml +6 -0
  185. package/ai/kit/anti-pattern/infra/ap-multiple-lock-files.xml +6 -0
  186. package/ai/kit/anti-pattern/infra/ap-no-verify-as-habit.xml +6 -0
  187. package/ai/kit/anti-pattern/infra/ap-node-modules-committed.xml +6 -0
  188. package/ai/kit/anti-pattern/infra/ap-npmrc-absent.xml +6 -0
  189. package/ai/kit/anti-pattern/infra/ap-nvmrc-engines-mismatch.xml +6 -0
  190. package/ai/kit/anti-pattern/infra/ap-nvmrc-range.xml +6 -0
  191. package/ai/kit/anti-pattern/infra/ap-secret-in-history.xml +6 -0
  192. package/ai/kit/anti-pattern/infra/ap-tool-range-pin.xml +6 -0
  193. package/ai/kit/anti-pattern/infra/ap-type-aware-duplication.xml +6 -0
  194. package/ai/kit/anti-pattern/infra/ap-unmotivated-non-autofix-rule.xml +6 -0
  195. package/ai/kit/anti-pattern/infra/ap-warn-level-usage.xml +6 -0
  196. package/ai/kit/anti-pattern/logging/AP_BARE_CONSOLE_AND_LOST_CAUSE.xml +32 -0
  197. package/ai/kit/anti-pattern/logging/ap-bare-console-and-lost-cause.xml +32 -0
  198. package/ai/kit/anti-pattern/process/AP_NO_RE_DISPATCH.xml +2 -0
  199. package/ai/kit/anti-pattern/process/AP_SPIN.xml +2 -0
  200. package/ai/kit/anti-pattern/process/AP_VAGUE_REJECT.xml +2 -0
  201. package/ai/kit/anti-pattern/process/ap-no-re-dispatch.xml +2 -0
  202. package/ai/kit/anti-pattern/process/ap-spin.xml +2 -0
  203. package/ai/kit/anti-pattern/process/ap-vague-reject.xml +2 -0
  204. package/ai/kit/anti-pattern/spec/AP_ENTITY_SPRAWL.xml +2 -0
  205. package/ai/kit/anti-pattern/spec/ap-entity-sprawl.xml +2 -0
  206. package/ai/kit/anti-pattern/storybook/AP_ADHOC_HIERARCHY.xml +6 -0
  207. package/ai/kit/anti-pattern/storybook/AP_MISSING_PLAY.xml +6 -0
  208. package/ai/kit/anti-pattern/storybook/AP_MULTIPLE_CONCEPTS_ONE_STORY.xml +6 -0
  209. package/ai/kit/anti-pattern/storybook/AP_RESTATED_ARGS.xml +6 -0
  210. package/ai/kit/anti-pattern/storybook/AP_SB_AGENTS_MD_SKIPPED.xml +6 -0
  211. package/ai/kit/anti-pattern/storybook/AP_SB_HALLUCINATED_PROPS.xml +6 -0
  212. package/ai/kit/anti-pattern/storybook/AP_SB_MANUAL_SCAFFOLD_BEFORE_INIT.xml +6 -0
  213. package/ai/kit/anti-pattern/storybook/AP_SB_MISSING_AI_TAG.xml +6 -0
  214. package/ai/kit/anti-pattern/storybook/AP_SB_MISSING_PLAY_ON_INTERACTION.xml +6 -0
  215. package/ai/kit/anti-pattern/storybook/AP_SB_NO_MCP_INTEGRATION.xml +6 -0
  216. package/ai/kit/anti-pattern/storybook/AP_SB_REWRITE_INSTEAD_OF_COMPOSE.xml +6 -0
  217. package/ai/kit/anti-pattern/storybook/AP_SB_SKIP_SELF_VERIFY.xml +6 -0
  218. package/ai/kit/anti-pattern/storybook/AP_SB_VERIFY_SKIPPED.xml +6 -0
  219. package/ai/kit/anti-pattern/storybook/ap-adhoc-hierarchy.xml +6 -0
  220. package/ai/kit/anti-pattern/storybook/ap-missing-play.xml +6 -0
  221. package/ai/kit/anti-pattern/storybook/ap-multiple-concepts-one-story.xml +6 -0
  222. package/ai/kit/anti-pattern/storybook/ap-restated-args.xml +6 -0
  223. package/ai/kit/anti-pattern/storybook/ap-sb-agents-md-skipped.xml +6 -0
  224. package/ai/kit/anti-pattern/storybook/ap-sb-hallucinated-props.xml +6 -0
  225. package/ai/kit/anti-pattern/storybook/ap-sb-manual-scaffold-before-init.xml +6 -0
  226. package/ai/kit/anti-pattern/storybook/ap-sb-missing-ai-tag.xml +6 -0
  227. package/ai/kit/anti-pattern/storybook/ap-sb-missing-play-on-interaction.xml +6 -0
  228. package/ai/kit/anti-pattern/storybook/ap-sb-no-mcp-integration.xml +6 -0
  229. package/ai/kit/anti-pattern/storybook/ap-sb-rewrite-instead-of-compose.xml +6 -0
  230. package/ai/kit/anti-pattern/storybook/ap-sb-skip-self-verify.xml +6 -0
  231. package/ai/kit/anti-pattern/storybook/ap-sb-verify-skipped.xml +6 -0
  232. package/ai/kit/anti-pattern/svelte/AP_DERIVED_WITH_SIDE_EFFECT.xml +6 -0
  233. package/ai/kit/anti-pattern/svelte/AP_EFFECT_WITHOUT_TEARDOWN.xml +6 -0
  234. package/ai/kit/anti-pattern/svelte/AP_EXPORT_LET_LEGACY.xml +6 -0
  235. package/ai/kit/anti-pattern/svelte/AP_ON_EVENT_DIRECTIVE.xml +6 -0
  236. package/ai/kit/anti-pattern/svelte/AP_REACTIVE_DOLLAR_COLON.xml +6 -0
  237. package/ai/kit/anti-pattern/svelte/AP_RUNES_IN_PLAIN_TS.xml +6 -0
  238. package/ai/kit/anti-pattern/svelte/AP_SK_COMPONENT_FETCH_FOR_INITIAL_DATA.xml +6 -0
  239. package/ai/kit/anti-pattern/svelte/AP_SK_GLOBAL_FETCH_IN_LOAD.xml +6 -0
  240. package/ai/kit/anti-pattern/svelte/AP_SK_PAGE_OPTIONS_GLOBALIZED.xml +6 -0
  241. package/ai/kit/anti-pattern/svelte/AP_SK_PRIVATE_ENV_IN_CLIENT.xml +6 -0
  242. package/ai/kit/anti-pattern/svelte/AP_SK_THROW_INSTEAD_OF_FAIL.xml +6 -0
  243. package/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_DIRECT_QUERYSELECTOR.xml +6 -0
  244. package/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_NO_CLEANUP.xml +6 -0
  245. package/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_NO_EFFECT_ROOT.xml +6 -0
  246. package/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_NO_FLUSH.xml +6 -0
  247. package/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_PLAIN_TS_EXTENSION.xml +6 -0
  248. package/ai/kit/anti-pattern/svelte/ap-derived-with-side-effect.xml +6 -0
  249. package/ai/kit/anti-pattern/svelte/ap-effect-without-teardown.xml +6 -0
  250. package/ai/kit/anti-pattern/svelte/ap-export-let-legacy.xml +6 -0
  251. package/ai/kit/anti-pattern/svelte/ap-on-event-directive.xml +6 -0
  252. package/ai/kit/anti-pattern/svelte/ap-reactive-dollar-colon.xml +6 -0
  253. package/ai/kit/anti-pattern/svelte/ap-runes-in-plain-ts.xml +6 -0
  254. package/ai/kit/anti-pattern/svelte/ap-sk-component-fetch-for-initial-data.xml +6 -0
  255. package/ai/kit/anti-pattern/svelte/ap-sk-global-fetch-in-load.xml +6 -0
  256. package/ai/kit/anti-pattern/svelte/ap-sk-page-options-globalized.xml +6 -0
  257. package/ai/kit/anti-pattern/svelte/ap-sk-private-env-in-client.xml +6 -0
  258. package/ai/kit/anti-pattern/svelte/ap-sk-throw-instead-of-fail.xml +6 -0
  259. package/ai/kit/anti-pattern/svelte/ap-svelte-test-direct-queryselector.xml +6 -0
  260. package/ai/kit/anti-pattern/svelte/ap-svelte-test-no-cleanup.xml +6 -0
  261. package/ai/kit/anti-pattern/svelte/ap-svelte-test-no-effect-root.xml +6 -0
  262. package/ai/kit/anti-pattern/svelte/ap-svelte-test-no-flush.xml +6 -0
  263. package/ai/kit/anti-pattern/svelte/ap-svelte-test-plain-ts-extension.xml +6 -0
  264. package/ai/kit/anti-pattern/testing/AP_ATOMIC_NOISE_ANCHORS.xml +20 -0
  265. package/ai/kit/anti-pattern/testing/AP_BEFORE_EACH_LET_PILEUP.xml +6 -0
  266. package/ai/kit/anti-pattern/testing/AP_CONTAINS_ON_ERROR_AND_PRIVATE_INSPECTION.xml +6 -0
  267. package/ai/kit/anti-pattern/testing/AP_DUPLICATE_BDD_GROUP.xml +6 -0
  268. package/ai/kit/anti-pattern/testing/AP_LEAKED_LIFECYCLE_AND_GLOBAL_RELIANCE.xml +6 -0
  269. package/ai/kit/anti-pattern/testing/AP_PARALLEL_FACTORIES.xml +6 -0
  270. package/ai/kit/anti-pattern/testing/AP_PRIVATE_INSPECTION.xml +6 -0
  271. package/ai/kit/anti-pattern/testing/AP_SHARED_MUTABLE_STATE_AND_NON_ENGLISH_NARRATION.xml +6 -0
  272. package/ai/kit/anti-pattern/testing/AP_SKIP_INSTEAD_OF_FIX.xml +6 -0
  273. package/ai/kit/anti-pattern/testing/AP_SNAPSHOT_FOR_SCALAR.xml +6 -0
  274. package/ai/kit/anti-pattern/testing/AP_TRY_CATCH_FLAG_ANTIPATTERN.xml +6 -0
  275. package/ai/kit/anti-pattern/testing/AP_UNJUSTIFIED_VI_MOCK.xml +6 -0
  276. package/ai/kit/anti-pattern/testing/ap-atomic-noise-anchors.xml +20 -0
  277. package/ai/kit/anti-pattern/testing/ap-before-each-let-pileup.xml +6 -0
  278. package/ai/kit/anti-pattern/testing/ap-contains-on-error-and-private-inspection.xml +6 -0
  279. package/ai/kit/anti-pattern/testing/ap-duplicate-bdd-group.xml +6 -0
  280. package/ai/kit/anti-pattern/testing/ap-leaked-lifecycle-and-global-reliance.xml +6 -0
  281. package/ai/kit/anti-pattern/testing/ap-parallel-factories.xml +6 -0
  282. package/ai/kit/anti-pattern/testing/ap-private-inspection.xml +6 -0
  283. package/ai/kit/anti-pattern/testing/ap-shared-mutable-state-and-non-english-narration.xml +6 -0
  284. package/ai/kit/anti-pattern/testing/ap-skip-instead-of-fix.xml +6 -0
  285. package/ai/kit/anti-pattern/testing/ap-snapshot-for-scalar.xml +6 -0
  286. package/ai/kit/anti-pattern/testing/ap-try-catch-flag-antipattern.xml +6 -0
  287. package/ai/kit/anti-pattern/testing/ap-unjustified-vi-mock.xml +6 -0
  288. package/ai/kit/anti-pattern/uikit/AP_DROPPED_VARIANTS.xml +6 -0
  289. package/ai/kit/anti-pattern/uikit/AP_FABRICATED_MEASUREMENTS.xml +6 -0
  290. package/ai/kit/anti-pattern/uikit/AP_HARDCODED_PIXELS.xml +6 -0
  291. package/ai/kit/anti-pattern/uikit/AP_HOST_SELECTOR.xml +6 -0
  292. package/ai/kit/anti-pattern/uikit/AP_IMG_TAG_ICON.xml +6 -0
  293. package/ai/kit/anti-pattern/uikit/AP_MISSING_A11Y_AUDIT.xml +6 -0
  294. package/ai/kit/anti-pattern/uikit/AP_MISSING_ARIA.xml +6 -0
  295. package/ai/kit/anti-pattern/uikit/AP_MISSING_DATA_STATE.xml +6 -0
  296. package/ai/kit/anti-pattern/uikit/AP_OVERRIDE_WITHOUT_COMMENT.xml +6 -0
  297. package/ai/kit/anti-pattern/uikit/AP_PASCAL_CASE_FILENAME.xml +6 -0
  298. package/ai/kit/anti-pattern/uikit/AP_SILENT_MISSING_TOKEN.xml +6 -0
  299. package/ai/kit/anti-pattern/uikit/ap-dropped-variants.xml +6 -0
  300. package/ai/kit/anti-pattern/uikit/ap-fabricated-measurements.xml +6 -0
  301. package/ai/kit/anti-pattern/uikit/ap-hardcoded-pixels.xml +6 -0
  302. package/ai/kit/anti-pattern/uikit/ap-host-selector.xml +6 -0
  303. package/ai/kit/anti-pattern/uikit/ap-img-tag-icon.xml +6 -0
  304. package/ai/kit/anti-pattern/uikit/ap-missing-a11y-audit.xml +6 -0
  305. package/ai/kit/anti-pattern/uikit/ap-missing-aria.xml +6 -0
  306. package/ai/kit/anti-pattern/uikit/ap-missing-data-state.xml +6 -0
  307. package/ai/kit/anti-pattern/uikit/ap-override-without-comment.xml +6 -0
  308. package/ai/kit/anti-pattern/uikit/ap-pascal-case-filename.xml +6 -0
  309. package/ai/kit/anti-pattern/uikit/ap-silent-missing-token.xml +6 -0
  310. package/ai/kit/axiom/agent-inbox/ax-complexity-budget.xml +9 -0
  311. package/ai/kit/axiom/agent-inbox/ax-minimal-change-suspicion.xml +9 -0
  312. package/ai/kit/axiom/agent-inbox/ax-review-purpose.xml +10 -0
  313. package/ai/kit/axiom/agent-inbox/ax-simpler-alternative.xml +9 -0
  314. package/ai/kit/axiom/audit/ax-audit-modes.xml +6 -0
  315. package/ai/kit/axiom/audit/ax-audit-reads-code.xml +11 -0
  316. package/ai/kit/axiom/audit/ax-bdd-coverage-verification.xml +8 -0
  317. package/ai/kit/axiom/audit/ax-closed-world-primary-check.xml +4 -0
  318. package/ai/kit/axiom/audit/ax-completeness-check.xml +6 -0
  319. package/ai/kit/axiom/audit/ax-drift-taxonomy.xml +21 -0
  320. package/ai/kit/axiom/audit/ax-ephemeral-output.xml +8 -0
  321. package/ai/kit/axiom/audit/ax-execution-log-verification.xml +6 -0
  322. package/ai/kit/axiom/audit/ax-finding-routing.xml +22 -0
  323. package/ai/kit/axiom/audit/ax-findings-as-proposals.xml +7 -0
  324. package/ai/kit/axiom/audit/ax-git-diff-scan.xml +11 -0
  325. package/ai/kit/axiom/audit/ax-insight-backflow-capture.xml +10 -0
  326. package/ai/kit/axiom/audit/ax-learning-context.xml +2 -0
  327. package/ai/kit/axiom/audit/ax-mechanical-via-sdd-check.xml +9 -0
  328. package/ai/kit/axiom/audit/ax-neutral-findings.xml +4 -0
  329. package/ai/kit/axiom/audit/ax-no-auto-fix.xml +4 -0
  330. package/ai/kit/axiom/audit/ax-provenance-is-a-product.xml +2 -0
  331. package/ai/kit/axiom/audit/ax-reopen-rounds-in-ticket.xml +10 -0
  332. package/ai/kit/axiom/audit/ax-rules-cascade-verification.xml +17 -0
  333. package/ai/kit/axiom/audit/ax-rules-compliance-against-activated-rules.xml +22 -0
  334. package/ai/kit/axiom/audit/ax-runtime-backing-verification.xml +8 -0
  335. package/ai/kit/axiom/audit/ax-severity-tagging.xml +13 -0
  336. package/ai/kit/axiom/audit/ax-severity.xml +7 -0
  337. package/ai/kit/axiom/audit/ax-stale-after-pivot-verification.xml +12 -0
  338. package/ai/kit/axiom/audit/ax-task-id-integrity.xml +13 -0
  339. package/ai/kit/axiom/boundary/ax-bootstrap-narrow-read.xml +6 -0
  340. package/ai/kit/axiom/boundary/ax-closed-world-inventory.xml +4 -0
  341. package/ai/kit/axiom/boundary/ax-cross-scope-dependencies.xml +4 -0
  342. package/ai/kit/axiom/boundary/ax-entity-surface-completeness.xml +4 -0
  343. package/ai/kit/axiom/boundary/ax-guarded-result-boundary.xml +5 -0
  344. package/ai/kit/axiom/boundary/ax-isolation-signal.xml +2 -0
  345. package/ai/kit/axiom/boundary/ax-isolation-through-public-boundary.xml +4 -0
  346. package/ai/kit/axiom/boundary/ax-portal-read-only-with-placeholder-exception.xml +4 -0
  347. package/ai/kit/axiom/boundary/ax-reference-over-copy.xml +2 -0
  348. package/ai/kit/axiom/boundary/ax-result-public-boundary.xml +11 -0
  349. package/ai/kit/axiom/boundary/ax-scope-type-gate.xml +6 -0
  350. package/ai/kit/axiom/boundary/ax-semantic-location-over-lines.xml +2 -0
  351. package/ai/kit/axiom/boundary/ax-semantic-safety.xml +2 -0
  352. package/ai/kit/axiom/boundary/ax-spec-never-edited.xml +4 -0
  353. package/ai/kit/axiom/boundary/ax-ssot-traceability.xml +4 -0
  354. package/ai/kit/axiom/boundary/ax-ticket-write-scope.xml +9 -0
  355. package/ai/kit/axiom/coding/ax-ai-readability.xml +2 -0
  356. package/ai/kit/axiom/coding/ax-anchor-format.xml +6 -0
  357. package/ai/kit/axiom/coding/ax-comment-density.xml +4 -0
  358. package/ai/kit/axiom/coding/ax-comment-placement.xml +4 -0
  359. package/ai/kit/axiom/coding/ax-comment-vocabulary.xml +6 -0
  360. package/ai/kit/axiom/coding/ax-comments-add-nonsyntactic-intent.xml +4 -0
  361. package/ai/kit/axiom/coding/ax-configurable-names.xml +5 -0
  362. package/ai/kit/axiom/coding/ax-consumer-driven.xml +8 -0
  363. package/ai/kit/axiom/coding/ax-contractual-naming.xml +4 -0
  364. package/ai/kit/axiom/coding/ax-domain-prefix-for-external.xml +4 -0
  365. package/ai/kit/axiom/coding/ax-early-exit.xml +2 -0
  366. package/ai/kit/axiom/coding/ax-explicit-class-fields.xml +4 -0
  367. package/ai/kit/axiom/coding/ax-file-header-append-only.xml +10 -0
  368. package/ai/kit/axiom/coding/ax-file-header-task-traceability.xml +16 -0
  369. package/ai/kit/axiom/coding/ax-file-level-context.xml +13 -0
  370. package/ai/kit/axiom/coding/ax-import-canonical-form.xml +15 -0
  371. package/ai/kit/axiom/coding/ax-introduced-discipline.xml +4 -0
  372. package/ai/kit/axiom/coding/ax-modern-ts-density.xml +4 -0
  373. package/ai/kit/axiom/coding/ax-modularity-limits.xml +4 -0
  374. package/ai/kit/axiom/coding/ax-namespace-naming.xml +4 -0
  375. package/ai/kit/axiom/coding/ax-no-code-generation.xml +2 -0
  376. package/ai/kit/axiom/coding/ax-no-premature-abstractions.xml +4 -0
  377. package/ai/kit/axiom/coding/ax-no-silent-escape-hatch.xml +4 -0
  378. package/ai/kit/axiom/coding/ax-node-builtins-prefix.xml +10 -0
  379. package/ai/kit/axiom/coding/ax-principled-decomposition.xml +4 -0
  380. package/ai/kit/axiom/coding/ax-teleological-naming.xml +4 -0
  381. package/ai/kit/axiom/coding/ax-tools-as-hands.xml +12 -0
  382. package/ai/kit/axiom/coding/ax-verb-precision.xml +4 -0
  383. package/ai/kit/axiom/coding/ax-yagni-overengineering-guard.xml +4 -0
  384. package/ai/kit/axiom/critic/ax-comprehension-first.xml +2 -0
  385. package/ai/kit/axiom/critic/ax-confusion-bug.xml +2 -0
  386. package/ai/kit/axiom/critic/ax-critic-model-tier.xml +10 -0
  387. package/ai/kit/axiom/critic/ax-default-accept.xml +2 -0
  388. package/ai/kit/axiom/critic/ax-finding-addressee.xml +6 -0
  389. package/ai/kit/axiom/critic/ax-goal-owner-gate.xml +7 -0
  390. package/ai/kit/axiom/critic/ax-isolation.xml +2 -0
  391. package/ai/kit/axiom/critic/ax-polish-mode.xml +7 -0
  392. package/ai/kit/axiom/critic/ax-product-architect-lens.xml +13 -0
  393. package/ai/kit/axiom/critic/ax-read-only.xml +2 -0
  394. package/ai/kit/axiom/critic/ax-uncertainty-is-signal.xml +2 -0
  395. package/ai/kit/axiom/critic/ax-uncomfortable-questions.xml +12 -0
  396. package/ai/kit/axiom/e2e/ax-cli-ax-tree-as-primary-vision.xml +6 -0
  397. package/ai/kit/axiom/e2e/ax-cli-codegen-is-recorder-not-author.xml +4 -0
  398. package/ai/kit/axiom/e2e/ax-cli-dev-server-precondition.xml +4 -0
  399. package/ai/kit/axiom/e2e/ax-cli-explore-before-author.xml +6 -0
  400. package/ai/kit/axiom/e2e/ax-cli-explore-loop-has-four-steps.xml +10 -0
  401. package/ai/kit/axiom/e2e/ax-cli-headless-for-agent.xml +4 -0
  402. package/ai/kit/axiom/e2e/ax-cli-role-locators-from-ax-tree.xml +4 -0
  403. package/ai/kit/axiom/e2e/ax-cli-snapshot-update-gate.xml +6 -0
  404. package/ai/kit/axiom/e2e/ax-cli-trace-for-failure-diagnosis.xml +6 -0
  405. package/ai/kit/axiom/e2e/ax-cli-transition-to-authoring.xml +4 -0
  406. package/ai/kit/axiom/e2e/ax-e2e-auth-via-storage-state.xml +4 -0
  407. package/ai/kit/axiom/e2e/ax-e2e-ax-tree-as-contract.xml +4 -0
  408. package/ai/kit/axiom/e2e/ax-e2e-browser-coverage-pragmatic.xml +4 -0
  409. package/ai/kit/axiom/e2e/ax-e2e-file-layout.xml +4 -0
  410. package/ai/kit/axiom/e2e/ax-e2e-file-size-budget.xml +4 -0
  411. package/ai/kit/axiom/e2e/ax-e2e-fixture-based-pom.xml +6 -0
  412. package/ai/kit/axiom/e2e/ax-e2e-headless-always.xml +4 -0
  413. package/ai/kit/axiom/e2e/ax-e2e-network-mock-at-route.xml +6 -0
  414. package/ai/kit/axiom/e2e/ax-e2e-role-locators-only.xml +4 -0
  415. package/ai/kit/axiom/e2e/ax-e2e-self-verification-loop.xml +4 -0
  416. package/ai/kit/axiom/e2e/ax-e2e-snapshot-partial-by-default.xml +4 -0
  417. package/ai/kit/axiom/e2e/ax-e2e-structure-ax-first.xml +10 -0
  418. package/ai/kit/axiom/e2e/ax-e2e-visual-regression-gated.xml +4 -0
  419. package/ai/kit/axiom/error/ax-catch-log-recover.xml +10 -0
  420. package/ai/kit/axiom/error/ax-error-chaining-cause.xml +4 -0
  421. package/ai/kit/axiom/error/ax-error-via-class.xml +4 -0
  422. package/ai/kit/axiom/error/ax-fail-fast-validation.xml +4 -0
  423. package/ai/kit/axiom/error/ax-focused-error-assertions.xml +4 -0
  424. package/ai/kit/axiom/error/ax-mandatory-try-catch-in-business-logic.xml +4 -0
  425. package/ai/kit/axiom/error/ax-markup-safety.xml +2 -0
  426. package/ai/kit/axiom/error/ax-minimal-error-surface.xml +4 -0
  427. package/ai/kit/axiom/error/ax-must-extractor.xml +4 -0
  428. package/ai/kit/axiom/error/ax-no-bare-throw-unknown.xml +6 -0
  429. package/ai/kit/axiom/error/ax-no-result-iserr-short-circuit.xml +5 -0
  430. package/ai/kit/axiom/error/ax-no-result-object-literal.xml +6 -0
  431. package/ai/kit/axiom/error/ax-no-result-ok-short-circuit.xml +6 -0
  432. package/ai/kit/axiom/error/ax-no-result-second-generic.xml +6 -0
  433. package/ai/kit/axiom/error/ax-result-unwrap-on-success-paths.xml +4 -0
  434. package/ai/kit/axiom/error/ax-trace-prefixed-errors.xml +4 -0
  435. package/ai/kit/axiom/infra/ax-ai-first-scripts-one-shot.xml +27 -0
  436. package/ai/kit/axiom/infra/ax-autofix-preferred.xml +12 -0
  437. package/ai/kit/axiom/infra/ax-binary-severity.xml +10 -0
  438. package/ai/kit/axiom/infra/ax-branch-strategy.xml +16 -0
  439. package/ai/kit/axiom/infra/ax-commit-convention.xml +18 -0
  440. package/ai/kit/axiom/infra/ax-config-auditable-by-agent.xml +10 -0
  441. package/ai/kit/axiom/infra/ax-custom-plugins-obey-meta-policy.xml +9 -0
  442. package/ai/kit/axiom/infra/ax-dependency-addition-checklist.xml +9 -0
  443. package/ai/kit/axiom/infra/ax-exact-pinning-for-tooling.xml +10 -0
  444. package/ai/kit/axiom/infra/ax-flat-config.xml +6 -0
  445. package/ai/kit/axiom/infra/ax-gitignore-baseline.xml +22 -0
  446. package/ai/kit/axiom/infra/ax-history-policy.xml +16 -0
  447. package/ai/kit/axiom/infra/ax-hooks-integration.xml +4 -0
  448. package/ai/kit/axiom/infra/ax-infra-base-bootstrap.xml +6 -0
  449. package/ai/kit/axiom/infra/ax-infrastructure-flow.xml +16 -0
  450. package/ai/kit/axiom/infra/ax-lfs-submodules.xml +8 -0
  451. package/ai/kit/axiom/infra/ax-lint-run-is-mechanical.xml +8 -0
  452. package/ai/kit/axiom/infra/ax-lock-file-discipline.xml +10 -0
  453. package/ai/kit/axiom/infra/ax-module-system-explicit.xml +4 -0
  454. package/ai/kit/axiom/infra/ax-no-disable-comments-by-agent.xml +16 -0
  455. package/ai/kit/axiom/infra/ax-non-autofix-prefer-delegation.xml +17 -0
  456. package/ai/kit/axiom/infra/ax-npm-agent-sandbox-registry.xml +28 -0
  457. package/ai/kit/axiom/infra/ax-presets-passed-through-the-gate.xml +8 -0
  458. package/ai/kit/axiom/infra/ax-prettier-owns-formatting.xml +12 -0
  459. package/ai/kit/axiom/infra/ax-project-layout.xml +11 -0
  460. package/ai/kit/axiom/infra/ax-rule-change-requires-operator-confirm.xml +13 -0
  461. package/ai/kit/axiom/infra/ax-secrets-discipline.xml +17 -0
  462. package/ai/kit/axiom/infra/ax-single-package-manager.xml +6 -0
  463. package/ai/kit/axiom/infra/ax-tag-release.xml +17 -0
  464. package/ai/kit/axiom/infra/ax-third-party-tool-current-api.xml +8 -0
  465. package/ai/kit/axiom/infra/ax-type-aware-prefer-ts.xml +10 -0
  466. package/ai/kit/axiom/interview/ax-amplification-opt-in.xml +8 -0
  467. package/ai/kit/axiom/interview/ax-coverage-map-closure.xml +9 -0
  468. package/ai/kit/axiom/interview/ax-defaults-first.xml +9 -0
  469. package/ai/kit/axiom/logging/ax-alerts-on-symptoms.xml +7 -0
  470. package/ai/kit/axiom/logging/ax-log-density.xml +4 -0
  471. package/ai/kit/axiom/logging/ax-log-message-format.xml +6 -0
  472. package/ai/kit/axiom/logging/ax-log-message-purity.xml +4 -0
  473. package/ai/kit/axiom/logging/ax-log-performance-metrics.xml +4 -0
  474. package/ai/kit/axiom/logging/ax-stdout-first-transport.xml +2 -0
  475. package/ai/kit/axiom/logging/ax-structured-logging.xml +6 -0
  476. package/ai/kit/axiom/perf/ax-allocation-is-enemy.xml +2 -0
  477. package/ai/kit/axiom/perf/ax-backpressure-is-law.xml +2 -0
  478. package/ai/kit/axiom/perf/ax-big-o-matters.xml +2 -0
  479. package/ai/kit/axiom/perf/ax-budgets-are-numbers.xml +8 -0
  480. package/ai/kit/axiom/perf/ax-concurrency-limits.xml +2 -0
  481. package/ai/kit/axiom/perf/ax-engine-optimizations.xml +2 -0
  482. package/ai/kit/axiom/perf/ax-gc-pressure.xml +2 -0
  483. package/ai/kit/axiom/perf/ax-hoisting-safety.xml +2 -0
  484. package/ai/kit/axiom/perf/ax-latency-stacking.xml +2 -0
  485. package/ai/kit/axiom/perf/ax-one-time-cost.xml +2 -0
  486. package/ai/kit/axiom/perf/ax-retained-memory.xml +2 -0
  487. package/ai/kit/axiom/perf/ax-target-hardware.xml +2 -0
  488. package/ai/kit/axiom/process/ax-amplify-defaults-first.xml +11 -0
  489. package/ai/kit/axiom/process/ax-artifact-style-self-check.xml +9 -0
  490. package/ai/kit/axiom/process/ax-audit-hook.xml +3 -0
  491. package/ai/kit/axiom/process/ax-blocker-escalation.xml +12 -0
  492. package/ai/kit/axiom/process/ax-blocker-resolution-trail.xml +9 -0
  493. package/ai/kit/axiom/process/ax-cap-5.xml +1 -0
  494. package/ai/kit/axiom/process/ax-close-with-integrity-check.xml +4 -0
  495. package/ai/kit/axiom/process/ax-coverage-report-blocker-explicit.xml +4 -0
  496. package/ai/kit/axiom/process/ax-cross-scope-change.xml +10 -0
  497. package/ai/kit/axiom/process/ax-dialogue-discipline.xml +12 -0
  498. package/ai/kit/axiom/process/ax-dispatch-via-batch.xml +8 -0
  499. package/ai/kit/axiom/process/ax-diverge-before-recommend.xml +18 -0
  500. package/ai/kit/axiom/process/ax-env-fix-channel.xml +23 -0
  501. package/ai/kit/axiom/process/ax-execution-log-plan-vs-fact.xml +18 -0
  502. package/ai/kit/axiom/process/ax-execution-order.xml +5 -0
  503. package/ai/kit/axiom/process/ax-fix-classification.xml +7 -0
  504. package/ai/kit/axiom/process/ax-grouping-reduces-noise.xml +2 -0
  505. package/ai/kit/axiom/process/ax-halt-vs-fail-distinction.xml +10 -0
  506. package/ai/kit/axiom/process/ax-handoff-typed.xml +3 -0
  507. package/ai/kit/axiom/process/ax-live-log.xml +3 -0
  508. package/ai/kit/axiom/process/ax-narrow-recon.xml +9 -0
  509. package/ai/kit/axiom/process/ax-no-focused-or-skipped-tests-on-merge.xml +4 -0
  510. package/ai/kit/axiom/process/ax-no-process-narration.xml +7 -0
  511. package/ai/kit/axiom/process/ax-operator-agreement.xml +6 -0
  512. package/ai/kit/axiom/process/ax-operator-dialogue-style.xml +42 -0
  513. package/ai/kit/axiom/process/ax-operator-language.xml +15 -0
  514. package/ai/kit/axiom/process/ax-operator-output-live-text.xml +7 -0
  515. package/ai/kit/axiom/process/ax-operator-safeguard.xml +10 -0
  516. package/ai/kit/axiom/process/ax-owner.xml +1 -0
  517. package/ai/kit/axiom/process/ax-permitted-bash-commands.xml +31 -0
  518. package/ai/kit/axiom/process/ax-phase-scope-lock.xml +3 -0
  519. package/ai/kit/axiom/process/ax-preflight-blast-radius-scoped.xml +10 -0
  520. package/ai/kit/axiom/process/ax-problem-probes-spec.xml +14 -0
  521. package/ai/kit/axiom/process/ax-progressive-disclosure.xml +8 -0
  522. package/ai/kit/axiom/process/ax-q-ids.xml +3 -0
  523. package/ai/kit/axiom/process/ax-re-dispatch.xml +1 -0
  524. package/ai/kit/axiom/process/ax-read-per-manifest.xml +11 -0
  525. package/ai/kit/axiom/process/ax-rejection-reason.xml +1 -0
  526. package/ai/kit/axiom/process/ax-reopen-format.xml +15 -0
  527. package/ai/kit/axiom/process/ax-scale-proportional-depth.xml +8 -0
  528. package/ai/kit/axiom/process/ax-scratch-log.xml +1 -0
  529. package/ai/kit/axiom/process/ax-step-by-step-approval.xml +13 -0
  530. package/ai/kit/axiom/process/ax-stop-no-edits.xml +1 -0
  531. package/ai/kit/axiom/process/ax-surgical.xml +1 -0
  532. package/ai/kit/axiom/process/ax-task-id-uniqueness.xml +11 -0
  533. package/ai/kit/axiom/process/ax-task-parallel.xml +1 -0
  534. package/ai/kit/axiom/process/ax-task-resolution.xml +10 -0
  535. package/ai/kit/axiom/process/ax-ticket-section-names-normative.xml +3 -0
  536. package/ai/kit/axiom/process/ax-tool-invocation.xml +12 -0
  537. package/ai/kit/axiom/process/ax-verification-before-handoff.xml +19 -0
  538. package/ai/kit/axiom/process/ax-verify-and-finalize.xml +4 -0
  539. package/ai/kit/axiom/process/ax-verify-at-end.xml +4 -0
  540. package/ai/kit/axiom/scaffold/ax-append-only-module-add.xml +9 -0
  541. package/ai/kit/axiom/scaffold/ax-bootstrap-ticket-derivation.xml +9 -0
  542. package/ai/kit/axiom/scaffold/ax-cross-scope-task-placement.xml +4 -0
  543. package/ai/kit/axiom/scaffold/ax-dag-and-ticket-boundaries.xml +16 -0
  544. package/ai/kit/axiom/scaffold/ax-directive-mode.xml +6 -0
  545. package/ai/kit/axiom/scaffold/ax-extend-dag-preserves-existing-ids.xml +11 -0
  546. package/ai/kit/axiom/scaffold/ax-handoff-to-task-scaffolding.xml +6 -0
  547. package/ai/kit/axiom/scaffold/ax-idempotent-modes.xml +8 -0
  548. package/ai/kit/axiom/scaffold/ax-mode-auto-detect-or-halt.xml +6 -0
  549. package/ai/kit/axiom/scaffold/ax-phases-declared-in-header.xml +20 -0
  550. package/ai/kit/axiom/scaffold/ax-rule-activation-plan.xml +7 -0
  551. package/ai/kit/axiom/scaffold/ax-rule-activation.xml +8 -0
  552. package/ai/kit/axiom/scaffold/ax-rules-cascade-resolution.xml +15 -0
  553. package/ai/kit/axiom/scaffold/ax-rules-load-from-phase-block.xml +16 -0
  554. package/ai/kit/axiom/scaffold/ax-rules-resolution-hard-fail.xml +4 -0
  555. package/ai/kit/axiom/scaffold/ax-scope-rules-declaration.xml +15 -0
  556. package/ai/kit/axiom/scaffold/ax-stack-based-flow.xml +6 -0
  557. package/ai/kit/axiom/scaffold/ax-task-dimensions.xml +10 -0
  558. package/ai/kit/axiom/scaffold/ax-ticket-deduplication.xml +4 -0
  559. package/ai/kit/axiom/scaffold/ax-ticket-has-bdd-and-tests.xml +12 -0
  560. package/ai/kit/axiom/spec/ax-access-patterns-drive-schema.xml +7 -0
  561. package/ai/kit/axiom/spec/ax-context-to-contract.xml +4 -0
  562. package/ai/kit/axiom/spec/ax-contracts-textual-agnostic.xml +11 -0
  563. package/ai/kit/axiom/spec/ax-data-lifecycle-explicit.xml +7 -0
  564. package/ai/kit/axiom/spec/ax-decision-log-required.xml +7 -0
  565. package/ai/kit/axiom/spec/ax-draft-ready-for-review.xml +8 -0
  566. package/ai/kit/axiom/spec/ax-dx-first.xml +12 -0
  567. package/ai/kit/axiom/spec/ax-exact-scope.xml +4 -0
  568. package/ai/kit/axiom/spec/ax-external-input-untrusted.xml +7 -0
  569. package/ai/kit/axiom/spec/ax-handoff-to-module-decomposition.xml +4 -0
  570. package/ai/kit/axiom/spec/ax-hierarchical-specs.xml +8 -0
  571. package/ai/kit/axiom/spec/ax-interface-flow.xml +7 -0
  572. package/ai/kit/axiom/spec/ax-living-spec.xml +6 -0
  573. package/ai/kit/axiom/spec/ax-module-boundary-by-operator.xml +4 -0
  574. package/ai/kit/axiom/spec/ax-no-data-loss.xml +10 -0
  575. package/ai/kit/axiom/spec/ax-no-silent-option-drop.xml +4 -0
  576. package/ai/kit/axiom/spec/ax-pivot-requires-supersession.xml +6 -0
  577. package/ai/kit/axiom/spec/ax-portal-primary-owner.xml +10 -0
  578. package/ai/kit/axiom/spec/ax-ports-and-abstractions-discipline.xml +7 -0
  579. package/ai/kit/axiom/spec/ax-product-library-flow.xml +15 -0
  580. package/ai/kit/axiom/spec/ax-refine-module-preserves-contracts.xml +12 -0
  581. package/ai/kit/axiom/spec/ax-runtime-backing-explicit.xml +9 -0
  582. package/ai/kit/axiom/spec/ax-runtime-backing-in-contracts.xml +9 -0
  583. package/ai/kit/axiom/spec/ax-scope-graph-detection.xml +19 -0
  584. package/ai/kit/axiom/spec/ax-scope-graph-discipline.xml +8 -0
  585. package/ai/kit/axiom/spec/ax-scope-spec-module-map-ownership.xml +17 -0
  586. package/ai/kit/axiom/spec/ax-scope-stays-thin.xml +14 -0
  587. package/ai/kit/axiom/spec/ax-scope-table-format.xml +7 -0
  588. package/ai/kit/axiom/spec/ax-scope-type-branch.xml +13 -0
  589. package/ai/kit/axiom/spec/ax-spec-dimensions.xml +14 -0
  590. package/ai/kit/axiom/spec/ax-spec-lifecycle.xml +10 -0
  591. package/ai/kit/axiom/spec/ax-spec-structure.xml +13 -0
  592. package/ai/kit/axiom/spec/ax-stateless-artifact.xml +6 -0
  593. package/ai/kit/axiom/spec/ax-vision-only-for-application.xml +4 -0
  594. package/ai/kit/axiom/storybook/ax-ai-generated-tag.xml +13 -0
  595. package/ai/kit/axiom/storybook/ax-compose-from-base-story.xml +13 -0
  596. package/ai/kit/axiom/storybook/ax-hierarchy-mirrors-spec.xml +25 -0
  597. package/ai/kit/axiom/storybook/ax-one-story-per-variant.xml +18 -0
  598. package/ai/kit/axiom/storybook/ax-play-function-required.xml +27 -0
  599. package/ai/kit/axiom/storybook/ax-sb-agents-md-updated-as-part-of-setup.xml +4 -0
  600. package/ai/kit/axiom/storybook/ax-sb-browser-prereq-handled.xml +4 -0
  601. package/ai/kit/axiom/storybook/ax-sb-follow-generated-guide.xml +4 -0
  602. package/ai/kit/axiom/storybook/ax-sb-init-via-official-installer.xml +6 -0
  603. package/ai/kit/axiom/storybook/ax-sb-mcp-is-mandatory.xml +6 -0
  604. package/ai/kit/axiom/storybook/ax-sb-no-parallel-test-harnesses.xml +4 -0
  605. package/ai/kit/axiom/storybook/ax-sb-use-ai-generated-tag.xml +4 -0
  606. package/ai/kit/axiom/storybook/ax-sb-use-component-change-triggers-story-run.xml +4 -0
  607. package/ai/kit/axiom/storybook/ax-sb-use-compose-existing-first.xml +4 -0
  608. package/ai/kit/axiom/storybook/ax-sb-use-mcp-first.xml +4 -0
  609. package/ai/kit/axiom/storybook/ax-sb-use-never-hallucinate-props.xml +4 -0
  610. package/ai/kit/axiom/storybook/ax-sb-use-no-parallel-render-harness.xml +4 -0
  611. package/ai/kit/axiom/storybook/ax-sb-use-one-story-one-concept.xml +4 -0
  612. package/ai/kit/axiom/storybook/ax-sb-use-play-for-interaction.xml +4 -0
  613. package/ai/kit/axiom/storybook/ax-sb-use-self-verify-before-handoff.xml +6 -0
  614. package/ai/kit/axiom/storybook/ax-sb-verify-before-handoff.xml +9 -0
  615. package/ai/kit/axiom/storybook/ax-storybook-title-from-spec.xml +10 -0
  616. package/ai/kit/axiom/svelte/ax-bindable-for-two-way.xml +4 -0
  617. package/ai/kit/axiom/svelte/ax-component-structure-fixed.xml +4 -0
  618. package/ai/kit/axiom/svelte/ax-derived-is-pure.xml +4 -0
  619. package/ai/kit/axiom/svelte/ax-effect-ownership-and-cleanup.xml +6 -0
  620. package/ai/kit/axiom/svelte/ax-event-handlers-as-attributes.xml +6 -0
  621. package/ai/kit/axiom/svelte/ax-inspect-is-dev-only.xml +4 -0
  622. package/ai/kit/axiom/svelte/ax-legacy-patterns-forbidden.xml +4 -0
  623. package/ai/kit/axiom/svelte/ax-local-runes-over-stores-for-local-state.xml +6 -0
  624. package/ai/kit/axiom/svelte/ax-props-via-destructuring.xml +6 -0
  625. package/ai/kit/axiom/svelte/ax-runes-are-compiler-keywords.xml +6 -0
  626. package/ai/kit/axiom/svelte/ax-runes-location-restriction.xml +6 -0
  627. package/ai/kit/axiom/svelte/ax-sk-adapter-chosen-not-defaulted.xml +4 -0
  628. package/ai/kit/axiom/svelte/ax-sk-data-via-load.xml +6 -0
  629. package/ai/kit/axiom/svelte/ax-sk-fetch-from-load-uses-sdk-fetch.xml +4 -0
  630. package/ai/kit/axiom/svelte/ax-sk-hooks-own-cross-cutting.xml +6 -0
  631. package/ai/kit/axiom/svelte/ax-sk-mutations-via-actions.xml +6 -0
  632. package/ai/kit/axiom/svelte/ax-sk-page-options-per-route.xml +6 -0
  633. package/ai/kit/axiom/svelte/ax-sk-project-layout.xml +4 -0
  634. package/ai/kit/axiom/svelte/ax-sk-routing-is-file-based.xml +6 -0
  635. package/ai/kit/axiom/svelte/ax-sk-server-client-boundary.xml +8 -0
  636. package/ai/kit/axiom/svelte/ax-sk-types-from-generated.xml +4 -0
  637. package/ai/kit/axiom/svelte/ax-sk-validation-at-action-boundary.xml +4 -0
  638. package/ai/kit/axiom/svelte/ax-snippets-replace-slots.xml +4 -0
  639. package/ai/kit/axiom/svelte/ax-svelte-conventions.xml +10 -0
  640. package/ai/kit/axiom/svelte/ax-svelte-test-effect-root-outside-component.xml +6 -0
  641. package/ai/kit/axiom/svelte/ax-svelte-test-file-extension.xml +4 -0
  642. package/ai/kit/axiom/svelte/ax-svelte-test-flush-before-assert.xml +6 -0
  643. package/ai/kit/axiom/svelte/ax-svelte-test-inherited-vitest-rules.xml +4 -0
  644. package/ai/kit/axiom/svelte/ax-svelte-test-jsdom-environment.xml +4 -0
  645. package/ai/kit/axiom/svelte/ax-svelte-test-library-for-rendering.xml +6 -0
  646. package/ai/kit/axiom/svelte/ax-svelte-test-mount-and-cleanup.xml +8 -0
  647. package/ai/kit/axiom/svelte/ax-svelte-test-no-direct-dom-query.xml +4 -0
  648. package/ai/kit/axiom/svelte/ax-svelte-test-prefer-story-tests-when-available.xml +4 -0
  649. package/ai/kit/axiom/svelte/ax-svelte-test-role-queries-preferred.xml +4 -0
  650. package/ai/kit/axiom/testing/ax-anchor-coverage-nontrivial.xml +4 -0
  651. package/ai/kit/axiom/testing/ax-anchor-intentful-names.xml +4 -0
  652. package/ai/kit/axiom/testing/ax-anchor-trivial-exception.xml +4 -0
  653. package/ai/kit/axiom/testing/ax-assert-api-choice.xml +13 -0
  654. package/ai/kit/axiom/testing/ax-bdd-generation.xml +19 -0
  655. package/ai/kit/axiom/testing/ax-bdd-name-discipline.xml +4 -0
  656. package/ai/kit/axiom/testing/ax-case-flow.xml +6 -0
  657. package/ai/kit/axiom/testing/ax-contract-over-implementation.xml +10 -0
  658. package/ai/kit/axiom/testing/ax-coverage-by-contract-not-by-line.xml +9 -0
  659. package/ai/kit/axiom/testing/ax-default-direct-assertion-protocol.xml +6 -0
  660. package/ai/kit/axiom/testing/ax-explicit-vitest-imports.xml +4 -0
  661. package/ai/kit/axiom/testing/ax-file-name-and-default-shape.xml +4 -0
  662. package/ai/kit/axiom/testing/ax-fixture-io-policy.xml +4 -0
  663. package/ai/kit/axiom/testing/ax-hooks-only-for-lifecycle.xml +6 -0
  664. package/ai/kit/axiom/testing/ax-http-boundary-injection.xml +6 -0
  665. package/ai/kit/axiom/testing/ax-http-mock-agent-pattern.xml +9 -0
  666. package/ai/kit/axiom/testing/ax-it-opening-brief.xml +8 -0
  667. package/ai/kit/axiom/testing/ax-mock-as-last-resort.xml +11 -0
  668. package/ai/kit/axiom/testing/ax-mock-hygiene.xml +12 -0
  669. package/ai/kit/axiom/testing/ax-mock-requires-operator-confirm.xml +9 -0
  670. package/ai/kit/axiom/testing/ax-no-describe-let-pileup.xml +4 -0
  671. package/ai/kit/axiom/testing/ax-no-falsification-via-mocks.xml +4 -0
  672. package/ai/kit/axiom/testing/ax-one-test-one-scenario.xml +4 -0
  673. package/ai/kit/axiom/testing/ax-one-unified-context-per-file.xml +10 -0
  674. package/ai/kit/axiom/testing/ax-partial-string-via-match.xml +4 -0
  675. package/ai/kit/axiom/testing/ax-phase-anchors.xml +16 -0
  676. package/ai/kit/axiom/testing/ax-prefer-factory-over-hooks.xml +6 -0
  677. package/ai/kit/axiom/testing/ax-prefer-native-mock-fn.xml +9 -0
  678. package/ai/kit/axiom/testing/ax-prefer-vi-fn-for-interaction.xml +4 -0
  679. package/ai/kit/axiom/testing/ax-snapshot-file-location.xml +4 -0
  680. package/ai/kit/axiom/testing/ax-snapshot-usage-gate.xml +4 -0
  681. package/ai/kit/axiom/testing/ax-test-anchor-naming.xml +4 -0
  682. package/ai/kit/axiom/testing/ax-test-file-size-budget.xml +6 -0
  683. package/ai/kit/axiom/testing/ax-test-mandate.xml +10 -0
  684. package/ai/kit/axiom/testing/ax-tests-no-human-narration.xml +4 -0
  685. package/ai/kit/axiom/testing/ax-time-env-global-lifecycle.xml +9 -0
  686. package/ai/kit/axiom/testing/ax-vitest-assert-api-choice.xml +12 -0
  687. package/ai/kit/axiom/testing/ax-vitest-isolation-default.xml +4 -0
  688. package/ai/kit/axiom/testing/ax-vitest-run-not-watch.xml +16 -0
  689. package/ai/kit/axiom/truth/ax-autonomous-research.xml +2 -0
  690. package/ai/kit/axiom/truth/ax-evidence-hygiene.xml +9 -0
  691. package/ai/kit/axiom/truth/ax-freshness-guard.xml +2 -0
  692. package/ai/kit/axiom/truth/ax-live-source-only.xml +2 -0
  693. package/ai/kit/axiom/truth/ax-no-unverified-findings.xml +2 -0
  694. package/ai/kit/axiom/truth/ax-production-realism.xml +4 -0
  695. package/ai/kit/axiom/truth/ax-real-run-over-ping.xml +2 -0
  696. package/ai/kit/axiom/truth/ax-reuse-first.xml +2 -0
  697. package/ai/kit/axiom/truth/ax-spec-is-sole-source.xml +6 -0
  698. package/ai/kit/axiom/truth/ax-stale-must-be-rejected.xml +2 -0
  699. package/ai/kit/axiom/typescript/ax-base-contract-shape.xml +25 -0
  700. package/ai/kit/axiom/typescript/ax-consumers-tag-semantics.xml +4 -0
  701. package/ai/kit/axiom/typescript/ax-direct-implementation-protocol.xml +9 -0
  702. package/ai/kit/axiom/typescript/ax-english-only-names-and-comments.xml +4 -0
  703. package/ai/kit/axiom/typescript/ax-entity-specific-minimums.xml +11 -0
  704. package/ai/kit/axiom/typescript/ax-flat-jsdoc-for-properties.xml +6 -0
  705. package/ai/kit/axiom/typescript/ax-implementation-hiding-in-public.xml +4 -0
  706. package/ai/kit/axiom/typescript/ax-no-transpile-only-constructs.xml +6 -0
  707. package/ai/kit/axiom/typescript/ax-tag-usage-matrix.xml +15 -0
  708. package/ai/kit/axiom/typescript/ax-truthful-encapsulation.xml +6 -0
  709. package/ai/kit/axiom/typescript/ax-type-vs-interface-choice.xml +4 -0
  710. package/ai/kit/axiom/uikit/ax-a11y-audit-parameters.xml +14 -0
  711. package/ai/kit/axiom/uikit/ax-a11y-defaults.xml +12 -0
  712. package/ai/kit/axiom/uikit/ax-a11y-requirements.xml +18 -0
  713. package/ai/kit/axiom/uikit/ax-component-props-contract.xml +20 -0
  714. package/ai/kit/axiom/uikit/ax-css-module-selector-conventions.xml +10 -0
  715. package/ai/kit/axiom/uikit/ax-css-tokens-via-root.xml +12 -0
  716. package/ai/kit/axiom/uikit/ax-data-attrs-not-host.xml +16 -0
  717. package/ai/kit/axiom/uikit/ax-data-state-for-testability.xml +8 -0
  718. package/ai/kit/axiom/uikit/ax-element-structure-from-extraction.xml +13 -0
  719. package/ai/kit/axiom/uikit/ax-existing-components-check.xml +9 -0
  720. package/ai/kit/axiom/uikit/ax-extraction-input.xml +15 -0
  721. package/ai/kit/axiom/uikit/ax-file-structure-kebab-case.xml +13 -0
  722. package/ai/kit/axiom/uikit/ax-icon-svg-tight-viewbox.xml +6 -0
  723. package/ai/kit/axiom/uikit/ax-token-discipline.xml +9 -0
  724. package/ai/kit/axiom/uikit/ax-token-override-comment.xml +11 -0
  725. package/ai/kit/axiom/uikit/ax-token-section-generation.xml +13 -0
  726. package/ai/kit/axiom/uikit/ax-variant-grouping.xml +10 -0
  727. package/ai/kit/build-directives.ts +39 -0
  728. package/ai/kit/contract/audit/audit-session-summary-format.xml +38 -0
  729. package/ai/kit/contract/audit/finding-format.xml +20 -0
  730. package/ai/kit/contract/audit/ticket-audit-round-format.xml +38 -0
  731. package/ai/kit/contract/critic/oc-structured.xml +2 -0
  732. package/ai/kit/contract/interview/coverage-map-format.xml +12 -0
  733. package/ai/kit/contract/process/blocker-format.xml +9 -0
  734. package/ai/kit/contract/process/breadcrumb-format.xml +8 -0
  735. package/ai/kit/contract/process/execute-summary-format.xml +11 -0
  736. package/ai/kit/contract/process/fix-summary-format.xml +23 -0
  737. package/ai/kit/contract/process/flow-diagram-when.xml +12 -0
  738. package/ai/kit/contract/process/halt-format.xml +6 -0
  739. package/ai/kit/contract/process/handoff-format.xml +13 -0
  740. package/ai/kit/contract/process/message-layout.xml +16 -0
  741. package/ai/kit/contract/process/orchestrator-progress-format.xml +10 -0
  742. package/ai/kit/contract/process/phase-block-format.xml +22 -0
  743. package/ai/kit/contract/process/phase-progress-format.xml +13 -0
  744. package/ai/kit/contract/process/plan-table-format.xml +7 -0
  745. package/ai/kit/contract/process/question-format.xml +27 -0
  746. package/ai/kit/contract/process/return-summary-format.xml +17 -0
  747. package/ai/kit/contract/process/round-close-format.xml +8 -0
  748. package/ai/kit/contract/process/session-file-format.xml +25 -0
  749. package/ai/kit/contract/process/side-dive-format.xml +7 -0
  750. package/ai/kit/contract/process/trace-header-format.xml +11 -0
  751. package/ai/kit/contract/process/understanding-block-format.xml +12 -0
  752. package/ai/kit/contract/scaffold/module-tasks-index.xml +9 -0
  753. package/ai/kit/contract/scaffold/project-tasks-index.xml +10 -0
  754. package/ai/kit/contract/scaffold/scope-tasks-index.xml +11 -0
  755. package/ai/kit/contract/scaffold/task-ticket-structure.xml +19 -0
  756. package/ai/kit/contract/spec/change-manifest-format.xml +31 -0
  757. package/ai/kit/contract/spec/dbc-adapter-format.xml +22 -0
  758. package/ai/kit/contract/spec/dbc-port-format.xml +38 -0
  759. package/ai/kit/contract/spec/decision-log-entry-format.xml +12 -0
  760. package/ai/kit/contract/spec/entity-inventory-format.xml +18 -0
  761. package/ai/kit/contract/spec/entity-surface-format.xml +25 -0
  762. package/ai/kit/contract/spec/infra-base-minimal-spec.xml +23 -0
  763. package/ai/kit/contract/spec/infrastructure-spec-structure.xml +8 -0
  764. package/ai/kit/contract/spec/interface-spec-structure.xml +6 -0
  765. package/ai/kit/contract/spec/library-spec-structure.xml +6 -0
  766. package/ai/kit/contract/spec/module-spec-markdown-structure.xml +10 -0
  767. package/ai/kit/contract/spec/nfr-budgets-format.xml +22 -0
  768. package/ai/kit/contract/spec/pivot-invalidation-list-format.xml +9 -0
  769. package/ai/kit/contract/spec/portal-structure-contract.xml +6 -0
  770. package/ai/kit/contract/spec/product-spec-structure.xml +6 -0
  771. package/ai/kit/contract/spec/rework-decision-log-entry-format.xml +19 -0
  772. package/ai/kit/contract/spec/scope-spec-module-map-update.xml +34 -0
  773. package/ai/kit/contract/spec/security-section-format.xml +27 -0
  774. package/ai/kit/contract/uikit/spec-structure.xml +67 -0
  775. package/ai/kit/definition/e2e/def-cli-ax-snapshot.xml +4 -0
  776. package/ai/kit/definition/e2e/def-cli-trace.xml +4 -0
  777. package/ai/kit/definition/e2e/def-e2e-ax-contract.xml +4 -0
  778. package/ai/kit/definition/e2e/def-e2e-fixture-pom.xml +4 -0
  779. package/ai/kit/definition/infra/def-autofixable-rule.xml +4 -0
  780. package/ai/kit/definition/infra/def-cjs.xml +2 -0
  781. package/ai/kit/definition/infra/def-esm.xml +2 -0
  782. package/ai/kit/definition/infra/def-exact-pin.xml +2 -0
  783. package/ai/kit/definition/infra/def-lint-pipeline.xml +4 -0
  784. package/ai/kit/definition/infra/def-motivated-non-autofix-rule.xml +4 -0
  785. package/ai/kit/definition/infra/def-operator-disable.xml +4 -0
  786. package/ai/kit/definition/infra/def-reproducibility-triad.xml +2 -0
  787. package/ai/kit/definition/process/def-logic-switch.xml +12 -0
  788. package/ai/kit/definition/process/def-read-and-use-directive.xml +12 -0
  789. package/ai/kit/definition/storybook/def-play-contract.xml +4 -0
  790. package/ai/kit/definition/storybook/def-sb-mcp-server.xml +4 -0
  791. package/ai/kit/definition/storybook/def-sb-mcp-tools.xml +4 -0
  792. package/ai/kit/definition/storybook/def-sb-story-canonical-form.xml +4 -0
  793. package/ai/kit/definition/storybook/def-sb-test-addon.xml +4 -0
  794. package/ai/kit/definition/storybook/def-spec-mirror-hierarchy.xml +4 -0
  795. package/ai/kit/definition/svelte/def-flush-boundary.xml +4 -0
  796. package/ai/kit/definition/svelte/def-form-action.xml +4 -0
  797. package/ai/kit/definition/svelte/def-runes-file.xml +4 -0
  798. package/ai/kit/definition/svelte/def-server-load.xml +4 -0
  799. package/ai/kit/definition/svelte/def-svelte-rune.xml +4 -0
  800. package/ai/kit/definition/svelte/def-svelte-test-file.xml +4 -0
  801. package/ai/kit/definition/svelte/def-universal-load.xml +4 -0
  802. package/ai/kit/definition/testing/def-injection-seam.xml +4 -0
  803. package/ai/kit/definition/testing/def-non-trivial-case.xml +4 -0
  804. package/ai/kit/definition/testing/def-phase-anchor-format.xml +4 -0
  805. package/ai/kit/definition/testing/def-test-payload-vocab.xml +4 -0
  806. package/ai/kit/definition/testing/def-unified-context.xml +4 -0
  807. package/ai/kit/definition/typescript/def-allowed-comment-payload.xml +4 -0
  808. package/ai/kit/definition/typescript/def-complexity-trigger.xml +4 -0
  809. package/ai/kit/definition/typescript/def-trace-prefix.xml +2 -0
  810. package/ai/kit/definition/uikit/def-component-artefact.xml +4 -0
  811. package/ai/kit/definition/uikit/def-data-attribute-selector.xml +4 -0
  812. package/ai/kit/definition/uikit/def-token-override.xml +4 -0
  813. package/ai/kit/demo/indent-check.ts +56 -0
  814. package/ai/kit/demo/render-demo.ts +26 -0
  815. package/ai/kit/demo/sdd-mini.hbs +11 -0
  816. package/ai/kit/hook/coding/hook-module-system-declared.xml +6 -0
  817. package/ai/kit/hook/e2e/HOOK_CLI_DEV_SERVER_REACHABLE.xml +6 -0
  818. package/ai/kit/hook/e2e/HOOK_CLI_NO_AUTO_UPDATE_SNAPSHOTS.xml +6 -0
  819. package/ai/kit/hook/e2e/HOOK_CLI_NO_HEADED_IN_AGENT_SCRIPTS.xml +6 -0
  820. package/ai/kit/hook/e2e/HOOK_CLI_PLAYWRIGHT_INSTALLED.xml +6 -0
  821. package/ai/kit/hook/e2e/HOOK_E2E_FILE_SIZE_BUDGET.xml +6 -0
  822. package/ai/kit/hook/e2e/HOOK_E2E_NO_CSS_LOCATORS.xml +6 -0
  823. package/ai/kit/hook/e2e/HOOK_E2E_NO_HEADED.xml +6 -0
  824. package/ai/kit/hook/e2e/HOOK_E2E_NO_ONLY_OR_SKIP.xml +6 -0
  825. package/ai/kit/hook/e2e/HOOK_E2E_RUN_CHROMIUM.xml +6 -0
  826. package/ai/kit/hook/e2e/hook-cli-dev-server-reachable.xml +6 -0
  827. package/ai/kit/hook/e2e/hook-cli-no-auto-update-snapshots.xml +6 -0
  828. package/ai/kit/hook/e2e/hook-cli-no-headed-in-agent-scripts.xml +6 -0
  829. package/ai/kit/hook/e2e/hook-cli-playwright-installed.xml +6 -0
  830. package/ai/kit/hook/e2e/hook-e2e-file-size-budget.xml +6 -0
  831. package/ai/kit/hook/e2e/hook-e2e-no-css-locators.xml +6 -0
  832. package/ai/kit/hook/e2e/hook-e2e-no-headed.xml +6 -0
  833. package/ai/kit/hook/e2e/hook-e2e-no-only-or-skip.xml +6 -0
  834. package/ai/kit/hook/e2e/hook-e2e-run-chromium.xml +6 -0
  835. package/ai/kit/hook/infra/HOOK_AUDIT_NEW_RULE.xml +6 -0
  836. package/ai/kit/hook/infra/HOOK_DEFAULT_BRANCH_MAIN.xml +6 -0
  837. package/ai/kit/hook/infra/HOOK_GITIGNORE_PRESENT.xml +6 -0
  838. package/ai/kit/hook/infra/HOOK_LINT_FIX_GREEN.xml +6 -0
  839. package/ai/kit/hook/infra/HOOK_LINT_NO_DRIFT.xml +6 -0
  840. package/ai/kit/hook/infra/HOOK_NON_AUTOFIX_HAS_COMMENT.xml +6 -0
  841. package/ai/kit/hook/infra/HOOK_NO_AGENT_DISABLE_COMMENTS.xml +6 -0
  842. package/ai/kit/hook/infra/HOOK_NO_ENV_TRACKED.xml +6 -0
  843. package/ai/kit/hook/infra/HOOK_NO_FORMATTING_DUPLICATION.xml +6 -0
  844. package/ai/kit/hook/infra/HOOK_NO_NODE_MODULES_TRACKED.xml +6 -0
  845. package/ai/kit/hook/infra/HOOK_NO_WARN_LEVEL_IN_CONFIG.xml +6 -0
  846. package/ai/kit/hook/infra/HOOK_PROJECT_LINT.xml +6 -0
  847. package/ai/kit/hook/infra/HOOK_TAG_ANNOTATED.xml +6 -0
  848. package/ai/kit/hook/infra/HOOK_TYPECHECK.xml +6 -0
  849. package/ai/kit/hook/infra/hook-audit-new-rule.xml +6 -0
  850. package/ai/kit/hook/infra/hook-default-branch-main.xml +6 -0
  851. package/ai/kit/hook/infra/hook-engines-present.xml +6 -0
  852. package/ai/kit/hook/infra/hook-gitignore-present.xml +6 -0
  853. package/ai/kit/hook/infra/hook-lint-fix-green.xml +6 -0
  854. package/ai/kit/hook/infra/hook-lint-no-drift.xml +6 -0
  855. package/ai/kit/hook/infra/hook-lock-file-exists.xml +6 -0
  856. package/ai/kit/hook/infra/hook-no-agent-disable-comments.xml +6 -0
  857. package/ai/kit/hook/infra/hook-no-env-tracked.xml +6 -0
  858. package/ai/kit/hook/infra/hook-no-foreign-lock-files.xml +6 -0
  859. package/ai/kit/hook/infra/hook-no-formatting-duplication.xml +6 -0
  860. package/ai/kit/hook/infra/hook-no-node-modules-tracked.xml +6 -0
  861. package/ai/kit/hook/infra/hook-no-warn-level-in-config.xml +6 -0
  862. package/ai/kit/hook/infra/hook-non-autofix-has-comment.xml +6 -0
  863. package/ai/kit/hook/infra/hook-npmrc-registry.xml +6 -0
  864. package/ai/kit/hook/infra/hook-nvmrc-exact.xml +6 -0
  865. package/ai/kit/hook/infra/hook-project-lint.xml +6 -0
  866. package/ai/kit/hook/infra/hook-tag-annotated.xml +6 -0
  867. package/ai/kit/hook/storybook/HOOK_SB_ADDON_PRESENT.xml +6 -0
  868. package/ai/kit/hook/storybook/HOOK_SB_AGENTS_MD_MENTIONS_STORYBOOK.xml +6 -0
  869. package/ai/kit/hook/storybook/HOOK_SB_AI_TAG_PRESENT.xml +6 -0
  870. package/ai/kit/hook/storybook/HOOK_SB_PLAYWRIGHT_BROWSER_PRESENT.xml +6 -0
  871. package/ai/kit/hook/storybook/HOOK_SB_PLAY_PRESENT.xml +6 -0
  872. package/ai/kit/hook/storybook/HOOK_SB_PREVIEW_BOOTS.xml +6 -0
  873. package/ai/kit/hook/storybook/HOOK_SB_RUN_STORY_TESTS.xml +6 -0
  874. package/ai/kit/hook/storybook/hook-sb-addon-present.xml +6 -0
  875. package/ai/kit/hook/storybook/hook-sb-agents-md-mentions-storybook.xml +6 -0
  876. package/ai/kit/hook/storybook/hook-sb-ai-tag-present.xml +6 -0
  877. package/ai/kit/hook/storybook/hook-sb-interactive-stories-have-play.xml +6 -0
  878. package/ai/kit/hook/storybook/hook-sb-play-present.xml +6 -0
  879. package/ai/kit/hook/storybook/hook-sb-playwright-browser-present.xml +6 -0
  880. package/ai/kit/hook/storybook/hook-sb-preview-boots.xml +6 -0
  881. package/ai/kit/hook/storybook/hook-sb-run-story-tests.xml +6 -0
  882. package/ai/kit/hook/svelte/HOOK_NO_CREATE_EVENT_DISPATCHER.xml +6 -0
  883. package/ai/kit/hook/svelte/HOOK_NO_LEGACY_PROP_SYNTAX.xml +6 -0
  884. package/ai/kit/hook/svelte/HOOK_NO_LEGACY_REACTIVE.xml +6 -0
  885. package/ai/kit/hook/svelte/HOOK_NO_RUNES_IN_PLAIN_TS.xml +6 -0
  886. package/ai/kit/hook/svelte/HOOK_SK_BUILD.xml +6 -0
  887. package/ai/kit/hook/svelte/HOOK_SK_NO_CLIENT_FETCH_IN_COMPONENT.xml +6 -0
  888. package/ai/kit/hook/svelte/HOOK_SK_NO_GLOBAL_FETCH_IN_LOAD.xml +6 -0
  889. package/ai/kit/hook/svelte/HOOK_SK_NO_PRIVATE_ENV_IN_CLIENT.xml +6 -0
  890. package/ai/kit/hook/svelte/HOOK_SK_TYPECHECK.xml +6 -0
  891. package/ai/kit/hook/svelte/HOOK_SVELTE_CHECK.xml +6 -0
  892. package/ai/kit/hook/svelte/HOOK_SVELTE_TEST_EXTENSION_DISCIPLINE.xml +6 -0
  893. package/ai/kit/hook/svelte/HOOK_SVELTE_TEST_HAS_CLEANUP.xml +6 -0
  894. package/ai/kit/hook/svelte/HOOK_SVELTE_TEST_HAS_FLUSH_AFTER_USEREVENT.xml +6 -0
  895. package/ai/kit/hook/svelte/HOOK_SVELTE_TEST_NO_DIRECT_DOM_QUERIES.xml +6 -0
  896. package/ai/kit/hook/svelte/HOOK_SVELTE_TEST_RUN.xml +6 -0
  897. package/ai/kit/hook/svelte/hook-no-create-event-dispatcher.xml +6 -0
  898. package/ai/kit/hook/svelte/hook-no-legacy-prop-syntax.xml +6 -0
  899. package/ai/kit/hook/svelte/hook-no-legacy-reactive.xml +6 -0
  900. package/ai/kit/hook/svelte/hook-no-runes-in-plain-ts.xml +6 -0
  901. package/ai/kit/hook/svelte/hook-sk-build.xml +6 -0
  902. package/ai/kit/hook/svelte/hook-sk-no-client-fetch-in-component.xml +6 -0
  903. package/ai/kit/hook/svelte/hook-sk-no-global-fetch-in-load.xml +6 -0
  904. package/ai/kit/hook/svelte/hook-sk-no-private-env-in-client.xml +6 -0
  905. package/ai/kit/hook/svelte/hook-sk-typecheck.xml +6 -0
  906. package/ai/kit/hook/svelte/hook-svelte-check.xml +6 -0
  907. package/ai/kit/hook/svelte/hook-svelte-test-extension-discipline.xml +6 -0
  908. package/ai/kit/hook/svelte/hook-svelte-test-has-cleanup.xml +6 -0
  909. package/ai/kit/hook/svelte/hook-svelte-test-has-flush-after-userevent.xml +6 -0
  910. package/ai/kit/hook/svelte/hook-svelte-test-no-direct-dom-queries.xml +6 -0
  911. package/ai/kit/hook/svelte/hook-svelte-test-run.xml +6 -0
  912. package/ai/kit/hook/testing/HOOK_ANCHOR_PAIRING.xml +6 -0
  913. package/ai/kit/hook/testing/HOOK_COVERAGE.xml +5 -0
  914. package/ai/kit/hook/testing/HOOK_NO_FORBIDDEN_TEST_PATTERNS.xml +6 -0
  915. package/ai/kit/hook/testing/HOOK_RUN_SINGLE_FILE.xml +5 -0
  916. package/ai/kit/hook/testing/HOOK_RUN_TESTS.xml +5 -0
  917. package/ai/kit/hook/testing/HOOK_TYPECHECK_BEFORE_TEST.xml +5 -0
  918. package/ai/kit/hook/testing/hook-anchor-pairing.xml +6 -0
  919. package/ai/kit/hook/testing/hook-coverage-node.xml +5 -0
  920. package/ai/kit/hook/testing/hook-coverage-vitest.xml +5 -0
  921. package/ai/kit/hook/testing/hook-file-size-budget.xml +6 -0
  922. package/ai/kit/hook/testing/hook-no-auto-snapshot-update.xml +6 -0
  923. package/ai/kit/hook/testing/hook-no-forbidden-test-patterns-node.xml +6 -0
  924. package/ai/kit/hook/testing/hook-no-forbidden-test-patterns-vitest.xml +5 -0
  925. package/ai/kit/hook/testing/hook-no-unjustified-vi-mock.xml +6 -0
  926. package/ai/kit/hook/testing/hook-parallel-factories-guard.xml +5 -0
  927. package/ai/kit/hook/testing/hook-run-single-file-node.xml +5 -0
  928. package/ai/kit/hook/testing/hook-run-single-file-vitest.xml +5 -0
  929. package/ai/kit/hook/testing/hook-run-tests-node.xml +5 -0
  930. package/ai/kit/hook/testing/hook-run-tests-vitest.xml +5 -0
  931. package/ai/kit/hook/testing/hook-typecheck-before-test.xml +5 -0
  932. package/ai/kit/hook/typescript/HOOK_NO_FORBIDDEN_CONSTRUCTS.xml +6 -0
  933. package/ai/kit/hook/typescript/HOOK_TYPECHECK.xml +6 -0
  934. package/ai/kit/hook/typescript/hook-no-forbidden-constructs.xml +6 -0
  935. package/ai/kit/hook/typescript/hook-typecheck.xml +6 -0
  936. package/ai/kit/hook/uikit/HOOK_ARIA_ATTRIBUTES_PRESENT.xml +6 -0
  937. package/ai/kit/hook/uikit/HOOK_DATA_STATE_PRESENT.xml +6 -0
  938. package/ai/kit/hook/uikit/HOOK_KEBAB_CASE_FILES.xml +6 -0
  939. package/ai/kit/hook/uikit/HOOK_NO_HOST_SELECTOR.xml +6 -0
  940. package/ai/kit/hook/uikit/HOOK_OVERRIDE_COMMENTS_PRESENT.xml +6 -0
  941. package/ai/kit/hook/uikit/HOOK_SB_A11Y_AUDIT_CONFIG.xml +6 -0
  942. package/ai/kit/hook/uikit/hook-aria-attributes-present.xml +6 -0
  943. package/ai/kit/hook/uikit/hook-data-state-present.xml +6 -0
  944. package/ai/kit/hook/uikit/hook-kebab-case-files.xml +6 -0
  945. package/ai/kit/hook/uikit/hook-no-host-selector.xml +6 -0
  946. package/ai/kit/hook/uikit/hook-override-comments-present.xml +6 -0
  947. package/ai/kit/hook/uikit/hook-sb-a11y-audit-config.xml +6 -0
  948. package/ai/kit/lint-axioms.ts +102 -0
  949. package/ai/kit/pattern/e2e/pt-cli-explore-loop.xml +29 -0
  950. package/ai/kit/pattern/e2e/pt-e2e-auth-setup-project.xml +20 -0
  951. package/ai/kit/pattern/e2e/pt-e2e-ax-snapshot-baseline.xml +21 -0
  952. package/ai/kit/pattern/e2e/pt-e2e-fixture-pom.xml +31 -0
  953. package/ai/kit/pattern/e2e/pt-e2e-interaction-delta.xml +19 -0
  954. package/ai/kit/pattern/e2e/pt-e2e-network-mock.xml +21 -0
  955. package/ai/kit/pattern/infra/pt-dependency-addition.xml +21 -0
  956. package/ai/kit/pattern/infra/pt-esm-builtins.xml +14 -0
  957. package/ai/kit/pattern/infra/pt-lint-config-shape.xml +104 -0
  958. package/ai/kit/pattern/infra/pt-minimal-package-json.xml +21 -0
  959. package/ai/kit/pattern/infra/pt-npm-script-shape.xml +18 -0
  960. package/ai/kit/pattern/infra/pt-npmrc.xml +10 -0
  961. package/ai/kit/pattern/infra/pt-nvmrc.xml +6 -0
  962. package/ai/kit/pattern/infra/pt-rule-audit-protocol.xml +40 -0
  963. package/ai/kit/pattern/spec/example-contracts.xml +20 -0
  964. package/ai/kit/pattern/spec/example-infrastructure.xml +28 -0
  965. package/ai/kit/pattern/spec/example-library.xml +21 -0
  966. package/ai/kit/pattern/spec/example-product.xml +19 -0
  967. package/ai/kit/pattern/storybook/pt-canonical-stories-file.xml +74 -0
  968. package/ai/kit/pattern/storybook/pt-sb-composed-story-with-play.xml +37 -0
  969. package/ai/kit/pattern/storybook/pt-story-with-visual-contract.xml +20 -0
  970. package/ai/kit/pattern/svelte/pt-basic-component-with-runes.xml +27 -0
  971. package/ai/kit/pattern/svelte/pt-bindable-prop.xml +14 -0
  972. package/ai/kit/pattern/svelte/pt-component-svelte-template.xml +54 -0
  973. package/ai/kit/pattern/svelte/pt-effect-with-teardown.xml +17 -0
  974. package/ai/kit/pattern/svelte/pt-form-action-with-fail.xml +24 -0
  975. package/ai/kit/pattern/svelte/pt-page-consuming-load.xml +17 -0
  976. package/ai/kit/pattern/svelte/pt-server-hook-auth.xml +18 -0
  977. package/ai/kit/pattern/svelte/pt-server-load.xml +21 -0
  978. package/ai/kit/pattern/svelte/pt-snippet-and-render.xml +17 -0
  979. package/ai/kit/pattern/svelte/pt-svelte-test-effect-root-for-runes.xml +30 -0
  980. package/ai/kit/pattern/svelte/pt-svelte-test-render-and-assert.xml +22 -0
  981. package/ai/kit/pattern/svelte/pt-svelte-test-user-interaction-with-flush.xml +28 -0
  982. package/ai/kit/pattern/testing/pt-async-retry-with-brief.xml +48 -0
  983. package/ai/kit/pattern/testing/pt-di-over-mock.xml +53 -0
  984. package/ai/kit/pattern/testing/pt-direct-scalar-case.xml +20 -0
  985. package/ai/kit/pattern/testing/pt-error-path-with-assert-rejects.xml +35 -0
  986. package/ai/kit/pattern/testing/pt-fixture-and-observe-aggregation.xml +43 -0
  987. package/ai/kit/pattern/testing/pt-lifecycle-context-with-cleanup.xml +48 -0
  988. package/ai/kit/pattern/testing/pt-mock-fn-interaction-contract.xml +40 -0
  989. package/ai/kit/pattern/testing/pt-unified-factory-context.xml +58 -0
  990. package/ai/kit/pattern/typescript/pt-async-operation-with-timing.xml +40 -0
  991. package/ai/kit/pattern/typescript/pt-direct-implementation-with-log-and-error.xml +48 -0
  992. package/ai/kit/pattern/typescript/pt-expressive-terseness.xml +11 -0
  993. package/ai/kit/pattern/typescript/pt-module-and-data-type.xml +20 -0
  994. package/ai/kit/pattern/typescript/pt-service-contract-interface.xml +28 -0
  995. package/ai/kit/pattern/typescript/pt-type-narrowing-and-modern-operators.xml +36 -0
  996. package/ai/kit/pattern/uikit/pt-module-css-template.xml +26 -0
  997. package/ai/kit/pattern/uikit/pt-tokens-css-template.xml +17 -0
  998. package/ai/kit/render.ts +87 -0
  999. package/ai/kit/templates/coding/result-conventions.hbs +37 -0
  1000. package/ai/kit/templates/coding/result-conventions.xml +37 -0
  1001. package/ai/kit/templates/sdd-v2/agent-inbox/code-lens.directive.hbs +109 -0
  1002. package/ai/kit/templates/sdd-v2/agent-inbox/enrich.directive.hbs +203 -0
  1003. package/ai/kit/templates/sdd-v2/agent-inbox/security-lens.directive.hbs +161 -0
  1004. package/ai/kit/templates/sdd-v2/agent-inbox/synthesize.directive.hbs +114 -0
  1005. package/ai/kit/templates/sdd-v2/agent-inbox/track-review.directive.hbs +442 -0
  1006. package/ai/kit/templates/sdd-v2/amplify-nfr.directive.hbs +73 -0
  1007. package/ai/kit/templates/sdd-v2/amplify-observability.directive.hbs +73 -0
  1008. package/ai/kit/templates/sdd-v2/amplify-security.directive.hbs +70 -0
  1009. package/ai/kit/templates/sdd-v2/amplify-storage.directive.hbs +71 -0
  1010. package/ai/kit/templates/sdd-v2/audit.directive.hbs +241 -0
  1011. package/ai/kit/templates/sdd-v2/code-review.directive.hbs +90 -0
  1012. package/ai/kit/templates/sdd-v2/compression.directive.hbs +113 -0
  1013. package/ai/kit/templates/sdd-v2/critic-protocol.directive.hbs +93 -0
  1014. package/ai/kit/templates/sdd-v2/critic.directive.hbs +103 -0
  1015. package/ai/kit/templates/sdd-v2/discover-from-code.directive.hbs +115 -0
  1016. package/ai/kit/templates/sdd-v2/execute.directive.hbs +186 -0
  1017. package/ai/kit/templates/sdd-v2/formats/audit-round.hbs +1 -0
  1018. package/ai/kit/templates/sdd-v2/formats/change-manifest.hbs +1 -0
  1019. package/ai/kit/templates/sdd-v2/formats/dbc-contracts.hbs +3 -0
  1020. package/ai/kit/templates/sdd-v2/formats/diagram-vocabulary.hbs +181 -0
  1021. package/ai/kit/templates/sdd-v2/formats/entity-inventory-format.hbs +1 -0
  1022. package/ai/kit/templates/sdd-v2/formats/entity-surface-format.hbs +1 -0
  1023. package/ai/kit/templates/sdd-v2/formats/infra-base-minimal-spec.hbs +1 -0
  1024. package/ai/kit/templates/sdd-v2/formats/infrastructure-spec-structure.hbs +1 -0
  1025. package/ai/kit/templates/sdd-v2/formats/interface-spec-structure.hbs +1 -0
  1026. package/ai/kit/templates/sdd-v2/formats/library-spec-structure.hbs +1 -0
  1027. package/ai/kit/templates/sdd-v2/formats/module-map-update.hbs +1 -0
  1028. package/ai/kit/templates/sdd-v2/formats/module-spec-structure.hbs +1 -0
  1029. package/ai/kit/templates/sdd-v2/formats/module-tasks-index.hbs +1 -0
  1030. package/ai/kit/templates/sdd-v2/formats/nfr-budgets-format.hbs +1 -0
  1031. package/ai/kit/templates/sdd-v2/formats/pivot-formats.hbs +3 -0
  1032. package/ai/kit/templates/sdd-v2/formats/portal-structure.hbs +1 -0
  1033. package/ai/kit/templates/sdd-v2/formats/product-spec-structure.hbs +1 -0
  1034. package/ai/kit/templates/sdd-v2/formats/project-tasks-index.hbs +1 -0
  1035. package/ai/kit/templates/sdd-v2/formats/scope-tasks-index.hbs +1 -0
  1036. package/ai/kit/templates/sdd-v2/formats/security-section-format.hbs +1 -0
  1037. package/ai/kit/templates/sdd-v2/formats/task-ticket-structure.hbs +1 -0
  1038. package/ai/kit/templates/sdd-v2/infra.directive.hbs +180 -0
  1039. package/ai/kit/templates/sdd-v2/interface.directive.hbs +154 -0
  1040. package/ai/kit/templates/sdd-v2/interview-protocol.directive.hbs +254 -0
  1041. package/ai/kit/templates/sdd-v2/migration-v1-v2.directive.hbs +301 -0
  1042. package/ai/kit/templates/sdd-v2/module.directive.hbs +247 -0
  1043. package/ai/kit/templates/sdd-v2/phase-execution-protocol.directive.hbs +202 -0
  1044. package/ai/kit/templates/sdd-v2/readiness.directive.hbs +143 -0
  1045. package/ai/kit/templates/sdd-v2/reconcile.directive.hbs +183 -0
  1046. package/ai/kit/templates/sdd-v2/recover-from-code.directive.hbs +153 -0
  1047. package/ai/kit/templates/sdd-v2/review-lifecycle.directive.hbs +70 -0
  1048. package/ai/kit/templates/sdd-v2/root.directive.hbs +133 -0
  1049. package/ai/kit/templates/sdd-v2/router.directive.hbs +179 -0
  1050. package/ai/kit/templates/sdd-v2/scaffold.directive.hbs +227 -0
  1051. package/ai/kit/templates/sdd-v2/scope.directive.hbs +236 -0
  1052. package/ai/skills/README.md +133 -0
  1053. package/ai/skills/agent-inbox/SKILL.md +48 -0
  1054. package/ai/skills/opencode-get-session/SKILL.md +149 -0
  1055. package/ai/skills/prd-interview/PRD_TEMPLATE.md +84 -0
  1056. package/ai/skills/prd-interview/SKILL.md +133 -0
  1057. package/ai/skills/sdd/SKILL.md +30 -0
  1058. package/ai/skills/sdd-audit/SKILL.md +2 -2
  1059. package/ai/skills/sdd-check/SKILL.md +21 -134
  1060. package/ai/skills/sdd-code-review/SKILL.md +27 -0
  1061. package/ai/skills/sdd-critic/SKILL.md +26 -5
  1062. package/ai/skills/sdd-execute/SKILL.md +29 -200
  1063. package/ai/skills/sdd-reconcile/SKILL.md +32 -0
  1064. package/ai/skills/sdd-scaffold/SKILL.md +34 -6
  1065. package/ai/skills/workspace-permission-setup/SKILL.md +194 -0
  1066. package/cli/cmd/README.md +234 -0
  1067. package/dist/ai/directives/agent-inbox/arch-interrogation.directive.xml +387 -0
  1068. package/dist/ai/directives/agent-inbox/change-interrogation.directive.xml +107 -0
  1069. package/dist/ai/directives/agent-inbox/code-interrogation.directive.xml +54 -0
  1070. package/dist/ai/directives/agent-inbox/contract-interrogation.directive.xml +93 -0
  1071. package/dist/ai/directives/agent-inbox/golden-chat-output.example.md +176 -0
  1072. package/dist/ai/directives/agent-inbox/inbox-flow.directive.xml +588 -0
  1073. package/dist/ai/directives/agent-inbox/posting-rules.directive.xml +260 -0
  1074. package/dist/ai/directives/agent-inbox/security-interrogation.directive.xml +108 -0
  1075. package/dist/ai/directives/agent-inbox/update-review.directive.xml +136 -0
  1076. package/dist/ai/directives/agent-inbox/visual-vocabulary.directive.xml +188 -0
  1077. package/dist/ai/directives/coding/result-conventions.xml +4 -4
  1078. package/dist/ai/directives/coding/svelte5-runes.xml +30 -30
  1079. package/dist/ai/directives/coding/sveltekit-rules.xml +27 -27
  1080. package/dist/ai/directives/coding/typescript-rules.xml +50 -50
  1081. package/dist/ai/directives/coding/uikit-component-storybook.xml +32 -32
  1082. package/dist/ai/directives/coding/uikit-component-svelte.xml +35 -35
  1083. package/dist/ai/directives/coding/uikit-spec-drafting.xml +22 -22
  1084. package/dist/ai/directives/infra/eslint-setup.xml +29 -29
  1085. package/dist/ai/directives/infra/git-setup.xml +25 -25
  1086. package/dist/ai/directives/infra/nodejs-npm-setup.xml +36 -36
  1087. package/dist/ai/directives/infra/storybook-setup.xml +22 -22
  1088. package/dist/ai/directives/knowledge.xml +0 -46
  1089. package/dist/ai/directives/sdd-v2/agent-inbox/code-lens.directive.xml +108 -0
  1090. package/dist/ai/directives/sdd-v2/agent-inbox/enrich.directive.xml +222 -0
  1091. package/dist/ai/directives/sdd-v2/agent-inbox/security-lens.directive.xml +161 -0
  1092. package/dist/ai/directives/sdd-v2/agent-inbox/synthesize.directive.xml +113 -0
  1093. package/dist/ai/directives/sdd-v2/agent-inbox/track-review.directive.xml +439 -0
  1094. package/dist/ai/directives/sdd-v2/amplify-nfr.directive.xml +93 -0
  1095. package/dist/ai/directives/sdd-v2/amplify-observability.directive.xml +98 -0
  1096. package/dist/ai/directives/sdd-v2/amplify-security.directive.xml +104 -0
  1097. package/dist/ai/directives/sdd-v2/amplify-storage.directive.xml +95 -0
  1098. package/dist/ai/directives/sdd-v2/audit.directive.xml +473 -0
  1099. package/dist/ai/directives/sdd-v2/code-review.directive.xml +260 -0
  1100. package/dist/ai/directives/sdd-v2/compression.directive.xml +214 -0
  1101. package/dist/ai/directives/sdd-v2/critic-protocol.directive.xml +210 -0
  1102. package/dist/ai/directives/sdd-v2/critic.directive.xml +210 -0
  1103. package/dist/ai/directives/sdd-v2/discover-from-code.directive.xml +173 -0
  1104. package/dist/ai/directives/sdd-v2/execute.directive.xml +337 -0
  1105. package/dist/ai/directives/sdd-v2/formats/audit-round.xml +37 -0
  1106. package/dist/ai/directives/sdd-v2/formats/change-manifest.xml +30 -0
  1107. package/dist/ai/directives/sdd-v2/formats/dbc-contracts.xml +59 -0
  1108. package/dist/ai/directives/sdd-v2/formats/diagram-vocabulary.xml +181 -0
  1109. package/dist/ai/directives/sdd-v2/formats/entity-inventory-format.xml +17 -0
  1110. package/dist/ai/directives/sdd-v2/formats/entity-surface-format.xml +24 -0
  1111. package/dist/ai/directives/sdd-v2/formats/infra-base-minimal-spec.xml +22 -0
  1112. package/dist/ai/directives/sdd-v2/formats/infrastructure-spec-structure.xml +121 -0
  1113. package/dist/ai/directives/sdd-v2/formats/interface-spec-structure.xml +91 -0
  1114. package/dist/ai/directives/sdd-v2/formats/library-spec-structure.xml +100 -0
  1115. package/dist/ai/directives/sdd-v2/formats/module-map-update.xml +33 -0
  1116. package/dist/ai/directives/sdd-v2/formats/module-spec-structure.xml +150 -0
  1117. package/dist/ai/directives/sdd-v2/formats/module-tasks-index.xml +30 -0
  1118. package/dist/ai/directives/sdd-v2/formats/nfr-budgets-format.xml +21 -0
  1119. package/dist/ai/directives/sdd-v2/formats/pivot-formats.xml +27 -0
  1120. package/dist/ai/directives/sdd-v2/formats/portal-structure.xml +29 -0
  1121. package/dist/ai/directives/sdd-v2/formats/product-spec-structure.xml +109 -0
  1122. package/dist/ai/directives/sdd-v2/formats/project-tasks-index.xml +36 -0
  1123. package/dist/ai/directives/sdd-v2/formats/scope-tasks-index.xml +35 -0
  1124. package/dist/ai/directives/sdd-v2/formats/security-section-format.xml +26 -0
  1125. package/dist/ai/directives/sdd-v2/formats/task-ticket-structure.xml +125 -0
  1126. package/dist/ai/directives/sdd-v2/guides/project-setup.md +41 -0
  1127. package/dist/ai/directives/sdd-v2/guides/v1-to-v2-migration.md +104 -0
  1128. package/dist/ai/directives/sdd-v2/infra.directive.xml +331 -0
  1129. package/dist/ai/directives/sdd-v2/interface.directive.xml +277 -0
  1130. package/dist/ai/directives/sdd-v2/interview-protocol.directive.xml +284 -0
  1131. package/dist/ai/directives/sdd-v2/migration-v1-v2.directive.xml +472 -0
  1132. package/dist/ai/directives/sdd-v2/module.directive.xml +462 -0
  1133. package/dist/ai/directives/sdd-v2/phase-execution-protocol.directive.xml +460 -0
  1134. package/dist/ai/directives/sdd-v2/readiness.directive.xml +303 -0
  1135. package/dist/ai/directives/sdd-v2/reconcile.directive.xml +405 -0
  1136. package/dist/ai/directives/sdd-v2/recover-from-code.directive.xml +174 -0
  1137. package/dist/ai/directives/sdd-v2/review-lifecycle.directive.xml +108 -0
  1138. package/dist/ai/directives/sdd-v2/root.directive.xml +217 -0
  1139. package/dist/ai/directives/sdd-v2/router.directive.xml +384 -0
  1140. package/dist/ai/directives/sdd-v2/scaffold.directive.xml +513 -0
  1141. package/dist/ai/directives/sdd-v2/scope.directive.xml +421 -0
  1142. package/dist/ai/directives/testing/common.xml +42 -7
  1143. package/dist/ai/directives/testing/node-test.xml +33 -23
  1144. package/dist/ai/directives/testing/playwright-cli.xml +29 -29
  1145. package/dist/ai/directives/testing/playwright-e2e.xml +29 -29
  1146. package/dist/ai/directives/testing/storybook-usage.xml +27 -27
  1147. package/dist/ai/directives/testing/svelte-testing.xml +27 -27
  1148. package/dist/ai/directives/testing/vitest-rules.xml +25 -25
  1149. package/dist/ai/flow-sim/PROTOCOL.md +159 -0
  1150. package/dist/ai/flow-sim/README.md +39 -0
  1151. package/dist/ai/flow-sim/scenarios/S1-route-new-scope.md +107 -0
  1152. package/dist/ai/flow-sim/scenarios/S10-multi-scope-route.md +213 -0
  1153. package/dist/ai/flow-sim/scenarios/S11-migration-full.md +501 -0
  1154. package/dist/ai/flow-sim/scenarios/S2-preflight-migration.md +129 -0
  1155. package/dist/ai/flow-sim/scenarios/S3-preflight-carveout.md +141 -0
  1156. package/dist/ai/flow-sim/scenarios/S4-discover.md +112 -0
  1157. package/dist/ai/flow-sim/scenarios/S5-recover.md +154 -0
  1158. package/dist/ai/flow-sim/scenarios/S6-scaffold-ticket.md +283 -0
  1159. package/dist/ai/flow-sim/scenarios/S7-execute-lifecycle.md +750 -0
  1160. package/dist/ai/flow-sim/scenarios/S8-reconcile-trivial.md +696 -0
  1161. package/dist/ai/flow-sim/scenarios/S9-reconcile-from-code.md +669 -0
  1162. package/dist/ai/inspector/README.md +40 -0
  1163. package/dist/ai/inspector/core/__tests__/parse-directive.test.ts +155 -0
  1164. package/dist/ai/inspector/core/__tests__/parse-skill.test.ts +80 -0
  1165. package/dist/ai/inspector/core/model.ts +37 -0
  1166. package/dist/ai/inspector/core/parse-directive.ts +181 -0
  1167. package/dist/ai/inspector/core/parse-skill.ts +89 -0
  1168. package/dist/ai/inspector/core/resolve.ts +53 -0
  1169. package/dist/ai/inspector/core/scan.ts +109 -0
  1170. package/dist/ai/inspector/e2e/inspector.spec.ts +117 -0
  1171. package/dist/ai/inspector/generate.ts +154 -0
  1172. package/dist/ai/inspector/playwright.config.ts +20 -0
  1173. package/dist/ai/inspector/serve.ts +30 -0
  1174. package/dist/ai/inspector/web/__tests__/debug.test.ts +173 -0
  1175. package/dist/ai/inspector/web/__tests__/markdown.test.ts +185 -0
  1176. package/dist/ai/inspector/web/app.js +324 -0
  1177. package/dist/ai/inspector/web/debug.js +202 -0
  1178. package/dist/ai/inspector/web/index.html +38 -0
  1179. package/dist/ai/inspector/web/markdown.js +85 -0
  1180. package/dist/ai/inspector/web/styles.css +569 -0
  1181. package/dist/ai/kit/AUTHORING.md +121 -0
  1182. package/dist/ai/kit/__tests__/deps.test.ts +61 -0
  1183. package/dist/ai/kit/__tests__/lint-axioms.test.ts +192 -0
  1184. package/dist/ai/kit/__tests__/render.test.ts +192 -0
  1185. package/dist/ai/kit/__tests__/skeleton-parity.test.ts +50 -0
  1186. package/dist/ai/kit/anti-pattern/coding/AP_FALSE_PRIVATE_AND_ENUM.xml +27 -0
  1187. package/dist/ai/kit/anti-pattern/coding/AP_OVEREDIT.xml +2 -0
  1188. package/dist/ai/kit/anti-pattern/coding/ap-builtin-without-prefix.xml +6 -0
  1189. package/dist/ai/kit/anti-pattern/coding/ap-false-private-and-enum.xml +27 -0
  1190. package/dist/ai/kit/anti-pattern/coding/ap-mixed-module-system.xml +6 -0
  1191. package/dist/ai/kit/anti-pattern/coding/ap-overedit.xml +2 -0
  1192. package/dist/ai/kit/anti-pattern/coding/ap-redundant-jsdoc-duplication.xml +19 -0
  1193. package/dist/ai/kit/anti-pattern/critic/AP_CERTAINTY.xml +2 -0
  1194. package/dist/ai/kit/anti-pattern/critic/AP_CREEP.xml +2 -0
  1195. package/dist/ai/kit/anti-pattern/critic/AP_DISMISS_CONFUSION.xml +2 -0
  1196. package/dist/ai/kit/anti-pattern/critic/AP_EDIT.xml +2 -0
  1197. package/dist/ai/kit/anti-pattern/critic/AP_FORMAT_BIAS.xml +2 -0
  1198. package/dist/ai/kit/anti-pattern/critic/AP_INTERNAL_PARANOIA.xml +2 -0
  1199. package/dist/ai/kit/anti-pattern/critic/AP_NITPICK.xml +2 -0
  1200. package/dist/ai/kit/anti-pattern/critic/AP_REUSE_BLIND.xml +2 -0
  1201. package/dist/ai/kit/anti-pattern/critic/AP_SELF_CRITIQUE.xml +2 -0
  1202. package/dist/ai/kit/anti-pattern/critic/AP_SURFACE.xml +2 -0
  1203. package/dist/ai/kit/anti-pattern/critic/ap-certainty.xml +2 -0
  1204. package/dist/ai/kit/anti-pattern/critic/ap-creep.xml +2 -0
  1205. package/dist/ai/kit/anti-pattern/critic/ap-dismiss-confusion.xml +2 -0
  1206. package/dist/ai/kit/anti-pattern/critic/ap-edit.xml +2 -0
  1207. package/dist/ai/kit/anti-pattern/critic/ap-format-bias.xml +2 -0
  1208. package/dist/ai/kit/anti-pattern/critic/ap-internal-paranoia.xml +2 -0
  1209. package/dist/ai/kit/anti-pattern/critic/ap-nitpick.xml +2 -0
  1210. package/dist/ai/kit/anti-pattern/critic/ap-reuse-blind.xml +2 -0
  1211. package/dist/ai/kit/anti-pattern/critic/ap-self-critique.xml +2 -0
  1212. package/dist/ai/kit/anti-pattern/critic/ap-surface.xml +2 -0
  1213. package/dist/ai/kit/anti-pattern/e2e/AP_CLI_AUTO_UPDATE_SNAPSHOTS.xml +6 -0
  1214. package/dist/ai/kit/anti-pattern/e2e/AP_CLI_CSS_XPATH_FROM_CODEGEN.xml +6 -0
  1215. package/dist/ai/kit/anti-pattern/e2e/AP_CLI_HEADED_FOR_AGENT.xml +6 -0
  1216. package/dist/ai/kit/anti-pattern/e2e/AP_CLI_SKIP_TRACE_ON_FAILURE.xml +6 -0
  1217. package/dist/ai/kit/anti-pattern/e2e/AP_CLI_WRITE_TEST_WITHOUT_AX_TREE.xml +6 -0
  1218. package/dist/ai/kit/anti-pattern/e2e/AP_E2E_CSS_LOCATOR.xml +6 -0
  1219. package/dist/ai/kit/anti-pattern/e2e/AP_E2E_FULL_PAGE_SNAPSHOT.xml +6 -0
  1220. package/dist/ai/kit/anti-pattern/e2e/AP_E2E_INLINE_LOGIN.xml +6 -0
  1221. package/dist/ai/kit/anti-pattern/e2e/AP_E2E_STANDALONE_POM.xml +6 -0
  1222. package/dist/ai/kit/anti-pattern/e2e/AP_E2E_UNMOCKED_NETWORK.xml +6 -0
  1223. package/dist/ai/kit/anti-pattern/e2e/ap-cli-auto-update-snapshots.xml +6 -0
  1224. package/dist/ai/kit/anti-pattern/e2e/ap-cli-css-xpath-from-codegen.xml +6 -0
  1225. package/dist/ai/kit/anti-pattern/e2e/ap-cli-headed-for-agent.xml +6 -0
  1226. package/dist/ai/kit/anti-pattern/e2e/ap-cli-skip-trace-on-failure.xml +6 -0
  1227. package/dist/ai/kit/anti-pattern/e2e/ap-cli-write-test-without-ax-tree.xml +6 -0
  1228. package/dist/ai/kit/anti-pattern/e2e/ap-e2e-css-locator.xml +6 -0
  1229. package/dist/ai/kit/anti-pattern/e2e/ap-e2e-full-page-snapshot.xml +6 -0
  1230. package/dist/ai/kit/anti-pattern/e2e/ap-e2e-inline-login.xml +6 -0
  1231. package/dist/ai/kit/anti-pattern/e2e/ap-e2e-standalone-pom.xml +6 -0
  1232. package/dist/ai/kit/anti-pattern/e2e/ap-e2e-unmocked-network.xml +6 -0
  1233. package/dist/ai/kit/anti-pattern/infra/AP_AGENT_DISABLE_COMMENT.xml +6 -0
  1234. package/dist/ai/kit/anti-pattern/infra/AP_FORCE_PUSH_TO_MAIN.xml +6 -0
  1235. package/dist/ai/kit/anti-pattern/infra/AP_FORMATTING_DUPLICATION.xml +6 -0
  1236. package/dist/ai/kit/anti-pattern/infra/AP_LIGHTWEIGHT_TAG.xml +6 -0
  1237. package/dist/ai/kit/anti-pattern/infra/AP_MULTIPLE_LOCK_FILES.xml +6 -0
  1238. package/dist/ai/kit/anti-pattern/infra/AP_NODE_MODULES_COMMITTED.xml +6 -0
  1239. package/dist/ai/kit/anti-pattern/infra/AP_NO_VERIFY_AS_HABIT.xml +6 -0
  1240. package/dist/ai/kit/anti-pattern/infra/AP_NVMRC_ENGINES_MISMATCH.xml +6 -0
  1241. package/dist/ai/kit/anti-pattern/infra/AP_NVMRC_RANGE.xml +6 -0
  1242. package/dist/ai/kit/anti-pattern/infra/AP_SECRET_IN_HISTORY.xml +6 -0
  1243. package/dist/ai/kit/anti-pattern/infra/AP_TYPE_AWARE_DUPLICATION.xml +6 -0
  1244. package/dist/ai/kit/anti-pattern/infra/AP_UNMOTIVATED_NON_AUTOFIX_RULE.xml +6 -0
  1245. package/dist/ai/kit/anti-pattern/infra/AP_WARN_LEVEL_USAGE.xml +6 -0
  1246. package/dist/ai/kit/anti-pattern/infra/ap-agent-disable-comment.xml +6 -0
  1247. package/dist/ai/kit/anti-pattern/infra/ap-force-push-to-main.xml +6 -0
  1248. package/dist/ai/kit/anti-pattern/infra/ap-formatting-duplication.xml +6 -0
  1249. package/dist/ai/kit/anti-pattern/infra/ap-lightweight-tag.xml +6 -0
  1250. package/dist/ai/kit/anti-pattern/infra/ap-multiple-lock-files.xml +6 -0
  1251. package/dist/ai/kit/anti-pattern/infra/ap-no-verify-as-habit.xml +6 -0
  1252. package/dist/ai/kit/anti-pattern/infra/ap-node-modules-committed.xml +6 -0
  1253. package/dist/ai/kit/anti-pattern/infra/ap-npmrc-absent.xml +6 -0
  1254. package/dist/ai/kit/anti-pattern/infra/ap-nvmrc-engines-mismatch.xml +6 -0
  1255. package/dist/ai/kit/anti-pattern/infra/ap-nvmrc-range.xml +6 -0
  1256. package/dist/ai/kit/anti-pattern/infra/ap-secret-in-history.xml +6 -0
  1257. package/dist/ai/kit/anti-pattern/infra/ap-tool-range-pin.xml +6 -0
  1258. package/dist/ai/kit/anti-pattern/infra/ap-type-aware-duplication.xml +6 -0
  1259. package/dist/ai/kit/anti-pattern/infra/ap-unmotivated-non-autofix-rule.xml +6 -0
  1260. package/dist/ai/kit/anti-pattern/infra/ap-warn-level-usage.xml +6 -0
  1261. package/dist/ai/kit/anti-pattern/logging/AP_BARE_CONSOLE_AND_LOST_CAUSE.xml +32 -0
  1262. package/dist/ai/kit/anti-pattern/logging/ap-bare-console-and-lost-cause.xml +32 -0
  1263. package/dist/ai/kit/anti-pattern/process/AP_NO_RE_DISPATCH.xml +2 -0
  1264. package/dist/ai/kit/anti-pattern/process/AP_SPIN.xml +2 -0
  1265. package/dist/ai/kit/anti-pattern/process/AP_VAGUE_REJECT.xml +2 -0
  1266. package/dist/ai/kit/anti-pattern/process/ap-no-re-dispatch.xml +2 -0
  1267. package/dist/ai/kit/anti-pattern/process/ap-spin.xml +2 -0
  1268. package/dist/ai/kit/anti-pattern/process/ap-vague-reject.xml +2 -0
  1269. package/dist/ai/kit/anti-pattern/spec/AP_ENTITY_SPRAWL.xml +2 -0
  1270. package/dist/ai/kit/anti-pattern/spec/ap-entity-sprawl.xml +2 -0
  1271. package/dist/ai/kit/anti-pattern/storybook/AP_ADHOC_HIERARCHY.xml +6 -0
  1272. package/dist/ai/kit/anti-pattern/storybook/AP_MISSING_PLAY.xml +6 -0
  1273. package/dist/ai/kit/anti-pattern/storybook/AP_MULTIPLE_CONCEPTS_ONE_STORY.xml +6 -0
  1274. package/dist/ai/kit/anti-pattern/storybook/AP_RESTATED_ARGS.xml +6 -0
  1275. package/dist/ai/kit/anti-pattern/storybook/AP_SB_AGENTS_MD_SKIPPED.xml +6 -0
  1276. package/dist/ai/kit/anti-pattern/storybook/AP_SB_HALLUCINATED_PROPS.xml +6 -0
  1277. package/dist/ai/kit/anti-pattern/storybook/AP_SB_MANUAL_SCAFFOLD_BEFORE_INIT.xml +6 -0
  1278. package/dist/ai/kit/anti-pattern/storybook/AP_SB_MISSING_AI_TAG.xml +6 -0
  1279. package/dist/ai/kit/anti-pattern/storybook/AP_SB_MISSING_PLAY_ON_INTERACTION.xml +6 -0
  1280. package/dist/ai/kit/anti-pattern/storybook/AP_SB_NO_MCP_INTEGRATION.xml +6 -0
  1281. package/dist/ai/kit/anti-pattern/storybook/AP_SB_REWRITE_INSTEAD_OF_COMPOSE.xml +6 -0
  1282. package/dist/ai/kit/anti-pattern/storybook/AP_SB_SKIP_SELF_VERIFY.xml +6 -0
  1283. package/dist/ai/kit/anti-pattern/storybook/AP_SB_VERIFY_SKIPPED.xml +6 -0
  1284. package/dist/ai/kit/anti-pattern/storybook/ap-adhoc-hierarchy.xml +6 -0
  1285. package/dist/ai/kit/anti-pattern/storybook/ap-missing-play.xml +6 -0
  1286. package/dist/ai/kit/anti-pattern/storybook/ap-multiple-concepts-one-story.xml +6 -0
  1287. package/dist/ai/kit/anti-pattern/storybook/ap-restated-args.xml +6 -0
  1288. package/dist/ai/kit/anti-pattern/storybook/ap-sb-agents-md-skipped.xml +6 -0
  1289. package/dist/ai/kit/anti-pattern/storybook/ap-sb-hallucinated-props.xml +6 -0
  1290. package/dist/ai/kit/anti-pattern/storybook/ap-sb-manual-scaffold-before-init.xml +6 -0
  1291. package/dist/ai/kit/anti-pattern/storybook/ap-sb-missing-ai-tag.xml +6 -0
  1292. package/dist/ai/kit/anti-pattern/storybook/ap-sb-missing-play-on-interaction.xml +6 -0
  1293. package/dist/ai/kit/anti-pattern/storybook/ap-sb-no-mcp-integration.xml +6 -0
  1294. package/dist/ai/kit/anti-pattern/storybook/ap-sb-rewrite-instead-of-compose.xml +6 -0
  1295. package/dist/ai/kit/anti-pattern/storybook/ap-sb-skip-self-verify.xml +6 -0
  1296. package/dist/ai/kit/anti-pattern/storybook/ap-sb-verify-skipped.xml +6 -0
  1297. package/dist/ai/kit/anti-pattern/svelte/AP_DERIVED_WITH_SIDE_EFFECT.xml +6 -0
  1298. package/dist/ai/kit/anti-pattern/svelte/AP_EFFECT_WITHOUT_TEARDOWN.xml +6 -0
  1299. package/dist/ai/kit/anti-pattern/svelte/AP_EXPORT_LET_LEGACY.xml +6 -0
  1300. package/dist/ai/kit/anti-pattern/svelte/AP_ON_EVENT_DIRECTIVE.xml +6 -0
  1301. package/dist/ai/kit/anti-pattern/svelte/AP_REACTIVE_DOLLAR_COLON.xml +6 -0
  1302. package/dist/ai/kit/anti-pattern/svelte/AP_RUNES_IN_PLAIN_TS.xml +6 -0
  1303. package/dist/ai/kit/anti-pattern/svelte/AP_SK_COMPONENT_FETCH_FOR_INITIAL_DATA.xml +6 -0
  1304. package/dist/ai/kit/anti-pattern/svelte/AP_SK_GLOBAL_FETCH_IN_LOAD.xml +6 -0
  1305. package/dist/ai/kit/anti-pattern/svelte/AP_SK_PAGE_OPTIONS_GLOBALIZED.xml +6 -0
  1306. package/dist/ai/kit/anti-pattern/svelte/AP_SK_PRIVATE_ENV_IN_CLIENT.xml +6 -0
  1307. package/dist/ai/kit/anti-pattern/svelte/AP_SK_THROW_INSTEAD_OF_FAIL.xml +6 -0
  1308. package/dist/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_DIRECT_QUERYSELECTOR.xml +6 -0
  1309. package/dist/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_NO_CLEANUP.xml +6 -0
  1310. package/dist/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_NO_EFFECT_ROOT.xml +6 -0
  1311. package/dist/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_NO_FLUSH.xml +6 -0
  1312. package/dist/ai/kit/anti-pattern/svelte/AP_SVELTE_TEST_PLAIN_TS_EXTENSION.xml +6 -0
  1313. package/dist/ai/kit/anti-pattern/svelte/ap-derived-with-side-effect.xml +6 -0
  1314. package/dist/ai/kit/anti-pattern/svelte/ap-effect-without-teardown.xml +6 -0
  1315. package/dist/ai/kit/anti-pattern/svelte/ap-export-let-legacy.xml +6 -0
  1316. package/dist/ai/kit/anti-pattern/svelte/ap-on-event-directive.xml +6 -0
  1317. package/dist/ai/kit/anti-pattern/svelte/ap-reactive-dollar-colon.xml +6 -0
  1318. package/dist/ai/kit/anti-pattern/svelte/ap-runes-in-plain-ts.xml +6 -0
  1319. package/dist/ai/kit/anti-pattern/svelte/ap-sk-component-fetch-for-initial-data.xml +6 -0
  1320. package/dist/ai/kit/anti-pattern/svelte/ap-sk-global-fetch-in-load.xml +6 -0
  1321. package/dist/ai/kit/anti-pattern/svelte/ap-sk-page-options-globalized.xml +6 -0
  1322. package/dist/ai/kit/anti-pattern/svelte/ap-sk-private-env-in-client.xml +6 -0
  1323. package/dist/ai/kit/anti-pattern/svelte/ap-sk-throw-instead-of-fail.xml +6 -0
  1324. package/dist/ai/kit/anti-pattern/svelte/ap-svelte-test-direct-queryselector.xml +6 -0
  1325. package/dist/ai/kit/anti-pattern/svelte/ap-svelte-test-no-cleanup.xml +6 -0
  1326. package/dist/ai/kit/anti-pattern/svelte/ap-svelte-test-no-effect-root.xml +6 -0
  1327. package/dist/ai/kit/anti-pattern/svelte/ap-svelte-test-no-flush.xml +6 -0
  1328. package/dist/ai/kit/anti-pattern/svelte/ap-svelte-test-plain-ts-extension.xml +6 -0
  1329. package/dist/ai/kit/anti-pattern/testing/AP_ATOMIC_NOISE_ANCHORS.xml +20 -0
  1330. package/dist/ai/kit/anti-pattern/testing/AP_BEFORE_EACH_LET_PILEUP.xml +6 -0
  1331. package/dist/ai/kit/anti-pattern/testing/AP_CONTAINS_ON_ERROR_AND_PRIVATE_INSPECTION.xml +6 -0
  1332. package/dist/ai/kit/anti-pattern/testing/AP_DUPLICATE_BDD_GROUP.xml +6 -0
  1333. package/dist/ai/kit/anti-pattern/testing/AP_LEAKED_LIFECYCLE_AND_GLOBAL_RELIANCE.xml +6 -0
  1334. package/dist/ai/kit/anti-pattern/testing/AP_PARALLEL_FACTORIES.xml +6 -0
  1335. package/dist/ai/kit/anti-pattern/testing/AP_PRIVATE_INSPECTION.xml +6 -0
  1336. package/dist/ai/kit/anti-pattern/testing/AP_SHARED_MUTABLE_STATE_AND_NON_ENGLISH_NARRATION.xml +6 -0
  1337. package/dist/ai/kit/anti-pattern/testing/AP_SKIP_INSTEAD_OF_FIX.xml +6 -0
  1338. package/dist/ai/kit/anti-pattern/testing/AP_SNAPSHOT_FOR_SCALAR.xml +6 -0
  1339. package/dist/ai/kit/anti-pattern/testing/AP_TRY_CATCH_FLAG_ANTIPATTERN.xml +6 -0
  1340. package/dist/ai/kit/anti-pattern/testing/AP_UNJUSTIFIED_VI_MOCK.xml +6 -0
  1341. package/dist/ai/kit/anti-pattern/testing/ap-atomic-noise-anchors.xml +20 -0
  1342. package/dist/ai/kit/anti-pattern/testing/ap-before-each-let-pileup.xml +6 -0
  1343. package/dist/ai/kit/anti-pattern/testing/ap-contains-on-error-and-private-inspection.xml +6 -0
  1344. package/dist/ai/kit/anti-pattern/testing/ap-duplicate-bdd-group.xml +6 -0
  1345. package/dist/ai/kit/anti-pattern/testing/ap-leaked-lifecycle-and-global-reliance.xml +6 -0
  1346. package/dist/ai/kit/anti-pattern/testing/ap-parallel-factories.xml +6 -0
  1347. package/dist/ai/kit/anti-pattern/testing/ap-private-inspection.xml +6 -0
  1348. package/dist/ai/kit/anti-pattern/testing/ap-shared-mutable-state-and-non-english-narration.xml +6 -0
  1349. package/dist/ai/kit/anti-pattern/testing/ap-skip-instead-of-fix.xml +6 -0
  1350. package/dist/ai/kit/anti-pattern/testing/ap-snapshot-for-scalar.xml +6 -0
  1351. package/dist/ai/kit/anti-pattern/testing/ap-try-catch-flag-antipattern.xml +6 -0
  1352. package/dist/ai/kit/anti-pattern/testing/ap-unjustified-vi-mock.xml +6 -0
  1353. package/dist/ai/kit/anti-pattern/uikit/AP_DROPPED_VARIANTS.xml +6 -0
  1354. package/dist/ai/kit/anti-pattern/uikit/AP_FABRICATED_MEASUREMENTS.xml +6 -0
  1355. package/dist/ai/kit/anti-pattern/uikit/AP_HARDCODED_PIXELS.xml +6 -0
  1356. package/dist/ai/kit/anti-pattern/uikit/AP_HOST_SELECTOR.xml +6 -0
  1357. package/dist/ai/kit/anti-pattern/uikit/AP_IMG_TAG_ICON.xml +6 -0
  1358. package/dist/ai/kit/anti-pattern/uikit/AP_MISSING_A11Y_AUDIT.xml +6 -0
  1359. package/dist/ai/kit/anti-pattern/uikit/AP_MISSING_ARIA.xml +6 -0
  1360. package/dist/ai/kit/anti-pattern/uikit/AP_MISSING_DATA_STATE.xml +6 -0
  1361. package/dist/ai/kit/anti-pattern/uikit/AP_OVERRIDE_WITHOUT_COMMENT.xml +6 -0
  1362. package/dist/ai/kit/anti-pattern/uikit/AP_PASCAL_CASE_FILENAME.xml +6 -0
  1363. package/dist/ai/kit/anti-pattern/uikit/AP_SILENT_MISSING_TOKEN.xml +6 -0
  1364. package/dist/ai/kit/anti-pattern/uikit/ap-dropped-variants.xml +6 -0
  1365. package/dist/ai/kit/anti-pattern/uikit/ap-fabricated-measurements.xml +6 -0
  1366. package/dist/ai/kit/anti-pattern/uikit/ap-hardcoded-pixels.xml +6 -0
  1367. package/dist/ai/kit/anti-pattern/uikit/ap-host-selector.xml +6 -0
  1368. package/dist/ai/kit/anti-pattern/uikit/ap-img-tag-icon.xml +6 -0
  1369. package/dist/ai/kit/anti-pattern/uikit/ap-missing-a11y-audit.xml +6 -0
  1370. package/dist/ai/kit/anti-pattern/uikit/ap-missing-aria.xml +6 -0
  1371. package/dist/ai/kit/anti-pattern/uikit/ap-missing-data-state.xml +6 -0
  1372. package/dist/ai/kit/anti-pattern/uikit/ap-override-without-comment.xml +6 -0
  1373. package/dist/ai/kit/anti-pattern/uikit/ap-pascal-case-filename.xml +6 -0
  1374. package/dist/ai/kit/anti-pattern/uikit/ap-silent-missing-token.xml +6 -0
  1375. package/dist/ai/kit/axiom/agent-inbox/ax-complexity-budget.xml +9 -0
  1376. package/dist/ai/kit/axiom/agent-inbox/ax-minimal-change-suspicion.xml +9 -0
  1377. package/dist/ai/kit/axiom/agent-inbox/ax-review-purpose.xml +10 -0
  1378. package/dist/ai/kit/axiom/agent-inbox/ax-simpler-alternative.xml +9 -0
  1379. package/dist/ai/kit/axiom/audit/ax-audit-modes.xml +6 -0
  1380. package/dist/ai/kit/axiom/audit/ax-audit-reads-code.xml +11 -0
  1381. package/dist/ai/kit/axiom/audit/ax-bdd-coverage-verification.xml +8 -0
  1382. package/dist/ai/kit/axiom/audit/ax-closed-world-primary-check.xml +4 -0
  1383. package/dist/ai/kit/axiom/audit/ax-completeness-check.xml +6 -0
  1384. package/dist/ai/kit/axiom/audit/ax-drift-taxonomy.xml +21 -0
  1385. package/dist/ai/kit/axiom/audit/ax-ephemeral-output.xml +8 -0
  1386. package/dist/ai/kit/axiom/audit/ax-execution-log-verification.xml +6 -0
  1387. package/dist/ai/kit/axiom/audit/ax-finding-routing.xml +22 -0
  1388. package/dist/ai/kit/axiom/audit/ax-findings-as-proposals.xml +7 -0
  1389. package/dist/ai/kit/axiom/audit/ax-git-diff-scan.xml +11 -0
  1390. package/dist/ai/kit/axiom/audit/ax-insight-backflow-capture.xml +10 -0
  1391. package/dist/ai/kit/axiom/audit/ax-learning-context.xml +2 -0
  1392. package/dist/ai/kit/axiom/audit/ax-mechanical-via-sdd-check.xml +9 -0
  1393. package/dist/ai/kit/axiom/audit/ax-neutral-findings.xml +4 -0
  1394. package/dist/ai/kit/axiom/audit/ax-no-auto-fix.xml +4 -0
  1395. package/dist/ai/kit/axiom/audit/ax-provenance-is-a-product.xml +2 -0
  1396. package/dist/ai/kit/axiom/audit/ax-reopen-rounds-in-ticket.xml +10 -0
  1397. package/dist/ai/kit/axiom/audit/ax-rules-cascade-verification.xml +17 -0
  1398. package/dist/ai/kit/axiom/audit/ax-rules-compliance-against-activated-rules.xml +22 -0
  1399. package/dist/ai/kit/axiom/audit/ax-runtime-backing-verification.xml +8 -0
  1400. package/dist/ai/kit/axiom/audit/ax-severity-tagging.xml +13 -0
  1401. package/dist/ai/kit/axiom/audit/ax-severity.xml +7 -0
  1402. package/dist/ai/kit/axiom/audit/ax-stale-after-pivot-verification.xml +12 -0
  1403. package/dist/ai/kit/axiom/audit/ax-task-id-integrity.xml +13 -0
  1404. package/dist/ai/kit/axiom/boundary/ax-bootstrap-narrow-read.xml +6 -0
  1405. package/dist/ai/kit/axiom/boundary/ax-closed-world-inventory.xml +4 -0
  1406. package/dist/ai/kit/axiom/boundary/ax-cross-scope-dependencies.xml +4 -0
  1407. package/dist/ai/kit/axiom/boundary/ax-entity-surface-completeness.xml +4 -0
  1408. package/dist/ai/kit/axiom/boundary/ax-guarded-result-boundary.xml +5 -0
  1409. package/dist/ai/kit/axiom/boundary/ax-isolation-signal.xml +2 -0
  1410. package/dist/ai/kit/axiom/boundary/ax-isolation-through-public-boundary.xml +4 -0
  1411. package/dist/ai/kit/axiom/boundary/ax-portal-read-only-with-placeholder-exception.xml +4 -0
  1412. package/dist/ai/kit/axiom/boundary/ax-reference-over-copy.xml +2 -0
  1413. package/dist/ai/kit/axiom/boundary/ax-result-public-boundary.xml +11 -0
  1414. package/dist/ai/kit/axiom/boundary/ax-scope-type-gate.xml +6 -0
  1415. package/dist/ai/kit/axiom/boundary/ax-semantic-location-over-lines.xml +2 -0
  1416. package/dist/ai/kit/axiom/boundary/ax-semantic-safety.xml +2 -0
  1417. package/dist/ai/kit/axiom/boundary/ax-spec-never-edited.xml +4 -0
  1418. package/dist/ai/kit/axiom/boundary/ax-ssot-traceability.xml +4 -0
  1419. package/dist/ai/kit/axiom/boundary/ax-ticket-write-scope.xml +9 -0
  1420. package/dist/ai/kit/axiom/coding/ax-ai-readability.xml +2 -0
  1421. package/dist/ai/kit/axiom/coding/ax-anchor-format.xml +6 -0
  1422. package/dist/ai/kit/axiom/coding/ax-comment-density.xml +4 -0
  1423. package/dist/ai/kit/axiom/coding/ax-comment-placement.xml +4 -0
  1424. package/dist/ai/kit/axiom/coding/ax-comment-vocabulary.xml +6 -0
  1425. package/dist/ai/kit/axiom/coding/ax-comments-add-nonsyntactic-intent.xml +4 -0
  1426. package/dist/ai/kit/axiom/coding/ax-configurable-names.xml +5 -0
  1427. package/dist/ai/kit/axiom/coding/ax-consumer-driven.xml +8 -0
  1428. package/dist/ai/kit/axiom/coding/ax-contractual-naming.xml +4 -0
  1429. package/dist/ai/kit/axiom/coding/ax-domain-prefix-for-external.xml +4 -0
  1430. package/dist/ai/kit/axiom/coding/ax-early-exit.xml +2 -0
  1431. package/dist/ai/kit/axiom/coding/ax-explicit-class-fields.xml +4 -0
  1432. package/dist/ai/kit/axiom/coding/ax-file-header-append-only.xml +10 -0
  1433. package/dist/ai/kit/axiom/coding/ax-file-header-task-traceability.xml +16 -0
  1434. package/dist/ai/kit/axiom/coding/ax-file-level-context.xml +13 -0
  1435. package/dist/ai/kit/axiom/coding/ax-import-canonical-form.xml +15 -0
  1436. package/dist/ai/kit/axiom/coding/ax-introduced-discipline.xml +4 -0
  1437. package/dist/ai/kit/axiom/coding/ax-modern-ts-density.xml +4 -0
  1438. package/dist/ai/kit/axiom/coding/ax-modularity-limits.xml +4 -0
  1439. package/dist/ai/kit/axiom/coding/ax-namespace-naming.xml +4 -0
  1440. package/dist/ai/kit/axiom/coding/ax-no-code-generation.xml +2 -0
  1441. package/dist/ai/kit/axiom/coding/ax-no-premature-abstractions.xml +4 -0
  1442. package/dist/ai/kit/axiom/coding/ax-no-silent-escape-hatch.xml +4 -0
  1443. package/dist/ai/kit/axiom/coding/ax-node-builtins-prefix.xml +10 -0
  1444. package/dist/ai/kit/axiom/coding/ax-principled-decomposition.xml +4 -0
  1445. package/dist/ai/kit/axiom/coding/ax-teleological-naming.xml +4 -0
  1446. package/dist/ai/kit/axiom/coding/ax-tools-as-hands.xml +12 -0
  1447. package/dist/ai/kit/axiom/coding/ax-verb-precision.xml +4 -0
  1448. package/dist/ai/kit/axiom/coding/ax-yagni-overengineering-guard.xml +4 -0
  1449. package/dist/ai/kit/axiom/critic/ax-comprehension-first.xml +2 -0
  1450. package/dist/ai/kit/axiom/critic/ax-confusion-bug.xml +2 -0
  1451. package/dist/ai/kit/axiom/critic/ax-critic-model-tier.xml +10 -0
  1452. package/dist/ai/kit/axiom/critic/ax-default-accept.xml +2 -0
  1453. package/dist/ai/kit/axiom/critic/ax-finding-addressee.xml +6 -0
  1454. package/dist/ai/kit/axiom/critic/ax-goal-owner-gate.xml +7 -0
  1455. package/dist/ai/kit/axiom/critic/ax-isolation.xml +2 -0
  1456. package/dist/ai/kit/axiom/critic/ax-polish-mode.xml +7 -0
  1457. package/dist/ai/kit/axiom/critic/ax-product-architect-lens.xml +13 -0
  1458. package/dist/ai/kit/axiom/critic/ax-read-only.xml +2 -0
  1459. package/dist/ai/kit/axiom/critic/ax-uncertainty-is-signal.xml +2 -0
  1460. package/dist/ai/kit/axiom/critic/ax-uncomfortable-questions.xml +12 -0
  1461. package/dist/ai/kit/axiom/e2e/ax-cli-ax-tree-as-primary-vision.xml +6 -0
  1462. package/dist/ai/kit/axiom/e2e/ax-cli-codegen-is-recorder-not-author.xml +4 -0
  1463. package/dist/ai/kit/axiom/e2e/ax-cli-dev-server-precondition.xml +4 -0
  1464. package/dist/ai/kit/axiom/e2e/ax-cli-explore-before-author.xml +6 -0
  1465. package/dist/ai/kit/axiom/e2e/ax-cli-explore-loop-has-four-steps.xml +10 -0
  1466. package/dist/ai/kit/axiom/e2e/ax-cli-headless-for-agent.xml +4 -0
  1467. package/dist/ai/kit/axiom/e2e/ax-cli-role-locators-from-ax-tree.xml +4 -0
  1468. package/dist/ai/kit/axiom/e2e/ax-cli-snapshot-update-gate.xml +6 -0
  1469. package/dist/ai/kit/axiom/e2e/ax-cli-trace-for-failure-diagnosis.xml +6 -0
  1470. package/dist/ai/kit/axiom/e2e/ax-cli-transition-to-authoring.xml +4 -0
  1471. package/dist/ai/kit/axiom/e2e/ax-e2e-auth-via-storage-state.xml +4 -0
  1472. package/dist/ai/kit/axiom/e2e/ax-e2e-ax-tree-as-contract.xml +4 -0
  1473. package/dist/ai/kit/axiom/e2e/ax-e2e-browser-coverage-pragmatic.xml +4 -0
  1474. package/dist/ai/kit/axiom/e2e/ax-e2e-file-layout.xml +4 -0
  1475. package/dist/ai/kit/axiom/e2e/ax-e2e-file-size-budget.xml +4 -0
  1476. package/dist/ai/kit/axiom/e2e/ax-e2e-fixture-based-pom.xml +6 -0
  1477. package/dist/ai/kit/axiom/e2e/ax-e2e-headless-always.xml +4 -0
  1478. package/dist/ai/kit/axiom/e2e/ax-e2e-network-mock-at-route.xml +6 -0
  1479. package/dist/ai/kit/axiom/e2e/ax-e2e-role-locators-only.xml +4 -0
  1480. package/dist/ai/kit/axiom/e2e/ax-e2e-self-verification-loop.xml +4 -0
  1481. package/dist/ai/kit/axiom/e2e/ax-e2e-snapshot-partial-by-default.xml +4 -0
  1482. package/dist/ai/kit/axiom/e2e/ax-e2e-structure-ax-first.xml +10 -0
  1483. package/dist/ai/kit/axiom/e2e/ax-e2e-visual-regression-gated.xml +4 -0
  1484. package/dist/ai/kit/axiom/error/ax-catch-log-recover.xml +10 -0
  1485. package/dist/ai/kit/axiom/error/ax-error-chaining-cause.xml +4 -0
  1486. package/dist/ai/kit/axiom/error/ax-error-via-class.xml +4 -0
  1487. package/dist/ai/kit/axiom/error/ax-fail-fast-validation.xml +4 -0
  1488. package/dist/ai/kit/axiom/error/ax-focused-error-assertions.xml +4 -0
  1489. package/dist/ai/kit/axiom/error/ax-mandatory-try-catch-in-business-logic.xml +4 -0
  1490. package/dist/ai/kit/axiom/error/ax-markup-safety.xml +2 -0
  1491. package/dist/ai/kit/axiom/error/ax-minimal-error-surface.xml +4 -0
  1492. package/dist/ai/kit/axiom/error/ax-must-extractor.xml +4 -0
  1493. package/dist/ai/kit/axiom/error/ax-no-bare-throw-unknown.xml +6 -0
  1494. package/dist/ai/kit/axiom/error/ax-no-result-iserr-short-circuit.xml +5 -0
  1495. package/dist/ai/kit/axiom/error/ax-no-result-object-literal.xml +6 -0
  1496. package/dist/ai/kit/axiom/error/ax-no-result-ok-short-circuit.xml +6 -0
  1497. package/dist/ai/kit/axiom/error/ax-no-result-second-generic.xml +6 -0
  1498. package/dist/ai/kit/axiom/error/ax-result-unwrap-on-success-paths.xml +4 -0
  1499. package/dist/ai/kit/axiom/error/ax-trace-prefixed-errors.xml +4 -0
  1500. package/dist/ai/kit/axiom/infra/ax-ai-first-scripts-one-shot.xml +27 -0
  1501. package/dist/ai/kit/axiom/infra/ax-autofix-preferred.xml +12 -0
  1502. package/dist/ai/kit/axiom/infra/ax-binary-severity.xml +10 -0
  1503. package/dist/ai/kit/axiom/infra/ax-branch-strategy.xml +16 -0
  1504. package/dist/ai/kit/axiom/infra/ax-commit-convention.xml +18 -0
  1505. package/dist/ai/kit/axiom/infra/ax-config-auditable-by-agent.xml +10 -0
  1506. package/dist/ai/kit/axiom/infra/ax-custom-plugins-obey-meta-policy.xml +9 -0
  1507. package/dist/ai/kit/axiom/infra/ax-dependency-addition-checklist.xml +9 -0
  1508. package/dist/ai/kit/axiom/infra/ax-exact-pinning-for-tooling.xml +10 -0
  1509. package/dist/ai/kit/axiom/infra/ax-flat-config.xml +6 -0
  1510. package/dist/ai/kit/axiom/infra/ax-gitignore-baseline.xml +22 -0
  1511. package/dist/ai/kit/axiom/infra/ax-history-policy.xml +16 -0
  1512. package/dist/ai/kit/axiom/infra/ax-hooks-integration.xml +4 -0
  1513. package/dist/ai/kit/axiom/infra/ax-infra-base-bootstrap.xml +6 -0
  1514. package/dist/ai/kit/axiom/infra/ax-infrastructure-flow.xml +16 -0
  1515. package/dist/ai/kit/axiom/infra/ax-lfs-submodules.xml +8 -0
  1516. package/dist/ai/kit/axiom/infra/ax-lint-run-is-mechanical.xml +8 -0
  1517. package/dist/ai/kit/axiom/infra/ax-lock-file-discipline.xml +10 -0
  1518. package/dist/ai/kit/axiom/infra/ax-module-system-explicit.xml +4 -0
  1519. package/dist/ai/kit/axiom/infra/ax-no-disable-comments-by-agent.xml +16 -0
  1520. package/dist/ai/kit/axiom/infra/ax-non-autofix-prefer-delegation.xml +17 -0
  1521. package/dist/ai/kit/axiom/infra/ax-npm-agent-sandbox-registry.xml +28 -0
  1522. package/dist/ai/kit/axiom/infra/ax-presets-passed-through-the-gate.xml +8 -0
  1523. package/dist/ai/kit/axiom/infra/ax-prettier-owns-formatting.xml +12 -0
  1524. package/dist/ai/kit/axiom/infra/ax-project-layout.xml +11 -0
  1525. package/dist/ai/kit/axiom/infra/ax-rule-change-requires-operator-confirm.xml +13 -0
  1526. package/dist/ai/kit/axiom/infra/ax-secrets-discipline.xml +17 -0
  1527. package/dist/ai/kit/axiom/infra/ax-single-package-manager.xml +6 -0
  1528. package/dist/ai/kit/axiom/infra/ax-tag-release.xml +17 -0
  1529. package/dist/ai/kit/axiom/infra/ax-third-party-tool-current-api.xml +8 -0
  1530. package/dist/ai/kit/axiom/infra/ax-type-aware-prefer-ts.xml +10 -0
  1531. package/dist/ai/kit/axiom/interview/ax-amplification-opt-in.xml +8 -0
  1532. package/dist/ai/kit/axiom/interview/ax-coverage-map-closure.xml +9 -0
  1533. package/dist/ai/kit/axiom/interview/ax-defaults-first.xml +9 -0
  1534. package/dist/ai/kit/axiom/logging/ax-alerts-on-symptoms.xml +7 -0
  1535. package/dist/ai/kit/axiom/logging/ax-log-density.xml +4 -0
  1536. package/dist/ai/kit/axiom/logging/ax-log-message-format.xml +6 -0
  1537. package/dist/ai/kit/axiom/logging/ax-log-message-purity.xml +4 -0
  1538. package/dist/ai/kit/axiom/logging/ax-log-performance-metrics.xml +4 -0
  1539. package/dist/ai/kit/axiom/logging/ax-stdout-first-transport.xml +2 -0
  1540. package/dist/ai/kit/axiom/logging/ax-structured-logging.xml +6 -0
  1541. package/dist/ai/kit/axiom/perf/ax-allocation-is-enemy.xml +2 -0
  1542. package/dist/ai/kit/axiom/perf/ax-backpressure-is-law.xml +2 -0
  1543. package/dist/ai/kit/axiom/perf/ax-big-o-matters.xml +2 -0
  1544. package/dist/ai/kit/axiom/perf/ax-budgets-are-numbers.xml +8 -0
  1545. package/dist/ai/kit/axiom/perf/ax-concurrency-limits.xml +2 -0
  1546. package/dist/ai/kit/axiom/perf/ax-engine-optimizations.xml +2 -0
  1547. package/dist/ai/kit/axiom/perf/ax-gc-pressure.xml +2 -0
  1548. package/dist/ai/kit/axiom/perf/ax-hoisting-safety.xml +2 -0
  1549. package/dist/ai/kit/axiom/perf/ax-latency-stacking.xml +2 -0
  1550. package/dist/ai/kit/axiom/perf/ax-one-time-cost.xml +2 -0
  1551. package/dist/ai/kit/axiom/perf/ax-retained-memory.xml +2 -0
  1552. package/dist/ai/kit/axiom/perf/ax-target-hardware.xml +2 -0
  1553. package/dist/ai/kit/axiom/process/ax-amplify-defaults-first.xml +11 -0
  1554. package/dist/ai/kit/axiom/process/ax-artifact-style-self-check.xml +9 -0
  1555. package/dist/ai/kit/axiom/process/ax-audit-hook.xml +3 -0
  1556. package/dist/ai/kit/axiom/process/ax-blocker-escalation.xml +12 -0
  1557. package/dist/ai/kit/axiom/process/ax-blocker-resolution-trail.xml +9 -0
  1558. package/dist/ai/kit/axiom/process/ax-cap-5.xml +1 -0
  1559. package/dist/ai/kit/axiom/process/ax-close-with-integrity-check.xml +4 -0
  1560. package/dist/ai/kit/axiom/process/ax-coverage-report-blocker-explicit.xml +4 -0
  1561. package/dist/ai/kit/axiom/process/ax-cross-scope-change.xml +10 -0
  1562. package/dist/ai/kit/axiom/process/ax-dialogue-discipline.xml +12 -0
  1563. package/dist/ai/kit/axiom/process/ax-dispatch-via-batch.xml +8 -0
  1564. package/dist/ai/kit/axiom/process/ax-diverge-before-recommend.xml +18 -0
  1565. package/dist/ai/kit/axiom/process/ax-env-fix-channel.xml +23 -0
  1566. package/dist/ai/kit/axiom/process/ax-execution-log-plan-vs-fact.xml +18 -0
  1567. package/dist/ai/kit/axiom/process/ax-execution-order.xml +5 -0
  1568. package/dist/ai/kit/axiom/process/ax-fix-classification.xml +7 -0
  1569. package/dist/ai/kit/axiom/process/ax-grouping-reduces-noise.xml +2 -0
  1570. package/dist/ai/kit/axiom/process/ax-halt-vs-fail-distinction.xml +10 -0
  1571. package/dist/ai/kit/axiom/process/ax-handoff-typed.xml +3 -0
  1572. package/dist/ai/kit/axiom/process/ax-live-log.xml +3 -0
  1573. package/dist/ai/kit/axiom/process/ax-narrow-recon.xml +9 -0
  1574. package/dist/ai/kit/axiom/process/ax-no-focused-or-skipped-tests-on-merge.xml +4 -0
  1575. package/dist/ai/kit/axiom/process/ax-no-process-narration.xml +7 -0
  1576. package/dist/ai/kit/axiom/process/ax-operator-agreement.xml +6 -0
  1577. package/dist/ai/kit/axiom/process/ax-operator-dialogue-style.xml +42 -0
  1578. package/dist/ai/kit/axiom/process/ax-operator-language.xml +15 -0
  1579. package/dist/ai/kit/axiom/process/ax-operator-output-live-text.xml +7 -0
  1580. package/dist/ai/kit/axiom/process/ax-operator-safeguard.xml +10 -0
  1581. package/dist/ai/kit/axiom/process/ax-owner.xml +1 -0
  1582. package/dist/ai/kit/axiom/process/ax-permitted-bash-commands.xml +31 -0
  1583. package/dist/ai/kit/axiom/process/ax-phase-scope-lock.xml +3 -0
  1584. package/dist/ai/kit/axiom/process/ax-preflight-blast-radius-scoped.xml +10 -0
  1585. package/dist/ai/kit/axiom/process/ax-problem-probes-spec.xml +14 -0
  1586. package/dist/ai/kit/axiom/process/ax-progressive-disclosure.xml +8 -0
  1587. package/dist/ai/kit/axiom/process/ax-q-ids.xml +3 -0
  1588. package/dist/ai/kit/axiom/process/ax-re-dispatch.xml +1 -0
  1589. package/dist/ai/kit/axiom/process/ax-read-per-manifest.xml +11 -0
  1590. package/dist/ai/kit/axiom/process/ax-rejection-reason.xml +1 -0
  1591. package/dist/ai/kit/axiom/process/ax-reopen-format.xml +15 -0
  1592. package/dist/ai/kit/axiom/process/ax-scale-proportional-depth.xml +8 -0
  1593. package/dist/ai/kit/axiom/process/ax-scratch-log.xml +1 -0
  1594. package/dist/ai/kit/axiom/process/ax-step-by-step-approval.xml +13 -0
  1595. package/dist/ai/kit/axiom/process/ax-stop-no-edits.xml +1 -0
  1596. package/dist/ai/kit/axiom/process/ax-surgical.xml +1 -0
  1597. package/dist/ai/kit/axiom/process/ax-task-id-uniqueness.xml +11 -0
  1598. package/dist/ai/kit/axiom/process/ax-task-parallel.xml +1 -0
  1599. package/dist/ai/kit/axiom/process/ax-task-resolution.xml +10 -0
  1600. package/dist/ai/kit/axiom/process/ax-ticket-section-names-normative.xml +3 -0
  1601. package/dist/ai/kit/axiom/process/ax-tool-invocation.xml +12 -0
  1602. package/dist/ai/kit/axiom/process/ax-verification-before-handoff.xml +19 -0
  1603. package/dist/ai/kit/axiom/process/ax-verify-and-finalize.xml +4 -0
  1604. package/dist/ai/kit/axiom/process/ax-verify-at-end.xml +4 -0
  1605. package/dist/ai/kit/axiom/scaffold/ax-append-only-module-add.xml +9 -0
  1606. package/dist/ai/kit/axiom/scaffold/ax-bootstrap-ticket-derivation.xml +9 -0
  1607. package/dist/ai/kit/axiom/scaffold/ax-cross-scope-task-placement.xml +4 -0
  1608. package/dist/ai/kit/axiom/scaffold/ax-dag-and-ticket-boundaries.xml +16 -0
  1609. package/dist/ai/kit/axiom/scaffold/ax-directive-mode.xml +6 -0
  1610. package/dist/ai/kit/axiom/scaffold/ax-extend-dag-preserves-existing-ids.xml +11 -0
  1611. package/dist/ai/kit/axiom/scaffold/ax-handoff-to-task-scaffolding.xml +6 -0
  1612. package/dist/ai/kit/axiom/scaffold/ax-idempotent-modes.xml +8 -0
  1613. package/dist/ai/kit/axiom/scaffold/ax-mode-auto-detect-or-halt.xml +6 -0
  1614. package/dist/ai/kit/axiom/scaffold/ax-phases-declared-in-header.xml +20 -0
  1615. package/dist/ai/kit/axiom/scaffold/ax-rule-activation-plan.xml +7 -0
  1616. package/dist/ai/kit/axiom/scaffold/ax-rule-activation.xml +8 -0
  1617. package/dist/ai/kit/axiom/scaffold/ax-rules-cascade-resolution.xml +15 -0
  1618. package/dist/ai/kit/axiom/scaffold/ax-rules-load-from-phase-block.xml +16 -0
  1619. package/dist/ai/kit/axiom/scaffold/ax-rules-resolution-hard-fail.xml +4 -0
  1620. package/dist/ai/kit/axiom/scaffold/ax-scope-rules-declaration.xml +15 -0
  1621. package/dist/ai/kit/axiom/scaffold/ax-stack-based-flow.xml +6 -0
  1622. package/dist/ai/kit/axiom/scaffold/ax-task-dimensions.xml +10 -0
  1623. package/dist/ai/kit/axiom/scaffold/ax-ticket-deduplication.xml +4 -0
  1624. package/dist/ai/kit/axiom/scaffold/ax-ticket-has-bdd-and-tests.xml +12 -0
  1625. package/dist/ai/kit/axiom/spec/ax-access-patterns-drive-schema.xml +7 -0
  1626. package/dist/ai/kit/axiom/spec/ax-context-to-contract.xml +4 -0
  1627. package/dist/ai/kit/axiom/spec/ax-contracts-textual-agnostic.xml +11 -0
  1628. package/dist/ai/kit/axiom/spec/ax-data-lifecycle-explicit.xml +7 -0
  1629. package/dist/ai/kit/axiom/spec/ax-decision-log-required.xml +7 -0
  1630. package/dist/ai/kit/axiom/spec/ax-draft-ready-for-review.xml +8 -0
  1631. package/dist/ai/kit/axiom/spec/ax-dx-first.xml +12 -0
  1632. package/dist/ai/kit/axiom/spec/ax-exact-scope.xml +4 -0
  1633. package/dist/ai/kit/axiom/spec/ax-external-input-untrusted.xml +7 -0
  1634. package/dist/ai/kit/axiom/spec/ax-handoff-to-module-decomposition.xml +4 -0
  1635. package/dist/ai/kit/axiom/spec/ax-hierarchical-specs.xml +8 -0
  1636. package/dist/ai/kit/axiom/spec/ax-interface-flow.xml +7 -0
  1637. package/dist/ai/kit/axiom/spec/ax-living-spec.xml +6 -0
  1638. package/dist/ai/kit/axiom/spec/ax-module-boundary-by-operator.xml +4 -0
  1639. package/dist/ai/kit/axiom/spec/ax-no-data-loss.xml +10 -0
  1640. package/dist/ai/kit/axiom/spec/ax-no-silent-option-drop.xml +4 -0
  1641. package/dist/ai/kit/axiom/spec/ax-pivot-requires-supersession.xml +6 -0
  1642. package/dist/ai/kit/axiom/spec/ax-portal-primary-owner.xml +10 -0
  1643. package/dist/ai/kit/axiom/spec/ax-ports-and-abstractions-discipline.xml +7 -0
  1644. package/dist/ai/kit/axiom/spec/ax-product-library-flow.xml +15 -0
  1645. package/dist/ai/kit/axiom/spec/ax-refine-module-preserves-contracts.xml +12 -0
  1646. package/dist/ai/kit/axiom/spec/ax-runtime-backing-explicit.xml +9 -0
  1647. package/dist/ai/kit/axiom/spec/ax-runtime-backing-in-contracts.xml +9 -0
  1648. package/dist/ai/kit/axiom/spec/ax-scope-graph-detection.xml +19 -0
  1649. package/dist/ai/kit/axiom/spec/ax-scope-graph-discipline.xml +8 -0
  1650. package/dist/ai/kit/axiom/spec/ax-scope-spec-module-map-ownership.xml +17 -0
  1651. package/dist/ai/kit/axiom/spec/ax-scope-stays-thin.xml +14 -0
  1652. package/dist/ai/kit/axiom/spec/ax-scope-table-format.xml +7 -0
  1653. package/dist/ai/kit/axiom/spec/ax-scope-type-branch.xml +13 -0
  1654. package/dist/ai/kit/axiom/spec/ax-spec-dimensions.xml +14 -0
  1655. package/dist/ai/kit/axiom/spec/ax-spec-lifecycle.xml +10 -0
  1656. package/dist/ai/kit/axiom/spec/ax-spec-structure.xml +13 -0
  1657. package/dist/ai/kit/axiom/spec/ax-stateless-artifact.xml +6 -0
  1658. package/dist/ai/kit/axiom/spec/ax-vision-only-for-application.xml +4 -0
  1659. package/dist/ai/kit/axiom/storybook/ax-ai-generated-tag.xml +13 -0
  1660. package/dist/ai/kit/axiom/storybook/ax-compose-from-base-story.xml +13 -0
  1661. package/dist/ai/kit/axiom/storybook/ax-hierarchy-mirrors-spec.xml +25 -0
  1662. package/dist/ai/kit/axiom/storybook/ax-one-story-per-variant.xml +18 -0
  1663. package/dist/ai/kit/axiom/storybook/ax-play-function-required.xml +27 -0
  1664. package/dist/ai/kit/axiom/storybook/ax-sb-agents-md-updated-as-part-of-setup.xml +4 -0
  1665. package/dist/ai/kit/axiom/storybook/ax-sb-browser-prereq-handled.xml +4 -0
  1666. package/dist/ai/kit/axiom/storybook/ax-sb-follow-generated-guide.xml +4 -0
  1667. package/dist/ai/kit/axiom/storybook/ax-sb-init-via-official-installer.xml +6 -0
  1668. package/dist/ai/kit/axiom/storybook/ax-sb-mcp-is-mandatory.xml +6 -0
  1669. package/dist/ai/kit/axiom/storybook/ax-sb-no-parallel-test-harnesses.xml +4 -0
  1670. package/dist/ai/kit/axiom/storybook/ax-sb-use-ai-generated-tag.xml +4 -0
  1671. package/dist/ai/kit/axiom/storybook/ax-sb-use-component-change-triggers-story-run.xml +4 -0
  1672. package/dist/ai/kit/axiom/storybook/ax-sb-use-compose-existing-first.xml +4 -0
  1673. package/dist/ai/kit/axiom/storybook/ax-sb-use-mcp-first.xml +4 -0
  1674. package/dist/ai/kit/axiom/storybook/ax-sb-use-never-hallucinate-props.xml +4 -0
  1675. package/dist/ai/kit/axiom/storybook/ax-sb-use-no-parallel-render-harness.xml +4 -0
  1676. package/dist/ai/kit/axiom/storybook/ax-sb-use-one-story-one-concept.xml +4 -0
  1677. package/dist/ai/kit/axiom/storybook/ax-sb-use-play-for-interaction.xml +4 -0
  1678. package/dist/ai/kit/axiom/storybook/ax-sb-use-self-verify-before-handoff.xml +6 -0
  1679. package/dist/ai/kit/axiom/storybook/ax-sb-verify-before-handoff.xml +9 -0
  1680. package/dist/ai/kit/axiom/storybook/ax-storybook-title-from-spec.xml +10 -0
  1681. package/dist/ai/kit/axiom/svelte/ax-bindable-for-two-way.xml +4 -0
  1682. package/dist/ai/kit/axiom/svelte/ax-component-structure-fixed.xml +4 -0
  1683. package/dist/ai/kit/axiom/svelte/ax-derived-is-pure.xml +4 -0
  1684. package/dist/ai/kit/axiom/svelte/ax-effect-ownership-and-cleanup.xml +6 -0
  1685. package/dist/ai/kit/axiom/svelte/ax-event-handlers-as-attributes.xml +6 -0
  1686. package/dist/ai/kit/axiom/svelte/ax-inspect-is-dev-only.xml +4 -0
  1687. package/dist/ai/kit/axiom/svelte/ax-legacy-patterns-forbidden.xml +4 -0
  1688. package/dist/ai/kit/axiom/svelte/ax-local-runes-over-stores-for-local-state.xml +6 -0
  1689. package/dist/ai/kit/axiom/svelte/ax-props-via-destructuring.xml +6 -0
  1690. package/dist/ai/kit/axiom/svelte/ax-runes-are-compiler-keywords.xml +6 -0
  1691. package/dist/ai/kit/axiom/svelte/ax-runes-location-restriction.xml +6 -0
  1692. package/dist/ai/kit/axiom/svelte/ax-sk-adapter-chosen-not-defaulted.xml +4 -0
  1693. package/dist/ai/kit/axiom/svelte/ax-sk-data-via-load.xml +6 -0
  1694. package/dist/ai/kit/axiom/svelte/ax-sk-fetch-from-load-uses-sdk-fetch.xml +4 -0
  1695. package/dist/ai/kit/axiom/svelte/ax-sk-hooks-own-cross-cutting.xml +6 -0
  1696. package/dist/ai/kit/axiom/svelte/ax-sk-mutations-via-actions.xml +6 -0
  1697. package/dist/ai/kit/axiom/svelte/ax-sk-page-options-per-route.xml +6 -0
  1698. package/dist/ai/kit/axiom/svelte/ax-sk-project-layout.xml +4 -0
  1699. package/dist/ai/kit/axiom/svelte/ax-sk-routing-is-file-based.xml +6 -0
  1700. package/dist/ai/kit/axiom/svelte/ax-sk-server-client-boundary.xml +8 -0
  1701. package/dist/ai/kit/axiom/svelte/ax-sk-types-from-generated.xml +4 -0
  1702. package/dist/ai/kit/axiom/svelte/ax-sk-validation-at-action-boundary.xml +4 -0
  1703. package/dist/ai/kit/axiom/svelte/ax-snippets-replace-slots.xml +4 -0
  1704. package/dist/ai/kit/axiom/svelte/ax-svelte-conventions.xml +10 -0
  1705. package/dist/ai/kit/axiom/svelte/ax-svelte-test-effect-root-outside-component.xml +6 -0
  1706. package/dist/ai/kit/axiom/svelte/ax-svelte-test-file-extension.xml +4 -0
  1707. package/dist/ai/kit/axiom/svelte/ax-svelte-test-flush-before-assert.xml +6 -0
  1708. package/dist/ai/kit/axiom/svelte/ax-svelte-test-inherited-vitest-rules.xml +4 -0
  1709. package/dist/ai/kit/axiom/svelte/ax-svelte-test-jsdom-environment.xml +4 -0
  1710. package/dist/ai/kit/axiom/svelte/ax-svelte-test-library-for-rendering.xml +6 -0
  1711. package/dist/ai/kit/axiom/svelte/ax-svelte-test-mount-and-cleanup.xml +8 -0
  1712. package/dist/ai/kit/axiom/svelte/ax-svelte-test-no-direct-dom-query.xml +4 -0
  1713. package/dist/ai/kit/axiom/svelte/ax-svelte-test-prefer-story-tests-when-available.xml +4 -0
  1714. package/dist/ai/kit/axiom/svelte/ax-svelte-test-role-queries-preferred.xml +4 -0
  1715. package/dist/ai/kit/axiom/testing/ax-anchor-coverage-nontrivial.xml +4 -0
  1716. package/dist/ai/kit/axiom/testing/ax-anchor-intentful-names.xml +4 -0
  1717. package/dist/ai/kit/axiom/testing/ax-anchor-trivial-exception.xml +4 -0
  1718. package/dist/ai/kit/axiom/testing/ax-assert-api-choice.xml +13 -0
  1719. package/dist/ai/kit/axiom/testing/ax-bdd-generation.xml +19 -0
  1720. package/dist/ai/kit/axiom/testing/ax-bdd-name-discipline.xml +4 -0
  1721. package/dist/ai/kit/axiom/testing/ax-case-flow.xml +6 -0
  1722. package/dist/ai/kit/axiom/testing/ax-contract-over-implementation.xml +10 -0
  1723. package/dist/ai/kit/axiom/testing/ax-coverage-by-contract-not-by-line.xml +9 -0
  1724. package/dist/ai/kit/axiom/testing/ax-default-direct-assertion-protocol.xml +6 -0
  1725. package/dist/ai/kit/axiom/testing/ax-explicit-vitest-imports.xml +4 -0
  1726. package/dist/ai/kit/axiom/testing/ax-file-name-and-default-shape.xml +4 -0
  1727. package/dist/ai/kit/axiom/testing/ax-fixture-io-policy.xml +4 -0
  1728. package/dist/ai/kit/axiom/testing/ax-hooks-only-for-lifecycle.xml +6 -0
  1729. package/dist/ai/kit/axiom/testing/ax-http-boundary-injection.xml +6 -0
  1730. package/dist/ai/kit/axiom/testing/ax-http-mock-agent-pattern.xml +9 -0
  1731. package/dist/ai/kit/axiom/testing/ax-it-opening-brief.xml +8 -0
  1732. package/dist/ai/kit/axiom/testing/ax-mock-as-last-resort.xml +11 -0
  1733. package/dist/ai/kit/axiom/testing/ax-mock-hygiene.xml +12 -0
  1734. package/dist/ai/kit/axiom/testing/ax-mock-requires-operator-confirm.xml +9 -0
  1735. package/dist/ai/kit/axiom/testing/ax-no-describe-let-pileup.xml +4 -0
  1736. package/dist/ai/kit/axiom/testing/ax-no-falsification-via-mocks.xml +4 -0
  1737. package/dist/ai/kit/axiom/testing/ax-one-test-one-scenario.xml +4 -0
  1738. package/dist/ai/kit/axiom/testing/ax-one-unified-context-per-file.xml +10 -0
  1739. package/dist/ai/kit/axiom/testing/ax-partial-string-via-match.xml +4 -0
  1740. package/dist/ai/kit/axiom/testing/ax-phase-anchors.xml +16 -0
  1741. package/dist/ai/kit/axiom/testing/ax-prefer-factory-over-hooks.xml +6 -0
  1742. package/dist/ai/kit/axiom/testing/ax-prefer-native-mock-fn.xml +9 -0
  1743. package/dist/ai/kit/axiom/testing/ax-prefer-vi-fn-for-interaction.xml +4 -0
  1744. package/dist/ai/kit/axiom/testing/ax-snapshot-file-location.xml +4 -0
  1745. package/dist/ai/kit/axiom/testing/ax-snapshot-usage-gate.xml +4 -0
  1746. package/dist/ai/kit/axiom/testing/ax-test-anchor-naming.xml +4 -0
  1747. package/dist/ai/kit/axiom/testing/ax-test-file-size-budget.xml +6 -0
  1748. package/dist/ai/kit/axiom/testing/ax-test-mandate.xml +10 -0
  1749. package/dist/ai/kit/axiom/testing/ax-tests-no-human-narration.xml +4 -0
  1750. package/dist/ai/kit/axiom/testing/ax-time-env-global-lifecycle.xml +9 -0
  1751. package/dist/ai/kit/axiom/testing/ax-vitest-assert-api-choice.xml +12 -0
  1752. package/dist/ai/kit/axiom/testing/ax-vitest-isolation-default.xml +4 -0
  1753. package/dist/ai/kit/axiom/testing/ax-vitest-run-not-watch.xml +16 -0
  1754. package/dist/ai/kit/axiom/truth/ax-autonomous-research.xml +2 -0
  1755. package/dist/ai/kit/axiom/truth/ax-evidence-hygiene.xml +9 -0
  1756. package/dist/ai/kit/axiom/truth/ax-freshness-guard.xml +2 -0
  1757. package/dist/ai/kit/axiom/truth/ax-live-source-only.xml +2 -0
  1758. package/dist/ai/kit/axiom/truth/ax-no-unverified-findings.xml +2 -0
  1759. package/dist/ai/kit/axiom/truth/ax-production-realism.xml +4 -0
  1760. package/dist/ai/kit/axiom/truth/ax-real-run-over-ping.xml +2 -0
  1761. package/dist/ai/kit/axiom/truth/ax-reuse-first.xml +2 -0
  1762. package/dist/ai/kit/axiom/truth/ax-spec-is-sole-source.xml +6 -0
  1763. package/dist/ai/kit/axiom/truth/ax-stale-must-be-rejected.xml +2 -0
  1764. package/dist/ai/kit/axiom/typescript/ax-base-contract-shape.xml +25 -0
  1765. package/dist/ai/kit/axiom/typescript/ax-consumers-tag-semantics.xml +4 -0
  1766. package/dist/ai/kit/axiom/typescript/ax-direct-implementation-protocol.xml +9 -0
  1767. package/dist/ai/kit/axiom/typescript/ax-english-only-names-and-comments.xml +4 -0
  1768. package/dist/ai/kit/axiom/typescript/ax-entity-specific-minimums.xml +11 -0
  1769. package/dist/ai/kit/axiom/typescript/ax-flat-jsdoc-for-properties.xml +6 -0
  1770. package/dist/ai/kit/axiom/typescript/ax-implementation-hiding-in-public.xml +4 -0
  1771. package/dist/ai/kit/axiom/typescript/ax-no-transpile-only-constructs.xml +6 -0
  1772. package/dist/ai/kit/axiom/typescript/ax-tag-usage-matrix.xml +15 -0
  1773. package/dist/ai/kit/axiom/typescript/ax-truthful-encapsulation.xml +6 -0
  1774. package/dist/ai/kit/axiom/typescript/ax-type-vs-interface-choice.xml +4 -0
  1775. package/dist/ai/kit/axiom/uikit/ax-a11y-audit-parameters.xml +14 -0
  1776. package/dist/ai/kit/axiom/uikit/ax-a11y-defaults.xml +12 -0
  1777. package/dist/ai/kit/axiom/uikit/ax-a11y-requirements.xml +18 -0
  1778. package/dist/ai/kit/axiom/uikit/ax-component-props-contract.xml +20 -0
  1779. package/dist/ai/kit/axiom/uikit/ax-css-module-selector-conventions.xml +10 -0
  1780. package/dist/ai/kit/axiom/uikit/ax-css-tokens-via-root.xml +12 -0
  1781. package/dist/ai/kit/axiom/uikit/ax-data-attrs-not-host.xml +16 -0
  1782. package/dist/ai/kit/axiom/uikit/ax-data-state-for-testability.xml +8 -0
  1783. package/dist/ai/kit/axiom/uikit/ax-element-structure-from-extraction.xml +13 -0
  1784. package/dist/ai/kit/axiom/uikit/ax-existing-components-check.xml +9 -0
  1785. package/dist/ai/kit/axiom/uikit/ax-extraction-input.xml +15 -0
  1786. package/dist/ai/kit/axiom/uikit/ax-file-structure-kebab-case.xml +13 -0
  1787. package/dist/ai/kit/axiom/uikit/ax-icon-svg-tight-viewbox.xml +6 -0
  1788. package/dist/ai/kit/axiom/uikit/ax-token-discipline.xml +9 -0
  1789. package/dist/ai/kit/axiom/uikit/ax-token-override-comment.xml +11 -0
  1790. package/dist/ai/kit/axiom/uikit/ax-token-section-generation.xml +13 -0
  1791. package/dist/ai/kit/axiom/uikit/ax-variant-grouping.xml +10 -0
  1792. package/dist/ai/kit/build-directives.ts +39 -0
  1793. package/dist/ai/kit/contract/audit/audit-session-summary-format.xml +38 -0
  1794. package/dist/ai/kit/contract/audit/finding-format.xml +20 -0
  1795. package/dist/ai/kit/contract/audit/ticket-audit-round-format.xml +38 -0
  1796. package/dist/ai/kit/contract/critic/oc-structured.xml +2 -0
  1797. package/dist/ai/kit/contract/interview/coverage-map-format.xml +12 -0
  1798. package/dist/ai/kit/contract/process/blocker-format.xml +9 -0
  1799. package/dist/ai/kit/contract/process/breadcrumb-format.xml +8 -0
  1800. package/dist/ai/kit/contract/process/execute-summary-format.xml +11 -0
  1801. package/dist/ai/kit/contract/process/fix-summary-format.xml +23 -0
  1802. package/dist/ai/kit/contract/process/flow-diagram-when.xml +12 -0
  1803. package/dist/ai/kit/contract/process/halt-format.xml +6 -0
  1804. package/dist/ai/kit/contract/process/handoff-format.xml +13 -0
  1805. package/dist/ai/kit/contract/process/message-layout.xml +16 -0
  1806. package/dist/ai/kit/contract/process/orchestrator-progress-format.xml +10 -0
  1807. package/dist/ai/kit/contract/process/phase-block-format.xml +22 -0
  1808. package/dist/ai/kit/contract/process/phase-progress-format.xml +13 -0
  1809. package/dist/ai/kit/contract/process/plan-table-format.xml +7 -0
  1810. package/dist/ai/kit/contract/process/question-format.xml +27 -0
  1811. package/dist/ai/kit/contract/process/return-summary-format.xml +17 -0
  1812. package/dist/ai/kit/contract/process/round-close-format.xml +8 -0
  1813. package/dist/ai/kit/contract/process/session-file-format.xml +25 -0
  1814. package/dist/ai/kit/contract/process/side-dive-format.xml +7 -0
  1815. package/dist/ai/kit/contract/process/trace-header-format.xml +11 -0
  1816. package/dist/ai/kit/contract/process/understanding-block-format.xml +12 -0
  1817. package/dist/ai/kit/contract/scaffold/module-tasks-index.xml +9 -0
  1818. package/dist/ai/kit/contract/scaffold/project-tasks-index.xml +10 -0
  1819. package/dist/ai/kit/contract/scaffold/scope-tasks-index.xml +11 -0
  1820. package/dist/ai/kit/contract/scaffold/task-ticket-structure.xml +19 -0
  1821. package/dist/ai/kit/contract/spec/change-manifest-format.xml +31 -0
  1822. package/dist/ai/kit/contract/spec/dbc-adapter-format.xml +22 -0
  1823. package/dist/ai/kit/contract/spec/dbc-port-format.xml +38 -0
  1824. package/dist/ai/kit/contract/spec/decision-log-entry-format.xml +12 -0
  1825. package/dist/ai/kit/contract/spec/entity-inventory-format.xml +18 -0
  1826. package/dist/ai/kit/contract/spec/entity-surface-format.xml +25 -0
  1827. package/dist/ai/kit/contract/spec/infra-base-minimal-spec.xml +23 -0
  1828. package/dist/ai/kit/contract/spec/infrastructure-spec-structure.xml +8 -0
  1829. package/dist/ai/kit/contract/spec/interface-spec-structure.xml +6 -0
  1830. package/dist/ai/kit/contract/spec/library-spec-structure.xml +6 -0
  1831. package/dist/ai/kit/contract/spec/module-spec-markdown-structure.xml +10 -0
  1832. package/dist/ai/kit/contract/spec/nfr-budgets-format.xml +22 -0
  1833. package/dist/ai/kit/contract/spec/pivot-invalidation-list-format.xml +9 -0
  1834. package/dist/ai/kit/contract/spec/portal-structure-contract.xml +6 -0
  1835. package/dist/ai/kit/contract/spec/product-spec-structure.xml +6 -0
  1836. package/dist/ai/kit/contract/spec/rework-decision-log-entry-format.xml +19 -0
  1837. package/dist/ai/kit/contract/spec/scope-spec-module-map-update.xml +34 -0
  1838. package/dist/ai/kit/contract/spec/security-section-format.xml +27 -0
  1839. package/dist/ai/kit/contract/uikit/spec-structure.xml +67 -0
  1840. package/dist/ai/kit/definition/e2e/def-cli-ax-snapshot.xml +4 -0
  1841. package/dist/ai/kit/definition/e2e/def-cli-trace.xml +4 -0
  1842. package/dist/ai/kit/definition/e2e/def-e2e-ax-contract.xml +4 -0
  1843. package/dist/ai/kit/definition/e2e/def-e2e-fixture-pom.xml +4 -0
  1844. package/dist/ai/kit/definition/infra/def-autofixable-rule.xml +4 -0
  1845. package/dist/ai/kit/definition/infra/def-cjs.xml +2 -0
  1846. package/dist/ai/kit/definition/infra/def-esm.xml +2 -0
  1847. package/dist/ai/kit/definition/infra/def-exact-pin.xml +2 -0
  1848. package/dist/ai/kit/definition/infra/def-lint-pipeline.xml +4 -0
  1849. package/dist/ai/kit/definition/infra/def-motivated-non-autofix-rule.xml +4 -0
  1850. package/dist/ai/kit/definition/infra/def-operator-disable.xml +4 -0
  1851. package/dist/ai/kit/definition/infra/def-reproducibility-triad.xml +2 -0
  1852. package/dist/ai/kit/definition/process/def-logic-switch.xml +12 -0
  1853. package/dist/ai/kit/definition/process/def-read-and-use-directive.xml +12 -0
  1854. package/dist/ai/kit/definition/storybook/def-play-contract.xml +4 -0
  1855. package/dist/ai/kit/definition/storybook/def-sb-mcp-server.xml +4 -0
  1856. package/dist/ai/kit/definition/storybook/def-sb-mcp-tools.xml +4 -0
  1857. package/dist/ai/kit/definition/storybook/def-sb-story-canonical-form.xml +4 -0
  1858. package/dist/ai/kit/definition/storybook/def-sb-test-addon.xml +4 -0
  1859. package/dist/ai/kit/definition/storybook/def-spec-mirror-hierarchy.xml +4 -0
  1860. package/dist/ai/kit/definition/svelte/def-flush-boundary.xml +4 -0
  1861. package/dist/ai/kit/definition/svelte/def-form-action.xml +4 -0
  1862. package/dist/ai/kit/definition/svelte/def-runes-file.xml +4 -0
  1863. package/dist/ai/kit/definition/svelte/def-server-load.xml +4 -0
  1864. package/dist/ai/kit/definition/svelte/def-svelte-rune.xml +4 -0
  1865. package/dist/ai/kit/definition/svelte/def-svelte-test-file.xml +4 -0
  1866. package/dist/ai/kit/definition/svelte/def-universal-load.xml +4 -0
  1867. package/dist/ai/kit/definition/testing/def-injection-seam.xml +4 -0
  1868. package/dist/ai/kit/definition/testing/def-non-trivial-case.xml +4 -0
  1869. package/dist/ai/kit/definition/testing/def-phase-anchor-format.xml +4 -0
  1870. package/dist/ai/kit/definition/testing/def-test-payload-vocab.xml +4 -0
  1871. package/dist/ai/kit/definition/testing/def-unified-context.xml +4 -0
  1872. package/dist/ai/kit/definition/typescript/def-allowed-comment-payload.xml +4 -0
  1873. package/dist/ai/kit/definition/typescript/def-complexity-trigger.xml +4 -0
  1874. package/dist/ai/kit/definition/typescript/def-trace-prefix.xml +2 -0
  1875. package/dist/ai/kit/definition/uikit/def-component-artefact.xml +4 -0
  1876. package/dist/ai/kit/definition/uikit/def-data-attribute-selector.xml +4 -0
  1877. package/dist/ai/kit/definition/uikit/def-token-override.xml +4 -0
  1878. package/dist/ai/kit/demo/indent-check.ts +56 -0
  1879. package/dist/ai/kit/demo/render-demo.ts +26 -0
  1880. package/dist/ai/kit/demo/sdd-mini.hbs +11 -0
  1881. package/dist/ai/kit/hook/coding/hook-module-system-declared.xml +6 -0
  1882. package/dist/ai/kit/hook/e2e/HOOK_CLI_DEV_SERVER_REACHABLE.xml +6 -0
  1883. package/dist/ai/kit/hook/e2e/HOOK_CLI_NO_AUTO_UPDATE_SNAPSHOTS.xml +6 -0
  1884. package/dist/ai/kit/hook/e2e/HOOK_CLI_NO_HEADED_IN_AGENT_SCRIPTS.xml +6 -0
  1885. package/dist/ai/kit/hook/e2e/HOOK_CLI_PLAYWRIGHT_INSTALLED.xml +6 -0
  1886. package/dist/ai/kit/hook/e2e/HOOK_E2E_FILE_SIZE_BUDGET.xml +6 -0
  1887. package/dist/ai/kit/hook/e2e/HOOK_E2E_NO_CSS_LOCATORS.xml +6 -0
  1888. package/dist/ai/kit/hook/e2e/HOOK_E2E_NO_HEADED.xml +6 -0
  1889. package/dist/ai/kit/hook/e2e/HOOK_E2E_NO_ONLY_OR_SKIP.xml +6 -0
  1890. package/dist/ai/kit/hook/e2e/HOOK_E2E_RUN_CHROMIUM.xml +6 -0
  1891. package/dist/ai/kit/hook/e2e/hook-cli-dev-server-reachable.xml +6 -0
  1892. package/dist/ai/kit/hook/e2e/hook-cli-no-auto-update-snapshots.xml +6 -0
  1893. package/dist/ai/kit/hook/e2e/hook-cli-no-headed-in-agent-scripts.xml +6 -0
  1894. package/dist/ai/kit/hook/e2e/hook-cli-playwright-installed.xml +6 -0
  1895. package/dist/ai/kit/hook/e2e/hook-e2e-file-size-budget.xml +6 -0
  1896. package/dist/ai/kit/hook/e2e/hook-e2e-no-css-locators.xml +6 -0
  1897. package/dist/ai/kit/hook/e2e/hook-e2e-no-headed.xml +6 -0
  1898. package/dist/ai/kit/hook/e2e/hook-e2e-no-only-or-skip.xml +6 -0
  1899. package/dist/ai/kit/hook/e2e/hook-e2e-run-chromium.xml +6 -0
  1900. package/dist/ai/kit/hook/infra/HOOK_AUDIT_NEW_RULE.xml +6 -0
  1901. package/dist/ai/kit/hook/infra/HOOK_DEFAULT_BRANCH_MAIN.xml +6 -0
  1902. package/dist/ai/kit/hook/infra/HOOK_GITIGNORE_PRESENT.xml +6 -0
  1903. package/dist/ai/kit/hook/infra/HOOK_LINT_FIX_GREEN.xml +6 -0
  1904. package/dist/ai/kit/hook/infra/HOOK_LINT_NO_DRIFT.xml +6 -0
  1905. package/dist/ai/kit/hook/infra/HOOK_NON_AUTOFIX_HAS_COMMENT.xml +6 -0
  1906. package/dist/ai/kit/hook/infra/HOOK_NO_AGENT_DISABLE_COMMENTS.xml +6 -0
  1907. package/dist/ai/kit/hook/infra/HOOK_NO_ENV_TRACKED.xml +6 -0
  1908. package/dist/ai/kit/hook/infra/HOOK_NO_FORMATTING_DUPLICATION.xml +6 -0
  1909. package/dist/ai/kit/hook/infra/HOOK_NO_NODE_MODULES_TRACKED.xml +6 -0
  1910. package/dist/ai/kit/hook/infra/HOOK_NO_WARN_LEVEL_IN_CONFIG.xml +6 -0
  1911. package/dist/ai/kit/hook/infra/HOOK_PROJECT_LINT.xml +6 -0
  1912. package/dist/ai/kit/hook/infra/HOOK_TAG_ANNOTATED.xml +6 -0
  1913. package/dist/ai/kit/hook/infra/HOOK_TYPECHECK.xml +6 -0
  1914. package/dist/ai/kit/hook/infra/hook-audit-new-rule.xml +6 -0
  1915. package/dist/ai/kit/hook/infra/hook-default-branch-main.xml +6 -0
  1916. package/dist/ai/kit/hook/infra/hook-engines-present.xml +6 -0
  1917. package/dist/ai/kit/hook/infra/hook-gitignore-present.xml +6 -0
  1918. package/dist/ai/kit/hook/infra/hook-lint-fix-green.xml +6 -0
  1919. package/dist/ai/kit/hook/infra/hook-lint-no-drift.xml +6 -0
  1920. package/dist/ai/kit/hook/infra/hook-lock-file-exists.xml +6 -0
  1921. package/dist/ai/kit/hook/infra/hook-no-agent-disable-comments.xml +6 -0
  1922. package/dist/ai/kit/hook/infra/hook-no-env-tracked.xml +6 -0
  1923. package/dist/ai/kit/hook/infra/hook-no-foreign-lock-files.xml +6 -0
  1924. package/dist/ai/kit/hook/infra/hook-no-formatting-duplication.xml +6 -0
  1925. package/dist/ai/kit/hook/infra/hook-no-node-modules-tracked.xml +6 -0
  1926. package/dist/ai/kit/hook/infra/hook-no-warn-level-in-config.xml +6 -0
  1927. package/dist/ai/kit/hook/infra/hook-non-autofix-has-comment.xml +6 -0
  1928. package/dist/ai/kit/hook/infra/hook-npmrc-registry.xml +6 -0
  1929. package/dist/ai/kit/hook/infra/hook-nvmrc-exact.xml +6 -0
  1930. package/dist/ai/kit/hook/infra/hook-project-lint.xml +6 -0
  1931. package/dist/ai/kit/hook/infra/hook-tag-annotated.xml +6 -0
  1932. package/dist/ai/kit/hook/storybook/HOOK_SB_ADDON_PRESENT.xml +6 -0
  1933. package/dist/ai/kit/hook/storybook/HOOK_SB_AGENTS_MD_MENTIONS_STORYBOOK.xml +6 -0
  1934. package/dist/ai/kit/hook/storybook/HOOK_SB_AI_TAG_PRESENT.xml +6 -0
  1935. package/dist/ai/kit/hook/storybook/HOOK_SB_PLAYWRIGHT_BROWSER_PRESENT.xml +6 -0
  1936. package/dist/ai/kit/hook/storybook/HOOK_SB_PLAY_PRESENT.xml +6 -0
  1937. package/dist/ai/kit/hook/storybook/HOOK_SB_PREVIEW_BOOTS.xml +6 -0
  1938. package/dist/ai/kit/hook/storybook/HOOK_SB_RUN_STORY_TESTS.xml +6 -0
  1939. package/dist/ai/kit/hook/storybook/hook-sb-addon-present.xml +6 -0
  1940. package/dist/ai/kit/hook/storybook/hook-sb-agents-md-mentions-storybook.xml +6 -0
  1941. package/dist/ai/kit/hook/storybook/hook-sb-ai-tag-present.xml +6 -0
  1942. package/dist/ai/kit/hook/storybook/hook-sb-interactive-stories-have-play.xml +6 -0
  1943. package/dist/ai/kit/hook/storybook/hook-sb-play-present.xml +6 -0
  1944. package/dist/ai/kit/hook/storybook/hook-sb-playwright-browser-present.xml +6 -0
  1945. package/dist/ai/kit/hook/storybook/hook-sb-preview-boots.xml +6 -0
  1946. package/dist/ai/kit/hook/storybook/hook-sb-run-story-tests.xml +6 -0
  1947. package/dist/ai/kit/hook/svelte/HOOK_NO_CREATE_EVENT_DISPATCHER.xml +6 -0
  1948. package/dist/ai/kit/hook/svelte/HOOK_NO_LEGACY_PROP_SYNTAX.xml +6 -0
  1949. package/dist/ai/kit/hook/svelte/HOOK_NO_LEGACY_REACTIVE.xml +6 -0
  1950. package/dist/ai/kit/hook/svelte/HOOK_NO_RUNES_IN_PLAIN_TS.xml +6 -0
  1951. package/dist/ai/kit/hook/svelte/HOOK_SK_BUILD.xml +6 -0
  1952. package/dist/ai/kit/hook/svelte/HOOK_SK_NO_CLIENT_FETCH_IN_COMPONENT.xml +6 -0
  1953. package/dist/ai/kit/hook/svelte/HOOK_SK_NO_GLOBAL_FETCH_IN_LOAD.xml +6 -0
  1954. package/dist/ai/kit/hook/svelte/HOOK_SK_NO_PRIVATE_ENV_IN_CLIENT.xml +6 -0
  1955. package/dist/ai/kit/hook/svelte/HOOK_SK_TYPECHECK.xml +6 -0
  1956. package/dist/ai/kit/hook/svelte/HOOK_SVELTE_CHECK.xml +6 -0
  1957. package/dist/ai/kit/hook/svelte/HOOK_SVELTE_TEST_EXTENSION_DISCIPLINE.xml +6 -0
  1958. package/dist/ai/kit/hook/svelte/HOOK_SVELTE_TEST_HAS_CLEANUP.xml +6 -0
  1959. package/dist/ai/kit/hook/svelte/HOOK_SVELTE_TEST_HAS_FLUSH_AFTER_USEREVENT.xml +6 -0
  1960. package/dist/ai/kit/hook/svelte/HOOK_SVELTE_TEST_NO_DIRECT_DOM_QUERIES.xml +6 -0
  1961. package/dist/ai/kit/hook/svelte/HOOK_SVELTE_TEST_RUN.xml +6 -0
  1962. package/dist/ai/kit/hook/svelte/hook-no-create-event-dispatcher.xml +6 -0
  1963. package/dist/ai/kit/hook/svelte/hook-no-legacy-prop-syntax.xml +6 -0
  1964. package/dist/ai/kit/hook/svelte/hook-no-legacy-reactive.xml +6 -0
  1965. package/dist/ai/kit/hook/svelte/hook-no-runes-in-plain-ts.xml +6 -0
  1966. package/dist/ai/kit/hook/svelte/hook-sk-build.xml +6 -0
  1967. package/dist/ai/kit/hook/svelte/hook-sk-no-client-fetch-in-component.xml +6 -0
  1968. package/dist/ai/kit/hook/svelte/hook-sk-no-global-fetch-in-load.xml +6 -0
  1969. package/dist/ai/kit/hook/svelte/hook-sk-no-private-env-in-client.xml +6 -0
  1970. package/dist/ai/kit/hook/svelte/hook-sk-typecheck.xml +6 -0
  1971. package/dist/ai/kit/hook/svelte/hook-svelte-check.xml +6 -0
  1972. package/dist/ai/kit/hook/svelte/hook-svelte-test-extension-discipline.xml +6 -0
  1973. package/dist/ai/kit/hook/svelte/hook-svelte-test-has-cleanup.xml +6 -0
  1974. package/dist/ai/kit/hook/svelte/hook-svelte-test-has-flush-after-userevent.xml +6 -0
  1975. package/dist/ai/kit/hook/svelte/hook-svelte-test-no-direct-dom-queries.xml +6 -0
  1976. package/dist/ai/kit/hook/svelte/hook-svelte-test-run.xml +6 -0
  1977. package/dist/ai/kit/hook/testing/HOOK_ANCHOR_PAIRING.xml +6 -0
  1978. package/dist/ai/kit/hook/testing/HOOK_COVERAGE.xml +5 -0
  1979. package/dist/ai/kit/hook/testing/HOOK_NO_FORBIDDEN_TEST_PATTERNS.xml +6 -0
  1980. package/dist/ai/kit/hook/testing/HOOK_RUN_SINGLE_FILE.xml +5 -0
  1981. package/dist/ai/kit/hook/testing/HOOK_RUN_TESTS.xml +5 -0
  1982. package/dist/ai/kit/hook/testing/HOOK_TYPECHECK_BEFORE_TEST.xml +5 -0
  1983. package/dist/ai/kit/hook/testing/hook-anchor-pairing.xml +6 -0
  1984. package/dist/ai/kit/hook/testing/hook-coverage-node.xml +5 -0
  1985. package/dist/ai/kit/hook/testing/hook-coverage-vitest.xml +5 -0
  1986. package/dist/ai/kit/hook/testing/hook-file-size-budget.xml +6 -0
  1987. package/dist/ai/kit/hook/testing/hook-no-auto-snapshot-update.xml +6 -0
  1988. package/dist/ai/kit/hook/testing/hook-no-forbidden-test-patterns-node.xml +6 -0
  1989. package/dist/ai/kit/hook/testing/hook-no-forbidden-test-patterns-vitest.xml +5 -0
  1990. package/dist/ai/kit/hook/testing/hook-no-unjustified-vi-mock.xml +6 -0
  1991. package/dist/ai/kit/hook/testing/hook-parallel-factories-guard.xml +5 -0
  1992. package/dist/ai/kit/hook/testing/hook-run-single-file-node.xml +5 -0
  1993. package/dist/ai/kit/hook/testing/hook-run-single-file-vitest.xml +5 -0
  1994. package/dist/ai/kit/hook/testing/hook-run-tests-node.xml +5 -0
  1995. package/dist/ai/kit/hook/testing/hook-run-tests-vitest.xml +5 -0
  1996. package/dist/ai/kit/hook/testing/hook-typecheck-before-test.xml +5 -0
  1997. package/dist/ai/kit/hook/typescript/HOOK_NO_FORBIDDEN_CONSTRUCTS.xml +6 -0
  1998. package/dist/ai/kit/hook/typescript/HOOK_TYPECHECK.xml +6 -0
  1999. package/dist/ai/kit/hook/typescript/hook-no-forbidden-constructs.xml +6 -0
  2000. package/dist/ai/kit/hook/typescript/hook-typecheck.xml +6 -0
  2001. package/dist/ai/kit/hook/uikit/HOOK_ARIA_ATTRIBUTES_PRESENT.xml +6 -0
  2002. package/dist/ai/kit/hook/uikit/HOOK_DATA_STATE_PRESENT.xml +6 -0
  2003. package/dist/ai/kit/hook/uikit/HOOK_KEBAB_CASE_FILES.xml +6 -0
  2004. package/dist/ai/kit/hook/uikit/HOOK_NO_HOST_SELECTOR.xml +6 -0
  2005. package/dist/ai/kit/hook/uikit/HOOK_OVERRIDE_COMMENTS_PRESENT.xml +6 -0
  2006. package/dist/ai/kit/hook/uikit/HOOK_SB_A11Y_AUDIT_CONFIG.xml +6 -0
  2007. package/dist/ai/kit/hook/uikit/hook-aria-attributes-present.xml +6 -0
  2008. package/dist/ai/kit/hook/uikit/hook-data-state-present.xml +6 -0
  2009. package/dist/ai/kit/hook/uikit/hook-kebab-case-files.xml +6 -0
  2010. package/dist/ai/kit/hook/uikit/hook-no-host-selector.xml +6 -0
  2011. package/dist/ai/kit/hook/uikit/hook-override-comments-present.xml +6 -0
  2012. package/dist/ai/kit/hook/uikit/hook-sb-a11y-audit-config.xml +6 -0
  2013. package/dist/ai/kit/lint-axioms.ts +102 -0
  2014. package/dist/ai/kit/pattern/e2e/pt-cli-explore-loop.xml +29 -0
  2015. package/dist/ai/kit/pattern/e2e/pt-e2e-auth-setup-project.xml +20 -0
  2016. package/dist/ai/kit/pattern/e2e/pt-e2e-ax-snapshot-baseline.xml +21 -0
  2017. package/dist/ai/kit/pattern/e2e/pt-e2e-fixture-pom.xml +31 -0
  2018. package/dist/ai/kit/pattern/e2e/pt-e2e-interaction-delta.xml +19 -0
  2019. package/dist/ai/kit/pattern/e2e/pt-e2e-network-mock.xml +21 -0
  2020. package/dist/ai/kit/pattern/infra/pt-dependency-addition.xml +21 -0
  2021. package/dist/ai/kit/pattern/infra/pt-esm-builtins.xml +14 -0
  2022. package/dist/ai/kit/pattern/infra/pt-lint-config-shape.xml +104 -0
  2023. package/dist/ai/kit/pattern/infra/pt-minimal-package-json.xml +21 -0
  2024. package/dist/ai/kit/pattern/infra/pt-npm-script-shape.xml +18 -0
  2025. package/dist/ai/kit/pattern/infra/pt-npmrc.xml +10 -0
  2026. package/dist/ai/kit/pattern/infra/pt-nvmrc.xml +6 -0
  2027. package/dist/ai/kit/pattern/infra/pt-rule-audit-protocol.xml +40 -0
  2028. package/dist/ai/kit/pattern/spec/example-contracts.xml +20 -0
  2029. package/dist/ai/kit/pattern/spec/example-infrastructure.xml +28 -0
  2030. package/dist/ai/kit/pattern/spec/example-library.xml +21 -0
  2031. package/dist/ai/kit/pattern/spec/example-product.xml +19 -0
  2032. package/dist/ai/kit/pattern/storybook/pt-canonical-stories-file.xml +74 -0
  2033. package/dist/ai/kit/pattern/storybook/pt-sb-composed-story-with-play.xml +37 -0
  2034. package/dist/ai/kit/pattern/storybook/pt-story-with-visual-contract.xml +20 -0
  2035. package/dist/ai/kit/pattern/svelte/pt-basic-component-with-runes.xml +27 -0
  2036. package/dist/ai/kit/pattern/svelte/pt-bindable-prop.xml +14 -0
  2037. package/dist/ai/kit/pattern/svelte/pt-component-svelte-template.xml +54 -0
  2038. package/dist/ai/kit/pattern/svelte/pt-effect-with-teardown.xml +17 -0
  2039. package/dist/ai/kit/pattern/svelte/pt-form-action-with-fail.xml +24 -0
  2040. package/dist/ai/kit/pattern/svelte/pt-page-consuming-load.xml +17 -0
  2041. package/dist/ai/kit/pattern/svelte/pt-server-hook-auth.xml +18 -0
  2042. package/dist/ai/kit/pattern/svelte/pt-server-load.xml +21 -0
  2043. package/dist/ai/kit/pattern/svelte/pt-snippet-and-render.xml +17 -0
  2044. package/dist/ai/kit/pattern/svelte/pt-svelte-test-effect-root-for-runes.xml +30 -0
  2045. package/dist/ai/kit/pattern/svelte/pt-svelte-test-render-and-assert.xml +22 -0
  2046. package/dist/ai/kit/pattern/svelte/pt-svelte-test-user-interaction-with-flush.xml +28 -0
  2047. package/dist/ai/kit/pattern/testing/pt-async-retry-with-brief.xml +48 -0
  2048. package/dist/ai/kit/pattern/testing/pt-di-over-mock.xml +53 -0
  2049. package/dist/ai/kit/pattern/testing/pt-direct-scalar-case.xml +20 -0
  2050. package/dist/ai/kit/pattern/testing/pt-error-path-with-assert-rejects.xml +35 -0
  2051. package/dist/ai/kit/pattern/testing/pt-fixture-and-observe-aggregation.xml +43 -0
  2052. package/dist/ai/kit/pattern/testing/pt-lifecycle-context-with-cleanup.xml +48 -0
  2053. package/dist/ai/kit/pattern/testing/pt-mock-fn-interaction-contract.xml +40 -0
  2054. package/dist/ai/kit/pattern/testing/pt-unified-factory-context.xml +58 -0
  2055. package/dist/ai/kit/pattern/typescript/pt-async-operation-with-timing.xml +40 -0
  2056. package/dist/ai/kit/pattern/typescript/pt-direct-implementation-with-log-and-error.xml +48 -0
  2057. package/dist/ai/kit/pattern/typescript/pt-expressive-terseness.xml +11 -0
  2058. package/dist/ai/kit/pattern/typescript/pt-module-and-data-type.xml +20 -0
  2059. package/dist/ai/kit/pattern/typescript/pt-service-contract-interface.xml +28 -0
  2060. package/dist/ai/kit/pattern/typescript/pt-type-narrowing-and-modern-operators.xml +36 -0
  2061. package/dist/ai/kit/pattern/uikit/pt-module-css-template.xml +26 -0
  2062. package/dist/ai/kit/pattern/uikit/pt-tokens-css-template.xml +17 -0
  2063. package/dist/ai/kit/render.d.ts +36 -0
  2064. package/dist/ai/kit/render.ts +87 -0
  2065. package/dist/ai/kit/templates/coding/result-conventions.hbs +37 -0
  2066. package/dist/ai/kit/templates/coding/result-conventions.xml +37 -0
  2067. package/dist/ai/kit/templates/sdd-v2/agent-inbox/code-lens.directive.hbs +109 -0
  2068. package/dist/ai/kit/templates/sdd-v2/agent-inbox/enrich.directive.hbs +203 -0
  2069. package/dist/ai/kit/templates/sdd-v2/agent-inbox/security-lens.directive.hbs +161 -0
  2070. package/dist/ai/kit/templates/sdd-v2/agent-inbox/synthesize.directive.hbs +114 -0
  2071. package/dist/ai/kit/templates/sdd-v2/agent-inbox/track-review.directive.hbs +442 -0
  2072. package/dist/ai/kit/templates/sdd-v2/amplify-nfr.directive.hbs +73 -0
  2073. package/dist/ai/kit/templates/sdd-v2/amplify-observability.directive.hbs +73 -0
  2074. package/dist/ai/kit/templates/sdd-v2/amplify-security.directive.hbs +70 -0
  2075. package/dist/ai/kit/templates/sdd-v2/amplify-storage.directive.hbs +71 -0
  2076. package/dist/ai/kit/templates/sdd-v2/audit.directive.hbs +241 -0
  2077. package/dist/ai/kit/templates/sdd-v2/code-review.directive.hbs +90 -0
  2078. package/dist/ai/kit/templates/sdd-v2/compression.directive.hbs +113 -0
  2079. package/dist/ai/kit/templates/sdd-v2/critic-protocol.directive.hbs +93 -0
  2080. package/dist/ai/kit/templates/sdd-v2/critic.directive.hbs +103 -0
  2081. package/dist/ai/kit/templates/sdd-v2/discover-from-code.directive.hbs +115 -0
  2082. package/dist/ai/kit/templates/sdd-v2/execute.directive.hbs +186 -0
  2083. package/dist/ai/kit/templates/sdd-v2/formats/audit-round.hbs +1 -0
  2084. package/dist/ai/kit/templates/sdd-v2/formats/change-manifest.hbs +1 -0
  2085. package/dist/ai/kit/templates/sdd-v2/formats/dbc-contracts.hbs +3 -0
  2086. package/dist/ai/kit/templates/sdd-v2/formats/diagram-vocabulary.hbs +181 -0
  2087. package/dist/ai/kit/templates/sdd-v2/formats/entity-inventory-format.hbs +1 -0
  2088. package/dist/ai/kit/templates/sdd-v2/formats/entity-surface-format.hbs +1 -0
  2089. package/dist/ai/kit/templates/sdd-v2/formats/infra-base-minimal-spec.hbs +1 -0
  2090. package/dist/ai/kit/templates/sdd-v2/formats/infrastructure-spec-structure.hbs +1 -0
  2091. package/dist/ai/kit/templates/sdd-v2/formats/interface-spec-structure.hbs +1 -0
  2092. package/dist/ai/kit/templates/sdd-v2/formats/library-spec-structure.hbs +1 -0
  2093. package/dist/ai/kit/templates/sdd-v2/formats/module-map-update.hbs +1 -0
  2094. package/dist/ai/kit/templates/sdd-v2/formats/module-spec-structure.hbs +1 -0
  2095. package/dist/ai/kit/templates/sdd-v2/formats/module-tasks-index.hbs +1 -0
  2096. package/dist/ai/kit/templates/sdd-v2/formats/nfr-budgets-format.hbs +1 -0
  2097. package/dist/ai/kit/templates/sdd-v2/formats/pivot-formats.hbs +3 -0
  2098. package/dist/ai/kit/templates/sdd-v2/formats/portal-structure.hbs +1 -0
  2099. package/dist/ai/kit/templates/sdd-v2/formats/product-spec-structure.hbs +1 -0
  2100. package/dist/ai/kit/templates/sdd-v2/formats/project-tasks-index.hbs +1 -0
  2101. package/dist/ai/kit/templates/sdd-v2/formats/scope-tasks-index.hbs +1 -0
  2102. package/dist/ai/kit/templates/sdd-v2/formats/security-section-format.hbs +1 -0
  2103. package/dist/ai/kit/templates/sdd-v2/formats/task-ticket-structure.hbs +1 -0
  2104. package/dist/ai/kit/templates/sdd-v2/infra.directive.hbs +180 -0
  2105. package/dist/ai/kit/templates/sdd-v2/interface.directive.hbs +154 -0
  2106. package/dist/ai/kit/templates/sdd-v2/interview-protocol.directive.hbs +254 -0
  2107. package/dist/ai/kit/templates/sdd-v2/migration-v1-v2.directive.hbs +301 -0
  2108. package/dist/ai/kit/templates/sdd-v2/module.directive.hbs +247 -0
  2109. package/dist/ai/kit/templates/sdd-v2/phase-execution-protocol.directive.hbs +202 -0
  2110. package/dist/ai/kit/templates/sdd-v2/readiness.directive.hbs +143 -0
  2111. package/dist/ai/kit/templates/sdd-v2/reconcile.directive.hbs +183 -0
  2112. package/dist/ai/kit/templates/sdd-v2/recover-from-code.directive.hbs +153 -0
  2113. package/dist/ai/kit/templates/sdd-v2/review-lifecycle.directive.hbs +70 -0
  2114. package/dist/ai/kit/templates/sdd-v2/root.directive.hbs +133 -0
  2115. package/dist/ai/kit/templates/sdd-v2/router.directive.hbs +179 -0
  2116. package/dist/ai/kit/templates/sdd-v2/scaffold.directive.hbs +227 -0
  2117. package/dist/ai/kit/templates/sdd-v2/scope.directive.hbs +236 -0
  2118. package/dist/ai/skills/README.md +133 -0
  2119. package/dist/ai/skills/agent-inbox/SKILL.md +48 -0
  2120. package/dist/ai/skills/opencode-get-session/SKILL.md +149 -0
  2121. package/dist/ai/skills/prd-interview/PRD_TEMPLATE.md +84 -0
  2122. package/dist/ai/skills/prd-interview/SKILL.md +133 -0
  2123. package/dist/ai/skills/sdd/SKILL.md +30 -0
  2124. package/dist/ai/skills/sdd-audit/SKILL.md +2 -2
  2125. package/dist/ai/skills/sdd-check/SKILL.md +21 -134
  2126. package/dist/ai/skills/sdd-code-review/SKILL.md +27 -0
  2127. package/dist/ai/skills/sdd-critic/SKILL.md +26 -5
  2128. package/dist/ai/skills/sdd-execute/SKILL.md +29 -200
  2129. package/dist/ai/skills/sdd-reconcile/SKILL.md +32 -0
  2130. package/dist/ai/skills/sdd-scaffold/SKILL.md +34 -6
  2131. package/dist/ai/skills/workspace-permission-setup/SKILL.md +194 -0
  2132. package/dist/chunks/classify-mr-stage.logic-BiCHTmPp.js +53 -0
  2133. package/dist/chunks/classify-mr-stage.logic-ClmhzQPQ.js +53 -0
  2134. package/dist/chunks/config-help-Ws1ngThF.js +6 -0
  2135. package/dist/chunks/config-index-9VHWSDQD.js +104 -0
  2136. package/dist/chunks/config-index-RFeqlDWs.js +104 -0
  2137. package/dist/chunks/devtools-b0DwO1x_.js +79 -0
  2138. package/dist/chunks/devtools-p8tmPuLn.js +79 -0
  2139. package/dist/chunks/eval.cmd-CwNPaNJd.js +34 -0
  2140. package/dist/chunks/eval.cmd-ewU5lcUY.js +34 -0
  2141. package/dist/chunks/help-1HebbN64.js +8 -0
  2142. package/dist/chunks/help-B6e1u35w.js +10 -0
  2143. package/dist/chunks/help-BD8-LEeF.js +6 -0
  2144. package/dist/chunks/help-BOdcV1vC.js +8 -0
  2145. package/dist/chunks/help-BPpFjSZ8.js +24 -0
  2146. package/dist/chunks/help-BSbJO97m.js +20 -0
  2147. package/dist/chunks/help-BZy6KWe9.js +8 -0
  2148. package/dist/chunks/help-Bb-4xa8Y.js +18 -0
  2149. package/dist/chunks/help-BiBPW0kL.js +8 -0
  2150. package/dist/chunks/help-BsFBbl5r.js +18 -0
  2151. package/dist/chunks/help-BtKSJyz4.js +10 -0
  2152. package/dist/chunks/help-BvuhpOU_.js +12 -0
  2153. package/dist/chunks/help-C0GfohvW.js +16 -0
  2154. package/dist/chunks/help-C1rYrToJ.js +18 -0
  2155. package/dist/chunks/help-C3Ykc-Nc.js +12 -0
  2156. package/dist/chunks/help-C60JqpOe.js +28 -0
  2157. package/dist/chunks/help-CT3nxECq.js +20 -0
  2158. package/dist/chunks/help-CXLu7Or0.js +8 -0
  2159. package/dist/chunks/help-Cfd8vzFC.js +12 -0
  2160. package/dist/chunks/help-CplOgbQt.js +6 -0
  2161. package/dist/chunks/help-D-EH655m.js +10 -0
  2162. package/dist/chunks/help-D5cXtdMI.js +7 -0
  2163. package/dist/chunks/help-DGVzsKCv.js +12 -0
  2164. package/dist/chunks/help-Db0rU0KC.js +18 -0
  2165. package/dist/chunks/help-Db1OZhxV.js +12 -0
  2166. package/dist/chunks/help-DraLofyl.js +14 -0
  2167. package/dist/chunks/help-Dwrtbr7t.js +12 -0
  2168. package/dist/chunks/help-DzGnMNi2.js +7 -0
  2169. package/dist/chunks/help-_U6NUUQV.js +10 -0
  2170. package/dist/chunks/help-krcRU3UT.js +14 -0
  2171. package/dist/chunks/help-n8XrJTZI.js +14 -0
  2172. package/dist/chunks/help-xpLrOCjw.js +12 -0
  2173. package/dist/chunks/help.cmd-B3JddBhg.js +52 -0
  2174. package/dist/chunks/index--AXFi0ty.js +89 -0
  2175. package/dist/chunks/index-2BOEcJIa.js +125 -0
  2176. package/dist/chunks/index-3k7mPX1e.js +658 -0
  2177. package/dist/chunks/index-43GiH--T.js +20 -0
  2178. package/dist/chunks/index-64TSesTc.js +186 -0
  2179. package/dist/chunks/index-9Gv5trS_.js +125 -0
  2180. package/dist/chunks/index-B1DQIryA.js +2 -0
  2181. package/dist/chunks/index-B1PiBeQ3.js +2 -0
  2182. package/dist/chunks/index-B4rzuhkt.js +183 -0
  2183. package/dist/chunks/index-B97HJjkg.js +159 -0
  2184. package/dist/chunks/index-BAEIZVx0.js +443 -0
  2185. package/dist/chunks/index-BF6qypm0.js +131 -0
  2186. package/dist/chunks/index-BFUkVkSo.js +108 -0
  2187. package/dist/chunks/index-BIPebtDl.js +16979 -0
  2188. package/dist/chunks/index-BK84ZQsh.js +128 -0
  2189. package/dist/chunks/index-BOKv0b01.js +186 -0
  2190. package/dist/chunks/index-BOQl7F_Z.js +96 -0
  2191. package/dist/chunks/index-BRVIirjj.js +141 -0
  2192. package/dist/chunks/index-BVnJEutp.js +56 -0
  2193. package/dist/chunks/index-BXnryCGW.js +96 -0
  2194. package/dist/chunks/index-BYIzl-Ut.js +346 -0
  2195. package/dist/chunks/index-BaZm7Otb.js +2 -0
  2196. package/dist/chunks/index-BdkFKsMm.js +340 -0
  2197. package/dist/chunks/index-Bhk746A2.js +129 -0
  2198. package/dist/chunks/index-Bi-eY_dY.js +164 -0
  2199. package/dist/chunks/index-BjumU69g.js +2 -0
  2200. package/dist/chunks/index-BkWXcpXU.js +16979 -0
  2201. package/dist/chunks/index-BlY4jQIA.js +168 -0
  2202. package/dist/chunks/index-BmFT1Kx2.js +141 -0
  2203. package/dist/chunks/index-BwN5llCR.js +164 -0
  2204. package/dist/chunks/index-BzmR4Es2.js +377 -0
  2205. package/dist/chunks/index-C0iy7GxD.js +140 -0
  2206. package/dist/chunks/index-CCBTXczb.js +56 -0
  2207. package/dist/chunks/index-CDAfkSrr.js +2 -0
  2208. package/dist/chunks/index-CDHymWzC.js +102 -0
  2209. package/dist/chunks/index-CDxV4b81.js +69 -0
  2210. package/dist/chunks/index-CMCn9ErF.js +90 -0
  2211. package/dist/chunks/index-CNfXJAao.js +2 -0
  2212. package/dist/chunks/index-CQsae1nq.js +207 -0
  2213. package/dist/chunks/index-CS0VbiLD.js +52 -0
  2214. package/dist/chunks/index-CUkeTGqM.js +129 -0
  2215. package/dist/chunks/index-CVmd0prf.js +2 -0
  2216. package/dist/chunks/index-CXpkT25O.js +183 -0
  2217. package/dist/chunks/index-CZuTNeNm.js +2 -0
  2218. package/dist/chunks/index-CasNhhrL.js +96 -0
  2219. package/dist/chunks/index-Ce7GWENF.js +377 -0
  2220. package/dist/chunks/index-Cf-02TAg.js +265 -0
  2221. package/dist/chunks/index-CfjQWSrh.js +52 -0
  2222. package/dist/chunks/index-Chr7gBBz.js +443 -0
  2223. package/dist/chunks/index-Ci875Zlg.js +346 -0
  2224. package/dist/chunks/index-Ck8v_Gv7.js +46 -0
  2225. package/dist/chunks/index-ClJLPEUB.js +7 -0
  2226. package/dist/chunks/index-Cm7U1-fU.js +89 -0
  2227. package/dist/chunks/index-CmQO-RmM.js +168 -0
  2228. package/dist/chunks/index-Cn029KTN.js +3793 -0
  2229. package/dist/chunks/index-CrizvxOJ.js +96 -0
  2230. package/dist/chunks/index-Ctcr_Qeu.js +136 -0
  2231. package/dist/chunks/index-CwA6RzIB.js +3793 -0
  2232. package/dist/chunks/index-D1dI63ej.js +46 -0
  2233. package/dist/chunks/index-DCS32A2i.js +663 -0
  2234. package/dist/chunks/index-DIPrBH-4.js +159 -0
  2235. package/dist/chunks/index-DOFoNxvb.js +131 -0
  2236. package/dist/chunks/index-DS4MhAw-.js +207 -0
  2237. package/dist/chunks/index-DVkCEuws.js +136 -0
  2238. package/dist/chunks/index-DVmqMmgb.js +1054 -0
  2239. package/dist/chunks/index-Db13NlHh.js +128 -0
  2240. package/dist/chunks/index-DiMFxS0z.js +265 -0
  2241. package/dist/chunks/index-DjSafAkN.js +102 -0
  2242. package/dist/chunks/index-Dja2O-hV.js +663 -0
  2243. package/dist/chunks/index-DkadaaXq.js +658 -0
  2244. package/dist/chunks/index-Dn11CLtk.js +7 -0
  2245. package/dist/chunks/index-Do3spFJT.js +340 -0
  2246. package/dist/chunks/index-DrFRZ0Yg.js +2 -0
  2247. package/dist/chunks/index-Drh-J9O7.js +227 -0
  2248. package/dist/chunks/index-DvEQhXi2.js +1054 -0
  2249. package/dist/chunks/index-Dx5_CB2E.js +143 -0
  2250. package/dist/chunks/index-GiS0x6jg.js +90 -0
  2251. package/dist/chunks/index-J2NvjjDV.js +26969 -0
  2252. package/dist/chunks/index-NacvqeQ5.js +69 -0
  2253. package/dist/chunks/index-RNJhFzdr.js +227 -0
  2254. package/dist/chunks/index-RR5OUxje.js +140 -0
  2255. package/dist/chunks/index-R_vUB6CL.js +2 -0
  2256. package/dist/chunks/index-RzkvIfJQ.js +279 -0
  2257. package/dist/chunks/index-TQft1s5H.js +20 -0
  2258. package/dist/chunks/index-ZmQRP38W.js +26969 -0
  2259. package/dist/chunks/index-jdOZ4AkD.js +143 -0
  2260. package/dist/chunks/index-kNa21kUI.js +279 -0
  2261. package/dist/chunks/index-v4AV9kAc.js +108 -0
  2262. package/dist/chunks/readonly.config.json +14 -0
  2263. package/dist/chunks/run-review-command.logic-CA2Rjymb.js +331 -0
  2264. package/dist/chunks/run-review-command.logic-CU1Slmc_.js +331 -0
  2265. package/dist/chunks/serve.cmd-RxYS6WoN.js +162 -0
  2266. package/dist/chunks/serve.cmd-dWu_k_G_.js +162 -0
  2267. package/dist/chunks/services-Csd556Tv.js +46832 -0
  2268. package/dist/chunks/services-CwvXl2MB.js +46832 -0
  2269. package/dist/chunks/shared-B5CTGvpG.js +4509 -0
  2270. package/dist/chunks/shared-DSZTUx5b.js +4509 -0
  2271. package/dist/chunks/stats-help-BnLpk6Ns.js +6 -0
  2272. package/dist/chunks/stats-index-BLztvK69.js +66 -0
  2273. package/dist/chunks/stats-index-H6ALcjxy.js +66 -0
  2274. package/dist/cli/cmd/_shared/create-vcs-client.d.ts +8 -0
  2275. package/dist/cli/cmd/_shared/log-filter.d.ts +6 -0
  2276. package/dist/cli/cmd/_shared/vcs-context-resolver.d.ts +65 -0
  2277. package/dist/cli/cmd/alt-opinion/alt-opinion-parser.d.ts +1 -6
  2278. package/dist/cli/cmd/alt-opinion/alt-opinion-runner.d.ts +1 -5
  2279. package/dist/cli/cmd/alt-opinion/alt-opinion.cmd.d.ts +1 -5
  2280. package/dist/cli/cmd/inbox/_core/logic/build-inbox-context.logic.d.ts +12 -0
  2281. package/dist/cli/cmd/inbox/_core/logic/build-inbox-view.logic.d.ts +92 -0
  2282. package/dist/cli/cmd/inbox/_core/logic/classify-inbox.logic.d.ts +20 -0
  2283. package/dist/cli/cmd/inbox/_core/logic/classify-mr-stage.logic.d.ts +72 -0
  2284. package/dist/cli/cmd/inbox/_core/logic/inbox-config.logic.d.ts +41 -0
  2285. package/dist/cli/cmd/inbox/_core/logic/inbox-registry.logic.d.ts +77 -0
  2286. package/dist/cli/cmd/inbox/_core/logic/parse-mr-activity.logic.d.ts +17 -0
  2287. package/dist/cli/cmd/inbox/_core/logic/render-inbox-view.logic.d.ts +31 -0
  2288. package/dist/cli/cmd/inbox/_core/logic/repos-map.logic.d.ts +19 -0
  2289. package/dist/cli/cmd/inbox/_core/logic/state-paths.logic.d.ts +53 -0
  2290. package/dist/cli/cmd/inbox/config-help.d.ts +2 -0
  2291. package/dist/cli/cmd/inbox/config-index.d.ts +1 -0
  2292. package/dist/cli/cmd/inbox/config.cmd.d.ts +1 -0
  2293. package/dist/cli/cmd/inbox/eval.cmd.d.ts +8 -0
  2294. package/dist/cli/cmd/inbox/help.d.ts +4 -0
  2295. package/dist/cli/cmd/inbox/inbox.cmd.d.ts +2 -0
  2296. package/dist/cli/cmd/inbox/index.d.ts +1 -0
  2297. package/dist/cli/cmd/inbox/serve/help.d.ts +4 -0
  2298. package/dist/cli/cmd/inbox/serve.cmd.d.ts +2 -0
  2299. package/dist/cli/cmd/inbox/stats-help.d.ts +2 -0
  2300. package/dist/cli/cmd/inbox/stats-index.d.ts +1 -0
  2301. package/dist/cli/cmd/inbox/stats.cmd.d.ts +2 -0
  2302. package/dist/cli/cmd/inbox-context/help.d.ts +4 -0
  2303. package/dist/cli/cmd/inbox-context/inbox-context.cmd.d.ts +2 -0
  2304. package/dist/cli/cmd/inbox-context/index.d.ts +2 -0
  2305. package/dist/cli/cmd/inbox-eval/inbox-eval.cmd.d.ts +20 -0
  2306. package/dist/cli/cmd/inbox-review-plan/inbox-review-plan.cmd.d.ts +109 -0
  2307. package/dist/cli/cmd/inbox-review-plan/index.d.ts +1 -0
  2308. package/dist/cli/cmd/lint/checks/anchor-class-body.check.d.ts +1 -4
  2309. package/dist/cli/cmd/lint/checks/anchor-thin.check.d.ts +10 -0
  2310. package/dist/cli/cmd/lint/checks/cast-safety.check.d.ts +9 -0
  2311. package/dist/cli/cmd/lint/checks/inventory-sync.check.d.ts +27 -0
  2312. package/dist/cli/cmd/lint/checks/region-comment.check.d.ts +14 -0
  2313. package/dist/cli/cmd/lint/checks/word-count.check.d.ts +13 -0
  2314. package/dist/cli/cmd/lint/lint.cmd.d.ts +1 -1
  2315. package/dist/cli/cmd/lint/lint.types.d.ts +26 -3
  2316. package/dist/cli/cmd/lint/utils/resolve-references.fn.d.ts +1 -2
  2317. package/dist/cli/cmd/mr-stats/help.d.ts +4 -0
  2318. package/dist/cli/cmd/mr-stats/index.d.ts +1 -0
  2319. package/dist/cli/cmd/mr-stats/mr-stats.cmd.d.ts +7 -0
  2320. package/dist/cli/cmd/review/_core/logic/load-review-context-mr.logic.d.ts +3 -2
  2321. package/dist/cli/cmd/review/_core/types/review-command-args.type.d.ts +6 -0
  2322. package/dist/cli/cmd/review/_core/types/review-command-options.type.d.ts +3 -0
  2323. package/dist/cli/cmd/review/_core/types/review-context-mr.type.d.ts +2 -0
  2324. package/dist/cli/cmd/review/_core/xml/build-review-artifact.xml.d.ts +4 -2
  2325. package/dist/cli/cmd/run/help.d.ts +4 -0
  2326. package/dist/cli/cmd/run/index.d.ts +1 -0
  2327. package/dist/cli/cmd/run/run.cmd.d.ts +12 -0
  2328. package/dist/cli/cmd/sdd-check/help.d.ts +4 -0
  2329. package/dist/cli/cmd/sdd-check/index.d.ts +1 -0
  2330. package/dist/cli/cmd/sdd-check/sdd-check.cmd.d.ts +7 -0
  2331. package/dist/cli/cmd/sdd-check/sdd-check.types.d.ts +31 -0
  2332. package/dist/cli/cmd/sdd-extract/help.d.ts +4 -0
  2333. package/dist/cli/cmd/sdd-extract/index.d.ts +1 -0
  2334. package/dist/cli/cmd/sdd-extract/sdd-extract.cmd.d.ts +7 -0
  2335. package/dist/cli/cmd/sdd-extract/sdd-extract.types.d.ts +61 -0
  2336. package/dist/cli/cmd/sdd-log/help.d.ts +4 -0
  2337. package/dist/cli/cmd/sdd-log/index.d.ts +1 -0
  2338. package/dist/cli/cmd/sdd-log/sdd-log.cmd.d.ts +9 -0
  2339. package/dist/cli/cmd/sdd-log/sdd-log.types.d.ts +110 -0
  2340. package/dist/cli/cmd/sdd-migrate/help.d.ts +4 -0
  2341. package/dist/cli/cmd/sdd-migrate/index.d.ts +1 -0
  2342. package/dist/cli/cmd/sdd-migrate/sdd-migrate.cmd.d.ts +9 -0
  2343. package/dist/cli/cmd/sdd-migrate/sdd-migrate.types.d.ts +23 -0
  2344. package/dist/cli/cmd/sdd-new/help.d.ts +4 -0
  2345. package/dist/cli/cmd/sdd-new/index.d.ts +1 -0
  2346. package/dist/cli/cmd/sdd-new/sdd-new.cmd.d.ts +33 -0
  2347. package/dist/cli/cmd/sdd-new/sdd-new.types.d.ts +71 -0
  2348. package/dist/cli/cmd/sdd-state/help.d.ts +4 -0
  2349. package/dist/cli/cmd/sdd-state/index.d.ts +1 -0
  2350. package/dist/cli/cmd/sdd-state/sdd-state.cmd.d.ts +7 -0
  2351. package/dist/cli/cmd/sdd-state/sdd-state.types.d.ts +62 -0
  2352. package/dist/cli/cmd/sdd-sync/help.d.ts +4 -0
  2353. package/dist/cli/cmd/sdd-sync/index.d.ts +1 -0
  2354. package/dist/cli/cmd/sdd-sync/sdd-sync.cmd.d.ts +7 -0
  2355. package/dist/cli/cmd/sdd-sync/sdd-sync.types.d.ts +39 -0
  2356. package/dist/cli/cmd/sdd-task/help.d.ts +4 -0
  2357. package/dist/cli/cmd/sdd-task/index.d.ts +1 -0
  2358. package/dist/cli/cmd/sdd-task/sdd-task.cmd.d.ts +7 -0
  2359. package/dist/cli/cmd/sdd-task/sdd-task.types.d.ts +53 -0
  2360. package/dist/cli/cmd/sdd-verify/help.d.ts +4 -0
  2361. package/dist/cli/cmd/sdd-verify/index.d.ts +1 -0
  2362. package/dist/cli/cmd/sdd-verify/sdd-verify.cmd.d.ts +15 -0
  2363. package/dist/cli/cmd/sdd-verify/sdd-verify.types.d.ts +73 -0
  2364. package/dist/cli/cmd/sync/sync-core.d.ts +1 -1
  2365. package/dist/cli/cmd/sync/sync.cmd.d.ts +1 -4
  2366. package/dist/cli/cmd/sync-skills/sync-skills.cmd.d.ts +1 -4
  2367. package/dist/cli/cmd/testcov/coverage-threshold.d.ts +33 -0
  2368. package/dist/cli/cmd/testcov/help.d.ts +4 -0
  2369. package/dist/cli/cmd/testcov/index.d.ts +1 -0
  2370. package/dist/cli/cmd/testcov/testcov.cmd.d.ts +1 -0
  2371. package/dist/cli/cmd/vcs-approve/help.d.ts +5 -0
  2372. package/dist/cli/cmd/vcs-approve/index.d.ts +1 -0
  2373. package/dist/cli/cmd/vcs-approve/vcs-approve.cmd.d.ts +28 -0
  2374. package/dist/cli/cmd/vcs-diff/help.d.ts +5 -0
  2375. package/dist/cli/cmd/vcs-diff/index.d.ts +2 -0
  2376. package/dist/cli/cmd/vcs-diff/vcs-diff.cmd.d.ts +29 -0
  2377. package/dist/cli/cmd/vcs-discussions/help.d.ts +5 -0
  2378. package/dist/cli/cmd/vcs-discussions/index.d.ts +1 -0
  2379. package/dist/cli/cmd/vcs-discussions/vcs-discussions.cmd.d.ts +18 -0
  2380. package/dist/cli/cmd/vcs-draft-note/help.d.ts +5 -0
  2381. package/dist/cli/cmd/vcs-draft-note/index.d.ts +1 -0
  2382. package/dist/cli/cmd/vcs-draft-note/vcs-draft-note.cmd.d.ts +30 -0
  2383. package/dist/cli/cmd/vcs-job/help.d.ts +5 -0
  2384. package/dist/cli/cmd/vcs-job/index.d.ts +2 -0
  2385. package/dist/cli/cmd/vcs-job/vcs-job.cmd.d.ts +31 -0
  2386. package/dist/cli/cmd/vcs-job-log/help.d.ts +5 -0
  2387. package/dist/cli/cmd/vcs-job-log/index.d.ts +2 -0
  2388. package/dist/cli/cmd/vcs-job-log/vcs-job-log.cmd.d.ts +28 -0
  2389. package/dist/cli/cmd/vcs-mr-create/help.d.ts +5 -0
  2390. package/dist/cli/cmd/vcs-mr-create/index.d.ts +1 -0
  2391. package/dist/cli/cmd/vcs-mr-create/vcs-mr-create.cmd.d.ts +19 -0
  2392. package/dist/cli/cmd/vcs-mr-edit/help.d.ts +5 -0
  2393. package/dist/cli/cmd/vcs-mr-edit/index.d.ts +1 -0
  2394. package/dist/cli/cmd/vcs-mr-edit/vcs-mr-edit.cmd.d.ts +18 -0
  2395. package/dist/cli/cmd/vcs-pipeline/help.d.ts +5 -0
  2396. package/dist/cli/cmd/vcs-pipeline/index.d.ts +2 -0
  2397. package/dist/cli/cmd/vcs-pipeline/vcs-pipeline.cmd.d.ts +29 -0
  2398. package/dist/cli/cmd/vcs-react/help.d.ts +5 -0
  2399. package/dist/cli/cmd/vcs-react/index.d.ts +1 -0
  2400. package/dist/cli/cmd/vcs-react/vcs-react.cmd.d.ts +16 -0
  2401. package/dist/cli/cmd/vcs-reply/vcs-reply.cmd.d.ts +49 -8
  2402. package/dist/cli/cmd/vcs-todo/help.d.ts +4 -0
  2403. package/dist/cli/cmd/vcs-todo/index.d.ts +1 -0
  2404. package/dist/cli/cmd/vcs-todo/vcs-todo.cmd.d.ts +35 -0
  2405. package/dist/cli/cmd/vcs-worktree/_core/logic/locate-clone.logic.d.ts +38 -0
  2406. package/dist/cli/cmd/vcs-worktree/_core/logic/worktree-links.logic.d.ts +47 -0
  2407. package/dist/cli/cmd/vcs-worktree/_core/logic/worktree-ops.logic.d.ts +80 -0
  2408. package/dist/cli/cmd/vcs-worktree/help.d.ts +4 -0
  2409. package/dist/cli/cmd/vcs-worktree/index.d.ts +1 -0
  2410. package/dist/cli/cmd/vcs-worktree/vcs-worktree.cmd.d.ts +2 -0
  2411. package/dist/cli/cmd/yagni/help.d.ts +4 -0
  2412. package/dist/cli/cmd/yagni/index.d.ts +1 -0
  2413. package/dist/cli/cmd/yagni/yagni.cmd.d.ts +8 -0
  2414. package/dist/cli/cmd/yagni/yagni.types.d.ts +16 -0
  2415. package/dist/gennady.js +209 -21
  2416. package/dist/index.js +4 -4
  2417. package/dist/services/agent-inbox/modules/inbox-api/board-provider.mock.d.ts +157 -0
  2418. package/dist/services/agent-inbox/modules/inbox-api/board-provider.port.d.ts +79 -0
  2419. package/dist/services/agent-inbox/modules/inbox-api/board-provider.real.d.ts +139 -0
  2420. package/dist/services/agent-inbox/modules/inbox-api/dto/feed-widget.type.d.ts +87 -0
  2421. package/dist/services/agent-inbox/modules/inbox-api/dto/mr-card.type.d.ts +48 -0
  2422. package/dist/services/agent-inbox/modules/inbox-api/errors.d.ts +41 -0
  2423. package/dist/services/agent-inbox/modules/inbox-api/http-helpers.d.ts +46 -0
  2424. package/dist/services/agent-inbox/modules/inbox-api/http-server.d.ts +204 -0
  2425. package/dist/services/agent-inbox/modules/inbox-api/index.d.ts +7 -0
  2426. package/dist/services/agent-inbox/modules/inbox-api/projections/board-projection.d.ts +106 -0
  2427. package/dist/services/agent-inbox/modules/inbox-api/projections/feed-projection.d.ts +96 -0
  2428. package/dist/services/agent-inbox/modules/inbox-api/routers/artifact.router.d.ts +55 -0
  2429. package/dist/services/agent-inbox/modules/inbox-api/routers/audit.router.d.ts +27 -0
  2430. package/dist/services/agent-inbox/modules/inbox-api/routers/board.router.d.ts +40 -0
  2431. package/dist/services/agent-inbox/modules/inbox-api/routers/boot.router.d.ts +70 -0
  2432. package/dist/services/agent-inbox/modules/inbox-api/routers/chat.router.d.ts +133 -0
  2433. package/dist/services/agent-inbox/modules/inbox-api/routers/decision.router.d.ts +38 -0
  2434. package/dist/services/agent-inbox/modules/inbox-api/routers/diagnostics.router.d.ts +18 -0
  2435. package/dist/services/agent-inbox/modules/inbox-api/routers/feed.router.d.ts +27 -0
  2436. package/dist/services/agent-inbox/modules/inbox-api/routers/mr.router.d.ts +64 -0
  2437. package/dist/services/agent-inbox/modules/inbox-api/routers/mutate.router.d.ts +60 -0
  2438. package/dist/services/agent-inbox/modules/inbox-api/routers/role.router.d.ts +28 -0
  2439. package/dist/services/agent-inbox/modules/inbox-api/routers/state.router.d.ts +68 -0
  2440. package/dist/services/agent-inbox/modules/inbox-api/routers/stream.router.d.ts +33 -0
  2441. package/dist/services/agent-inbox/modules/inbox-api/routers/task.router.d.ts +28 -0
  2442. package/dist/services/agent-inbox/modules/inbox-api/sse-hub.d.ts +88 -0
  2443. package/dist/services/agent-inbox/modules/inbox-api/static-files.d.ts +34 -0
  2444. package/dist/services/agent-inbox/modules/inbox-api/types.d.ts +110 -0
  2445. package/dist/services/agent-inbox/modules/inbox-chat/anchor.d.ts +40 -0
  2446. package/dist/services/agent-inbox/modules/inbox-chat/chat-gc.d.ts +29 -0
  2447. package/dist/services/agent-inbox/modules/inbox-chat/chat-session.d.ts +119 -0
  2448. package/dist/services/agent-inbox/modules/inbox-chat/chat-transcript.d.ts +44 -0
  2449. package/dist/services/agent-inbox/modules/inbox-chat/context-assembler.d.ts +77 -0
  2450. package/dist/services/agent-inbox/modules/inbox-chat/errors.d.ts +19 -0
  2451. package/dist/services/agent-inbox/modules/inbox-chat/mutation-applier.d.ts +125 -0
  2452. package/dist/services/agent-inbox/modules/inbox-chat/mutation-flow.d.ts +94 -0
  2453. package/dist/services/agent-inbox/modules/inbox-chat/mutation-runtime.d.ts +91 -0
  2454. package/dist/services/agent-inbox/modules/inbox-chat/operator-session.d.ts +102 -0
  2455. package/dist/services/agent-inbox/modules/inbox-chat/origin.d.ts +20 -0
  2456. package/dist/services/agent-inbox/modules/inbox-chat/types.d.ts +76 -0
  2457. package/dist/services/agent-inbox/modules/inbox-core/adapters/controlled-clock.d.ts +45 -0
  2458. package/dist/services/agent-inbox/modules/inbox-core/adapters/in-memory-artifact-store.d.ts +27 -0
  2459. package/dist/services/agent-inbox/modules/inbox-core/adapters/in-memory-journal.d.ts +29 -0
  2460. package/dist/services/agent-inbox/modules/inbox-core/adapters/local-artifact-store.d.ts +36 -0
  2461. package/dist/services/agent-inbox/modules/inbox-core/adapters/system-clock.d.ts +22 -0
  2462. package/dist/services/agent-inbox/modules/inbox-core/audit-log.d.ts +64 -0
  2463. package/dist/services/agent-inbox/modules/inbox-core/boot-readiness.d.ts +106 -0
  2464. package/dist/services/agent-inbox/modules/inbox-core/capability-modes.d.ts +33 -0
  2465. package/dist/services/agent-inbox/modules/inbox-core/context-builder.d.ts +66 -0
  2466. package/dist/services/agent-inbox/modules/inbox-core/decision-journal.d.ts +121 -0
  2467. package/dist/services/agent-inbox/modules/inbox-core/dry-run.d.ts +49 -0
  2468. package/dist/services/agent-inbox/modules/inbox-core/errors.d.ts +19 -0
  2469. package/dist/services/agent-inbox/modules/inbox-core/event-journal.d.ts +144 -0
  2470. package/dist/services/agent-inbox/modules/inbox-core/finding-signature.d.ts +34 -0
  2471. package/dist/services/agent-inbox/modules/inbox-core/inbox-config.d.ts +68 -0
  2472. package/dist/services/agent-inbox/modules/inbox-core/inbox-registry.d.ts +135 -0
  2473. package/dist/services/agent-inbox/modules/inbox-core/ports/artifact-store.port.d.ts +44 -0
  2474. package/dist/services/agent-inbox/modules/inbox-core/ports/clock.port.d.ts +31 -0
  2475. package/dist/services/agent-inbox/modules/inbox-core/review-config.d.ts +63 -0
  2476. package/dist/services/agent-inbox/modules/inbox-core/runtime-profile.d.ts +57 -0
  2477. package/dist/services/agent-inbox/modules/inbox-core/runtime-profile.port.d.ts +71 -0
  2478. package/dist/services/agent-inbox/modules/inbox-core/state/review-change-batch.d.ts +101 -0
  2479. package/dist/services/agent-inbox/modules/inbox-core/state/review-lifecycle.d.ts +58 -0
  2480. package/dist/services/agent-inbox/modules/inbox-core/state/review-participation.d.ts +56 -0
  2481. package/dist/services/agent-inbox/modules/inbox-core/state/review-state.d.ts +79 -0
  2482. package/dist/services/agent-inbox/modules/inbox-core/state-store.d.ts +153 -0
  2483. package/dist/services/agent-inbox/modules/inbox-core/test-support/test-tmp.d.ts +14 -0
  2484. package/dist/services/agent-inbox/modules/inbox-core/types/review-event.type.d.ts +71 -0
  2485. package/dist/services/agent-inbox/modules/inbox-core/types/review-runtime-binding.type.d.ts +10 -0
  2486. package/dist/services/agent-inbox/modules/inbox-core/types/review-runtime-profile-spec.type.d.ts +15 -0
  2487. package/dist/services/agent-inbox/modules/inbox-core/types/review-runtime-roots.type.d.ts +9 -0
  2488. package/dist/services/agent-inbox/modules/inbox-core/vcs-inbox.mock.d.ts +61 -0
  2489. package/dist/services/agent-inbox/modules/inbox-core/vcs-inbox.port.d.ts +110 -0
  2490. package/dist/services/agent-inbox/modules/inbox-core/vcs-inbox.real.d.ts +146 -0
  2491. package/dist/services/agent-inbox/modules/inbox-core/vcs-validators.d.ts +7 -0
  2492. package/dist/services/agent-inbox/modules/inbox-dashboard/App.d.ts +4 -0
  2493. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ActionPanel.d.ts +13 -0
  2494. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ArtifactBrowser.d.ts +14 -0
  2495. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ArtifactView.d.ts +10 -0
  2496. package/dist/services/agent-inbox/modules/inbox-dashboard/components/AwaitingQueue.d.ts +8 -0
  2497. package/dist/services/agent-inbox/modules/inbox-dashboard/components/BoardPage.d.ts +5 -0
  2498. package/dist/services/agent-inbox/modules/inbox-dashboard/components/BoardSkeleton.d.ts +5 -0
  2499. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ChatComposer.d.ts +24 -0
  2500. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ChatPanel.d.ts +21 -0
  2501. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ChatThread.d.ts +19 -0
  2502. package/dist/services/agent-inbox/modules/inbox-dashboard/components/DebugLogButton.d.ts +5 -0
  2503. package/dist/services/agent-inbox/modules/inbox-dashboard/components/Header.d.ts +4 -0
  2504. package/dist/services/agent-inbox/modules/inbox-dashboard/components/KanbanLane.d.ts +16 -0
  2505. package/dist/services/agent-inbox/modules/inbox-dashboard/components/MrCard.d.ts +9 -0
  2506. package/dist/services/agent-inbox/modules/inbox-dashboard/components/MrDetailPage.d.ts +8 -0
  2507. package/dist/services/agent-inbox/modules/inbox-dashboard/components/MutationProposalCard.d.ts +19 -0
  2508. package/dist/services/agent-inbox/modules/inbox-dashboard/components/RoleBlock.d.ts +8 -0
  2509. package/dist/services/agent-inbox/modules/inbox-dashboard/components/SelectionPill.d.ts +18 -0
  2510. package/dist/services/agent-inbox/modules/inbox-dashboard/components/UnassignedBlock.d.ts +8 -0
  2511. package/dist/services/agent-inbox/modules/inbox-dashboard/components/ViewSwitch.d.ts +11 -0
  2512. package/dist/services/agent-inbox/modules/inbox-dashboard/dashboard-entry.d.ts +3 -0
  2513. package/dist/services/agent-inbox/modules/inbox-dashboard/dashboard-v2-api.d.ts +24 -0
  2514. package/dist/services/agent-inbox/modules/inbox-dashboard/dashboard-v2-ui.d.ts +93 -0
  2515. package/dist/services/agent-inbox/modules/inbox-dashboard/lib/utils.d.ts +19 -0
  2516. package/dist/services/agent-inbox/modules/inbox-dashboard/services/api-client.d.ts +73 -0
  2517. package/dist/services/agent-inbox/modules/inbox-dashboard/services/board-store.d.ts +39 -0
  2518. package/dist/services/agent-inbox/modules/inbox-dashboard/services/chat-api-client.d.ts +111 -0
  2519. package/dist/services/agent-inbox/modules/inbox-dashboard/services/debug-log.d.ts +44 -0
  2520. package/dist/services/agent-inbox/modules/inbox-dashboard/v2-types.d.ts +134 -0
  2521. package/dist/services/agent-inbox/modules/inbox-dashboard/vite.config.d.ts +5 -0
  2522. package/dist/services/agent-inbox/modules/inbox-eval/diff-hunk.d.ts +37 -0
  2523. package/dist/services/agent-inbox/modules/inbox-eval/eval-driver.d.ts +51 -0
  2524. package/dist/services/agent-inbox/modules/inbox-eval/eval-report.d.ts +48 -0
  2525. package/dist/services/agent-inbox/modules/inbox-eval/gates.d.ts +120 -0
  2526. package/dist/services/agent-inbox/modules/inbox-eval/harness.d.ts +44 -0
  2527. package/dist/services/agent-inbox/modules/inbox-eval/metrics.d.ts +56 -0
  2528. package/dist/services/agent-inbox/modules/inbox-eval/runs/autonomy.run.d.ts +9 -0
  2529. package/dist/services/agent-inbox/modules/inbox-eval/runs/boot.run.d.ts +7 -0
  2530. package/dist/services/agent-inbox/modules/inbox-eval/runs/chat.run.d.ts +7 -0
  2531. package/dist/services/agent-inbox/modules/inbox-eval/runs/context.d.ts +33 -0
  2532. package/dist/services/agent-inbox/modules/inbox-eval/runs/coverage-gate.run.d.ts +7 -0
  2533. package/dist/services/agent-inbox/modules/inbox-eval/runs/crash-recovery.run.d.ts +7 -0
  2534. package/dist/services/agent-inbox/modules/inbox-eval/runs/effects.run.d.ts +7 -0
  2535. package/dist/services/agent-inbox/modules/inbox-eval/runs/events.run.d.ts +7 -0
  2536. package/dist/services/agent-inbox/modules/inbox-eval/runs/index.d.ts +11 -0
  2537. package/dist/services/agent-inbox/modules/inbox-eval/runs/parallel.run.d.ts +7 -0
  2538. package/dist/services/agent-inbox/modules/inbox-eval/runs/pipeline.run.d.ts +7 -0
  2539. package/dist/services/agent-inbox/modules/inbox-eval/runs/role-pickup.run.d.ts +7 -0
  2540. package/dist/services/agent-inbox/modules/inbox-mocks/board.mock.d.ts +38 -0
  2541. package/dist/services/agent-inbox/modules/inbox-mocks/index.d.ts +6 -0
  2542. package/dist/services/agent-inbox/modules/inbox-mocks/mr.mock.d.ts +139 -0
  2543. package/dist/services/agent-inbox/modules/inbox-mocks/opencode.mock.d.ts +32 -0
  2544. package/dist/services/agent-inbox/modules/inbox-opencode/agent-coverage-trace.d.ts +25 -0
  2545. package/dist/services/agent-inbox/modules/inbox-opencode/agent-outcome-classifier.d.ts +61 -0
  2546. package/dist/services/agent-inbox/modules/inbox-opencode/errors.d.ts +51 -0
  2547. package/dist/services/agent-inbox/modules/inbox-opencode/opencode.mock.d.ts +201 -0
  2548. package/dist/services/agent-inbox/modules/inbox-opencode/opencode.port.d.ts +272 -0
  2549. package/dist/services/agent-inbox/modules/inbox-opencode/opencode.real.d.ts +220 -0
  2550. package/dist/services/agent-inbox/modules/inbox-opencode/prompt-compile.d.ts +88 -0
  2551. package/dist/services/agent-inbox/modules/inbox-opencode/schema-registry.d.ts +57 -0
  2552. package/dist/services/agent-inbox/modules/inbox-opencode/session-lifecycle.d.ts +122 -0
  2553. package/dist/services/agent-inbox/modules/inbox-opencode/session-pool.d.ts +218 -0
  2554. package/dist/services/agent-inbox/modules/inbox-opencode/session-registry.d.ts +85 -0
  2555. package/dist/services/agent-inbox/modules/inbox-pipeline/adapters/local-review-runtime-receipt-store.adapter.d.ts +52 -0
  2556. package/dist/services/agent-inbox/modules/inbox-pipeline/adapters/memory-review-runtime-receipt-store.adapter.d.ts +58 -0
  2557. package/dist/services/agent-inbox/modules/inbox-pipeline/coverage-gate.d.ts +74 -0
  2558. package/dist/services/agent-inbox/modules/inbox-pipeline/findings-journal.d.ts +93 -0
  2559. package/dist/services/agent-inbox/modules/inbox-pipeline/gate-verdict.d.ts +68 -0
  2560. package/dist/services/agent-inbox/modules/inbox-pipeline/lens-registry.d.ts +66 -0
  2561. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-artifact.d.ts +20 -0
  2562. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-contract.d.ts +28 -0
  2563. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-finding.d.ts +11 -0
  2564. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-input-manifest.d.ts +43 -0
  2565. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-plan.d.ts +33 -0
  2566. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-receipt-consumption.d.ts +14 -0
  2567. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-repair-task.d.ts +13 -0
  2568. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-slot-schema-catalog.d.ts +36 -0
  2569. package/dist/services/agent-inbox/modules/inbox-pipeline/model/review-synthesis.d.ts +30 -0
  2570. package/dist/services/agent-inbox/modules/inbox-pipeline/pipeline-runtime.d.ts +230 -0
  2571. package/dist/services/agent-inbox/modules/inbox-pipeline/plan-template.d.ts +62 -0
  2572. package/dist/services/agent-inbox/modules/inbox-pipeline/planning/review-contract-compiler.d.ts +52 -0
  2573. package/dist/services/agent-inbox/modules/inbox-pipeline/planning/review-input-manifest-builder.d.ts +36 -0
  2574. package/dist/services/agent-inbox/modules/inbox-pipeline/ports/review-runtime-receipt-store.port.d.ts +63 -0
  2575. package/dist/services/agent-inbox/modules/inbox-pipeline/receipts/review-runtime-receipt-recorder.d.ts +55 -0
  2576. package/dist/services/agent-inbox/modules/inbox-pipeline/review/review-cross-reviewer.d.ts +41 -0
  2577. package/dist/services/agent-inbox/modules/inbox-pipeline/review/review-orchestrator.d.ts +37 -0
  2578. package/dist/services/agent-inbox/modules/inbox-pipeline/synthesize.d.ts +60 -0
  2579. package/dist/services/agent-inbox/modules/inbox-pipeline/tails/author-tail.d.ts +44 -0
  2580. package/dist/services/agent-inbox/modules/inbox-pipeline/tails/reviewer-tail.d.ts +50 -0
  2581. package/dist/services/agent-inbox/modules/inbox-pipeline/trigger-registry.d.ts +46 -0
  2582. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-completeness-verdict.type.d.ts +42 -0
  2583. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-contract-input-mapping.type.d.ts +46 -0
  2584. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-contract-slot.type.d.ts +40 -0
  2585. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-coverage.type.d.ts +25 -0
  2586. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-evidence.type.d.ts +37 -0
  2587. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-input-classification.type.d.ts +15 -0
  2588. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-intent.type.d.ts +41 -0
  2589. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-publication-handoff.type.d.ts +32 -0
  2590. package/dist/services/agent-inbox/modules/inbox-pipeline/types/review-runtime-receipt.type.d.ts +46 -0
  2591. package/dist/services/agent-inbox/modules/inbox-pipeline/verification/review-delta-verifier.d.ts +39 -0
  2592. package/dist/services/agent-inbox/modules/inbox-pipeline/verification/review-freshness-gate.d.ts +77 -0
  2593. package/dist/services/agent-inbox/modules/inbox-queue/adapters/local-task-executor.adapter.d.ts +74 -0
  2594. package/dist/services/agent-inbox/modules/inbox-queue/automation/review-automation-policy.d.ts +95 -0
  2595. package/dist/services/agent-inbox/modules/inbox-queue/effects/review-effect-coordinator.d.ts +118 -0
  2596. package/dist/services/agent-inbox/modules/inbox-queue/executor.d.ts +127 -0
  2597. package/dist/services/agent-inbox/modules/inbox-queue/model/review-action-package.d.ts +73 -0
  2598. package/dist/services/agent-inbox/modules/inbox-queue/model/review-decision.d.ts +54 -0
  2599. package/dist/services/agent-inbox/modules/inbox-queue/model/review-effect-queue.d.ts +79 -0
  2600. package/dist/services/agent-inbox/modules/inbox-queue/model/review-outcome.d.ts +60 -0
  2601. package/dist/services/agent-inbox/modules/inbox-queue/model/review-proposal.d.ts +77 -0
  2602. package/dist/services/agent-inbox/modules/inbox-queue/model/review-task.d.ts +60 -0
  2603. package/dist/services/agent-inbox/modules/inbox-queue/ports/task-executor.port.d.ts +89 -0
  2604. package/dist/services/agent-inbox/modules/inbox-queue/registry/review-action-catalog.d.ts +95 -0
  2605. package/dist/services/agent-inbox/modules/inbox-queue/registry/review-task-registry.d.ts +81 -0
  2606. package/dist/services/agent-inbox/modules/inbox-queue/session-router.d.ts +80 -0
  2607. package/dist/services/agent-inbox/modules/inbox-queue/task-queue.d.ts +129 -0
  2608. package/dist/services/agent-inbox/modules/inbox-queue/task-registry.d.ts +208 -0
  2609. package/dist/services/agent-inbox/modules/inbox-queue/types/review-effect.type.d.ts +106 -0
  2610. package/dist/services/agent-inbox/modules/inbox-queue/types/review-guarded-intent.type.d.ts +38 -0
  2611. package/dist/services/agent-inbox/modules/inbox-roles/artifact-recovery.d.ts +149 -0
  2612. package/dist/services/agent-inbox/modules/inbox-roles/artifact-validator.d.ts +129 -0
  2613. package/dist/services/agent-inbox/modules/inbox-roles/author.role.d.ts +8 -0
  2614. package/dist/services/agent-inbox/modules/inbox-roles/context-builder.d.ts +50 -0
  2615. package/dist/services/agent-inbox/modules/inbox-roles/disk-artifact.d.ts +21 -0
  2616. package/dist/services/agent-inbox/modules/inbox-roles/effect-executor.d.ts +194 -0
  2617. package/dist/services/agent-inbox/modules/inbox-roles/errors.d.ts +31 -0
  2618. package/dist/services/agent-inbox/modules/inbox-roles/mr-watch.d.ts +73 -0
  2619. package/dist/services/agent-inbox/modules/inbox-roles/outcome-classifier.d.ts +12 -0
  2620. package/dist/services/agent-inbox/modules/inbox-roles/phase-telemetry.d.ts +201 -0
  2621. package/dist/services/agent-inbox/modules/inbox-roles/review-progress.d.ts +38 -0
  2622. package/dist/services/agent-inbox/modules/inbox-roles/reviewer.role.d.ts +7 -0
  2623. package/dist/services/agent-inbox/modules/inbox-roles/rights-escalator.d.ts +92 -0
  2624. package/dist/services/agent-inbox/modules/inbox-roles/role-engine.d.ts +82 -0
  2625. package/dist/services/agent-inbox/modules/inbox-roles/role-instance.d.ts +419 -0
  2626. package/dist/services/agent-inbox/modules/inbox-roles/role-node.d.ts +377 -0
  2627. package/dist/services/agent-inbox/modules/inbox-roles/role-scheduler.d.ts +278 -0
  2628. package/dist/services/agent-inbox/modules/inbox-roles/thread-signal-classifier.d.ts +73 -0
  2629. package/dist/services/agent-inbox/modules/inbox-serve/dev-seed.d.ts +7 -0
  2630. package/dist/services/agent-inbox/modules/inbox-serve/inbox-serve.d.ts +1 -0
  2631. package/dist/services/agent-inbox/modules/inbox-vcs/attention.d.ts +54 -0
  2632. package/dist/services/agent-inbox/modules/inbox-vcs/background-verify.d.ts +89 -0
  2633. package/dist/services/agent-inbox/modules/inbox-vcs/effects.d.ts +176 -0
  2634. package/dist/services/agent-inbox/modules/inbox-vcs/event-normalizer.d.ts +78 -0
  2635. package/dist/services/agent-inbox/modules/inbox-vcs/permission-policy.d.ts +45 -0
  2636. package/dist/services/agent-inbox/modules/inbox-vcs/readonly-effect.guard.d.ts +36 -0
  2637. package/dist/services/agent-inbox/modules/inbox-vcs/reconciler.d.ts +52 -0
  2638. package/dist/services/agent-inbox/modules/inbox-vcs/sync-coordinator.d.ts +87 -0
  2639. package/dist/services/agent-inbox/modules/inbox-vcs/sync.d.ts +213 -0
  2640. package/dist/services/agent-inbox/modules/inbox-vcs/vcs-gitlab.port.d.ts +146 -0
  2641. package/dist/services/agent-inbox/modules/inbox-vcs/vcs-port.d.ts +475 -0
  2642. package/dist/services/agent-inbox/modules/inbox-vcs/vcs-runtime.d.ts +17 -0
  2643. package/dist/services/agent-inbox/serve/bootstrap.d.ts +104 -0
  2644. package/dist/services/agent-inbox/serve/pid-utils.d.ts +21 -0
  2645. package/dist/services/agent-inbox/serve/run-mode.d.ts +78 -0
  2646. package/dist/services/agent-inbox/serve/shutdown.d.ts +34 -0
  2647. package/dist/services/agent-inbox/serve/state-seed.d.ts +44 -0
  2648. package/dist/services/agent-inbox/test/cassettes.d.ts +60 -0
  2649. package/dist/services/agent-inbox/test/dto-factories.d.ts +17 -0
  2650. package/dist/services/agent-inbox/test/port-contract.suite.d.ts +28 -0
  2651. package/dist/services/agent-inbox/test/seed.d.ts +44 -0
  2652. package/dist/services/agent-mon/providers/claude/claude-provider.d.ts +0 -2
  2653. package/dist/services/agent-mon/providers/opencode/db.d.ts +1 -1
  2654. package/dist/services/agent-mon/providers/opencode/opencode-provider.d.ts +0 -2
  2655. package/dist/services/agent-run/core/agent-run-error.d.ts +22 -0
  2656. package/dist/services/agent-run/core/ports/agent-engine.port.d.ts +34 -0
  2657. package/dist/services/agent-run/core/registry.d.ts +35 -0
  2658. package/dist/services/agent-run/core/run-options.type.d.ts +39 -0
  2659. package/dist/services/agent-run/core/run.d.ts +27 -0
  2660. package/dist/services/agent-run/engines/opencode/opencode-engine.d.ts +41 -0
  2661. package/dist/services/agent-run/engines/opencode/opencode-error-map.d.ts +31 -0
  2662. package/dist/services/agent-run/index.d.ts +4 -0
  2663. package/dist/services/ai-kit/compile.d.ts +27 -0
  2664. package/dist/services/ai-kit/node-map.d.ts +8 -0
  2665. package/dist/services/ai-kit/selector.d.ts +38 -0
  2666. package/dist/services/dbc/linter/dbc-ast-adapter.types.d.ts +2 -2
  2667. package/dist/services/dbc/linter/dbc-linter.types.d.ts +7 -0
  2668. package/dist/services/dbc/linter/implementations/ts/dbc-ts-ast-adapter.d.ts +19 -11
  2669. package/dist/services/dbc/linter/implementations/ts/dbc-ts-linter.d.ts +28 -23
  2670. package/dist/services/dbc/parser/implementations/jsdoc/dbc-jsdoc-parser.d.ts +0 -2
  2671. package/dist/services/logger/logger.d.ts +8 -1
  2672. package/dist/services/mr-stats/classifier.d.ts +16 -0
  2673. package/dist/services/mr-stats/duplicate-detector.d.ts +16 -0
  2674. package/dist/services/mr-stats/entity-counter.d.ts +11 -0
  2675. package/dist/services/mr-stats/line-counter.d.ts +38 -0
  2676. package/dist/services/mr-stats/mr-resolver.d.ts +66 -0
  2677. package/dist/services/mr-stats/mr-stats.types.d.ts +118 -0
  2678. package/dist/services/mr-stats/reporter.d.ts +32 -0
  2679. package/dist/services/symbol-index/implementations/grep/grep-symbol-index-adapter.d.ts +12 -0
  2680. package/dist/services/symbol-index/implementations/tree-sitter/ts-symbol-index-adapter.d.ts +43 -0
  2681. package/dist/services/symbol-index/select-symbol-index.d.ts +11 -0
  2682. package/dist/services/symbol-index/symbol-index.types.d.ts +38 -0
  2683. package/dist/services/vcs-client/abstract/vcs-client-inbox.d.ts +28 -0
  2684. package/dist/services/vcs-client/abstract/vcs-client-merge-discussions.d.ts +170 -0
  2685. package/dist/services/vcs-client/abstract/vcs-client-merge-requests.d.ts +60 -0
  2686. package/dist/services/vcs-client/abstract/vcs-client-pipeline.d.ts +37 -0
  2687. package/dist/services/vcs-client/abstract/vcs-client-reactions.d.ts +19 -0
  2688. package/dist/services/vcs-client/abstract/vcs-client.d.ts +9 -0
  2689. package/dist/services/vcs-client/entities/mr-activity-event.type.d.ts +19 -0
  2690. package/dist/services/vcs-client/entities/vcs-actionable-mr.type.d.ts +79 -0
  2691. package/dist/services/vcs-client/entities/vcs-delete-discussion-query.type.d.ts +9 -0
  2692. package/dist/services/vcs-client/entities/vcs-delete-note-query.type.d.ts +11 -0
  2693. package/dist/services/vcs-client/entities/vcs-draft-note.type.d.ts +9 -0
  2694. package/dist/services/vcs-client/entities/vcs-job-query.type.d.ts +7 -0
  2695. package/dist/services/vcs-client/entities/vcs-job.type.d.ts +15 -0
  2696. package/dist/services/vcs-client/entities/vcs-merge-request-approve-query.type.d.ts +7 -0
  2697. package/dist/services/vcs-client/entities/vcs-merge-request-create-query.type.d.ts +26 -0
  2698. package/dist/services/vcs-client/entities/vcs-merge-request-update-query.type.d.ts +30 -0
  2699. package/dist/services/vcs-client/entities/vcs-pipeline-status.type.d.ts +14 -0
  2700. package/dist/services/vcs-client/entities/vcs-reaction-query.type.d.ts +14 -0
  2701. package/dist/services/vcs-client/entities/vcs-resolve-discussion-query.type.d.ts +11 -0
  2702. package/dist/services/vcs-client/entities/vcs-update-note-query.type.d.ts +11 -0
  2703. package/dist/services/vcs-client/github/vcs-github-client.d.ts +9 -1
  2704. package/dist/services/vcs-client/github/vcs-github-merge-discussions.d.ts +109 -0
  2705. package/dist/services/vcs-client/github/vcs-github-merge-requests.d.ts +52 -10
  2706. package/dist/services/vcs-client/github/vcs-github-reactions.d.ts +31 -0
  2707. package/dist/services/vcs-client/gitlab/vcs-gitlab-client.d.ts +80 -0
  2708. package/dist/services/vcs-client/gitlab/vcs-gitlab-inbox.d.ts +37 -0
  2709. package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-discussions.d.ts +91 -1
  2710. package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-requests.d.ts +64 -3
  2711. package/dist/services/vcs-client/gitlab/vcs-gitlab-pipeline.d.ts +51 -0
  2712. package/dist/services/vcs-client/gitlab/vcs-gitlab-reactions.d.ts +31 -0
  2713. package/dist/shared/common/changed-files.d.ts +14 -0
  2714. package/dist/shared/common/exec.d.ts +7 -2
  2715. package/dist/shared/common/parse-args.d.ts +8 -1
  2716. package/dist/shared/common/sync/sync-core.shared.d.ts +1 -1
  2717. package/dist/shared/mermaid/mermaid.d.ts +19 -0
  2718. package/dist/shared/prompt-lint/stop-words.d.ts +34 -0
  2719. package/dist/shared/sdd/anchor-inject.d.ts +32 -0
  2720. package/dist/shared/sdd/bdd-coverage.d.ts +72 -0
  2721. package/dist/shared/sdd/check.d.ts +225 -0
  2722. package/dist/shared/sdd/consumers-resolvable.d.ts +41 -0
  2723. package/dist/shared/sdd/flow.d.ts +21 -0
  2724. package/dist/shared/sdd/id-replace.d.ts +68 -0
  2725. package/dist/shared/sdd/inventory.d.ts +6 -0
  2726. package/dist/shared/sdd/mermaid-check.d.ts +10 -0
  2727. package/dist/shared/sdd/migration-move.d.ts +88 -0
  2728. package/dist/shared/sdd/migration-plan.d.ts +126 -0
  2729. package/dist/shared/sdd/portal.d.ts +40 -0
  2730. package/dist/shared/sdd/probe.d.ts +23 -0
  2731. package/dist/shared/sdd/readiness.d.ts +49 -0
  2732. package/dist/shared/sdd/rules-cascade.d.ts +31 -0
  2733. package/dist/shared/sdd/scripts.d.ts +19 -0
  2734. package/dist/shared/sdd/section.d.ts +52 -0
  2735. package/dist/shared/sdd/tasks-append-only.d.ts +17 -0
  2736. package/dist/shared/sdd/templates.d.ts +61 -0
  2737. package/dist/shared/sdd/ticket.d.ts +81 -0
  2738. package/dist/shared/sdd/tracker.d.ts +70 -0
  2739. package/dist/shared/sdd/yagni.d.ts +71 -0
  2740. package/dist/utils/test/mock-http.d.ts +51 -0
  2741. package/package.json +42 -5
  2742. package/ai/directives/dbc-audit.directive.xml +0 -131
  2743. package/ai/directives/dev-review.directive.xml +0 -148
  2744. package/ai/directives/perf-auditor/perf-auditor.directive.xml +0 -75
  2745. package/ai/directives/perf-auditor/rules/async-latency.xml +0 -101
  2746. package/ai/directives/perf-auditor/rules/data-structures.xml +0 -103
  2747. package/ai/directives/perf-auditor/rules/iteration-fusion.xml +0 -96
  2748. package/ai/directives/perf-auditor/rules/memory-gc.xml +0 -102
  2749. package/ai/directives/sdd/README.md +0 -49
  2750. package/ai/directives/sdd/audit.directive.xml +0 -543
  2751. package/ai/directives/sdd/critic-protocol.xml +0 -78
  2752. package/ai/directives/sdd/critic.directive.xml +0 -158
  2753. package/ai/directives/sdd/discovery.directive.xml +0 -824
  2754. package/ai/directives/sdd/fix.directive.xml +0 -249
  2755. package/ai/directives/sdd/module-decomposition.directive.xml +0 -666
  2756. package/ai/directives/sdd/phase-execution-protocol.xml +0 -341
  2757. package/ai/directives/sdd/scaffold.directive.xml +0 -717
  2758. package/ai/directives/sdd/setup.directive.xml +0 -213
  2759. package/ai/directives/sdd/svelte-ui-discovery.directive.xml +0 -263
  2760. package/ai/directives/semantic-change-extractor.directive.xml +0 -99
  2761. package/ai/docs/README.md +0 -17
  2762. package/ai/docs/ai-icl.md +0 -538
  2763. package/ai/docs/ai-priming.md +0 -548
  2764. package/ai/docs/ai-prompt-formats.md +0 -406
  2765. package/ai/docs/ai-promting.md +0 -572
  2766. package/ai/drafts/DRAFT.md +0 -120
  2767. package/ai/drafts/agent-devgen-class-from-description.rules.xml +0 -123
  2768. package/ai/drafts/agent-typescript-devgen.v1.xml +0 -303
  2769. package/ai/drafts/d.md +0 -65
  2770. package/ai/drafts/music-posts.md +0 -105
  2771. package/ai/fw/v1/architecture/blueprint-factory.xml +0 -77
  2772. package/ai/fw/v1/core/mental-model.xml +0 -50
  2773. package/ai/fw/v1/discovery/intent-reactor.xml +0 -92
  2774. package/ai/fw/v1/production/swarm-protocol.xml +0 -122
  2775. package/ai/fw/v1/review/quality-pipeline.xml +0 -102
  2776. package/ai/fw/v2/arch-universal.xml +0 -73
  2777. package/ai/fw-draft/README.md +0 -79
  2778. package/ai/fw-draft/bin/discovery.sh +0 -116
  2779. package/ai/fw-draft/gennady.xml +0 -58
  2780. package/ai/fw-draft/provider/claude.xml +0 -16
  2781. package/ai/fw-draft/provider/cursor.xml +0 -23
  2782. package/ai/fw-draft/provider/default.xml +0 -12
  2783. package/ai/fw-draft/roles/developer.xml +0 -18
  2784. package/ai/fw-draft/router.xml +0 -39
  2785. package/ai/fw-draft/routes/development.xml +0 -32
  2786. package/ai/fw-draft/routes/universal.xml +0 -58
  2787. package/ai/fw-draft/rules/dev/base/file-structure-rules.xml +0 -89
  2788. package/ai/fw-draft/rules/dev/typescript/contacts.xml +0 -194
  2789. package/ai/skills/alt-opinion/SKILL.md +0 -79
  2790. package/ai/skills/alt-opinion/opinion.prompt.md +0 -11
  2791. package/ai/skills/alt-opinion/synth.prompt.md +0 -8
  2792. package/ai/skills/sdd-continue/SKILL.md +0 -13
  2793. package/ai/skills/sdd-discover/SKILL.md +0 -13
  2794. package/ai/skills/sdd-execute/scripts/README.md +0 -84
  2795. package/ai/skills/sdd-execute/scripts/check-blockers.sh +0 -158
  2796. package/ai/skills/sdd-execute/scripts/classify-scripts.js +0 -111
  2797. package/ai/skills/sdd-execute/scripts/classify-scripts.ts +0 -133
  2798. package/ai/skills/sdd-execute/scripts/extract-section.sh +0 -219
  2799. package/ai/skills/sdd-execute/scripts/lint-artifacts.sh +0 -143
  2800. package/ai/skills/sdd-execute/scripts/scan.sh +0 -385
  2801. package/ai/skills/sdd-execute/scripts/sdd +0 -114
  2802. package/ai/skills/sdd-execute/scripts/verify.sh +0 -139
  2803. package/ai/skills/sdd-execute-batch/SKILL.md +0 -213
  2804. package/ai/skills/sdd-fix/SKILL.md +0 -13
  2805. package/ai/skills/sdd-infra/SKILL.md +0 -13
  2806. package/ai/skills/sdd-module-decomposition/SKILL.md +0 -13
  2807. package/ai/skills/sdd-setup/SKILL.md +0 -13
  2808. package/dist/ai/directives/dbc-audit.directive.xml +0 -131
  2809. package/dist/ai/directives/dev-review.directive.xml +0 -148
  2810. package/dist/ai/directives/perf-auditor/perf-auditor.directive.xml +0 -75
  2811. package/dist/ai/directives/perf-auditor/rules/async-latency.xml +0 -101
  2812. package/dist/ai/directives/perf-auditor/rules/data-structures.xml +0 -103
  2813. package/dist/ai/directives/perf-auditor/rules/iteration-fusion.xml +0 -96
  2814. package/dist/ai/directives/perf-auditor/rules/memory-gc.xml +0 -102
  2815. package/dist/ai/directives/sdd/README.md +0 -49
  2816. package/dist/ai/directives/sdd/audit.directive.xml +0 -543
  2817. package/dist/ai/directives/sdd/critic-protocol.xml +0 -78
  2818. package/dist/ai/directives/sdd/critic.directive.xml +0 -158
  2819. package/dist/ai/directives/sdd/discovery.directive.xml +0 -824
  2820. package/dist/ai/directives/sdd/fix.directive.xml +0 -249
  2821. package/dist/ai/directives/sdd/module-decomposition.directive.xml +0 -666
  2822. package/dist/ai/directives/sdd/phase-execution-protocol.xml +0 -341
  2823. package/dist/ai/directives/sdd/scaffold.directive.xml +0 -717
  2824. package/dist/ai/directives/sdd/setup.directive.xml +0 -213
  2825. package/dist/ai/directives/sdd/svelte-ui-discovery.directive.xml +0 -263
  2826. package/dist/ai/directives/semantic-change-extractor.directive.xml +0 -99
  2827. package/dist/ai/docs/README.md +0 -17
  2828. package/dist/ai/docs/ai-icl.md +0 -538
  2829. package/dist/ai/docs/ai-priming.md +0 -548
  2830. package/dist/ai/docs/ai-prompt-formats.md +0 -406
  2831. package/dist/ai/docs/ai-promting.md +0 -572
  2832. package/dist/ai/drafts/DRAFT.md +0 -120
  2833. package/dist/ai/drafts/agent-devgen-class-from-description.rules.xml +0 -123
  2834. package/dist/ai/drafts/agent-typescript-devgen.v1.xml +0 -303
  2835. package/dist/ai/drafts/d.md +0 -65
  2836. package/dist/ai/drafts/music-posts.md +0 -105
  2837. package/dist/ai/fw/v1/architecture/blueprint-factory.xml +0 -77
  2838. package/dist/ai/fw/v1/core/mental-model.xml +0 -50
  2839. package/dist/ai/fw/v1/discovery/intent-reactor.xml +0 -92
  2840. package/dist/ai/fw/v1/production/swarm-protocol.xml +0 -122
  2841. package/dist/ai/fw/v1/review/quality-pipeline.xml +0 -102
  2842. package/dist/ai/fw/v2/arch-universal.xml +0 -73
  2843. package/dist/ai/fw-draft/README.md +0 -79
  2844. package/dist/ai/fw-draft/bin/discovery.sh +0 -116
  2845. package/dist/ai/fw-draft/gennady.xml +0 -58
  2846. package/dist/ai/fw-draft/provider/claude.xml +0 -16
  2847. package/dist/ai/fw-draft/provider/cursor.xml +0 -23
  2848. package/dist/ai/fw-draft/provider/default.xml +0 -12
  2849. package/dist/ai/fw-draft/roles/developer.xml +0 -18
  2850. package/dist/ai/fw-draft/router.xml +0 -39
  2851. package/dist/ai/fw-draft/routes/development.xml +0 -32
  2852. package/dist/ai/fw-draft/routes/universal.xml +0 -58
  2853. package/dist/ai/fw-draft/rules/dev/base/file-structure-rules.xml +0 -89
  2854. package/dist/ai/fw-draft/rules/dev/typescript/contacts.xml +0 -194
  2855. package/dist/ai/skills/alt-opinion/SKILL.md +0 -79
  2856. package/dist/ai/skills/alt-opinion/opinion.prompt.md +0 -11
  2857. package/dist/ai/skills/alt-opinion/synth.prompt.md +0 -8
  2858. package/dist/ai/skills/sdd-continue/SKILL.md +0 -13
  2859. package/dist/ai/skills/sdd-discover/SKILL.md +0 -13
  2860. package/dist/ai/skills/sdd-execute/scripts/README.md +0 -84
  2861. package/dist/ai/skills/sdd-execute/scripts/check-blockers.sh +0 -158
  2862. package/dist/ai/skills/sdd-execute/scripts/classify-scripts.js +0 -111
  2863. package/dist/ai/skills/sdd-execute/scripts/classify-scripts.ts +0 -133
  2864. package/dist/ai/skills/sdd-execute/scripts/extract-section.sh +0 -219
  2865. package/dist/ai/skills/sdd-execute/scripts/lint-artifacts.sh +0 -143
  2866. package/dist/ai/skills/sdd-execute/scripts/scan.sh +0 -385
  2867. package/dist/ai/skills/sdd-execute/scripts/sdd +0 -114
  2868. package/dist/ai/skills/sdd-execute/scripts/verify.sh +0 -139
  2869. package/dist/ai/skills/sdd-execute-batch/SKILL.md +0 -213
  2870. package/dist/ai/skills/sdd-fix/SKILL.md +0 -13
  2871. package/dist/ai/skills/sdd-infra/SKILL.md +0 -13
  2872. package/dist/ai/skills/sdd-module-decomposition/SKILL.md +0 -13
  2873. package/dist/ai/skills/sdd-setup/SKILL.md +0 -13
  2874. package/dist/assistant/music/music-filter.d.ts +0 -7
  2875. package/dist/chunks/_commonjsHelpers-DaMA6jEr.js +0 -8
  2876. package/dist/chunks/devtools-CPZ0IUNM.js +0 -79
  2877. package/dist/chunks/help-CSPhOoI9.js +0 -8
  2878. package/dist/chunks/help-DL_QBMwy.js +0 -8
  2879. package/dist/chunks/help-_Y_TN4DZ.js +0 -6
  2880. package/dist/chunks/help.cmd-BDO4k0_z.js +0 -41
  2881. package/dist/chunks/index-4fUNp3za.js +0 -156
  2882. package/dist/chunks/index-9JlEjsvH.js +0 -443
  2883. package/dist/chunks/index-9e72uZq7.js +0 -97
  2884. package/dist/chunks/index-B4ODZbtC.js +0 -143
  2885. package/dist/chunks/index-BXWDYM_9.js +0 -16979
  2886. package/dist/chunks/index-BgKyH0dB.js +0 -658
  2887. package/dist/chunks/index-BmABG4HA.js +0 -183
  2888. package/dist/chunks/index-C9UEDrqg.js +0 -754
  2889. package/dist/chunks/index-DICatQqS.js +0 -3793
  2890. package/dist/chunks/index-DQpmjvCj.js +0 -125
  2891. package/dist/chunks/index-DS_1ZX6G.js +0 -7
  2892. package/dist/chunks/index-DoaxOhQ8.js +0 -26971
  2893. package/dist/chunks/index-ZpU_VoI0.js +0 -265
  2894. package/dist/chunks/index-jOIhIHdS.js +0 -369
  2895. package/dist/chunks/index-mkUNzixA.js +0 -7
  2896. package/dist/chunks/run-review-command.logic-CHVCVJWO.js +0 -267
  2897. package/dist/chunks/services-IgZptnTi.js +0 -2732
  2898. package/dist/chunks/shared-9J_oXE74.js +0 -763
  2899. package/dist/services/ai-client/providers/ai-model.type.d.ts +0 -47
  2900. package/dist/services/ai-client/providers/open-router/open-router-model.type.d.ts +0 -26
  2901. package/dist/services/ai-client/providers/open-router/open-router-provider.d.ts +0 -26
  2902. package/dist/services/ai-client/providers/openai-like-provider.d.ts +0 -3
  2903. package/dist/services/data-ore/telegram/telegram-data-ore.d.ts +0 -28
  2904. package/dist/services/data-ore/telegram/telegram-data-ore.types.d.ts +0 -9
  2905. package/dist/services/data-ore/telegram/telegram-demo-music-helper.d.ts +0 -10
  2906. package/dist/services/data-ore/telegram/telegram-demo.d.ts +0 -3
  2907. /package/dist/{services/ai-client/ai-client.d.ts → cli/cmd/inbox-eval/index.d.ts} +0 -0
@@ -0,0 +1,4509 @@
1
+ import { spawn as gt, execSync as Ge, execFile as It, execFileSync as Ot } from "node:child_process";
2
+ import v, { mkdirSync as Fe, readFileSync as D, existsSync as R, readdirSync as $, statSync as oe, writeFileSync as q, rmSync as Se, renameSync as Tt } from "node:fs";
3
+ import k, { resolve as y, dirname as w, join as h, basename as G, relative as x, sep as b, extname as _t, posix as B } from "node:path";
4
+ import { platform as ge, homedir as te } from "node:os";
5
+ import { fileURLToPath as fe } from "node:url";
6
+ import { l as O, V as Nt, a as Ct } from "./services-CwvXl2MB.js";
7
+ import { promisify as Dt } from "node:util";
8
+ const At = 864e5, yt = 3e3, Rt = "update-check-worker.ts", kt = "update-check-cache.json";
9
+ function vt(e) {
10
+ return ge() === "win32" ? y(process.env.LOCALAPPDATA ?? y(te(), "AppData", "Local"), "gennady") : ge() === "darwin" ? y(te(), "Library", "Caches", "gennady") : y(te(), ".cache", "gennady");
11
+ }
12
+ function wt(e) {
13
+ try {
14
+ const t = D(e, "utf-8"), s = JSON.parse(t);
15
+ return typeof s?.lastCheck != "string" || typeof s?.latestVersion != "string" ? null : s;
16
+ } catch {
17
+ return null;
18
+ }
19
+ }
20
+ function Pt(e, t) {
21
+ return Date.now() - new Date(e.lastCheck).getTime() < t;
22
+ }
23
+ function Ie(e, t) {
24
+ const s = (r) => r.split(".").map((i) => parseInt(i, 10)), n = s(e), o = s(t);
25
+ if (n.some(isNaN) || o.some(isNaN)) return !1;
26
+ for (let r = 0; r < Math.max(n.length, o.length); r++) {
27
+ const i = n[r] ?? 0, a = o[r] ?? 0;
28
+ if (a > i) return !0;
29
+ if (a < i) return !1;
30
+ }
31
+ return !1;
32
+ }
33
+ function Oe(e, t) {
34
+ let s = !1;
35
+ process.on("beforeExit", () => {
36
+ s || (s = !0, process.stderr.write(`
37
+ Update available: ${e} → ${t}
38
+ `), process.stderr.write(`Run: npm i -g gennady@latest
39
+
40
+ `));
41
+ });
42
+ }
43
+ function oo(e, t) {
44
+ if (process.env.GENNADY_NO_UPDATE_CHECK === "1" || process.argv.includes("--no-update-check")) {
45
+ process.env.GENNADY_DEBUG === "1" && process.stderr.write(
46
+ `[update-check] skipped: opt-out (GENNADY_NO_UPDATE_CHECK or --no-update-check)
47
+ `
48
+ );
49
+ return;
50
+ }
51
+ if (process.env.CI === "true" || process.env.CONTINUOUS_INTEGRATION === "true" || process.env.NODE_ENV === "test") {
52
+ process.env.GENNADY_DEBUG === "1" && process.stderr.write(`[update-check] skipped: CI/test environment
53
+ `);
54
+ return;
55
+ }
56
+ const s = Number(process.env.GENNADY_UPDATE_CHECK_INTERVAL) || At, n = vt(), o = y(n, kt);
57
+ Fe(n, { recursive: !0 });
58
+ const r = wt(o);
59
+ if (r && Pt(r, s)) {
60
+ r.latestVersion && Ie(e.version, r.latestVersion) && (process.stderr.isTTY || t?.skipNotificationIfNoTty === !1) && Oe(e.version, r.latestVersion);
61
+ return;
62
+ }
63
+ const i = y(w(fe(import.meta.url)), Rt);
64
+ gt(
65
+ process.execPath,
66
+ [i, e.name, e.version, o, String(yt)],
67
+ {
68
+ stdio: "ignore"
69
+ }
70
+ ).unref(), r?.latestVersion && Ie(e.version, r.latestVersion) && (process.stderr.isTTY || t?.skipNotificationIfNoTty === !1) && Oe(e.version, r.latestVersion);
71
+ }
72
+ const j = ["plain", "nocolor", "noColor", "no-color", "color=no", "color=never"].some(
73
+ (e) => process.argv.includes(`-${e}`) || process.argv.includes(`--${e}`)
74
+ ), U = {
75
+ // Modifiers
76
+ reset: "\x1B[0m",
77
+ bold: "\x1B[1m",
78
+ dim: "\x1B[2m",
79
+ italic: "\x1B[3m",
80
+ underline: "\x1B[4m",
81
+ overline: "\x1B[53m",
82
+ inverse: "\x1B[7m",
83
+ hidden: "\x1B[8m",
84
+ strikethrough: "\x1B[9m",
85
+ // Colors (foreground)
86
+ black: "\x1B[30m",
87
+ red: "\x1B[31m",
88
+ green: "\x1B[32m",
89
+ yellow: "\x1B[33m",
90
+ blue: "\x1B[34m",
91
+ magenta: "\x1B[35m",
92
+ cyan: "\x1B[36m",
93
+ white: "\x1B[37m",
94
+ gray: "\x1B[90m",
95
+ redBright: "\x1B[91m",
96
+ greenBright: "\x1B[92m",
97
+ yellowBright: "\x1B[93m",
98
+ blueBright: "\x1B[94m",
99
+ magentaBright: "\x1B[95m",
100
+ cyanBright: "\x1B[96m",
101
+ whiteBright: "\x1B[97m",
102
+ // Background colors
103
+ bgBlack: "\x1B[40m",
104
+ bgRed: "\x1B[41m",
105
+ bgGreen: "\x1B[42m",
106
+ bgYellow: "\x1B[43m",
107
+ bgBlue: "\x1B[44m",
108
+ bgMagenta: "\x1B[45m",
109
+ bgCyan: "\x1B[46m",
110
+ bgWhite: "\x1B[47m",
111
+ bgGray: "\x1B[100m",
112
+ bgRedBright: "\x1B[101m",
113
+ bgGreenBright: "\x1B[102m",
114
+ bgYellowBright: "\x1B[103m",
115
+ bgBlueBright: "\x1B[104m",
116
+ bgMagentaBright: "\x1B[105m",
117
+ bgCyanBright: "\x1B[106m",
118
+ bgWhiteBright: "\x1B[107m"
119
+ };
120
+ function Ve(e = []) {
121
+ const t = (s) => j ? s : e.join("") + s + U.reset;
122
+ return new Proxy(t, {
123
+ get(s, n) {
124
+ if (n === "toString")
125
+ return () => j ? "%s" : e.join("") + "%s" + U.reset;
126
+ if (n in U) {
127
+ const o = U[n];
128
+ return Ve(j ? [] : [...e, o].filter(Boolean));
129
+ }
130
+ },
131
+ apply(s, n, o) {
132
+ const r = o[0] ?? "";
133
+ return j ? r : e.join("") + r + U.reset;
134
+ }
135
+ });
136
+ }
137
+ const ro = Ve(), io = (e, t = {}, s = {}) => {
138
+ const n = { _: [] }, o = e.slice(2);
139
+ for (let r = 0; r < o.length; r++) {
140
+ const i = o[r];
141
+ if (i.startsWith("-")) {
142
+ const a = i.replace(/^-+/, ""), [c, l] = a.split("=");
143
+ let f = !1;
144
+ for (const [d, u] of Object.entries(t)) {
145
+ const p = Array.isArray(u) ? u : u.aliases ?? [d];
146
+ if (p && c && p.includes(c)) {
147
+ f = !0;
148
+ const m = typeof u == "object" && !Array.isArray(u) ? u.takesValue === !0 : !1;
149
+ let E;
150
+ l !== void 0 ? E = l.replace(/^"|"$/g, "") : m && r + 1 < o.length && !o[r + 1].startsWith("-") ? (E = o[r + 1], r++) : E = !0, d in n ? (Array.isArray(n[d]) || (n[d] = [n[d]]), n[d].push(E)) : n[d] = E;
151
+ break;
152
+ }
153
+ }
154
+ if (!f && s.strict)
155
+ throw new Error(`Unknown flag: -${a}`);
156
+ } else
157
+ n._.push(i);
158
+ }
159
+ return n;
160
+ }, Lt = {
161
+ js: "JavaScript",
162
+ jsx: "JavaScript",
163
+ ts: "TypeScript",
164
+ tsx: "TypeScript",
165
+ java: "Java",
166
+ py: "Python",
167
+ c: "C",
168
+ cpp: "C++",
169
+ cs: "C#",
170
+ rb: "Ruby",
171
+ php: "PHP",
172
+ go: "Go",
173
+ swift: "Swift",
174
+ m: "Objective-C",
175
+ mm: "Objective-C++",
176
+ kt: "Kotlin",
177
+ sh: "Shell",
178
+ bash: "Shell",
179
+ html: "HTML",
180
+ css: "CSS",
181
+ less: "Less",
182
+ scss: "SCSS",
183
+ sass: "Sass",
184
+ md: "Markdown",
185
+ mdc: "Markdown"
186
+ }, Te = (e) => Lt[e] ?? void 0, ao = () => {
187
+ try {
188
+ return Ge("osascript -e 'user locale of (get system info)'").toString().trim().toLowerCase().split("_").filter((s) => s !== "en" && s !== "us")[0] ?? "en";
189
+ } catch {
190
+ return "en";
191
+ }
192
+ }, _e = (e) => {
193
+ const t = e.match(/[\p{L}\p{N}_]+|[^\s\p{L}\p{N}_]/gu);
194
+ return t ? t.length : 0;
195
+ }, bt = [
196
+ "^package\\.json",
197
+ "^tsconfig\\.json",
198
+ "^babel\\.config\\.json",
199
+ "^\\.pnpmfile\\.cjs",
200
+ "^\\.yarnrc(?:\\.(?:yml|yaml))?",
201
+ "^go\\.(?:mod|sum)",
202
+ "^\\.env(?:\\.[\\w]+)?",
203
+ "^\\..+",
204
+ ".*\\.(?:yml|yaml|rc|ini|conf)"
205
+ ], Mt = [
206
+ "^package-lock\\.json",
207
+ "^npm-shrinkwrap\\.json",
208
+ "^yarn(?:-lock)?\\.(?:yaml|yml|toml)",
209
+ "^pnpm-lock\\.yaml",
210
+ "^composer\\.lock",
211
+ "^podfile\\.lock",
212
+ "^go\\.sum",
213
+ "^gemfile\\.lock"
214
+ ], xt = {
215
+ doc: /\.(md|markdown|txt|rst)$/i,
216
+ cfg: new RegExp(bt.join("|"), "i"),
217
+ img: /\.(png|jpe?g|gif|svg|bmp|tiff|ico)$/i,
218
+ css: /\.(css|less|scss|sass|styl)$/i,
219
+ html: /\.(html?)$/i,
220
+ code: /\.(js|jsx|ts|tsx|java|py|c|cpp|cs|rb|php|go|swift|m|mm|kt|sh|bash)$/i,
221
+ bin: /^(exe|dll|so|bin)\b/i,
222
+ lock: new RegExp(Mt.join("|"), "i"),
223
+ json: /\.json$/i
224
+ }, Ne = (e, t) => {
225
+ if (t?.extra && Array.isArray(t.extra)) {
226
+ for (const n of t.extra)
227
+ if (/^Binary files? /i.test(n) || /GIT binary patch/i.test(n))
228
+ return "bin";
229
+ }
230
+ return Object.entries(xt).find(([, n]) => n.test(e))?.[0] ?? "other";
231
+ }, $t = (e) => {
232
+ const t = e.split(`
233
+ `), s = [];
234
+ let n = null, o = null;
235
+ if (t.forEach((r) => {
236
+ if (r.startsWith("diff --git")) {
237
+ if (n) {
238
+ n.diff.tokens = n.diff.hunks.reduce(
239
+ (f, d) => f + d.tokens,
240
+ 0
241
+ ), n.tokens = n.diff.tokens;
242
+ const l = n.filename.match(/\.([^.]+)$/);
243
+ n.ext = l?.[1]?.toLowerCase() ?? "", n.category = Ne(
244
+ n.filename,
245
+ n.metadata
246
+ ), n.programmingLanguage = Te(n.ext), s.push(n);
247
+ }
248
+ const i = r.match(/^diff --git a\/(.+?) b\/(.+)$/), a = i?.[1] ?? null;
249
+ n = {
250
+ isNew: !1,
251
+ isDeleted: !1,
252
+ isRenamed: !1,
253
+ filename: i?.[2] ?? null ?? "",
254
+ oldFilename: a ?? null,
255
+ newFileMode: null,
256
+ deletedFileMode: null,
257
+ diff: {
258
+ tokens: 0,
259
+ hunks: []
260
+ },
261
+ tokens: 0,
262
+ metadata: {},
263
+ ext: "",
264
+ category: "other",
265
+ programmingLanguage: void 0
266
+ }, o = null;
267
+ } else if (n && r.startsWith("new file mode")) {
268
+ const i = r.split(" ");
269
+ n.isNew = !0, n.newFileMode = i[3] ?? null, n.metadata.newFileMode = n.newFileMode;
270
+ } else if (n && r.startsWith("deleted file mode")) {
271
+ const i = r.split(" ");
272
+ n.isDeleted = !0, n.deletedFileMode = i[3] ?? null, n.metadata.deletedFileMode = n.deletedFileMode;
273
+ } else if (n && r.startsWith("old mode")) {
274
+ const i = r.split(" ");
275
+ n.metadata.oldMode = i[2] ?? null;
276
+ } else if (n && r.startsWith("new mode")) {
277
+ const i = r.split(" ");
278
+ n.metadata.newMode = i[2] ?? null;
279
+ } else if (n && r.startsWith("similarity index")) {
280
+ const i = r.split(" ");
281
+ n.metadata.similarityIndex = i[2] ?? null;
282
+ } else if (n && r.startsWith("rename from")) {
283
+ const i = r.substring(11).trim();
284
+ n.isRenamed = !0, n.oldFilename = i, n.metadata.renameFrom = i;
285
+ } else if (n && r.startsWith("rename to")) {
286
+ const i = r.substring(9).trim();
287
+ n.isRenamed = !0, n.filename = i, n.metadata.renameTo = i;
288
+ } else n && r.startsWith("index") ? n.metadata.index = r.substring(5).trim() : n && (r.startsWith("--- ") || r.startsWith("+++ ")) ? r.startsWith("--- ") ? n.metadata.oldFileMarker = r : n.metadata.newFileMarker = r : n && r.startsWith("@@") ? (o = {
289
+ header: r,
290
+ changes: [r],
291
+ tokens: _e(r)
292
+ }, n.diff.hunks.push(o)) : o && (r.startsWith("+") || r.startsWith("-") || r.startsWith(" ")) ? (o.changes.push(r), o.tokens += _e(r)) : n && (Array.isArray(n.metadata.extra) || (n.metadata.extra = []), n.metadata.extra.push(r));
293
+ }), n) {
294
+ const r = n, i = r.filename.match(/\.([^.]+)$/);
295
+ r.diff.tokens = r.diff.hunks.reduce(
296
+ (a, c) => a + c.tokens,
297
+ 0
298
+ ), r.tokens = r.diff.tokens, r.ext = i?.[1]?.toLowerCase() ?? "", r.category = Ne(r.filename, r.metadata), r.programmingLanguage = Te(r.ext), s.push(r);
299
+ }
300
+ return s;
301
+ }, P = (e, t) => {
302
+ try {
303
+ return Ge(e, { encoding: "utf-8" });
304
+ } catch (s) {
305
+ const n = s.status;
306
+ return n !== void 0 && (t?.expectedExitCodes ?? []).includes(n) || O.error("[execSyncSafe] [running → failed] Command failed", { cause: s }), "";
307
+ }
308
+ }, Ce = (e) => /\.(test|spec)s?\./.test(e), Bt = () => P("git branch --list 2>/dev/null")?.match(/\s*\*?\s*(master|main)$/m)?.[1] ?? "master", co = () => P("git rev-parse --abbrev-ref HEAD 2>/dev/null").trim() || "HEAD", lo = () => {
309
+ const t = (P("git config --get remote.origin.url 2>/dev/null").trim() || P("git remote get-url origin 2>/dev/null").trim() || "").trim();
310
+ if (!t) return null;
311
+ if (/^[a-z]+:\/\//i.test(t))
312
+ try {
313
+ const n = new URL(t), o = (n.hostname || "").toLowerCase(), r = (n.protocol || "").replace(/:$/, "").toLowerCase(), i = (n.pathname || "").replace(/^\/+/, "").replace(/\.git$/i, "");
314
+ return !o || !i ? null : { host: o, project: i, scheme: r };
315
+ } catch (n) {
316
+ O.debug("[getGitRemote] [parsing → skip] URL parse failed", { cause: n });
317
+ }
318
+ const s = t.match(/^[\w.-]+@([^:\/]+)[:\/](.+)$/);
319
+ if (s) {
320
+ const n = (s[1] || "").toLowerCase(), o = (s[2] || "").replace(/^\/+/, "").replace(/\.git$/i, ""), r = "ssh";
321
+ return !n || !o ? null : { host: n, project: o, scheme: r };
322
+ }
323
+ return null;
324
+ }, Ut = () => {
325
+ try {
326
+ const e = P(`git rev-list --count HEAD ^${Bt()} 2>/dev/null`);
327
+ return parseInt(e, 10) || 0;
328
+ } catch (e) {
329
+ return O.debug("[getGitCommitCount] [counting → fallback] Using 0", { cause: e }), 0;
330
+ }
331
+ }, Gt = (e) => P(e ? `git diff ${e}` : "git diff HEAD"), uo = (e) => {
332
+ const t = Gt(e), s = $t(t).sort((a, c) => a.tokens - c.tokens), n = s.filter(
333
+ (a) => !a.isDeleted && !a.isRenamed && !Ce(a.filename) && (a.category === "config" || a.programmingLanguage)
334
+ );
335
+ n.length || n.push(
336
+ ...s.filter(
337
+ (a) => !a.isDeleted && !a.isRenamed && (a.category === "doc" || Ce(a.filename))
338
+ )
339
+ );
340
+ const o = n.reduce((a, c) => a + c.tokens, 0), r = n.at(-1)?.tokens ?? 0, i = [
341
+ ...new Set(n.map((a) => a.programmingLanguage).filter(Boolean))
342
+ ];
343
+ return {
344
+ diff: t,
345
+ parsedDiff: s,
346
+ parsedCodeDiff: n,
347
+ parsedCodeTokens: o,
348
+ parsedCodeChunkMaxTokens: r,
349
+ programmingLanguages: i,
350
+ commitCount: Ut()
351
+ };
352
+ }, Ft = (e) => {
353
+ if (Array.isArray(e) && e.length === 2) {
354
+ const t = e[1];
355
+ if (t === null)
356
+ return e[0];
357
+ throw t instanceof Error ? t : new TypeError(`[UNGUARD_ERROR_TYPE] Error "${t}"`, { cause: t });
358
+ }
359
+ throw new SyntaxError(
360
+ "[UNGUARD_ERROR_SYNTAX] Invalid input: not a valid [result, error] tuple.",
361
+ { cause: e }
362
+ );
363
+ }, fo = async (e) => {
364
+ const t = await e;
365
+ return Ft(t);
366
+ }, De = "</think>", po = (e) => {
367
+ const t = String(e ?? "").split(De).slice(-1).join(De).trim();
368
+ return /^(Хорошо,|Okay,)/.test(t) ? t.split(`
369
+
370
+
371
+ `).slice(-1).join(`
372
+
373
+
374
+ `).trim() : t;
375
+ };
376
+ class re {
377
+ /** @purpose Default configuration filename. */
378
+ static DEFAULT_FILENAME = ".gennadyrc";
379
+ /**
380
+ * @purpose Create GennadyRc instances for current directory and HOME (lookup priority).
381
+ * @returns Array of two instances: [cwd, HOME].
382
+ * @sideEffect IO: file read at constructor.
383
+ */
384
+ static getDefaults() {
385
+ return [process.cwd(), process.env.HOME].map((t) => new re(t));
386
+ }
387
+ /** @purpose Full path to the loaded rc config file. */
388
+ _filename = "";
389
+ /** @purpose Parsed configuration data with model list. */
390
+ _data = {
391
+ models: []
392
+ };
393
+ /** @purpose Load/parse error if config is invalid, null otherwise. */
394
+ _error = null;
395
+ /**
396
+ * @purpose Load and parse Gennady RC config file from a directory.
397
+ * @param [dir] Directory to look for the rc file in (defaults to cwd).
398
+ * @param [name] Config filename (defaults to .gennadyrc).
399
+ */
400
+ constructor(t = process.cwd(), s = re.DEFAULT_FILENAME) {
401
+ this._filename = h(t, s);
402
+ try {
403
+ if (R(this._filename)) {
404
+ const n = JSON.parse(D(this._filename).toString());
405
+ Array.isArray(n) ? this._data.models = n : n && typeof n == "object" && Array.isArray(n.models) ? this._data = {
406
+ ...this._data,
407
+ ...n
408
+ } : this._error = new Error(
409
+ `[GENNADY_RC_ERROR_CONFIG] Invalid "${this._filename}" config data`,
410
+ { cause: n }
411
+ );
412
+ }
413
+ } catch (n) {
414
+ this._error = new Error(`[GENNADY_RC_ERROR_PARSE] Read "${this._filename}" config failed`, {
415
+ cause: n
416
+ });
417
+ }
418
+ }
419
+ /**
420
+ * @purpose Check that configuration was successfully loaded and recognized.
421
+ * @returns true if no error; false on parse error or invalid data.
422
+ */
423
+ isValid() {
424
+ return !this._error;
425
+ }
426
+ /**
427
+ * @purpose Get list of models from loaded rc.
428
+ * @returns Array of RcModel (empty on error or missing file).
429
+ */
430
+ getModels() {
431
+ return this._data.models;
432
+ }
433
+ /**
434
+ * @purpose Get load/parse error if one occurred.
435
+ * @returns Error or null on successful load.
436
+ */
437
+ getError() {
438
+ return this._error;
439
+ }
440
+ }
441
+ const Vt = Dt(It);
442
+ class A extends Error {
443
+ /**
444
+ * @purpose Create a VCS resolution error with an optional root cause.
445
+ * @param message Human-readable error description.
446
+ * @param [cause] Original error that triggered this failure.
447
+ */
448
+ constructor(t, s) {
449
+ super(t, { cause: s }), this.name = "VcsResolveError";
450
+ }
451
+ }
452
+ function jt() {
453
+ return {
454
+ git: async (e) => {
455
+ const { stdout: t } = await Vt("git", e, { encoding: "utf-8" });
456
+ return String(t ?? "").trim();
457
+ },
458
+ env: (e) => process.env[e]
459
+ };
460
+ }
461
+ function Yt(e) {
462
+ const t = e.lastIndexOf("!");
463
+ if (t === -1) return null;
464
+ const s = e.slice(0, t), n = e.slice(t + 1), o = Number(n);
465
+ return !s || !Number.isInteger(o) || o <= 0 ? null : { project: s, iid: o };
466
+ }
467
+ function Ht(e) {
468
+ const t = e.match(/^git@([^:]+):(.+)\.git$/);
469
+ if (t)
470
+ return { host: t[1], project: t[2] };
471
+ const s = e.match(/^https?:\/\/([^/]+)\/(.+)\.git$/);
472
+ return s ? { host: s[1], project: s[2] } : null;
473
+ }
474
+ function qt(e) {
475
+ const t = e.match(/^https?:\/\/([^/]+)\/(.+)\/-\/merge_requests\/(\d+)\/?$/);
476
+ return t ? { host: t[1], project: t[2], iid: Number(t[3]) } : null;
477
+ }
478
+ async function Wt(e, t = jt()) {
479
+ if (O.debug("[resolveVcsContext] [idle → resolving]"), typeof e.url == "string") {
480
+ O.debug("[resolveVcsContext] [resolving → parsing-url]");
481
+ const d = qt(e.url);
482
+ if (!d) {
483
+ const N = `[resolveVcsContext] Некорректный URL: ${e.url}`;
484
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${N}`), new A(`Некорректный URL: ${e.url}`);
485
+ }
486
+ const u = e.host ?? d.host, p = d.project, m = d.iid, E = /github/i.test(u) ? "github" : "gitlab", S = E === "github" ? t.env("GITHUB_PERSONAL_TOKEN") ?? t.env("GITHUB_TOKEN") : t.env("GITLAB_PERSONAL_TOKEN");
487
+ if (!S) {
488
+ const N = E === "github" ? "GITHUB_PERSONAL_TOKEN or GITHUB_TOKEN" : "GITLAB_PERSONAL_TOKEN", I = `[resolveVcsContext] Не найден токен доступа. Установите ${N}.`;
489
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${I}`), new A(`Не найден токен доступа. Установите ${N}.`);
490
+ }
491
+ const _ = { provider: E, host: u, project: p, iid: m, token: S };
492
+ return O.info(`[resolveVcsContext] [resolving → resolved] ${u}/${p}!${m}`), _;
493
+ }
494
+ if (typeof e.ref == "string" && e.branch)
495
+ throw O.error("[resolveVcsContext] [resolving → failed] [resolveVcsContext] ref и branch не могут быть указаны одновременно"), new A("ref и branch не могут быть указаны одновременно");
496
+ const s = typeof e.ref == "string" ? Yt(e.ref) : null;
497
+ if (typeof e.ref == "string" && !s) {
498
+ const d = `[resolveVcsContext] Некорректный формат ref: ${e.ref}`;
499
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${d}`), new A(`Некорректный формат ref: ${e.ref}`);
500
+ }
501
+ const n = s?.iid ?? e.iid, o = s?.project ?? e.project;
502
+ let r = e.host, i = o;
503
+ if (!r || !i)
504
+ try {
505
+ O.debug("[resolveVcsContext] [resolving → fetching-remote]");
506
+ const d = await t.git(["config", "remote.origin.url"]), u = Ht(d);
507
+ if (!u) {
508
+ const p = `[resolveVcsContext] Не удалось разобрать URL удалённого репозитория: ${d}`;
509
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${p}`), new A(`Не удалось разобрать URL удалённого репозитория: ${d}`);
510
+ }
511
+ r ??= u.host, i ??= u.project;
512
+ } catch (d) {
513
+ if (d instanceof A) throw d;
514
+ if (!o) {
515
+ const u = "[resolveVcsContext] Не найден удалённый репозиторий origin", p = new A("Не найден удалённый репозиторий origin", d);
516
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${u}`, { error: p }), p;
517
+ }
518
+ O.debug(
519
+ "[resolveVcsContext] [resolving → remote-unreachable] project explicit, skipping host auto-detect"
520
+ );
521
+ }
522
+ if (!r || !i)
523
+ throw O.error("[resolveVcsContext] [resolving → failed] [resolveVcsContext] Не удалось определить host и project"), new A("Не удалось определить host и project");
524
+ const a = /github/i.test(r) ? "github" : "gitlab";
525
+ let c = e.branch;
526
+ if (!s && n === void 0)
527
+ try {
528
+ O.debug("[resolveVcsContext] [resolving → fetching-branch]"), c ??= await t.git(["rev-parse", "--abbrev-ref", "HEAD"]);
529
+ } catch (d) {
530
+ const u = "[resolveVcsContext] Не удалось определить текущую ветку без явного ref или project+iid", p = new A(
531
+ "Не удалось определить текущую ветку без явного ref или project+iid",
532
+ d
533
+ );
534
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${u}`, { error: p }), p;
535
+ }
536
+ const l = a === "github" ? t.env("GITHUB_PERSONAL_TOKEN") ?? t.env("GITHUB_TOKEN") : t.env("GITLAB_PERSONAL_TOKEN");
537
+ if (!l) {
538
+ const d = a === "github" ? "GITHUB_PERSONAL_TOKEN or GITHUB_TOKEN" : "GITLAB_PERSONAL_TOKEN", u = `[resolveVcsContext] Не найден токен доступа. Установите ${d}.`;
539
+ throw O.error(`[resolveVcsContext] [resolving → failed] ${u}`), new A(`Не найден токен доступа. Установите ${d}.`);
540
+ }
541
+ const f = {
542
+ provider: a,
543
+ host: r,
544
+ project: i,
545
+ iid: n,
546
+ branch: c,
547
+ token: l
548
+ };
549
+ return O.info(
550
+ `[resolveVcsContext] [resolving → resolved] ${r}/${i}${n ? `!${n}` : ""}`
551
+ ), f;
552
+ }
553
+ const mo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
554
+ __proto__: null,
555
+ VcsResolveError: A,
556
+ resolveVcsContext: Wt
557
+ }, Symbol.toStringTag, { value: "Module" }));
558
+ function Eo(e) {
559
+ const t = String(e).match(/<message[\s\S]*?>[\s\S]*?<\/message>/)?.[0];
560
+ if (!t)
561
+ return null;
562
+ const s = (a) => t.match(a)?.[1] ?? "", n = s(/type="([^"]+)"/), o = s(/icon="([^"]+)"/), r = s(/<subject>([\s\S]*?)<\/subject>/), i = s(/<description>([\s\S]*?)<\/description>/).replace(/\n\s+-/g, `
563
+ -`);
564
+ return {
565
+ type: n,
566
+ icon: o,
567
+ subject: r?.trim() || null,
568
+ description: i?.trim() || null
569
+ };
570
+ }
571
+ function se(e) {
572
+ return e ? String(e).replace(/[<>&'"]/g, (t) => {
573
+ switch (t) {
574
+ case "<":
575
+ return "&lt;";
576
+ case ">":
577
+ return "&gt;";
578
+ case "&":
579
+ return "&amp;";
580
+ case "'":
581
+ return "&apos;";
582
+ case '"':
583
+ return "&quot;";
584
+ default:
585
+ return t;
586
+ }
587
+ }) : "";
588
+ }
589
+ function Ae(e, t = 0) {
590
+ const s = " ".repeat(t), { tag: n, attrs: o, children: r } = e;
591
+ let i = "";
592
+ if (o && (i = Object.entries(o).filter(([, c]) => c != null).map(([c, l]) => ` ${c}="${se(String(l))}"`).join("")), r == null)
593
+ return `${s}<${n}${i} />`;
594
+ if (Array.isArray(r) && r.length === 0)
595
+ return `${s}<${n}${i} />`;
596
+ let a = "";
597
+ return Array.isArray(r) ? r.length > 0 && typeof r[0] == "string" ? a = r.map((l) => se(l)).join(`
598
+ `) : a = `
599
+ ` + r.map((l) => Ae(l, t + 1)).join(`
600
+ `) + `
601
+ ` + s : typeof r == "string" ? a = se(r) : "cdata" in r ? a = `<![CDATA[${String(r.cdata).replaceAll("]]>", "]]]]><![CDATA[>")}]]>` : a = `
602
+ ` + Ae(r, t + 1) + `
603
+ ` + s, `${s}<${n}${i}>${a}</${n}>`;
604
+ }
605
+ function ho(e) {
606
+ const t = [
607
+ "ai.knowledge.md",
608
+ "ai/ai.knowledge.md"
609
+ ], s = [];
610
+ for (const n of t) {
611
+ const o = k.join(e, n);
612
+ try {
613
+ v.existsSync(o) && v.statSync(o).isFile() && s.push(n);
614
+ } catch {
615
+ }
616
+ }
617
+ return s.length === 0 ? "" : `**MUST READ PROJECT KNOWLEDGE FILES**: ${s.join(", ")}.`;
618
+ }
619
+ const Kt = [
620
+ {
621
+ kind: "marker",
622
+ relativePath: "go.mod",
623
+ commands: ["go test ./...", "go vet ./...", "go fmt ./..."]
624
+ },
625
+ {
626
+ kind: "npm-package-json",
627
+ scriptGroups: [
628
+ {
629
+ preferredNames: [
630
+ "test",
631
+ "test:run",
632
+ "test:ci",
633
+ "test:app",
634
+ "mc:test",
635
+ "unit",
636
+ "jest",
637
+ "vitest"
638
+ ],
639
+ fallbackPatterns: [/(^|:)test($|:)/i, /(^|:)unit($|:)/i, /(^|:)spec($|:)/i]
640
+ },
641
+ {
642
+ preferredNames: ["lint:ci", "lint", "eslint", "stylelint", "format:check"],
643
+ fallbackPatterns: [/(^|:)(lint|eslint|stylelint)($|:)/i]
644
+ },
645
+ {
646
+ preferredNames: ["type-check", "typecheck", "check"],
647
+ fallbackPatterns: [/(^|:)(typecheck|type-check|check)($|:)/i]
648
+ }
649
+ ],
650
+ maxCommands: 5
651
+ },
652
+ {
653
+ kind: "marker",
654
+ relativePath: "Cargo.toml",
655
+ commands: ["cargo test", "cargo clippy"]
656
+ }
657
+ ];
658
+ function Xt(e, t) {
659
+ const s = k.join(e, t);
660
+ try {
661
+ return v.existsSync(s) && v.statSync(s).isFile();
662
+ } catch {
663
+ return !1;
664
+ }
665
+ }
666
+ function Zt(e, t) {
667
+ const s = e.toLowerCase(), n = t.toLowerCase();
668
+ return /(^|:|-)watch($|:|-)/i.test(s) ? !0 : [
669
+ /(^|\s)--watch(?:[=\s]|$)/i,
670
+ /(^|\s)--watchall(?:[=\s]|$)/i,
671
+ /(^|\s)watch(?:\s|$)/i,
672
+ /(^|\s)nodemon(?:\s|$)/i
673
+ ].some((r) => r.test(n));
674
+ }
675
+ function zt(e, t, s) {
676
+ const n = Object.entries(e).filter(
677
+ ([o, r]) => !s.has(o) && !Zt(o, r)
678
+ );
679
+ for (const o of t.preferredNames)
680
+ if (n.some(([r]) => r === o))
681
+ return o;
682
+ for (const [o] of n)
683
+ if (t.fallbackPatterns.some((r) => r.test(o)))
684
+ return o;
685
+ return null;
686
+ }
687
+ function Qt(e, t) {
688
+ const s = k.join(e, "package.json");
689
+ let n;
690
+ try {
691
+ if (!v.existsSync(s) || !v.statSync(s).isFile())
692
+ return null;
693
+ n = v.readFileSync(s, "utf-8");
694
+ } catch {
695
+ return null;
696
+ }
697
+ let o;
698
+ try {
699
+ o = JSON.parse(n);
700
+ } catch {
701
+ return null;
702
+ }
703
+ const r = o.scripts;
704
+ if (!r || typeof r != "object")
705
+ return null;
706
+ const i = [], a = /* @__PURE__ */ new Set();
707
+ for (const c of t.scriptGroups) {
708
+ const l = zt(r, c, a);
709
+ if (l && (i.push(`npm run ${l}`), a.add(l)), i.length >= t.maxCommands)
710
+ break;
711
+ }
712
+ return i.length === 0 ? null : i.slice(0, t.maxCommands);
713
+ }
714
+ function Jt(e) {
715
+ for (const t of Kt) {
716
+ if (t.kind === "marker") {
717
+ if (Xt(e, t.relativePath))
718
+ return [...t.commands];
719
+ continue;
720
+ }
721
+ if (t.kind === "npm-package-json") {
722
+ const s = Qt(e, t);
723
+ if (s != null && s.length > 0)
724
+ return s;
725
+ }
726
+ }
727
+ return [];
728
+ }
729
+ function es(e) {
730
+ return e.map((t) => `\`${t}\``).join(", ");
731
+ }
732
+ function So(e) {
733
+ const t = Jt(e);
734
+ if (t.length === 0)
735
+ return {
736
+ axiomHint: "как в README или CI принято проверять код (тесты, линтер, типы). Не подменяй это тяжёлой production-сборкой или публикацией, если это явно не описано как проверка",
737
+ toolsExample: "команды из `package.json` → `scripts`, из Makefile или из CI-шагов, которые относятся к качеству кода; сначала прочитай README",
738
+ verifyStep: "Прочитай README и при наличии — конфиг CI: какие команды запускают тесты, линтер и проверку типов. Выполни их из корня репозитория. Не запускай `build`/`publish`/полный `ci`, если не уверен, что это нужно для проверки изменений; при сомнении спроси пользователя."
739
+ };
740
+ const s = es(t);
741
+ return {
742
+ axiomHint: `\`${t[0]}\` или следующую команду из того же набора проверок`,
743
+ toolsExample: s,
744
+ verifyStep: `Из корня репозитория выполни: ${s}. Не добавляй \`build\`, полный \`ci\` или публикацию, если они не перечислены здесь и не описаны в README как обязательная проверка.`
745
+ };
746
+ }
747
+ const Y = "ai/agents";
748
+ function ye(e) {
749
+ return v.existsSync(e) ? v.promises.readFile(e, "utf-8") : null;
750
+ }
751
+ function ts(e) {
752
+ let t = e;
753
+ for (; ; ) {
754
+ const s = k.join(t, "package.json");
755
+ if (v.existsSync(s))
756
+ return t;
757
+ const n = k.dirname(t);
758
+ if (n === t)
759
+ return null;
760
+ t = n;
761
+ }
762
+ }
763
+ async function go(e) {
764
+ const t = k.dirname(fe(import.meta.url)), s = k.join(process.cwd(), Y, e), n = ye(s);
765
+ if (n)
766
+ return n;
767
+ const o = ts(t), r = [];
768
+ o ? (r.push(k.join(o, Y, e)), r.push(k.join(o, "dist", Y, e))) : r.push(
769
+ k.join(t, "../../../../../../dist", Y, e)
770
+ );
771
+ for (const i of r) {
772
+ const a = ye(i);
773
+ if (a)
774
+ return a;
775
+ }
776
+ throw new Error(`Не найден файл шаблона ${e}.`, {
777
+ cause: {
778
+ projectOverridePath: s,
779
+ packageCandidates: r
780
+ }
781
+ });
782
+ }
783
+ const je = ["product", "library", "infrastructure", "interface"], z = "One-line human summary of how many decisions and what area; fold the full D-NNN entries under <details> per AX_SPEC_PROGRESSIVE_DISCLOSURE.", Q = 'One-line human summary of outstanding prerequisites; fold the full Requirement/Kind/Owner/Resolution table under <details>. Declare explicitly ("No external bootstrap required.") when the STEP_7 audit found none — do not leave the table silently empty.', F = "MANDATORY (AX_SPEC_MANDATORY_DIAGRAM): at least one fenced mermaid or ASCII diagram giving a reader the shape of this artifact at a glance, up top.", ss = "List infra-*/api/design-system-* scopes this scope depends on, and any consumer scopes it provides to.", ns = `# <scope-name>: Scope Specification
784
+
785
+ <!--SECTION:SCOPE_TYPE-->
786
+ ## scope-type
787
+ product
788
+ <!--/SECTION:SCOPE_TYPE-->
789
+
790
+ <!--SECTION:VISION-->
791
+ ## Vision & Primary Goal
792
+ <!--/SECTION:VISION-->
793
+
794
+ <!--SECTION:OVERVIEW-->
795
+ ## Overview
796
+ [MANDATORY per \`AX_SPEC_MANDATORY_DIAGRAM\` — ≥1 diagram right up top so a reader grasps the scope at a glance (checked by \`SDD_NO_DIAGRAM_BLOCK\` / \`SDD_DIAGRAM_BLOCK_EMPTY\`). The floor is one system-context / high-level view; add more (user flow, data flow) by author judgment. Fenced mermaid OR ASCII; pick the diagram type per \`formats/diagram-vocabulary.xml\`. Example:]
797
+
798
+ \`\`\`mermaid
799
+ flowchart TD
800
+ user --> product
801
+ product --> dep1[dependency]
802
+ product --> dep2[dependency]
803
+ \`\`\`
804
+ <!--/SECTION:OVERVIEW-->
805
+
806
+ <!--SECTION:PROJECT_TYPE-->
807
+ ## Project Type
808
+ - **Type:** app[mobile|desktop|spa] | service-module-sdk | cli-utility
809
+ - **Why this type:** [Краткое обоснование.]
810
+ <!--/SECTION:PROJECT_TYPE-->
811
+
812
+ <!--SECTION:GOLDEN_DX-->
813
+ ## Target Experience
814
+ [Commentary-rich: init/setup + happy path + error/degradation path.]
815
+ <!--/SECTION:GOLDEN_DX-->
816
+
817
+ <!--SECTION:SCOPE_DEPENDENCIES-->
818
+ ## Scope Dependencies
819
+ - **Depends on:** [infra-*, api, design-system-* scopes]
820
+ - **Provides to:** [consumer scopes, if any]
821
+ <!--/SECTION:SCOPE_DEPENDENCIES-->
822
+
823
+ <!--SECTION:REQUIREMENTS_AND_CONSTRAINTS-->
824
+ ## Requirements & Constraints
825
+
826
+ ### Functional Requirements
827
+
828
+ ### Non-Functional Constraints
829
+
830
+ ### Out-of-Scope
831
+
832
+ ### Runtime & Deferred Scope
833
+ [Per \`AX_RUNTIME_BACKING_EXPLICIT\`. Backing per major capability + deferred parts + trust boundaries требующие real runtime hook.]
834
+
835
+ ### Rules
836
+ | Rule | Category | Source |
837
+ |---|---|---|
838
+ <!--/SECTION:REQUIREMENTS_AND_CONSTRAINTS-->
839
+
840
+ <!--SECTION:ARCHITECTURE-->
841
+ ## High-Level Architecture
842
+ [Выбранный вариант. Block diagram. Краткие описания.]
843
+
844
+ ### Rejected Alternatives
845
+ <!--/SECTION:ARCHITECTURE-->
846
+
847
+ <!--SECTION:MODULE_MAP-->
848
+ ## Module Map
849
+ [Appended by \`module-decomposition\`. Initially: «Modules not yet decomposed — run \`module-decomposition <scope-name>\`».]
850
+ <!--/SECTION:MODULE_MAP-->
851
+
852
+ <!--SECTION:DECISION_LOG-->
853
+ ## Decision Log
854
+ [One-line human summary — how many decisions, what area. Full entries fold per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`) — history, never needed to grasp the scope NOW.]
855
+
856
+ <details>
857
+ <summary>Полные записи Decision Log</summary>
858
+
859
+ [D-NNN entries.]
860
+
861
+ </details>
862
+ <!--/SECTION:DECISION_LOG-->
863
+
864
+ <!--SECTION:BOOTSTRAP_REQUIREMENTS-->
865
+ ## Prerequisites
866
+ [One-line human summary — is anything outstanding. Full table folds (reference detail, checked by \`SDD_SECTION_NOT_FOLDED\`).]
867
+
868
+ <details>
869
+ <summary>Таблица предусловий</summary>
870
+
871
+ | Requirement | Kind | Owner | Resolution |
872
+ |---|---|---|---|
873
+ <!-- Empty list allowed only when STEP_7 audit produced zero external assumptions — declare explicitly. -->
874
+
875
+ </details>
876
+ <!--/SECTION:BOOTSTRAP_REQUIREMENTS-->
877
+
878
+ <!--SECTION:HANDOFF-->
879
+ ## Handoff to Modules
880
+ - **Primary input:** \`specs/<scope-name>/<scope-name>.spec.md\`
881
+ - **Areas requiring decomposition:** [list]
882
+ - **Named abstractions:** [from Target Experience]
883
+ - **Bootstrap tickets ready for cascade:** see Prerequisites
884
+ - **Open risks:** [validation needs]
885
+
886
+ <!-- Pivot Invalidation List — only in pivot mode -->
887
+ <!--/SECTION:HANDOFF-->
888
+ `, os = [
889
+ {
890
+ name: "SCOPE_TYPE",
891
+ required: !0,
892
+ loadBearing: !1,
893
+ fold: !1,
894
+ fill: "Literal value `product` — identifies this spec's scope-type to REQUIRED_SECTIONS checks."
895
+ },
896
+ {
897
+ name: "VISION",
898
+ required: !0,
899
+ loadBearing: !0,
900
+ fold: !1,
901
+ fill: "Vision & primary goal — what this product scope is for, in a sentence or two."
902
+ },
903
+ { name: "OVERVIEW", required: !0, loadBearing: !1, fold: !1, fill: F },
904
+ {
905
+ name: "PROJECT_TYPE",
906
+ required: !0,
907
+ loadBearing: !1,
908
+ fold: !1,
909
+ fill: "Pick the project Type (app[mobile|desktop|spa] | service-module-sdk | cli-utility) and one-line rationale."
910
+ },
911
+ {
912
+ name: "GOLDEN_DX",
913
+ required: !0,
914
+ loadBearing: !0,
915
+ fold: !1,
916
+ fill: "Target experience: init/setup + happy path + error/degradation path, commentary-rich."
917
+ },
918
+ {
919
+ name: "SCOPE_DEPENDENCIES",
920
+ required: !0,
921
+ loadBearing: !1,
922
+ fold: !1,
923
+ fill: ss
924
+ },
925
+ {
926
+ name: "REQUIREMENTS_AND_CONSTRAINTS",
927
+ required: !0,
928
+ loadBearing: !0,
929
+ fold: !1,
930
+ fill: "Functional Requirements, Non-Functional Constraints, Out-of-Scope, Runtime & Deferred Scope (AX_RUNTIME_BACKING_EXPLICIT), and the Rules table."
931
+ },
932
+ {
933
+ name: "ARCHITECTURE",
934
+ required: !0,
935
+ loadBearing: !0,
936
+ fold: !1,
937
+ fill: "Chosen high-level architecture with a block diagram and brief descriptions, plus Rejected Alternatives."
938
+ },
939
+ {
940
+ name: "MODULE_MAP",
941
+ required: !0,
942
+ loadBearing: !0,
943
+ fold: !1,
944
+ fill: "Appended by module-decomposition; initially a placeholder pointing at that command."
945
+ },
946
+ { name: "DECISION_LOG", required: !0, loadBearing: !0, fold: !0, fill: z },
947
+ {
948
+ name: "BOOTSTRAP_REQUIREMENTS",
949
+ required: !0,
950
+ loadBearing: !1,
951
+ fold: !0,
952
+ fill: Q
953
+ },
954
+ {
955
+ name: "HANDOFF",
956
+ required: !0,
957
+ loadBearing: !1,
958
+ fold: !1,
959
+ fill: "Primary input path, areas requiring decomposition, named abstractions, bootstrap tickets, open risks."
960
+ }
961
+ ], rs = `# <scope-name>: Library Specification
962
+
963
+ <!--SECTION:SCOPE_TYPE-->
964
+ ## scope-type
965
+ library
966
+ <!--/SECTION:SCOPE_TYPE-->
967
+
968
+ <!--SECTION:VISION-->
969
+ ## Vision & Primary Goal
970
+ [Что library делает; главная проблема, которую решает.]
971
+ <!--/SECTION:VISION-->
972
+
973
+ <!--SECTION:OVERVIEW-->
974
+ ## Overview
975
+ [MANDATORY per \`AX_SPEC_MANDATORY_DIAGRAM\` — ≥1 diagram up top (checked by \`SDD_NO_DIAGRAM_BLOCK\` / \`SDD_DIAGRAM_BLOCK_EMPTY\`). The floor is one — how a consumer wires this library in; add more by author judgment. Fenced mermaid OR ASCII; pick the diagram type per \`formats/diagram-vocabulary.xml\`. Example:]
976
+
977
+ \`\`\`mermaid
978
+ flowchart LR
979
+ consumer -->|imports| library
980
+ library --> capability
981
+ \`\`\`
982
+ <!--/SECTION:OVERVIEW-->
983
+
984
+ <!--SECTION:GOLDEN_DX-->
985
+ ## Target Experience
986
+ [Публичный API DX: init/setup + happy path + error path. Комментарии раскрывают намерение.]
987
+ <!--/SECTION:GOLDEN_DX-->
988
+
989
+ <!--SECTION:SCOPE_DEPENDENCIES-->
990
+ ## Scope Dependencies
991
+ - **Depends on:** [infra-*, interface scopes]
992
+ - **Provides to:** [consumer scopes]
993
+ <!--/SECTION:SCOPE_DEPENDENCIES-->
994
+
995
+ <!--SECTION:REQUIREMENTS_AND_CONSTRAINTS-->
996
+ ## Requirements & Constraints
997
+
998
+ ### Functional Requirements
999
+
1000
+ ### Non-Functional Constraints
1001
+
1002
+ ### Out-of-Scope
1003
+
1004
+ ### Runtime & Deferred Scope
1005
+ [Per \`AX_RUNTIME_BACKING_EXPLICIT\`. Backing per major capability + deferred parts.]
1006
+
1007
+ ### Rules
1008
+ | Rule | Category | Source |
1009
+ |---|---|---|
1010
+ <!--/SECTION:REQUIREMENTS_AND_CONSTRAINTS-->
1011
+
1012
+ <!--SECTION:PUBLIC_API_SURFACE-->
1013
+ ## Public API Surface
1014
+ [Ключевые exported interfaces, types, functions. Intent-level, без impl detail.]
1015
+ <!--/SECTION:PUBLIC_API_SURFACE-->
1016
+
1017
+ <!--SECTION:ARCHITECTURE-->
1018
+ ## Architecture
1019
+ [Выбранный design pattern. Кратко — rejected alternatives.]
1020
+ <!--/SECTION:ARCHITECTURE-->
1021
+
1022
+ <!--SECTION:DECISION_LOG-->
1023
+ ## Decision Log
1024
+ [One-line human summary — how many decisions, what area. Full entries fold per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`) — history, never needed to grasp the scope NOW.]
1025
+
1026
+ <details>
1027
+ <summary>Полные записи Decision Log</summary>
1028
+
1029
+ [D-NNN entries.]
1030
+
1031
+ </details>
1032
+ <!--/SECTION:DECISION_LOG-->
1033
+
1034
+ <!--SECTION:BOOTSTRAP_REQUIREMENTS-->
1035
+ ## Prerequisites
1036
+ [One-line human summary — is anything outstanding. Full table folds (reference detail, checked by \`SDD_SECTION_NOT_FOLDED\`).]
1037
+
1038
+ <details>
1039
+ <summary>Таблица предусловий</summary>
1040
+
1041
+ | Requirement | Kind | Owner | Resolution |
1042
+ |---|---|---|---|
1043
+ <!-- Empty list allowed only when STEP_7 audit produced zero external assumptions — declare explicitly. -->
1044
+
1045
+ </details>
1046
+ <!--/SECTION:BOOTSTRAP_REQUIREMENTS-->
1047
+
1048
+ <!--SECTION:HANDOFF-->
1049
+ ## Handoff to Modules
1050
+ - **Areas requiring decomposition:** [list]
1051
+ - **Named abstractions:** [from Target Experience]
1052
+ - **Bootstrap tickets ready for cascade:** see Prerequisites
1053
+ - **Open risks:** [validation needs]
1054
+
1055
+ <!-- Pivot Invalidation List — only in pivot mode -->
1056
+ <!--/SECTION:HANDOFF-->
1057
+ `, is = [
1058
+ {
1059
+ name: "SCOPE_TYPE",
1060
+ required: !0,
1061
+ loadBearing: !1,
1062
+ fold: !1,
1063
+ fill: "Literal value `library`."
1064
+ },
1065
+ {
1066
+ name: "VISION",
1067
+ required: !0,
1068
+ loadBearing: !0,
1069
+ fold: !1,
1070
+ fill: "What the library does and the main problem it solves."
1071
+ },
1072
+ { name: "OVERVIEW", required: !0, loadBearing: !1, fold: !1, fill: F },
1073
+ {
1074
+ name: "GOLDEN_DX",
1075
+ required: !0,
1076
+ loadBearing: !0,
1077
+ fold: !1,
1078
+ fill: "Public API DX: init/setup + happy path + error path, intent commentary throughout."
1079
+ },
1080
+ {
1081
+ name: "SCOPE_DEPENDENCIES",
1082
+ required: !0,
1083
+ loadBearing: !1,
1084
+ fold: !1,
1085
+ fill: "List infra-*/interface scopes depended on, and consumer scopes provided to."
1086
+ },
1087
+ {
1088
+ name: "REQUIREMENTS_AND_CONSTRAINTS",
1089
+ required: !0,
1090
+ loadBearing: !0,
1091
+ fold: !1,
1092
+ fill: "Functional Requirements, Non-Functional Constraints, Out-of-Scope, Runtime & Deferred Scope, and the Rules table."
1093
+ },
1094
+ {
1095
+ name: "PUBLIC_API_SURFACE",
1096
+ required: !0,
1097
+ loadBearing: !0,
1098
+ fold: !1,
1099
+ fill: "Key exported interfaces/types/functions, intent-level — no implementation detail."
1100
+ },
1101
+ {
1102
+ name: "ARCHITECTURE",
1103
+ required: !0,
1104
+ loadBearing: !1,
1105
+ fold: !1,
1106
+ fill: "Chosen design pattern, briefly, plus rejected alternatives."
1107
+ },
1108
+ { name: "DECISION_LOG", required: !0, loadBearing: !0, fold: !0, fill: z },
1109
+ {
1110
+ name: "BOOTSTRAP_REQUIREMENTS",
1111
+ required: !0,
1112
+ loadBearing: !1,
1113
+ fold: !0,
1114
+ fill: Q
1115
+ },
1116
+ {
1117
+ name: "HANDOFF",
1118
+ required: !0,
1119
+ loadBearing: !1,
1120
+ fold: !1,
1121
+ fill: "Areas requiring decomposition, named abstractions, bootstrap tickets, open risks."
1122
+ }
1123
+ ], as = `# <scope-name>: Infrastructure Specification
1124
+
1125
+ <!--SECTION:SCOPE_TYPE-->
1126
+ ## scope-type
1127
+ infrastructure
1128
+ <!--/SECTION:SCOPE_TYPE-->
1129
+
1130
+ <!--SECTION:VISION-->
1131
+ ## Vision
1132
+ [Что включает dev/ops experience.]
1133
+ <!--/SECTION:VISION-->
1134
+
1135
+ <!--SECTION:OVERVIEW-->
1136
+ ## Overview
1137
+ [MANDATORY per \`AX_SPEC_MANDATORY_DIAGRAM\` — ≥1 diagram up top (checked by \`SDD_NO_DIAGRAM_BLOCK\` / \`SDD_DIAGRAM_BLOCK_EMPTY\`). The floor is one — the developer workflow or the tool pipeline at a glance; add more by author judgment. Fenced mermaid OR ASCII; pick the diagram type per \`formats/diagram-vocabulary.xml\`. Example:]
1138
+
1139
+ \`\`\`
1140
+ edit ──► typecheck ──► lint ──► test ──► pre-commit ──► CI
1141
+ \`\`\`
1142
+ <!--/SECTION:OVERVIEW-->
1143
+
1144
+ <!--SECTION:SCOPE_DEPENDENCIES-->
1145
+ ## Scope Dependencies
1146
+ - **Depends on:** None (infrastructure scopes are typically leaves)
1147
+ - **Provides rules to:** [list of product/library scopes that depend on this]
1148
+ <!--/SECTION:SCOPE_DEPENDENCIES-->
1149
+
1150
+ <!--SECTION:TOOL_STACK-->
1151
+ ## Tool Stack
1152
+
1153
+ ### Categories Covered
1154
+ [Список категорий + краткое обоснование исключений.]
1155
+
1156
+ ### Tool Choices
1157
+ | Category | Tool | Rationale |
1158
+ |---|---|---|
1159
+ | <category> | <tool> | D-NNN |
1160
+ <!--/SECTION:TOOL_STACK-->
1161
+
1162
+ <!--SECTION:WORKFLOW_EXAMPLE-->
1163
+ ## Developer Workflow Example
1164
+ [Shell-script: setup, daily flow, commit flow, debug flow.]
1165
+ <!--/SECTION:WORKFLOW_EXAMPLE-->
1166
+
1167
+ <!--SECTION:FILE_STRUCTURE-->
1168
+ ## File Structure
1169
+ [ASCII tree + File Mapping.]
1170
+ <!--/SECTION:FILE_STRUCTURE-->
1171
+
1172
+ <!--SECTION:EFFECTIVE_RULES-->
1173
+ ## Effective Rules (for cascade)
1174
+ [One-line human summary — how many rules, which categories. Full table folds (reference detail, checked by \`SDD_SECTION_NOT_FOLDED\`).]
1175
+
1176
+ <details>
1177
+ <summary>Таблица правил</summary>
1178
+
1179
+ | Rule | Category | Source |
1180
+ |---|---|---|
1181
+ | <rule-name> | coding | infra (D-NNN) |
1182
+
1183
+ </details>
1184
+ <!--/SECTION:EFFECTIVE_RULES-->
1185
+
1186
+ <!--SECTION:VERIFICATION_COMMANDS-->
1187
+ ## Verification Commands
1188
+ **Mandatory for infrastructure scopes.** After tool stack is finalized, record a table:
1189
+ | Command Name | Invocation |
1190
+ | typecheck-command | <actual invocation> |
1191
+ | test-command | <actual invocation> |
1192
+ | lint-command | <actual invocation> |
1193
+ | format-command | <actual invocation> |
1194
+ | check-command | <actual invocation> |
1195
+
1196
+ Include only command names for tools present in the chosen stack.
1197
+ \`check-command\` is **always required** when the runtime setup rule (\`nodejs-npm-setup\` or equivalent) is active — it is the composed entry point that runs all active phases in \`CheckPhaseOrder\` order (typecheck → test → lint → format). Composition: chain invocations of each active phase command in that order. Task tickets use \`check-command\` as their single verification alias.
1198
+ <!--/SECTION:VERIFICATION_COMMANDS-->
1199
+
1200
+ <!--SECTION:DECISION_LOG-->
1201
+ ## Decision Log
1202
+ [One-line human summary — how many decisions, what area. Full entries fold per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`) — history, never needed to grasp the scope NOW.]
1203
+
1204
+ <details>
1205
+ <summary>Полные записи Decision Log</summary>
1206
+
1207
+ [D-NNN entries.]
1208
+
1209
+ </details>
1210
+ <!--/SECTION:DECISION_LOG-->
1211
+
1212
+ <!--SECTION:BOOTSTRAP_REQUIREMENTS-->
1213
+ ## Prerequisites
1214
+ [One-line human summary — is anything outstanding. Full table folds (reference detail, checked by \`SDD_SECTION_NOT_FOLDED\`).]
1215
+
1216
+ <details>
1217
+ <summary>Таблица предусловий</summary>
1218
+
1219
+ | Requirement | Kind | Owner | Resolution |
1220
+ |---|---|---|---|
1221
+ <!-- Kind ∈ package | workspace-link | tool | file | external-type | env | service | structural -->
1222
+ <!-- Owner ∈ this-scope-task | external-prereq-scope | operator-action -->
1223
+ <!-- Empty list allowed only when STEP_7 audit produced zero external assumptions — declare it explicitly: "No external bootstrap required." -->
1224
+
1225
+ </details>
1226
+ <!--/SECTION:BOOTSTRAP_REQUIREMENTS-->
1227
+
1228
+ <!--SECTION:HANDOFF-->
1229
+ ## Handoff
1230
+ - **Setup tasks to scaffold:** [list]
1231
+ - **Effective rules ready for cascade:** see Effective Rules
1232
+ - **Verification Commands ready for cascade:** see Verification Commands
1233
+ - **Bootstrap tickets ready for cascade:** see Prerequisites
1234
+ - **Open risks:** [not-closed items]
1235
+
1236
+ <!-- Pivot Invalidation List — only in pivot mode -->
1237
+ <!--/SECTION:HANDOFF-->
1238
+ `, cs = [
1239
+ {
1240
+ name: "SCOPE_TYPE",
1241
+ required: !0,
1242
+ loadBearing: !1,
1243
+ fold: !1,
1244
+ fill: "Literal value `infrastructure`."
1245
+ },
1246
+ {
1247
+ name: "VISION",
1248
+ required: !0,
1249
+ loadBearing: !0,
1250
+ fold: !1,
1251
+ fill: "What dev/ops experience this scope covers."
1252
+ },
1253
+ { name: "OVERVIEW", required: !0, loadBearing: !1, fold: !1, fill: F },
1254
+ {
1255
+ name: "SCOPE_DEPENDENCIES",
1256
+ required: !0,
1257
+ loadBearing: !1,
1258
+ fold: !1,
1259
+ fill: "Depends-on (usually None — infra scopes are leaves) and the product/library scopes this provides rules to."
1260
+ },
1261
+ {
1262
+ name: "TOOL_STACK",
1263
+ required: !0,
1264
+ loadBearing: !0,
1265
+ fold: !1,
1266
+ fill: "Categories covered plus rationale for exclusions, and the Category/Tool/Rationale (D-NNN) choices table."
1267
+ },
1268
+ {
1269
+ name: "WORKFLOW_EXAMPLE",
1270
+ required: !0,
1271
+ loadBearing: !1,
1272
+ fold: !1,
1273
+ fill: "Shell-script style walkthrough: setup, daily flow, commit flow, debug flow."
1274
+ },
1275
+ {
1276
+ name: "FILE_STRUCTURE",
1277
+ required: !0,
1278
+ loadBearing: !1,
1279
+ fold: !1,
1280
+ fill: "ASCII tree plus File Mapping for the tooling config files."
1281
+ },
1282
+ {
1283
+ name: "EFFECTIVE_RULES",
1284
+ required: !0,
1285
+ loadBearing: !1,
1286
+ fold: !0,
1287
+ fill: "One-line summary of how many rules / which categories; full Rule/Category/Source table folds under <details>."
1288
+ },
1289
+ {
1290
+ name: "VERIFICATION_COMMANDS",
1291
+ required: !0,
1292
+ loadBearing: !0,
1293
+ fold: !1,
1294
+ fill: "Mandatory: Command Name/Invocation table for the active phases (typecheck/test/lint/format) plus the composed check-command alias."
1295
+ },
1296
+ { name: "DECISION_LOG", required: !0, loadBearing: !0, fold: !0, fill: z },
1297
+ {
1298
+ name: "BOOTSTRAP_REQUIREMENTS",
1299
+ required: !0,
1300
+ loadBearing: !1,
1301
+ fold: !0,
1302
+ fill: Q
1303
+ },
1304
+ {
1305
+ name: "HANDOFF",
1306
+ required: !0,
1307
+ loadBearing: !1,
1308
+ fold: !1,
1309
+ fill: "Setup tasks to scaffold, effective rules/verification commands/bootstrap tickets ready for cascade, open risks."
1310
+ }
1311
+ ], ls = `# <scope-name>: Interface Specification
1312
+
1313
+ <!--SECTION:SCOPE_TYPE-->
1314
+ ## scope-type
1315
+ interface
1316
+ <!--/SECTION:SCOPE_TYPE-->
1317
+
1318
+ <!--SECTION:VISION-->
1319
+ ## Vision
1320
+ [Что контракт определяет и для кого.]
1321
+ <!--/SECTION:VISION-->
1322
+
1323
+ <!--SECTION:OVERVIEW-->
1324
+ ## Overview
1325
+ [MANDATORY per \`AX_SPEC_MANDATORY_DIAGRAM\` — ≥1 diagram up top (checked by \`SDD_NO_DIAGRAM_BLOCK\` / \`SDD_DIAGRAM_BLOCK_EMPTY\`). The floor is one — who produces vs consumes this contract, or the version-transition flow; add more by author judgment. Fenced mermaid OR ASCII; pick the diagram type per \`formats/diagram-vocabulary.xml\`. Example:]
1326
+
1327
+ \`\`\`mermaid
1328
+ flowchart LR
1329
+ producer -->|implements| Contract
1330
+ Contract -->|consumed by| consumer
1331
+ \`\`\`
1332
+ <!--/SECTION:OVERVIEW-->
1333
+
1334
+ <!--SECTION:SCOPE_DEPENDENCIES-->
1335
+ ## Scope Dependencies
1336
+ - **Depends on:** [infra scopes if any]
1337
+ - **Provides interface to:** [product/library scopes]
1338
+ <!--/SECTION:SCOPE_DEPENDENCIES-->
1339
+
1340
+ <!--SECTION:INTERFACE_DECLARATION-->
1341
+ ## Interface Declaration
1342
+ - **Schema format:** OpenAPI 3.x | gRPC proto3 | JSON Schema | GraphQL SDL
1343
+ - **Versioning scheme:** semver | date-based (YYYY-MM-DD) | none
1344
+ - **Namespace:** <api prefix / package name>
1345
+ - **Interfaces:** [список endpoint groups / message types / operations]
1346
+ <!--/SECTION:INTERFACE_DECLARATION-->
1347
+
1348
+ <!--SECTION:VERSIONING_POLICY-->
1349
+ ## Versioning Policy
1350
+ [Semver rules / breaking-change protocol / deprecation window.]
1351
+ <!--/SECTION:VERSIONING_POLICY-->
1352
+
1353
+ <!--SECTION:COMPATIBILITY_MATRIX-->
1354
+ ## Compatibility Matrix
1355
+ [One-line human summary — how many consumers, any breaking changes pending. Full matrix folds (reference detail, checked by \`SDD_SECTION_NOT_FOLDED\`).]
1356
+
1357
+ <details>
1358
+ <summary>Матрица совместимости</summary>
1359
+
1360
+ | Consumer scope | Min compatible version | Breaking change protocol |
1361
+ |---|---|---|
1362
+
1363
+ </details>
1364
+ <!--/SECTION:COMPATIBILITY_MATRIX-->
1365
+
1366
+ <!--SECTION:DECISION_LOG-->
1367
+ ## Decision Log
1368
+ [One-line human summary — how many decisions, what area. Full entries fold per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`) — history, never needed to grasp the scope NOW.]
1369
+
1370
+ <details>
1371
+ <summary>Полные записи Decision Log</summary>
1372
+
1373
+ [D-NNN entries.]
1374
+
1375
+ </details>
1376
+ <!--/SECTION:DECISION_LOG-->
1377
+
1378
+ <!--SECTION:BOOTSTRAP_REQUIREMENTS-->
1379
+ ## Prerequisites
1380
+ [One-line human summary — is anything outstanding. Full table folds (reference detail, checked by \`SDD_SECTION_NOT_FOLDED\`).]
1381
+
1382
+ <details>
1383
+ <summary>Таблица предусловий</summary>
1384
+
1385
+ | Requirement | Kind | Owner | Resolution |
1386
+ |---|---|---|---|
1387
+ <!-- Empty list allowed only when STEP_7 audit produced zero external assumptions — declare explicitly. -->
1388
+
1389
+ </details>
1390
+ <!--/SECTION:BOOTSTRAP_REQUIREMENTS-->
1391
+
1392
+ <!--SECTION:HANDOFF-->
1393
+ ## Handoff
1394
+ - **Contract files to scaffold:** [schema files, codegen configs]
1395
+ - **Bootstrap tickets ready for cascade:** see Prerequisites
1396
+ - **Open risks:** [versioning gaps, unconfirmed consumers]
1397
+ <!--/SECTION:HANDOFF-->
1398
+ `, ds = [
1399
+ {
1400
+ name: "SCOPE_TYPE",
1401
+ required: !0,
1402
+ loadBearing: !1,
1403
+ fold: !1,
1404
+ fill: "Literal value `interface`."
1405
+ },
1406
+ {
1407
+ name: "VISION",
1408
+ required: !0,
1409
+ loadBearing: !0,
1410
+ fold: !1,
1411
+ fill: "What the contract defines, and for whom."
1412
+ },
1413
+ { name: "OVERVIEW", required: !0, loadBearing: !1, fold: !1, fill: F },
1414
+ {
1415
+ name: "SCOPE_DEPENDENCIES",
1416
+ required: !0,
1417
+ loadBearing: !1,
1418
+ fold: !1,
1419
+ fill: "Infra scopes depended on (if any), and the product/library scopes this interface is provided to."
1420
+ },
1421
+ {
1422
+ name: "INTERFACE_DECLARATION",
1423
+ required: !0,
1424
+ loadBearing: !0,
1425
+ fold: !1,
1426
+ fill: "Schema format, versioning scheme, namespace, and the list of endpoint groups / message types / operations."
1427
+ },
1428
+ {
1429
+ name: "VERSIONING_POLICY",
1430
+ required: !0,
1431
+ loadBearing: !0,
1432
+ fold: !1,
1433
+ fill: "Semver rules, breaking-change protocol, deprecation window."
1434
+ },
1435
+ {
1436
+ name: "COMPATIBILITY_MATRIX",
1437
+ required: !0,
1438
+ loadBearing: !0,
1439
+ fold: !0,
1440
+ fill: "One-line summary of consumer count / pending breaking changes; full Consumer/Min-version/Breaking-change-protocol matrix folds under <details>."
1441
+ },
1442
+ { name: "DECISION_LOG", required: !0, loadBearing: !0, fold: !0, fill: z },
1443
+ {
1444
+ name: "BOOTSTRAP_REQUIREMENTS",
1445
+ required: !0,
1446
+ loadBearing: !1,
1447
+ fold: !0,
1448
+ fill: Q
1449
+ },
1450
+ {
1451
+ name: "HANDOFF",
1452
+ required: !0,
1453
+ loadBearing: !1,
1454
+ fold: !1,
1455
+ fill: "Contract files to scaffold (schemas, codegen configs), bootstrap tickets, open risks."
1456
+ }
1457
+ ], us = `# Module: <ModuleName>
1458
+
1459
+ <!--SECTION:MODULE_VISION-->
1460
+ ## Module Vision
1461
+ [What this module owns. Link to parent scope spec → \`../../<scope>.spec.md\`. Links to parent/child modules if any.]
1462
+ <!--/SECTION:MODULE_VISION-->
1463
+
1464
+ <!--SECTION:OVERVIEW-->
1465
+ ## Overview
1466
+ [MANDATORY per \`AX_SPEC_MANDATORY_DIAGRAM\` — ≥1 diagram, checked by \`SDD_NO_DIAGRAM_BLOCK\` / \`SDD_DIAGRAM_BLOCK_EMPTY\`. One glance beats a paragraph. The floor is one; add more (sequence, data-flow, state) whenever a second view genuinely helps a reader understand this module — that call is the author's. Fenced mermaid OR ASCII; pick the diagram type per \`formats/diagram-vocabulary.xml\`. The \`Inter-Module Dependencies\` graph is separate (machine-parsed) and does NOT satisfy this floor. Example — the module's main happy-path flow:]
1467
+
1468
+ \`\`\`mermaid
1469
+ flowchart LR
1470
+ caller -->|request| Port
1471
+ Port --> Service
1472
+ Service -->|result| caller
1473
+ \`\`\`
1474
+ <!--/SECTION:OVERVIEW-->
1475
+
1476
+ <!--SECTION:MODULE_USAGE_EXAMPLE-->
1477
+ ## Module Usage Example
1478
+ [MANDATORY. Self-sufficient happy-path snippet — как потребитель использует этот модуль в изоляции. Пишется на таргет-языке проекта — единственное место для кода per \`AX_CONTRACTS_TEXTUAL_AGNOSTIC\`. Показывает публичную поверхность через реальный сценарий вызова: init / happy path / минимальный error path. Composition с соседними модулями — НЕ здесь, это уровень scope spec (link, не дублировать).]
1479
+ <!--/SECTION:MODULE_USAGE_EXAMPLE-->
1480
+
1481
+ <!--SECTION:INTER_MODULE_DEPENDENCIES-->
1482
+ ## Inter-Module Dependencies
1483
+ - **Depends on:** <list of modules within this scope with links>
1484
+ - **Scope Reference (cross-scope):** <interface-type scope with link if any>
1485
+ - **Provides to:** <list of modules within this scope>
1486
+
1487
+ \`\`\`mermaid
1488
+ graph TD
1489
+ <this-module> --> <sibling-1>
1490
+ <this-module> --> <sibling-2>
1491
+ <this-module> -. Scope Reference .-> <contracts-scope>
1492
+ <consumer> --> <this-module>
1493
+ \`\`\`
1494
+ <!--/SECTION:INTER_MODULE_DEPENDENCIES-->
1495
+
1496
+ <!--SECTION:ENTITY_INVENTORY-->
1497
+ ## Entity Inventory
1498
+ [Per \`ENTITY_INVENTORY_FORMAT\`.]
1499
+ <!--/SECTION:ENTITY_INVENTORY-->
1500
+
1501
+ <!--SECTION:ENTITY_SURFACES-->
1502
+ ## Entity Surfaces
1503
+ [One-line human summary — what the surfaces cover; the reader sees this without expanding. Heavy per-entity detail folds per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`).]
1504
+
1505
+ <details>
1506
+ <summary>Полные поверхности сущностей</summary>
1507
+
1508
+ [Each entity per \`ENTITY_SURFACE_FORMAT\`.]
1509
+
1510
+ </details>
1511
+ <!--/SECTION:ENTITY_SURFACES-->
1512
+
1513
+ <!--SECTION:MODULE_CONTRACTS-->
1514
+ ## Module Contracts
1515
+ [One-line human summary — which Ports / Adapters / Services this module defines. The contract bodies fold per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`).]
1516
+
1517
+ <!-- Subsections: any subset of Ports / Adapters / Services / Patterns / Utilities / Module-level invariants.
1518
+ Unnumbered \`###\` headers (e.g. \`### Ports\`, \`### OperationDef Pattern\`). -->
1519
+
1520
+ <details>
1521
+ <summary>Контракты DbC</summary>
1522
+
1523
+ ### Ports
1524
+ [Per \`DBC_PORT_FORMAT\`. Omit if this module has no Ports.]
1525
+
1526
+ ### Adapters
1527
+ [Per \`DBC_ADAPTER_FORMAT\`. Omit if this module has no Adapters.]
1528
+
1529
+ </details>
1530
+ <!--/SECTION:MODULE_CONTRACTS-->
1531
+
1532
+ <!--SECTION:PUBLIC_OPTIONS-->
1533
+ ## Public Options & Policies
1534
+ [One-line human summary — what is configurable. Full enumeration folds (reference detail).]
1535
+
1536
+ <details>
1537
+ <summary>Опции и политики</summary>
1538
+
1539
+ [All publicly observable flags/options/policies, either bound to contracts above OR explicitly \`deferred / not consumed in v1\` with link to ticket/version that activates them.]
1540
+
1541
+ </details>
1542
+ <!--/SECTION:PUBLIC_OPTIONS-->
1543
+
1544
+ <!--SECTION:FILE_STRUCTURE-->
1545
+ ## File Structure
1546
+ \`\`\`
1547
+ <module>/
1548
+ ├── ports/
1549
+ │ └── <name>-<port>.<ext>
1550
+ ├── adapters/
1551
+ │ └── <platform>-<name>-<adapter>.<ext>
1552
+ └── ...
1553
+ \`\`\`
1554
+
1555
+ **File Mapping:**
1556
+ - \`<path>\`: <component>
1557
+ <!--/SECTION:FILE_STRUCTURE-->
1558
+
1559
+ <!--SECTION:MODULE_DECISION_LOG-->
1560
+ ## Module Decision Log
1561
+ [One-line human summary — which decisions are recorded, at a glance. Full entries fold per \`AX_SPEC_PROGRESSIVE_DISCLOSURE\` (checked by \`SDD_SECTION_NOT_FOLDED\`) — a decision log only grows, it is never needed to grasp the module NOW.]
1562
+
1563
+ <details>
1564
+ <summary>Полные записи Decision Log</summary>
1565
+
1566
+ [D-NNN entries at module level per \`DECISION_LOG_ENTRY_FORMAT\`. Cross-module or cross-scope → scope spec or contracts spec.]
1567
+
1568
+ </details>
1569
+ <!--/SECTION:MODULE_DECISION_LOG-->
1570
+
1571
+ <!--SECTION:HANDOFF-->
1572
+ ## Handoff to Tasks
1573
+ - **Implementation files to be created:** <list from File Structure>
1574
+ - **Test files to be created:** <list>
1575
+ - **Stack dependencies:**
1576
+ - Language: \`<lang>\` (resolves to \`ai/directives/coding/<lang>-rules.xml\`)
1577
+ - Test framework: \`<framework>\` (resolves to \`ai/directives/testing/<framework>.xml\`)
1578
+ - **Module Rules Additions:** (additions on top of scope-wide baseline; \`None\` if no module-specific rules)
1579
+
1580
+ | Rule | Category | Source |
1581
+ |------|----------|--------|
1582
+ | <rule-name> | coding \\| testing \\| architecture \\| quality | \`ai/directives/<category>/<rule>.xml\` |
1583
+
1584
+ - **Open risks & validation needs:** <not-closed items>
1585
+ <!--/SECTION:HANDOFF-->
1586
+
1587
+ <!-- Optional appendix — include only when the module has non-trivial post-impl learnings worth preserving. -->
1588
+ <!--SECTION:IMPLEMENTATION_INSIGHTS-->
1589
+ ## Implementation Insights
1590
+ [One-line human summary — what a future reader must know. Detail folds (appendix).]
1591
+
1592
+ <details>
1593
+ <summary>Заметки по реализации</summary>
1594
+
1595
+ [Library wrap patterns, transaction subtleties, fake-runtime pitfalls, etc. Authored after audit-cycle compaction; immutable contract for future readers.]
1596
+
1597
+ </details>
1598
+ <!--/SECTION:IMPLEMENTATION_INSIGHTS-->
1599
+ `, fs = [
1600
+ {
1601
+ name: "MODULE_VISION",
1602
+ required: !0,
1603
+ loadBearing: !0,
1604
+ fold: !1,
1605
+ fill: "What this module owns; link to the parent scope spec and to sibling/parent/child modules."
1606
+ },
1607
+ { name: "OVERVIEW", required: !0, loadBearing: !1, fold: !1, fill: F },
1608
+ {
1609
+ name: "MODULE_USAGE_EXAMPLE",
1610
+ required: !0,
1611
+ loadBearing: !0,
1612
+ fold: !1,
1613
+ fill: "MANDATORY: self-sufficient happy-path snippet in the target language showing how a consumer uses this module in isolation (init/happy-path/minimal error path). No cross-module composition here."
1614
+ },
1615
+ {
1616
+ name: "INTER_MODULE_DEPENDENCIES",
1617
+ required: !0,
1618
+ loadBearing: !1,
1619
+ fold: !1,
1620
+ fill: "Depends-on / Scope Reference / Provides-to lists plus the machine-parsed dependency graph."
1621
+ },
1622
+ {
1623
+ name: "ENTITY_INVENTORY",
1624
+ required: !0,
1625
+ loadBearing: !0,
1626
+ fold: !1,
1627
+ fill: "The closed-world entity inventory per ENTITY_INVENTORY_FORMAT."
1628
+ },
1629
+ {
1630
+ name: "ENTITY_SURFACES",
1631
+ required: !0,
1632
+ loadBearing: !1,
1633
+ fold: !0,
1634
+ fill: "One-line summary of what the surfaces cover; per-entity detail per ENTITY_SURFACE_FORMAT folds under <details>."
1635
+ },
1636
+ {
1637
+ name: "MODULE_CONTRACTS",
1638
+ required: !0,
1639
+ loadBearing: !0,
1640
+ fold: !0,
1641
+ fill: "One-line summary of which Ports/Adapters/Services this module defines; the DbC contract bodies (Ports per DBC_PORT_FORMAT, Adapters per DBC_ADAPTER_FORMAT) fold under <details>."
1642
+ },
1643
+ {
1644
+ name: "PUBLIC_OPTIONS",
1645
+ required: !1,
1646
+ loadBearing: !1,
1647
+ fold: !1,
1648
+ fill: "Publicly observable flags/options/policies, bound to a contract above or explicitly deferred with a link."
1649
+ },
1650
+ {
1651
+ name: "FILE_STRUCTURE",
1652
+ required: !0,
1653
+ loadBearing: !1,
1654
+ fold: !1,
1655
+ fill: "ASCII tree of the module directory plus a File Mapping list."
1656
+ },
1657
+ {
1658
+ name: "MODULE_DECISION_LOG",
1659
+ required: !1,
1660
+ loadBearing: !1,
1661
+ fold: !0,
1662
+ fill: "One-line summary of recorded decisions; full D-NNN entries per DECISION_LOG_ENTRY_FORMAT fold under <details>."
1663
+ },
1664
+ {
1665
+ name: "HANDOFF",
1666
+ required: !0,
1667
+ loadBearing: !1,
1668
+ fold: !1,
1669
+ fill: "Implementation/test files to create, stack dependencies (language/test framework), module rules additions, open risks."
1670
+ },
1671
+ {
1672
+ name: "IMPLEMENTATION_INSIGHTS",
1673
+ required: !1,
1674
+ loadBearing: !1,
1675
+ fold: !1,
1676
+ fill: "Optional appendix — non-trivial post-implementation learnings (library wrap patterns, transaction subtleties, fake-runtime pitfalls), added after audit-cycle compaction."
1677
+ }
1678
+ ], ps = `# Task: <ACRONYM>-<slug> — <Task Title>
1679
+
1680
+ <!--SECTION:META-->
1681
+ ## Meta
1682
+ - **Task-ID:** <ACRONYM>-<slug> <!-- semantic slug; same slug across branches = same feature (see Slug Registry) -->
1683
+ - **Status:** [ ] TODO <!-- [ ] TODO | [~] IN_PROGRESS | [x] DONE | [!] BLOCKED -->
1684
+ - **Purpose:** <semantic goal one-liner>
1685
+ - **Scope:** <scope-name>
1686
+ - **Module:** <module-name or N/A>
1687
+ - **Dependencies:** <comma-separated Task-IDs or None>
1688
+ - **Reopens:** <count> (<YYYY-MM-DD> — <last reason>) <!-- omit when 0 -->
1689
+ - **Spec References:** <!-- one anchor PER contract — makes the contract set enumerable for the typing-scenario check -->
1690
+ - Contract: [<PortName>](<spec anchor>)
1691
+ - Adapter: [<AdapterName>](<spec anchor>)
1692
+ - Consumer: [<ConsumerName>](<spec anchor>)
1693
+ - Constraints (if applicable): [<scope spec §>](<path>)
1694
+ - **Runtime Backing:** \`not-implemented\` | \`simulation\` | \`real-runtime\`
1695
+ - **Verification Levels:** subset of \`contract\` | \`unit\` | \`integration\` | \`e2e\`
1696
+ - **Deferred Runtime Scope:** None | <description>
1697
+ <!--/SECTION:META-->
1698
+
1699
+ <!--SECTION:PHASES_OVERVIEW-->
1700
+ ## Phases Overview
1701
+ | ID | Kind | Deps | Status |
1702
+ |----|------|------|--------|
1703
+ | P1 | <kind> | — | [ ] |
1704
+ | P2 | <kind> | P1 | [ ] |
1705
+
1706
+ <!-- Kind ∈ bootstrap | impl | test | config | doc | refactor (fix only on execution). impl and test are ALWAYS separate phases. Orchestrator reads this table to plan. -->
1707
+ <!--/SECTION:PHASES_OVERVIEW-->
1708
+
1709
+ ## Phases
1710
+
1711
+ <!--SECTION:PHASE_P1-->
1712
+ ### P1 — <kind>
1713
+ - **Objective:** <one-line>
1714
+ - **Rules:** <!-- links only, resolved from the cascade; rule content is never inlined -->
1715
+ - [ai/directives/<category>/<rule>.xml](<relative-path>)
1716
+ - **Target Files:**
1717
+ - <path>
1718
+ - **Inputs:** none <!-- or "P1 handoff" -->
1719
+ - **Exit:** <verifiable criterion>
1720
+ <!--/SECTION:PHASE_P1-->
1721
+
1722
+ <!--SECTION:PHASE_P2-->
1723
+ ### P2 — <kind>
1724
+ - **Objective:** <one-line>
1725
+ - **Rules:**
1726
+ - [ai/directives/<category>/<rule>.xml](<relative-path>)
1727
+ - **Target Files:**
1728
+ - <path>
1729
+ - **Inputs:** P1 handoff
1730
+ - **Exit:** <verifiable criterion>
1731
+ <!--/SECTION:PHASE_P2-->
1732
+
1733
+ <!--SECTION:BDD-->
1734
+ ## Acceptance Criteria (BDD)
1735
+ Each scenario is tagged with the requirement it proves and its verification level — this is the
1736
+ use-case → \`[<ACRONYM>-REQ-N]\` → vision chain the operator reviews at scaffold.
1737
+
1738
+ **Feature:** <component behavior>
1739
+
1740
+ **Scenario:** <name> [\`<level>\`] \`[<ACRONYM>-REQ-N]\`
1741
+ - **Given** <precondition>
1742
+ - **When** <command / query>
1743
+ - **Then** <postcondition>
1744
+ - **And** <side effect>
1745
+
1746
+ <!-- BLOCKER: every DbC contract in Spec References has at least one \`contract\`-level typing scenario; Deferred Test Ownership is forbidden for typing scenarios. -->
1747
+ <!--/SECTION:BDD-->
1748
+
1749
+ <!--SECTION:VERIFICATION-->
1750
+ ## Verification
1751
+ | Command | Required by |
1752
+ |---------|-------------|
1753
+ | <resolved invocation> | <rule-id>, <rule-id> |
1754
+
1755
+ <!-- One row per unique check-command alias. Phase-subagent runs only rows whose Required-by overlaps its phase Rules. -->
1756
+
1757
+ - **Task-specific Completion additions:** <list or "none beyond project baseline">
1758
+ <!--/SECTION:VERIFICATION-->
1759
+
1760
+ <!--SECTION:TEST_COVERAGE-->
1761
+ ## Test Scenario Coverage <!-- BLOCKER: an unmapped scenario blocks task close -->
1762
+ - Scenario <name> → \`<test-file>\` :: \`<canonical case name>\` <!-- or: Deferred Test Ownership: <Task-ID> -->
1763
+ <!--/SECTION:TEST_COVERAGE-->
1764
+
1765
+ <!--SECTION:EXECUTION_LOG-->
1766
+ ## Execution Log
1767
+ *(Round = one execute-then-audit attempt; per-phase blocks within a Round. Skeleton is minimal — event lines appear only when the event happens. Token vocabulary lives in \`<module>.3-tasks.md\`. A \`[x]\` line with an unreplaced \`<…>\` placeholder is a fabricated DONE — forbidden.)*
1768
+
1769
+ ### Round 1 — <YYYY-MM-DD>, initial
1770
+
1771
+ #### P1
1772
+ - [ ] \`<ts>\` ver \`<cmd>\` → \`<pass|fail>\` exit=\`<code>\`
1773
+ - [ ] \`<ts>\` DONE
1774
+ **Handoff →** artifacts: [...]; decisions: [...]; open: [...]
1775
+
1776
+ #### Round close
1777
+ - [ ] \`<ts>\` DONE
1778
+ <!--/SECTION:EXECUTION_LOG-->
1779
+
1780
+ <!--SECTION:DECISION_LOG-->
1781
+ ## Decision Log
1782
+ <!-- local decisions taken during execution, ADR-compact (\`<ACRONYM>-D-N · <statement>\` → why ↳ rejected). Omit if none beyond the spec. -->
1783
+ <!--/SECTION:DECISION_LOG-->
1784
+
1785
+ <!-- AUDIT_ROUNDS appended only after the first reopen-triggering audit (per the audit directive). -->
1786
+ `, ms = [
1787
+ {
1788
+ name: "META",
1789
+ required: !0,
1790
+ loadBearing: !1,
1791
+ fold: !1,
1792
+ fill: "Task-ID, Status, Purpose, Scope/Module, Dependencies, Spec References (one anchor per contract), Runtime Backing, Verification Levels, Deferred Runtime Scope."
1793
+ },
1794
+ {
1795
+ name: "PHASES_OVERVIEW",
1796
+ required: !0,
1797
+ loadBearing: !1,
1798
+ fold: !1,
1799
+ fill: "ID/Kind/Deps/Status table for every phase; impl and test are always separate phases."
1800
+ },
1801
+ {
1802
+ name: "PHASE_P<N>",
1803
+ required: !0,
1804
+ loadBearing: !1,
1805
+ fold: !1,
1806
+ fill: "One anchored PHASE_P<N> section per row in Phases Overview: Objective, Rules (links only), Target Files, Inputs, Exit criterion."
1807
+ },
1808
+ {
1809
+ name: "BDD",
1810
+ required: !0,
1811
+ loadBearing: !1,
1812
+ fold: !1,
1813
+ fill: "Given/When/Then scenarios tagged with [<ACRONYM>-REQ-N] and a verification level. BLOCKER: every DbC contract in Spec References needs ≥1 contract-level typing scenario."
1814
+ },
1815
+ {
1816
+ name: "VERIFICATION",
1817
+ required: !0,
1818
+ loadBearing: !1,
1819
+ fold: !1,
1820
+ fill: "Command/Required-by table — one row per unique check-command alias — plus task-specific completion additions."
1821
+ },
1822
+ {
1823
+ name: "TEST_COVERAGE",
1824
+ required: !0,
1825
+ loadBearing: !1,
1826
+ fold: !1,
1827
+ fill: "BLOCKER: map every BDD scenario to a test-file + case name, or an explicit Deferred Test Ownership."
1828
+ },
1829
+ {
1830
+ name: "EXECUTION_LOG",
1831
+ required: !0,
1832
+ loadBearing: !1,
1833
+ fold: !1,
1834
+ fill: "Round/phase event log — timestamps, verification runs, DONE lines, handoffs. Never fabricate a [x] with a placeholder still in it."
1835
+ },
1836
+ {
1837
+ name: "DECISION_LOG",
1838
+ required: !1,
1839
+ loadBearing: !1,
1840
+ fold: !1,
1841
+ fill: "Local ADR-compact decisions taken during execution; omit if none beyond the spec."
1842
+ }
1843
+ ], Es = `# <module> — Tasks
1844
+
1845
+ ## Tracker Index
1846
+ | Task-ID | Title | Dependencies | Status | Reopens |
1847
+ |---------|-------|--------------|--------|---------|
1848
+ | <ACRONYM>-<slug> | <title> | <deps or —> | [ ] TODO | — |
1849
+
1850
+ ## Slug Registry
1851
+ <!-- one slug per line; this IS the uniqueness mechanism — the same slug in two branches collides on merge here, surfacing "same feature" instead of hiding it. Append-only. -->
1852
+ - <slug>
1853
+
1854
+ ## Intra-Module DAG
1855
+ \`\`\`mermaid
1856
+ graph TD
1857
+ A[<slug-a>] --> B[<slug-b>]
1858
+ \`\`\`
1859
+ <!-- edge A → B = "A depends on B". Cross-module / cross-scope edges live one level up, not here. -->
1860
+
1861
+ ## Decision Log (module-task level)
1862
+ <!-- decomposition / planning decisions (ticket merges, deferred coverage, rule-activation overrides), ADR-compact. Local execution-time decisions stay in each ticket's own Decision Log. -->
1863
+
1864
+ ## Conventions
1865
+ Project-wide conventions (Execution-Log token vocabulary, Baseline Completion Rule, post-task audit hook, file-header) are declared once in \`specs/3-tasks.md\` and inherited here — not repeated.
1866
+ `, hs = [
1867
+ {
1868
+ name: "TRACKER_INDEX",
1869
+ required: !0,
1870
+ loadBearing: !1,
1871
+ fold: !1,
1872
+ fill: "Task-ID/Title/Dependencies/Status/Reopens table — one row per ticket in this module."
1873
+ },
1874
+ {
1875
+ name: "SLUG_REGISTRY",
1876
+ required: !0,
1877
+ loadBearing: !1,
1878
+ fold: !1,
1879
+ fill: "Append-only list of every slug used in this module — the merge-collision uniqueness mechanism."
1880
+ },
1881
+ {
1882
+ name: "INTRA_MODULE_DAG",
1883
+ required: !0,
1884
+ loadBearing: !1,
1885
+ fold: !1,
1886
+ fill: 'Mermaid graph of intra-module ticket dependencies (edge A --> B = "A depends on B").'
1887
+ },
1888
+ {
1889
+ name: "DECISION_LOG",
1890
+ required: !1,
1891
+ loadBearing: !1,
1892
+ fold: !1,
1893
+ fill: "Decomposition/planning decisions (ticket merges, deferred coverage, rule-activation overrides), ADR-compact."
1894
+ },
1895
+ {
1896
+ name: "CONVENTIONS",
1897
+ required: !0,
1898
+ loadBearing: !1,
1899
+ fold: !1,
1900
+ fill: "Pointer to specs/3-tasks.md — project-wide conventions are declared once there, inherited here."
1901
+ }
1902
+ ], Ss = `# Tasks: <scope>
1903
+
1904
+ ## Scope Spec
1905
+ - [Scope spec](./<scope>.spec.md)
1906
+
1907
+ ## Cascade Table
1908
+ Effective rules for this scope, from the Scope Graph (depends-on transitive closure). Tier order (low → high on collision): traversed-scopes → target-scope → module → phase.
1909
+ | Tier | coding | testing | architecture | infra |
1910
+ |------|--------|---------|--------------|-------|
1911
+ | infra-base (traversed) | typescript-rules | vitest-rules | | eslint-setup |
1912
+ | <scope> (target) | | | ports-adapters | |
1913
+ | module:<m> | | node-test | | |
1914
+
1915
+ ## Inter-Module DAG
1916
+ \`\`\`mermaid
1917
+ graph TD
1918
+ A[<module-a>] --> B[<module-b>]
1919
+ \`\`\`
1920
+
1921
+ ## Tracker
1922
+ | Task-ID | Title | Module | Dependencies | Status | Reopens |
1923
+ |---------|-------|--------|--------------|--------|---------|
1924
+ | <ACR>-<slug> | <title> | <module> | <deps> | [ ] TODO | — |
1925
+
1926
+ ## Decision Log (scope task level)
1927
+ [D-NNN for scope-level decomposition / planning choices.]
1928
+ `, gs = [
1929
+ {
1930
+ name: "SCOPE_SPEC_LINK",
1931
+ required: !0,
1932
+ loadBearing: !1,
1933
+ fold: !1,
1934
+ fill: "Link to the co-located scope spec (./<scope>.spec.md)."
1935
+ },
1936
+ {
1937
+ name: "CASCADE_TABLE",
1938
+ required: !0,
1939
+ loadBearing: !1,
1940
+ fold: !1,
1941
+ fill: "Effective rules for this scope from the Scope Graph depends-on transitive closure, by tier (traversed-scopes → target-scope → module → phase)."
1942
+ },
1943
+ {
1944
+ name: "INTER_MODULE_DAG",
1945
+ required: !0,
1946
+ loadBearing: !1,
1947
+ fold: !1,
1948
+ fill: "Mermaid graph of inter-module dependencies within this scope."
1949
+ },
1950
+ {
1951
+ name: "TRACKER",
1952
+ required: !0,
1953
+ loadBearing: !1,
1954
+ fold: !1,
1955
+ fill: "Task-ID/Title/Module/Dependencies/Status/Reopens rollup table — module tickets plus any scope-level tickets (infra/interface scopes with no modules)."
1956
+ },
1957
+ {
1958
+ name: "DECISION_LOG",
1959
+ required: !1,
1960
+ loadBearing: !1,
1961
+ fold: !1,
1962
+ fill: "Scope-level decomposition/planning decisions, D-NNN, ADR-compact."
1963
+ }
1964
+ ], Is = "# Project Tasks\n\n## Entry Points\n- [Specs Portal](./README.md) — Scope Graph + all scope specs.\n- Tickets execute ONLY via the `/sdd-execute` flow (one ticket) or its batch form; the orchestrator dispatches phase-workers then audit — the operator does not invoke audit by hand.\n\n## Project-Wide Conventions (declared once, inherited)\n- **File-header:** owned by the coding rule (`@file` / `@consumers` / `@tasks`), enforced by `sdd-verify`.\n- **Baseline Completion Rule:** a Round cannot go `[x] DONE` until — every phase `[x]`; every BDD scenario mapped to a test or `Deferred Test Ownership`; verification commands run with exit recorded; every entity beyond the Inventory logged `intro …`; a Handoff line closes each phase.\n- **Execution-Log token vocabulary:** `intro <Entity> ← <reason>` · `decision <key>=<value> ← <reason>` · `tried <approach> → <result>` · `discovery <fact>` · `insight <observation> → <spec-section>` · `verified <tool>@<version> <summary>` · `ver <cmd> → pass|fail exit=<N>` · `BLOCKED <cause>` · `DONE`. A `[x]` line with an unreplaced `<…>` placeholder is fabricated (BLOCKER).\n- **Post-task hook:** after a Round closes the orchestrator runs audit; until PASS the round is closed-but-unverified and dependents are blocked.\n\n## Cross-Scope DAG\nCross-scope edges + integration tickets only; intra-scope edges live in each scope index. Order follows the Portal Scope Graph.\n```mermaid\ngraph TD\n backend --> infra-base\n web --> backend\n```\n\n## Scope Tracker\n| Scope | Type | Index | Tasks | Done |\n|---|---|---|---|---|\n| infra-base | infrastructure | [3-tasks](./infra-base/infra-base.3-tasks.md) | 6 | 0/6 |\n| backend | product | [3-tasks](./backend/backend.3-tasks.md) | 12 | 0/12 |\n\n## Decision Log (project task level)\n[D-NNN when the operator made non-default cross-scope choices.]\n", Os = [
1965
+ {
1966
+ name: "ENTRY_POINTS",
1967
+ required: !0,
1968
+ loadBearing: !1,
1969
+ fold: !1,
1970
+ fill: "Link to the Specs Portal, plus the reminder that tickets execute only via /sdd-execute (single or batch)."
1971
+ },
1972
+ {
1973
+ name: "PROJECT_WIDE_CONVENTIONS",
1974
+ required: !0,
1975
+ loadBearing: !1,
1976
+ fold: !1,
1977
+ fill: "File-header rule, Baseline Completion Rule, Execution-Log token vocabulary, and post-task audit hook — declared once here, inherited by every scope/module/ticket."
1978
+ },
1979
+ {
1980
+ name: "CROSS_SCOPE_DAG",
1981
+ required: !0,
1982
+ loadBearing: !1,
1983
+ fold: !1,
1984
+ fill: "Mermaid graph of cross-scope depends-on edges + integration tickets only; intra-scope edges live in each scope index."
1985
+ },
1986
+ {
1987
+ name: "SCOPE_TRACKER",
1988
+ required: !0,
1989
+ loadBearing: !1,
1990
+ fold: !1,
1991
+ fill: "Scope/Type/Index/Tasks/Done rollup table — one row per scope, linking to its 3-tasks.md."
1992
+ },
1993
+ {
1994
+ name: "DECISION_LOG",
1995
+ required: !1,
1996
+ loadBearing: !1,
1997
+ fold: !1,
1998
+ fill: "Cross-scope decomposition/planning decisions, D-NNN, ADR-compact."
1999
+ }
2000
+ ], Ts = `# <project-name>
2001
+
2002
+ ## Vision
2003
+ <Одно предложение. Опускается для infrastructure-only проектов.>
2004
+
2005
+ ## Scope Graph
2006
+
2007
+ \`\`\`mermaid
2008
+ graph TD
2009
+ backend --> infra-base
2010
+ backend --> api
2011
+ web --> infra-base
2012
+ web --> api
2013
+ web --> design-system-core
2014
+ mobile --> api
2015
+ \`\`\`
2016
+
2017
+ ## Scopes
2018
+
2019
+ | Scope | Type | Spec | Description |
2020
+ |---|---|---|---|
2021
+ | [\`infra-base\`](./infra-base/infra-base.spec.md) | infrastructure | ✅ | TS + pnpm + vitest + biome |
2022
+ | [\`api\`](./api/api.spec.md) | interface | 🚧 | REST API v1 |
2023
+ | [\`backend\`](./backend/backend.spec.md) | product | ✅ | Node.js IMAP-сервис |
2024
+ | [\`web\`](./web/web.spec.md) | product | 🚧 | React SPA |
2025
+ `, _s = [
2026
+ {
2027
+ name: "VISION",
2028
+ required: !1,
2029
+ loadBearing: !1,
2030
+ fold: !1,
2031
+ fill: "One sentence for the whole project; omit for infrastructure-only projects."
2032
+ },
2033
+ {
2034
+ name: "SCOPE_GRAPH",
2035
+ required: !0,
2036
+ loadBearing: !1,
2037
+ fold: !1,
2038
+ fill: "A mermaid graph of scope depends-on edges."
2039
+ },
2040
+ {
2041
+ name: "SCOPES",
2042
+ required: !0,
2043
+ loadBearing: !1,
2044
+ fold: !1,
2045
+ fill: "Scope/Type/Spec-status/Description table — one row per scope, linking to its spec.md."
2046
+ }
2047
+ ], pe = {
2048
+ product: {
2049
+ kind: "product",
2050
+ skeleton: ns,
2051
+ sections: os,
2052
+ pathPattern: "specs/<scope>/<scope>.spec.md"
2053
+ },
2054
+ library: {
2055
+ kind: "library",
2056
+ skeleton: rs,
2057
+ sections: is,
2058
+ pathPattern: "specs/<scope>/<scope>.spec.md"
2059
+ },
2060
+ infrastructure: {
2061
+ kind: "infrastructure",
2062
+ skeleton: as,
2063
+ sections: cs,
2064
+ pathPattern: "specs/<scope>/<scope>.spec.md"
2065
+ },
2066
+ interface: {
2067
+ kind: "interface",
2068
+ skeleton: ls,
2069
+ sections: ds,
2070
+ pathPattern: "specs/<scope>/<scope>.spec.md"
2071
+ },
2072
+ module: {
2073
+ kind: "module",
2074
+ skeleton: us,
2075
+ sections: fs,
2076
+ pathPattern: "specs/<scope>/<module>/<module>.spec.md"
2077
+ },
2078
+ task: {
2079
+ kind: "task",
2080
+ skeleton: ps,
2081
+ sections: ms,
2082
+ pathPattern: "specs/<scope>/<module>/<module>.task.<ACR>-<slug>.md"
2083
+ },
2084
+ "module-index": {
2085
+ kind: "module-index",
2086
+ skeleton: Es,
2087
+ sections: hs,
2088
+ pathPattern: "specs/<scope>/<module...>/<module>.3-tasks.md"
2089
+ },
2090
+ "scope-index": {
2091
+ kind: "scope-index",
2092
+ skeleton: Ss,
2093
+ sections: gs,
2094
+ pathPattern: "specs/<scope>/<scope>.3-tasks.md"
2095
+ },
2096
+ "project-index": {
2097
+ kind: "project-index",
2098
+ skeleton: Is,
2099
+ sections: Os,
2100
+ pathPattern: "specs/3-tasks.md"
2101
+ },
2102
+ portal: {
2103
+ kind: "portal",
2104
+ skeleton: Ts,
2105
+ sections: _s,
2106
+ pathPattern: "specs/README.md"
2107
+ }
2108
+ }, Io = Object.keys(pe);
2109
+ function Ye(e) {
2110
+ return pe[e].sections.filter((t) => t.loadBearing).map((t) => t.name);
2111
+ }
2112
+ function Ns(e) {
2113
+ return pe[e].sections.filter((t) => t.fold).map((t) => t.name);
2114
+ }
2115
+ function Cs(e) {
2116
+ return e.provider === "github" ? new Nt({ baseUrl: "https://api.github.com", token: e.token }) : new Ct({ baseUrl: `https://${e.host}/api/v4`, token: e.token });
2117
+ }
2118
+ const Oo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2119
+ __proto__: null,
2120
+ createVcsClient: Cs
2121
+ }, Symbol.toStringTag, { value: "Module" })), He = "(?<!\\p{L})", Ds = "(?!\\p{L})", L = (e) => new RegExp(`${He}${e}${Ds}`, "iu"), T = (e) => new RegExp(`${He}${e}\\p{L}*`, "iu"), As = [
2122
+ { re: L("проз[аыуе]"), why: "книжное", use: "текст" },
2123
+ { re: L("новь[её]"), why: "сленг", use: "новое" },
2124
+ { re: T("докрут"), why: "сленг", use: "доработать" },
2125
+ { re: T("обстук"), why: "сленг", use: "проверить" },
2126
+ { re: T("запил"), why: "сленг", use: "сделать" },
2127
+ { re: T("реифиц"), why: "калька (reify)", use: "создать объект / сохранить" },
2128
+ { re: T("инстанцир"), why: "калька (instantiate)", use: "создать" },
2129
+ { re: L("дабы"), why: "архаизм", use: "чтобы" },
2130
+ { re: L("посему"), why: "архаизм", use: "поэтому" },
2131
+ { re: L("сие"), why: "архаизм", use: "это" },
2132
+ { re: L("надлежит"), why: "канцелярит", use: "нужно / следует" },
2133
+ { re: L("зиждется"), why: "книжное", use: "основан на" },
2134
+ { re: T("воззрени"), why: "книжное", use: "взгляд / подход" },
2135
+ { re: T("лейтмотив"), why: "книжное", use: "основная мысль" },
2136
+ { re: T("скаут"), why: "калька (scout)", use: "просмотреть / разведать" },
2137
+ { re: L("дифф(?:а|е|у|ом|ов|ами)?"), why: "калька (diff)", use: "изменения / различия" },
2138
+ { re: T("чейнджсет"), why: "калька (changeset)", use: "набор изменений" },
2139
+ { re: T("триаж"), why: "калька (triage)", use: "разбор / сортировка" },
2140
+ { re: T("х[эе]ндофф"), why: "калька (handoff)", use: "передача / готовое задание" },
2141
+ { re: T("факт-чек"), why: "калька (fact-check)", use: "сверка / проверка фактов" },
2142
+ // Пойманы на описании MR!177 — оператор: «мозг плавится, это не читать». Только бесспорные случаи:
2143
+ // прижившиеся в русском IT слова (деградация, оркестрация, раунд) НЕ баним — точность важнее полноты.
2144
+ { re: T("гейт"), why: "калька (gate)", use: "проверка / запрет / условие" },
2145
+ { re: T("сентинел"), why: "калька (sentinel)", use: "служебное значение" },
2146
+ { re: T("перевооруж"), why: "калька (re-arm)", use: "запустить заново / поставить заново" },
2147
+ { re: T("поглощающ"), why: "калька (absorbing state)", use: "застревает навсегда" },
2148
+ { re: L("фикс(?:а|у|ом|е|ы|ов|ами)?"), why: "сленг (fix)", use: "правка / исправление" },
2149
+ { re: T("блокер"), why: "сленг (blocker)", use: "блокирующий дефект" },
2150
+ { re: T("терминальн"), why: "калька (terminal)", use: "окончательный / конечный" }
2151
+ ];
2152
+ function To(e) {
2153
+ const t = [], s = e.split(`
2154
+ `), o = e.replace(/<!--[\s\S]*?-->/g, (i) => i.replace(/[^\n]/g, " ")).split(`
2155
+ `);
2156
+ let r = !1;
2157
+ for (let i = 0; i < o.length; i++) {
2158
+ const a = o[i];
2159
+ if (a.trim().startsWith("```")) {
2160
+ r = !r;
2161
+ continue;
2162
+ }
2163
+ if (r || s[i].includes("<!-- stop-ok")) continue;
2164
+ const l = a.replace(/`[^`]*`/g, (f) => " ".repeat(f.length));
2165
+ for (const f of As) {
2166
+ const d = new RegExp(
2167
+ f.re.source,
2168
+ f.re.flags.includes("g") ? f.re.flags : f.re.flags + "g"
2169
+ );
2170
+ let u;
2171
+ for (; (u = d.exec(l)) !== null; )
2172
+ t.push({ word: u[0], line: i + 1, col: u.index + 1, why: f.why, use: f.use }), u.index === d.lastIndex && d.lastIndex++;
2173
+ }
2174
+ }
2175
+ return t;
2176
+ }
2177
+ const ys = /^[A-Z][A-Z0-9_]*$/;
2178
+ function qe(e) {
2179
+ return ys.test(e);
2180
+ }
2181
+ function g(e, t) {
2182
+ if (!qe(t)) return { status: "invalid_name" };
2183
+ const s = `<!--SECTION:${t}-->`, n = `<!--/SECTION:${t}-->`, o = e.split(`
2184
+ `);
2185
+ let r = 0, i = 0;
2186
+ for (const f of o) {
2187
+ const d = f.trim();
2188
+ d === s ? r++ : d === n && i++;
2189
+ }
2190
+ if (r === 0 && i === 0) return { status: "not_found" };
2191
+ if (r !== i) return { status: "unbalanced", startCount: r, endCount: i };
2192
+ if (r > 1) return { status: "duplicated", count: r };
2193
+ const a = [];
2194
+ let c = !1;
2195
+ for (const f of o) {
2196
+ const d = f.trim();
2197
+ if (d === s) {
2198
+ c = !0;
2199
+ continue;
2200
+ }
2201
+ if (d === n) {
2202
+ c = !1;
2203
+ continue;
2204
+ }
2205
+ c && a.push(f);
2206
+ }
2207
+ const l = a.join(`
2208
+ `);
2209
+ return l.trim() === "" ? { status: "empty" } : { status: "ok", content: l };
2210
+ }
2211
+ function _o(e, t) {
2212
+ if (!qe(t)) return null;
2213
+ const s = `<!--SECTION:${t}-->`, n = `<!--/SECTION:${t}-->`, o = e.split(`
2214
+ `);
2215
+ let r = -1, i = -1, a = 0, c = 0;
2216
+ return o.forEach((l, f) => {
2217
+ const d = l.trim();
2218
+ d === s ? (a++, r === -1 && (r = f)) : d === n && (c++, i = f);
2219
+ }), a !== 1 || c !== 1 || i < r ? null : { openLine: r, closeLine: i };
2220
+ }
2221
+ function No(e) {
2222
+ const t = g(e, "ENTITY_INVENTORY");
2223
+ return t.status !== "ok" ? [] : t.content.split(`
2224
+ `).map((n) => n.trim()).filter((n) => n.startsWith("|") && !/^\|[\s:|-]+$/.test(n)).slice(1).map((n) => (n.split("|")[1] ?? "").replace(/`/g, "").trim()).filter(Boolean);
2225
+ }
2226
+ function Rs(e, t) {
2227
+ try {
2228
+ const s = h(e, "package.json");
2229
+ if (!R(s) || JSON.parse(D(s, "utf-8")).name !== "gennady") return null;
2230
+ const o = h(e, t);
2231
+ return R(o) ? o : null;
2232
+ } catch {
2233
+ return null;
2234
+ }
2235
+ }
2236
+ function Co(e, t) {
2237
+ try {
2238
+ const n = h(e, "node_modules", "gennady", t);
2239
+ if (R(n)) return n;
2240
+ } catch {
2241
+ }
2242
+ try {
2243
+ const n = import.meta.resolve("gennady"), r = fe(n).replace(/[/\\]dist[/\\].*$/, ""), i = h(r, t);
2244
+ if (R(i)) return i;
2245
+ } catch {
2246
+ }
2247
+ const s = Rs(e, t);
2248
+ return s || null;
2249
+ }
2250
+ function Do(e, t) {
2251
+ return !Buffer.isBuffer(e) || !Buffer.isBuffer(t) ? !0 : Buffer.compare(e, t) !== 0;
2252
+ }
2253
+ function Ao(e, t) {
2254
+ let s = e;
2255
+ for (const n of t)
2256
+ s = s.replace(n.from, n.to);
2257
+ return s;
2258
+ }
2259
+ const We = {
2260
+ from: /npx\s+tsx\s+~\/Developer\/gennady\/cli\/gennady\.ts\b/g,
2261
+ to: "npx gennady"
2262
+ }, Ke = {
2263
+ from: /npx tsx ~\/Developer\/gennady\/cli[ \t]+/g,
2264
+ to: "npx gennady "
2265
+ }, Xe = {
2266
+ from: /~\/Developer\/gennady\/cli\/gennady\.ts/g,
2267
+ to: "npx gennady"
2268
+ }, ks = {
2269
+ from: /~\/Developer\/gennady\/ai\/skills\//g,
2270
+ to: ".claude/skills/"
2271
+ }, Ze = {
2272
+ from: /~\/Developer\/gennady\/ai\/directives\//g,
2273
+ to: "ai/directives/"
2274
+ }, ze = {
2275
+ from: /\/Users\/k\.lebedev\/Developer\/gennady\/ai\//g,
2276
+ to: "ai/"
2277
+ }, Qe = {
2278
+ from: /\/Users\/k\.lebedev\/Developer\/gennady\/cli\/gennady\.ts/g,
2279
+ to: "npx gennady"
2280
+ }, Je = {
2281
+ from: /\$HOME\/Developer\/gennady\/cli\/gennady\.ts\b/g,
2282
+ to: "~/Developer/gennady/cli/gennady.ts"
2283
+ }, yo = [
2284
+ We,
2285
+ Ke,
2286
+ Xe,
2287
+ Ze,
2288
+ ze,
2289
+ Qe,
2290
+ Je
2291
+ ], Ro = [
2292
+ We,
2293
+ Ke,
2294
+ Xe,
2295
+ ks,
2296
+ Ze,
2297
+ ze,
2298
+ Qe,
2299
+ Je
2300
+ ], vs = "+", ws = "~", Ps = "-", Ls = "=", bs = "(unchanged)", Ms = "(would add)", xs = "(would update)", $s = "(would delete)", Bs = "(unchanged, skip)";
2301
+ function ko(e, t = {}) {
2302
+ const s = [];
2303
+ for (const a of e) {
2304
+ const { relativePath: c, status: l } = a;
2305
+ let f, d;
2306
+ l === "added" ? (f = vs, d = t.dryRun ? Ms : "") : l === "updated" ? (f = ws, d = t.dryRun ? xs : "") : l === "deleted" ? (f = Ps, d = t.dryRun ? $s : "") : (f = Ls, d = t.dryRun ? Bs : bs);
2307
+ const u = c.padEnd(64);
2308
+ d ? s.push(` ${f} ${u} ${d}`) : s.push(` ${f} ${c}`);
2309
+ }
2310
+ const n = e.filter((a) => a.status === "added").length, o = e.filter((a) => a.status === "updated").length, r = e.filter((a) => a.status === "unchanged").length, i = e.filter((a) => a.status === "deleted").length;
2311
+ if (t.dryRun)
2312
+ s.push("Dry-run: no files written.");
2313
+ else {
2314
+ let a = `Synced: ${n} added, ${o} updated, ${r} skipped (unchanged)`;
2315
+ i > 0 && (a += `, ${i} deleted`), s.push(a);
2316
+ }
2317
+ return s;
2318
+ }
2319
+ const Us = /[\u001B\u009B][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~]))/g, Re = [
2320
+ /^\s*(✖|❌|⚠|🛑|× |✗ |FAIL |●|▶)/,
2321
+ /:\d+:\d+:\s+(error|warning)/i,
2322
+ /^\s+at\s+/,
2323
+ /ERR_[A-Z_]+/,
2324
+ /(Error|TypeError|SyntaxError|AssertionError|AggregateError):/,
2325
+ /(failed|passed|errors?|warnings?)\s*[:\d]/i,
2326
+ /exit (code|status)\s*[1-9]/i,
2327
+ /\b(tests?|specs?|suites?)\s+\d+\s+failed/i,
2328
+ /\d+\s+(failed|passing|pending)/i,
2329
+ /^\[(FAILED|ERROR|PASSED)\]/i,
2330
+ /^\s*\d+\)\s/,
2331
+ /(FAIL|PASS)\s{2,}/,
2332
+ /^TAP version/i,
2333
+ /^\s*not\s+ok\s+\d+/i
2334
+ ];
2335
+ function vo(e) {
2336
+ const t = e.replace(Us, ""), s = t.split(`
2337
+ `).filter((n) => {
2338
+ const o = n.trim();
2339
+ return !o || o.length > 200 && !/:\d+/.test(o) && !Re.some((r) => r.test(o)) ? !1 : Re.some((r) => r.test(o));
2340
+ });
2341
+ return s.length === 0 ? t.slice(0, 2e3) + `
2342
+ ... [no error lines]` : s.join(`
2343
+ `);
2344
+ }
2345
+ const Gs = ["typecheck", "test", "test:coverage", "lint", "format"];
2346
+ function Fs(e) {
2347
+ const t = e.lint;
2348
+ if (t === void 0) return !1;
2349
+ const s = /* @__PURE__ */ new Set(), n = [t];
2350
+ for (; n.length > 0; ) {
2351
+ const o = n.shift();
2352
+ if (o !== void 0) {
2353
+ if (/\bgennady\b/.test(o)) return !0;
2354
+ for (const r of o.matchAll(/npm run ([A-Za-z0-9:_-]+)/g)) {
2355
+ const i = r[1];
2356
+ i && !s.has(i) && e[i] !== void 0 && (s.add(i), n.push(e[i]));
2357
+ }
2358
+ }
2359
+ }
2360
+ return !1;
2361
+ }
2362
+ function wo(e) {
2363
+ const { packageJsonPresent: t, scripts: s, gennadyAvailable: n } = e, o = Gs.map((c) => ({
2364
+ name: c,
2365
+ present: s[c] !== void 0
2366
+ })), r = Fs(s), i = [];
2367
+ t || i.push("package.json"), i.push(...o.filter((c) => !c.present).map((c) => c.name)), s.lint !== void 0 && !r && i.push("lint→gennady"), n || i.push("gennady (not installed)");
2368
+ const a = t && o.every((c) => c.present) && r && n;
2369
+ return { packageJsonPresent: t, required: o, lintHasGennady: r, gennadyAvailable: n, ready: a, missing: i };
2370
+ }
2371
+ function Vs(e) {
2372
+ return e.includes("✅") ? "done" : e.includes("🚧") ? "wip" : "unknown";
2373
+ }
2374
+ function Po(e) {
2375
+ const t = e.split(`
2376
+ `);
2377
+ let s = !1;
2378
+ const n = [];
2379
+ for (const o of t) {
2380
+ const r = o.trim();
2381
+ if (/^#{1,6}\s/.test(r)) {
2382
+ s = /^#{1,6}\s+Scopes\s*$/.test(r);
2383
+ continue;
2384
+ }
2385
+ if (!s || !r.startsWith("|")) continue;
2386
+ const i = r.replace(/^\|/, "").replace(/\|$/, "").split("|").map((p) => p.trim());
2387
+ if (i.length < 3) continue;
2388
+ const [a, c, l, f] = i;
2389
+ if (a === void 0 || c === void 0 || l === void 0) continue;
2390
+ const d = a.match(/`([^`]+)`/);
2391
+ if (!d || !d[1]) continue;
2392
+ const u = a.match(/\]\(([^)]+)\)/);
2393
+ n.push({
2394
+ name: d[1],
2395
+ type: c,
2396
+ status: Vs(l),
2397
+ description: f?.trim() ?? "",
2398
+ specPath: u?.[1] ?? null
2399
+ });
2400
+ }
2401
+ return n;
2402
+ }
2403
+ function js(e) {
2404
+ const t = [], s = /([A-Za-z0-9_-]+)(?:\[[^\]]*\])?\s*-->(?:\s*\|[^|]*\|)?\s*([A-Za-z0-9_-]+)/;
2405
+ for (const n of e.split(`
2406
+ `)) {
2407
+ const o = n.trim();
2408
+ if (!o.includes("-->")) continue;
2409
+ const r = s.exec(o);
2410
+ r?.[1] && r[2] && t.push({ from: r[1], to: r[2] });
2411
+ }
2412
+ return t;
2413
+ }
2414
+ const Ys = /* @__PURE__ */ new Set(["node_modules", ".git", "dist", "build", "coverage", ".next", "out"]), Hs = /\.(js|jsx|ts|tsx)$/, qs = [
2415
+ "tsconfig.json",
2416
+ "eslint.config.js",
2417
+ "eslint.config.mjs",
2418
+ "eslint.config.cjs",
2419
+ ".eslintrc",
2420
+ ".eslintrc.json",
2421
+ ".eslintrc.js",
2422
+ ".eslintrc.cjs",
2423
+ "prettier.config.js",
2424
+ "prettier.config.cjs",
2425
+ ".prettierrc",
2426
+ ".prettierrc.json",
2427
+ "vitest.config.ts",
2428
+ "vitest.config.js",
2429
+ "vite.config.ts",
2430
+ "vite.config.js",
2431
+ "jest.config.js",
2432
+ "jest.config.ts"
2433
+ ];
2434
+ function et(e, t, s) {
2435
+ let n;
2436
+ try {
2437
+ n = $(e, { withFileTypes: !0 });
2438
+ } catch {
2439
+ return;
2440
+ }
2441
+ for (const o of n) {
2442
+ const r = o.name;
2443
+ if (o.isDirectory()) {
2444
+ if (Ys.has(r) || r.startsWith(".")) continue;
2445
+ et(h(e, r), t, s);
2446
+ } else if (Hs.test(r)) {
2447
+ s.count++;
2448
+ const i = h(e, r).slice(t.length + 1);
2449
+ s.dirs.add(i.includes("/") ? i.slice(0, i.indexOf("/")) : ".");
2450
+ }
2451
+ }
2452
+ }
2453
+ function Lo(e) {
2454
+ const t = { count: 0, dirs: /* @__PURE__ */ new Set() };
2455
+ et(e, e, t);
2456
+ const s = qs.filter((n) => R(h(e, n)));
2457
+ return {
2458
+ codePresent: t.count > 0,
2459
+ codeFileCount: t.count,
2460
+ codeDirs: [...t.dirs].sort(),
2461
+ infraPresent: s.length > 0,
2462
+ configFiles: s
2463
+ };
2464
+ }
2465
+ function Ws(e) {
2466
+ try {
2467
+ return oe(h(e, "tasks")).isDirectory() ? "v1" : "v2";
2468
+ } catch {
2469
+ return "v2";
2470
+ }
2471
+ }
2472
+ function bo(e, t) {
2473
+ if (Ws(e) === "v2") return "v2";
2474
+ try {
2475
+ if (oe(h(e, "tasks", t)).isDirectory()) return "v1";
2476
+ } catch {
2477
+ }
2478
+ try {
2479
+ return oe(h(e, "specs", t, `${t}.3-tasks.md`)).isFile() ? "v2" : "v1";
2480
+ } catch {
2481
+ return "v1";
2482
+ }
2483
+ }
2484
+ function Mo(e) {
2485
+ const t = P(`git -C ${JSON.stringify(e)} diff --name-only HEAD 2>/dev/null`), s = P(
2486
+ `git -C ${JSON.stringify(e)} ls-files --others --exclude-standard 2>/dev/null`
2487
+ );
2488
+ return [...new Set(
2489
+ [...t.split(`
2490
+ `), ...s.split(`
2491
+ `)].map((o) => o.trim()).filter(Boolean)
2492
+ )].filter(
2493
+ (o) => /\.(ts|tsx|js)$/.test(o) && !/\.(test|spec)\.[jt]sx?$/.test(o) && !o.includes("node_modules/")
2494
+ );
2495
+ }
2496
+ function xo(e, t) {
2497
+ const s = P(
2498
+ `git -C ${JSON.stringify(e)} show HEAD:${JSON.stringify(t)} 2>/dev/null`,
2499
+ { expectedExitCodes: [128] }
2500
+ );
2501
+ return s || null;
2502
+ }
2503
+ function M(e, t) {
2504
+ const s = new RegExp(`\\*\\*${t}:\\*\\*\\s*(.+)`);
2505
+ return e.match(s)?.[1]?.trim() ?? null;
2506
+ }
2507
+ function ie(e, t) {
2508
+ const s = e.split(`
2509
+ `), n = [];
2510
+ let o = !1;
2511
+ for (const r of s) {
2512
+ const i = /^\s*-?\s*\*\*([^:*]+):\*\*/.exec(r);
2513
+ if (i) {
2514
+ o = i[1]?.trim().toLowerCase() === t.toLowerCase();
2515
+ continue;
2516
+ }
2517
+ if (o && r.trim() !== "")
2518
+ if (/^\s*-\s+/.test(r)) n.push(r.trim().replace(/^-\s+/, "").trim());
2519
+ else break;
2520
+ }
2521
+ return n;
2522
+ }
2523
+ function ae(e) {
2524
+ const t = e.match(/\[([^\]]+)\]\(([^)]+)\)/);
2525
+ return t && t[1] && t[2] ? { name: t[1], anchor: t[2] } : { name: e.trim(), anchor: "" };
2526
+ }
2527
+ function me(e) {
2528
+ const t = e.match(/\*\*Task-ID:\*\*\s*`?([A-Za-z0-9][\w-]*)`?/)?.[1] ?? null, s = e.match(/\*\*Status:\*\*\s*(\[.\]\s*[A-Z_]+)/)?.[1] ?? null, n = M(e, "Dependencies"), o = !n || /^none$/i.test(n.trim()) ? [] : n.split(",").map((i) => i.trim()).filter(Boolean), r = ie(e, "Spec References").map((i) => {
2529
+ const a = i.indexOf(":"), c = a !== -1 && a < i.indexOf("["), l = c ? i.slice(0, a).trim() : "", { name: f, anchor: d } = ae(c ? i.slice(a + 1) : i);
2530
+ return { role: l, name: f, anchor: d };
2531
+ });
2532
+ return {
2533
+ taskId: t,
2534
+ status: s,
2535
+ purpose: M(e, "Purpose"),
2536
+ scope: M(e, "Scope"),
2537
+ module: M(e, "Module"),
2538
+ dependencies: o,
2539
+ specRefs: r
2540
+ };
2541
+ }
2542
+ function tt(e) {
2543
+ return e.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map((t) => t.trim());
2544
+ }
2545
+ function st(e) {
2546
+ return /^\|?\s*:?-{2,}/.test(e.trim());
2547
+ }
2548
+ function Ks(e) {
2549
+ const t = [];
2550
+ for (const s of e.split(`
2551
+ `)) {
2552
+ if (!s.trimStart().startsWith("|") || st(s)) continue;
2553
+ const n = tt(s);
2554
+ if (n.length < 4 || n[0]?.toLowerCase() === "id") continue;
2555
+ const [o, r, i, a] = n;
2556
+ o && t.push({
2557
+ id: o,
2558
+ kind: r ?? "",
2559
+ deps: !i || i === "—" ? [] : i.split(",").map((c) => c.trim()).filter(Boolean),
2560
+ status: a ?? ""
2561
+ });
2562
+ }
2563
+ return t;
2564
+ }
2565
+ function $o(e) {
2566
+ return {
2567
+ objective: M(e, "Objective"),
2568
+ rules: ie(e, "Rules").map((t) => ae(t).anchor || ae(t).name),
2569
+ targetFiles: ie(e, "Target Files").map((t) => t.replace(/[`*]/g, "").trim()),
2570
+ inputs: M(e, "Inputs"),
2571
+ exit: M(e, "Exit")
2572
+ };
2573
+ }
2574
+ function Bo(e) {
2575
+ const t = [];
2576
+ for (const s of e.split(`
2577
+ `)) {
2578
+ if (!s.trimStart().startsWith("|") || st(s)) continue;
2579
+ const n = tt(s);
2580
+ if (n.length < 2 || n[0]?.toLowerCase() === "command") continue;
2581
+ const [o, r] = n;
2582
+ o && t.push({
2583
+ command: o.replace(/`/g, "").trim(),
2584
+ requiredBy: (r ?? "").split(",").map((i) => i.trim()).filter(Boolean)
2585
+ });
2586
+ }
2587
+ return t;
2588
+ }
2589
+ function Xs(e, t) {
2590
+ const s = t.trim(), n = /^P(\d+)(\b|_FIX\b)/i.exec(s);
2591
+ if (e === 3 && n) return `PHASE_P${n[1]}${/_FIX/i.test(s) ? "_FIX" : ""}`;
2592
+ if (e !== 2) return null;
2593
+ const o = s.toLowerCase();
2594
+ return /\bmeta\b/.test(o) ? "META" : /phases overview/.test(o) ? "PHASES_OVERVIEW" : /acceptance criteria|\bbdd\b/.test(o) ? "BDD" : /\bverification\b/.test(o) ? "VERIFICATION" : /test scenario coverage|test coverage/.test(o) ? "TEST_COVERAGE" : /execution log/.test(o) ? "EXECUTION_LOG" : /decision log/.test(o) ? "DECISION_LOG" : null;
2595
+ }
2596
+ function nt(e) {
2597
+ const t = [];
2598
+ return e.forEach((s, n) => {
2599
+ const o = /^(#{2,3})\s+(.+?)\s*$/.exec(s);
2600
+ o && o[1] && o[2] && t.push({ idx: n, level: o[1].length, name: Xs(o[1].length, o[2]) });
2601
+ }), t;
2602
+ }
2603
+ function W(e, t) {
2604
+ const s = e.split(`
2605
+ `), n = nt(s), o = n.find((i) => i.name === t);
2606
+ if (!o) return null;
2607
+ let r = s.length;
2608
+ for (const i of n)
2609
+ if (i.idx > o.idx && i.level <= o.level) {
2610
+ r = i.idx;
2611
+ break;
2612
+ }
2613
+ return s.slice(o.idx + 1, r).join(`
2614
+ `);
2615
+ }
2616
+ function Uo(e) {
2617
+ const t = e.split(`
2618
+ `), s = nt(t), n = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), r = [];
2619
+ for (let a = 0; a < s.length; a++) {
2620
+ const c = s[a];
2621
+ if (!c || c.name === null || e.includes(`<!--SECTION:${c.name}-->`)) continue;
2622
+ let l = t.length;
2623
+ for (let f = a + 1; f < s.length; f++) {
2624
+ const d = s[f];
2625
+ if (d && d.level <= c.level) {
2626
+ l = d.idx;
2627
+ break;
2628
+ }
2629
+ }
2630
+ n.set(c.idx, c.name), o.set(l, c.name), r.push(c.name);
2631
+ }
2632
+ if (r.length === 0) return { text: e, injected: [] };
2633
+ const i = [];
2634
+ for (let a = 0; a <= t.length; a++) {
2635
+ const c = o.get(a);
2636
+ c && i.push(`<!--/SECTION:${c}-->`);
2637
+ const l = n.get(a);
2638
+ l && i.push(`<!--SECTION:${l}-->`), a < t.length && i.push(t[a]);
2639
+ }
2640
+ return { text: i.join(`
2641
+ `), injected: r };
2642
+ }
2643
+ function Go(e, t) {
2644
+ const s = e.includes("<!--SECTION:META-->") || W(e, "META") !== null, n = e.includes("<!--SECTION:EXECUTION_LOG-->");
2645
+ if (!s || n) return { text: e, scaffolded: !1 };
2646
+ const o = [
2647
+ "",
2648
+ "## Execution Log",
2649
+ "<!--SECTION:EXECUTION_LOG-->",
2650
+ `- ${t} migrated from v1 — no rounds/phases recorded in v1 format`,
2651
+ "<!--/SECTION:EXECUTION_LOG-->"
2652
+ ].join(`
2653
+ `);
2654
+ return { text: `${e.endsWith(`
2655
+ `) ? e.slice(0, -1) : e}
2656
+ ${o}
2657
+ `, scaffolded: !0 };
2658
+ }
2659
+ const ke = /<[A-Za-z…][^>\s]*>/, Zs = /`[^`]*`/g;
2660
+ function Fo(e) {
2661
+ return e.includes("<!--SECTION:META-->") && e.includes("<!--SECTION:EXECUTION_LOG-->");
2662
+ }
2663
+ function Vo(e) {
2664
+ return W(e, "META") !== null && W(e, "EXECUTION_LOG") !== null;
2665
+ }
2666
+ function ot(e) {
2667
+ const t = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
2668
+ for (const o of e.split(`
2669
+ `)) {
2670
+ const r = o.trim(), i = /^<!--SECTION:([A-Z][A-Z0-9_]*)-->$/.exec(r), a = /^<!--\/SECTION:([A-Z][A-Z0-9_]*)-->$/.exec(r);
2671
+ i?.[1] && t.set(i[1], (t.get(i[1]) ?? 0) + 1), a?.[1] && s.set(a[1], (s.get(a[1]) ?? 0) + 1);
2672
+ }
2673
+ return [.../* @__PURE__ */ new Set([...t.keys(), ...s.keys()])].filter((o) => (t.get(o) ?? 0) !== (s.get(o) ?? 0));
2674
+ }
2675
+ function rt(e) {
2676
+ const t = [], s = [];
2677
+ for (const n of e.split(`
2678
+ `)) {
2679
+ const o = n.trim(), r = /^<!--SECTION:([A-Z][A-Z0-9_]*)-->$/.exec(o), i = /^<!--\/SECTION:([A-Z][A-Z0-9_]*)-->$/.exec(o);
2680
+ if (r?.[1]) {
2681
+ const a = s[s.length - 1];
2682
+ a && t.push(`${r[1]} opens while ${a} is still open — sections must be flat, not nested`), s.push(r[1]);
2683
+ } else if (i?.[1]) {
2684
+ const a = s[s.length - 1];
2685
+ if (a === i[1]) s.pop();
2686
+ else if (s.includes(i[1])) {
2687
+ for (t.push(
2688
+ `/${i[1]} closes while ${a} is the innermost open section — interleaved sections`
2689
+ ); s.length && s[s.length - 1] !== i[1]; ) s.pop();
2690
+ s.pop();
2691
+ }
2692
+ }
2693
+ }
2694
+ return t;
2695
+ }
2696
+ function zs(e) {
2697
+ const t = e.split(`
2698
+ `);
2699
+ let s = -1, n = -1;
2700
+ return t.forEach((o, r) => {
2701
+ /🛑|BLOCKED/.test(o) && (s = r), /✅|RESOLVED/.test(o) && (n = r);
2702
+ }), s !== -1 && s > n;
2703
+ }
2704
+ function jo(e, t) {
2705
+ const s = [], n = (l, f) => void s.push({ severity: "error", code: l, file: e, message: f }), o = (l, f) => void s.push({ severity: "warn", code: l, file: e, message: f });
2706
+ for (const l of ot(t))
2707
+ n("SDD_ANCHOR_UNBALANCED", `Section ${l}: open/close markers do not balance.`);
2708
+ for (const l of rt(t))
2709
+ n("SDD_SECTION_OVERLAP", `${l}. sdd-extract pulls one flat section — fix the marker order.`);
2710
+ const r = g(t, "META"), i = g(t, "EXECUTION_LOG");
2711
+ r.status !== "ok" && n("SDD_MISSING_META", "No usable META section."), i.status !== "ok" && n("SDD_MISSING_EXECUTION_LOG", "No usable EXECUTION_LOG section.");
2712
+ let a = !1;
2713
+ if (r.status === "ok") {
2714
+ const l = me(r.content);
2715
+ l.taskId || o("SDD_MISSING_TASK_ID", "Meta has no parseable Task-ID."), l.status || o("SDD_STATUS_UNPARSEABLE", "Meta Status is missing or not in `[x] STATE` form."), a = l.status?.includes("[x]") ?? !1;
2716
+ }
2717
+ if (i.status === "ok") {
2718
+ const l = i.content.split(`
2719
+ `);
2720
+ for (const f of l) {
2721
+ const d = f.replace(Zs, "");
2722
+ /\[x\]/.test(d) && ke.test(f) && n(
2723
+ "SDD_FABRICATED_DONE",
2724
+ `Checked [x] line with an unreplaced placeholder: "${f.trim()}"`
2725
+ );
2726
+ }
2727
+ zs(i.content) && (a ? n(
2728
+ "SDD_DONE_WITH_ACTIVE_BLOCKER",
2729
+ "Status is DONE but the Execution Log ends with an unresolved BLOCKED."
2730
+ ) : o(
2731
+ "SDD_BLOCKER_OPEN",
2732
+ "Execution Log ends with an unresolved 🛑 BLOCKED — no later ✅ RESOLVED. Resolve or explicitly reopen before the orchestrator relies on this ticket."
2733
+ ));
2734
+ }
2735
+ a && ke.test(t) && o(
2736
+ "SDD_DONE_WITH_PLACEHOLDERS",
2737
+ "Status is DONE but unreplaced <…> scaffold placeholders remain."
2738
+ );
2739
+ const c = g(t, "PHASES_OVERVIEW");
2740
+ if (c.status === "ok") {
2741
+ const l = Ks(c.content), f = new Set(l.map((u) => u.id));
2742
+ for (const u of l)
2743
+ for (const p of u.deps)
2744
+ f.has(p) || n("SDD_PHASE_DEP_UNRESOLVED", `Phase ${u.id} depends on unknown phase ${p}.`);
2745
+ J(l.flatMap((u) => u.deps.map((p) => ({ from: u.id, to: p })))) && n("SDD_PHASE_DAG_CYCLE", "Phase dependency graph has a cycle.");
2746
+ const d = /* @__PURE__ */ new Set();
2747
+ for (const u of t.matchAll(/<!--SECTION:PHASE_(P[0-9]+)-->/g))
2748
+ d.add(u[1]);
2749
+ for (const u of l)
2750
+ d.has(u.id) || n(
2751
+ "SDD_PHASE_SECTION_MISSING",
2752
+ `Phase ${u.id} in the overview has no PHASE_${u.id} section.`
2753
+ );
2754
+ for (const u of d)
2755
+ f.has(u) || n("SDD_PHASE_SECTION_ORPHAN", `PHASE_${u} section has no row in the Phases Overview.`);
2756
+ if (a)
2757
+ for (const u of l)
2758
+ u.status.includes("[x]") || n("SDD_DONE_PHASE_UNCHECKED", `Status is DONE but phase ${u.id} is not checked ([x]).`);
2759
+ }
2760
+ return s;
2761
+ }
2762
+ function J(e) {
2763
+ const t = /* @__PURE__ */ new Map();
2764
+ for (const o of e) {
2765
+ const r = t.get(o.from);
2766
+ r ? r.push(o.to) : t.set(o.from, [o.to]);
2767
+ }
2768
+ const s = /* @__PURE__ */ new Map(), n = (o) => {
2769
+ s.set(o, 1);
2770
+ for (const r of t.get(o) ?? []) {
2771
+ const i = s.get(r);
2772
+ if (i === 1 || i === void 0 && n(r)) return !0;
2773
+ }
2774
+ return s.set(o, 2), !1;
2775
+ };
2776
+ for (const o of t.keys())
2777
+ if (s.get(o) === void 0 && n(o)) return !0;
2778
+ return !1;
2779
+ }
2780
+ function Yo(e) {
2781
+ const { scopes: t, edges: s, specDirs: n } = e, o = "specs/README.md", r = [], i = (c, l) => void r.push({ severity: "error", code: c, file: o, message: l }), a = new Set(t.map((c) => c.name));
2782
+ J(s) && i("SDD_PORTAL_GRAPH_CYCLE", "Scope Graph has a dependency cycle.");
2783
+ for (const c of s)
2784
+ a.has(c.from) || i(
2785
+ "SDD_PORTAL_DANGLING_DEP",
2786
+ `Graph edge from a scope not in the table: ${c.from} --> ${c.to}`
2787
+ ), a.has(c.to) || i(
2788
+ "SDD_PORTAL_DANGLING_DEP",
2789
+ `Graph edge to a scope not in the table: ${c.from} --> ${c.to}`
2790
+ );
2791
+ for (const c of n)
2792
+ a.has(c) || i("SDD_PORTAL_ORPHAN_SPEC", `Spec dir has no row in the portal Scopes table: specs/${c}/`);
2793
+ for (const c of t)
2794
+ c.status === "done" && !n.includes(c.name) && i("SDD_PORTAL_SPEC_MISSING", `Scope marked done has no spec on disk: ${c.name}`);
2795
+ return r;
2796
+ }
2797
+ function Ho(e, t, s) {
2798
+ const n = g(t, "META"), o = n.status === "ok" ? me(n.content) : null;
2799
+ return {
2800
+ file: e,
2801
+ taskId: o?.taskId ?? null,
2802
+ status: o?.status ?? null,
2803
+ dependencies: o?.dependencies ?? [],
2804
+ flowVersion: s
2805
+ };
2806
+ }
2807
+ function qo(e, t, s) {
2808
+ const n = W(t, "META"), o = n !== null ? me(n) : null;
2809
+ return {
2810
+ file: e,
2811
+ taskId: o?.taskId ?? null,
2812
+ status: o?.status ?? null,
2813
+ dependencies: o?.dependencies ?? [],
2814
+ flowVersion: s
2815
+ };
2816
+ }
2817
+ function Wo(e) {
2818
+ return [
2819
+ {
2820
+ severity: "warn",
2821
+ code: "SDD_LEGACY_TICKET_UNANCHORED",
2822
+ file: e,
2823
+ message: "Legacy ticket format (plain headers, no <!--SECTION--> markers) — only Task-ID/Status are checked here. Run `gennady sdd-migrate anchors` to enable the full structural check."
2824
+ }
2825
+ ];
2826
+ }
2827
+ function Qs(e) {
2828
+ return e != null && /\bDONE\b/i.test(e);
2829
+ }
2830
+ function Ko(e) {
2831
+ const t = new Map(
2832
+ e.filter((n) => n.taskId).map((n) => [n.taskId, n.status])
2833
+ ), s = (n) => n.filter((o) => !/^(none|n\/a|[—-])\b/i.test(o.trim()));
2834
+ return e.filter(
2835
+ (n) => n.taskId != null && /\bTODO\b/i.test(n.status ?? "") && s(n.dependencies).every((o) => Qs(t.get(o)))
2836
+ );
2837
+ }
2838
+ function Xo(e) {
2839
+ const t = [], s = /* @__PURE__ */ new Map();
2840
+ for (const o of e) {
2841
+ if (!o.taskId) continue;
2842
+ const r = s.get(o.taskId);
2843
+ r ? r.push(o.file) : s.set(o.taskId, [o.file]);
2844
+ }
2845
+ for (const [o, r] of s)
2846
+ r.length > 1 && t.push({
2847
+ severity: "error",
2848
+ code: "SDD_TASK_ID_COLLISION",
2849
+ file: r[0],
2850
+ message: `Task-ID ${o} is used by ${r.length} tickets: ${r.join(", ")}.`
2851
+ });
2852
+ for (const o of e)
2853
+ for (const r of o.dependencies)
2854
+ s.has(r) || t.push({
2855
+ severity: "error",
2856
+ code: "SDD_DEP_UNRESOLVED",
2857
+ file: o.file,
2858
+ message: `Dependency ${r} resolves to no ticket in the tree.`
2859
+ });
2860
+ const n = e.filter((o) => o.taskId).flatMap((o) => o.dependencies.map((r) => ({ from: o.taskId, to: r })));
2861
+ return J(n) && t.push({
2862
+ severity: "error",
2863
+ code: "SDD_DAG_CYCLE",
2864
+ file: "(task graph)",
2865
+ message: "Task dependency graph has a cycle."
2866
+ }), t;
2867
+ }
2868
+ function Zo(e, t) {
2869
+ const s = [], n = (a) => a.replace(/`/g, "").replace(/\s+/g, " ").trim(), o = (a) => a === "v2" ? "error" : "warn", r = new Set(e.map((a) => a.taskId).filter((a) => a !== null)), i = /* @__PURE__ */ new Map();
2870
+ for (const a of t) {
2871
+ const c = i.get(a.taskId);
2872
+ c ? c.push(a) : i.set(a.taskId, [a]);
2873
+ }
2874
+ for (const a of e) {
2875
+ if (!a.taskId) continue;
2876
+ const c = i.get(a.taskId);
2877
+ if (!c) {
2878
+ s.push({
2879
+ severity: o(a.flowVersion),
2880
+ code: "SDD_TRACKER_MISSING_ROW",
2881
+ file: a.file,
2882
+ message: `Ticket ${a.taskId} has no row in any Tracker Index.`
2883
+ });
2884
+ continue;
2885
+ }
2886
+ if (a.status)
2887
+ for (const l of c)
2888
+ n(l.status) !== n(a.status) && s.push({
2889
+ severity: "error",
2890
+ code: "SDD_TRACKER_STATUS_DRIFT",
2891
+ file: l.file,
2892
+ message: `Tracker row for ${a.taskId} says "${n(l.status)}" but the ticket Status is "${n(a.status)}".`
2893
+ });
2894
+ }
2895
+ for (const a of t)
2896
+ r.has(a.taskId) || s.push({
2897
+ severity: o(a.flowVersion),
2898
+ code: "SDD_TRACKER_ORPHAN_ROW",
2899
+ file: a.file,
2900
+ message: `Tracker row ${a.taskId} points to no ticket on disk.`
2901
+ });
2902
+ return s;
2903
+ }
2904
+ const ce = Object.fromEntries(
2905
+ je.map((e) => [e, Ye(e)])
2906
+ ), it = Ye("module"), le = Array.from(
2907
+ new Set([...je, "module"].flatMap((e) => Ns(e)))
2908
+ ), ve = 120, we = 120, Pe = 6, Js = /[.!?]\s+[A-ZА-ЯЁ]/;
2909
+ function en(e) {
2910
+ return (e.match(/^```/gm) ?? []).length >= 2;
2911
+ }
2912
+ const tn = [
2913
+ { re: /аппрув[а-яё]*/giu, say: "подтверждение" },
2914
+ { re: /реифицир[а-яё]*/giu, say: "вынести в данные" },
2915
+ { re: /чек(ать|нуть|аем|ается)[а-яё]*/giu, say: "проверить" },
2916
+ { re: /(по)?фиксить|фиксим|фиксят/giu, say: "починить" },
2917
+ { re: /дроп(ать|нуть|аем|нем)[а-яё]*/giu, say: "удалить" },
2918
+ { re: /юза(ть|ем|ю|ется)[а-яё]*/giu, say: "использовать" },
2919
+ { re: /(за)?имплементи[а-яё]*/giu, say: "реализовать" },
2920
+ { re: /фанаут[а-яё]*/giu, say: "делает fan-out / рассылает" },
2921
+ { re: /зафейли?[а-яё]*/giu, say: "упасть / завершиться ошибкой" },
2922
+ { re: /засабмити?[а-яё]*/giu, say: "отправить" },
2923
+ { re: /линку(ет|ют|ем|я)[а-яё]*/giu, say: "связывает / сопоставляет" },
2924
+ { re: /м[её]рж[а-яё]*/giu, say: "объединяет" },
2925
+ { re: /(?<![а-яё])тул[аеуы](?![а-яё])/giu, say: "инструмент" },
2926
+ { re: /под\s+капотом/giu, say: "внутри / как устроено" },
2927
+ { re: /подня[а-яё]*\s+сервис[а-яё]*/giu, say: "запустить сервис" },
2928
+ { re: /на\s+проводе/giu, say: "в ответе / запросе сервера" },
2929
+ { re: /разв(о|е)д[а-яё]*\s+провод[а-яё]*/giu, say: "явно связать зависимости" }
2930
+ ], sn = [
2931
+ {
2932
+ re: /осуществля[а-яё]*/giu,
2933
+ say: "подставить подлежащее и обычный глагол, напр. «модуль делает X»"
2934
+ },
2935
+ { re: /посредством/giu, say: "через" },
2936
+ {
2937
+ re: /(?<![а-яё])производ(ится|ятся|илось)/giu,
2938
+ say: "подставить обычный глагол, напр. «модуль строит X»"
2939
+ },
2940
+ { re: /имеет\s+место\s+быть/giu, say: "есть / происходит" }
2941
+ ];
2942
+ function zo(e, t) {
2943
+ const s = [];
2944
+ for (const { re: n, say: o } of tn) {
2945
+ const r = [...t.matchAll(n)].map((i) => i[0]);
2946
+ r.length !== 0 && s.push({
2947
+ severity: "warn",
2948
+ code: "SDD_LANGUAGE_CALQUE",
2949
+ file: e,
2950
+ message: `«${r[0]}»${r.length > 1 ? ` (×${r.length})` : ""} — англицизм-калька; по-русски: ${o} (AX_OPERATOR_DIALOGUE_STYLE).`
2951
+ });
2952
+ }
2953
+ for (const { re: n, say: o } of sn) {
2954
+ const r = [...t.matchAll(n)].map((i) => i[0]);
2955
+ r.length !== 0 && s.push({
2956
+ severity: "warn",
2957
+ code: "SDD_LANGUAGE_CALQUE",
2958
+ file: e,
2959
+ message: `«${r[0]}»${r.length > 1 ? ` (×${r.length})` : ""} — канцелярит; по-русски: ${o} (AX_OPERATOR_DIALOGUE_STYLE).`
2960
+ });
2961
+ }
2962
+ return s;
2963
+ }
2964
+ const Le = 20, be = 750;
2965
+ function nn(e) {
2966
+ const t = e.split(`
2967
+ `).map((s) => s.trim()).filter((s) => s.startsWith("|") && !/^\|[\s:|-]+$/.test(s));
2968
+ return Math.max(0, t.length - 1);
2969
+ }
2970
+ function Qo(e, t, s = "v1") {
2971
+ const n = ot(t).map((a) => ({
2972
+ severity: "error",
2973
+ code: "SDD_ANCHOR_UNBALANCED",
2974
+ file: e,
2975
+ message: `Section ${a}: open/close markers do not balance.`
2976
+ }));
2977
+ for (const a of rt(t))
2978
+ n.push({
2979
+ severity: "error",
2980
+ code: "SDD_SECTION_OVERLAP",
2981
+ file: e,
2982
+ message: `${a}. sdd-extract pulls one flat section — fix the marker order.`
2983
+ });
2984
+ const o = /<!--SECTION:MODULE_VISION-->/.test(t), r = /<!--SECTION:SCOPE_TYPE-->/.test(t) && !o;
2985
+ if (r)
2986
+ for (const a of ["ENTITY_INVENTORY", "MODULE_CONTRACTS"])
2987
+ new RegExp(`<!--SECTION:${a}-->`).test(t) && n.push({
2988
+ severity: "warn",
2989
+ code: "SDD_SCOPE_BLOATED",
2990
+ file: e,
2991
+ message: `Scope spec carries module-level section ${a} — move that detail into a module spec; a scope stays a thin index of modules (AX_SCOPE_STAYS_THIN).`
2992
+ });
2993
+ if (o) {
2994
+ const a = g(t, "ENTITY_INVENTORY"), c = a.status === "ok" ? nn(a.content) : 0;
2995
+ c > Le ? n.push({
2996
+ severity: "warn",
2997
+ code: "SDD_MODULE_OVERSIZED",
2998
+ file: e,
2999
+ message: `Entity Inventory has ${c} entities (> ${Le}) — decompose into sub-modules (AX_HIERARCHICAL_SPECS).`
3000
+ }) : t.split(`
3001
+ `).length > be && n.push({
3002
+ severity: "warn",
3003
+ code: "SDD_MODULE_SPEC_VERBOSE",
3004
+ file: e,
3005
+ message: `Module spec is ${t.split(`
3006
+ `).length} lines (> ${be}) with a cohesive inventory — compress the spec (AX_HIERARCHICAL_SPECS).`
3007
+ });
3008
+ }
3009
+ const i = g(t, "SCOPE_TYPE");
3010
+ if (i.status === "ok" && !o) {
3011
+ const a = Object.keys(ce).find(
3012
+ (c) => new RegExp(`\\b${c}\\b`).test(i.content)
3013
+ );
3014
+ if (a) {
3015
+ const c = new Set(
3016
+ [...t.matchAll(/<!--SECTION:([A-Z_]+)-->/g)].map((l) => l[1])
3017
+ );
3018
+ for (const l of ce[a])
3019
+ c.has(l) || n.push({
3020
+ severity: "error",
3021
+ code: "SDD_SPEC_SECTION_MISSING",
3022
+ file: e,
3023
+ message: `${a} scope spec is missing required section ${l}.`
3024
+ });
3025
+ }
3026
+ }
3027
+ if (s === "v2") {
3028
+ const a = new Set(
3029
+ [...t.matchAll(/<!--SECTION:([A-Z_]+)-->/g)].map((c) => c[1])
3030
+ );
3031
+ if (o)
3032
+ for (const c of it)
3033
+ a.has(c) || n.push({
3034
+ severity: "error",
3035
+ code: "SDD_SPEC_SECTION_MISSING",
3036
+ file: e,
3037
+ message: `module spec is missing required section ${c}.`
3038
+ });
3039
+ if (r || o) {
3040
+ const c = g(t, "OVERVIEW");
3041
+ c.status !== "ok" ? n.push({
3042
+ severity: "error",
3043
+ code: "SDD_NO_DIAGRAM_BLOCK",
3044
+ file: e,
3045
+ message: "Spec has no Overview section — every spec opens with an Overview carrying at least one diagram (AX_SPEC_MANDATORY_DIAGRAM)."
3046
+ }) : en(c.content) || n.push({
3047
+ severity: "error",
3048
+ code: "SDD_DIAGRAM_BLOCK_EMPTY",
3049
+ file: e,
3050
+ message: "Overview section has no diagram — add at least one fenced mermaid or ASCII diagram (AX_SPEC_MANDATORY_DIAGRAM)."
3051
+ });
3052
+ }
3053
+ if (o || r)
3054
+ for (const c of le) {
3055
+ const l = g(t, c);
3056
+ l.status === "ok" && !/<details[\s>]/i.test(l.content) && n.push({
3057
+ severity: "error",
3058
+ code: "SDD_SECTION_NOT_FOLDED",
3059
+ file: e,
3060
+ message: `Section ${c} does not fold its detail under \`<details>\` — collapse the contract body so the summary stays readable (AX_SPEC_PROGRESSIVE_DISCLOSURE).`
3061
+ });
3062
+ }
3063
+ if (o || r)
3064
+ for (const c of a) {
3065
+ if (le.includes(c)) continue;
3066
+ const l = g(t, c);
3067
+ if (l.status !== "ok") continue;
3068
+ const f = l.content.split(`
3069
+ `).length;
3070
+ f > ve && n.push({
3071
+ severity: "error",
3072
+ code: "SDD_SECTION_TOO_LONG",
3073
+ file: e,
3074
+ message: `Section ${c} is ${f} lines (> ${ve}) — decompose (split into a module/sub-scope) or fold the reference detail into a foldable section (AX_SPEC_PROGRESSIVE_DISCLOSURE).`
3075
+ });
3076
+ }
3077
+ n.push(...on(e, t));
3078
+ }
3079
+ return n;
3080
+ }
3081
+ function Me(e) {
3082
+ return /^\|[\s:|-]+\|$/.test(e);
3083
+ }
3084
+ function xe(e) {
3085
+ return e.slice(1, -1).split("|").map((t) => t.trim()).filter((t) => t.length > 0);
3086
+ }
3087
+ function on(e, t) {
3088
+ const s = [], n = t.split(`
3089
+ `);
3090
+ let o = !1;
3091
+ for (let r = 0; r < n.length; r++) {
3092
+ const i = n[r].trim();
3093
+ if (i.startsWith("```")) {
3094
+ o = !o;
3095
+ continue;
3096
+ }
3097
+ if (o || !i.startsWith("|") || !i.endsWith("|") || Me(i)) continue;
3098
+ const a = (n[r + 1] ?? "").trim();
3099
+ if (Me(a)) {
3100
+ const c = xe(i).length;
3101
+ c > Pe && s.push({
3102
+ severity: "error",
3103
+ code: "SDD_TABLE_TOO_MANY_COLUMNS",
3104
+ file: e,
3105
+ message: `Table header has ${c} columns (> ${Pe}) — a table is an index; split it or move detail into a subsection (AX_SPEC_TABLE_IS_INDEX).`
3106
+ });
3107
+ }
3108
+ for (const c of xe(i)) {
3109
+ if (/<br/i.test(c)) {
3110
+ s.push({
3111
+ severity: "error",
3112
+ code: "SDD_TABLE_CELL_HAS_BR",
3113
+ file: e,
3114
+ message: `Table cell has a \`<br>\` line break — move the expanded content into a subsection below the table, not a multi-line cell (AX_SPEC_TABLE_IS_INDEX): "${c.slice(0, 60)}"`
3115
+ });
3116
+ continue;
3117
+ }
3118
+ c.length > we ? s.push({
3119
+ severity: "error",
3120
+ code: "SDD_TABLE_CELL_TOO_LONG",
3121
+ file: e,
3122
+ message: `Table cell is ${c.length} chars (> ${we}) — a cell is one short line; move the detail into a subsection below the table (AX_SPEC_TABLE_IS_INDEX): "${c.slice(0, 60)}..."`
3123
+ }) : Js.test(c) && s.push({
3124
+ severity: "error",
3125
+ code: "SDD_TABLE_CELL_MULTI_SENTENCE",
3126
+ file: e,
3127
+ message: `Table cell carries more than one sentence — a cell is one short line, not a paragraph; move the detail into a subsection below the table (AX_SPEC_TABLE_IS_INDEX): "${c.slice(0, 60)}..."`
3128
+ });
3129
+ }
3130
+ }
3131
+ return s;
3132
+ }
3133
+ function Jo(e) {
3134
+ const t = g(e, "INTER_MODULE_DEPENDENCIES");
3135
+ return t.status === "ok" ? js(t.content) : [];
3136
+ }
3137
+ function rn(e) {
3138
+ const t = /\*\*Depends on:\*\*\s*(.*)/i.exec(e);
3139
+ return t?.[1] ? [...t[1].matchAll(/[a-z][a-z0-9-]*\*?/gi)].map((s) => s[0]) : [];
3140
+ }
3141
+ function an(e, t) {
3142
+ return e.some((s) => s.endsWith("*") ? t.startsWith(s.slice(0, -1)) : s === t);
3143
+ }
3144
+ function er(e, t, s) {
3145
+ const n = g(t, "SCOPE_DEPENDENCIES");
3146
+ if (n.status !== "ok") return [];
3147
+ const o = /([^/\\]+)\.(?:spec|1-spec)\.md$/.exec(e)?.[1];
3148
+ if (!o) return [];
3149
+ const r = rn(n.content), i = [];
3150
+ for (const a of s)
3151
+ a.from === o && !an(r, a.to) && i.push({
3152
+ severity: "warn",
3153
+ code: "SDD_SCOPE_DEP_UNDECLARED",
3154
+ file: e,
3155
+ message: `Portal Scope Graph has \`${o} --> ${a.to}\` but the scope spec's Scope Dependencies does not list ${a.to} (AX_SCOPE_GRAPH_DISCIPLINE). Add it under "Depends on" (a name or a \`prefix-*\` wildcard), or fix the portal graph.`
3156
+ });
3157
+ return i;
3158
+ }
3159
+ function tr(e, t, s) {
3160
+ return J(s) ? [
3161
+ {
3162
+ severity: "error",
3163
+ code: "SDD_MODULE_DAG_CYCLE",
3164
+ file: t,
3165
+ message: `Scope ${e}: module dependency graph (## 9) has a cycle.`
3166
+ }
3167
+ ] : [];
3168
+ }
3169
+ function $e(e) {
3170
+ const t = /<!--SECTION:MODULE_VISION-->/.test(e), s = /<!--SECTION:SCOPE_TYPE-->/.test(e) && !t;
3171
+ return t ? "module" : s ? "scope" : "other";
3172
+ }
3173
+ function cn(e, t) {
3174
+ let s = w(w(e)), n = "";
3175
+ for (; s !== n; ) {
3176
+ const o = h(s, `${G(s)}.spec.md`);
3177
+ if (o !== e && t.has(o)) return o;
3178
+ n = s, s = w(s);
3179
+ }
3180
+ return null;
3181
+ }
3182
+ function ln(e, t, s) {
3183
+ for (const n of e.matchAll(/\]\(([^)`#]+\.spec\.md)(?:#[^)]*)?\)/g)) {
3184
+ const o = n[1];
3185
+ if (o && y(t, o) === y(s)) return !0;
3186
+ }
3187
+ return !1;
3188
+ }
3189
+ function sr(e) {
3190
+ const t = [], s = new Map(e.map((a) => [a.file, a])), n = new Set(e.map((a) => a.file)), o = e.filter((a) => $e(a.content) === "module"), r = /* @__PURE__ */ new Map();
3191
+ for (const a of o) {
3192
+ const c = cn(a.file, n);
3193
+ c && r.set(a.file, c);
3194
+ }
3195
+ for (const a of o) {
3196
+ const c = r.get(a.file);
3197
+ if (!c) continue;
3198
+ const l = s.get(c);
3199
+ l && (ln(l.content, w(c), a.file) || t.push({
3200
+ severity: a.flowVersion === "v2" ? "error" : "warn",
3201
+ code: "SDD_MODULE_NOT_IN_INDEX",
3202
+ file: c,
3203
+ message: `Module spec ${a.file} is not linked from its parent index ${c} — every module must appear in the parent's Module Map / links (AX_HIERARCHICAL_SPECS).`
3204
+ }));
3205
+ }
3206
+ const i = new Set(r.values());
3207
+ for (const a of i) {
3208
+ const c = s.get(a);
3209
+ if (!(!c || $e(c.content) !== "module"))
3210
+ for (const l of ["ENTITY_INVENTORY", "MODULE_CONTRACTS"])
3211
+ new RegExp(`<!--SECTION:${l}-->`).test(c.content) && t.push({
3212
+ severity: c.flowVersion === "v2" ? "error" : "warn",
3213
+ code: "SDD_PARENT_MODULE_NOT_INDEX",
3214
+ file: a,
3215
+ message: `Module spec has child module specs beneath it but still carries module-level section ${l} — a parent module must become a thin index over its children (AX_SCOPE_STAYS_THIN).`
3216
+ });
3217
+ }
3218
+ return t;
3219
+ }
3220
+ const dn = /^[ \t]*✚ /m;
3221
+ function nr(e, t) {
3222
+ const s = [], n = g(t, "CHANGE_MANIFEST"), o = n.status === "ok";
3223
+ return dn.test(t) && !o && s.push({
3224
+ severity: "error",
3225
+ code: "SDD_REVIEW_INCONSISTENT",
3226
+ file: e,
3227
+ message: "Found a ✚ change-mark but no CHANGE_MANIFEST — review-state is malformed (compress half-ran, or marks added without entering review-state). Add the manifest (CHANGE_MANIFEST_FORMAT) or strip the marks. AX_SPEC_LIFECYCLE."
3228
+ }), o && (/ТИП ИЗМЕНЕНИЯ/.test(n.content) || s.push({
3229
+ severity: "error",
3230
+ code: "SDD_REVIEW_INCONSISTENT",
3231
+ file: e,
3232
+ message: "CHANGE_MANIFEST is missing the «ТИП ИЗМЕНЕНИЯ» field — the manifest is incomplete and cannot be reviewed or compressed. Fill the required fields (CHANGE_MANIFEST_FORMAT). AX_SPEC_LIFECYCLE."
3233
+ }), s.push({
3234
+ severity: "warn",
3235
+ code: "SDD_REVIEW_STATE_STUCK",
3236
+ file: e,
3237
+ message: "Spec is in review-state (CHANGE_MANIFEST present). Finalize it: once external review approves («no comments»), run compress — remove the manifest + ✚/~ marks; if the change was abandoned, remove the manifest. A spec must not linger in review-state. AX_SPEC_LIFECYCLE."
3238
+ })), s;
3239
+ }
3240
+ let H = null;
3241
+ async function un() {
3242
+ if (H) return H;
3243
+ const { JSDOM: e } = await import("jsdom"), t = new e("<!DOCTYPE html><html><body></body></html>"), s = globalThis;
3244
+ s.window ??= t.window, s.document ??= t.window.document, s.navigator ??= t.window.navigator;
3245
+ const n = (await import("mermaid")).default;
3246
+ return n.initialize({ startOnLoad: !1 }), H = (o) => n.parse(o), H;
3247
+ }
3248
+ function fn(e) {
3249
+ const t = [], s = e.split(`
3250
+ `);
3251
+ let n = !1, o = [];
3252
+ for (const r of s) {
3253
+ const i = r.trim();
3254
+ if (!n && i.startsWith("```mermaid")) {
3255
+ n = !0, o = [];
3256
+ continue;
3257
+ }
3258
+ if (n && i === "```") {
3259
+ t.push(o.join(`
3260
+ `)), n = !1;
3261
+ continue;
3262
+ }
3263
+ n && o.push(r);
3264
+ }
3265
+ return t;
3266
+ }
3267
+ async function pn(e) {
3268
+ const t = await un();
3269
+ try {
3270
+ return await t(e), null;
3271
+ } catch (s) {
3272
+ return s instanceof Error ? s.message.split(`
3273
+ `)[0] ?? "invalid" : String(s);
3274
+ }
3275
+ }
3276
+ async function or(e, t) {
3277
+ const s = fn(t);
3278
+ if (s.length === 0) return [];
3279
+ const n = [];
3280
+ for (const o of s) {
3281
+ const r = await pn(o);
3282
+ r !== null && n.push({
3283
+ severity: "error",
3284
+ code: "SDD_DIAGRAM_INVALID",
3285
+ file: e,
3286
+ message: `mermaid diagram does not parse: ${r}`
3287
+ });
3288
+ }
3289
+ return n;
3290
+ }
3291
+ function at(e) {
3292
+ const t = e.match(/\*{0,2}Task-ID:\*{0,2}\s*`?([A-Za-z0-9][A-Za-z0-9_-]*)`?/), s = e.match(/\*{0,2}Status:\*{0,2}\s*(\[.\]\s*[A-Z_]+)/);
3293
+ return {
3294
+ taskId: t?.[1] ?? null,
3295
+ status: s?.[1] ?? null
3296
+ };
3297
+ }
3298
+ function ct(e) {
3299
+ return e.replace(/`/g, "").replace(/\[([^\]]+)\]\([^)]*\)/g, "$1").trim();
3300
+ }
3301
+ function V(e) {
3302
+ return e.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map((t) => t.trim());
3303
+ }
3304
+ function rr(e, t, s) {
3305
+ const n = e.split(`
3306
+ `), o = lt(n);
3307
+ if (!o) return { ok: !1, reason: "no_table" };
3308
+ const { headerIdx: r, idCol: i, statusCol: a } = o;
3309
+ for (let c = r + 1; c < n.length; c++) {
3310
+ const l = n[c];
3311
+ if (l === void 0 || !l.trimStart().startsWith("|")) break;
3312
+ const f = V(l);
3313
+ if (/^\|?\s*-+\s*\|/.test(l) || ct(f[i] ?? "") !== t) continue;
3314
+ const d = l.split("|"), u = a + 1;
3315
+ if (d[u] === void 0) return { ok: !1, reason: "no_table" };
3316
+ const p = d[u];
3317
+ return d[u] = ` ${s} `, d[u] === p ? { ok: !0, text: e, changed: !1 } : (n[c] = d.join("|"), { ok: !0, text: n.join(`
3318
+ `), changed: !0 });
3319
+ }
3320
+ return { ok: !1, reason: "task_not_found" };
3321
+ }
3322
+ function lt(e) {
3323
+ for (let t = 0; t < e.length; t++) {
3324
+ const s = e[t];
3325
+ if (s === void 0 || !s.trimStart().startsWith("|")) continue;
3326
+ const n = V(s).map((i) => i.toLowerCase()), o = n.indexOf("task-id"), r = n.indexOf("status");
3327
+ if (o !== -1 && r !== -1) return { headerIdx: t, idCol: o, statusCol: r };
3328
+ }
3329
+ return null;
3330
+ }
3331
+ function ir(e) {
3332
+ const t = e.split(`
3333
+ `), s = lt(t);
3334
+ if (!s) return [];
3335
+ const n = [];
3336
+ for (let o = s.headerIdx + 1; o < t.length; o++) {
3337
+ const r = t[o];
3338
+ if (r === void 0 || !r.trimStart().startsWith("|")) break;
3339
+ if (/^\|?\s*-+\s*\|/.test(r)) continue;
3340
+ const i = V(r), a = ct(i[s.idCol] ?? "");
3341
+ a && n.push({ taskId: a, status: (i[s.statusCol] ?? "").trim() });
3342
+ }
3343
+ return n;
3344
+ }
3345
+ function mn(e) {
3346
+ return /^\[x\]/i.test(e.trim());
3347
+ }
3348
+ function En(e) {
3349
+ for (let t = 0; t < e.length; t++) {
3350
+ const s = e[t];
3351
+ if (s === void 0 || !s.trimStart().startsWith("|")) continue;
3352
+ const n = V(s).map((a) => a.toLowerCase()), o = n.indexOf("index"), r = n.indexOf("tasks"), i = n.indexOf("done") !== -1 ? n.indexOf("done") : n.indexOf("progress");
3353
+ if (o !== -1 && r !== -1 && i !== -1)
3354
+ return { headerIdx: t, indexCol: o, tasksCol: r, doneCol: i };
3355
+ }
3356
+ return null;
3357
+ }
3358
+ function hn(e) {
3359
+ return e.match(/\[[^\]]*\]\(([^)]+)\)/)?.[1] ?? null;
3360
+ }
3361
+ function ar(e, t) {
3362
+ const s = e.split(`
3363
+ `), n = En(s);
3364
+ if (!n) return { text: e, updated: [] };
3365
+ const o = [];
3366
+ for (let r = n.headerIdx + 1; r < s.length; r++) {
3367
+ const i = s[r];
3368
+ if (i === void 0 || !i.trimStart().startsWith("|")) break;
3369
+ if (/^\|?\s*-+\s*\|/.test(i)) continue;
3370
+ const a = V(i), c = hn(a[n.indexCol] ?? "");
3371
+ if (!c) continue;
3372
+ const l = t(c);
3373
+ if (!l) continue;
3374
+ const f = l.filter((_) => mn(_.status)).length, d = l.length, u = i.split("|"), p = n.tasksCol + 1, m = n.doneCol + 1;
3375
+ if (u[p] === void 0 || u[m] === void 0) continue;
3376
+ const E = ` ${d} `, S = ` ${f}/${d} `;
3377
+ u[p] === E && u[m] === S || (u[p] = E, u[m] = S, s[r] = u.join("|"), o.push(c));
3378
+ }
3379
+ return { text: s.join(`
3380
+ `), updated: o };
3381
+ }
3382
+ function cr(e, t, s) {
3383
+ const n = y(w(y(e)), s);
3384
+ return x(y(t), n).split(b).join("/");
3385
+ }
3386
+ function lr(e) {
3387
+ const t = /<DependsOn>([\s\S]*?)<\/DependsOn>/.exec(e);
3388
+ return t?.[1] ? [...t[1].matchAll(/^\s*-\s+(\S+)/gm)].map((s) => s[1]) : [];
3389
+ }
3390
+ function dr(e, t, s, n) {
3391
+ if (s.length === 0) return [];
3392
+ const o = new Set(s), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), a = [...s];
3393
+ for (; a.length; ) {
3394
+ const c = a.pop();
3395
+ if (!r.has(c)) {
3396
+ r.add(c);
3397
+ for (const l of n.get(c) ?? [])
3398
+ o.has(l) || i.add(l), r.has(l) || a.push(l);
3399
+ }
3400
+ }
3401
+ return [...i].map((c) => ({
3402
+ severity: "error",
3403
+ code: "SDD_RULES_CASCADE_UNRESOLVED",
3404
+ file: e,
3405
+ message: `Phase ${t}: rule dependency "${c}" is required transitively but is not in the phase's Rules: list — the closure over <DependsOn> is incomplete.`
3406
+ }));
3407
+ }
3408
+ function Be(e) {
3409
+ const t = /@tasks:\s*(.+)/.exec(e);
3410
+ return t?.[1] ? t[1].split(",").map((s) => s.trim()).filter((s) => s.length > 0 && !/^n\/a$/i.test(s)) : [];
3411
+ }
3412
+ function ur(e, t, s) {
3413
+ if (s === null) return [];
3414
+ const n = Be(s), o = new Set(Be(t)), r = n.filter((i) => !o.has(i));
3415
+ return r.length === 0 ? [] : [
3416
+ {
3417
+ severity: "error",
3418
+ code: "SDD_TASKS_APPEND_ONLY_REGRESSION",
3419
+ file: e,
3420
+ message: `@tasks: header dropped previously-declared id(s): ${r.join(", ")} — the header is append-only, ids are never removed.`
3421
+ }
3422
+ ];
3423
+ }
3424
+ function Sn(e) {
3425
+ const t = [];
3426
+ let s = 0, n = 0;
3427
+ for (let o = 0; o < e.length; o++) {
3428
+ const r = e[o];
3429
+ r === "(" ? s++ : r === ")" ? s = Math.max(0, s - 1) : r === "," && s === 0 && (t.push(e.slice(n, o).trim()), n = o + 1);
3430
+ }
3431
+ return t.push(e.slice(n).trim()), t.filter((o) => o.length > 0);
3432
+ }
3433
+ function fr(e) {
3434
+ const t = /@consumers:\s*(.+)/.exec(e);
3435
+ return t?.[1] ? Sn(t[1]) : [];
3436
+ }
3437
+ function pr(e) {
3438
+ const t = e.trim(), s = t.replace(/\s*\([^)]*\)\s*$/, "").trim(), n = s.length === 0 || /\s/.test(s) || /\bexternal\b/i.test(t);
3439
+ return { raw: t, name: s, external: n };
3440
+ }
3441
+ function mr(e, t, s) {
3442
+ const n = [];
3443
+ for (const o of t)
3444
+ o.external || s.has(o.name) || n.push({
3445
+ severity: "warn",
3446
+ code: "SDD_CONSUMERS_UNRESOLVED",
3447
+ file: e,
3448
+ message: `@consumers: entry "${o.name}" was not found referenced elsewhere in the codebase (text search) — mark it external in the description if it lives outside this repo, or fix the name.`
3449
+ });
3450
+ return n;
3451
+ }
3452
+ function dt(e) {
3453
+ const t = /^-\s*Deferred Test Ownership:\s*(\S+)\s*(.*)$/.exec(e), s = t?.[1] ?? null, n = t ? t[2] ?? "" : e.replace(/^-\s*/, ""), o = /^(.+?)\s*→\s*`([^`]+)`\s*::\s*(.+?)\.?\s*$/.exec(n);
3454
+ if (!o) return null;
3455
+ const r = (o[1] ?? "").replace(/`\[[^\]]+\]`|\[[^\]]+\]/g, "").trim(), i = (o[2] ?? "").trim(), a = [...(o[3] ?? "").matchAll(/`([^`]+)`/g)].map((c) => c[1]);
3456
+ return !i || a.length === 0 ? null : { scenario: r, testFile: i, caseNames: a, deferred: s };
3457
+ }
3458
+ function Er(e) {
3459
+ const t = [];
3460
+ for (const s of e.split(`
3461
+ `)) {
3462
+ const n = s.trim();
3463
+ if (!n.startsWith("-")) continue;
3464
+ const o = dt(n);
3465
+ o && t.push(o);
3466
+ }
3467
+ return t;
3468
+ }
3469
+ function gn(e) {
3470
+ const t = [];
3471
+ for (const s of e.split(`
3472
+ `)) {
3473
+ const n = s.trim();
3474
+ n.startsWith("-") && (dt(n) || t.push(n));
3475
+ }
3476
+ return t;
3477
+ }
3478
+ function hr(e) {
3479
+ const t = [], s = /\b(?:it|test)(?:\.\w+)?\s*\(\s*(['"`])((?:\\.|(?!\1).)*)\1/g;
3480
+ for (const n of e.matchAll(s))
3481
+ n[2] !== void 0 && t.push(n[2]);
3482
+ return t;
3483
+ }
3484
+ function Sr(e, t) {
3485
+ const s = t.replace(/\\/g, "/"), n = `/${s}`;
3486
+ return e.filter((o) => o === s || o.endsWith(n));
3487
+ }
3488
+ function gr(e, t, s) {
3489
+ return s.length <= 1 ? [] : [
3490
+ {
3491
+ severity: "warn",
3492
+ code: "SDD_BDD_TESTFILE_AMBIGUOUS",
3493
+ file: e,
3494
+ message: `Declared test-file "${t}" matches ${s.length} files on disk (${s.join(", ")}) — ambiguous; use a longer path suffix to disambiguate.`
3495
+ }
3496
+ ];
3497
+ }
3498
+ function Ir(e, t, s, n = "v1", o = null) {
3499
+ const r = [], i = n === "v2" ? "error" : "warn";
3500
+ for (const a of t) {
3501
+ if (a.deferred !== null) {
3502
+ o !== null && a.deferred === o && r.push({
3503
+ severity: "error",
3504
+ code: "SDD_BDD_DEFERRED_TO_SELF",
3505
+ file: e,
3506
+ message: `Scenario "${a.scenario}" defers test ownership to this ticket's own Task-ID (${o}) — that hides missing coverage instead of delegating it to another ticket.`
3507
+ });
3508
+ continue;
3509
+ }
3510
+ const c = s.get(a.testFile) ?? [];
3511
+ for (const l of a.caseNames)
3512
+ c.includes(l) || r.push({
3513
+ severity: i,
3514
+ code: "SDD_BDD_SCENARIO_UNTESTED",
3515
+ file: e,
3516
+ message: `Scenario "${a.scenario}" claims case "${l}" in ${a.testFile}, but no it()/test() with that exact name was found there.`
3517
+ });
3518
+ }
3519
+ return r;
3520
+ }
3521
+ function Or(e, t) {
3522
+ return gn(t).map(
3523
+ (s) => ({
3524
+ severity: "warn",
3525
+ code: "SDD_BDD_COVERAGE_ROW_UNPARSED",
3526
+ file: e,
3527
+ message: `Test Scenario Coverage row could not be parsed — no "→ \\\`file\\\` :: \\\`case\\\`" and no valid "Deferred Test Ownership: <Task-ID>": "${s}"`
3528
+ })
3529
+ );
3530
+ }
3531
+ const Ee = ["PLANNED", "MAPPED", "APPROVED", "DONE"], de = ["keep", "rename", "merge", "split", "create", "drop"], K = "UNMAPPED", In = [
3532
+ { match: /^scope-type$/i, section: "SCOPE_TYPE" },
3533
+ { match: /^vision(\s*&\s*primary goal)?$/i, section: "VISION" },
3534
+ { match: /^module vision$/i, section: "MODULE_VISION" },
3535
+ { match: /^overview$/i, section: "OVERVIEW" },
3536
+ { match: /^project type$/i, section: "PROJECT_TYPE" },
3537
+ { match: /^(approved\s+)?golden (dx|ux)(\s+example)?(\s*\(.*\))?$/i, section: "GOLDEN_DX" },
3538
+ { match: /^scope dependencies$/i, section: "SCOPE_DEPENDENCIES" },
3539
+ { match: /^requirements(\s*&\s*constraints)?$/i, section: "REQUIREMENTS_AND_CONSTRAINTS" },
3540
+ { match: /^(high-level\s+)?architecture$/i, section: "ARCHITECTURE" },
3541
+ { match: /^module map(\s*\(.*\))?$/i, section: "MODULE_MAP" },
3542
+ { match: /^module decision log$/i, section: "MODULE_DECISION_LOG" },
3543
+ { match: /^decision log$/i, section: "DECISION_LOG" },
3544
+ { match: /^(prerequisites|bootstrap requirements)$/i, section: "BOOTSTRAP_REQUIREMENTS" },
3545
+ { match: /^handoff(\s+to\s+.*)?$/i, section: "HANDOFF" },
3546
+ { match: /^tool stack(\s*\(.*\))?$/i, section: "TOOL_STACK" },
3547
+ { match: /^developer workflow example$/i, section: "WORKFLOW_EXAMPLE" },
3548
+ { match: /^file structure$/i, section: "FILE_STRUCTURE" },
3549
+ { match: /^effective rules(\s*\(.*\))?$/i, section: "EFFECTIVE_RULES" },
3550
+ { match: /^verification commands$/i, section: "VERIFICATION_COMMANDS" },
3551
+ { match: /^interface declaration$/i, section: "INTERFACE_DECLARATION" },
3552
+ { match: /^versioning policy$/i, section: "VERSIONING_POLICY" },
3553
+ { match: /^compatibility matrix$/i, section: "COMPATIBILITY_MATRIX" },
3554
+ { match: /^public api surface$/i, section: "PUBLIC_API_SURFACE" },
3555
+ { match: /^module usage example$/i, section: "MODULE_USAGE_EXAMPLE" },
3556
+ { match: /^inter-module dependencies$/i, section: "INTER_MODULE_DEPENDENCIES" },
3557
+ { match: /^entity inventory(\s*\(.*\))?$/i, section: "ENTITY_INVENTORY" },
3558
+ { match: /^entity surfaces$/i, section: "ENTITY_SURFACES" },
3559
+ { match: /^module contracts(\s*\(.*\))?$/i, section: "MODULE_CONTRACTS" },
3560
+ { match: /^public options(\s*&\s*policies)?$/i, section: "PUBLIC_OPTIONS" }
3561
+ ];
3562
+ function On(e) {
3563
+ const t = e.replace(/^#{2,3}\s*/, "").replace(/^\d+(\.\d+)*\.?\s+/, "").trim();
3564
+ for (const s of In)
3565
+ if (s.match.test(t)) return s.section;
3566
+ return K;
3567
+ }
3568
+ const Tn = /* @__PURE__ */ new Set(["node_modules", ".git", "dist", "build", "out", "coverage"]);
3569
+ function ue(e, t, s) {
3570
+ let n;
3571
+ try {
3572
+ n = $(e, { withFileTypes: !0 });
3573
+ } catch {
3574
+ return;
3575
+ }
3576
+ for (const o of n) {
3577
+ if (o.name.startsWith(".") || Tn.has(o.name) || o.isSymbolicLink()) continue;
3578
+ const r = h(e, o.name);
3579
+ o.isDirectory() ? ue(r, t, s) : o.isFile() && t(o.name) && s.push(r);
3580
+ }
3581
+ }
3582
+ function _n(e) {
3583
+ const t = [];
3584
+ let s = !1;
3585
+ for (const n of e.split(`
3586
+ `)) {
3587
+ if (n.trimStart().startsWith("```")) {
3588
+ s = !s;
3589
+ continue;
3590
+ }
3591
+ !s && /^##\s/.test(n) && t.push(n.trim());
3592
+ }
3593
+ return t;
3594
+ }
3595
+ function Nn(e) {
3596
+ const t = /* @__PURE__ */ new Set();
3597
+ for (const s of e.matchAll(/<!--SECTION:([A-Z][A-Z0-9_]*)-->/g))
3598
+ s[1] && t.add(s[1]);
3599
+ return [...t];
3600
+ }
3601
+ function Cn(e) {
3602
+ const t = g(e, "SCOPE_TYPE");
3603
+ return t.status !== "ok" ? null : /\b(product|library|infrastructure|interface)\b/.exec(t.content)?.[1] ?? null;
3604
+ }
3605
+ function Dn(e, t) {
3606
+ let s = "";
3607
+ try {
3608
+ s = D(t, "utf-8");
3609
+ } catch {
3610
+ }
3611
+ const n = g(s, "META"), o = n.status === "ok" ? n.content : /##[^\n]*\bMeta\b[^\n]*\n([\s\S]*?)(?=\n## |$)/.exec(s)?.[1] ?? "", r = at(o), i = /\*{0,2}Purpose:\*{0,2}\s*([^\n]+)/.exec(o)?.[1]?.trim() ?? null, a = /\*{0,2}Scope:\*{0,2}\s*`?([\w./-]+)`?/.exec(o)?.[1] ?? null, c = /\*{0,2}Module:\*{0,2}\s*`?([\w./-]+)`?/.exec(o)?.[1] ?? null;
3612
+ return {
3613
+ ticket: {
3614
+ file: x(e, t),
3615
+ taskId: r.taskId,
3616
+ status: r.status,
3617
+ purpose: i
3618
+ },
3619
+ scope: a,
3620
+ module: c
3621
+ };
3622
+ }
3623
+ function he(e) {
3624
+ const t = h(e, "specs"), s = [];
3625
+ ue(t, (i) => i.endsWith(".spec.md") || i.endsWith(".1-spec.md"), s), s.sort();
3626
+ const n = [];
3627
+ for (const i of s) {
3628
+ const a = x(e, i), c = a.split(b), l = c[1];
3629
+ if (!l || c.length < 3) continue;
3630
+ const f = c.length >= 4 ? c[c.length - 2] ?? null : null, d = D(i, "utf-8"), u = f !== null, p = Cn(d), m = u ? ["MODULE_VISION", "OVERVIEW", ...it.filter((E) => E !== "MODULE_VISION")] : ["OVERVIEW", ...p ? ce[p] ?? [] : []];
3631
+ n.push({
3632
+ specFile: a,
3633
+ scope: l,
3634
+ module: f,
3635
+ scopeType: p,
3636
+ lines: d.split(`
3637
+ `).length,
3638
+ mermaidCount: (d.match(/^\s*```mermaid/gm) ?? []).length,
3639
+ anchors: Nn(d),
3640
+ headings: _n(d),
3641
+ tickets: [],
3642
+ targetSections: [...new Set(m)],
3643
+ foldSections: u ? [...le] : []
3644
+ });
3645
+ }
3646
+ const o = [];
3647
+ ue(h(e, "tasks"), (i) => /\.task-[0-9]+\.md$/.test(i), o), o.sort();
3648
+ const r = [];
3649
+ for (const i of o) {
3650
+ const a = x(e, i), c = a.split(b)[1] ?? "", { ticket: l, scope: f, module: d } = Dn(e, i), u = a.split(b).length >= 4 ? a.split(b)[2] : null, p = n.filter((I) => I.scope === c), m = d ? p.find((I) => I.module === d) : void 0, E = u ? p.find((I) => I.module === u) : void 0, S = f ? p.find((I) => I.module === f) : void 0, _ = p.find((I) => I.module === null), N = m ?? E ?? S ?? _;
3651
+ N ? N.tickets.push(l) : r.push(l);
3652
+ }
3653
+ return { units: n, orphanTickets: r };
3654
+ }
3655
+ function ee(e) {
3656
+ const t = w(e.specFile).split(b).slice(1).join(b), s = G(e.specFile).replace(/\.md$/, ".migration.md");
3657
+ return h("migration", t, s);
3658
+ }
3659
+ function ut(e) {
3660
+ const t = [
3661
+ "## Inventory",
3662
+ "",
3663
+ "<!-- Сгенерировано `sdd-migrate plan`. Не редактировать руками — `plan --verify` сверяет этот блок с реальностью и падает при расхождении. -->",
3664
+ "",
3665
+ `- spec: \`${e.specFile}\` · строк: ${e.lines} · scope-type: ${e.scopeType ? `\`${e.scopeType}\`` : "—"} · mermaid-блоков: ${e.mermaidCount} · якорей: ${e.anchors.length}`,
3666
+ `- обязательные целевые секции: ${e.targetSections.map((s) => `\`${s}\``).join(", ")}`
3667
+ ];
3668
+ e.foldSections.length > 0 && t.push(
3669
+ `- секции, чья детализация сворачивается в \`<details>\`: ${e.foldSections.map((s) => `\`${s}\``).join(", ")}`
3670
+ ), t.push("- заголовки (level 2):");
3671
+ for (const s of e.headings) t.push(` - \`${s}\``);
3672
+ e.headings.length === 0 && t.push(" - (нет)"), t.push("- тикеты:");
3673
+ for (const s of e.tickets)
3674
+ t.push(
3675
+ ` - \`${s.file}\` · ${s.taskId ? `\`${s.taskId}\`` : "—"} · ${s.status ?? "—"} · ${s.purpose ?? "—"}`
3676
+ );
3677
+ return e.tickets.length === 0 && t.push(" - (нет)"), t.join(`
3678
+ `);
3679
+ }
3680
+ function An(e) {
3681
+ const t = [
3682
+ "## Section Map",
3683
+ "",
3684
+ "<!-- Предзаполнено `sdd-migrate plan` по курируемым правилам (mapHeadingToSection). Агент правит",
3685
+ " только строки с целью UNMAPPED — остальные пересматривает лишь если правило ошиблось.",
3686
+ ` Действия: ${de.join(" | ")}. Каждая обязательная целевая секция должна появиться в колонке «Цель».`,
3687
+ " Полный целевой порядок секций — в format-файле структуры (ai/directives/sdd-v2/formats/*-spec-structure.xml). -->",
3688
+ "",
3689
+ "| Источник | Действие | Цель (SECTION) | Комментарий |",
3690
+ "|---|---|---|---|"
3691
+ ], s = /* @__PURE__ */ new Set();
3692
+ for (const n of e.headings) {
3693
+ const o = On(n);
3694
+ o === K ? t.push(`| \`${n}\` | ? | ${K} | не распознано правилом — решает агент |`) : (s.add(o), t.push(`| \`${n}\` | keep | ${o} | предзаполнено правилом |`));
3695
+ }
3696
+ for (const n of e.targetSections)
3697
+ s.has(n) || t.push(`| — | create | ${n} | если не покрыта строками выше — создать |`);
3698
+ return t.join(`
3699
+ `);
3700
+ }
3701
+ function yn(e) {
3702
+ const t = G(e.specFile).replace(/\.(1-spec|spec)\.md$/, ""), n = [
3703
+ "## Ticket Map",
3704
+ "",
3705
+ "<!-- Новый ID: `<ACR>-<slug>` — kebab-case, слаг из Meta.Purpose, уникален в рамках всего репо.",
3706
+ ` Назначение вычисляется из ID: \`${w(e.specFile)}/${t}.task.<новый-ID>.md\`. -->`,
3707
+ "",
3708
+ "| Файл | Task-ID | Новый ID | Назначение |",
3709
+ "|---|---|---|---|"
3710
+ ];
3711
+ for (const o of e.tickets) n.push(`| \`${o.file}\` | ${o.taskId ?? "—"} | ? | ? |`);
3712
+ return e.tickets.length === 0 && n.push("| (нет тикетов) | — | — | — |"), n.join(`
3713
+ `);
3714
+ }
3715
+ function Rn(e) {
3716
+ return [
3717
+ "## Diagram Plan",
3718
+ "",
3719
+ "<!-- Заполняет агент: какая диаграмма встанет в Overview (обязательная) и откуда её содержание",
3720
+ " (существующий mermaid-блок / новая — из какого текста строится). Дополнительные диаграммы",
3721
+ " (последовательности, потоки данных) — по решению агента, если они улучшают чтение. -->",
3722
+ "",
3723
+ `- существующих mermaid-блоков: ${e.mermaidCount}`,
3724
+ "- Overview-диаграмма: ?"
3725
+ ].join(`
3726
+ `);
3727
+ }
3728
+ function kn(e) {
3729
+ return [
3730
+ "## Steps",
3731
+ "",
3732
+ "<!-- Работа этого юнита. Механические шаги всего репо (anchors / ids / move) живут в migration/README.md",
3733
+ " и выполняются централизованно — здесь только то, что делается в рамках этой спеки. -->",
3734
+ "",
3735
+ "- [ ] S1 ✍️ Изучить исходник, заполнить Section Map / Ticket Map / Diagram Plan → **Status:** MAPPED",
3736
+ "- [ ] S2 ✅ `npx tsx cli/gennady.ts sdd-migrate plan --verify` — карты полны, расхождений с реальностью нет",
3737
+ "- [ ] S3 🛑 Подтверждение оператора → **Status:** APPROVED",
3738
+ "- [ ] S4 ✍️ Реструктуризация спеки по Section Map: целевой порядок секций из format-файла, заголовки без номеров, тяжёлые секции — в `<details>`, Overview с диаграммой по Diagram Plan",
3739
+ "- [ ] S5 ✍️ Текст — плоский технический русский (без калек и метафор; код/ID/токены — English)",
3740
+ `- [ ] S6 ✅ \`${`npx tsx cli/gennady.ts sdd-check --all specs/${e.scope}`}\` — строгий v2-гейт (структура, фолды, разбор mermaid, язык) → **Status:** DONE`,
3741
+ ""
3742
+ ].join(`
3743
+ `);
3744
+ }
3745
+ function Tr(e) {
3746
+ return [
3747
+ `# План миграции: ${e.specFile}`,
3748
+ "",
3749
+ `- **Status:** PLANNED <!-- ${Ee.join(" → ")} -->`,
3750
+ `- **Scope:** ${e.scope}${e.module ? ` | **Module:** ${e.module}` : ""}`,
3751
+ "",
3752
+ "<!--SECTION:INVENTORY-->",
3753
+ ut(e),
3754
+ "<!--/SECTION:INVENTORY-->",
3755
+ "",
3756
+ "<!--SECTION:SECTION_MAP-->",
3757
+ An(e),
3758
+ "<!--/SECTION:SECTION_MAP-->",
3759
+ "",
3760
+ "<!--SECTION:TICKET_MAP-->",
3761
+ yn(e),
3762
+ "<!--/SECTION:TICKET_MAP-->",
3763
+ "",
3764
+ "<!--SECTION:DIAGRAM_PLAN-->",
3765
+ Rn(e),
3766
+ "<!--/SECTION:DIAGRAM_PLAN-->",
3767
+ "",
3768
+ "<!--SECTION:STEPS-->",
3769
+ kn(e),
3770
+ "<!--/SECTION:STEPS-->",
3771
+ ""
3772
+ ].join(`
3773
+ `);
3774
+ }
3775
+ function _r(e) {
3776
+ const t = [
3777
+ "# Миграция v1 → v2 — план",
3778
+ "",
3779
+ "Слой сгенерирован `sdd-migrate plan`. Один файл плана — на одну спеку (её секции + её задачи).",
3780
+ "Статусы юнитов живут в самих unit-файлах; `sdd-migrate plan --verify` проверяет весь слой.",
3781
+ "",
3782
+ "## Порядок исполнения",
3783
+ "",
3784
+ "- [ ] G1 🤖 `sdd-migrate anchors --all . --write` — якоря во все v1-тикеты (идемпотентно)",
3785
+ "- [ ] G2 ✍️ Заполнить unit-файлы (Section Map / Ticket Map / Diagram Plan) — раздаётся параллельно, по одному юниту на агента",
3786
+ "- [ ] G3 ✅ `sdd-migrate plan --verify` — весь слой полон, слаги без коллизий, расхождений нет",
3787
+ "- [ ] G4 🛑 Подтверждение оператора по всему плану",
3788
+ "- [ ] G5 🤖 `sdd-migrate ids --map migration/ids.tsv --write` — карта собирается из всех Ticket Map; замена по словогранице",
3789
+ "- [ ] G6 🤖 `sdd-migrate move --scope <scope> --write` — по одному scope: переезд тикетов + индексы `*.3-tasks.md`; пустой `tasks/<scope>/` удаляется → строгие v2-проверки включаются на этом scope",
3790
+ "- [ ] G7 ✍️ Шаги S4–S6 каждого юнита — раздаётся параллельно (юниты не пересекаются по файлам)",
3791
+ "- [ ] G8 ✅ Финальный гейт: `sdd-state` → `FLOW_VERSION=v2` · `sdd-check --all .` чист · ноль старых Task-ID",
3792
+ "",
3793
+ "## Юниты",
3794
+ "",
3795
+ "| План | Спека | Тикетов |",
3796
+ "|---|---|---|"
3797
+ ];
3798
+ for (const s of e.units)
3799
+ t.push(`| \`${ee(s)}\` | \`${s.specFile}\` | ${s.tickets.length} |`);
3800
+ if (e.orphanTickets.length > 0) {
3801
+ t.push("", "## ⚠ Тикеты без юнита", ""), t.push("Их scope не имеет спеки — решить с оператором до старта:", "");
3802
+ for (const s of e.orphanTickets) t.push(`- \`${s.file}\` (${s.taskId ?? "—"})`);
3803
+ }
3804
+ return t.push(""), t.join(`
3805
+ `);
3806
+ }
3807
+ function vn(e) {
3808
+ const s = /\*\*Status:\*\*\s*([A-Z]+)/.exec(e)?.[1];
3809
+ return s && Ee.includes(s) ? s : null;
3810
+ }
3811
+ function wn(e) {
3812
+ return e.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map((t) => t.trim());
3813
+ }
3814
+ function X(e) {
3815
+ const t = [];
3816
+ let s = !1;
3817
+ for (const n of e.split(`
3818
+ `))
3819
+ if (n.trimStart().startsWith("|")) {
3820
+ if (!s) {
3821
+ s = !0;
3822
+ continue;
3823
+ }
3824
+ /^\|?\s*-+\s*\|/.test(n) || t.push(wn(n));
3825
+ }
3826
+ return t;
3827
+ }
3828
+ function C(e) {
3829
+ return e.replace(/^`|`$/g, "").trim();
3830
+ }
3831
+ const ft = /^[A-Z][A-Z0-9]*(-[a-z0-9]+)+$/;
3832
+ function Ue(e) {
3833
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3834
+ }
3835
+ function Pn(e, t, s) {
3836
+ const n = [], o = (d, u) => {
3837
+ n.push({ severity: "error", code: d, file: e, message: u });
3838
+ }, r = vn(t);
3839
+ if (r === null)
3840
+ return o(
3841
+ "MIG_STATUS_INVALID",
3842
+ `Строка **Status:** отсутствует или несёт неизвестный токен — допустимо: ${Ee.join(" / ")}.`
3843
+ ), n;
3844
+ const i = r !== "PLANNED", a = g(t, "INVENTORY");
3845
+ a.status !== "ok" ? o("MIG_INVENTORY_MISSING", "Секция INVENTORY отсутствует или разбалансирована.") : a.content.trim() !== ut(s).trim() && o(
3846
+ "MIG_INVENTORY_DRIFT",
3847
+ "Inventory разошёлся с реальностью (спека или тикеты изменились после генерации плана) — перегенерируй юнит: sdd-migrate plan --all --write."
3848
+ );
3849
+ const c = g(t, "SECTION_MAP");
3850
+ if (c.status !== "ok")
3851
+ o("MIG_SECTION_MAP_MISSING", "Секция SECTION_MAP отсутствует или разбалансирована.");
3852
+ else {
3853
+ const d = X(c.content), p = d.filter((m) => C(m[0] ?? "") !== "—").map((m) => C(m[0] ?? ""));
3854
+ for (const m of s.headings) {
3855
+ const E = p.filter((S) => S === m).length;
3856
+ E === 0 && o("MIG_SECTION_UNMAPPED", `Заголовок из Inventory без строки в Section Map: \`${m}\`.`), E > 1 && o(
3857
+ "MIG_SECTION_DUPLICATED",
3858
+ `Заголовок отображён ${E} раз(а): \`${m}\` — нужна ровно одна строка.`
3859
+ );
3860
+ }
3861
+ for (const m of p)
3862
+ s.headings.includes(m) || o(
3863
+ "MIG_SECTION_UNKNOWN",
3864
+ `Строка Section Map ссылается на несуществующий заголовок: \`${m}\`.`
3865
+ );
3866
+ for (const m of d)
3867
+ C(m[2] ?? "") === K && o(
3868
+ "MIG_SECTION_UNMAPPED_TARGET",
3869
+ `Заголовок «${C(m[0] ?? "")}» остался нераспознанным (UNMAPPED) — реши действие и цель вручную.`
3870
+ );
3871
+ for (const m of d) {
3872
+ const E = (m[1] ?? "").trim();
3873
+ de.includes(E) || !i && E === "?" || o(
3874
+ "MIG_BAD_ACTION",
3875
+ `Недопустимое действие «${E}» — словарь: ${de.join(" | ")}${i ? "" : " (или ? до заполнения)"}.`
3876
+ ), i && (m[2] ?? "").trim() === "?" && o(
3877
+ "MIG_TARGET_UNSET",
3878
+ `Цель не заполнена для строки «${C(m[0] ?? "")}» при Status ≥ MAPPED.`
3879
+ );
3880
+ }
3881
+ if (i) {
3882
+ const m = d.map((E) => (E[2] ?? "").trim());
3883
+ for (const E of s.targetSections)
3884
+ m.includes(E) || o(
3885
+ "MIG_TARGET_MISSING",
3886
+ `Обязательная целевая секция не производится ни одной строкой: \`${E}\`.`
3887
+ );
3888
+ }
3889
+ }
3890
+ const l = g(t, "TICKET_MAP");
3891
+ if (l.status !== "ok")
3892
+ o("MIG_TICKET_MAP_MISSING", "Секция TICKET_MAP отсутствует или разбалансирована.");
3893
+ else {
3894
+ const d = X(l.content).filter((p) => C(p[0] ?? "") !== "(нет тикетов)"), u = d.map((p) => C(p[0] ?? ""));
3895
+ for (const p of s.tickets)
3896
+ u.includes(p.file) || o("MIG_TICKET_UNMAPPED", `Тикет из Inventory без строки в Ticket Map: \`${p.file}\`.`);
3897
+ for (const p of d) {
3898
+ const m = C(p[0] ?? "");
3899
+ if (!s.tickets.find((I) => I.file === m)) {
3900
+ o(
3901
+ "MIG_TICKET_UNKNOWN",
3902
+ `Строка Ticket Map ссылается на несуществующий тикет: \`${m}\`.`
3903
+ );
3904
+ continue;
3905
+ }
3906
+ const S = C(p[1] ?? "");
3907
+ (S === "" || S === "—") && o(
3908
+ "MIG_TICKET_ID_UNREADABLE",
3909
+ `Старый Task-ID не прочитан из тикета \`${m}\` (parseMeta вернул null — проверь формат строки Task-ID в Meta) — заменять нечего, sdd-migrate ids промолчит.`
3910
+ );
3911
+ const _ = C(p[2] ?? ""), N = C(p[3] ?? "");
3912
+ i && (ft.test(_) ? new RegExp(
3913
+ `^specs/${Ue(s.scope)}/.*\\.task\\.${Ue(_)}\\.md$`
3914
+ ).test(N.split(b).join("/")) || o(
3915
+ "MIG_BAD_DESTINATION",
3916
+ `Назначение «${N}» не подходит форме \`specs/${s.scope}/**/*.task.${_}.md\` — тикет \`${m}\`.`
3917
+ ) : o(
3918
+ "MIG_BAD_SLUG",
3919
+ `Новый ID «${_}» не соответствует грамматике \`<ACR>-<slug>\` (ACR — верхний регистр, slug — kebab-case, ≥ 2 слова) — тикет \`${m}\`.`
3920
+ ));
3921
+ }
3922
+ }
3923
+ const f = g(t, "DIAGRAM_PLAN");
3924
+ return f.status !== "ok" ? o("MIG_DIAGRAM_PLAN_MISSING", "Секция DIAGRAM_PLAN отсутствует или разбалансирована.") : i && /Overview-диаграмма:\s*\?/.test(f.content) && o(
3925
+ "MIG_DIAGRAM_PLAN_EMPTY",
3926
+ "Diagram Plan не заполнен (Overview-диаграмма: ?) при Status ≥ MAPPED."
3927
+ ), n;
3928
+ }
3929
+ function Nr(e) {
3930
+ const t = [], s = he(e), n = /* @__PURE__ */ new Map();
3931
+ for (const o of s.units) {
3932
+ const r = ee(o), i = h(e, r);
3933
+ if (!R(i)) {
3934
+ t.push({
3935
+ severity: "error",
3936
+ code: "MIG_UNIT_FILE_MISSING",
3937
+ file: r,
3938
+ message: `Нет файла плана для спеки \`${o.specFile}\` — сгенерируй: sdd-migrate plan --all --write.`
3939
+ });
3940
+ continue;
3941
+ }
3942
+ const a = D(i, "utf-8");
3943
+ t.push(...Pn(r, a, o));
3944
+ const c = g(a, "TICKET_MAP");
3945
+ if (c.status === "ok")
3946
+ for (const l of X(c.content)) {
3947
+ const f = C(l[2] ?? "");
3948
+ if (!ft.test(f)) continue;
3949
+ const d = n.get(f);
3950
+ d && d !== r ? t.push({
3951
+ severity: "error",
3952
+ code: "MIG_SLUG_COLLISION",
3953
+ file: r,
3954
+ message: `Новый ID «${f}» уже занят в \`${d}\` — слаг уникален в рамках репо.`
3955
+ }) : n.set(f, r);
3956
+ }
3957
+ }
3958
+ for (const o of s.orphanTickets)
3959
+ t.push({
3960
+ severity: "error",
3961
+ code: "MIG_TICKET_ORPHAN",
3962
+ file: o.file,
3963
+ message: "Тикет без юнита: его scope не имеет спеки — решить с оператором до миграции."
3964
+ });
3965
+ return t;
3966
+ }
3967
+ const pt = ["specs", "tasks", "cli", "shared", "services", "ai", "e2e"], Ln = /* @__PURE__ */ new Set([
3968
+ ".md",
3969
+ ".ts",
3970
+ ".tsx",
3971
+ ".js",
3972
+ ".jsx",
3973
+ ".mjs",
3974
+ ".cjs",
3975
+ ".json",
3976
+ ".xml",
3977
+ ".yml",
3978
+ ".yaml",
3979
+ ".sh",
3980
+ ".hbs",
3981
+ ".txt"
3982
+ ]), bn = /* @__PURE__ */ new Set(["node_modules", ".git", "dist", "build", "out", "coverage"]), Z = /^[A-Za-z][A-Za-z0-9_-]*$/;
3983
+ function Cr(e) {
3984
+ const t = [], s = [], n = /* @__PURE__ */ new Set(), o = /* @__PURE__ */ new Set();
3985
+ e.split(`
3986
+ `).forEach((r, i) => {
3987
+ const a = r.trim();
3988
+ if (a === "" || a.startsWith("#")) return;
3989
+ const c = r.split(" ").map((d) => d.trim()), [l, f] = c;
3990
+ if (c.length !== 2 || !l || !f) {
3991
+ t.push(`строка ${i + 1}: ожидаю ровно две TAB-колонки \`<old>\\t<new>\``);
3992
+ return;
3993
+ }
3994
+ Z.test(l) || t.push(`строка ${i + 1}: old «${l}» вне грамматики ID`), Z.test(f) || t.push(`строка ${i + 1}: new «${f}» вне грамматики ID`), l === f && t.push(`строка ${i + 1}: old и new совпадают («${l}»)`), n.has(l) && t.push(`строка ${i + 1}: old «${l}» встречается повторно`), o.has(f) && t.push(`строка ${i + 1}: new «${f}» встречается повторно`), n.add(l), o.add(f), s.push({ old: l, next: f });
3995
+ });
3996
+ for (const r of s)
3997
+ n.has(r.next) && t.push(
3998
+ `цепочка: new «${r.next}» одновременно чей-то old — переименования нельзя упорядочить безопасно`
3999
+ );
4000
+ return t.length > 0 ? { ok: !1, errors: t } : { ok: !0, map: s };
4001
+ }
4002
+ function ne(e) {
4003
+ return (e ?? "").replace(/`/g, "").trim();
4004
+ }
4005
+ function Dr(e) {
4006
+ const t = he(e), s = [], n = /* @__PURE__ */ new Set(), o = [];
4007
+ for (const r of t.units) {
4008
+ const i = ee(r);
4009
+ let a;
4010
+ try {
4011
+ a = D(h(e, i), "utf-8");
4012
+ } catch {
4013
+ continue;
4014
+ }
4015
+ const c = g(a, "TICKET_MAP");
4016
+ if (c.status === "ok")
4017
+ for (const l of X(c.content)) {
4018
+ const f = ne(l[0]);
4019
+ if (f === "(нет тикетов)") continue;
4020
+ const d = ne(l[1]), u = ne(l[2]);
4021
+ if (d === "?" || u === "?") continue;
4022
+ if (!Z.test(d) || !Z.test(u)) {
4023
+ o.push(
4024
+ `${i}: строка Ticket Map тикета \`${f}\` невалидна — old=«${d}» new=«${u}» вне грамматики ID (не «?», значит не заглушка).`
4025
+ );
4026
+ continue;
4027
+ }
4028
+ const p = `${d} ${u}`;
4029
+ n.has(p) || (n.add(p), s.push(p));
4030
+ }
4031
+ }
4032
+ return o.length > 0 ? { ok: !1, errors: o } : { ok: !0, tsv: s.sort().join(`
4033
+ `) + (s.length > 0 ? `
4034
+ ` : "") };
4035
+ }
4036
+ function mt(e) {
4037
+ return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4038
+ }
4039
+ function Et(e, t) {
4040
+ const s = [], n = (o) => {
4041
+ let r;
4042
+ try {
4043
+ r = $(o, { withFileTypes: !0 });
4044
+ } catch {
4045
+ return;
4046
+ }
4047
+ for (const i of r) {
4048
+ if (i.name.startsWith(".") || bn.has(i.name) || i.isSymbolicLink()) continue;
4049
+ const a = h(o, i.name);
4050
+ i.isDirectory() ? n(a) : i.isFile() && Ln.has(_t(i.name)) && s.push(a);
4051
+ }
4052
+ };
4053
+ for (const o of t) n(h(e, o));
4054
+ return s.sort();
4055
+ }
4056
+ function Ar(e, t, s, n = pt) {
4057
+ const o = [], r = t.map((i) => ({
4058
+ re: new RegExp(`\\b${mt(i.old)}\\b`, "g"),
4059
+ next: i.next
4060
+ }));
4061
+ for (const i of Et(e, n)) {
4062
+ let a;
4063
+ try {
4064
+ a = D(i, "utf-8");
4065
+ } catch {
4066
+ continue;
4067
+ }
4068
+ let c = a, l = 0;
4069
+ for (const { re: f, next: d } of r)
4070
+ c = c.replace(f, () => (l++, d));
4071
+ l > 0 && (s && q(i, c, "utf-8"), o.push({ file: x(e, i), count: l }));
4072
+ }
4073
+ return o;
4074
+ }
4075
+ function yr(e, t, s = pt) {
4076
+ const n = [], o = t.map((r) => ({ re: new RegExp(`\\b${mt(r.old)}\\b`), id: r.old }));
4077
+ for (const r of Et(e, s)) {
4078
+ let i;
4079
+ try {
4080
+ i = D(r, "utf-8");
4081
+ } catch {
4082
+ continue;
4083
+ }
4084
+ for (const { re: a, id: c } of o)
4085
+ a.test(i) && n.push({ file: x(e, r), id: c });
4086
+ }
4087
+ return n;
4088
+ }
4089
+ function Mn(e) {
4090
+ const t = /\*\*Dependencies:\*\*\s*([^\n]+)/.exec(e);
4091
+ return !t || !t[1] || /^\s*(none|—|-)\s*$/i.test(t[1]) ? [] : [...t[1].replace(/\([^)]*\)/g, " ").matchAll(/\b([A-Za-z][A-Za-z0-9]*(?:-[A-Za-z0-9]+)+)\b/g)].map(
4092
+ (n) => n[1]
4093
+ );
4094
+ }
4095
+ function xn(e) {
4096
+ const t = /^#\s+Task:\s*([^\n]+)/m.exec(e);
4097
+ if (!t || !t[1]) return "—";
4098
+ const s = t[1].trim(), n = s.split("—");
4099
+ return (n.length > 1 ? n.slice(1).join("—") : s).trim() || "—";
4100
+ }
4101
+ function $n(e, t) {
4102
+ const s = [], o = he(e).units.filter((a) => a.scope === t);
4103
+ if (o.length === 0)
4104
+ return { ok: !1, errors: [`scope «${t}» не найден среди юнитов миграции`] };
4105
+ const r = [], i = [];
4106
+ for (const a of o) {
4107
+ const c = ee(a), l = h(e, c);
4108
+ if (!R(l)) {
4109
+ a.tickets.length > 0 && s.push(
4110
+ `нет файла плана ${c} — сгенерируй слой: sdd-migrate plan --all --write`
4111
+ ), i.push({ unit: a, tickets: [] });
4112
+ continue;
4113
+ }
4114
+ const f = g(D(l, "utf-8"), "TICKET_MAP"), d = /* @__PURE__ */ new Map();
4115
+ if (f.status === "ok")
4116
+ for (const p of f.content.split(`
4117
+ `)) {
4118
+ if (!p.trimStart().startsWith("|")) continue;
4119
+ const m = p.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map((S) => S.replace(/`/g, "").trim()), E = m[0] ?? "";
4120
+ (E.startsWith("tasks" + b) || E.startsWith("tasks/")) && d.set(E, { newId: m[2] ?? "?", dest: m[3] ?? "?" });
4121
+ }
4122
+ const u = [];
4123
+ for (const p of a.tickets) {
4124
+ const m = d.get(p.file);
4125
+ if (!m || m.newId === "?" || m.dest === "?") {
4126
+ s.push(`тикет ${p.file}: Ticket Map не заполнен (новый ID/назначение) в ${c}`);
4127
+ continue;
4128
+ }
4129
+ const E = h(e, p.file);
4130
+ if (!R(E)) {
4131
+ s.push(
4132
+ `тикет ${p.file} отсутствует на диске (план разошёлся — sdd-migrate plan --verify)`
4133
+ );
4134
+ continue;
4135
+ }
4136
+ r.push({ from: p.file, to: m.dest, newId: m.newId });
4137
+ const S = D(E, "utf-8"), _ = g(S, "META"), N = _.status === "ok" ? _.content : S, I = at(N);
4138
+ u.push({
4139
+ newId: m.newId,
4140
+ title: xn(S),
4141
+ status: I.status ?? "[ ] TODO",
4142
+ deps: Mn(N),
4143
+ destDir: w(m.dest)
4144
+ });
4145
+ }
4146
+ i.push({ unit: a, tickets: u });
4147
+ }
4148
+ return s.length > 0 ? { ok: !1, errors: s } : { ok: !0, moves: r, units: i };
4149
+ }
4150
+ function Bn(e, t) {
4151
+ const s = new Set(t.map((r) => r.newId)), n = [
4152
+ `# ${e} — Tasks`,
4153
+ "",
4154
+ "## Tracker Index",
4155
+ "| Task-ID | Title | Dependencies | Status | Reopens |",
4156
+ "|---------|-------|--------------|--------|---------|"
4157
+ ];
4158
+ for (const r of t)
4159
+ n.push(
4160
+ `| ${r.newId} | ${r.title} | ${r.deps.length > 0 ? r.deps.join(", ") : "—"} | ${r.status} | — |`
4161
+ );
4162
+ n.push("", "## Slug Registry"), n.push(
4163
+ "<!-- один ID на строку; уникальность держится этим списком — одинаковый ID в двух ветках сталкивается здесь при merge. Только добавление. -->"
4164
+ );
4165
+ for (const r of t) n.push(`- ${r.newId}`);
4166
+ n.push("", "## Intra-Module DAG", "```mermaid", "graph TD");
4167
+ let o = 0;
4168
+ for (const r of t)
4169
+ for (const i of r.deps)
4170
+ s.has(i) && (n.push(
4171
+ ` ${r.newId.replace(/[^A-Za-z0-9]/g, "_")}[${r.newId}] --> ${i.replace(/[^A-Za-z0-9]/g, "_")}[${i}]`
4172
+ ), o++);
4173
+ return o === 0 && n.push(" %% зависимостей внутри модуля нет"), n.push(
4174
+ "```",
4175
+ "<!-- ребро A → B = «A зависит от B». Кросс-модульные рёбра живут уровнем выше. -->"
4176
+ ), n.push(
4177
+ "",
4178
+ "## Decision Log (module-task level)",
4179
+ "<!-- решения декомпозиции/планирования; локальные решения исполнения — в Decision Log самих тикетов. -->"
4180
+ ), n.push(
4181
+ "",
4182
+ "## Conventions",
4183
+ "Проектные конвенции объявлены в `specs/3-tasks.md` и наследуются — здесь не повторяются.",
4184
+ ""
4185
+ ), n.join(`
4186
+ `);
4187
+ }
4188
+ function Un(e, t) {
4189
+ const s = h("specs", e), n = (c) => c === s ? e : G(c), o = /* @__PURE__ */ new Map(), r = [];
4190
+ for (const c of t)
4191
+ for (const l of c.tickets)
4192
+ o.set(l.newId, n(l.destDir)), r.push(l);
4193
+ const i = [
4194
+ `# Tasks: ${e}`,
4195
+ "",
4196
+ "## Scope Spec",
4197
+ `- [Scope spec](./${e}.spec.md)`,
4198
+ "",
4199
+ "## Cascade Table",
4200
+ "<!-- ЗАПОЛНЯЕТ АГЕНТ: действующие правила scope из Scope Graph (транзитивное замыкание depends-on). -->",
4201
+ "",
4202
+ "## Inter-Module DAG",
4203
+ "```mermaid",
4204
+ "graph TD"
4205
+ ], a = /* @__PURE__ */ new Set();
4206
+ for (const c of r) {
4207
+ const l = n(c.destDir);
4208
+ for (const f of c.deps) {
4209
+ const d = o.get(f);
4210
+ if (d && d !== l) {
4211
+ const u = `${l}-->${d}`;
4212
+ a.has(u) || (a.add(u), i.push(
4213
+ ` ${l.replace(/[^A-Za-z0-9]/g, "_")}[${l}] --> ${d.replace(/[^A-Za-z0-9]/g, "_")}[${d}]`
4214
+ ));
4215
+ }
4216
+ }
4217
+ }
4218
+ a.size === 0 && i.push(" %% кросс-модульных зависимостей нет"), i.push(
4219
+ "```",
4220
+ "",
4221
+ "## Tracker",
4222
+ "| Task-ID | Title | Module | Dependencies | Status | Reopens |",
4223
+ "|---------|-------|--------|--------------|--------|---------|"
4224
+ );
4225
+ for (const c of r) {
4226
+ const l = n(c.destDir);
4227
+ i.push(
4228
+ `| ${c.newId} | ${c.title} | ${l === e ? "—" : l} | ${c.deps.length > 0 ? c.deps.join(", ") : "—"} | ${c.status} | — |`
4229
+ );
4230
+ }
4231
+ return i.push(
4232
+ "",
4233
+ "## Decision Log (scope task level)",
4234
+ "<!-- D-NNN scope-уровневых решений декомпозиции/планирования. -->",
4235
+ ""
4236
+ ), i.join(`
4237
+ `);
4238
+ }
4239
+ const Gn = ["specs", "tasks"];
4240
+ function Fn(e) {
4241
+ const t = e.indexOf("#");
4242
+ return t >= 0 ? { path: e.slice(0, t), fragment: e.slice(t) } : { path: e, fragment: "" };
4243
+ }
4244
+ function Vn(e, t, s, n) {
4245
+ if (n.size === 0) return { text: e, count: 0 };
4246
+ const o = B.dirname(t), r = B.dirname(s);
4247
+ let i = 0;
4248
+ return { text: e.replace(
4249
+ /\]\(([^)\s]+)([^)]*)\)/g,
4250
+ (c, l, f) => {
4251
+ if (l === "" || /^[a-z][a-z0-9+.-]*:\/\//i.test(l)) return c;
4252
+ const { path: d, fragment: u } = Fn(l);
4253
+ if (d === "") return c;
4254
+ const p = B.normalize(B.join(o, d)), m = n.get(p);
4255
+ if (!m) return c;
4256
+ i++;
4257
+ let E = B.relative(r, m);
4258
+ return E.startsWith(".") || (E = "./" + E), `](${E}${u}${f})`;
4259
+ }
4260
+ ), count: i };
4261
+ }
4262
+ function jn(e, t) {
4263
+ const s = [], n = (o) => {
4264
+ let r;
4265
+ try {
4266
+ r = $(o, { withFileTypes: !0 });
4267
+ } catch {
4268
+ return;
4269
+ }
4270
+ for (const i of r) {
4271
+ if (i.name.startsWith(".") || i.isSymbolicLink()) continue;
4272
+ const a = h(o, i.name);
4273
+ i.isDirectory() ? n(a) : i.isFile() && i.name.endsWith(".md") && s.push(a);
4274
+ }
4275
+ };
4276
+ for (const o of t) n(h(e, o));
4277
+ return s.sort();
4278
+ }
4279
+ function Yn(e, t, s) {
4280
+ Fe(w(h(e, s)), { recursive: !0 });
4281
+ try {
4282
+ Ot("git", ["mv", t, s], { cwd: e, stdio: "pipe" });
4283
+ } catch {
4284
+ Tt(h(e, t), h(e, s));
4285
+ }
4286
+ }
4287
+ function Hn(e) {
4288
+ const t = [], s = (n) => {
4289
+ let o;
4290
+ try {
4291
+ o = $(n, { withFileTypes: !0 });
4292
+ } catch {
4293
+ return;
4294
+ }
4295
+ for (const r of o) {
4296
+ const i = h(n, r.name);
4297
+ r.isDirectory() ? s(i) : /\.task-[0-9]+\.md$/.test(r.name) && t.push(i);
4298
+ }
4299
+ };
4300
+ return s(e), t.length === 0;
4301
+ }
4302
+ function Rr(e, t, s) {
4303
+ const n = $n(e, t);
4304
+ if (!n.ok) return n;
4305
+ const o = s ? "" : "would ", r = [], i = new Map(n.moves.map((u) => [u.from, u.to]));
4306
+ if (i.size > 0)
4307
+ for (const u of jn(e, Gn)) {
4308
+ const p = x(e, u), m = i.get(p) ?? p, { text: E, count: S } = Vn(
4309
+ D(u, "utf-8"),
4310
+ p,
4311
+ m,
4312
+ i
4313
+ );
4314
+ S > 0 && (s && q(u, E, "utf-8"), r.push(` ${o}link ${p} — ${S} ссылк(и) на переезжающие тикеты`));
4315
+ }
4316
+ for (const u of n.moves)
4317
+ s && Yn(e, u.from, u.to), r.push(` ${o}mv ${u.from} → ${u.to}`);
4318
+ const a = h("specs", t), c = /* @__PURE__ */ new Map();
4319
+ for (const u of n.units)
4320
+ for (const p of u.tickets) {
4321
+ const m = c.get(p.destDir) ?? [];
4322
+ m.push(p), c.set(p.destDir, m);
4323
+ }
4324
+ for (const u of [...c.keys()].sort()) {
4325
+ if (u === a) continue;
4326
+ const p = c.get(u), m = G(u), E = h(u, `${m}.3-tasks.md`);
4327
+ s && q(h(e, E), Bn(m, p), "utf-8"), r.push(` ${o}index ${E} — ${p.length} тикет(ов)`);
4328
+ }
4329
+ const l = h("specs", t, `${t}.3-tasks.md`);
4330
+ s && q(h(e, l), Un(t, n.units), "utf-8"), r.push(` ${o}index ${l} — сводный трекер scope`);
4331
+ const f = h(e, "tasks", t);
4332
+ R(f) && (s ? Hn(f) ? (Se(f, { recursive: !0, force: !0 }), r.push(` rm -r tasks/${t}/ — пусто, scope переключён на v2`)) : r.push(` ⚠ tasks/${t}/ НЕ удалён — там остались *.task-*.md вне плана`) : r.push(` would rm -r tasks/${t}/ (если не останется тикетов)`));
4333
+ const d = h(e, "tasks");
4334
+ return R(d) && $(d, { withFileTypes: !0 }).filter(
4335
+ (p) => p.name !== "README.md"
4336
+ ).length === 0 && (s ? (Se(d, { recursive: !0, force: !0 }), r.push(
4337
+ " rm -r tasks/ — последний scope мигрирован, репо переключён на v2 (FLOW_VERSION)"
4338
+ )) : r.push(" would rm -r tasks/ (последний scope — репо переключится на v2)")), { ok: !0, report: r };
4339
+ }
4340
+ const qn = "ERR_CLI_YAGNI_UNDERUSED", Wn = "ERR_CLI_YAGNI_WAIVER_DECISION_MISSING", Kn = 2;
4341
+ function kr(e) {
4342
+ return e.replace(/^[ \t]*export\s*(?:\*|\{[^}]*\})\s*from\s*['"][^'"]+['"];?[ \t]*$/gm, "");
4343
+ }
4344
+ const Xn = ["MODULE_CONTRACTS", "ENTITY_SURFACES", "PUBLIC_API_SURFACE"];
4345
+ function Zn(e, t) {
4346
+ const s = [];
4347
+ for (const n of t) {
4348
+ const o = new RegExp(
4349
+ "<!--SECTION:" + n + "-->([\\s\\S]*?)<!--/SECTION:" + n + "-->",
4350
+ "g"
4351
+ );
4352
+ for (const r of e.matchAll(o))
4353
+ s.push([r.index, r.index + r[0].length]);
4354
+ }
4355
+ return s;
4356
+ }
4357
+ function vr(e, t) {
4358
+ const n = /<!--SECTION:[A-Z_]+-->/.test(e) ? Zn(e, Xn) : null, o = (I) => !n || n.some(([ht, St]) => I >= ht && I < St), r = t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), i = new RegExp("^(#{2,6})[ \\t]+.*`" + r + "`.*$", "gm");
4359
+ let a, c = null;
4360
+ for (; a = i.exec(e); )
4361
+ if (o(a.index)) {
4362
+ c = a;
4363
+ break;
4364
+ }
4365
+ if (!c) return null;
4366
+ const l = c[1].length, f = e.slice(c.index + c[0].length), u = new RegExp("^#{1," + l + "}[ \\t]", "m").exec(f), p = f.slice(0, u ? u.index : void 0), m = /-\s*\*\*Usage Waiver(?:\s*\(external:\s*([^)]+)\))?:\*\*\s*(?:(D-[A-Za-z0-9]+)\s*[—-]\s*)?(.+)/.exec(
4367
+ p
4368
+ );
4369
+ if (!m) return null;
4370
+ const E = (m[3] ?? "").trim();
4371
+ if (!E) return null;
4372
+ const S = m[1]?.trim(), _ = m[2], N = _ ? { decision: _, reason: E } : { reason: E };
4373
+ return S ? { ...N, external: S } : N;
4374
+ }
4375
+ function wr(e, t) {
4376
+ const s = t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
4377
+ return new RegExp("^###\\s*" + s + "\\b", "m").test(e);
4378
+ }
4379
+ function Pr(e, t, s, n) {
4380
+ const o = [];
4381
+ for (const r of e) {
4382
+ const i = t.get(r.name) ?? 0;
4383
+ if (i >= Kn) continue;
4384
+ const a = s.get(r.name);
4385
+ if (!a) {
4386
+ o.push({
4387
+ severity: "error",
4388
+ code: qn,
4389
+ file: r.file,
4390
+ symbol: r.name,
4391
+ message: `\`${r.name}\` (${r.kind}) has ${i} usage(s) in production code (< 2) — YAGNI suspect. Fix: remove it, or — if genuinely needed — add \`- **Usage Waiver:** <reason>\` to its contract/surface entry (cite \`D-NNN — <reason>\` instead only when a Decision Log entry actually backs the reason, and then it must exist; for a public API named to an external consumer use the \`(external: <consumer>)\` variant) and log \`yagni ${r.name} ← <reason>\` in the Execution Log.`
4392
+ });
4393
+ continue;
4394
+ }
4395
+ a.decision && !n.has(a.decision) && o.push({
4396
+ severity: "error",
4397
+ code: Wn,
4398
+ file: r.file,
4399
+ symbol: r.name,
4400
+ message: `\`${r.name}\` has a Usage Waiver citing ${a.decision}, but no Decision Log entry with that id was found anywhere in the repo — an unresolvable citation does not gate the finding. Fix: add the ${a.decision} entry to a Decision Log, correct the citation, or drop the citation if the reason does not need one.`
4401
+ });
4402
+ }
4403
+ return o;
4404
+ }
4405
+ export {
4406
+ fr as $,
4407
+ Io as A,
4408
+ Jo as B,
4409
+ ir as C,
4410
+ Fo as D,
4411
+ Ho as E,
4412
+ Vo as F,
4413
+ re as G,
4414
+ Wo as H,
4415
+ qo as I,
4416
+ Xo as J,
4417
+ Zo as K,
4418
+ sr as L,
4419
+ tr as M,
4420
+ g as N,
4421
+ Ks as O,
4422
+ $o as P,
4423
+ cr as Q,
4424
+ dr as R,
4425
+ Or as S,
4426
+ pe as T,
4427
+ Er as U,
4428
+ A as V,
4429
+ Sr as W,
4430
+ gr as X,
4431
+ me as Y,
4432
+ Ir as Z,
4433
+ bo as _,
4434
+ oo as a,
4435
+ pr as a0,
4436
+ P as a1,
4437
+ mr as a2,
4438
+ hr as a3,
4439
+ lr as a4,
4440
+ ys as a5,
4441
+ qe as a6,
4442
+ _o as a7,
4443
+ at as a8,
4444
+ rr as a9,
4445
+ co as aA,
4446
+ Ae as aB,
4447
+ go as aC,
4448
+ So as aD,
4449
+ ho as aE,
4450
+ No as aF,
4451
+ po as aG,
4452
+ Te as aH,
4453
+ ao as aI,
4454
+ $t as aJ,
4455
+ Ft as aK,
4456
+ mo as aL,
4457
+ Oo as aM,
4458
+ ar as aa,
4459
+ Bo as ab,
4460
+ Ko as ac,
4461
+ Rr as ad,
4462
+ Uo as ae,
4463
+ Go as af,
4464
+ Nr as ag,
4465
+ he as ah,
4466
+ ee as ai,
4467
+ Tr as aj,
4468
+ _r as ak,
4469
+ Dr as al,
4470
+ Cr as am,
4471
+ Ar as an,
4472
+ yr as ao,
4473
+ Pr as ap,
4474
+ Ce as aq,
4475
+ kr as ar,
4476
+ vr as as,
4477
+ wr as at,
4478
+ Ao as au,
4479
+ Do as av,
4480
+ Co as aw,
4481
+ yo as ax,
4482
+ ko as ay,
4483
+ Ro as az,
4484
+ lo as b,
4485
+ Cs as c,
4486
+ vo as d,
4487
+ Ws as e,
4488
+ To as f,
4489
+ uo as g,
4490
+ Po as h,
4491
+ wo as i,
4492
+ Lo as j,
4493
+ jo as k,
4494
+ or as l,
4495
+ zo as m,
4496
+ Mo as n,
4497
+ ur as o,
4498
+ io as p,
4499
+ xo as q,
4500
+ Wt as r,
4501
+ ro as s,
4502
+ js as t,
4503
+ fo as u,
4504
+ Yo as v,
4505
+ Qo as w,
4506
+ Eo as x,
4507
+ nr as y,
4508
+ er as z
4509
+ };