create-quiver 0.15.3 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/.github/pull_request_template.md +17 -0
  2. package/.github/workflows/ci.yml +79 -0
  3. package/.markdown-link-check.json +15 -0
  4. package/.markdownlint.json +11 -0
  5. package/.quiver/runs/run-2026-06-09t19-14-39z/approvals.json +5 -0
  6. package/.quiver/runs/run-2026-06-09t19-14-39z/decisions.md +2 -0
  7. package/.quiver/runs/run-2026-06-09t19-14-39z/requirement.md +0 -0
  8. package/.quiver/runs/run-2026-06-09t19-14-39z/snapshots/20260609T191439Z/docs/INDEX.md +97 -0
  9. package/.quiver/runs/run-2026-06-09t19-14-39z/snapshots/20260609T191439Z/manifest.json +61 -0
  10. package/.quiver/runs/run-2026-06-09t19-14-39z/state.json +28 -0
  11. package/ACTIVE_SLICES.md +43 -0
  12. package/AGENTS.md.es.template +37 -0
  13. package/ARCHITECTURE.md +133 -0
  14. package/CHANGELOG.md +12 -0
  15. package/CONTRIBUTING.md +174 -9
  16. package/README.md +10 -1
  17. package/ROADMAP.md +4 -0
  18. package/SECURITY.md +9 -2
  19. package/auditoria-ux-ui-performance-documentacion.md +705 -0
  20. package/copys-landing-page.md +244 -0
  21. package/docs/AI_CONTEXT.md.es.template +37 -0
  22. package/docs/AI_CONTEXT.md.template +3 -1
  23. package/docs/AI_ONBOARDING_PROMPT.md.es.template +22 -0
  24. package/docs/CLI_UX_GUIDE.md +55 -1
  25. package/docs/COMMANDS.md.es.template +28 -0
  26. package/docs/COMMANDS.md.template +20 -6
  27. package/docs/CONTEXTO.md.es.template +33 -0
  28. package/docs/DECISIONS.md.es.template +17 -0
  29. package/docs/GITFLOW_PR_GUIDE.md +73 -11
  30. package/docs/GITFLOW_PR_GUIDE.md.es.template +84 -0
  31. package/docs/GITFLOW_PR_GUIDE.md.template +72 -10
  32. package/docs/INDEX.md +11 -1
  33. package/docs/INDEX.md.es.template +36 -0
  34. package/docs/QUICK.md.template +2 -1
  35. package/docs/STANDARD.md.template +2 -1
  36. package/docs/STATUS.md.es.template +28 -0
  37. package/docs/SUPPORT_MATRIX.md.es.template +22 -0
  38. package/docs/TESTING_GUIDE_FOR_AI.md.es.template +19 -0
  39. package/docs/TROUBLESHOOTING.md.es.template +35 -0
  40. package/docs/WORKFLOW.md.es.template +31 -0
  41. package/docs/WORKFLOW.md.template +6 -4
  42. package/docs/ai/ACTIVE_SLICE.md +61 -0
  43. package/docs/ai/LESSONS.md.es.template +24 -0
  44. package/docs/getting-started/installation.md +26 -0
  45. package/docs/reference/commands.md +159 -7
  46. package/docs/reference/slice-schema.md +37 -0
  47. package/docs/schema/slice.schema.json +221 -0
  48. package/docs/specs/01-spec/01-slice/01-slice.json +36 -0
  49. package/docs/specs/01-spec/01-slice/01-slice.md +106 -0
  50. package/docs/specs/01-spec/01-slice/CLOSURE_BRIEF.md +80 -0
  51. package/docs/specs/01-spec/01-slice/EXECUTION_BRIEF.md +39 -0
  52. package/docs/specs/01-spec/02-slice/02-slice.json +36 -0
  53. package/docs/specs/01-spec/02-slice/02-slice.md +108 -0
  54. package/docs/specs/01-spec/02-slice/CLOSURE_BRIEF.md +88 -0
  55. package/docs/specs/01-spec/02-slice/EXECUTION_BRIEF.md +40 -0
  56. package/docs/specs/01-spec/03-slice/03-slice.json +36 -0
  57. package/docs/specs/01-spec/03-slice/03-slice.md +103 -0
  58. package/docs/specs/01-spec/03-slice/CLOSURE_BRIEF.md +54 -0
  59. package/docs/specs/01-spec/03-slice/EXECUTION_BRIEF.md +39 -0
  60. package/docs/specs/01-spec/04-slice/04-slice.json +36 -0
  61. package/docs/specs/01-spec/04-slice/04-slice.md +107 -0
  62. package/docs/specs/01-spec/04-slice/CLOSURE_BRIEF.md +46 -0
  63. package/docs/specs/01-spec/04-slice/EXECUTION_BRIEF.md +39 -0
  64. package/docs/specs/01-spec/05-slice/05-slice.json +36 -0
  65. package/docs/specs/01-spec/05-slice/05-slice.md +106 -0
  66. package/docs/specs/01-spec/05-slice/CLOSURE_BRIEF.md +84 -0
  67. package/docs/specs/01-spec/05-slice/EXECUTION_BRIEF.md +109 -0
  68. package/docs/specs/01-spec/06-slice/06-slice.json +36 -0
  69. package/docs/specs/01-spec/06-slice/06-slice.md +107 -0
  70. package/docs/specs/01-spec/06-slice/CLOSURE_BRIEF.md +67 -0
  71. package/docs/specs/01-spec/06-slice/EXECUTION_BRIEF.md +39 -0
  72. package/docs/specs/01-spec/07-slice/07-slice.json +36 -0
  73. package/docs/specs/01-spec/07-slice/07-slice.md +105 -0
  74. package/docs/specs/01-spec/07-slice/CLOSURE_BRIEF.md +71 -0
  75. package/docs/specs/01-spec/07-slice/EXECUTION_BRIEF.md +39 -0
  76. package/docs/specs/01-spec/08-slice/08-slice.json +36 -0
  77. package/docs/specs/01-spec/08-slice/08-slice.md +105 -0
  78. package/docs/specs/01-spec/08-slice/CLOSURE_BRIEF.md +114 -0
  79. package/docs/specs/01-spec/08-slice/EXECUTION_BRIEF.md +39 -0
  80. package/docs/specs/01-spec/CLOSURE_BRIEF.md +87 -0
  81. package/docs/specs/01-spec/spec.md +197 -0
  82. package/docs/workflows/full-ai-spec-to-pr.md +46 -3
  83. package/i18n/es/docs/GITFLOW_PR_GUIDE.md.template +38 -1
  84. package/package.json +27 -1
  85. package/pr.md +154 -0
  86. package/scripts/package-quiver.sh +82 -2
  87. package/scripts/release-quiver.sh +14 -3
  88. package/specs/[project-name]/slices/pr.md.template +19 -0
  89. package/specs/quiver-v37-cli-i18n-foundation/EVIDENCE_REPORT.md +73 -0
  90. package/specs/quiver-v37-cli-i18n-foundation/EXECUTION_PLAN.md +34 -0
  91. package/specs/quiver-v37-cli-i18n-foundation/SPEC.md +91 -0
  92. package/specs/quiver-v37-cli-i18n-foundation/STATUS.md +29 -0
  93. package/specs/quiver-v37-cli-i18n-foundation/pr.md +97 -0
  94. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/CLOSURE_BRIEF.md +10 -0
  95. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/EXECUTION_BRIEF.md +22 -0
  96. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-00-foundation-and-program-roadmap/slice.json +54 -0
  97. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/CLOSURE_BRIEF.md +30 -0
  98. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/EXECUTION_BRIEF.md +27 -0
  99. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-01-language-resolution-contract/slice.json +66 -0
  100. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/CLOSURE_BRIEF.md +27 -0
  101. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/EXECUTION_BRIEF.md +26 -0
  102. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-02-message-catalog-interpolation/slice.json +62 -0
  103. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/CLOSURE_BRIEF.md +32 -0
  104. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/EXECUTION_BRIEF.md +25 -0
  105. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-03-config-language-command/slice.json +66 -0
  106. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/CLOSURE_BRIEF.md +30 -0
  107. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/EXECUTION_BRIEF.md +24 -0
  108. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-04-parser-help-error-foundation/slice.json +65 -0
  109. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/CLOSURE_BRIEF.md +27 -0
  110. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/EXECUTION_BRIEF.md +23 -0
  111. package/specs/quiver-v37-cli-i18n-foundation/slices/slice-05-foundation-docs-tests-package-readiness/slice.json +67 -0
  112. package/specs/quiver-v38-cli-i18n-read-only-commands/EVIDENCE_REPORT.md +69 -0
  113. package/specs/quiver-v38-cli-i18n-read-only-commands/EXECUTION_PLAN.md +25 -0
  114. package/specs/quiver-v38-cli-i18n-read-only-commands/SPEC.md +52 -0
  115. package/specs/quiver-v38-cli-i18n-read-only-commands/STATUS.md +24 -0
  116. package/specs/quiver-v38-cli-i18n-read-only-commands/pr.md +119 -0
  117. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/CLOSURE_BRIEF.md +10 -0
  118. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/EXECUTION_BRIEF.md +21 -0
  119. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-00-read-only-foundation/slice.json +53 -0
  120. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/CLOSURE_BRIEF.md +17 -0
  121. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/EXECUTION_BRIEF.md +23 -0
  122. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-01-version-dashboard-help/slice.json +69 -0
  123. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/CLOSURE_BRIEF.md +13 -0
  124. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/EXECUTION_BRIEF.md +22 -0
  125. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-02-flow-doctor-next-graph/slice.json +77 -0
  126. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/CLOSURE_BRIEF.md +12 -0
  127. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/EXECUTION_BRIEF.md +22 -0
  128. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-03-ai-inspection-and-export/slice.json +66 -0
  129. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/CLOSURE_BRIEF.md +13 -0
  130. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/EXECUTION_BRIEF.md +22 -0
  131. package/specs/quiver-v38-cli-i18n-read-only-commands/slices/slice-04-read-only-tests-smokes/slice.json +61 -0
  132. package/specs/quiver-v39-cli-i18n-setup-onboarding/EVIDENCE_REPORT.md +71 -0
  133. package/specs/quiver-v39-cli-i18n-setup-onboarding/EXECUTION_PLAN.md +25 -0
  134. package/specs/quiver-v39-cli-i18n-setup-onboarding/SPEC.md +53 -0
  135. package/specs/quiver-v39-cli-i18n-setup-onboarding/STATUS.md +24 -0
  136. package/specs/quiver-v39-cli-i18n-setup-onboarding/pr.md +104 -0
  137. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/CLOSURE_BRIEF.md +10 -0
  138. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/EXECUTION_BRIEF.md +21 -0
  139. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-00-setup-foundation/slice.json +53 -0
  140. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/CLOSURE_BRIEF.md +12 -0
  141. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/EXECUTION_BRIEF.md +23 -0
  142. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-01-init-interactive-language/slice.json +68 -0
  143. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/CLOSURE_BRIEF.md +12 -0
  144. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/EXECUTION_BRIEF.md +23 -0
  145. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-02-analyze-migrate-prepare/slice.json +62 -0
  146. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/CLOSURE_BRIEF.md +12 -0
  147. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/EXECUTION_BRIEF.md +22 -0
  148. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-03-demo-evidence-onboarding/slice.json +72 -0
  149. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/CLOSURE_BRIEF.md +15 -0
  150. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/EXECUTION_BRIEF.md +22 -0
  151. package/specs/quiver-v39-cli-i18n-setup-onboarding/slices/slice-04-setup-tests-smokes/slice.json +61 -0
  152. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/EVIDENCE_REPORT.md +50 -0
  153. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/EXECUTION_PLAN.md +25 -0
  154. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/SPEC.md +52 -0
  155. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/STATUS.md +24 -0
  156. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/pr.md +94 -0
  157. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/CLOSURE_BRIEF.md +10 -0
  158. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/EXECUTION_BRIEF.md +21 -0
  159. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-00-spec-slice-foundation/slice.json +53 -0
  160. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/CLOSURE_BRIEF.md +12 -0
  161. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/EXECUTION_BRIEF.md +22 -0
  162. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-01-spec-create-start-status/slice.json +63 -0
  163. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/CLOSURE_BRIEF.md +10 -0
  164. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/EXECUTION_BRIEF.md +22 -0
  165. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-02-spec-validate-close/slice.json +63 -0
  166. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/CLOSURE_BRIEF.md +10 -0
  167. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/EXECUTION_BRIEF.md +22 -0
  168. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-03-slice-lifecycle-handoffs/slice.json +72 -0
  169. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/CLOSURE_BRIEF.md +15 -0
  170. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/EXECUTION_BRIEF.md +22 -0
  171. package/specs/quiver-v40-cli-i18n-spec-slice-workflows/slices/slice-04-spec-slice-tests-smokes/slice.json +69 -0
  172. package/specs/quiver-v41-cli-i18n-ai-lifecycle/EVIDENCE_REPORT.md +90 -0
  173. package/specs/quiver-v41-cli-i18n-ai-lifecycle/EXECUTION_PLAN.md +33 -0
  174. package/specs/quiver-v41-cli-i18n-ai-lifecycle/SPEC.md +57 -0
  175. package/specs/quiver-v41-cli-i18n-ai-lifecycle/STATUS.md +26 -0
  176. package/specs/quiver-v41-cli-i18n-ai-lifecycle/pr.md +103 -0
  177. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/CLOSURE_BRIEF.md +10 -0
  178. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/EXECUTION_BRIEF.md +21 -0
  179. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-00-ai-i18n-foundation/slice.json +53 -0
  180. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/CLOSURE_BRIEF.md +13 -0
  181. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/EXECUTION_BRIEF.md +22 -0
  182. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-01-ai-run-status-resume/slice.json +68 -0
  183. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/CLOSURE_BRIEF.md +12 -0
  184. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/EXECUTION_BRIEF.md +22 -0
  185. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-02-ai-agent-models/slice.json +66 -0
  186. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/CLOSURE_BRIEF.md +12 -0
  187. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/EXECUTION_BRIEF.md +23 -0
  188. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-03-ai-planner-approval-review/slice.json +68 -0
  189. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/CLOSURE_BRIEF.md +13 -0
  190. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/EXECUTION_BRIEF.md +23 -0
  191. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-04-ai-execution-pr/slice.json +72 -0
  192. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/CLOSURE_BRIEF.md +15 -0
  193. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/EXECUTION_BRIEF.md +22 -0
  194. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-05-ai-tests-smokes/slice.json +66 -0
  195. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/CLOSURE_BRIEF.md +11 -0
  196. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/EXECUTION_BRIEF.md +22 -0
  197. package/specs/quiver-v41-cli-i18n-ai-lifecycle/slices/slice-06-ai-prepare-context-progress-i18n-fix/slice.json +70 -0
  198. package/specs/quiver-v42-cli-i18n-generated-docs/EVIDENCE_REPORT.md +64 -0
  199. package/specs/quiver-v42-cli-i18n-generated-docs/EXECUTION_PLAN.md +26 -0
  200. package/specs/quiver-v42-cli-i18n-generated-docs/SPEC.md +52 -0
  201. package/specs/quiver-v42-cli-i18n-generated-docs/STATUS.md +24 -0
  202. package/specs/quiver-v42-cli-i18n-generated-docs/pr.md +125 -0
  203. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/CLOSURE_BRIEF.md +10 -0
  204. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/EXECUTION_BRIEF.md +21 -0
  205. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-00-generated-docs-foundation/slice.json +53 -0
  206. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/CLOSURE_BRIEF.md +10 -0
  207. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/EXECUTION_BRIEF.md +22 -0
  208. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-01-template-language-routing/slice.json +62 -0
  209. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/CLOSURE_BRIEF.md +11 -0
  210. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/EXECUTION_BRIEF.md +22 -0
  211. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-02-init-docs-and-i18n-assets/slice.json +72 -0
  212. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/CLOSURE_BRIEF.md +12 -0
  213. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/EXECUTION_BRIEF.md +22 -0
  214. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-03-docs-reference-guides/slice.json +60 -0
  215. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/CLOSURE_BRIEF.md +16 -0
  216. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/EXECUTION_BRIEF.md +22 -0
  217. package/specs/quiver-v42-cli-i18n-generated-docs/slices/slice-04-generated-docs-tests-smokes/slice.json +62 -0
  218. package/specs/quiver-v43-cli-i18n-audit-release-readiness/EVIDENCE_REPORT.md +203 -0
  219. package/specs/quiver-v43-cli-i18n-audit-release-readiness/EXECUTION_PLAN.md +27 -0
  220. package/specs/quiver-v43-cli-i18n-audit-release-readiness/SPEC.md +54 -0
  221. package/specs/quiver-v43-cli-i18n-audit-release-readiness/STATUS.md +24 -0
  222. package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +636 -0
  223. package/specs/quiver-v43-cli-i18n-audit-release-readiness/cross-platform-smoke-matrix.md +35 -0
  224. package/specs/quiver-v43-cli-i18n-audit-release-readiness/pr.md +155 -0
  225. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/CLOSURE_BRIEF.md +10 -0
  226. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/EXECUTION_BRIEF.md +21 -0
  227. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-00-audit-foundation/slice.json +53 -0
  228. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/CLOSURE_BRIEF.md +13 -0
  229. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/EXECUTION_BRIEF.md +23 -0
  230. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-01-command-language-mode-matrix/slice.json +62 -0
  231. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/CLOSURE_BRIEF.md +18 -0
  232. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/EXECUTION_BRIEF.md +22 -0
  233. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-02-public-string-audit/slice.json +59 -0
  234. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/CLOSURE_BRIEF.md +15 -0
  235. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/EXECUTION_BRIEF.md +23 -0
  236. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-03-cross-platform-smokes/slice.json +62 -0
  237. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/CLOSURE_BRIEF.md +17 -0
  238. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/EXECUTION_BRIEF.md +24 -0
  239. package/specs/quiver-v43-cli-i18n-audit-release-readiness/slices/slice-04-package-release-readiness/slice.json +66 -0
  240. package/specs/quiver-v44-provider-live-output-tui-lite/EVIDENCE_REPORT.md +18 -0
  241. package/specs/quiver-v44-provider-live-output-tui-lite/EXECUTION_PLAN.md +31 -0
  242. package/specs/quiver-v44-provider-live-output-tui-lite/SPEC.md +118 -0
  243. package/specs/quiver-v44-provider-live-output-tui-lite/STATUS.md +25 -0
  244. package/specs/quiver-v44-provider-live-output-tui-lite/pr.md +92 -0
  245. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/CLOSURE_BRIEF.md +11 -0
  246. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/EXECUTION_BRIEF.md +23 -0
  247. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-00-tui-lite-contract-foundation/slice.json +64 -0
  248. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/CLOSURE_BRIEF.md +10 -0
  249. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/EXECUTION_BRIEF.md +24 -0
  250. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-01-provider-stream-hooks/slice.json +65 -0
  251. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/CLOSURE_BRIEF.md +10 -0
  252. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/EXECUTION_BRIEF.md +24 -0
  253. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-02-live-output-renderer/slice.json +70 -0
  254. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/CLOSURE_BRIEF.md +10 -0
  255. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/EXECUTION_BRIEF.md +25 -0
  256. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-03-prepare-context-integration/slice.json +70 -0
  257. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/CLOSURE_BRIEF.md +10 -0
  258. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/EXECUTION_BRIEF.md +26 -0
  259. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-04-planner-command-audit-adoption/slice.json +72 -0
  260. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/CLOSURE_BRIEF.md +15 -0
  261. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/EXECUTION_BRIEF.md +26 -0
  262. package/specs/quiver-v44-provider-live-output-tui-lite/slices/slice-05-docs-tests-readiness/slice.json +75 -0
  263. package/specs/quiver-v45-ci-actions-node24-readiness/EVIDENCE_REPORT.md +30 -0
  264. package/specs/quiver-v45-ci-actions-node24-readiness/EXECUTION_PLAN.md +22 -0
  265. package/specs/quiver-v45-ci-actions-node24-readiness/SPEC.md +49 -0
  266. package/specs/quiver-v45-ci-actions-node24-readiness/STATUS.md +21 -0
  267. package/specs/quiver-v45-ci-actions-node24-readiness/pr.md +67 -0
  268. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/CLOSURE_BRIEF.md +10 -0
  269. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/EXECUTION_BRIEF.md +21 -0
  270. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-00-ci-actions-foundation/slice.json +48 -0
  271. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/CLOSURE_BRIEF.md +14 -0
  272. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/EXECUTION_BRIEF.md +23 -0
  273. package/specs/quiver-v45-ci-actions-node24-readiness/slices/slice-01-actions-node24-readiness/slice.json +65 -0
  274. package/specs/quiver-v50-audit-trust-foundation/EVIDENCE_REPORT.md +151 -0
  275. package/specs/quiver-v50-audit-trust-foundation/EXECUTION_PLAN.md +34 -0
  276. package/specs/quiver-v50-audit-trust-foundation/SPEC.md +113 -0
  277. package/specs/quiver-v50-audit-trust-foundation/STATUS.md +26 -0
  278. package/specs/quiver-v50-audit-trust-foundation/pr.md +120 -0
  279. package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/CLOSURE_BRIEF.md +20 -0
  280. package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/EXECUTION_BRIEF.md +58 -0
  281. package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/slice.json +57 -0
  282. package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/CLOSURE_BRIEF.md +24 -0
  283. package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/EXECUTION_BRIEF.md +67 -0
  284. package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/slice.json +71 -0
  285. package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/CLOSURE_BRIEF.md +24 -0
  286. package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/EXECUTION_BRIEF.md +71 -0
  287. package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/slice.json +81 -0
  288. package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/CLOSURE_BRIEF.md +22 -0
  289. package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/EXECUTION_BRIEF.md +57 -0
  290. package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/slice.json +56 -0
  291. package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/CLOSURE_BRIEF.md +23 -0
  292. package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/EXECUTION_BRIEF.md +68 -0
  293. package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/slice.json +84 -0
  294. package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/CLOSURE_BRIEF.md +25 -0
  295. package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/EXECUTION_BRIEF.md +73 -0
  296. package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/slice.json +72 -0
  297. package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/CLOSURE_BRIEF.md +22 -0
  298. package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/EXECUTION_BRIEF.md +66 -0
  299. package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/slice.json +74 -0
  300. package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/CLOSURE_BRIEF.md +29 -0
  301. package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/EXECUTION_BRIEF.md +74 -0
  302. package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/slice.json +81 -0
  303. package/specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md +145 -0
  304. package/specs/quiver-v51-cli-ergonomics-automation-contracts/EXECUTION_PLAN.md +32 -0
  305. package/specs/quiver-v51-cli-ergonomics-automation-contracts/SPEC.md +109 -0
  306. package/specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md +25 -0
  307. package/specs/quiver-v51-cli-ergonomics-automation-contracts/pr.md +69 -0
  308. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/CLOSURE_BRIEF.md +20 -0
  309. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/EXECUTION_BRIEF.md +58 -0
  310. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/slice.json +56 -0
  311. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/CLOSURE_BRIEF.md +21 -0
  312. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/EXECUTION_BRIEF.md +61 -0
  313. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/slice.json +68 -0
  314. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/CLOSURE_BRIEF.md +25 -0
  315. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/EXECUTION_BRIEF.md +65 -0
  316. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/pr.md +134 -0
  317. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/slice.json +80 -0
  318. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/CLOSURE_BRIEF.md +31 -0
  319. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/EXECUTION_BRIEF.md +80 -0
  320. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/pr.md +159 -0
  321. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/slice.json +102 -0
  322. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/CLOSURE_BRIEF.md +25 -0
  323. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/EXECUTION_BRIEF.md +74 -0
  324. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/pr.md +147 -0
  325. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json +91 -0
  326. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/CLOSURE_BRIEF.md +28 -0
  327. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/EXECUTION_BRIEF.md +73 -0
  328. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/pr.md +146 -0
  329. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json +100 -0
  330. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/CLOSURE_BRIEF.md +36 -0
  331. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/EXECUTION_BRIEF.md +76 -0
  332. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/pr.md +155 -0
  333. package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/slice.json +111 -0
  334. package/specs/quiver-v52-schema-docs-release-hygiene/EVIDENCE_REPORT.md +95 -0
  335. package/specs/quiver-v52-schema-docs-release-hygiene/EXECUTION_PLAN.md +31 -0
  336. package/specs/quiver-v52-schema-docs-release-hygiene/SPEC.md +107 -0
  337. package/specs/quiver-v52-schema-docs-release-hygiene/STATUS.md +22 -0
  338. package/specs/quiver-v52-schema-docs-release-hygiene/pr.md +69 -0
  339. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/CLOSURE_BRIEF.md +21 -0
  340. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/EXECUTION_BRIEF.md +60 -0
  341. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/slice.json +62 -0
  342. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/CLOSURE_BRIEF.md +34 -0
  343. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/EXECUTION_BRIEF.md +71 -0
  344. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/pr.md +146 -0
  345. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/slice.json +106 -0
  346. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/CLOSURE_BRIEF.md +33 -0
  347. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/EXECUTION_BRIEF.md +67 -0
  348. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/pr.md +144 -0
  349. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/slice.json +86 -0
  350. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/CLOSURE_BRIEF.md +38 -0
  351. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/EXECUTION_BRIEF.md +75 -0
  352. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/pr.md +159 -0
  353. package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/slice.json +105 -0
  354. package/src/create-quiver/commands/ai.js +485 -307
  355. package/src/create-quiver/commands/changelog.js +93 -0
  356. package/src/create-quiver/commands/config.js +135 -0
  357. package/src/create-quiver/commands/demo.js +2 -2
  358. package/src/create-quiver/commands/evidence.js +39 -6
  359. package/src/create-quiver/commands/flow.js +109 -16
  360. package/src/create-quiver/commands/graph.js +9 -2
  361. package/src/create-quiver/commands/next.js +21 -18
  362. package/src/create-quiver/commands/plan.js +29 -6
  363. package/src/create-quiver/commands/spec.js +94 -70
  364. package/src/create-quiver/index.js +798 -223
  365. package/src/create-quiver/lib/ai/execution-plan.js +23 -20
  366. package/src/create-quiver/lib/ai/executor.js +60 -44
  367. package/src/create-quiver/lib/ai/export-state.js +75 -64
  368. package/src/create-quiver/lib/ai/github.js +29 -23
  369. package/src/create-quiver/lib/ai/run-state.js +28 -25
  370. package/src/create-quiver/lib/ai/spec-templates.js +19 -0
  371. package/src/create-quiver/lib/cli/command-registry.js +71 -0
  372. package/src/create-quiver/lib/cli/parser.js +14 -0
  373. package/src/create-quiver/lib/dashboard.js +154 -111
  374. package/src/create-quiver/lib/demo.js +14 -12
  375. package/src/create-quiver/lib/evidence.js +161 -6
  376. package/src/create-quiver/lib/git.js +99 -0
  377. package/src/create-quiver/lib/handoff.js +16 -7
  378. package/src/create-quiver/lib/i18n/catalog.js +152 -0
  379. package/src/create-quiver/lib/i18n/language.js +279 -0
  380. package/src/create-quiver/lib/i18n/messages/en.js +898 -0
  381. package/src/create-quiver/lib/i18n/messages/es.js +1013 -0
  382. package/src/create-quiver/lib/i18n/read-only-format.js +26 -0
  383. package/src/create-quiver/lib/i18n/templates.js +172 -0
  384. package/src/create-quiver/lib/init-docs.js +19 -5
  385. package/src/create-quiver/lib/init-layout.js +15 -8
  386. package/src/create-quiver/lib/lifecycle.js +72 -67
  387. package/src/create-quiver/lib/readiness.js +131 -110
  388. package/src/create-quiver/lib/renderers/tree.js +9 -6
  389. package/src/create-quiver/lib/spec-worktrees.js +50 -64
  390. package/src/create-quiver/lib/version.js +11 -9
@@ -9,6 +9,7 @@ const {
9
9
  } = require('../agent-profiles');
10
10
  const { createUx } = require('../cli/ux');
11
11
  const { branchDelete, runGit, statusPorcelain, worktreeAdd, worktreePrune, worktreeRemove } = require('../git');
12
+ const { createTranslator } = require('../i18n/catalog');
12
13
  const { withLock } = require('../locks');
13
14
  const { safeBranchName, worktreesRootForRepo } = require('../slice');
14
15
  const { buildGraph, computeLevels, detectFileConflicts, isFoundationSliceId, readAllSlices, topoSort, SliceGraphError } = require('../slice-graph');
@@ -387,19 +388,20 @@ function formatHumanExecutionPlan(report) {
387
388
  }
388
389
 
389
390
  function formatExecutePlanDryRun(report, options = {}) {
391
+ const translator = createTranslator(options.language);
390
392
  const provider = options.resolvedProvider || options.provider || 'codex';
391
393
  const model = options.resolvedModel || options.model || '';
392
394
  const commitEnabled = options.commit === true;
393
395
  const executionMode = normalizeExecutionMode(options.mode || options.executionMode);
394
396
  const lines = [
395
- 'AI execute-plan dry-run',
396
- `Execution mode: ${executionMode}`,
397
- `Provider: ${provider}`,
398
- model ? `Model: ${model}` : '',
399
- `Commit after each slice: ${commitEnabled ? 'enabled' : 'disabled'}`,
400
- `Total slices: ${report.summary.total_slices}`,
397
+ translator.t('execute_plan.title.dry_run'),
398
+ translator.t('execute_plan.execution_mode', { mode: executionMode }),
399
+ translator.t('execute_plan.provider', { provider }),
400
+ model ? translator.t('execute_plan.model', { model }) : '',
401
+ translator.t('execute_plan.commit_after_each_slice', { value: commitEnabled ? translator.t('execute_plan.enabled') : translator.t('execute_plan.disabled') }),
402
+ translator.t('execute_plan.total_slices', { count: report.summary.total_slices }),
401
403
  '',
402
- 'Waves',
404
+ translator.t('execute_plan.waves'),
403
405
  ];
404
406
 
405
407
  const commandForSlice = (slice) => {
@@ -423,18 +425,18 @@ function formatExecutePlanDryRun(report, options = {}) {
423
425
  ].join(' ');
424
426
 
425
427
  for (const level of report.ready_levels) {
426
- lines.push(`Wave ${level.index}: ${level.parallel_ready ? 'parallel-ready' : 'sequential'}`);
427
- lines.push(`Workspace strategy: ${level.worktree_strategy.mode}`);
428
+ lines.push(translator.t('execute_plan.wave', { index: level.index, mode: level.parallel_ready ? 'parallel-ready' : 'sequential' }));
429
+ lines.push(translator.t('execute_plan.workspace_strategy', { strategy: level.worktree_strategy.mode }));
428
430
  if (level.fallback_reason) {
429
- lines.push(`Fallback: ${level.fallback_reason}`);
431
+ lines.push(translator.t('execute_plan.fallback', { reason: level.fallback_reason }));
430
432
  }
431
433
  for (const group of level.execution_groups) {
432
- lines.push(`Group: ${group.mode}`);
434
+ lines.push(translator.t('execute_plan.group', { mode: group.mode }));
433
435
  for (const ref of group.slice_refs) {
434
436
  const slice = level.slices.find((item) => item.ref === ref);
435
- lines.push(`- Prompt: ${promptCommandForSlice(slice)}`);
437
+ lines.push(`- ${translator.t('execute_plan.prompt')}: ${promptCommandForSlice(slice)}`);
436
438
  if (executionMode !== 'manual') {
437
- lines.push(` Execute: ${commandForSlice(slice)}`);
439
+ lines.push(` ${translator.t('execute_plan.execute')}: ${commandForSlice(slice)}`);
438
440
  }
439
441
  }
440
442
  }
@@ -677,10 +679,11 @@ async function runExecutePlan(repoRoot, options = {}) {
677
679
  const results = [];
678
680
  const ux = createCommandUx(options);
679
681
  const showProgress = shouldShowHumanProgress(ux, options);
682
+ const translator = createTranslator(options.language);
680
683
  if (showProgress) {
681
- ux.heading(`Ejecutando plan de slices con ${runtimeProfile.displayName}`);
682
- ux.check(`Plan cargado: ${report.summary.total_slices} slice${report.summary.total_slices === 1 ? '' : 's'}`);
683
- ux.check(`Modo: ${executionMode}`);
684
+ ux.heading(translator.t('execute_plan.progress.title', { profile: runtimeProfile.displayName }));
685
+ ux.check(translator.t('execute_plan.progress.plan_loaded', { count: report.summary.total_slices }));
686
+ ux.check(translator.t('execute_plan.progress.mode', { mode: executionMode }));
684
687
  }
685
688
 
686
689
  for (const level of report.ready_levels) {
@@ -689,9 +692,9 @@ async function runExecutePlan(repoRoot, options = {}) {
689
692
  const groupResults = await runWithProgress({
690
693
  ux,
691
694
  enabled: showProgress,
692
- message: `Ejecutando wave ${level.index}: ${group.slice_refs.join(', ')}`,
693
- successMessage: `Wave ${level.index} completada`,
694
- failureMessage: `Falló wave ${level.index}`,
695
+ message: translator.t('execute_plan.progress.running_wave', { index: level.index, refs: group.slice_refs.join(', ') }),
696
+ successMessage: translator.t('execute_plan.progress.wave_completed', { index: level.index }),
697
+ failureMessage: translator.t('execute_plan.progress.wave_failed', { index: level.index }),
695
698
  run: () => (executionMode === 'delegated' && group.mode === 'parallel' && group.slice_refs.length > 1
696
699
  ? runParallelGroupInWorktrees(repoRoot, level, group, resolvedOptions)
697
700
  : runSequentialGroup(repoRoot, level, group, resolvedOptions)),
@@ -707,7 +710,7 @@ async function runExecutePlan(repoRoot, options = {}) {
707
710
  }
708
711
  }
709
712
 
710
- process.stdout.write(`AI execute-plan completed\nSlices executed: ${results.length}\n`);
713
+ process.stdout.write(`${translator.t('execute_plan.title.completed')}\n${translator.t('execute_plan.slices_executed', { count: results.length })}\n`);
711
714
  return { task: 'execute-plan', dryRun: false, report, results };
712
715
  }
713
716
 
@@ -13,6 +13,7 @@ const {
13
13
  } = require('../agent-profiles');
14
14
  const { selectOption } = require('../cli/selectors');
15
15
  const { createUx } = require('../cli/ux');
16
+ const { createTranslator } = require('../i18n/catalog');
16
17
  const { currentBranch, runGit } = require('../git');
17
18
  const { redactSecrets, truncateText } = require('../evidence');
18
19
  const { captureWorktreeSnapshot, validateScopeSnapshot } = require('../scope');
@@ -136,8 +137,9 @@ async function resolveInteractiveExecutorProfile(repoRoot, role, options = {}) {
136
137
  return options.executorProfile || '';
137
138
  }
138
139
 
140
+ const translator = createTranslator(options.language);
139
141
  const selected = await selectOption(
140
- '¿Qué Executor querés usar?',
142
+ translator.t('execute_slice.prompt.select_executor'),
141
143
  profiles.map((profile) => ({
142
144
  label: resolveAgentProfileDisplayName(profile),
143
145
  value: profile.id,
@@ -206,8 +208,9 @@ async function resolveInteractiveSliceInput(repoRoot, options = {}) {
206
208
  throw new Error(formatError('no ready slices found for interactive execution. Run `npx create-quiver ai execute-plan --dry-run` to inspect dependencies and blockers.'));
207
209
  }
208
210
 
211
+ const translator = createTranslator(options.language);
209
212
  const selected = await selectOption(
210
- '¿Qué slice querés ejecutar?',
213
+ translator.t('execute_slice.prompt.select_slice'),
211
214
  optionsForSlices,
212
215
  selectorOptions({
213
216
  ...options,
@@ -245,7 +248,9 @@ async function runWithProgress({ ux, enabled, message, successMessage, failureMe
245
248
  });
246
249
  }
247
250
 
248
- async function runProviderWithProgress({ ux, enabled, run }) {
251
+ async function runProviderWithProgress({ ux, enabled, language, run }) {
252
+ const translator = createTranslator(language);
253
+
249
254
  async function runAndFailOnProviderResult() {
250
255
  const result = await run();
251
256
  if (result && result.ok === false) {
@@ -260,9 +265,9 @@ async function runProviderWithProgress({ ux, enabled, run }) {
260
265
  return runWithProgress({
261
266
  ux,
262
267
  enabled,
263
- message: 'Ejecutando agente...',
264
- successMessage: 'Agente finalizado',
265
- failureMessage: 'Fallo ejecutando agente',
268
+ message: translator.t('ai.planner.progress.running_agent'),
269
+ successMessage: translator.t('ai.planner.progress.agent_finished'),
270
+ failureMessage: translator.t('ai.planner.progress.agent_failed'),
266
271
  run: runAndFailOnProviderResult,
267
272
  });
268
273
  }
@@ -582,58 +587,63 @@ function buildExecuteSliceContext({ repoRoot, slicePath, role, context }) {
582
587
  };
583
588
  }
584
589
 
585
- function formatExecuteSliceDryRunReport({ provider, role, contextPack, slice, briefPath, invocation, validationCommands, allowedFiles, commitEnabled }) {
590
+ function formatExecuteSliceDryRunReport({ provider, role, contextPack, slice, briefPath, invocation, validationCommands, allowedFiles, commitEnabled }, options = {}) {
591
+ const translator = createTranslator(options.language);
586
592
  const lines = [
587
- 'AI execute-slice dry-run',
588
- `Provider: ${provider}`,
589
- `Role: ${role}`,
590
- `Context pack: ${contextPack}`,
591
- `Slice: ${slice.sliceId}`,
592
- `Spec: ${slice.specSlug}`,
593
- `Execution brief: ${briefPath}`,
594
- `Command: ${invocation.command} ${invocation.args.join(' ')}`,
595
- `Timeout: ${invocation.timeoutMs}ms`,
596
- `Prompt transport: ${invocation.promptTransport.mode}`,
597
- `Prompt length: ${invocation.promptLength} bytes`,
598
- `Commit after validation: ${commitEnabled ? 'enabled' : 'disabled'}`,
593
+ translator.t('execute_slice.title.dry_run'),
594
+ translator.t('execute_slice.provider', { provider }),
595
+ translator.t('execute_slice.role', { role }),
596
+ translator.t('execute_slice.context_pack', { context: contextPack }),
597
+ translator.t('execute_slice.slice', { slice: slice.sliceId }),
598
+ translator.t('execute_slice.spec', { spec: slice.specSlug }),
599
+ translator.t('execute_slice.execution_brief', { path: briefPath }),
600
+ translator.t('execute_slice.command', { command: `${invocation.command} ${invocation.args.join(' ')}` }),
601
+ translator.t('execute_slice.timeout', { timeout: invocation.timeoutMs }),
602
+ translator.t('execute_slice.prompt_transport', { mode: invocation.promptTransport.mode }),
603
+ translator.t('execute_slice.prompt_length', { bytes: invocation.promptLength }),
604
+ translator.t('execute_slice.commit_after_validation', { value: commitEnabled ? translator.t('execute_slice.enabled') : translator.t('execute_slice.disabled') }),
599
605
  ];
600
606
  if (invocation.modelSelection && invocation.modelSelection.model) {
601
- lines.push(`Model: ${invocation.modelSelection.model}`);
602
- lines.push(`Model support: ${invocation.modelSelection.supported ? 'supported' : 'unsupported'} (${invocation.modelSelection.reason})`);
607
+ lines.push(translator.t('execute_slice.model', { model: invocation.modelSelection.model }));
608
+ lines.push(translator.t('execute_slice.model_support', {
609
+ reason: invocation.modelSelection.reason,
610
+ status: invocation.modelSelection.supported ? translator.t('execute_slice.supported') : translator.t('execute_slice.unsupported'),
611
+ }));
603
612
  }
604
613
  lines.push(
605
- 'Allowed files:',
614
+ translator.t('execute_slice.allowed_files'),
606
615
  ...formatList(allowedFiles),
607
- 'Validation commands:',
616
+ translator.t('execute_slice.validation_commands'),
608
617
  ...formatList(validationCommands),
609
618
  );
610
619
 
611
620
  return `${lines.join('\n')}\n`;
612
621
  }
613
622
 
614
- function formatExecuteSliceResult({ slice, changedFiles, scopeResult, validationResults, commitResult, commitEnabled }) {
623
+ function formatExecuteSliceResult({ slice, changedFiles, scopeResult, validationResults, commitResult, commitEnabled }, options = {}) {
624
+ const translator = createTranslator(options.language);
615
625
  const lines = [
616
- 'AI execute-slice completed',
617
- `Slice: ${slice.sliceId}`,
618
- `Spec: ${slice.specSlug}`,
619
- `Changed files: ${changedFiles.length}`,
626
+ translator.t('execute_slice.title.completed'),
627
+ translator.t('execute_slice.slice', { slice: slice.sliceId }),
628
+ translator.t('execute_slice.spec', { spec: slice.specSlug }),
629
+ translator.t('execute_slice.changed_files', { count: changedFiles.length }),
620
630
  ];
621
631
 
622
632
  for (const file of changedFiles) {
623
633
  lines.push(`- ${file}`);
624
634
  }
625
635
 
626
- lines.push(`Scope validation: ${scopeResult.ok ? 'passed' : 'failed'}`);
636
+ lines.push(translator.t('execute_slice.scope_validation', { value: scopeResult.ok ? translator.t('execute_slice.passed') : translator.t('execute_slice.failed') }));
627
637
  if (!Array.isArray(validationResults) || validationResults.length === 0) {
628
- lines.push('Validation commands: skipped (none declared)');
638
+ lines.push(translator.t('execute_slice.validation_skipped'));
629
639
  } else {
630
- lines.push(`Validation commands: passed (${validationResults.length})`);
640
+ lines.push(translator.t('execute_slice.validation_passed', { count: validationResults.length }));
631
641
  }
632
642
  if (commitResult) {
633
- lines.push(`Commit: created ${commitResult.hash}`);
634
- lines.push(`Commit message: ${commitResult.message}`);
643
+ lines.push(translator.t('execute_slice.commit_created', { hash: commitResult.hash }));
644
+ lines.push(translator.t('execute_slice.commit_message', { message: commitResult.message }));
635
645
  } else {
636
- lines.push(`Commit: ${commitEnabled ? 'not created' : 'skipped'}`);
646
+ lines.push(translator.t('execute_slice.commit_status', { value: commitEnabled ? translator.t('execute_slice.not_created') : translator.t('execute_slice.skipped') }));
637
647
  }
638
648
 
639
649
  return `${lines.join('\n')}\n`;
@@ -993,7 +1003,7 @@ async function runExecuteSlice(repoRoot, options = {}) {
993
1003
  validationCommands: executorContext.validationCommands,
994
1004
  allowedFiles: executorContext.allowedFiles,
995
1005
  commitEnabled: options.commit === true,
996
- }));
1006
+ }, { language: options.language }));
997
1007
  return report;
998
1008
  }
999
1009
 
@@ -1013,11 +1023,16 @@ async function runExecuteSlice(repoRoot, options = {}) {
1013
1023
 
1014
1024
  const ux = createCommandUx(options);
1015
1025
  const showProgress = shouldShowHumanProgress(ux, options);
1026
+ const translator = createTranslator(options.language);
1016
1027
  writeProgressChecks(
1017
1028
  ux,
1018
1029
  showProgress,
1019
- `Ejecutando slice con ${runtimeProfile.displayName}`,
1020
- ['Leyendo slice', 'Validando worktree', 'Preparando prompt'],
1030
+ translator.t('execute_slice.progress.title', { profile: runtimeProfile.displayName }),
1031
+ [
1032
+ translator.t('execute_slice.progress.reading_slice'),
1033
+ translator.t('execute_slice.progress.validating_worktree'),
1034
+ translator.t('execute_slice.progress.preparing_prompt'),
1035
+ ],
1021
1036
  );
1022
1037
 
1023
1038
  let result;
@@ -1025,6 +1040,7 @@ async function runExecuteSlice(repoRoot, options = {}) {
1025
1040
  result = await runProviderWithProgress({
1026
1041
  ux,
1027
1042
  enabled: showProgress,
1043
+ language: options.language,
1028
1044
  run: () => (options.runProviderFn || runProvider)(provider, {
1029
1045
  prompt,
1030
1046
  cwd: canonicalRepoRoot,
@@ -1091,9 +1107,9 @@ async function runExecuteSlice(repoRoot, options = {}) {
1091
1107
  validationResults = await runWithProgress({
1092
1108
  ux,
1093
1109
  enabled: showProgress && executorContext.validationCommands.length > 0,
1094
- message: 'Ejecutando validaciones...',
1095
- successMessage: 'Validaciones completadas',
1096
- failureMessage: 'Fallaron las validaciones',
1110
+ message: translator.t('execute_slice.progress.running_validations'),
1111
+ successMessage: translator.t('execute_slice.progress.validations_done'),
1112
+ failureMessage: translator.t('execute_slice.progress.validations_failed'),
1097
1113
  run: () => runValidationCommands(
1098
1114
  canonicalRepoRoot,
1099
1115
  executorContext.validationCommands,
@@ -1130,9 +1146,9 @@ async function runExecuteSlice(repoRoot, options = {}) {
1130
1146
  commitResult = await runWithProgress({
1131
1147
  ux,
1132
1148
  enabled: showProgress,
1133
- message: 'Creando commit del slice...',
1134
- successMessage: 'Commit del slice creado',
1135
- failureMessage: 'Fallo creando commit del slice',
1149
+ message: translator.t('execute_slice.progress.creating_commit'),
1150
+ successMessage: translator.t('execute_slice.progress.commit_done'),
1151
+ failureMessage: translator.t('execute_slice.progress.commit_failed'),
1136
1152
  run: () => commitSliceChanges(canonicalRepoRoot, executorContext.slice, finalScopeResult.changedFiles, {
1137
1153
  message: options.commitMessage,
1138
1154
  }),
@@ -1149,7 +1165,7 @@ async function runExecuteSlice(repoRoot, options = {}) {
1149
1165
  validationResults,
1150
1166
  commitResult,
1151
1167
  commitEnabled: options.commit === true,
1152
- }));
1168
+ }, { language: options.language }));
1153
1169
 
1154
1170
  return {
1155
1171
  task: 'execute-slice',
@@ -4,6 +4,7 @@ const path = require('node:path');
4
4
  const { listAgentProfiles } = require('../agent-profiles');
5
5
  const { PLANNER_APPROVAL_PHASES, readPhaseApproval } = require('../approvals');
6
6
  const { collectLayoutReport } = require('../doctor');
7
+ const { formatStatus, translatorForHuman } = require('../i18n/read-only-format');
7
8
  const {
8
9
  collectActiveSliceState,
9
10
  filterSlicesForExecution,
@@ -534,17 +535,23 @@ function collectLifecycleExport(projectRoot, options = {}) {
534
535
  return exportData;
535
536
  }
536
537
 
537
- function formatLifecycleInspect(data) {
538
+ function formatLifecycleInspect(data, options = {}) {
539
+ const translator = translatorForHuman(options);
538
540
  const lines = [
539
- 'Quiver lifecycle inspect',
540
- `Project: ${data.project.name}`,
541
- `Specs: ${data.summary.specs}`,
542
- `Slices: ${data.summary.slices} total, ${data.summary.open_slices} open, ${data.summary.blocked_slices} blocked, ${data.summary.progress_percent}% done`,
543
- `Runs: ${data.summary.runs}`,
544
- `Agents configured: ${data.summary.configured_agents}/${data.agents.length}`,
545
- `Layout: ${data.migration.layout}`,
541
+ translator.t('ai.inspect.title'),
542
+ `${translator.t('ai.label.project')}: ${data.project.name}`,
543
+ `${translator.t('ai.label.specs')}: ${data.summary.specs}`,
544
+ `${translator.t('ai.inspect.slices_summary', {
545
+ total: data.summary.slices,
546
+ open: data.summary.open_slices,
547
+ blocked: data.summary.blocked_slices,
548
+ percent: data.summary.progress_percent,
549
+ })}`,
550
+ `${translator.t('ai.label.runs')}: ${data.summary.runs}`,
551
+ `${translator.t('ai.inspect.agents_configured')}: ${data.summary.configured_agents}/${data.agents.length}`,
552
+ `${translator.t('ai.label.layout')}: ${data.migration.layout}`,
546
553
  '',
547
- 'Next safe commands',
554
+ translator.t('ai.label.next_safe_commands'),
548
555
  ];
549
556
 
550
557
  for (const step of data.next_steps || collectNextSteps(data)) {
@@ -554,14 +561,14 @@ function formatLifecycleInspect(data) {
554
561
  if (data.active_slice) {
555
562
  lines.push(
556
563
  '',
557
- 'Active slice state',
558
- `- Sources: ${data.active_slice.sources.length}`,
559
- `- Reconciliation: ${data.active_slice.reconciliation.decision} (${data.active_slice.reconciliation.reason})`,
564
+ translator.t('ai.inspect.active_slice_state'),
565
+ `- ${translator.t('ai.label.sources')}: ${data.active_slice.sources.length}`,
566
+ `- ${translator.t('ai.label.reconciliation')}: ${data.active_slice.reconciliation.decision} (${data.active_slice.reconciliation.reason})`,
560
567
  );
561
568
  }
562
569
 
563
570
  if (data.dashboard.blockers.length > 0) {
564
- lines.push('', 'Blockers');
571
+ lines.push('', translator.t('ai.label.blockers'));
565
572
  for (const blocker of data.dashboard.blockers) {
566
573
  lines.push(`- ${blocker.ref}: ${blocker.reason}`);
567
574
  }
@@ -571,72 +578,75 @@ function formatLifecycleInspect(data) {
571
578
  return `${lines.join('\n')}\n`;
572
579
  }
573
580
 
574
- function formatSpecsList(data) {
575
- const lines = ['Quiver specs list'];
581
+ function formatSpecsList(data, options = {}) {
582
+ const translator = translatorForHuman(options);
583
+ const lines = [translator.t('ai.specs.title')];
576
584
 
577
585
  if (data.specs.length === 0) {
578
- lines.push('- No specs found. Next: npx create-quiver spec create --dry-run');
586
+ lines.push(`- ${translator.t('ai.specs.empty')} ${translator.t('ai.label.next')}: npx create-quiver spec create --dry-run`);
579
587
  lines.push('');
580
588
  return `${lines.join('\n')}\n`;
581
589
  }
582
590
 
583
591
  for (const spec of data.specs) {
584
- lines.push(`- ${spec.slug}: ${spec.status}, ${spec.progress.percent}% done, ${spec.progress.total} slices (${spec.path})`);
592
+ lines.push(`- ${spec.slug}: ${formatStatus(spec.status, translator)}, ${spec.progress.percent}% ${translator.t('ai.label.done')}, ${translator.t('common.slice.count', { count: spec.progress.total })} (${spec.path})`);
585
593
  }
586
594
 
587
595
  lines.push('');
588
596
  return `${lines.join('\n')}\n`;
589
597
  }
590
598
 
591
- function formatSlicesList(data) {
592
- const lines = ['Quiver slices list'];
599
+ function formatSlicesList(data, options = {}) {
600
+ const translator = translatorForHuman(options);
601
+ const lines = [translator.t('ai.slices.title')];
593
602
 
594
603
  if (data.slices.length === 0) {
595
- lines.push('- No slices found. Next: npx create-quiver spec create --dry-run');
604
+ lines.push(`- ${translator.t('ai.slices.empty')} ${translator.t('ai.label.next')}: npx create-quiver spec create --dry-run`);
596
605
  lines.push('');
597
606
  return `${lines.join('\n')}\n`;
598
607
  }
599
608
 
600
609
  for (const slice of data.slices) {
601
- const deps = slice.dependencies.length > 0 ? ` deps=${slice.dependencies.join(',')}` : '';
602
- const blocked = slice.blocked_reason ? ` blocked=${slice.blocked_reason}` : '';
603
- lines.push(`- ${slice.ref}: ${slice.status}, ${slice.progress}% done${deps}${blocked}`);
610
+ const deps = slice.dependencies.length > 0 ? ` ${translator.t('ai.slices.deps')}=${slice.dependencies.join(',')}` : '';
611
+ const blocked = slice.blocked_reason ? ` ${translator.t('ai.slices.blocked')}=${slice.blocked_reason}` : '';
612
+ lines.push(`- ${slice.ref}: ${formatStatus(slice.status, translator)}, ${slice.progress}% ${translator.t('ai.label.done')}${deps}${blocked}`);
604
613
  }
605
614
 
606
615
  lines.push('');
607
616
  return `${lines.join('\n')}\n`;
608
617
  }
609
618
 
610
- function formatTraceReport(data) {
619
+ function formatTraceReport(data, options = {}) {
620
+ const translator = translatorForHuman(options);
611
621
  const lines = [
612
- 'Quiver trace report',
613
- `Project: ${data.project.name}`,
614
- `Schema: ${data.schema_version}`,
622
+ translator.t('ai.trace.title'),
623
+ `${translator.t('ai.label.project')}: ${data.project.name}`,
624
+ `${translator.t('ai.label.schema')}: ${data.schema_version}`,
615
625
  '',
616
- 'Runs',
626
+ translator.t('ai.label.runs'),
617
627
  ];
618
628
 
619
629
  if (data.runs.length === 0) {
620
- lines.push('- none');
630
+ lines.push(`- ${translator.t('common.none')}`);
621
631
  } else {
622
632
  for (const run of data.runs) {
623
- lines.push(`- ${run.run_id}: ${run.phase} (${run.status}) -> ${run.next_command}`);
633
+ lines.push(`- ${run.run_id}: ${run.phase} (${formatStatus(run.status, translator)}) -> ${run.next_command}`);
624
634
  }
625
635
  }
626
636
 
627
- lines.push('', 'Execution waves');
637
+ lines.push('', translator.t('ai.trace.execution_waves'));
628
638
  if (!data.graph.ok) {
629
- lines.push(`- graph error: ${data.graph.error.message}`);
639
+ lines.push(`- ${translator.t('ai.trace.graph_error')}: ${data.graph.error.message}`);
630
640
  } else if (data.graph.levels.length === 0) {
631
- lines.push('- none');
641
+ lines.push(`- ${translator.t('common.none')}`);
632
642
  } else {
633
643
  for (const level of data.graph.levels) {
634
- lines.push(`- wave ${level.level}: ${level.slices.join(', ')}`);
644
+ lines.push(`- ${translator.t('ai.trace.wave')} ${level.level}: ${level.slices.join(', ')}`);
635
645
  }
636
646
  }
637
647
 
638
- lines.push('', 'Migration');
639
- lines.push(`- layout: ${data.migration.layout}`);
648
+ lines.push('', translator.t('ai.trace.migration'));
649
+ lines.push(`- ${translator.t('ai.label.layout').toLowerCase()}: ${data.migration.layout}`);
640
650
  for (const recommendation of data.migration.recommendations) {
641
651
  lines.push(`- ${recommendation}`);
642
652
  }
@@ -645,71 +655,72 @@ function formatTraceReport(data) {
645
655
  return `${lines.join('\n')}\n`;
646
656
  }
647
657
 
648
- function formatLifecycleExportMarkdown(data) {
658
+ function formatLifecycleExportMarkdown(data, options = {}) {
659
+ const translator = translatorForHuman(options);
649
660
  const lines = [
650
- '# Quiver Lifecycle Export',
661
+ `# ${translator.t('ai.export_markdown.title')}`,
651
662
  '',
652
- `- Project: ${data.project.name}`,
653
- `- Generated: ${data.generated_at}`,
654
- `- Schema version: ${data.schema_version}`,
655
- `- Specs: ${data.summary.specs}`,
656
- `- Slices: ${data.summary.slices} total, ${data.summary.completed_slices} completed, ${data.summary.open_slices} open`,
657
- `- Progress: ${data.summary.progress_percent}%`,
658
- `- Layout: ${data.migration.layout}`,
663
+ `- ${translator.t('ai.label.project')}: ${data.project.name}`,
664
+ `- ${translator.t('ai.export_markdown.generated')}: ${data.generated_at}`,
665
+ `- ${translator.t('ai.export_markdown.schema_version')}: ${data.schema_version}`,
666
+ `- ${translator.t('ai.label.specs')}: ${data.summary.specs}`,
667
+ `- ${translator.t('ai.label.slices')}: ${data.summary.slices} ${translator.t('ai.label.total')}, ${data.summary.completed_slices} ${translator.t('status.completed')}, ${data.summary.open_slices} ${translator.t('status.open')}`,
668
+ `- ${translator.t('ai.label.progress')}: ${data.summary.progress_percent}%`,
669
+ `- ${translator.t('ai.label.layout')}: ${data.migration.layout}`,
659
670
  '',
660
- '## Specs',
671
+ `## ${translator.t('ai.label.specs')}`,
661
672
  '',
662
673
  ];
663
674
 
664
675
  if (data.specs.length === 0) {
665
- lines.push('No specs found.');
676
+ lines.push(translator.t('ai.specs.empty_sentence'));
666
677
  } else {
667
- lines.push('| Spec | Status | Progress | Slices | Path |');
678
+ lines.push(`| ${translator.t('ai.table.spec')} | ${translator.t('ai.table.status')} | ${translator.t('ai.table.progress')} | ${translator.t('ai.table.slices')} | ${translator.t('ai.table.path')} |`);
668
679
  lines.push('|---|---|---:|---:|---|');
669
680
  for (const spec of data.specs) {
670
- lines.push(`| ${spec.slug} | ${spec.status} | ${spec.progress.percent}% | ${spec.progress.total} | ${spec.path} |`);
681
+ lines.push(`| ${spec.slug} | ${formatStatus(spec.status, translator)} | ${spec.progress.percent}% | ${spec.progress.total} | ${spec.path} |`);
671
682
  }
672
683
  }
673
684
 
674
- lines.push('', '## Slices', '');
685
+ lines.push('', `## ${translator.t('ai.label.slices')}`, '');
675
686
  if (data.slices.length === 0) {
676
- lines.push('No slices found.');
687
+ lines.push(translator.t('ai.slices.empty_sentence'));
677
688
  } else {
678
- lines.push('| Slice | Status | Progress | Dependencies | Write Scope |');
689
+ lines.push(`| ${translator.t('ai.table.slice')} | ${translator.t('ai.table.status')} | ${translator.t('ai.table.progress')} | ${translator.t('ai.table.dependencies')} | ${translator.t('ai.table.write_scope')} |`);
679
690
  lines.push('|---|---|---:|---|---|');
680
691
  for (const slice of data.slices) {
681
- lines.push(`| ${slice.ref} | ${slice.status} | ${slice.progress}% | ${slice.dependencies.join(', ') || '-'} | ${slice.allowed_write_paths.join(', ') || slice.files.join(', ') || '-'} |`);
692
+ lines.push(`| ${slice.ref} | ${formatStatus(slice.status, translator)} | ${slice.progress}% | ${slice.dependencies.join(', ') || '-'} | ${slice.allowed_write_paths.join(', ') || slice.files.join(', ') || '-'} |`);
682
693
  }
683
694
  }
684
695
 
685
- lines.push('', '## Agents', '');
696
+ lines.push('', `## ${translator.t('ai.label.agents')}`, '');
686
697
  if (data.agents.length === 0) {
687
- lines.push('No agent roles available.');
698
+ lines.push(translator.t('ai.agents.empty_sentence'));
688
699
  } else {
689
- lines.push('| Role | Configured | Provider | Model |');
700
+ lines.push(`| ${translator.t('ai.table.role')} | ${translator.t('ai.table.configured')} | ${translator.t('ai.table.provider')} | ${translator.t('ai.table.model')} |`);
690
701
  lines.push('|---|---|---|---|');
691
702
  for (const agent of data.agents) {
692
- lines.push(`| ${agent.role} | ${agent.configured ? 'yes' : 'no'} | ${agent.provider || '-'} | ${agent.model || '-'} |`);
703
+ lines.push(`| ${agent.role} | ${agent.configured ? translator.t('common.yes') : translator.t('common.no')} | ${agent.provider || '-'} | ${agent.model || '-'} |`);
693
704
  }
694
705
  }
695
706
 
696
- lines.push('', '## Runs', '');
707
+ lines.push('', `## ${translator.t('ai.label.runs')}`, '');
697
708
  if (data.runs.length === 0) {
698
- lines.push('No AI runs found.');
709
+ lines.push(translator.t('ai.runs.empty_sentence'));
699
710
  } else {
700
- lines.push('| Run | Phase | Status | Next Command |');
711
+ lines.push(`| ${translator.t('ai.table.run')} | ${translator.t('ai.table.phase')} | ${translator.t('ai.table.status')} | ${translator.t('ai.table.next_command')} |`);
701
712
  lines.push('|---|---|---|---|');
702
713
  for (const run of data.runs) {
703
- lines.push(`| ${run.run_id} | ${run.phase} | ${run.status} | \`${run.next_command}\` |`);
714
+ lines.push(`| ${run.run_id} | ${run.phase} | ${formatStatus(run.status, translator)} | \`${run.next_command}\` |`);
704
715
  }
705
716
  }
706
717
 
707
- lines.push('', '## Migration', '');
708
- lines.push(`- Layout: ${data.migration.layout}`);
718
+ lines.push('', `## ${translator.t('ai.trace.migration')}`, '');
719
+ lines.push(`- ${translator.t('ai.label.layout')}: ${data.migration.layout}`);
709
720
  for (const recommendation of data.migration.recommendations) {
710
721
  lines.push(`- ${recommendation}`);
711
722
  }
712
- lines.push(`- Dry-run: \`${data.migration.dry_run_command}\``);
723
+ lines.push(`- ${translator.t('ai.export_markdown.dry_run')}: \`${data.migration.dry_run_command}\``);
713
724
  lines.push('');
714
725
 
715
726
  return `${lines.join('\n')}\n`;