@cat-factory/app 0.226.0 → 0.228.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +25 -0
  2. package/app/components/board/nodes/TaskCard.vue +68 -8
  3. package/app/components/outcome/OutcomeSummaryWindow.vue +614 -0
  4. package/app/components/panels/MergerResultView.vue +7 -0
  5. package/app/components/panels/ResultWindowShell.logic.spec.ts +4 -0
  6. package/app/components/panels/inspector/TaskExecution.vue +33 -0
  7. package/app/components/riskPolicy/RiskPolicyPreview.vue +6 -2
  8. package/app/components/settings/MergeRolePolicyEditor.logic.spec.ts +65 -2
  9. package/app/components/settings/MergeRolePolicyEditor.logic.ts +72 -0
  10. package/app/components/settings/MergeRolePolicyEditor.vue +133 -39
  11. package/app/components/settings/RiskPolicyPanel.vue +8 -0
  12. package/app/composables/usePipelineErrorToast.ts +4 -0
  13. package/app/composables/useRunDeepLink.ts +12 -4
  14. package/app/modular/result-views.ts +4 -0
  15. package/app/stores/ui/resultViews.ts +28 -0
  16. package/app/stores/ui.dispatch.spec.ts +55 -0
  17. package/app/types/merge.ts +2 -0
  18. package/app/utils/riskPolicy.spec.ts +21 -2
  19. package/app/utils/riskPolicy.ts +12 -0
  20. package/app/utils/runOutcome.spec.ts +492 -0
  21. package/app/utils/runOutcome.ts +509 -0
  22. package/i18n/locales/de.json +124 -6
  23. package/i18n/locales/en.json +127 -6
  24. package/i18n/locales/es.json +124 -6
  25. package/i18n/locales/fr.json +124 -6
  26. package/i18n/locales/he.json +124 -6
  27. package/i18n/locales/it.json +124 -6
  28. package/i18n/locales/ja.json +124 -6
  29. package/i18n/locales/pl.json +124 -6
  30. package/i18n/locales/tr.json +124 -6
  31. package/i18n/locales/uk.json +124 -6
  32. package/package.json +2 -2
@@ -525,10 +525,15 @@
525
525
  },
526
526
  "roleRules": {
527
527
  "heading": "Grenzen je startender Rolle",
528
- "help": "Was ein Lauf darf, hängt auch davon ab, wer ihn gestartet hat. Eine Rolle kann strengeren Regeln als den obigen unterliegen oder nur Probeläufe machen: Die Pipeline arbeitet und öffnet einen Pull Request, zusammengeführt wird nichts. Eine Rolle kann diese Richtlinie nur verschärfen, nie lockern.",
529
- "autoMergeOffWarning": "Für diese Vorlage ist das automatische Zusammenführen aus, jeder Pull Request geht also ohnehin an einen Menschen und die Kategoriegrenzen unten ändern nichts mehr. Probeläufe gelten weiterhin: Sie verweigern auch das manuelle Zusammenführen.",
528
+ "help": "Was ein Lauf darf, hängt auch davon ab, wer ihn gestartet hat. Eine Rolle kann auf bestimmte Änderungsarten beschränkt, an strengere Regeln als die obigen gebunden oder auf Probeläufe begrenzt werden: Die Pipeline arbeitet und öffnet einen Pull Request, zusammengeführt wird nichts. Eine Rolle kann diese Richtlinie nur einschränken, nie erweitern.",
529
+ "autoMergeOffWarning": "Automatisches Zusammenführen ist für diese Vorlage aus, daher geht ohnehin jeder Pull Request an einen Menschen und die Klassenlimits unten bewirken nichts. Die Merge-Beschränkung und Probeläufe gelten weiterhin: Beide verweigern auch das manuelle Zusammenführen.",
530
530
  "sandboxLabel": "Nur Probeläufe",
531
- "sandboxNote": "Läufe dieser Rolle öffnen einen Pull Request und führen nichts zusammen, die Kategorieregeln unten können sie also nicht weiter einschränken.",
531
+ "sandboxNote": "Läufe dieser Rolle öffnen einen Pull Request und führen nichts zusammen, daher kann keine der Beschränkungen unten sie strenger halten.",
532
+ "submissionLabel": "Einschränken, welche Änderungen diese Rolle zusammenführen darf",
533
+ "submissionHelp": "Wenn aktiv, werden bei Läufen dieser Rolle nur die angehakten Änderungsarten zusammengeführt. Alles andere bleibt für jemand anderen offen, unabhängig von den Bewertungen. Der Pull Request wird trotzdem geöffnet und kann auf dem Git-Host von Hand zusammengeführt werden.",
534
+ "submissionNone": "Nichts ist angehakt, also führt dieser Arbeitsbereich keinen Lauf dieser Rolle zusammen.",
535
+ "submissionBadge": "Zusammenführen beschränkt",
536
+ "classHeading": "Erforderliche Prüfung je Änderungsart",
532
537
  "noRules": "Keine Kategoriegrenzen",
533
538
  "ruleCount": "{count} Kategorie eingeschränkt | {count} Kategorien eingeschränkt",
534
539
  "inherit": "Wie in dieser Richtlinie",
@@ -1579,6 +1584,7 @@
1579
1584
  },
1580
1585
  "prNumber": "PR #{number}",
1581
1586
  "pullRequest": "Pull Request",
1587
+ "readOutcome": "Ergebnis lesen",
1582
1588
  "stepState": {
1583
1589
  "pending": "Ausstehend",
1584
1590
  "working": "In Arbeit",
@@ -1800,6 +1806,7 @@
1800
1806
  "class_auto_merge": "Diese Vorlage führt diese Änderungskategorie immer automatisch zusammen, daher wurden die Bewertungen nicht verglichen.",
1801
1807
  "class_requires_review": "Diese Vorlage gibt diese Änderungskategorie unabhängig von den Bewertungen immer an einen Menschen.",
1802
1808
  "role_requires_review": "Diese Vorgabe lässt Läufe, die ein {role} startet, für diese Art von Änderung unabhängig von den Bewertungen immer von einem Menschen prüfen. Ein Teammitglied mit höherer Berechtigung kann diesen PR unverändert zusammenführen.",
1809
+ "submission_not_allowed": "Diese Vorlage lässt Läufe, die von {role} gestartet wurden, nur diese Änderungsarten zusammenführen: {classes}. Dies ist eine andere Art, daher wartet der Pull Request auf jemanden, dessen Rolle ihn zusammenführen darf.",
1803
1810
  "dry_run": "Dies war ein Probelauf, daher blieb der Pull Request für einen Menschen offen und die Bewertungen wurden nicht verglichen. Starte die Aufgabe erneut als echten Lauf, um einen Pull Request zu erzeugen, den dieser Arbeitsbereich zusammenführt."
1804
1811
  },
1805
1812
  "scores": "Bewertungen",
@@ -1811,7 +1818,8 @@
1811
1818
  "ceiling": "Obergrenze {value}",
1812
1819
  "rationale": "Begründung",
1813
1820
  "noAssessment": "Der Merger hat keine bewertete Einschätzung zurückgegeben.",
1814
- "noResult": "Noch keine Merge-Entscheidung aufgezeichnet."
1821
+ "noResult": "Noch keine Merge-Entscheidung aufgezeichnet.",
1822
+ "noSubmittableClasses": "keine"
1815
1823
  },
1816
1824
  "testReport": {
1817
1825
  "title": "Testbericht",
@@ -2927,6 +2935,8 @@
2927
2935
  "pr": "PR",
2928
2936
  "prNumber": "PR #{number}",
2929
2937
  "openPrOnGithub": "{pr} auf GitHub öffnen",
2938
+ "readOutcome": "Ergebnis",
2939
+ "readOutcomeHint": "Lies nach, was sich geändert hat, mit den Belegen dafür",
2930
2940
  "review": "Überprüfen",
2931
2941
  "merge": "Mergen",
2932
2942
  "mergeConfirm": {
@@ -5271,7 +5281,8 @@
5271
5281
  "input_gate_parked": "Über die Eingabeprüfung der Aufgabe beantworten",
5272
5282
  "ticket_already_linked": "Dieses Ticket hat bereits eine Aufgabe",
5273
5283
  "document_already_linked": "Dokument bereits angehängt",
5274
- "dry_run_not_mergeable": "Probelauf kann nicht zusammengeführt werden"
5284
+ "dry_run_not_mergeable": "Probelauf kann nicht zusammengeführt werden",
5285
+ "submission_not_allowed": "Zusammenführen für diesen Lauf nicht erlaubt"
5275
5286
  },
5276
5287
  "description": {
5277
5288
  "dependencies_unmet": "Diese Aufgabe hängt von anderen ab, die noch nicht abgeschlossen sind. Schließe sie ab oder gib sie frei und starte dann erneut.",
@@ -5308,7 +5319,8 @@
5308
5319
  "input_gate_parked": "Dieser Lauf wartet auf seine Eingabeprüfung, die über die Freigabe nicht beantwortet werden kann. Nutzen Sie den Hinweis am Lauf: Aufgabe ergänzen und erneut prüfen, oder trotzdem ausführen.",
5309
5320
  "ticket_already_linked": "Ein Ticket kann nur eine Aufgabe stützen. Es erneut zu verknüpfen würde der bestehenden Aufgabe genau den Kontext entziehen, mit dem sie angelegt wurde. Öffne stattdessen diese Aufgabe oder hebe die Verknüpfung des Tickets zuerst auf.",
5310
5321
  "document_already_linked": "Dieses Dokument ist an eine andere Aufgabe angehängt. Lösen Sie es dort zuerst, oder hängen Sie eine separate Kopie an.",
5311
- "dry_run_not_mergeable": "Dieser Pull Request stammt aus einem Probelauf und kann hier nicht zusammengeführt werden. Starte die Aufgabe erneut als echten Lauf, um einen Pull Request zu erzeugen, den dieser Arbeitsbereich zusammenführt."
5322
+ "dry_run_not_mergeable": "Dieser Pull Request stammt aus einem Probelauf und kann hier nicht zusammengeführt werden. Starte die Aufgabe erneut als echten Lauf, um einen Pull Request zu erzeugen, den dieser Arbeitsbereich zusammenführt.",
5323
+ "submission_not_allowed": "Die Merge-Richtlinie dieser Aufgabe erlaubt der Rolle, die diesen Lauf gestartet hat, diese Änderungsart nicht zusammenzuführen. Jemand mit einer passenden Rolle kann es tun, oder ein Admin erweitert die Richtlinie in der Merge-Vorlage."
5312
5324
  },
5313
5325
  "action": {
5314
5326
  "connectGitHub": "GitHub verbinden",
@@ -5890,6 +5902,110 @@
5890
5902
  "fixRequested": "Korrektur angefordert"
5891
5903
  }
5892
5904
  },
5905
+ "outcome": {
5906
+ "title": "Ergebnis",
5907
+ "subtitle": "Was dieser Lauf geändert hat, und die Belege dafür",
5908
+ "diff": "Diff öffnen",
5909
+ "diffNumbered": "Diff öffnen (#{number})",
5910
+ "peerDiff": "Diff in {repo} öffnen",
5911
+ "disposition": {
5912
+ "merged": "Zusammengeführt",
5913
+ "awaiting_merge": "Wartet auf das Zusammenführen",
5914
+ "in_flight": "Läuft noch",
5915
+ "needs_attention": "Braucht Aufmerksamkeit",
5916
+ "not_run": "Noch nicht gelaufen",
5917
+ "unknown": "Lauf nicht geladen"
5918
+ },
5919
+ "ask": {
5920
+ "title": "Was gefordert war",
5921
+ "none": "Diese Aufgabe hat keine Beschreibung, es gibt hier also nichts, womit sich das Ergebnis vergleichen ließe."
5922
+ },
5923
+ "gap": {
5924
+ "run_unavailable": "Der Lauf dieser Aufgabe wurde nicht geladen, deshalb können die von ihm erfassten Belege hier nicht gezeigt werden. Das ist nicht dasselbe wie ein Lauf, der nichts erfasst hat."
5925
+ },
5926
+ "requirements": {
5927
+ "title": "Geprüfte Anforderungen",
5928
+ "met": "Erfüllt: {count}",
5929
+ "notMet": "Nicht erfüllt: {count}",
5930
+ "notCovered": "Nicht geprüft: {count}",
5931
+ "regressions": "Regressionen: {count}",
5932
+ "regressionTag": "Regression",
5933
+ "idOnly": "nur ID",
5934
+ "idOnlyHint": "Diese ID steht nicht in der Service-Spezifikation, deshalb gibt es dafür keinen Titel.",
5935
+ "spec": {
5936
+ "not_read": "Die Service-Spezifikation wurde nicht gelesen, deshalb stehen hier die vom Tester gemeldeten Anforderungs-IDs ohne ihre Titel.",
5937
+ "unmatched": "Keine dieser Anforderungs-IDs steht in der gelesenen Service-Spezifikation, deshalb werden nur die vom Tester gemeldeten IDs gezeigt."
5938
+ },
5939
+ "verdict": {
5940
+ "met": "Bestätigt",
5941
+ "not_met": "Fehlgeschlagen",
5942
+ "not_covered": "Nicht geprüft"
5943
+ },
5944
+ "gap": {
5945
+ "no_tester_step": "Diese Pipeline hat keinen Test-Schritt, daher wurde keine Anforderung geprüft.",
5946
+ "tester_not_reported": "Der Tester hat noch nicht berichtet, daher wurde über keine Anforderung entschieden.",
5947
+ "no_verdicts": "Der Tester hat berichtet, ohne über eine Anforderung der Spezifikation zu entscheiden."
5948
+ }
5949
+ },
5950
+ "tests": {
5951
+ "title": "Wie getestet wurde",
5952
+ "openReport": "Vollständiger Testbericht",
5953
+ "summary": "Der Tester berichtet: {summary}",
5954
+ "abort": "Der Tester konnte nicht sinnvoll testen: {reason}",
5955
+ "counts": "{passed} bestanden, {failed} fehlgeschlagen, {skipped} übersprungen",
5956
+ "verdict": {
5957
+ "greenlit": "Freigegeben",
5958
+ "concerns": "Bedenken gemeldet",
5959
+ "could_not_run": "Konnte nicht getestet werden"
5960
+ },
5961
+ "environment": {
5962
+ "local": "Gegen lokale Abhängigkeiten getestet",
5963
+ "ephemeral": "Gegen eine Vorschau-Umgebung getestet"
5964
+ },
5965
+ "severity": {
5966
+ "low": "Niedrig",
5967
+ "medium": "Mittel",
5968
+ "high": "Hoch",
5969
+ "critical": "Kritisch"
5970
+ },
5971
+ "gap": {
5972
+ "no_tester_step": "Diese Pipeline hat keinen Test-Schritt, es wurde also nichts ausgeführt.",
5973
+ "tester_not_reported": "Der Tester hat noch nicht berichtet."
5974
+ }
5975
+ },
5976
+ "visuals": {
5977
+ "title": "Wie es aussieht",
5978
+ "shotAlt": "Screenshot von {view}",
5979
+ "hasReference": "Für diese Ansicht wurde eine Referenzvorlage hinterlegt",
5980
+ "source": {
5981
+ "visual_confirm": "Diese Ansichten wurden mit ihren Referenzvorlagen verglichen.",
5982
+ "tester": "Diese Ansichten wurden beim Testen aufgenommen. Niemand wurde um eine Prüfung gebeten."
5983
+ },
5984
+ "gap": {
5985
+ "no_visual_step": "In dieser Pipeline nimmt nichts die Oberfläche auf, es gibt also nichts zu sehen.",
5986
+ "none_captured": "Die Oberfläche sollte aufgenommen werden, es wurde aber keine Ansicht erfasst."
5987
+ }
5988
+ },
5989
+ "checks": {
5990
+ "title": "Prüfungen",
5991
+ "row": "{kind}: {state}",
5992
+ "kind": {
5993
+ "ci": "CI",
5994
+ "validation": "Projektprüfungen",
5995
+ "reproduction": "Fehler-Reproduktion"
5996
+ },
5997
+ "state": {
5998
+ "pass": "bestanden",
5999
+ "fail": "fehlgeschlagen",
6000
+ "pending": "läuft noch",
6001
+ "inconclusive": "ohne Ergebnis"
6002
+ }
6003
+ },
6004
+ "empty": {
6005
+ "title": "Noch nichts zu zeigen",
6006
+ "body": "Diese Aufgabe hat noch kein lesbares Ergebnis hervorgebracht."
6007
+ }
6008
+ },
5893
6009
  "focus": {
5894
6010
  "board": "Board",
5895
6011
  "typeSubtitle": "{type} · Fokusansicht",
@@ -6159,6 +6275,7 @@
6159
6275
  "noneHint": "Keine Risikorichtlinie konfiguriert. Jeder Pull Request wartet auf eine menschliche Prüfung.",
6160
6276
  "refused": {
6161
6277
  "relaxes_role_sandbox": "Für deine Rolle nicht verfügbar: Läufe dieser Aufgabe laufen in der Sandbox, und diese Richtlinie würde sie mergen lassen. Eine Workspace-Administration kann das ändern.",
6278
+ "relaxes_role_submission_allowlist": "Für deine Rolle nicht verfügbar: Diese Richtlinie würde dich Änderungsarten mergen lassen, die dir bei dieser Aufgabe verwehrt sind. Eine Workspace-Administration kann das ändern.",
6162
6279
  "relaxes_role_class_rule": "Für deine Rolle nicht verfügbar: Diese Richtlinie merged Änderungen automatisch, die du bei dieser Aufgabe prüfen musst. Eine Workspace-Administration kann das ändern."
6163
6280
  }
6164
6281
  },
@@ -6178,6 +6295,7 @@
6178
6295
  "ciAttempts": "Der Lauf darf {count} Mal versuchen, eine rote CI grün zu bekommen, bevor er aufgibt. | Der Lauf darf {count} Mal versuchen, eine rote CI grün zu bekommen, bevor er aufgibt.",
6179
6296
  "roleHeading": "Wer den Lauf gestartet hat",
6180
6297
  "roleSandboxed": "Läufe von {roles} öffnen einen Pull Request und werden nie zusammengeführt.",
6298
+ "roleScoped": "Läufe von {roles} führen nur bestimmte Änderungsarten zusammen.",
6181
6299
  "roleNarrowed": "Für Läufe von {roles} gelten in einigen Änderungskategorien strengere Regeln."
6182
6300
  }
6183
6301
  },
@@ -509,6 +509,8 @@
509
509
  "pr": "PR",
510
510
  "prNumber": "PR #{number}",
511
511
  "openPrOnGithub": "Open {pr} on GitHub",
512
+ "readOutcome": "Outcome",
513
+ "readOutcomeHint": "Read what changed, with the evidence behind it",
512
514
  "review": "Review",
513
515
  "merge": "Merge",
514
516
  "mergeConfirm": {
@@ -644,7 +646,8 @@
644
646
  "input_gate_parked": "Answer it in the task's input check",
645
647
  "ticket_already_linked": "This issue already has a task",
646
648
  "document_already_linked": "Document already attached",
647
- "dry_run_not_mergeable": "Dry run cannot be merged"
649
+ "dry_run_not_mergeable": "Dry run cannot be merged",
650
+ "submission_not_allowed": "Merge not allowed for this run"
648
651
  },
649
652
  "description": {
650
653
  "dependencies_unmet": "This task depends on others that aren't finished yet. Complete or unblock them, then start it again.",
@@ -684,7 +687,8 @@
684
687
  "input_gate_parked": "This run is parked on its input check, which the approval rail cannot answer. Use the notice on the run: fix the task and re-check, or run it anyway.",
685
688
  "ticket_already_linked": "An issue can back only one task, so linking it again would strip the existing task of the context it was created with. Open that task instead, or unlink the issue first.",
686
689
  "document_already_linked": "That document is attached to another task. Detach it there first, or attach a separate copy.",
687
- "dry_run_not_mergeable": "This pull request came from a dry run, so it can't be merged from here. Start the task again as a live run to produce a pull request this workspace will merge."
690
+ "dry_run_not_mergeable": "This pull request came from a dry run, so it can't be merged from here. Start the task again as a live run to produce a pull request this workspace will merge.",
691
+ "submission_not_allowed": "This task's merge policy doesn't let the role that started this run merge this kind of change. Somebody whose role may merge it can do so, or an admin can widen the policy in the merge preset."
688
692
  },
689
693
  "action": {
690
694
  "connectGitHub": "Connect GitHub",
@@ -1132,6 +1136,7 @@
1132
1136
  },
1133
1137
  "prNumber": "PR #{number}",
1134
1138
  "pullRequest": "Pull request",
1139
+ "readOutcome": "Read the outcome",
1135
1140
  "stepState": {
1136
1141
  "pending": "Pending",
1137
1142
  "working": "Working",
@@ -1354,6 +1359,7 @@
1354
1359
  "class_auto_merge": "This preset always auto-merges this class of change, so the scores were not compared.",
1355
1360
  "class_requires_review": "This preset always sends this class of change to a human, whatever the scores.",
1356
1361
  "role_requires_review": "This preset holds runs started by a {role} to human review for this class of change, whatever the scores. A teammate on a higher tier can merge this PR as it stands.",
1362
+ "submission_not_allowed": "This preset lets runs started by a {role} merge only these kinds of change: {classes}. This one is a different kind, so the pull request is waiting for somebody whose role may merge it.",
1357
1363
  "dry_run": "This was a dry run, so the pull request was left open for a human and the scores were not compared. Start the task again as a live run to produce a pull request this workspace will merge."
1358
1364
  },
1359
1365
  "scores": "Scores",
@@ -1365,7 +1371,11 @@
1365
1371
  "ceiling": "ceiling {value}",
1366
1372
  "rationale": "Rationale",
1367
1373
  "noAssessment": "The merger did not return a scored assessment.",
1368
- "noResult": "No merge decision recorded yet."
1374
+ "noResult": "No merge decision recorded yet.",
1375
+ "noSubmittableClasses": "none",
1376
+ "@noSubmittableClasses": {
1377
+ "description": "Substituted into the {classes} slot of `reason.submission_not_allowed` when the role's allowlist is empty, so it reads as a list with no members ('...only these kinds of change: none'), NOT as a standalone sentence or an absence of policy."
1378
+ }
1369
1379
  },
1370
1380
  "testReport": {
1371
1381
  "title": "Test report",
@@ -3013,10 +3023,15 @@
3013
3023
  },
3014
3024
  "roleRules": {
3015
3025
  "heading": "Limits per initiator role",
3016
- "help": "What a run may do also depends on who started it. A role can be held to stricter rules than the ones above, or to dry runs only: the pipeline works and opens a pull request, and nothing merges. A role can only narrow this policy, never widen it.",
3017
- "autoMergeOffWarning": "Auto-merge is off for this preset, so every pull request already goes to a human and the class limits below add nothing. Dry runs still apply: they refuse a manual merge too.",
3026
+ "help": "What a run may do also depends on who started it. A role can be limited to merging only certain kinds of change, held to stricter rules than the ones above, or held to dry runs only: the pipeline works and opens a pull request, and nothing merges. A role can only narrow this policy, never widen it.",
3027
+ "autoMergeOffWarning": "Auto-merge is off for this preset, so every pull request already goes to a human and the per-class limits below add nothing. The merge limit and dry runs still apply: both refuse a manual merge too.",
3018
3028
  "sandboxLabel": "Dry runs only",
3019
- "sandboxNote": "Runs started by this role open a pull request and merge nothing, so the class rules below cannot hold them to anything stricter.",
3029
+ "sandboxNote": "Runs started by this role open a pull request and merge nothing, so neither limit below can hold them to anything stricter.",
3030
+ "submissionLabel": "Limit which changes this role may merge",
3031
+ "submissionHelp": "When on, only the ticked kinds of change are merged for runs this role starts. Anything else stays open for somebody else, whatever the scores say. The pull request is still opened, and it can still be merged by hand on the git host.",
3032
+ "submissionNone": "Nothing is ticked, so this workspace will not merge any run this role starts.",
3033
+ "submissionBadge": "Merge limited",
3034
+ "classHeading": "Review required per class",
3020
3035
  "noRules": "No class limits",
3021
3036
  "ruleCount": "{count} class limited | {count} classes limited",
3022
3037
  "@ruleCount": {
@@ -4747,6 +4762,7 @@
4747
4762
  "noneHint": "No risk policy configured. Every pull request waits for a human review.",
4748
4763
  "refused": {
4749
4764
  "relaxes_role_sandbox": "Not available for your role: this task’s runs are sandboxed, and this policy would let them merge. A workspace admin can change it.",
4765
+ "relaxes_role_submission_allowlist": "Not available for your role: this policy would let you land kinds of change this task holds you back from. A workspace admin can change it.",
4750
4766
  "relaxes_role_class_rule": "Not available for your role: this policy auto-merges changes you are held to review on this task. A workspace admin can change it."
4751
4767
  }
4752
4768
  },
@@ -4766,6 +4782,7 @@
4766
4782
  "ciAttempts": "The run may try {count} time to turn a red CI green before it gives up. | The run may try {count} times to turn a red CI green before it gives up.",
4767
4783
  "roleHeading": "Who started the run",
4768
4784
  "roleSandboxed": "Runs started by {roles} open a pull request and never merge.",
4785
+ "roleScoped": "Runs started by {roles} merge only some kinds of change.",
4769
4786
  "roleNarrowed": "Runs started by {roles} follow stricter rules for some change classes."
4770
4787
  }
4771
4788
  },
@@ -5590,6 +5607,110 @@
5590
5607
  "fixRequested": "Fix requested"
5591
5608
  }
5592
5609
  },
5610
+ "outcome": {
5611
+ "title": "Outcome",
5612
+ "subtitle": "What this run changed, and the evidence behind it",
5613
+ "diff": "Open the diff",
5614
+ "diffNumbered": "Open the diff (#{number})",
5615
+ "peerDiff": "Open the diff in {repo}",
5616
+ "disposition": {
5617
+ "merged": "Merged",
5618
+ "awaiting_merge": "Waiting to be merged",
5619
+ "in_flight": "Still running",
5620
+ "needs_attention": "Needs attention",
5621
+ "not_run": "Not run yet",
5622
+ "unknown": "Run not loaded"
5623
+ },
5624
+ "ask": {
5625
+ "title": "What was asked",
5626
+ "none": "This task carries no description, so there is nothing here to compare the result against."
5627
+ },
5628
+ "gap": {
5629
+ "run_unavailable": "This task's run was not loaded, so none of the evidence it recorded can be shown here. That is not the same as a run that recorded nothing."
5630
+ },
5631
+ "requirements": {
5632
+ "title": "Requirements checked",
5633
+ "met": "Met: {count}",
5634
+ "notMet": "Not met: {count}",
5635
+ "notCovered": "Not checked: {count}",
5636
+ "regressions": "Regressions: {count}",
5637
+ "regressionTag": "Regression",
5638
+ "idOnly": "id only",
5639
+ "idOnlyHint": "This id is not in the service specification, so there is no title to show for it.",
5640
+ "spec": {
5641
+ "not_read": "The service specification was not read, so these are the requirement ids the tester reported, without their titles.",
5642
+ "unmatched": "None of these requirement ids appear in the service specification that was read, so only the ids the tester reported are shown."
5643
+ },
5644
+ "verdict": {
5645
+ "met": "Verified",
5646
+ "not_met": "Failed",
5647
+ "not_covered": "Not checked"
5648
+ },
5649
+ "gap": {
5650
+ "no_tester_step": "This pipeline has no tester step, so no requirement was checked.",
5651
+ "tester_not_reported": "The tester has not reported yet, so no requirement has been ruled on.",
5652
+ "no_verdicts": "The tester reported without ruling on any requirement of the service specification."
5653
+ }
5654
+ },
5655
+ "tests": {
5656
+ "title": "How it was tested",
5657
+ "openReport": "Full test report",
5658
+ "summary": "The tester reported: {summary}",
5659
+ "abort": "The tester could not run a meaningful test: {reason}",
5660
+ "counts": "{passed} passed, {failed} failed, {skipped} skipped",
5661
+ "verdict": {
5662
+ "greenlit": "Cleared for release",
5663
+ "concerns": "Concerns raised",
5664
+ "could_not_run": "Could not be tested"
5665
+ },
5666
+ "environment": {
5667
+ "local": "Tested against local dependencies",
5668
+ "ephemeral": "Tested against a preview environment"
5669
+ },
5670
+ "severity": {
5671
+ "low": "Low",
5672
+ "medium": "Medium",
5673
+ "high": "High",
5674
+ "critical": "Critical"
5675
+ },
5676
+ "gap": {
5677
+ "no_tester_step": "This pipeline has no tester step, so nothing was exercised.",
5678
+ "tester_not_reported": "The tester has not reported yet."
5679
+ }
5680
+ },
5681
+ "visuals": {
5682
+ "title": "What it looks like",
5683
+ "shotAlt": "Screenshot of {view}",
5684
+ "hasReference": "A reference design was supplied for this view",
5685
+ "source": {
5686
+ "visual_confirm": "These views were reviewed against their reference designs.",
5687
+ "tester": "These views were captured while testing. Nobody was asked to review them."
5688
+ },
5689
+ "gap": {
5690
+ "no_visual_step": "Nothing in this pipeline captures the interface, so there is nothing to look at.",
5691
+ "none_captured": "The interface was meant to be captured, but no view was."
5692
+ }
5693
+ },
5694
+ "checks": {
5695
+ "title": "Checks",
5696
+ "row": "{kind}: {state}",
5697
+ "kind": {
5698
+ "ci": "CI",
5699
+ "validation": "Project checks",
5700
+ "reproduction": "Bug reproduction"
5701
+ },
5702
+ "state": {
5703
+ "pass": "passed",
5704
+ "fail": "failed",
5705
+ "pending": "still running",
5706
+ "inconclusive": "inconclusive"
5707
+ }
5708
+ },
5709
+ "empty": {
5710
+ "title": "Nothing to show yet",
5711
+ "body": "This task has produced no result to read."
5712
+ }
5713
+ },
5593
5714
  "focus": {
5594
5715
  "board": "Board",
5595
5716
  "typeSubtitle": "{type} · focus view",
@@ -457,6 +457,8 @@
457
457
  "pr": "PR",
458
458
  "prNumber": "PR n.º {number}",
459
459
  "openPrOnGithub": "Abrir {pr} en GitHub",
460
+ "readOutcome": "Resultado",
461
+ "readOutcomeHint": "Lee qué cambió, con las pruebas que lo respaldan",
460
462
  "review": "Revisar",
461
463
  "merge": "Fusionar",
462
464
  "mergeConfirm": {
@@ -578,7 +580,8 @@
578
580
  "input_gate_parked": "Respóndelo en la comprobación de entrada de la tarea",
579
581
  "ticket_already_linked": "Esta incidencia ya tiene una tarea",
580
582
  "document_already_linked": "El documento ya está adjunto",
581
- "dry_run_not_mergeable": "Una ejecución de prueba no se puede fusionar"
583
+ "dry_run_not_mergeable": "Una ejecución de prueba no se puede fusionar",
584
+ "submission_not_allowed": "Fusión no permitida para esta ejecución"
582
585
  },
583
586
  "description": {
584
587
  "dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
@@ -615,7 +618,8 @@
615
618
  "input_gate_parked": "Esta ejecución está detenida en su comprobación de entrada, que la vía de aprobación no puede resolver. Usa el aviso de la ejecución: corrige la tarea y vuelve a comprobar, o ejecútala de todos modos.",
616
619
  "ticket_already_linked": "Una incidencia solo puede respaldar una tarea, así que volver a vincularla dejaría a la tarea existente sin el contexto con el que se creó. Abre esa tarea o desvincula antes la incidencia.",
617
620
  "document_already_linked": "Ese documento está adjunto a otra tarea. Sepáralo allí primero o adjunta una copia aparte.",
618
- "dry_run_not_mergeable": "Esta pull request proviene de una ejecución de prueba, así que no se puede fusionar desde aquí. Vuelve a iniciar la tarea como ejecución real para producir una pull request que este espacio de trabajo sí fusionará."
621
+ "dry_run_not_mergeable": "Esta pull request proviene de una ejecución de prueba, así que no se puede fusionar desde aquí. Vuelve a iniciar la tarea como ejecución real para producir una pull request que este espacio de trabajo sí fusionará.",
622
+ "submission_not_allowed": "La política de fusión de esta tarea no permite que el rol que inició la ejecución fusione este tipo de cambio. Alguien cuyo rol sí lo permita puede hacerlo, o un administrador puede ampliar la política en el preajuste de fusión."
619
623
  },
620
624
  "action": {
621
625
  "connectGitHub": "Conectar GitHub",
@@ -1044,6 +1048,7 @@
1044
1048
  },
1045
1049
  "prNumber": "PR n.º {number}",
1046
1050
  "pullRequest": "Pull request",
1051
+ "readOutcome": "Leer el resultado",
1047
1052
  "stepState": {
1048
1053
  "pending": "Pendiente",
1049
1054
  "working": "Trabajando",
@@ -1269,6 +1274,7 @@
1269
1274
  "class_auto_merge": "Este preajuste fusiona siempre esta categoría de cambio de forma automática, así que no se compararon las puntuaciones.",
1270
1275
  "class_requires_review": "Este preajuste envía siempre esta categoría de cambio a una persona, sean cuales sean las puntuaciones.",
1271
1276
  "role_requires_review": "Esta configuración obliga a que las ejecuciones iniciadas por un {role} pasen por revisión humana para este tipo de cambio, sean cuales sean las puntuaciones. Un compañero con un nivel superior puede fusionar este PR tal como está.",
1277
+ "submission_not_allowed": "Este preajuste solo deja que las ejecuciones iniciadas por un {role} fusionen estos tipos de cambio: {classes}. Este es de otro tipo, así que la pull request espera a alguien cuyo rol pueda fusionarla.",
1272
1278
  "dry_run": "Esta fue una ejecución de prueba, así que la pull request quedó abierta para una persona y no se compararon las puntuaciones. Vuelve a iniciar la tarea como ejecución real para producir una pull request que este espacio de trabajo sí fusionará."
1273
1279
  },
1274
1280
  "scores": "Puntuaciones",
@@ -1280,7 +1286,8 @@
1280
1286
  "ceiling": "límite {value}",
1281
1287
  "rationale": "Justificación",
1282
1288
  "noAssessment": "El fusionador no devolvió una evaluación puntuada.",
1283
- "noResult": "Aún no se ha registrado ninguna decisión de fusión."
1289
+ "noResult": "Aún no se ha registrado ninguna decisión de fusión.",
1290
+ "noSubmittableClasses": "ninguno"
1284
1291
  },
1285
1292
  "testReport": {
1286
1293
  "title": "Informe de pruebas",
@@ -2768,10 +2775,15 @@
2768
2775
  },
2769
2776
  "roleRules": {
2770
2777
  "heading": "Límites según el rol que inicia",
2771
- "help": "Lo que puede hacer una ejecución también depende de quién la inició. Un rol puede quedar sujeto a reglas más estrictas que las de arriba, o solo a ejecuciones de prueba: la canalización trabaja y abre una pull request, pero no se fusiona nada. Un rol solo puede endurecer esta política, nunca relajarla.",
2772
- "autoMergeOffWarning": "El auto-merge está desactivado en este preajuste, así que cada pull request ya pasa por una persona y los límites de categoría de abajo no añaden nada. Las ejecuciones de prueba siguen aplicándose: también rechazan una fusión manual.",
2778
+ "help": "Lo que puede hacer una ejecución también depende de quién la inició. Un rol puede limitarse a ciertos tipos de cambio, someterse a reglas más estrictas que las de arriba, o limitarse a ejecuciones de prueba: la pipeline trabaja y abre una pull request, y no se fusiona nada. Un rol solo puede restringir esta política, nunca ampliarla.",
2779
+ "autoMergeOffWarning": "La fusión automática está desactivada en este preajuste, así que cada pull request ya pasa por una persona y los límites por clase de abajo no añaden nada. El límite de fusión y las ejecuciones de prueba siguen aplicándose: ambos rechazan también la fusión manual.",
2773
2780
  "sandboxLabel": "Solo ejecuciones de prueba",
2774
- "sandboxNote": "Las ejecuciones iniciadas por este rol abren una pull request y no fusionan nada, así que las reglas por categoría de abajo no pueden restringirlas más.",
2781
+ "sandboxNote": "Las ejecuciones de este rol abren una pull request y no fusionan nada, así que ninguno de los límites de abajo puede restringirlas más.",
2782
+ "submissionLabel": "Limitar qué cambios puede fusionar este rol",
2783
+ "submissionHelp": "Cuando está activo, solo se fusionan los tipos marcados en las ejecuciones que inicia este rol. El resto queda abierto para otra persona, sin importar las puntuaciones. La pull request se abre igualmente y se puede fusionar a mano en el host de git.",
2784
+ "submissionNone": "No hay nada marcado, así que este espacio de trabajo no fusionará ninguna ejecución de este rol.",
2785
+ "submissionBadge": "Fusión limitada",
2786
+ "classHeading": "Revisión necesaria por tipo de cambio",
2775
2787
  "noRules": "Sin límites por categoría",
2776
2788
  "ruleCount": "{count} categoría limitada | {count} categorías limitadas",
2777
2789
  "inherit": "Igual que esta política",
@@ -5335,6 +5347,110 @@
5335
5347
  "fixRequested": "Corrección solicitada"
5336
5348
  }
5337
5349
  },
5350
+ "outcome": {
5351
+ "title": "Resultado",
5352
+ "subtitle": "Qué cambió esta ejecución, y las pruebas que lo respaldan",
5353
+ "diff": "Abrir el diff",
5354
+ "diffNumbered": "Abrir el diff (#{number})",
5355
+ "peerDiff": "Abrir el diff en {repo}",
5356
+ "disposition": {
5357
+ "merged": "Fusionado",
5358
+ "awaiting_merge": "Esperando la fusión",
5359
+ "in_flight": "Todavía en curso",
5360
+ "needs_attention": "Requiere atención",
5361
+ "not_run": "Aún sin ejecutar",
5362
+ "unknown": "Ejecución no cargada"
5363
+ },
5364
+ "ask": {
5365
+ "title": "Qué se pidió",
5366
+ "none": "Esta tarea no tiene descripción, así que no hay nada con lo que comparar el resultado."
5367
+ },
5368
+ "gap": {
5369
+ "run_unavailable": "La ejecución de esta tarea no se cargó, así que aquí no pueden mostrarse las pruebas que registró. No es lo mismo que una ejecución que no registró nada."
5370
+ },
5371
+ "requirements": {
5372
+ "title": "Requisitos comprobados",
5373
+ "met": "Cumplidos: {count}",
5374
+ "notMet": "Sin cumplir: {count}",
5375
+ "notCovered": "Sin comprobar: {count}",
5376
+ "regressions": "Regresiones: {count}",
5377
+ "regressionTag": "Regresión",
5378
+ "idOnly": "solo id",
5379
+ "idOnlyHint": "Este identificador no está en la especificación del servicio, así que no hay ningún título que mostrar.",
5380
+ "spec": {
5381
+ "not_read": "No se leyó la especificación del servicio, así que estos son los identificadores de requisito que informó el probador, sin sus títulos.",
5382
+ "unmatched": "Ninguno de estos identificadores de requisito aparece en la especificación del servicio que se leyó, así que solo se muestran los identificadores que informó el probador."
5383
+ },
5384
+ "verdict": {
5385
+ "met": "Verificado",
5386
+ "not_met": "Fallido",
5387
+ "not_covered": "Sin comprobar"
5388
+ },
5389
+ "gap": {
5390
+ "no_tester_step": "Esta canalización no tiene paso de pruebas, así que no se comprobó ningún requisito.",
5391
+ "tester_not_reported": "El tester aún no ha informado, así que no se ha resuelto ningún requisito.",
5392
+ "no_verdicts": "El tester informó sin pronunciarse sobre ningún requisito de la especificación del servicio."
5393
+ }
5394
+ },
5395
+ "tests": {
5396
+ "title": "Cómo se probó",
5397
+ "openReport": "Informe completo de pruebas",
5398
+ "summary": "El tester informa: {summary}",
5399
+ "abort": "El tester no pudo realizar una prueba significativa: {reason}",
5400
+ "counts": "{passed} superadas, {failed} fallidas, {skipped} omitidas",
5401
+ "verdict": {
5402
+ "greenlit": "Aprobado para publicar",
5403
+ "concerns": "Con reservas",
5404
+ "could_not_run": "No se pudo probar"
5405
+ },
5406
+ "environment": {
5407
+ "local": "Probado contra dependencias locales",
5408
+ "ephemeral": "Probado contra un entorno de vista previa"
5409
+ },
5410
+ "severity": {
5411
+ "low": "Baja",
5412
+ "medium": "Media",
5413
+ "high": "Alta",
5414
+ "critical": "Crítica"
5415
+ },
5416
+ "gap": {
5417
+ "no_tester_step": "Esta canalización no tiene paso de pruebas, así que no se ejercitó nada.",
5418
+ "tester_not_reported": "El tester aún no ha informado."
5419
+ }
5420
+ },
5421
+ "visuals": {
5422
+ "title": "Qué aspecto tiene",
5423
+ "shotAlt": "Captura de {view}",
5424
+ "hasReference": "Se aportó un diseño de referencia para esta vista",
5425
+ "source": {
5426
+ "visual_confirm": "Estas vistas se compararon con sus diseños de referencia.",
5427
+ "tester": "Estas vistas se capturaron durante las pruebas. No se pidió a nadie que las revisara."
5428
+ },
5429
+ "gap": {
5430
+ "no_visual_step": "Nada en esta canalización captura la interfaz, así que no hay nada que mirar.",
5431
+ "none_captured": "La interfaz debía capturarse, pero no se capturó ninguna vista."
5432
+ }
5433
+ },
5434
+ "checks": {
5435
+ "title": "Comprobaciones",
5436
+ "row": "{kind}: {state}",
5437
+ "kind": {
5438
+ "ci": "CI",
5439
+ "validation": "Comprobaciones del proyecto",
5440
+ "reproduction": "Reproducción del fallo"
5441
+ },
5442
+ "state": {
5443
+ "pass": "superada",
5444
+ "fail": "fallida",
5445
+ "pending": "en curso",
5446
+ "inconclusive": "sin conclusión"
5447
+ }
5448
+ },
5449
+ "empty": {
5450
+ "title": "Todavía no hay nada que mostrar",
5451
+ "body": "Esta tarea aún no ha producido un resultado que leer."
5452
+ }
5453
+ },
5338
5454
  "focus": {
5339
5455
  "board": "Tablero",
5340
5456
  "typeSubtitle": "{type} · vista de enfoque",
@@ -6026,6 +6142,7 @@
6026
6142
  "noneHint": "No hay ninguna política de riesgo configurada. Cada pull request espera una revisión humana.",
6027
6143
  "refused": {
6028
6144
  "relaxes_role_sandbox": "No disponible para tu rol: las ejecuciones de esta tarea están en un entorno aislado y esta política permitiría fusionarlas. Un administrador del espacio de trabajo puede cambiarlo.",
6145
+ "relaxes_role_submission_allowlist": "No disponible para tu rol: esta política te permitiría fusionar tipos de cambio que esta tarea te restringe. Un administrador del espacio de trabajo puede cambiarlo.",
6029
6146
  "relaxes_role_class_rule": "No disponible para tu rol: esta política fusiona automáticamente cambios que tú debes revisar en esta tarea. Un administrador del espacio de trabajo puede cambiarlo."
6030
6147
  }
6031
6148
  },
@@ -6045,6 +6162,7 @@
6045
6162
  "ciAttempts": "La ejecución puede intentar {count} vez poner CI en verde antes de rendirse. | La ejecución puede intentar {count} veces poner CI en verde antes de rendirse.",
6046
6163
  "roleHeading": "Quién inició la ejecución",
6047
6164
  "roleSandboxed": "Las ejecuciones iniciadas por {roles} abren una pull request y nunca se fusionan.",
6165
+ "roleScoped": "Las ejecuciones iniciadas por {roles} solo fusionan ciertos tipos de cambio.",
6048
6166
  "roleNarrowed": "Las ejecuciones iniciadas por {roles} siguen reglas más estrictas en algunas categorías de cambio."
6049
6167
  }
6050
6168
  },