trackops 2.0.6 → 2.2.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 (60) hide show
  1. package/README.md +307 -701
  2. package/bin/trackops.js +24 -16
  3. package/lib/config.js +265 -58
  4. package/lib/control.js +830 -292
  5. package/lib/init.js +46 -16
  6. package/lib/opera-bootstrap.js +85 -45
  7. package/lib/opera-phase-dod.js +485 -0
  8. package/lib/opera.js +8 -5
  9. package/lib/plans.js +1329 -0
  10. package/lib/quality-assert.js +49 -0
  11. package/lib/quality.js +1759 -0
  12. package/lib/release.js +18 -11
  13. package/lib/server.js +504 -192
  14. package/lib/skills.js +94 -41
  15. package/locales/en.json +249 -15
  16. package/locales/es.json +249 -15
  17. package/package.json +3 -2
  18. package/scripts/quality-unit-tests.js +130 -0
  19. package/scripts/skills-marketplace-smoke.js +156 -124
  20. package/scripts/smoke-tests.js +378 -71
  21. package/scripts/sync-skill-version.js +29 -19
  22. package/scripts/validate-skill.js +188 -103
  23. package/skills/trackops/SKILL.md +25 -7
  24. package/skills/trackops/locales/en/SKILL.md +25 -7
  25. package/skills/trackops/locales/en/references/activation.md +3 -3
  26. package/skills/trackops/locales/en/references/workflow.md +5 -4
  27. package/skills/trackops/references/activation.md +3 -3
  28. package/skills/trackops/references/workflow.md +5 -4
  29. package/skills/trackops/skill.json +29 -29
  30. package/skills/trackops-quality-guard/SKILL.md +78 -0
  31. package/skills/trackops-quality-guard/agents/openai.yaml +7 -0
  32. package/skills/trackops-quality-guard/locales/en/SKILL.md +78 -0
  33. package/skills/trackops-quality-guard/locales/en/references/commands.md +36 -0
  34. package/skills/trackops-quality-guard/locales/en/references/decision-policy.md +16 -0
  35. package/skills/trackops-quality-guard/locales/en/references/output-format.md +24 -0
  36. package/skills/trackops-quality-guard/references/commands.md +36 -0
  37. package/skills/trackops-quality-guard/references/decision-policy.md +16 -0
  38. package/skills/trackops-quality-guard/references/output-format.md +24 -0
  39. package/skills/trackops-quality-guard/skill.json +28 -0
  40. package/templates/skills/opera-skill/SKILL.md +12 -0
  41. package/templates/skills/opera-skill/locales/en/SKILL.md +12 -0
  42. package/templates/skills/trackops-quality-guard/SKILL.md +72 -0
  43. package/templates/skills/trackops-quality-guard/locales/en/SKILL.md +72 -0
  44. package/templates/skills/trackops-quality-guard/locales/en/references/commands.md +30 -0
  45. package/templates/skills/trackops-quality-guard/locales/en/references/decision-policy.md +14 -0
  46. package/templates/skills/trackops-quality-guard/locales/en/references/output-format.md +21 -0
  47. package/templates/skills/trackops-quality-guard/references/commands.md +30 -0
  48. package/templates/skills/trackops-quality-guard/references/decision-policy.md +14 -0
  49. package/templates/skills/trackops-quality-guard/references/output-format.md +21 -0
  50. package/ui/js/api.js +93 -26
  51. package/ui/js/app.js +13 -7
  52. package/ui/js/filters.js +49 -29
  53. package/ui/js/time-tracker.js +41 -28
  54. package/ui/js/views/board.js +22 -14
  55. package/ui/js/views/dashboard.js +206 -49
  56. package/ui/js/views/execution.js +7 -3
  57. package/ui/js/views/plans.js +284 -0
  58. package/ui/js/views/scrum.js +25 -13
  59. package/ui/js/views/sidebar.js +9 -8
  60. package/ui/js/views/tasks.js +238 -134
package/lib/release.js CHANGED
@@ -21,11 +21,11 @@ function parseArgs(args = []) {
21
21
  };
22
22
  }
23
23
 
24
- function cmdRelease(root, args = []) {
25
- const context = config.ensureContext(root);
26
- if (context.layout !== "split") {
27
- throw new Error("trackops release requires a split workspace.");
28
- }
24
+ function cmdRelease(root, args = []) {
25
+ const context = config.ensureContext(root);
26
+ if (context.layout !== "split") {
27
+ throw new Error("trackops release requires a split workspace.");
28
+ }
29
29
 
30
30
  const options = parseArgs(args);
31
31
  const status = runGit(["status", "--porcelain"], context.workspaceRoot, "git status failed");
@@ -33,12 +33,19 @@ function cmdRelease(root, args = []) {
33
33
  throw new Error("trackops release requires a clean git worktree.");
34
34
  }
35
35
 
36
- const currentBranch = runGit(["branch", "--show-current"], context.workspaceRoot, "git branch failed");
37
- if (currentBranch !== context.branches.development) {
38
- throw new Error(`trackops release must run from '${context.branches.development}'.`);
39
- }
40
-
41
- const splitCommit = runGit(
36
+ const currentBranch = runGit(["branch", "--show-current"], context.workspaceRoot, "git branch failed");
37
+ if (currentBranch !== context.branches.development) {
38
+ throw new Error(`trackops release must run from '${context.branches.development}'.`);
39
+ }
40
+
41
+ const quality = require("./quality");
42
+ const readiness = quality.buildReleaseReadiness(context);
43
+ if (!readiness.ready) {
44
+ const details = readiness.blockers.map((item) => `${item.id}: ${item.message}`).join("\n- ");
45
+ throw new Error(`trackops release blocked by quality readiness.\n- ${details}`);
46
+ }
47
+
48
+ const splitCommit = runGit(
42
49
  ["subtree", "split", "--prefix", context.publish.sourceDir, context.branches.development],
43
50
  context.workspaceRoot,
44
51
  "git subtree split failed",