trackops 2.0.6 → 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/README.md +295 -701
- package/bin/trackops.js +24 -16
- package/lib/config.js +265 -58
- package/lib/control.js +830 -292
- package/lib/init.js +46 -16
- package/lib/opera-bootstrap.js +85 -45
- package/lib/opera-phase-dod.js +485 -0
- package/lib/opera.js +8 -5
- package/lib/plans.js +1329 -0
- package/lib/quality-assert.js +49 -0
- package/lib/quality.js +1759 -0
- package/lib/release.js +18 -11
- package/lib/server.js +504 -192
- package/locales/en.json +249 -15
- package/locales/es.json +249 -15
- package/package.json +6 -5
- package/scripts/quality-unit-tests.js +130 -0
- package/scripts/smoke-tests.js +357 -57
- package/skills/trackops/skill.json +29 -29
- package/templates/skills/opera-quality-guard/SKILL.md +26 -0
- package/templates/skills/opera-quality-guard/locales/en/SKILL.md +26 -0
- package/templates/skills/opera-skill/SKILL.md +8 -0
- package/templates/skills/opera-skill/locales/en/SKILL.md +8 -0
- package/ui/js/api.js +93 -26
- package/ui/js/app.js +13 -7
- package/ui/js/filters.js +49 -29
- package/ui/js/time-tracker.js +41 -28
- package/ui/js/views/board.js +22 -14
- package/ui/js/views/dashboard.js +206 -49
- package/ui/js/views/execution.js +7 -3
- package/ui/js/views/plans.js +284 -0
- package/ui/js/views/scrum.js +25 -13
- package/ui/js/views/sidebar.js +9 -8
- package/ui/js/views/tasks.js +238 -134
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.
|
|
48
|
-
"doc.label.
|
|
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.",
|
|
@@ -93,9 +96,11 @@
|
|
|
93
96
|
"cli.status.noReadyTasks": "No ready tasks; check blockers or dependencies.",
|
|
94
97
|
"cli.status.blockers": "Blockers:",
|
|
95
98
|
"cli.status.noBlockers": "No blockers.",
|
|
96
|
-
"cli.status.decisions": "External decisions:",
|
|
97
|
-
"cli.status.noDecisions": "None.",
|
|
98
|
-
"cli.status.
|
|
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:",
|
|
99
104
|
"cli.status.branch": "Branch: {branch} | Tree: {treeStatus}",
|
|
100
105
|
"cli.status.treeClean": "clean",
|
|
101
106
|
"cli.status.treeDirty": "dirty ({staged} staged, {unstaged} unstaged, {untracked} untracked)",
|
|
@@ -122,6 +127,8 @@
|
|
|
122
127
|
"cli.next.priority": "priority",
|
|
123
128
|
"cli.next.stream": "stream",
|
|
124
129
|
"cli.next.summary": "summary",
|
|
130
|
+
"cli.next.activeTasks": "Active work:",
|
|
131
|
+
"cli.next.readyQueue": "Next ready tasks in queue:",
|
|
125
132
|
"cli.sync.dryRunWouldUpdate": "Would update: {files}",
|
|
126
133
|
"cli.sync.dryRunInSync": "All docs are already in sync.",
|
|
127
134
|
|
|
@@ -200,11 +207,22 @@
|
|
|
200
207
|
"server.invalidJson": "Invalid JSON.",
|
|
201
208
|
"server.sessionNotFound": "Session not found.",
|
|
202
209
|
"server.noActiveSession": "No active session to start stream.",
|
|
203
|
-
"server.commandRequired": "A command is required.",
|
|
204
|
-
"server.projectNotResolved": "Could not resolve project.",
|
|
205
|
-
"server.invalidLocale": "Invalid locale: {value}.",
|
|
206
|
-
|
|
207
|
-
"
|
|
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.",
|
|
208
226
|
"init.opsExists": "Ops is already installed in this project.",
|
|
209
227
|
"init.created": "Created {file}",
|
|
210
228
|
"init.updated": "Updated {file}",
|
|
@@ -572,5 +590,221 @@
|
|
|
572
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.",
|
|
573
591
|
"handoff.label.knownIntention": "Known project intention",
|
|
574
592
|
"handoff.section.intakeSchema": "Required intake.json schema",
|
|
575
|
-
"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."
|
|
576
|
-
|
|
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
|
+
}
|
package/locales/es.json
CHANGED
|
@@ -42,10 +42,12 @@
|
|
|
42
42
|
"doc.label.completedTasks": "Completadas",
|
|
43
43
|
"doc.label.inProgressTasks": "En progreso",
|
|
44
44
|
"doc.label.inReviewTasks": "En revision",
|
|
45
|
-
"doc.label.pendingTasks": "Pendientes",
|
|
46
|
-
"doc.label.blockedTasks": "Bloqueadas",
|
|
47
|
-
"doc.label.
|
|
48
|
-
"doc.label.
|
|
45
|
+
"doc.label.pendingTasks": "Pendientes",
|
|
46
|
+
"doc.label.blockedTasks": "Bloqueadas",
|
|
47
|
+
"doc.label.awaitingUserTasks": "Esperando confirmacion del usuario",
|
|
48
|
+
"doc.label.agentInboxPending": "Instrucciones pendientes para el agente",
|
|
49
|
+
"doc.label.findingOpen": "abierto",
|
|
50
|
+
"doc.label.findingResolved": "resuelto",
|
|
49
51
|
"doc.label.findingStatus": "Estado",
|
|
50
52
|
"doc.label.findingDetail": "Detalle",
|
|
51
53
|
"doc.label.findingImpact": "Impacto",
|
|
@@ -60,7 +62,8 @@
|
|
|
60
62
|
"doc.label.noActiveTasks": "No hay tareas en progreso en este momento.",
|
|
61
63
|
"doc.label.noReviewTasks": "No hay tareas en revision.",
|
|
62
64
|
"doc.label.noActiveBlockers": "Sin bloqueadores activos.",
|
|
63
|
-
"doc.label.noHistory": "Sin movimientos registrados.",
|
|
65
|
+
"doc.label.noHistory": "Sin movimientos registrados.",
|
|
66
|
+
"doc.label.noAgentInbox": "Sin instrucciones pendientes para el agente.",
|
|
64
67
|
|
|
65
68
|
"cli.runtimeUpdated": "Runtime actualizado en {path}",
|
|
66
69
|
"cli.docsSynced": "Documentacion operativa sincronizada.",
|
|
@@ -93,9 +96,11 @@
|
|
|
93
96
|
"cli.status.noReadyTasks": "No hay tareas listas; revisar bloqueadores o dependencias.",
|
|
94
97
|
"cli.status.blockers": "Bloqueadores:",
|
|
95
98
|
"cli.status.noBlockers": "Sin bloqueadores.",
|
|
96
|
-
"cli.status.decisions": "Decisiones externas:",
|
|
97
|
-
"cli.status.noDecisions": "Ninguna.",
|
|
98
|
-
"cli.status.
|
|
99
|
+
"cli.status.decisions": "Decisiones externas:",
|
|
100
|
+
"cli.status.noDecisions": "Ninguna.",
|
|
101
|
+
"cli.status.agentInbox": "Bandeja del agente:",
|
|
102
|
+
"cli.status.noAgentInbox": "Sin instrucciones pendientes.",
|
|
103
|
+
"cli.status.repo": "Repositorio:",
|
|
99
104
|
"cli.status.branch": "Rama: {branch} | Arbol: {treeStatus}",
|
|
100
105
|
"cli.status.treeClean": "limpio",
|
|
101
106
|
"cli.status.treeDirty": "con cambios ({staged} preparados, {unstaged} sin preparar, {untracked} nuevos)",
|
|
@@ -122,6 +127,8 @@
|
|
|
122
127
|
"cli.next.priority": "prioridad",
|
|
123
128
|
"cli.next.stream": "stream",
|
|
124
129
|
"cli.next.summary": "resumen",
|
|
130
|
+
"cli.next.activeTasks": "Trabajo activo:",
|
|
131
|
+
"cli.next.readyQueue": "Siguientes tareas listas en cola:",
|
|
125
132
|
"cli.sync.dryRunWouldUpdate": "Se actualizarian: {files}",
|
|
126
133
|
"cli.sync.dryRunInSync": "Toda la documentacion ya esta sincronizada.",
|
|
127
134
|
|
|
@@ -200,11 +207,22 @@
|
|
|
200
207
|
"server.invalidJson": "JSON invalido.",
|
|
201
208
|
"server.sessionNotFound": "Sesion no encontrada.",
|
|
202
209
|
"server.noActiveSession": "No hay sesion activa para iniciar stream.",
|
|
203
|
-
"server.commandRequired": "Se requiere un comando.",
|
|
204
|
-
"server.projectNotResolved": "No se pudo resolver el proyecto.",
|
|
205
|
-
"server.invalidLocale": "Idioma invalido: {value}.",
|
|
206
|
-
|
|
207
|
-
"
|
|
210
|
+
"server.commandRequired": "Se requiere un comando.",
|
|
211
|
+
"server.projectNotResolved": "No se pudo resolver el proyecto.",
|
|
212
|
+
"server.invalidLocale": "Idioma invalido: {value}.",
|
|
213
|
+
"server.timeTaskRequired": "Debes indicar una tarea para iniciar el cronometro.",
|
|
214
|
+
"server.timeTaskNotFound": "No existe la tarea '{taskId}'.",
|
|
215
|
+
"server.timeParentTask": "Solo puedes registrar tiempo en tareas hoja. Divide el trabajo y arranca el timer en una subtarea accionable.",
|
|
216
|
+
"server.timeStartedNote": "Cronometro iniciado desde el dashboard.",
|
|
217
|
+
"server.timeEntryNotFound": "No se encontro el registro de tiempo.",
|
|
218
|
+
"server.agentExecutionStarted": "Ejecucion del agente iniciada desde la consola.",
|
|
219
|
+
|
|
220
|
+
"agentInbox.awaitUser.message": "La tarea '{title}' ({taskId}) queda en {status} desde {source}. El agente debe esperar la confirmacion del usuario y continuar cuando haya resultado real.",
|
|
221
|
+
"agentInbox.awaitUser.resolved": "La espera de confirmacion del usuario ha quedado resuelta.",
|
|
222
|
+
"agentInbox.verify.message": "El usuario ha dejado la tarea '{title}' ({taskId}) en estado {status} desde {source}. El agente debe comprobar el estado real antes de continuar.",
|
|
223
|
+
"agentInbox.verify.resolved": "La verificacion del estado real ya ha sido atendida.",
|
|
224
|
+
|
|
225
|
+
"init.welcome": "Proyecto inicializado con trackops.",
|
|
208
226
|
"init.opsExists": "Ops ya esta instalado en este proyecto.",
|
|
209
227
|
"init.created": "Creado {file}",
|
|
210
228
|
"init.updated": "Actualizado {file}",
|
|
@@ -572,5 +590,221 @@
|
|
|
572
590
|
"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
591
|
"handoff.label.knownIntention": "Intencion conocida del proyecto",
|
|
574
592
|
"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
|
-
|
|
593
|
+
"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.",
|
|
594
|
+
|
|
595
|
+
"cli.help.plan.desc": "Importa planes de implementacion externos en el control del proyecto con reconciliacion preview-first.",
|
|
596
|
+
"cli.help.quality.desc": "Inspeccion continua de calidad, evidencia de verificacion y gates de readiness para release/promocion.",
|
|
597
|
+
|
|
598
|
+
"quality.status.pass": "correcto",
|
|
599
|
+
"quality.status.fail": "fallando",
|
|
600
|
+
"quality.status.warn": "atencion",
|
|
601
|
+
"quality.status.skip": "omitido",
|
|
602
|
+
"quality.status.passed": "superado",
|
|
603
|
+
"quality.status.failed": "fallido",
|
|
604
|
+
"quality.status.skipped": "omitido",
|
|
605
|
+
"quality.status.not_configured": "sin configurar",
|
|
606
|
+
"quality.status.ready": "listo",
|
|
607
|
+
"quality.status.blocked": "bloqueado",
|
|
608
|
+
"quality.status.attention": "atencion",
|
|
609
|
+
"quality.status.unknown": "desconocido",
|
|
610
|
+
"quality.scope.test": "tests",
|
|
611
|
+
"quality.scope.build": "build",
|
|
612
|
+
"quality.scope.smoke": "smoke",
|
|
613
|
+
"quality.scope.review": "revision",
|
|
614
|
+
"quality.scope.all": "todos",
|
|
615
|
+
"quality.value.unknown": "desconocido",
|
|
616
|
+
"quality.value.missing": "faltante",
|
|
617
|
+
"quality.source.intake": "intake.json",
|
|
618
|
+
"quality.source.bootstrap": "bootstrap",
|
|
619
|
+
"quality.source.inferred": "inferencia",
|
|
620
|
+
"quality.source.unknown": "desconocido",
|
|
621
|
+
"quality.message.ok": "{subject}: correcto.",
|
|
622
|
+
"quality.message.notApplicable": "{subject}: no aplica.",
|
|
623
|
+
"quality.message.failDetail": "{subject}: {detail}.",
|
|
624
|
+
"quality.message.fileMissing": "{subject}: falta {path}.",
|
|
625
|
+
"quality.message.missingItems": "{subject}: faltan {items}.",
|
|
626
|
+
"quality.message.outOfSync": "{subject}: desincronizado ({detail}).",
|
|
627
|
+
"quality.message.bridgeMissing": "{subject}: falta el bridge de app.",
|
|
628
|
+
"quality.message.bridgeMismatch": "{subject}: claves desincronizadas ({items}).",
|
|
629
|
+
"quality.message.dirtyTree": "{subject}: hay cambios sin commit.",
|
|
630
|
+
"quality.message.behindRemote": "{subject}: la rama local va {count} commit(s) por detras del remoto.",
|
|
631
|
+
"quality.message.countFail": "{subject}: {count} incidencia(s).",
|
|
632
|
+
"quality.message.staleTasks": "{subject}: {count} tarea(s) sin actividad reciente.",
|
|
633
|
+
"quality.message.recordedFrom": "{subject}: registrado desde {source}.",
|
|
634
|
+
"quality.verification.blocker.missing": "Falta evidencia reciente para {scope}.",
|
|
635
|
+
"quality.verification.blocker.failed": "La ultima verificacion de {scope} no supero el check.",
|
|
636
|
+
"quality.verification.blocker.stale": "La evidencia de {scope} esta desactualizada respecto a la configuracion actual.",
|
|
637
|
+
"quality.verification.blocker.recommendation": "Ejecuta 'trackops quality verify --scope {scope}' antes de continuar.",
|
|
638
|
+
"quality.verify.reviewNoteRequired": "La revision manual requiere --note.",
|
|
639
|
+
"quality.readiness.phase": "Readiness de fase ({phase})",
|
|
640
|
+
"quality.readiness.release": "Readiness de release",
|
|
641
|
+
"quality.readiness.promotion": "Readiness de promocion ({target})",
|
|
642
|
+
"quality.section.blockers": "Bloqueadores:",
|
|
643
|
+
"quality.section.warnings": "Advertencias:",
|
|
644
|
+
"quality.section.waived": "Dispensas:",
|
|
645
|
+
"quality.section.status": "Estado de calidad",
|
|
646
|
+
"quality.section.currentPhase": "Fase actual",
|
|
647
|
+
"quality.section.profiles": "Perfiles",
|
|
648
|
+
"quality.section.probes": "Probes",
|
|
649
|
+
"quality.section.findings": "Hallazgos",
|
|
650
|
+
"quality.section.verification": "Verificacion",
|
|
651
|
+
"quality.usage.title": "Uso:",
|
|
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 hay dispensas de calidad.",
|
|
660
|
+
"quality.waivers.approvedBy": "aprobado por {approvedBy}",
|
|
661
|
+
"quality.waivers.created": "Dispensa creada: {id}",
|
|
662
|
+
"quality.error.waiverProbeRequired": "quality waiver add requiere un probe id.",
|
|
663
|
+
"quality.error.waiverScope": "quality waiver scope debe ser 'release' o 'promotion'.",
|
|
664
|
+
"quality.error.waiverReason": "quality waiver add requiere --reason.",
|
|
665
|
+
"quality.error.waiverApprovedBy": "quality waiver add requiere --approved-by.",
|
|
666
|
+
"quality.error.waiverExpiry": "Las dispensas de promotion requieren --expires-at.",
|
|
667
|
+
"quality.statusBlock.title": "Calidad",
|
|
668
|
+
"quality.statusBlock.status": "estado",
|
|
669
|
+
"quality.statusBlock.phaseReadiness": "readiness de fase",
|
|
670
|
+
"quality.statusBlock.releaseReadiness": "readiness de release",
|
|
671
|
+
"quality.statusBlock.blocker": "bloqueador",
|
|
672
|
+
"quality.promotion.versionControlRequired": "La promocion a produccion requiere metadata de control de versiones.",
|
|
673
|
+
"quality.promotion.versionControlRecommendation": "Completa versionControl.remote/provider/developmentBranch/releaseBranch en intake.json.",
|
|
674
|
+
"quality.promotion.deploymentRequired": "La promocion a produccion requiere metadata completa de deployment.",
|
|
675
|
+
"quality.promotion.deploymentRecommendation": "Completa deployment.mode/target/smokeCommand en intake.json.",
|
|
676
|
+
"quality.promotion.policyApprovalRequired": "La promocion a produccion requiere una regla explicita de aprobacion en policy.",
|
|
677
|
+
"quality.promotion.policyApprovalRecommendation": "Restaura production_deploy_requires_approval=true en autonomy.json.",
|
|
678
|
+
"quality.phase.O.title": "Orquestar",
|
|
679
|
+
"quality.phase.P.title": "Probar",
|
|
680
|
+
"quality.phase.E.title": "Estructurar",
|
|
681
|
+
"quality.phase.R.title": "Refinar",
|
|
682
|
+
"quality.phase.A.title": "Automatizar",
|
|
683
|
+
"quality.phase.message.pass": "{title}: correcto.",
|
|
684
|
+
"quality.phase.message.fail": "{title}: no cumple.",
|
|
685
|
+
"quality.phase.message.failDetail": "{title}: no cumple ({detail}).",
|
|
686
|
+
"quality.phase.message.warn": "{title}: requiere atencion.",
|
|
687
|
+
"quality.phase.message.warnDetail": "{title}: requiere atencion ({detail}).",
|
|
688
|
+
"quality.phase.message.skip": "{title}: no aplica.",
|
|
689
|
+
"quality.phase.check.bootstrapComplete.title": "Bootstrap completado",
|
|
690
|
+
"quality.phase.check.bootstrapComplete.recommendation": "Completa o reanuda el bootstrap de OPERA antes de cerrar la fase.",
|
|
691
|
+
"quality.phase.check.discoveryCore.title": "Discovery principal definido",
|
|
692
|
+
"quality.phase.check.discoveryCore.recommendation": "Completa problema, usuario, resultado singular y fuente de verdad.",
|
|
693
|
+
"quality.phase.check.bootstrapArtifacts.title": "Artefactos base de bootstrap consistentes",
|
|
694
|
+
"quality.phase.check.bootstrapArtifacts.recommendation": "Asegura intake.json, spec-dossier.md, operating-contract.json y quality-report sin faltantes bloqueantes.",
|
|
695
|
+
"quality.phase.check.versionControl.title": "Metadata de versionado registrada",
|
|
696
|
+
"quality.phase.check.versionControl.recommendation": "Registra remote, provider, developmentBranch y releaseBranch.",
|
|
697
|
+
"quality.phase.check.deployment.title": "Metadata de despliegue registrada",
|
|
698
|
+
"quality.phase.check.deployment.recommendation": "Registra mode, target y smokeCommand.",
|
|
699
|
+
"quality.phase.check.schemas.title": "Schemas de input/output definidos",
|
|
700
|
+
"quality.phase.check.schemas.recommendation": "Define inputSchema y outputSchema con estructura minima util.",
|
|
701
|
+
"quality.phase.check.behaviorRules.title": "Reglas de comportamiento documentadas",
|
|
702
|
+
"quality.phase.check.behaviorRules.recommendation": "Documenta behaviorRules en bootstrap o contrato.",
|
|
703
|
+
"quality.phase.check.taskPlanSynced.title": "task_plan sincronizado",
|
|
704
|
+
"quality.phase.check.taskPlanSynced.recommendation": "Ejecuta 'trackops sync' y revisa task_plan.md.",
|
|
705
|
+
"quality.phase.check.envKeys.title": "Credenciales y entorno verificados",
|
|
706
|
+
"quality.phase.check.envKeys.recommendation": "Completa las claves requeridas en .env y sincroniza el bridge.",
|
|
707
|
+
"quality.phase.check.verificationEvidence.title": "Evidencia de verificacion disponible",
|
|
708
|
+
"quality.phase.check.verificationEvidence.recommendation": "Ejecuta tests o smoke para demostrar viabilidad tecnica real.",
|
|
709
|
+
"quality.phase.check.criticalFindings.title": "Sin findings criticos abiertos",
|
|
710
|
+
"quality.phase.check.criticalFindings.recommendation": "Resuelve o acepta explicitamente cualquier finding critical.",
|
|
711
|
+
"quality.phase.check.blockedTasksDocumented.title": "Bloqueos documentados",
|
|
712
|
+
"quality.phase.check.blockedTasksDocumented.recommendation": "Añade razon de bloqueo a todas las tareas bloqueadas.",
|
|
713
|
+
"quality.phase.check.backlogIntegrity.title": "Backlog sin ciclos ni referencias fantasma",
|
|
714
|
+
"quality.phase.check.backlogIntegrity.recommendation": "Corrige dependencias, padres y ciclos del backlog.",
|
|
715
|
+
"quality.phase.check.requiredAcceptance.title": "Tareas requeridas con acceptance",
|
|
716
|
+
"quality.phase.check.requiredAcceptance.recommendation": "Añade acceptance criteria a cada tarea hoja requerida.",
|
|
717
|
+
"quality.phase.check.taskTracking.title": "Trabajo trazado con TrackOps",
|
|
718
|
+
"quality.phase.check.taskTracking.recommendation": "Inicia, mueve y cierra tareas desde TrackOps para dejar rastro operativo.",
|
|
719
|
+
"quality.phase.check.docsSynced.title": "Docs generados sincronizados",
|
|
720
|
+
"quality.phase.check.docsSynced.recommendation": "Ejecuta 'trackops sync' y revisa drift documental.",
|
|
721
|
+
"quality.phase.check.repoCommitted.title": "Cambios materializados en git",
|
|
722
|
+
"quality.phase.check.repoCommitted.recommendation": "Haz commit de los cambios relevantes antes de cerrar la fase.",
|
|
723
|
+
"quality.phase.check.findingsHighClosed.title": "Sin findings critical/high abiertos",
|
|
724
|
+
"quality.phase.check.findingsHighClosed.recommendation": "Resuelve o acepta los findings de severidad alta antes de cerrar refinement.",
|
|
725
|
+
"quality.phase.check.contractConsistent.title": "Contrato coherente con los artefactos",
|
|
726
|
+
"quality.phase.check.contractConsistent.recommendation": "Ejecuta el auditor o corrige contradicciones entre contrato y bootstrap.",
|
|
727
|
+
"quality.phase.check.reviewEvidence.title": "Revision registrada",
|
|
728
|
+
"quality.phase.check.reviewEvidence.recommendation": "Registra la revision manual con 'trackops quality verify --scope review --note ...'.",
|
|
729
|
+
"quality.phase.check.tmpClean.title": ".tmp limpio",
|
|
730
|
+
"quality.phase.check.tmpClean.recommendation": "Limpia residuos temporales no necesarios antes de automatizar o liberar.",
|
|
731
|
+
"quality.phase.check.deploymentReady.title": "Deployment preparado",
|
|
732
|
+
"quality.phase.check.deploymentReady.recommendation": "Completa la metadata y el destino de despliegue antes de automatizar.",
|
|
733
|
+
"quality.phase.check.smokePassed.title": "Smoke test superado",
|
|
734
|
+
"quality.phase.check.smokePassed.recommendation": "Ejecuta y registra un smoke test valido en el destino.",
|
|
735
|
+
"quality.phase.check.remotePushed.title": "Cambios pusheados al remoto",
|
|
736
|
+
"quality.phase.check.remotePushed.recommendation": "Haz push al remoto cuando versionControl.remote sea true.",
|
|
737
|
+
"quality.phase.check.repoClean.title": "Working tree limpio",
|
|
738
|
+
"quality.phase.check.repoClean.recommendation": "Deja el working tree limpio antes de cerrar automatizacion/release.",
|
|
739
|
+
"quality.probe.bootstrap.complete.title": "Bootstrap",
|
|
740
|
+
"quality.probe.bootstrap.complete.recommendation": "Completa el bootstrap antes de confiar en readiness de fase o release.",
|
|
741
|
+
"quality.probe.contract.exists.title": "Contrato operativo",
|
|
742
|
+
"quality.probe.contract.exists.recommendation": "Genera o restaura ops/contract/operating-contract.json.",
|
|
743
|
+
"quality.probe.contract.valid-json.title": "JSON del contrato",
|
|
744
|
+
"quality.probe.contract.valid-json.recommendation": "Corrige operating-contract.json para que parsee sin error.",
|
|
745
|
+
"quality.probe.contract.intent-complete.title": "Intent del contrato",
|
|
746
|
+
"quality.probe.contract.intent-complete.recommendation": "Completa los campos de intent faltantes.",
|
|
747
|
+
"quality.probe.policy.exists.title": "Politica de autonomia",
|
|
748
|
+
"quality.probe.policy.exists.recommendation": "Genera o restaura ops/policy/autonomy.json.",
|
|
749
|
+
"quality.probe.policy.valid-json.title": "JSON de policy",
|
|
750
|
+
"quality.probe.policy.valid-json.recommendation": "Corrige autonomy.json para que parsee sin error.",
|
|
751
|
+
"quality.probe.docs.drift.title": "Docs generados",
|
|
752
|
+
"quality.probe.docs.drift.recommendation": "Ejecuta 'trackops sync' y revisa los documentos generados.",
|
|
753
|
+
"quality.probe.docs.genesis-exists.title": "genesis.md",
|
|
754
|
+
"quality.probe.docs.genesis-exists.recommendation": "Regenera genesis.md desde el contrato y el bootstrap actuales.",
|
|
755
|
+
"quality.probe.env.missing-keys.title": "Claves de entorno requeridas",
|
|
756
|
+
"quality.probe.env.missing-keys.recommendation": "Completa las claves faltantes en .env.",
|
|
757
|
+
"quality.probe.env.bridge-sync.title": "Bridge de entorno app",
|
|
758
|
+
"quality.probe.env.bridge-sync.recommendation": "Ejecuta 'trackops env sync' para regenerar el bridge.",
|
|
759
|
+
"quality.probe.repo.clean.title": "Working tree",
|
|
760
|
+
"quality.probe.repo.clean.recommendation": "Haz commit, stash o limpia cambios no relacionados antes de liberar.",
|
|
761
|
+
"quality.probe.repo.behind-remote.title": "Sincronizacion con remoto",
|
|
762
|
+
"quality.probe.repo.behind-remote.recommendation": "Trae los ultimos cambios remotos antes de liberar o promocionar.",
|
|
763
|
+
"quality.probe.tasks.circular-deps.title": "Dependencias circulares",
|
|
764
|
+
"quality.probe.tasks.circular-deps.recommendation": "Rompe la cadena circular de dependencias.",
|
|
765
|
+
"quality.probe.tasks.phantom-deps.title": "Dependencias fantasma",
|
|
766
|
+
"quality.probe.tasks.phantom-deps.recommendation": "Corrige referencias a tareas inexistentes.",
|
|
767
|
+
"quality.probe.tasks.phantom-parents.title": "Padres fantasma",
|
|
768
|
+
"quality.probe.tasks.phantom-parents.recommendation": "Reasigna o limpia parentId que apunten a tareas inexistentes.",
|
|
769
|
+
"quality.probe.tasks.hierarchy-cycles.title": "Ciclos jerarquicos",
|
|
770
|
+
"quality.probe.tasks.hierarchy-cycles.recommendation": "Rompe los ciclos padre-hijo del arbol de tareas.",
|
|
771
|
+
"quality.probe.tasks.stale-in-progress.title": "Tareas estancadas en progreso",
|
|
772
|
+
"quality.probe.tasks.stale-in-progress.recommendation": "Actualiza, bloquea o completa las tareas sin actividad reciente.",
|
|
773
|
+
"quality.probe.tasks.blocked-without-note.title": "Bloqueos sin nota",
|
|
774
|
+
"quality.probe.tasks.blocked-without-note.recommendation": "Documenta la razon de bloqueo en cada tarea bloqueada.",
|
|
775
|
+
"quality.probe.tasks.required-without-acceptance.title": "Acceptance faltante",
|
|
776
|
+
"quality.probe.tasks.required-without-acceptance.recommendation": "Añade acceptance criteria a todas las tareas requeridas.",
|
|
777
|
+
"quality.probe.findings.open-critical.title": "Findings criticos abiertos",
|
|
778
|
+
"quality.probe.findings.open-critical.recommendation": "Resuelve o dispensa explicitamente los findings critical antes de release.",
|
|
779
|
+
"quality.probe.findings.open-high.title": "Findings high abiertos",
|
|
780
|
+
"quality.probe.findings.open-high.recommendation": "Resuelve o sigue de forma explicita los findings high antes de cerrar refinement.",
|
|
781
|
+
"quality.probe.bootstrap.version-control.title": "Metadata de versionado en bootstrap",
|
|
782
|
+
"quality.probe.bootstrap.version-control.recommendation": "Captura versionControl.remote/provider/developmentBranch/releaseBranch en intake.json.",
|
|
783
|
+
"quality.probe.bootstrap.deployment.title": "Metadata de deployment en bootstrap",
|
|
784
|
+
"quality.probe.bootstrap.deployment.recommendation": "Captura deployment.mode/target/smokeCommand en intake.json.",
|
|
785
|
+
"quality.probe.verification.configured.title": "Configuracion de verificacion",
|
|
786
|
+
"quality.probe.verification.configured.recommendation": "Declara comandos explicitos en meta.quality.verification si los defaults no bastan.",
|
|
787
|
+
"ui.dashboard.tabQuality": "Calidad",
|
|
788
|
+
"ui.dashboard.quality.kpiQuality": "Calidad",
|
|
789
|
+
"ui.dashboard.quality.failingProbes": "{count} probes fallando",
|
|
790
|
+
"ui.dashboard.quality.kpiPhase": "Readiness de fase",
|
|
791
|
+
"ui.dashboard.quality.blockerCount": "{count} bloqueadores",
|
|
792
|
+
"ui.dashboard.quality.kpiRelease": "Readiness de release",
|
|
793
|
+
"ui.dashboard.quality.kpiPromotion": "Promocion a produccion",
|
|
794
|
+
"ui.dashboard.quality.domainStatus": "Estado por dominio",
|
|
795
|
+
"ui.dashboard.quality.domainCounts": "pass {pass} · fail {fail} · skip {skip}",
|
|
796
|
+
"ui.dashboard.quality.noDomainData": "Sin datos por dominio.",
|
|
797
|
+
"ui.dashboard.quality.latestVerification": "Ultima verificacion",
|
|
798
|
+
"ui.dashboard.quality.noVerificationRuns": "No hay verificaciones registradas.",
|
|
799
|
+
"ui.dashboard.quality.topBlockers": "Bloqueadores principales",
|
|
800
|
+
"ui.dashboard.quality.noFailingProbes": "No hay probes fallando.",
|
|
801
|
+
"ui.dashboard.quality.readinessDetail": "Detalle de readiness",
|
|
802
|
+
"ui.dashboard.quality.kind.phase": "fase",
|
|
803
|
+
"ui.dashboard.quality.kind.release": "release",
|
|
804
|
+
"ui.dashboard.quality.kind.promotion": "promocion",
|
|
805
|
+
"ui.dashboard.quality.kind.readiness": "readiness",
|
|
806
|
+
"ui.dashboard.quality.noBlockers": "Sin bloqueadores",
|
|
807
|
+
"ui.dashboard.quality.activeWaivers": "Dispensas activas",
|
|
808
|
+
"ui.dashboard.quality.waiverSummary": "{scope} · aprobado por {approvedBy}",
|
|
809
|
+
"ui.dashboard.quality.noWaivers": "No hay dispensas activas."
|
|
810
|
+
}
|