trackops 2.0.4 → 2.0.6

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 (92) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +660 -575
  3. package/bin/trackops.js +127 -106
  4. package/lib/cli-format.js +118 -0
  5. package/lib/config.js +352 -326
  6. package/lib/control.js +408 -246
  7. package/lib/env.js +234 -222
  8. package/lib/i18n.js +5 -4
  9. package/lib/init.js +390 -282
  10. package/lib/locale.js +41 -41
  11. package/lib/opera-bootstrap.js +1066 -880
  12. package/lib/opera.js +615 -444
  13. package/lib/preferences.js +74 -74
  14. package/lib/registry.js +214 -214
  15. package/lib/release.js +56 -56
  16. package/lib/runtime-state.js +144 -144
  17. package/lib/skills.js +114 -89
  18. package/lib/workspace.js +259 -248
  19. package/locales/en.json +311 -167
  20. package/locales/es.json +314 -170
  21. package/package.json +61 -58
  22. package/scripts/postinstall-locale.js +21 -21
  23. package/scripts/skills-marketplace-smoke.js +124 -124
  24. package/scripts/smoke-tests.js +563 -517
  25. package/scripts/sync-skill-version.js +21 -21
  26. package/scripts/validate-skill.js +103 -103
  27. package/skills/trackops/SKILL.md +126 -122
  28. package/skills/trackops/agents/openai.yaml +7 -7
  29. package/skills/trackops/locales/en/SKILL.md +126 -122
  30. package/skills/trackops/locales/en/references/activation.md +94 -90
  31. package/skills/trackops/locales/en/references/troubleshooting.md +73 -67
  32. package/skills/trackops/locales/en/references/workflow.md +55 -32
  33. package/skills/trackops/references/activation.md +94 -90
  34. package/skills/trackops/references/troubleshooting.md +73 -67
  35. package/skills/trackops/references/workflow.md +55 -32
  36. package/skills/trackops/skill.json +29 -29
  37. package/templates/hooks/post-checkout +2 -2
  38. package/templates/hooks/post-commit +2 -2
  39. package/templates/hooks/post-merge +2 -2
  40. package/templates/opera/agent.md +28 -27
  41. package/templates/opera/architecture/dependency-graph.md +24 -24
  42. package/templates/opera/architecture/runtime-automation.md +24 -24
  43. package/templates/opera/architecture/runtime-operations.md +34 -34
  44. package/templates/opera/en/agent.md +22 -21
  45. package/templates/opera/en/architecture/dependency-graph.md +24 -24
  46. package/templates/opera/en/architecture/runtime-automation.md +24 -24
  47. package/templates/opera/en/architecture/runtime-operations.md +34 -34
  48. package/templates/opera/en/reviews/delivery-audit.md +18 -18
  49. package/templates/opera/en/reviews/integration-audit.md +18 -18
  50. package/templates/opera/en/router.md +24 -19
  51. package/templates/opera/references/autonomy-and-recovery.md +117 -117
  52. package/templates/opera/references/opera-cycle.md +193 -193
  53. package/templates/opera/registry.md +28 -28
  54. package/templates/opera/reviews/delivery-audit.md +18 -18
  55. package/templates/opera/reviews/integration-audit.md +18 -18
  56. package/templates/opera/router.md +54 -49
  57. package/templates/skills/changelog-updater/SKILL.md +69 -69
  58. package/templates/skills/commiter/SKILL.md +99 -99
  59. package/templates/skills/opera-contract-auditor/SKILL.md +38 -38
  60. package/templates/skills/opera-contract-auditor/locales/en/SKILL.md +38 -38
  61. package/templates/skills/opera-policy-guard/SKILL.md +26 -26
  62. package/templates/skills/opera-policy-guard/locales/en/SKILL.md +26 -26
  63. package/templates/skills/opera-skill/SKILL.md +279 -0
  64. package/templates/skills/opera-skill/locales/en/SKILL.md +279 -0
  65. package/templates/skills/opera-skill/locales/en/references/phase-dod.md +138 -0
  66. package/templates/skills/opera-skill/references/phase-dod.md +138 -0
  67. package/templates/skills/project-starter-skill/SKILL.md +150 -131
  68. package/templates/skills/project-starter-skill/locales/en/SKILL.md +143 -105
  69. package/templates/skills/project-starter-skill/references/opera-cycle.md +195 -193
  70. package/ui/css/base.css +284 -284
  71. package/ui/css/charts.css +425 -425
  72. package/ui/css/components.css +1107 -1107
  73. package/ui/css/onboarding.css +133 -133
  74. package/ui/css/terminal.css +125 -125
  75. package/ui/css/timeline.css +58 -58
  76. package/ui/css/tokens.css +284 -284
  77. package/ui/favicon.svg +5 -5
  78. package/ui/index.html +99 -99
  79. package/ui/js/charts.js +526 -526
  80. package/ui/js/console-logger.js +172 -172
  81. package/ui/js/filters.js +247 -247
  82. package/ui/js/icons.js +129 -129
  83. package/ui/js/keyboard.js +229 -229
  84. package/ui/js/router.js +142 -142
  85. package/ui/js/theme.js +100 -100
  86. package/ui/js/time-tracker.js +248 -248
  87. package/ui/js/views/dashboard.js +870 -870
  88. package/ui/js/views/flash.js +47 -47
  89. package/ui/js/views/projects.js +745 -745
  90. package/ui/js/views/scrum.js +476 -476
  91. package/ui/js/views/settings.js +331 -331
  92. package/ui/js/views/timeline.js +265 -265
package/locales/es.json CHANGED
@@ -69,6 +69,16 @@
69
69
  "cli.actionNotSupported": "Accion no soportada: {action}",
70
70
  "cli.mustProvideActionAndId": "Debes indicar accion e id de tarea.",
71
71
  "cli.noReadyTasks": "No hay tareas listas. Revisa bloqueadores y dependencias.",
72
+ "cli.noReadyTasks.blocked": "No hay tareas listas. Hay {count} tarea(s) bloqueada(s). Ejecuta 'trackops status' para ver detalles.",
73
+ "cli.noReadyTasks.allDone": "Todas las tareas estan completadas o canceladas. El proyecto ha alcanzado completitud operativa.",
74
+ "control.circularDependency": "Advertencia: dependencia circular detectada en tarea(s): {taskIds}.",
75
+ "control.taskAlreadyStatus": "La tarea '{taskId}' ya esta en estado '{status}'. Sin cambios.",
76
+ "control.contractStale": "El contrato operativo estaba desactualizado y ha sido revalidado.",
77
+ "control.docsOverwriteWarning": "Advertencia: {file} tiene ediciones manuales y no fue sobreescrito. Usa --force para forzar.",
78
+ "opera.install.bootstrapConfirm": "¿Iniciar bootstrap ahora? [y/N]",
79
+ "opera.install.bootstrapSkipped": "El bootstrap no se inició. Ejecuta 'trackops opera bootstrap' cuando quieras continuar.",
80
+ "skill.installError": "Advertencia: no se pudo instalar la skill '{name}': {error}",
81
+ "cli.help.initFirst": "Ejecuta 'trackops init' para inicializar un proyecto aqui.",
72
82
  "cli.hooksInstalled": "Git hooks instalados en .githooks",
73
83
  "cli.hooksError": "No se pudo configurar core.hooksPath.",
74
84
  "cli.noProjectFound": "No se encontro project_control.json en este directorio ni superiores.",
@@ -88,71 +98,87 @@
88
98
  "cli.status.repo": "Repositorio:",
89
99
  "cli.status.branch": "Rama: {branch} | Arbol: {treeStatus}",
90
100
  "cli.status.treeClean": "limpio",
91
- "cli.status.treeDirty": "sucio ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
101
+ "cli.status.treeDirty": "con cambios ({staged} preparados, {unstaged} sin preparar, {untracked} nuevos)",
92
102
  "cli.status.lastCommit": "Ultimo commit: {hash} {subject}",
93
- "cli.status.divergence": "Divergencia: ahead {ahead}, behind {behind}",
94
- "cli.status.runtime": "Runtime: {path}",
95
- "cli.status.docsSynced": "Documentacion sincronizada: {status}",
96
- "cli.status.docsSyncedYes": "si",
97
- "cli.status.docsSyncedNo": "no ({files})",
98
-
99
- "cli.next.phase": "fase",
100
- "cli.next.priority": "prioridad",
101
- "cli.next.stream": "stream",
102
- "cli.next.summary": "resumen",
103
+ "cli.status.divergence": "Divergencia con remoto: {ahead} por enviar, {behind} por traer",
104
+ "cli.status.runtime": "Runtime: {path}",
105
+ "cli.status.docsSynced": "Documentacion sincronizada: {status}",
106
+ "cli.status.docsSyncedYes": "si",
107
+ "cli.status.docsSyncedNo": "no ({files})",
108
+ "cli.status.layout": "Estructura: {layout} | Raiz: {workspace}",
109
+ "cli.status.appRoot": "App: {path}",
110
+ "cli.status.opsRoot": "Ops: {path}",
111
+ "cli.status.bootstrapMode": "Ruta de bootstrap: {value}",
112
+ "cli.status.bootstrapReason": "Motivo de la ruta: {value}",
113
+ "cli.status.gitState": "Git: {state}",
114
+ "cli.status.gitNotInitialized": "no inicializado",
115
+ "cli.status.gitAction": "Ejecuta 'git init' antes de confiar en el estado del repositorio o en los flujos de release.",
116
+ "cli.status.branchDetached": "HEAD desacoplado",
117
+ "cli.status.noUpstream": "Todavia no hay rama remota configurada.",
118
+ "cli.status.envPresent": "Claves de entorno presentes: {value}",
119
+ "cli.status.envMissing": "Claves de entorno faltantes: {value}",
120
+
121
+ "cli.next.phase": "fase",
122
+ "cli.next.priority": "prioridad",
123
+ "cli.next.stream": "stream",
124
+ "cli.next.summary": "resumen",
125
+ "cli.sync.dryRunWouldUpdate": "Se actualizarian: {files}",
126
+ "cli.sync.dryRunInSync": "Toda la documentacion ya esta sincronizada.",
103
127
 
104
- "cli.help.title": "Control operativo del proyecto",
105
- "cli.help.usage": "Uso:",
106
- "cli.help.commands": "Comandos:",
107
- "cli.help.init.desc": "Inicializa TrackOps en el directorio actual.",
108
- "cli.help.workspace.desc": "Muestra o migra el layout actual del workspace.",
109
- "cli.help.env.desc": "Audita o sincroniza el contrato .env del workspace.",
110
- "cli.help.release.desc": "Publica el snapshot configurado de app/.",
111
- "cli.help.version.desc": "Imprime la version instalada de TrackOps.",
112
- "cli.help.status.desc": "Muestra el estado del proyecto: foco, fase activa, tareas listas, bloqueadores y repo.",
113
- "cli.help.next.desc": "Cola priorizada de siguientes tareas ejecutables.",
114
- "cli.help.sync.desc": "Regenera task_plan.md, progress.md y findings.md desde project_control.json.",
115
- "cli.help.dashboard.desc": "Lanza el dashboard web local en un puerto libre e imprime URLs local/red.",
116
- "cli.help.refreshRepo.desc": "Actualiza el snapshot runtime del repo con el estado git.",
117
- "cli.help.installHooks.desc": "Configura git core.hooksPath para usar el directorio de hooks de TrackOps.",
118
- "cli.help.register.desc": "Registra el proyecto actual en el portfolio multiproyecto.",
119
- "cli.help.projects.desc": "Lista los proyectos registrados.",
120
- "cli.help.task.desc": "Acciones: start, review, complete, block, pending, cancel, note.",
121
- "cli.help.opera.desc": "Gestiona OPERA.",
122
- "cli.help.opera.upgradeHint": "Upgrade: trackops opera upgrade --stable [--reset]",
128
+ "cli.help.title": "Control operativo del proyecto",
129
+ "cli.help.usage": "Uso:",
130
+ "cli.help.commands": "Comandos:",
131
+ "cli.help.init.desc": "Inicializa TrackOps en el directorio actual.",
132
+ "cli.help.workspace.desc": "Muestra o migra el layout actual del workspace.",
133
+ "cli.help.env.desc": "Audita o sincroniza el contrato .env del workspace.",
134
+ "cli.help.release.desc": "Publica el snapshot configurado de app/.",
135
+ "cli.help.version.desc": "Imprime la version instalada de TrackOps.",
136
+ "cli.help.status.desc": "Muestra el estado del proyecto: foco, fase activa, tareas listas, bloqueadores y repo.",
137
+ "cli.help.next.desc": "Cola priorizada de siguientes tareas ejecutables.",
138
+ "cli.help.sync.desc": "Regenera task_plan.md, progress.md y findings.md desde project_control.json.",
139
+ "cli.help.dashboard.desc": "Lanza el dashboard web local en un puerto libre e imprime URLs local/red.",
140
+ "cli.help.refreshRepo.desc": "Actualiza el snapshot runtime del repo con el estado git.",
141
+ "cli.help.installHooks.desc": "Configura git core.hooksPath para usar el directorio de hooks de TrackOps.",
142
+ "cli.help.register.desc": "Registra el proyecto actual en el portfolio multiproyecto.",
143
+ "cli.help.projects.desc": "Lista los proyectos registrados.",
144
+ "cli.help.task.desc": "Acciones: start, review, complete, block, pending, cancel, note.",
145
+ "cli.help.opera.desc": "Gestiona OPERA.",
146
+ "cli.help.opera.upgradeHint": "Upgrade: trackops opera upgrade --stable [--reset]",
123
147
  "cli.help.locale.desc": "Muestra o actualiza el idioma global de TrackOps.",
124
148
  "cli.help.doctor.desc": "Explica el origen efectivo del idioma para esta maquina/proyecto.",
125
149
  "cli.help.skill.desc": "Gestiona skills.",
126
150
  "cli.help.help.desc": "Muestra esta ayuda.",
151
+ "cli.help.globalFlags": "Flags globales:",
152
+ "cli.help.globalFlags.line1": "Usa '--plain' (o '--a11y') para desactivar el formato con Unicode y facilitar lectores de pantalla, logs o terminales limitadas.",
127
153
  "cli.help.globalWorkflow": "Flujo global del agente:",
128
- "cli.help.globalWorkflow.line1": "Instala la skill con 'npx skills add Baxahaun/trackops' y luego el runtime con 'npm install -g trackops'.",
129
- "cli.help.globalWorkflow.line2": "Despues verifica con 'trackops --version' y usa 'trackops init' y 'trackops opera install' de forma explicita dentro de cada proyecto.",
130
- "cli.usage.workspace": "Uso: trackops workspace <status|migrate>",
131
- "cli.usage.env": "Uso: trackops env <status|sync>",
132
- "cli.usage.opera": "Uso: trackops opera <install|bootstrap|handoff|status|configure|upgrade>",
133
- "cli.usage.skill": "Uso: trackops skill <install|list|remove|catalog> [name]",
134
- "cli.usage.locale": "Uso: trackops locale <get|set> [es|en]",
135
- "cli.usage.doctor": "Uso: trackops doctor locale",
136
- "cli.error.unknownCommand": "Comando desconocido: {command}",
137
- "cli.error.runHelp": "Ejecuta 'trackops help' para ver el uso.",
138
- "cli.error.noWorkspace": "No se encontro ningun workspace TrackOps en este directorio ni en sus padres.",
139
- "locale.effective": "Idioma efectivo",
140
- "locale.source": "Origen",
141
- "locale.global": "Idioma global",
142
- "locale.project": "Idioma del proyecto",
143
- "locale.env": "Idioma por entorno",
144
- "locale.system": "Idioma del sistema",
145
- "locale.runtimeFile": "Archivo runtime",
146
- "locale.none": "ninguno",
147
- "locale.invalid": "Idioma invalido: {value}.",
148
- "locale.updated": "Idioma global actualizado a {locale}.",
149
- "locale.source.explicit": "flag explicito",
150
- "locale.source.project": "proyecto",
151
- "locale.source.global": "global",
152
- "locale.source.env": "entorno",
153
- "locale.source.system": "sistema",
154
- "locale.source.prompt": "prompt",
155
- "locale.source.manual": "manual",
154
+ "cli.help.globalWorkflow.line1": "Instala la skill con 'npx skills add Baxahaun/trackops' y luego el runtime con 'npm install -g trackops'.",
155
+ "cli.help.globalWorkflow.line2": "Despues verifica con 'trackops --version' y usa 'trackops init' y 'trackops opera install' de forma explicita dentro de cada proyecto.",
156
+ "cli.usage.workspace": "Uso: trackops workspace <status|migrate>",
157
+ "cli.usage.env": "Uso: trackops env <status|sync>",
158
+ "cli.usage.opera": "Uso: trackops opera <install|bootstrap|handoff|status|configure|upgrade>",
159
+ "cli.usage.skill": "Uso: trackops skill <install|list|remove|catalog> [name]",
160
+ "cli.usage.locale": "Uso: trackops locale <get|set> [es|en]",
161
+ "cli.usage.doctor": "Uso: trackops doctor locale",
162
+ "cli.error.unknownCommand": "Comando desconocido: {command}",
163
+ "cli.error.runHelp": "Ejecuta 'trackops help' para ver el uso.",
164
+ "cli.error.noWorkspace": "No se encontro ningun workspace TrackOps en este directorio ni en sus padres.",
165
+ "locale.effective": "Idioma efectivo",
166
+ "locale.source": "Origen",
167
+ "locale.global": "Idioma global",
168
+ "locale.project": "Idioma del proyecto",
169
+ "locale.env": "Idioma por entorno",
170
+ "locale.system": "Idioma del sistema",
171
+ "locale.runtimeFile": "Archivo runtime",
172
+ "locale.none": "ninguno",
173
+ "locale.invalid": "Idioma invalido: {value}.",
174
+ "locale.updated": "Idioma global actualizado a {locale}.",
175
+ "locale.source.explicit": "flag explicito",
176
+ "locale.source.project": "proyecto",
177
+ "locale.source.global": "global",
178
+ "locale.source.env": "entorno",
179
+ "locale.source.system": "sistema",
180
+ "locale.source.prompt": "prompt",
181
+ "locale.source.manual": "manual",
156
182
 
157
183
  "server.ready": "Ops dashboard listo en http://{host}:{port}",
158
184
  "server.bannerTitle": "Serving!",
@@ -180,98 +206,188 @@
180
206
 
181
207
  "init.welcome": "Proyecto inicializado con trackops.",
182
208
  "init.opsExists": "Ops ya esta instalado en este proyecto.",
183
- "init.created": "Creado {file}",
184
- "init.updated": "Actualizado {file}",
185
- "init.registered": "Proyecto registrado en el portfolio global.",
186
- "init.defaultFocus": "Bootstrap operativo del proyecto",
187
- "init.defaultTarget": "Proyecto gestionado con trackops",
188
- "init.defaultTaskTitle": "Configurar proyecto con trackops",
189
- "init.defaultTaskSummary": "Verificar estructura inicial, ajustar fases y confirmar integracion operativa.",
209
+ "init.created": "Creado {file}",
210
+ "init.updated": "Actualizado {file}",
211
+ "init.adoptedExistingRepo": "El contenido del repositorio existente se movio a {dir}/.",
212
+ "init.registered": "Proyecto registrado en el portfolio global.",
213
+ "init.defaultFocus": "Bootstrap operativo del proyecto",
214
+ "init.defaultTarget": "Proyecto gestionado con trackops",
215
+ "init.defaultTaskTitle": "Configurar proyecto con trackops",
216
+ "init.defaultTaskSummary": "Verificar estructura inicial, ajustar fases y confirmar integracion operativa.",
217
+ "init.error.legacyDetected": "Se detectó un proyecto TrackOps legacy. Ejecuta 'trackops workspace migrate' en lugar de 'trackops init'.",
218
+ "init.error.reservedConflict": "No se puede inicializar TrackOps aqui porque estas entradas reservadas ya existen sin un workspace TrackOps valido: {entries}. Resuelvelas o renómbralas primero.",
190
219
 
191
- "opera.installed": "Metodologia OPERA instalada (v{version}).",
192
- "opera.alreadyInstalled": "OPERA ya esta instalado en este proyecto (v{version}).",
193
- "opera.notInstalled": "OPERA no esta instalado en este proyecto.",
194
- "opera.upgraded": "OPERA actualizado a v{version}.",
195
- "opera.primitiveDetected": "Detectada instalacion OPERA existente (sin gestion por Ops).",
196
- "opera.status.version": "OPERA v{version}",
220
+ "opera.installed": "Metodologia OPERA instalada (v{version}).",
221
+ "opera.alreadyInstalled": "OPERA ya esta instalado en este proyecto (v{version}).",
222
+ "opera.notInstalled": "OPERA no esta instalado en este proyecto.",
223
+ "opera.upgraded": "OPERA actualizado a v{version}.",
224
+ "opera.primitiveDetected": "Detectada instalacion OPERA existente (sin gestion por Ops).",
225
+ "opera.status.version": "OPERA v{version}",
197
226
  "opera.status.installed": " Instalado: {value}",
198
227
  "opera.status.skills": " Skills: {value}",
199
228
  "opera.status.locale": " Idioma: {locale} ({source})",
200
- "opera.status.legacy": " Legacy: {value}",
229
+ "opera.status.legacy": " Compatibilidad: {value}",
201
230
  "opera.status.contractVersion": " Version de contrato: {value}",
202
- "opera.status.contractReadiness": " Readiness del contrato: {value}",
203
- "opera.status.bootstrap": " Bootstrap: {value}",
231
+ "opera.status.contractReadiness": " Madurez del contrato: {value}",
232
+ "opera.status.bootstrap": " Estado del bootstrap: {value}",
204
233
  "opera.status.mode": " Modo: {value}",
205
234
  "opera.status.route": " Ruta: {value}",
206
- "opera.status.ownership": " Ownership: {value}",
235
+ "opera.status.ownership": " Responsable de decisiones: {value}",
207
236
  "opera.status.missing": " Faltan: {value}",
237
+ "opera.status.awaitingAgentExplanation": " TrackOps esta esperando que el agente produzca los archivos de bootstrap.",
238
+ "opera.status.awaitingAgentAction": " Accion: ejecuta 'trackops opera handoff --print', entrega ese contexto a tu agente y espera a que cree los archivos solicitados.",
239
+ "opera.status.directExplanation": " El bootstrap guiado todavia esta incompleto.",
240
+ "opera.status.directAction": " Accion: completa {intake} y {spec}, luego reanuda.",
241
+ "opera.status.contractNotGenerated": " El contrato operativo no se genera hasta completar el bootstrap.",
208
242
  "opera.status.resume": " Reanudar: trackops opera bootstrap --resume",
209
- "opera.status.handoff": " Handoff: {value}",
210
- "opera.status.qualityReport": " Quality report: {value}",
243
+ "opera.status.handoff": " Contexto para agente: {value}",
244
+ "opera.status.intake": " Intake: {value}",
245
+ "opera.status.specDossier": " Dossier de especificacion: {value}",
246
+ "opera.status.openQuestions": " Preguntas abiertas: {value}",
247
+ "opera.status.qualityReport": " Informe de calidad: {value}",
211
248
  "opera.status.structure": " Estructura:",
212
- "opera.configure.invalidPhases": "JSON de fases invalido.",
213
- "opera.configure.updated": "Configuracion actualizada.",
214
- "opera.upgrade.runInstallFirst": "Ejecuta 'trackops opera install' primero.",
249
+ "opera.configure.invalidPhases": "JSON de fases invalido.",
250
+ "opera.configure.updated": "Configuracion actualizada.",
251
+ "opera.upgrade.runInstallFirst": "Ejecuta 'trackops opera install' primero.",
215
252
  "opera.upgrade.usage": "Uso: trackops opera upgrade --stable [--reset]",
216
253
  "opera.upgrade.legacyUnsupported": "Proyecto OPERA legacy detectado. Ejecuta 'trackops opera upgrade --stable --reset' para moverlo al modelo estable actual.",
217
254
  "opera.upgrade.backup": "Backup: {path}",
255
+ "opera.handoff.summary": "Resumen del bootstrap: {status}",
256
+ "opera.handoff.mode": "Modo: {mode}",
257
+ "opera.handoff.markdown": "Contexto markdown: {value}",
258
+ "opera.handoff.json": "Contexto JSON: {value}",
259
+ "opera.handoff.directTitle": "Bootstrap guiado de OPERA",
260
+ "opera.handoff.directSummary": "Resumen del bootstrap guiado: {status}",
261
+ "opera.handoff.directStatus": "Estado del bootstrap",
262
+ "opera.handoff.directIntake": "Archivo intake",
263
+ "opera.handoff.directSpec": "Dossier de especificacion",
264
+ "opera.handoff.directQuestions": "Preguntas abiertas",
265
+ "opera.handoff.directQuality": "Informe de calidad",
266
+ "opera.handoff.directNext": "Siguiente paso: completa los archivos del bootstrap guiado y ejecuta 'trackops opera bootstrap --resume'.",
218
267
  "postinstall.localeSet": "TrackOps ha fijado el idioma en '{locale}' ({source}).",
219
-
220
- "skill.installed": "Skill '{name}' instalada.",
221
- "skill.removed": "Skill '{name}' desinstalada.",
222
- "skill.notFound": "Skill '{name}' no encontrada en el catalogo.",
223
- "skill.alreadyInstalled": "Skill '{name}' ya esta instalada.",
268
+
269
+ "skill.installed": "Skill '{name}' instalada.",
270
+ "skill.removed": "Skill '{name}' desinstalada.",
271
+ "skill.notFound": "Skill '{name}' no encontrada en el catalogo.",
272
+ "skill.alreadyInstalled": "Skill '{name}' ya esta instalada.",
224
273
  "skill.notInstalled": "Skill '{name}' no esta instalada.",
225
274
  "skill.catalogTitle": "Skills disponibles:",
226
275
  "skill.listTitle": "Skills instaladas:",
276
+ "skill.nameRequired": "Debes indicar el nombre de la skill.",
277
+ "skill.noneInstalled": "No hay skills instaladas.",
278
+ "skill.noneCatalog": "No hay skills disponibles en el catalogo.",
279
+
280
+ "env.status.title": "Entorno:",
281
+ "env.status.rootEnv": " .env raiz: {path}",
282
+ "env.status.example": " Ejemplo: {path}",
283
+ "env.status.appBridge": " Puente app: {path}",
284
+ "env.status.bridgeMode": " Modo de puente: {value}",
285
+ "env.status.required": " Claves requeridas: {value}",
286
+ "env.status.present": " Presentes: {value}",
287
+ "env.status.missing": " Faltantes: {value}",
288
+ "env.sync.updated": "Entorno sincronizado en {path}",
289
+ "env.sync.missing": "Claves requeridas faltantes: {value}",
290
+
291
+ "workspace.status.title": "Workspace:",
292
+ "workspace.status.layout": " Estructura: {value}",
293
+ "workspace.status.root": " Raiz: {path}",
294
+ "workspace.status.app": " App: {path}",
295
+ "workspace.status.ops": " Ops: {path}",
296
+ "workspace.status.manifest": " Manifest: {path}",
297
+ "workspace.status.control": " Control: {path}",
298
+ "workspace.migrate.updated": "Workspace migrado: {path}",
299
+ "workspace.migrate.backup": "Rama de backup: {branch}",
227
300
 
228
301
  "cli.status.bootstrap": "Bootstrap: {status} | Idioma: {locale}",
229
-
302
+
303
+ "bootstrap.status.awaiting_intake": "esperando datos guiados",
304
+ "bootstrap.status.awaiting_agent": "esperando al agente",
305
+ "bootstrap.status.completed": "completado",
306
+ "bootstrap.status.blocked": "bloqueado",
307
+ "bootstrap.status.needs_review": "requiere revision",
308
+ "bootstrap.status.legacy_unsupported": "modelo legacy no soportado",
309
+ "bootstrap.mode.agent_handoff": "descubrimiento guiado por agente",
310
+ "bootstrap.mode.direct_cli": "bootstrap guiado por terminal",
311
+ "bootstrap.reason.forced_handoff": "se forzó explícitamente el modo handoff",
312
+ "bootstrap.reason.forced_direct": "se forzó explícitamente el modo guiado por terminal",
313
+ "bootstrap.reason.non_technical_user": "el usuario necesita descubrimiento guiado",
314
+ "bootstrap.reason.idea_stage": "el proyecto sigue en etapa de idea o borrador",
315
+ "bootstrap.reason.insufficient_docs": "no hay documentación suficiente para continuar con seguridad en terminal",
316
+ "bootstrap.reason.agent_owned_decisions": "las decisiones clave quedaron delegadas al agente",
317
+ "bootstrap.reason.technical_existing_project": "el proyecto es técnico, tiene contexto y está listo para bootstrap en terminal",
318
+ "bootstrap.ownership.user": "usuario",
319
+ "bootstrap.ownership.shared": "compartida",
320
+ "bootstrap.ownership.agent": "agente",
321
+ "bootstrap.readiness.hypothesis": "borrador inicial",
322
+ "bootstrap.readiness.provisional": "provisional",
323
+ "bootstrap.readiness.verified": "verificado",
324
+ "bootstrap.readiness.locked": "cerrado",
325
+ "bootstrap.scaffold.specTitle": "Dossier de especificacion",
326
+ "bootstrap.scaffold.problemStatement": "Problema principal",
327
+ "bootstrap.scaffold.targetUser": "Usuario objetivo",
328
+ "bootstrap.scaffold.singularDesiredOutcome": "Resultado singular deseado",
329
+ "bootstrap.scaffold.deliveryTarget": "Objetivo de entrega",
330
+ "bootstrap.scaffold.sourceOfTruth": "Fuente de verdad",
331
+ "bootstrap.scaffold.specPlaceholder": "Usa este archivo para consolidar la especificacion del proyecto antes de que OPERA la procese.",
332
+ "bootstrap.scaffold.openQuestionsTitle": "Preguntas abiertas",
333
+ "bootstrap.scaffold.missingFields": "Campos pendientes",
334
+ "bootstrap.scaffold.contradictions": "Contradicciones",
335
+ "bootstrap.scaffold.none": "Ninguna.",
336
+ "bootstrap.legacy.supported": "modelo estable actual",
337
+ "bootstrap.legacy.legacy_unsupported": "modelo legacy requiere upgrade",
338
+
230
339
  "bootstrap.header": "Bootstrap OPERA",
231
- "bootstrap.subtitle": "Primero clasifica al usuario y el estado del proyecto. TrackOps decidira si continuar por terminal o derivar el arranque al agente.",
232
- "bootstrap.instructions": "Responde con low|medium|high|senior o con sus equivalentes bajo|medio|alto. Si no sabes una respuesta, pulsa Enter para aceptar el valor por defecto.",
233
- "bootstrap.question.technicalLevel": "Nivel tecnico del usuario",
234
- "bootstrap.question.projectState": "Estado actual del proyecto",
235
- "bootstrap.question.docsState": "Documentacion disponible",
236
- "bootstrap.question.decisionOwnership": "Quien debe tomar las decisiones clave",
237
- "bootstrap.question.problemStatement": "Problema principal que se quiere resolver",
238
- "bootstrap.question.targetUser": "Usuario objetivo principal",
239
- "bootstrap.question.desiredOutcome": "Resultado singular deseado",
240
- "bootstrap.question.externalServices": "Servicios externos (separados por comas)",
241
- "bootstrap.question.sourceOfTruth": "Fuente de la verdad",
242
- "bootstrap.question.payload": "Payload / objetivo de entrega",
243
- "bootstrap.question.behaviorRules": "Reglas de comportamiento (separadas por punto y coma)",
340
+ "bootstrap.subtitle": "Primero clasifica al usuario y el estado del proyecto.\n TrackOps decidirá si continuar por terminal o derivar el arranque al agente.",
341
+ "bootstrap.instructions": "Responde con los valores entre corchetes.\n Si no sabes una respuesta, pulsa Enter para aceptar el valor por defecto.",
342
+ "bootstrap.resultHeader": "Resultado",
343
+ "bootstrap.question.technicalLevel": "Nivel tecnico del usuario",
344
+ "bootstrap.question.projectState": "Estado actual del proyecto",
345
+ "bootstrap.question.docsState": "Documentacion disponible",
346
+ "bootstrap.question.decisionOwnership": "Quien debe tomar las decisiones clave",
347
+ "bootstrap.question.problemStatement": "Problema principal que se quiere resolver",
348
+ "bootstrap.question.targetUser": "Usuario objetivo principal",
349
+ "bootstrap.question.desiredOutcome": "Resultado singular deseado",
350
+ "bootstrap.question.externalServices": "Servicios externos (separados por comas)",
351
+ "bootstrap.question.sourceOfTruth": "Fuente de la verdad",
352
+ "bootstrap.question.payload": "Payload / objetivo de entrega",
353
+ "bootstrap.question.behaviorRules": "Reglas de comportamiento (separadas por punto y coma)",
244
354
  "bootstrap.question.inputSchema": "Schema JSON de entrada",
245
355
  "bootstrap.question.outputSchema": "Schema JSON de salida",
246
356
  "bootstrap.question.invariants": "Invariantes arquitectonicas (separadas por punto y coma)",
247
357
  "bootstrap.question.pipeline": "Pasos del pipeline (separados por punto y coma)",
248
- "bootstrap.question.templates": "Archivos template (separados por comas)",
249
- "bootstrap.question.repoTasks": "¿Incluir tareas opcionales de repo? [y/n]",
250
- "bootstrap.completed": "Bootstrap OPERA completado.",
251
- "bootstrap.pending": "Bootstrap OPERA guardado como pendiente. Reanuda con 'trackops opera bootstrap --resume'.",
252
- "bootstrap.awaitingAgent": "Bootstrap OPERA derivado al agente. Completa el handoff y reanuda con 'trackops opera bootstrap --resume'.",
253
- "bootstrap.handoffFile": "Archivo de handoff",
254
- "bootstrap.next.handoff": "Siguiente paso: ejecuta 'trackops opera handoff --print', pega el contexto en tu agente y vuelve cuando existan ops/bootstrap/intake.json y ops/bootstrap/spec-dossier.md.",
255
- "bootstrap.next.directCompleted": "Siguiente paso: revisa 'trackops opera status' y continua el trabajo normal con 'trackops next' y 'trackops sync'.",
256
- "bootstrap.next.directPending": "Siguiente paso: completa los datos pendientes y reanuda con 'trackops opera bootstrap --resume'.",
257
- "bootstrap.infer.envSourceHint": "Detectados archivos de entorno",
258
- "bootstrap.noneDefined": "Aun no definido.",
259
- "bootstrap.pendingValue": "Pendiente de definir.",
260
- "bootstrap.servicePending": "pendiente",
261
- "bootstrap.defaultFocus": "Completar bootstrap OPERA",
262
- "bootstrap.defaultTarget": "Entrega objetivo pendiente de definir",
263
- "bootstrap.blocker.missingData": "Todavia faltan datos clave del bootstrap.",
264
- "bootstrap.blocker.awaitingAgent": "Esperando el resultado del handoff al agente.",
265
- "bootstrap.history.seeded": "Sembrada por bootstrap OPERA.",
266
- "bootstrap.acceptance.discovery": "Preguntas de descubrimiento respondidas.",
267
- "bootstrap.acceptance.schema": "Schema de entrada/salida definido en genesis.md.",
268
- "bootstrap.acceptance.rules": "Reglas de comportamiento documentadas.",
269
- "bootstrap.acceptance.plan": "Plan revisado y aceptado.",
270
- "bootstrap.acceptance.intake": "El agente genero ops/bootstrap/intake.json.",
271
- "bootstrap.acceptance.specDossier": "El agente genero ops/bootstrap/spec-dossier.md.",
272
- "bootstrap.acceptance.resume": "OPERA pudo ingerir el contexto y continuar.",
273
- "bootstrap.acceptance.env": "Credenciales requeridas verificadas.",
274
- "bootstrap.acceptance.tests": "Checks de conectividad pasando.",
358
+ "bootstrap.question.templates": "Archivos template (separados por comas)",
359
+ "bootstrap.question.repoTasks": "¿Incluir tareas opcionales de repo? [y/n]",
360
+ "bootstrap.completed": "Bootstrap OPERA completado.",
361
+ "bootstrap.resumeBlocked": "Bootstrap reanudado pero la calidad esta BLOQUEADA. Faltan los siguientes campos:",
362
+ "bootstrap.resumeNeedsReview": "Bootstrap reanudado pero necesita revision. Los siguientes campos requieren atencion:",
363
+ "bootstrap.resumeAwaitingArtifacts": "Artefactos del agente no encontrados. Asegurate de que existan ops/bootstrap/intake.json y ops/bootstrap/spec-dossier.md.",
364
+ "bootstrap.resumeEmptyArtifacts": "Los artefactos del agente estan vacios. intake.json necesita al menos un campo significativo y spec-dossier.md debe tener contenido.",
365
+ "bootstrap.routingMode": "Routing del bootstrap: {mode} (razon: {reason})",
366
+ "bootstrap.pending": "Bootstrap OPERA guardado como pendiente. Reanuda con 'trackops opera bootstrap --resume'.",
367
+ "bootstrap.awaitingAgent": "Bootstrap OPERA derivado al agente.",
368
+ "bootstrap.handoffFile": "Archivo de handoff",
369
+ "bootstrap.next.label": "Siguiente paso",
370
+ "bootstrap.next.handoff": "Ejecuta 'trackops opera handoff --print', pega el contexto en tu agente y vuelve cuando existan ops/bootstrap/intake.json y ops/bootstrap/spec-dossier.md.",
371
+ "bootstrap.next.directCompleted": "Revisa 'trackops opera status' y continúa el trabajo normal con 'trackops next' y 'trackops sync'.",
372
+ "bootstrap.next.directPending": "Completa ops/bootstrap/intake.json y ops/bootstrap/spec-dossier.md, luego reanuda con 'trackops opera bootstrap --resume'.",
373
+ "bootstrap.infer.envSourceHint": "Detectados archivos de entorno",
374
+ "bootstrap.noneDefined": "Aun no definido.",
375
+ "bootstrap.pendingValue": "Pendiente de definir.",
376
+ "bootstrap.servicePending": "pendiente",
377
+ "bootstrap.defaultFocus": "Completar bootstrap OPERA",
378
+ "bootstrap.defaultTarget": "Entrega objetivo pendiente de definir",
379
+ "bootstrap.blocker.missingData": "Todavia faltan datos clave del bootstrap.",
380
+ "bootstrap.blocker.awaitingAgent": "Esperando el resultado del handoff al agente.",
381
+ "bootstrap.history.seeded": "Sembrada por bootstrap OPERA.",
382
+ "bootstrap.acceptance.discovery": "Preguntas de descubrimiento respondidas.",
383
+ "bootstrap.acceptance.schema": "Schema de entrada/salida definido en genesis.md.",
384
+ "bootstrap.acceptance.rules": "Reglas de comportamiento documentadas.",
385
+ "bootstrap.acceptance.plan": "Plan revisado y aceptado.",
386
+ "bootstrap.acceptance.intake": "El agente genero ops/bootstrap/intake.json.",
387
+ "bootstrap.acceptance.specDossier": "El agente genero ops/bootstrap/spec-dossier.md.",
388
+ "bootstrap.acceptance.resume": "OPERA pudo ingerir el contexto y continuar.",
389
+ "bootstrap.acceptance.env": "Credenciales requeridas verificadas.",
390
+ "bootstrap.acceptance.tests": "Checks de conectividad pasando.",
275
391
  "bootstrap.acceptance.shape": "Shapes externos validados contra genesis.md.",
276
392
  "bootstrap.acceptance.findings": "Hallazgos documentados.",
277
393
  "bootstrap.acceptance.sops": "SOPs documentados.",
@@ -285,10 +401,10 @@
285
401
  "bootstrap.acceptance.deploy": "Despliegue completado.",
286
402
  "bootstrap.acceptance.triggers": "Triggers configurados.",
287
403
  "bootstrap.acceptance.smoke": "Smoke test pasando.",
288
- "bootstrap.task.bootstrap.title": "Completar bootstrap OPERA",
289
- "bootstrap.task.bootstrap.summary": "Convertir la estructura OPERA instalada en un modelo operativo especifico del proyecto.",
290
- "bootstrap.task.bootstrap.handoffSummary": "Preparar el handoff al agente para convertir una idea o especificacion parcial en contexto operativo estructurado.",
291
- "bootstrap.task.prove.title": "Validar integraciones",
404
+ "bootstrap.task.bootstrap.title": "Completar bootstrap OPERA",
405
+ "bootstrap.task.bootstrap.summary": "Convertir la estructura OPERA instalada en un modelo operativo especifico del proyecto.",
406
+ "bootstrap.task.bootstrap.handoffSummary": "Preparar el handoff al agente para convertir una idea o especificacion parcial en contexto operativo estructurado.",
407
+ "bootstrap.task.prove.title": "Validar integraciones",
292
408
  "bootstrap.task.prove.summary": "Verificar credenciales, conectividad y shape de respuestas antes de seguir construyendo.",
293
409
  "bootstrap.task.structure.title": "Estructurar el sistema",
294
410
  "bootstrap.task.structure.summary": "Documentar SOPs, implementar herramientas y capturar el grafo de dependencias.",
@@ -304,21 +420,21 @@
304
420
  "bootstrap.task.repoChangelog.summary": "Decidir como se mantendra CHANGELOG.md en este proyecto.",
305
421
  "bootstrap.task.repoGithub.title": "Revisar tareas de gobernanza GitHub",
306
422
  "bootstrap.task.repoGithub.summary": "Comprobar si deben activarse tareas de automatizacion o gobernanza del repositorio.",
307
- "bootstrap.field.singularDesiredOutcome": "Resultado deseado",
308
- "bootstrap.field.desiredOutcome": "Resultado deseado",
309
- "bootstrap.field.problemStatement": "Problema principal",
310
- "bootstrap.field.targetUser": "Usuario objetivo",
311
- "bootstrap.field.decisionOwnership": "Propiedad de decision",
312
- "bootstrap.field.sourceOfTruth": "Fuente de la verdad",
313
- "bootstrap.field.payload": "Payload",
314
- "bootstrap.field.inputSchema": "Schema de entrada",
315
- "bootstrap.field.outputSchema": "Schema de salida",
316
- "bootstrap.field.intakeJson": "Archivo intake.json",
317
- "bootstrap.field.specDossier": "Archivo spec-dossier.md",
318
- "bootstrap.decisionImpact": "Necesario para completar el bootstrap OPERA.",
319
- "bootstrap.pendingDecision.handoff": "Enviar el handoff de TrackOps al agente",
320
- "bootstrap.pendingDecision.handoffImpact": "Necesario para que el agente genere intake.json y spec-dossier.md.",
321
- "bootstrap.finding.genesisConflictTitle": "Genesis requiere revision manual",
423
+ "bootstrap.field.singularDesiredOutcome": "Resultado deseado",
424
+ "bootstrap.field.desiredOutcome": "Resultado deseado",
425
+ "bootstrap.field.problemStatement": "Problema principal",
426
+ "bootstrap.field.targetUser": "Usuario objetivo",
427
+ "bootstrap.field.decisionOwnership": "Propiedad de decision",
428
+ "bootstrap.field.sourceOfTruth": "Fuente de la verdad",
429
+ "bootstrap.field.payload": "Payload",
430
+ "bootstrap.field.inputSchema": "Schema de entrada",
431
+ "bootstrap.field.outputSchema": "Schema de salida",
432
+ "bootstrap.field.intakeJson": "Archivo intake.json",
433
+ "bootstrap.field.specDossier": "Archivo spec-dossier.md",
434
+ "bootstrap.decisionImpact": "Necesario para completar el bootstrap OPERA.",
435
+ "bootstrap.pendingDecision.handoff": "Enviar el handoff de TrackOps al agente",
436
+ "bootstrap.pendingDecision.handoffImpact": "Necesario para que el agente genere intake.json y spec-dossier.md.",
437
+ "bootstrap.finding.genesisConflictTitle": "Genesis requiere revision manual",
322
438
  "bootstrap.finding.genesisConflictDetail": "TrackOps detecto un genesis.md no plantilla y detuvo la sobreescritura automatica.",
323
439
  "bootstrap.finding.genesisConflictImpact": "El bootstrap no puede completarse hasta revisar la constitucion existente.",
324
440
 
@@ -405,28 +521,56 @@
405
521
  "ui.execution.stop": "Detener",
406
522
  "ui.execution.output": "Salida del comando",
407
523
  "ui.execution.outputPlaceholder": "# Ejecuta un comando para ver la salida aqui...",
408
- "ui.execution.started": "Iniciado",
409
- "ui.execution.running": "Ejecutando...",
410
- "ui.execution.quick.status": "status",
411
- "ui.execution.quick.sync": "sincronizar docs",
412
- "ui.execution.quick.next": "siguientes tareas",
413
- "ui.execution.quick.repo": "refrescar repo",
414
- "ui.settings.workspaceTitle": "Workspace",
415
- "ui.settings.workspaceRoot": "Raiz del workspace",
416
- "ui.settings.appRoot": "Raiz de app",
417
- "ui.settings.opsRoot": "Raiz de ops",
418
- "ui.settings.envTitle": "Entorno",
419
- "ui.settings.envHealthyBadge": "Listo",
420
- "ui.settings.envMissingBadge": "{count} faltantes",
421
- "ui.settings.envBridgeMode": "Modo de puente",
422
- "ui.settings.envRootFile": ".env raiz",
423
- "ui.settings.envExampleFile": ".env.example",
424
- "ui.settings.envAppBridge": "Puente app/.env",
425
- "ui.settings.envRequiredKeys": "Claves requeridas",
426
- "ui.settings.envPresentKeys": "Claves presentes",
427
- "ui.settings.envMissingKeys": "Claves faltantes",
428
- "ui.settings.envNoMissing": "Ninguna",
429
- "ui.settings.envLastAudit": "Ultima auditoria",
430
- "ui.settings.envSync": "Sincronizar env",
431
- "ui.settings.envSynced": "Entorno sincronizado."
432
- }
524
+ "ui.execution.started": "Iniciado",
525
+ "ui.execution.running": "Ejecutando...",
526
+ "ui.execution.quick.status": "status",
527
+ "ui.execution.quick.sync": "sincronizar docs",
528
+ "ui.execution.quick.next": "siguientes tareas",
529
+ "ui.execution.quick.repo": "refrescar repo",
530
+ "ui.settings.workspaceTitle": "Workspace",
531
+ "ui.settings.workspaceRoot": "Raiz del workspace",
532
+ "ui.settings.appRoot": "Raiz de app",
533
+ "ui.settings.opsRoot": "Raiz de ops",
534
+ "ui.settings.envTitle": "Entorno",
535
+ "ui.settings.envHealthyBadge": "Listo",
536
+ "ui.settings.envMissingBadge": "{count} faltantes",
537
+ "ui.settings.envBridgeMode": "Modo de puente",
538
+ "ui.settings.envRootFile": ".env raiz",
539
+ "ui.settings.envExampleFile": ".env.example",
540
+ "ui.settings.envAppBridge": "Puente app/.env",
541
+ "ui.settings.envRequiredKeys": "Claves requeridas",
542
+ "ui.settings.envPresentKeys": "Claves presentes",
543
+ "ui.settings.envMissingKeys": "Claves faltantes",
544
+ "ui.settings.envNoMissing": "Ninguna",
545
+ "ui.settings.envLastAudit": "Ultima auditoria",
546
+ "ui.settings.envSync": "Sincronizar env",
547
+ "ui.settings.envSynced": "Entorno sincronizado.",
548
+
549
+ "handoff.title": "Handoff de agente OPERA",
550
+ "handoff.skillInstruction": "Usa `project-starter-skill` como skill de descubrimiento y estructuracion para este proyecto.",
551
+ "handoff.section.userProfile": "Perfil del usuario",
552
+ "handoff.label.technicalLevel": "Nivel tecnico",
553
+ "handoff.label.explanationMode": "Modo de explicacion",
554
+ "handoff.label.decisionOwnership": "Propiedad de decision",
555
+ "handoff.label.preferredLanguage": "Idioma preferido",
556
+ "handoff.section.projectState": "Estado del proyecto",
557
+ "handoff.label.projectState": "Estado del proyecto",
558
+ "handoff.label.documentationState": "Estado de documentacion",
559
+ "handoff.section.whatToDo": "Que hacer",
560
+ "handoff.instruction.startFromUser": "Parte del usuario, no de suposiciones arquitectonicas.",
561
+ "handoff.instruction.adaptDepth": "Adapta la profundidad y el lenguaje al nivel tecnico del usuario.",
562
+ "handoff.instruction.readDocs": "Si hay documentacion, leela, resumela y consolidala.",
563
+ "handoff.instruction.helpSpec": "Si no hay documentacion, ayuda al usuario a convertir la idea en una especificacion viable.",
564
+ "handoff.instruction.writeIntake": "Escribe `ops/bootstrap/intake.json` con el resultado estructurado del descubrimiento.",
565
+ "handoff.instruction.writeSpec": "Escribe `ops/bootstrap/spec-dossier.md` con la especificacion narrativa o tecnica que OPERA ingerira.",
566
+ "handoff.instruction.writeQuestions": "Escribe `ops/bootstrap/open-questions.md` si quedan incertidumbres importantes.",
567
+ "handoff.instruction.includeFields": "Incluye campos explicitos en intake.json para: problemStatement, targetUser, singularDesiredOutcome, sourceOfTruth, payload (objetivo de entrega), inputSchema, outputSchema y decisionOwnership.",
568
+ "handoff.instruction.schemaFormat": "Para inputSchema y outputSchema, proporciona un objeto JSON describiendo la forma de los datos con al menos una clave. Un {} vacio no es aceptado. Ejemplo: {\"users\": [{\"id\": \"string\"}]}.",
569
+ "handoff.instruction.decisionOwnership": "Incluye decisionOwnership en intake.json (valores validos: user, shared, agent).",
570
+ "handoff.instruction.respondInLanguage": "Responde al usuario en {language}.",
571
+ "handoff.instruction.neverRename": "El framework se llama OPERA. NUNCA uses 'ETAPA', 'E.T.A.P.A.' ni ningun otro nombre alternativo.",
572
+ "handoff.instruction.closure": "Cuando termines de escribir los archivos, dile al usuario exactamente esto: 'Los archivos estan listos. Vuelve a la terminal y ejecuta: trackops opera bootstrap --resume'. No ofrezcas scaffolding, creacion de carpetas ni ningun paso adicional. Tu trabajo termina con los archivos de bootstrap.",
573
+ "handoff.label.knownIntention": "Intencion conocida del proyecto",
574
+ "handoff.section.intakeSchema": "Schema obligatorio de intake.json",
575
+ "handoff.instruction.intakeRequired": "El archivo `ops/bootstrap/intake.json` DEBE incluir TODOS estos campos. Los campos faltantes bloquean el bootstrap. Usa null solo si es genuinamente desconocido tras el descubrimiento."
576
+ }