trackops 2.0.5 → 2.1.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.
package/locales/en.json CHANGED
@@ -42,10 +42,12 @@
42
42
  "doc.label.completedTasks": "Completed",
43
43
  "doc.label.inProgressTasks": "In progress",
44
44
  "doc.label.inReviewTasks": "In review",
45
- "doc.label.pendingTasks": "Pending",
46
- "doc.label.blockedTasks": "Blocked",
47
- "doc.label.findingOpen": "open",
48
- "doc.label.findingResolved": "resolved",
45
+ "doc.label.pendingTasks": "Pending",
46
+ "doc.label.blockedTasks": "Blocked",
47
+ "doc.label.awaitingUserTasks": "Awaiting user confirmation",
48
+ "doc.label.agentInboxPending": "Pending agent instructions",
49
+ "doc.label.findingOpen": "open",
50
+ "doc.label.findingResolved": "resolved",
49
51
  "doc.label.findingStatus": "Status",
50
52
  "doc.label.findingDetail": "Detail",
51
53
  "doc.label.findingImpact": "Impact",
@@ -60,7 +62,8 @@
60
62
  "doc.label.noActiveTasks": "No tasks in progress at the moment.",
61
63
  "doc.label.noReviewTasks": "No tasks in review.",
62
64
  "doc.label.noActiveBlockers": "No active blockers.",
63
- "doc.label.noHistory": "No recorded movements.",
65
+ "doc.label.noHistory": "No recorded movements.",
66
+ "doc.label.noAgentInbox": "No pending instructions for the agent.",
64
67
 
65
68
  "cli.runtimeUpdated": "Runtime updated at {path}",
66
69
  "cli.docsSynced": "Operational documentation synced.",
@@ -69,6 +72,16 @@
69
72
  "cli.actionNotSupported": "Unsupported action: {action}",
70
73
  "cli.mustProvideActionAndId": "You must specify action and task id.",
71
74
  "cli.noReadyTasks": "No ready tasks. Check blockers and dependencies.",
75
+ "cli.noReadyTasks.blocked": "No ready tasks. There are {count} blocked task(s). Run 'trackops status' to see details.",
76
+ "cli.noReadyTasks.allDone": "All tasks are completed or cancelled. The project has reached operational completion.",
77
+ "control.circularDependency": "Warning: circular dependency detected involving task(s): {taskIds}.",
78
+ "control.taskAlreadyStatus": "Task '{taskId}' is already '{status}'. No changes made.",
79
+ "control.contractStale": "Operating contract was stale and has been revalidated.",
80
+ "control.docsOverwriteWarning": "Warning: {file} has manual edits and was not overwritten. Use --force to overwrite.",
81
+ "opera.install.bootstrapConfirm": "Start bootstrap now? [y/N]",
82
+ "opera.install.bootstrapSkipped": "Bootstrap was not started. Run 'trackops opera bootstrap' when you are ready.",
83
+ "skill.installError": "Warning: skill '{name}' could not be installed: {error}",
84
+ "cli.help.initFirst": "Run 'trackops init' to initialize a project here.",
72
85
  "cli.hooksInstalled": "Git hooks installed in .githooks",
73
86
  "cli.hooksError": "Could not configure core.hooksPath.",
74
87
  "cli.noProjectFound": "No project_control.json found in this directory or parents.",
@@ -83,23 +96,41 @@
83
96
  "cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
84
97
  "cli.status.blockers": "Blockers:",
85
98
  "cli.status.noBlockers": "No blockers.",
86
- "cli.status.decisions": "External decisions:",
87
- "cli.status.noDecisions": "None.",
88
- "cli.status.repo": "Repository:",
99
+ "cli.status.decisions": "External decisions:",
100
+ "cli.status.noDecisions": "None.",
101
+ "cli.status.agentInbox": "Agent inbox:",
102
+ "cli.status.noAgentInbox": "No pending instructions.",
103
+ "cli.status.repo": "Repository:",
89
104
  "cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
90
105
  "cli.status.treeClean": "clean",
91
106
  "cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
92
107
  "cli.status.lastCommit": "Last commit: {hash} {subject}",
93
- "cli.status.divergence": "Divergence: ahead {ahead}, behind {behind}",
94
- "cli.status.runtime": "Runtime: {path}",
95
- "cli.status.docsSynced": "Docs synced: {status}",
96
- "cli.status.docsSyncedYes": "yes",
97
- "cli.status.docsSyncedNo": "no ({files})",
98
-
99
- "cli.next.phase": "phase",
100
- "cli.next.priority": "priority",
101
- "cli.next.stream": "stream",
102
- "cli.next.summary": "summary",
108
+ "cli.status.divergence": "Remote divergence: {ahead} to push, {behind} to pull",
109
+ "cli.status.runtime": "Runtime: {path}",
110
+ "cli.status.docsSynced": "Docs synced: {status}",
111
+ "cli.status.docsSyncedYes": "yes",
112
+ "cli.status.docsSyncedNo": "no ({files})",
113
+ "cli.status.layout": "Layout: {layout} | Workspace: {workspace}",
114
+ "cli.status.appRoot": "App: {path}",
115
+ "cli.status.opsRoot": "Ops: {path}",
116
+ "cli.status.bootstrapMode": "Bootstrap path: {value}",
117
+ "cli.status.bootstrapReason": "Why this path: {value}",
118
+ "cli.status.gitState": "Git: {state}",
119
+ "cli.status.gitNotInitialized": "not initialized",
120
+ "cli.status.gitAction": "Run 'git init' before relying on repository status or release flows.",
121
+ "cli.status.branchDetached": "detached HEAD",
122
+ "cli.status.noUpstream": "No upstream branch configured yet.",
123
+ "cli.status.envPresent": "Environment keys present: {value}",
124
+ "cli.status.envMissing": "Environment keys missing: {value}",
125
+
126
+ "cli.next.phase": "phase",
127
+ "cli.next.priority": "priority",
128
+ "cli.next.stream": "stream",
129
+ "cli.next.summary": "summary",
130
+ "cli.next.activeTasks": "Active work:",
131
+ "cli.next.readyQueue": "Next ready tasks in queue:",
132
+ "cli.sync.dryRunWouldUpdate": "Would update: {files}",
133
+ "cli.sync.dryRunInSync": "All docs are already in sync.",
103
134
 
104
135
  "cli.help.title": "Project operational control",
105
136
  "cli.help.usage": "Usage:",
@@ -120,11 +151,13 @@
120
151
  "cli.help.task.desc": "Actions: start, review, complete, block, pending, cancel, note.",
121
152
  "cli.help.opera.desc": "Manage OPERA.",
122
153
  "cli.help.opera.upgradeHint": "Upgrade: trackops opera upgrade --stable [--reset]",
123
- "cli.help.locale.desc": "Show or update the global TrackOps language.",
124
- "cli.help.doctor.desc": "Explain the effective language source for this machine/project.",
125
- "cli.help.skill.desc": "Manage skills.",
126
- "cli.help.help.desc": "Show this help.",
127
- "cli.help.globalWorkflow": "Global agent workflow:",
154
+ "cli.help.locale.desc": "Show or update the global TrackOps language.",
155
+ "cli.help.doctor.desc": "Explain the effective language source for this machine/project.",
156
+ "cli.help.skill.desc": "Manage skills.",
157
+ "cli.help.help.desc": "Show this help.",
158
+ "cli.help.globalFlags": "Global flags:",
159
+ "cli.help.globalFlags.line1": "Use '--plain' (or '--a11y') to disable Unicode-heavy formatting for screen readers, logs, or limited terminals.",
160
+ "cli.help.globalWorkflow": "Global agent workflow:",
128
161
  "cli.help.globalWorkflow.line1": "Install the skill with 'npx skills add Baxahaun/trackops' and then the runtime with 'npm install -g trackops'.",
129
162
  "cli.help.globalWorkflow.line2": "Then verify with 'trackops --version' and use 'trackops init' and 'trackops opera install' explicitly inside each project.",
130
163
  "cli.usage.workspace": "Usage: trackops workspace <status|migrate>",
@@ -174,19 +207,33 @@
174
207
  "server.invalidJson": "Invalid JSON.",
175
208
  "server.sessionNotFound": "Session not found.",
176
209
  "server.noActiveSession": "No active session to start stream.",
177
- "server.commandRequired": "A command is required.",
178
- "server.projectNotResolved": "Could not resolve project.",
179
- "server.invalidLocale": "Invalid locale: {value}.",
180
-
181
- "init.welcome": "Project initialized with trackops.",
210
+ "server.commandRequired": "A command is required.",
211
+ "server.projectNotResolved": "Could not resolve project.",
212
+ "server.invalidLocale": "Invalid locale: {value}.",
213
+ "server.timeTaskRequired": "You must specify a task before starting the timer.",
214
+ "server.timeTaskNotFound": "Task '{taskId}' not found.",
215
+ "server.timeParentTask": "You can only track time on leaf tasks. Break the work down and start the timer on an actionable child task.",
216
+ "server.timeStartedNote": "Timer started from the dashboard.",
217
+ "server.timeEntryNotFound": "Time entry not found.",
218
+ "server.agentExecutionStarted": "Agent execution started from the command console.",
219
+
220
+ "agentInbox.awaitUser.message": "Task '{title}' ({taskId}) is now {status} from {source}. The agent must wait for the user confirmation and continue once there is a real outcome.",
221
+ "agentInbox.awaitUser.resolved": "The pending user confirmation has been resolved.",
222
+ "agentInbox.verify.message": "The user moved task '{title}' ({taskId}) to {status} from {source}. The agent must verify the real state before continuing.",
223
+ "agentInbox.verify.resolved": "The real-state verification has already been handled.",
224
+
225
+ "init.welcome": "Project initialized with trackops.",
182
226
  "init.opsExists": "Ops is already installed in this project.",
183
- "init.created": "Created {file}",
184
- "init.updated": "Updated {file}",
185
- "init.registered": "Project registered in the global portfolio.",
186
- "init.defaultFocus": "Operational project bootstrap",
187
- "init.defaultTarget": "Project managed with trackops",
188
- "init.defaultTaskTitle": "Set up project with trackops",
189
- "init.defaultTaskSummary": "Verify initial structure, adjust phases and confirm operational integration.",
227
+ "init.created": "Created {file}",
228
+ "init.updated": "Updated {file}",
229
+ "init.adoptedExistingRepo": "Existing repository content was adopted into {dir}/.",
230
+ "init.registered": "Project registered in the global portfolio.",
231
+ "init.defaultFocus": "Operational project bootstrap",
232
+ "init.defaultTarget": "Project managed with trackops",
233
+ "init.defaultTaskTitle": "Set up project with trackops",
234
+ "init.defaultTaskSummary": "Verify initial structure, adjust phases and confirm operational integration.",
235
+ "init.error.legacyDetected": "Legacy TrackOps project detected. Run 'trackops workspace migrate' instead of 'trackops init'.",
236
+ "init.error.reservedConflict": "Cannot initialize TrackOps here because these reserved entries already exist without a TrackOps workspace: {entries}. Resolve or rename them first.",
190
237
 
191
238
  "opera.installed": "OPERA methodology installed (v{version}).",
192
239
  "opera.alreadyInstalled": "OPERA is already installed in this project (v{version}).",
@@ -194,42 +241,123 @@
194
241
  "opera.upgraded": "OPERA upgraded to v{version}.",
195
242
  "opera.primitiveDetected": "Existing OPERA installation detected (not managed by Ops).",
196
243
  "opera.status.version": "OPERA v{version}",
197
- "opera.status.installed": " Installed: {value}",
198
- "opera.status.skills": " Skills: {value}",
199
- "opera.status.locale": " Locale: {locale} ({source})",
200
- "opera.status.legacy": " Legacy: {value}",
201
- "opera.status.contractVersion": " Contract version: {value}",
202
- "opera.status.contractReadiness": " Contract readiness: {value}",
203
- "opera.status.bootstrap": " Bootstrap: {value}",
204
- "opera.status.mode": " Mode: {value}",
205
- "opera.status.route": " Route: {value}",
206
- "opera.status.ownership": " Ownership: {value}",
207
- "opera.status.missing": " Missing: {value}",
208
- "opera.status.resume": " Resume: trackops opera bootstrap --resume",
209
- "opera.status.handoff": " Handoff: {value}",
210
- "opera.status.qualityReport": " Quality report: {value}",
211
- "opera.status.structure": " Structure:",
244
+ "opera.status.installed": " Installed: {value}",
245
+ "opera.status.skills": " Skills: {value}",
246
+ "opera.status.locale": " Locale: {locale} ({source})",
247
+ "opera.status.legacy": " Compatibility: {value}",
248
+ "opera.status.contractVersion": " Contract version: {value}",
249
+ "opera.status.contractReadiness": " Contract readiness: {value}",
250
+ "opera.status.bootstrap": " Bootstrap: {value}",
251
+ "opera.status.mode": " Mode: {value}",
252
+ "opera.status.route": " Route: {value}",
253
+ "opera.status.ownership": " Decision owner: {value}",
254
+ "opera.status.missing": " Missing: {value}",
255
+ "opera.status.awaitingAgentExplanation": " TrackOps is waiting for the agent to produce the bootstrap files.",
256
+ "opera.status.awaitingAgentAction": " Action: run 'trackops opera handoff --print', give that context to your agent, and wait for the requested files.",
257
+ "opera.status.directExplanation": " Guided bootstrap is still incomplete.",
258
+ "opera.status.directAction": " Action: complete {intake} and {spec}, then resume.",
259
+ "opera.status.contractNotGenerated": " The operating contract is not generated until bootstrap completes.",
260
+ "opera.status.resume": " Resume: trackops opera bootstrap --resume",
261
+ "opera.status.handoff": " Agent handoff: {value}",
262
+ "opera.status.intake": " Intake: {value}",
263
+ "opera.status.specDossier": " Specification brief: {value}",
264
+ "opera.status.openQuestions": " Open questions: {value}",
265
+ "opera.status.qualityReport": " Quality report: {value}",
266
+ "opera.status.structure": " Structure:",
212
267
  "opera.configure.invalidPhases": "Invalid phases JSON.",
213
268
  "opera.configure.updated": "Configuration updated.",
214
269
  "opera.upgrade.runInstallFirst": "Run 'trackops opera install' first.",
215
- "opera.upgrade.usage": "Usage: trackops opera upgrade --stable [--reset]",
216
- "opera.upgrade.legacyUnsupported": "Legacy OPERA project detected. Run 'trackops opera upgrade --stable --reset' to move it to the current stable model.",
217
- "opera.upgrade.backup": "Backup: {path}",
218
- "postinstall.localeSet": "TrackOps set the language to '{locale}' ({source}).",
219
-
220
- "skill.installed": "Skill '{name}' installed.",
221
- "skill.removed": "Skill '{name}' uninstalled.",
222
- "skill.notFound": "Skill '{name}' not found in the catalog.",
223
- "skill.alreadyInstalled": "Skill '{name}' is already installed.",
224
- "skill.notInstalled": "Skill '{name}' is not installed.",
225
- "skill.catalogTitle": "Available skills:",
226
- "skill.listTitle": "Installed skills:",
227
-
228
- "cli.status.bootstrap": "Bootstrap: {status} | Locale: {locale}",
229
-
230
- "bootstrap.header": "OPERA bootstrap",
231
- "bootstrap.subtitle": "Classify the user and the project first. TrackOps will decide whether to continue in the terminal or route discovery to the agent.",
232
- "bootstrap.instructions": "Answer with low|medium|high|senior, or press Enter to keep the default value when you are unsure.",
270
+ "opera.upgrade.usage": "Usage: trackops opera upgrade --stable [--reset]",
271
+ "opera.upgrade.legacyUnsupported": "Legacy OPERA project detected. Run 'trackops opera upgrade --stable --reset' to move it to the current stable model.",
272
+ "opera.upgrade.backup": "Backup: {path}",
273
+ "opera.handoff.summary": "Bootstrap summary: {status}",
274
+ "opera.handoff.mode": "Mode: {mode}",
275
+ "opera.handoff.markdown": "Markdown handoff: {value}",
276
+ "opera.handoff.json": "JSON handoff: {value}",
277
+ "opera.handoff.directTitle": "Guided OPERA bootstrap",
278
+ "opera.handoff.directSummary": "Guided bootstrap summary: {status}",
279
+ "opera.handoff.directStatus": "Bootstrap status",
280
+ "opera.handoff.directIntake": "Intake file",
281
+ "opera.handoff.directSpec": "Specification brief",
282
+ "opera.handoff.directQuestions": "Open questions",
283
+ "opera.handoff.directQuality": "Quality report",
284
+ "opera.handoff.directNext": "Next step: complete the guided bootstrap files and run 'trackops opera bootstrap --resume'.",
285
+ "postinstall.localeSet": "TrackOps set the language to '{locale}' ({source}).",
286
+
287
+ "skill.installed": "Skill '{name}' installed.",
288
+ "skill.removed": "Skill '{name}' uninstalled.",
289
+ "skill.notFound": "Skill '{name}' not found in the catalog.",
290
+ "skill.alreadyInstalled": "Skill '{name}' is already installed.",
291
+ "skill.notInstalled": "Skill '{name}' is not installed.",
292
+ "skill.catalogTitle": "Available skills:",
293
+ "skill.listTitle": "Installed skills:",
294
+ "skill.nameRequired": "You must provide a skill name.",
295
+ "skill.noneInstalled": "No skills are installed.",
296
+ "skill.noneCatalog": "No skills are available in the catalog.",
297
+
298
+ "env.status.title": "Environment:",
299
+ "env.status.rootEnv": " Root .env: {path}",
300
+ "env.status.example": " Example: {path}",
301
+ "env.status.appBridge": " App bridge: {path}",
302
+ "env.status.bridgeMode": " Bridge mode: {value}",
303
+ "env.status.required": " Required keys: {value}",
304
+ "env.status.present": " Present: {value}",
305
+ "env.status.missing": " Missing: {value}",
306
+ "env.sync.updated": "Environment synced at {path}",
307
+ "env.sync.missing": "Missing required keys: {value}",
308
+
309
+ "workspace.status.title": "Workspace:",
310
+ "workspace.status.layout": " Layout: {value}",
311
+ "workspace.status.root": " Root: {path}",
312
+ "workspace.status.app": " App: {path}",
313
+ "workspace.status.ops": " Ops: {path}",
314
+ "workspace.status.manifest": " Manifest: {path}",
315
+ "workspace.status.control": " Control: {path}",
316
+ "workspace.migrate.updated": "Workspace migrated: {path}",
317
+ "workspace.migrate.backup": "Backup branch: {branch}",
318
+
319
+ "cli.status.bootstrap": "Bootstrap: {status} | Locale: {locale}",
320
+
321
+ "bootstrap.status.awaiting_intake": "awaiting guided input",
322
+ "bootstrap.status.awaiting_agent": "waiting for agent",
323
+ "bootstrap.status.completed": "completed",
324
+ "bootstrap.status.blocked": "blocked",
325
+ "bootstrap.status.needs_review": "needs review",
326
+ "bootstrap.status.legacy_unsupported": "legacy model not supported",
327
+ "bootstrap.mode.agent_handoff": "agent-guided discovery",
328
+ "bootstrap.mode.direct_cli": "guided terminal bootstrap",
329
+ "bootstrap.reason.forced_handoff": "explicitly forced to handoff mode",
330
+ "bootstrap.reason.forced_direct": "explicitly forced to guided terminal mode",
331
+ "bootstrap.reason.non_technical_user": "the user needs guided discovery",
332
+ "bootstrap.reason.idea_stage": "the project is still at idea or draft stage",
333
+ "bootstrap.reason.insufficient_docs": "there is not enough documentation to continue safely in the terminal",
334
+ "bootstrap.reason.agent_owned_decisions": "key decisions were delegated to the agent",
335
+ "bootstrap.reason.technical_existing_project": "the project is technical, documented, and ready for terminal bootstrap",
336
+ "bootstrap.ownership.user": "user",
337
+ "bootstrap.ownership.shared": "shared",
338
+ "bootstrap.ownership.agent": "agent",
339
+ "bootstrap.readiness.hypothesis": "initial draft",
340
+ "bootstrap.readiness.provisional": "provisional",
341
+ "bootstrap.readiness.verified": "verified",
342
+ "bootstrap.readiness.locked": "finalized",
343
+ "bootstrap.scaffold.specTitle": "Specification brief",
344
+ "bootstrap.scaffold.problemStatement": "Problem statement",
345
+ "bootstrap.scaffold.targetUser": "Target user",
346
+ "bootstrap.scaffold.singularDesiredOutcome": "Singular desired outcome",
347
+ "bootstrap.scaffold.deliveryTarget": "Delivery target",
348
+ "bootstrap.scaffold.sourceOfTruth": "Source of truth",
349
+ "bootstrap.scaffold.specPlaceholder": "Use this file to consolidate the project specification before OPERA ingests it.",
350
+ "bootstrap.scaffold.openQuestionsTitle": "Open questions",
351
+ "bootstrap.scaffold.missingFields": "Missing fields",
352
+ "bootstrap.scaffold.contradictions": "Contradictions",
353
+ "bootstrap.scaffold.none": "None.",
354
+ "bootstrap.legacy.supported": "current stable model",
355
+ "bootstrap.legacy.legacy_unsupported": "legacy model requires upgrade",
356
+
357
+ "bootstrap.header": "OPERA Bootstrap",
358
+ "bootstrap.subtitle": "Classify the user and the project first.\n TrackOps will decide whether to continue in the terminal or route discovery to the agent.",
359
+ "bootstrap.instructions": "Answer with the values shown in brackets.\n Press Enter to keep the default when unsure.",
360
+ "bootstrap.resultHeader": "Result",
233
361
  "bootstrap.question.technicalLevel": "User technical level",
234
362
  "bootstrap.question.projectState": "Current project state",
235
363
  "bootstrap.question.docsState": "Available documentation",
@@ -248,12 +376,18 @@
248
376
  "bootstrap.question.templates": "Template files (comma separated)",
249
377
  "bootstrap.question.repoTasks": "Include optional repo tasks? [y/n]",
250
378
  "bootstrap.completed": "OPERA bootstrap completed.",
379
+ "bootstrap.resumeBlocked": "Bootstrap resumed but quality is BLOCKED. The following fields are missing:",
380
+ "bootstrap.resumeNeedsReview": "Bootstrap resumed but needs review. The following fields need attention:",
381
+ "bootstrap.resumeAwaitingArtifacts": "Agent artifacts not found. Ensure ops/bootstrap/intake.json and ops/bootstrap/spec-dossier.md exist.",
382
+ "bootstrap.resumeEmptyArtifacts": "Agent artifacts are empty. intake.json needs at least one meaningful field and spec-dossier.md must have content.",
383
+ "bootstrap.routingMode": "Bootstrap routing: {mode} (reason: {reason})",
251
384
  "bootstrap.pending": "OPERA bootstrap saved as pending. Resume with 'trackops opera bootstrap --resume'.",
252
- "bootstrap.awaitingAgent": "OPERA bootstrap has been routed to the agent. Complete the handoff and resume with 'trackops opera bootstrap --resume'.",
385
+ "bootstrap.awaitingAgent": "OPERA bootstrap has been routed to the agent.",
253
386
  "bootstrap.handoffFile": "Handoff file",
254
- "bootstrap.next.handoff": "Next step: run 'trackops opera handoff --print', paste the context into your agent, and come back when ops/bootstrap/intake.json and ops/bootstrap/spec-dossier.md exist.",
255
- "bootstrap.next.directCompleted": "Next step: review 'trackops opera status' and continue normal work with 'trackops next' and 'trackops sync'.",
256
- "bootstrap.next.directPending": "Next step: complete the missing data and resume with 'trackops opera bootstrap --resume'.",
387
+ "bootstrap.next.label": "Next step",
388
+ "bootstrap.next.handoff": "Run 'trackops opera handoff --print', paste the context into your agent, and come back when ops/bootstrap/intake.json and ops/bootstrap/spec-dossier.md exist.",
389
+ "bootstrap.next.directCompleted": "Review 'trackops opera status' and continue normal work with 'trackops next' and 'trackops sync'.",
390
+ "bootstrap.next.directPending": "Complete ops/bootstrap/intake.json and ops/bootstrap/spec-dossier.md, then resume with 'trackops opera bootstrap --resume'.",
257
391
  "bootstrap.infer.envSourceHint": "Environment files detected",
258
392
  "bootstrap.noneDefined": "Not defined yet.",
259
393
  "bootstrap.pendingValue": "Pending definition.",
@@ -448,7 +582,229 @@
448
582
  "handoff.instruction.writeIntake": "Write `ops/bootstrap/intake.json` with the structured discovery output.",
449
583
  "handoff.instruction.writeSpec": "Write `ops/bootstrap/spec-dossier.md` with the narrative or technical specification that OPERA will ingest.",
450
584
  "handoff.instruction.writeQuestions": "Write `ops/bootstrap/open-questions.md` if important uncertainties remain.",
451
- "handoff.instruction.includeFields": "Include explicit fields for problem statement, target user, desired outcome, source of truth, delivery target, and schemas.",
585
+ "handoff.instruction.includeFields": "Include explicit fields in intake.json for: problemStatement, targetUser, singularDesiredOutcome, sourceOfTruth, payload (delivery target), inputSchema, outputSchema, and decisionOwnership.",
586
+ "handoff.instruction.schemaFormat": "For inputSchema and outputSchema, provide a JSON object describing the data shape with at least one key. An empty {} is not accepted. Example: {\"users\": [{\"id\": \"string\"}]}.",
587
+ "handoff.instruction.decisionOwnership": "Include decisionOwnership in intake.json (valid values: user, shared, agent).",
452
588
  "handoff.instruction.respondInLanguage": "Respond to the user in {language}.",
453
- "handoff.label.knownIntention": "Known project intention"
454
- }
589
+ "handoff.instruction.neverRename": "The framework is called OPERA. NEVER use 'ETAPA', 'E.T.A.P.A.', or any other alternative name.",
590
+ "handoff.instruction.closure": "When you finish writing the files, tell the user exactly this: 'The files are ready. Go back to the terminal and run: trackops opera bootstrap --resume'. Do not offer scaffolding, folder creation, or any additional steps. Your job ends with the bootstrap files.",
591
+ "handoff.label.knownIntention": "Known project intention",
592
+ "handoff.section.intakeSchema": "Required intake.json schema",
593
+ "handoff.instruction.intakeRequired": "The file `ops/bootstrap/intake.json` MUST include ALL of these fields. Missing fields will block the bootstrap. Use null only if genuinely unknown after discovery.",
594
+
595
+ "cli.help.plan.desc": "Import external implementation plans into project control with preview-first reconciliation.",
596
+ "cli.help.quality.desc": "Continuous quality inspection, verification evidence, and release/promotion readiness gates.",
597
+
598
+ "quality.status.pass": "pass",
599
+ "quality.status.fail": "fail",
600
+ "quality.status.warn": "attention",
601
+ "quality.status.skip": "skip",
602
+ "quality.status.passed": "passed",
603
+ "quality.status.failed": "failed",
604
+ "quality.status.skipped": "skipped",
605
+ "quality.status.not_configured": "not configured",
606
+ "quality.status.ready": "ready",
607
+ "quality.status.blocked": "blocked",
608
+ "quality.status.attention": "attention",
609
+ "quality.status.unknown": "unknown",
610
+ "quality.scope.test": "test",
611
+ "quality.scope.build": "build",
612
+ "quality.scope.smoke": "smoke",
613
+ "quality.scope.review": "review",
614
+ "quality.scope.all": "all",
615
+ "quality.value.unknown": "unknown",
616
+ "quality.value.missing": "missing",
617
+ "quality.source.intake": "intake.json",
618
+ "quality.source.bootstrap": "bootstrap",
619
+ "quality.source.inferred": "inference",
620
+ "quality.source.unknown": "unknown",
621
+ "quality.message.ok": "{subject}: OK.",
622
+ "quality.message.notApplicable": "{subject}: not applicable.",
623
+ "quality.message.failDetail": "{subject}: {detail}.",
624
+ "quality.message.fileMissing": "{subject}: missing {path}.",
625
+ "quality.message.missingItems": "{subject}: missing {items}.",
626
+ "quality.message.outOfSync": "{subject}: out of sync ({detail}).",
627
+ "quality.message.bridgeMissing": "{subject}: app bridge file is missing.",
628
+ "quality.message.bridgeMismatch": "{subject}: mismatched keys ({items}).",
629
+ "quality.message.dirtyTree": "{subject}: working tree has uncommitted changes.",
630
+ "quality.message.behindRemote": "{subject}: local branch is behind remote by {count} commit(s).",
631
+ "quality.message.countFail": "{subject}: {count} issue(s).",
632
+ "quality.message.staleTasks": "{subject}: {count} task(s) without recent activity.",
633
+ "quality.message.recordedFrom": "{subject}: recorded from {source}.",
634
+ "quality.verification.blocker.missing": "Missing recent verification evidence for {scope}.",
635
+ "quality.verification.blocker.failed": "Latest {scope} verification did not pass.",
636
+ "quality.verification.blocker.stale": "{scope} evidence is stale against the current configuration.",
637
+ "quality.verification.blocker.recommendation": "Run 'trackops quality verify --scope {scope}' before continuing.",
638
+ "quality.verify.reviewNoteRequired": "Manual review requires --note.",
639
+ "quality.readiness.phase": "Phase readiness ({phase})",
640
+ "quality.readiness.release": "Release readiness",
641
+ "quality.readiness.promotion": "Promotion readiness ({target})",
642
+ "quality.section.blockers": "Blockers:",
643
+ "quality.section.warnings": "Warnings:",
644
+ "quality.section.waived": "Waived:",
645
+ "quality.section.status": "Quality status",
646
+ "quality.section.currentPhase": "Current phase",
647
+ "quality.section.profiles": "Profiles",
648
+ "quality.section.probes": "Probes",
649
+ "quality.section.findings": "Findings",
650
+ "quality.section.verification": "Verification",
651
+ "quality.usage.title": "Usage:",
652
+ "quality.usage.status": "trackops quality status [--json] [--domain <name>] [--phase current|O|P|E|R|A]",
653
+ "quality.usage.verify": "trackops quality verify [--scope test|build|smoke|review|all] [--json] [--note \"...\"]",
654
+ "quality.usage.phaseReadiness": "trackops quality phase-readiness [--phase current|O|P|E|R|A] [--json]",
655
+ "quality.usage.releaseReadiness": "trackops quality release-readiness [--json]",
656
+ "quality.usage.promoteReadiness": "trackops quality promote-readiness --target staging|production [--json]",
657
+ "quality.usage.waiverList": "trackops quality waiver list [--json]",
658
+ "quality.usage.waiverAdd": "trackops quality waiver add <probe-id> --scope release|promotion --reason ... --approved-by ... --expires-at ...",
659
+ "quality.waivers.none": "No quality waivers.",
660
+ "quality.waivers.approvedBy": "approved by {approvedBy}",
661
+ "quality.waivers.created": "Waiver created: {id}",
662
+ "quality.error.waiverProbeRequired": "quality waiver add requires a probe id.",
663
+ "quality.error.waiverScope": "quality waiver scope must be 'release' or 'promotion'.",
664
+ "quality.error.waiverReason": "quality waiver add requires --reason.",
665
+ "quality.error.waiverApprovedBy": "quality waiver add requires --approved-by.",
666
+ "quality.error.waiverExpiry": "Promotion waivers require --expires-at.",
667
+ "quality.statusBlock.title": "Quality",
668
+ "quality.statusBlock.status": "status",
669
+ "quality.statusBlock.phaseReadiness": "phase readiness",
670
+ "quality.statusBlock.releaseReadiness": "release readiness",
671
+ "quality.statusBlock.blocker": "blocker",
672
+ "quality.promotion.versionControlRequired": "Production promotion requires version control metadata.",
673
+ "quality.promotion.versionControlRecommendation": "Complete versionControl.remote/provider/developmentBranch/releaseBranch in intake.json.",
674
+ "quality.promotion.deploymentRequired": "Production promotion requires complete deployment metadata.",
675
+ "quality.promotion.deploymentRecommendation": "Complete deployment.mode/target/smokeCommand in intake.json.",
676
+ "quality.promotion.policyApprovalRequired": "Production promotion requires an explicit approval rule in policy.",
677
+ "quality.promotion.policyApprovalRecommendation": "Restore production_deploy_requires_approval=true in autonomy.json.",
678
+ "quality.phase.O.title": "Orchestrate",
679
+ "quality.phase.P.title": "Prove",
680
+ "quality.phase.E.title": "Establish",
681
+ "quality.phase.R.title": "Refine",
682
+ "quality.phase.A.title": "Automate",
683
+ "quality.phase.message.pass": "{title}: OK.",
684
+ "quality.phase.message.fail": "{title}: not satisfied.",
685
+ "quality.phase.message.failDetail": "{title}: not satisfied ({detail}).",
686
+ "quality.phase.message.warn": "{title}: needs attention.",
687
+ "quality.phase.message.warnDetail": "{title}: needs attention ({detail}).",
688
+ "quality.phase.message.skip": "{title}: not applicable.",
689
+ "quality.phase.check.bootstrapComplete.title": "Bootstrap completed",
690
+ "quality.phase.check.bootstrapComplete.recommendation": "Complete or resume OPERA bootstrap before closing the phase.",
691
+ "quality.phase.check.discoveryCore.title": "Core discovery defined",
692
+ "quality.phase.check.discoveryCore.recommendation": "Complete problem, user, singular outcome, and source of truth.",
693
+ "quality.phase.check.bootstrapArtifacts.title": "Bootstrap artifacts consistent",
694
+ "quality.phase.check.bootstrapArtifacts.recommendation": "Ensure intake.json, spec-dossier.md, operating-contract.json, and quality-report have no blocking gaps.",
695
+ "quality.phase.check.versionControl.title": "Version control metadata recorded",
696
+ "quality.phase.check.versionControl.recommendation": "Record remote, provider, developmentBranch, and releaseBranch.",
697
+ "quality.phase.check.deployment.title": "Deployment metadata recorded",
698
+ "quality.phase.check.deployment.recommendation": "Record mode, target, and smokeCommand.",
699
+ "quality.phase.check.schemas.title": "Input/output schemas defined",
700
+ "quality.phase.check.schemas.recommendation": "Define inputSchema and outputSchema with a minimal useful structure.",
701
+ "quality.phase.check.behaviorRules.title": "Behavior rules documented",
702
+ "quality.phase.check.behaviorRules.recommendation": "Document behaviorRules in bootstrap or contract.",
703
+ "quality.phase.check.taskPlanSynced.title": "task_plan synced",
704
+ "quality.phase.check.taskPlanSynced.recommendation": "Run 'trackops sync' and review task_plan.md.",
705
+ "quality.phase.check.envKeys.title": "Environment credentials verified",
706
+ "quality.phase.check.envKeys.recommendation": "Fill the required keys in .env and sync the bridge.",
707
+ "quality.phase.check.verificationEvidence.title": "Verification evidence available",
708
+ "quality.phase.check.verificationEvidence.recommendation": "Run tests or smoke checks to prove real technical viability.",
709
+ "quality.phase.check.criticalFindings.title": "No critical findings open",
710
+ "quality.phase.check.criticalFindings.recommendation": "Resolve or explicitly accept any critical finding.",
711
+ "quality.phase.check.blockedTasksDocumented.title": "Blocked tasks documented",
712
+ "quality.phase.check.blockedTasksDocumented.recommendation": "Add blocker reasons to all blocked tasks.",
713
+ "quality.phase.check.backlogIntegrity.title": "Backlog without cycles or phantom references",
714
+ "quality.phase.check.backlogIntegrity.recommendation": "Fix dependencies, parents, and cycles in the backlog graph.",
715
+ "quality.phase.check.requiredAcceptance.title": "Required tasks have acceptance",
716
+ "quality.phase.check.requiredAcceptance.recommendation": "Add acceptance criteria to every required leaf task.",
717
+ "quality.phase.check.taskTracking.title": "Work tracked in TrackOps",
718
+ "quality.phase.check.taskTracking.recommendation": "Start, move, and close tasks from TrackOps to keep an operational trace.",
719
+ "quality.phase.check.docsSynced.title": "Generated docs synced",
720
+ "quality.phase.check.docsSynced.recommendation": "Run 'trackops sync' and review documentation drift.",
721
+ "quality.phase.check.repoCommitted.title": "Changes materialized in git",
722
+ "quality.phase.check.repoCommitted.recommendation": "Commit relevant changes before closing the phase.",
723
+ "quality.phase.check.findingsHighClosed.title": "No critical/high findings open",
724
+ "quality.phase.check.findingsHighClosed.recommendation": "Resolve or explicitly accept high-severity findings before closing refinement.",
725
+ "quality.phase.check.contractConsistent.title": "Contract consistent with artifacts",
726
+ "quality.phase.check.contractConsistent.recommendation": "Run the auditor or fix contradictions between contract and bootstrap.",
727
+ "quality.phase.check.reviewEvidence.title": "Review recorded",
728
+ "quality.phase.check.reviewEvidence.recommendation": "Record manual review with 'trackops quality verify --scope review --note ...'.",
729
+ "quality.phase.check.tmpClean.title": ".tmp clean",
730
+ "quality.phase.check.tmpClean.recommendation": "Clean unnecessary temporary artifacts before automation or release.",
731
+ "quality.phase.check.deploymentReady.title": "Deployment ready",
732
+ "quality.phase.check.deploymentReady.recommendation": "Complete deployment metadata and destination before automating.",
733
+ "quality.phase.check.smokePassed.title": "Smoke test passed",
734
+ "quality.phase.check.smokePassed.recommendation": "Run and record a valid smoke test on the destination.",
735
+ "quality.phase.check.remotePushed.title": "Changes pushed to remote",
736
+ "quality.phase.check.remotePushed.recommendation": "Push to remote when versionControl.remote is true.",
737
+ "quality.phase.check.repoClean.title": "Working tree clean",
738
+ "quality.phase.check.repoClean.recommendation": "Leave the working tree clean before closing automation/release.",
739
+ "quality.probe.bootstrap.complete.title": "Bootstrap",
740
+ "quality.probe.bootstrap.complete.recommendation": "Complete bootstrap before trusting phase or release readiness.",
741
+ "quality.probe.contract.exists.title": "Operating contract",
742
+ "quality.probe.contract.exists.recommendation": "Generate or restore ops/contract/operating-contract.json.",
743
+ "quality.probe.contract.valid-json.title": "Contract JSON",
744
+ "quality.probe.contract.valid-json.recommendation": "Fix operating-contract.json so it parses cleanly.",
745
+ "quality.probe.contract.intent-complete.title": "Contract intent",
746
+ "quality.probe.contract.intent-complete.recommendation": "Complete the missing intent fields.",
747
+ "quality.probe.policy.exists.title": "Autonomy policy",
748
+ "quality.probe.policy.exists.recommendation": "Generate or restore ops/policy/autonomy.json.",
749
+ "quality.probe.policy.valid-json.title": "Policy JSON",
750
+ "quality.probe.policy.valid-json.recommendation": "Fix autonomy.json so it parses cleanly.",
751
+ "quality.probe.docs.drift.title": "Generated docs",
752
+ "quality.probe.docs.drift.recommendation": "Run 'trackops sync' and review generated documents.",
753
+ "quality.probe.docs.genesis-exists.title": "genesis.md",
754
+ "quality.probe.docs.genesis-exists.recommendation": "Regenerate genesis.md from the current contract and bootstrap state.",
755
+ "quality.probe.env.missing-keys.title": "Required environment keys",
756
+ "quality.probe.env.missing-keys.recommendation": "Fill the missing keys in .env.",
757
+ "quality.probe.env.bridge-sync.title": "App env bridge",
758
+ "quality.probe.env.bridge-sync.recommendation": "Run 'trackops env sync' to refresh the bridge.",
759
+ "quality.probe.repo.clean.title": "Working tree",
760
+ "quality.probe.repo.clean.recommendation": "Commit, stash, or clean unrelated changes before release.",
761
+ "quality.probe.repo.behind-remote.title": "Remote sync",
762
+ "quality.probe.repo.behind-remote.recommendation": "Pull the latest remote changes before releasing or promoting.",
763
+ "quality.probe.tasks.circular-deps.title": "Circular dependencies",
764
+ "quality.probe.tasks.circular-deps.recommendation": "Break the circular dependency chain.",
765
+ "quality.probe.tasks.phantom-deps.title": "Phantom dependencies",
766
+ "quality.probe.tasks.phantom-deps.recommendation": "Fix references to tasks that do not exist.",
767
+ "quality.probe.tasks.phantom-parents.title": "Phantom parents",
768
+ "quality.probe.tasks.phantom-parents.recommendation": "Reassign or clear parentId values pointing to missing tasks.",
769
+ "quality.probe.tasks.hierarchy-cycles.title": "Hierarchy cycles",
770
+ "quality.probe.tasks.hierarchy-cycles.recommendation": "Break parent-child cycles in the task tree.",
771
+ "quality.probe.tasks.stale-in-progress.title": "Stale in-progress tasks",
772
+ "quality.probe.tasks.stale-in-progress.recommendation": "Update, block, or complete tasks without recent activity.",
773
+ "quality.probe.tasks.blocked-without-note.title": "Blocked tasks without note",
774
+ "quality.probe.tasks.blocked-without-note.recommendation": "Document the blocker reason for every blocked task.",
775
+ "quality.probe.tasks.required-without-acceptance.title": "Missing acceptance",
776
+ "quality.probe.tasks.required-without-acceptance.recommendation": "Add acceptance criteria to all required tasks.",
777
+ "quality.probe.findings.open-critical.title": "Open critical findings",
778
+ "quality.probe.findings.open-critical.recommendation": "Resolve or explicitly waive critical findings before release.",
779
+ "quality.probe.findings.open-high.title": "Open high findings",
780
+ "quality.probe.findings.open-high.recommendation": "Resolve or explicitly track high findings before closing refinement.",
781
+ "quality.probe.bootstrap.version-control.title": "Bootstrap version control metadata",
782
+ "quality.probe.bootstrap.version-control.recommendation": "Capture versionControl.remote/provider/developmentBranch/releaseBranch in intake.json.",
783
+ "quality.probe.bootstrap.deployment.title": "Bootstrap deployment metadata",
784
+ "quality.probe.bootstrap.deployment.recommendation": "Capture deployment.mode/target/smokeCommand in intake.json.",
785
+ "quality.probe.verification.configured.title": "Verification configuration",
786
+ "quality.probe.verification.configured.recommendation": "Declare explicit commands in meta.quality.verification if defaults are not enough.",
787
+ "ui.dashboard.tabQuality": "Quality",
788
+ "ui.dashboard.quality.kpiQuality": "Quality",
789
+ "ui.dashboard.quality.failingProbes": "{count} failing probes",
790
+ "ui.dashboard.quality.kpiPhase": "Phase readiness",
791
+ "ui.dashboard.quality.blockerCount": "{count} blockers",
792
+ "ui.dashboard.quality.kpiRelease": "Release readiness",
793
+ "ui.dashboard.quality.kpiPromotion": "Production promotion",
794
+ "ui.dashboard.quality.domainStatus": "Domain status",
795
+ "ui.dashboard.quality.domainCounts": "pass {pass} · fail {fail} · skip {skip}",
796
+ "ui.dashboard.quality.noDomainData": "No domain data.",
797
+ "ui.dashboard.quality.latestVerification": "Latest verification",
798
+ "ui.dashboard.quality.noVerificationRuns": "No verification runs recorded.",
799
+ "ui.dashboard.quality.topBlockers": "Top blockers",
800
+ "ui.dashboard.quality.noFailingProbes": "No failing probes.",
801
+ "ui.dashboard.quality.readinessDetail": "Readiness detail",
802
+ "ui.dashboard.quality.kind.phase": "phase",
803
+ "ui.dashboard.quality.kind.release": "release",
804
+ "ui.dashboard.quality.kind.promotion": "promotion",
805
+ "ui.dashboard.quality.kind.readiness": "readiness",
806
+ "ui.dashboard.quality.noBlockers": "No blockers",
807
+ "ui.dashboard.quality.activeWaivers": "Active waivers",
808
+ "ui.dashboard.quality.waiverSummary": "{scope} · approved by {approvedBy}",
809
+ "ui.dashboard.quality.noWaivers": "No active waivers."
810
+ }