@meltstudio/meltctl 4.180.0 → 4.181.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/dist/index.js +121 -47
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var CLI_VERSION;
|
|
|
14
14
|
var init_version = __esm({
|
|
15
15
|
"src/utils/version.ts"() {
|
|
16
16
|
"use strict";
|
|
17
|
-
CLI_VERSION = "4.
|
|
17
|
+
CLI_VERSION = "4.181.0";
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
|
|
@@ -1530,7 +1530,9 @@ var ISSUE_RULES = [
|
|
|
1530
1530
|
label: "No roadmap",
|
|
1531
1531
|
category: "gaps",
|
|
1532
1532
|
howToFix: "Open the project's Roadmap tab and add an active phase with at least one planned feature",
|
|
1533
|
-
scope: "project"
|
|
1533
|
+
scope: "project",
|
|
1534
|
+
suppressedInStatuses: ["commercial"],
|
|
1535
|
+
requiresRoadmapOwnership: true
|
|
1534
1536
|
},
|
|
1535
1537
|
{
|
|
1536
1538
|
id: "roadmap.no-active-phase",
|
|
@@ -1539,7 +1541,8 @@ var ISSUE_RULES = [
|
|
|
1539
1541
|
label: "Features but no active phase",
|
|
1540
1542
|
category: "gaps",
|
|
1541
1543
|
howToFix: "Open the Roadmap tab and mark the phase the team is currently working on as active",
|
|
1542
|
-
scope: "project"
|
|
1544
|
+
scope: "project",
|
|
1545
|
+
requiresRoadmapOwnership: true
|
|
1543
1546
|
},
|
|
1544
1547
|
{
|
|
1545
1548
|
id: "roadmap.empty-phase",
|
|
@@ -1548,7 +1551,8 @@ var ISSUE_RULES = [
|
|
|
1548
1551
|
label: "Active phase is empty",
|
|
1549
1552
|
category: "gaps",
|
|
1550
1553
|
howToFix: "Open the Roadmap tab and attach the phase's planned features, or close the phase if it's done",
|
|
1551
|
-
scope: "project"
|
|
1554
|
+
scope: "project",
|
|
1555
|
+
requiresRoadmapOwnership: true
|
|
1552
1556
|
},
|
|
1553
1557
|
{
|
|
1554
1558
|
id: "roadmap.no-features-with-active-phase",
|
|
@@ -1557,7 +1561,9 @@ var ISSUE_RULES = [
|
|
|
1557
1561
|
label: "Active phase but no features",
|
|
1558
1562
|
category: "sprint",
|
|
1559
1563
|
howToFix: "Run a backlog-seeding session and add features to the active phase before the team starts",
|
|
1560
|
-
scope: "project"
|
|
1564
|
+
scope: "project",
|
|
1565
|
+
suppressedInStatuses: ["commercial"],
|
|
1566
|
+
requiresRoadmapOwnership: true
|
|
1561
1567
|
},
|
|
1562
1568
|
{
|
|
1563
1569
|
id: "roadmap.closed-phase-open-work",
|
|
@@ -1566,7 +1572,8 @@ var ISSUE_RULES = [
|
|
|
1566
1572
|
label: "Closed phase has unfinished features",
|
|
1567
1573
|
category: "gaps",
|
|
1568
1574
|
howToFix: "A closed phase still has features that aren't done/canceled. Decide per feature: mark it done in that phase if the work landed (update_phase_feature), or move it to an active phase if it's still in flight. (#446 stage 7)",
|
|
1569
|
-
scope: "project"
|
|
1575
|
+
scope: "project",
|
|
1576
|
+
requiresRoadmapOwnership: true
|
|
1570
1577
|
},
|
|
1571
1578
|
{
|
|
1572
1579
|
id: "roadmap.feature-no-epic",
|
|
@@ -1575,7 +1582,8 @@ var ISSUE_RULES = [
|
|
|
1575
1582
|
label: "Primary-phase feature missing Linear epic",
|
|
1576
1583
|
category: "gaps",
|
|
1577
1584
|
howToFix: "Wire each current-phase feature's Linear epic via update_phase_feature (linearEpicUrl) \u2014 without it the roadmap can't sync status from the board and shows everything as not-started",
|
|
1578
|
-
scope: "project"
|
|
1585
|
+
scope: "project",
|
|
1586
|
+
requiresRoadmapOwnership: true
|
|
1579
1587
|
},
|
|
1580
1588
|
{
|
|
1581
1589
|
id: "roadmap.feature-no-prd",
|
|
@@ -1584,7 +1592,8 @@ var ISSUE_RULES = [
|
|
|
1584
1592
|
label: "Primary-phase feature missing PRD",
|
|
1585
1593
|
category: "gaps",
|
|
1586
1594
|
howToFix: "Write a PRD for each current-phase feature and link it on the feature (prdPath) \u2014 without one the dev team plans the work blind and plans score low on PRD alignment. PRD authoring is a PM deliverable (melt-pm-tech-investigate drafts the maturity/PRD sections)",
|
|
1587
|
-
scope: "project"
|
|
1595
|
+
scope: "project",
|
|
1596
|
+
requiresRoadmapOwnership: true
|
|
1588
1597
|
},
|
|
1589
1598
|
{
|
|
1590
1599
|
id: "roadmap.feature-status-mismatch",
|
|
@@ -1593,7 +1602,8 @@ var ISSUE_RULES = [
|
|
|
1593
1602
|
label: "Roadmap status differs from Linear",
|
|
1594
1603
|
category: "gaps",
|
|
1595
1604
|
howToFix: "A current-phase feature's roadmap status (what the client sees) disagrees with its linked Linear epic. The roadmap is the source of truth and is never auto-overwritten \u2014 reconcile so the client sees reality: either move the Linear epic to match the roadmap, or update the feature status (update_feature) to match where the work actually is",
|
|
1596
|
-
scope: "project"
|
|
1605
|
+
scope: "project",
|
|
1606
|
+
requiresRoadmapOwnership: true
|
|
1597
1607
|
},
|
|
1598
1608
|
// Delivery — Board
|
|
1599
1609
|
{
|
|
@@ -1603,7 +1613,8 @@ var ISSUE_RULES = [
|
|
|
1603
1613
|
label: "No board connected",
|
|
1604
1614
|
category: "gaps",
|
|
1605
1615
|
howToFix: "Open Project Settings and connect a Linear team or Jira project in the mappings card",
|
|
1606
|
-
scope: "project"
|
|
1616
|
+
scope: "project",
|
|
1617
|
+
suppressedInStatuses: ["commercial"]
|
|
1607
1618
|
},
|
|
1608
1619
|
{
|
|
1609
1620
|
id: "tracker.no-oauth",
|
|
@@ -1612,7 +1623,8 @@ var ISSUE_RULES = [
|
|
|
1612
1623
|
label: "Tracker needs OAuth connect",
|
|
1613
1624
|
category: "gaps",
|
|
1614
1625
|
howToFix: "Open Project Settings \u2192 Tracker connections and click Connect for the missing provider; that switches the project off Melt's shared key onto its own OAuth grant",
|
|
1615
|
-
scope: "project"
|
|
1626
|
+
scope: "project",
|
|
1627
|
+
suppressedInStatuses: ["commercial"]
|
|
1616
1628
|
},
|
|
1617
1629
|
{
|
|
1618
1630
|
id: "board.empty",
|
|
@@ -1666,7 +1678,8 @@ var ISSUE_RULES = [
|
|
|
1666
1678
|
label: "Open stories not in the active cycle",
|
|
1667
1679
|
category: "sprint",
|
|
1668
1680
|
howToFix: "Add this sprint\u2019s stories to the active Linear cycle (a Sprint label is not the cycle) \u2014 otherwise velocity and burndown read as empty",
|
|
1669
|
-
scope: "project"
|
|
1681
|
+
scope: "project",
|
|
1682
|
+
suppressedInStatuses: ["planning"]
|
|
1670
1683
|
},
|
|
1671
1684
|
{
|
|
1672
1685
|
id: "board.in-progress-stale",
|
|
@@ -1675,7 +1688,8 @@ var ISSUE_RULES = [
|
|
|
1675
1688
|
label: "Stale in-progress tickets",
|
|
1676
1689
|
category: "sprint",
|
|
1677
1690
|
howToFix: "Open the project board, ask the assignees what's blocking, and either move the ticket forward or back to the backlog",
|
|
1678
|
-
scope: "project"
|
|
1691
|
+
scope: "project",
|
|
1692
|
+
suppressedInStatuses: ["planning"]
|
|
1679
1693
|
},
|
|
1680
1694
|
{
|
|
1681
1695
|
id: "board.pm-silent-critical",
|
|
@@ -1687,7 +1701,8 @@ var ISSUE_RULES = [
|
|
|
1687
1701
|
label: "PM silent in active cycle",
|
|
1688
1702
|
category: "sprint",
|
|
1689
1703
|
howToFix: "Comment on the active-cycle tickets to acknowledge progress, ask questions, or flag concerns",
|
|
1690
|
-
scope: "project"
|
|
1704
|
+
scope: "project",
|
|
1705
|
+
suppressedInStatuses: ["planning"]
|
|
1691
1706
|
},
|
|
1692
1707
|
{
|
|
1693
1708
|
id: "board.pm-silent-medium",
|
|
@@ -1696,7 +1711,8 @@ var ISSUE_RULES = [
|
|
|
1696
1711
|
label: "PM commenting on under 60% of active-cycle tickets",
|
|
1697
1712
|
category: "sprint",
|
|
1698
1713
|
howToFix: "Comment on the active-cycle tickets to acknowledge progress, ask questions, or flag concerns",
|
|
1699
|
-
scope: "project"
|
|
1714
|
+
scope: "project",
|
|
1715
|
+
suppressedInStatuses: ["planning"]
|
|
1700
1716
|
},
|
|
1701
1717
|
// Delivery — Risks
|
|
1702
1718
|
{
|
|
@@ -1725,7 +1741,8 @@ var ISSUE_RULES = [
|
|
|
1725
1741
|
label: "No activity in 21+ days",
|
|
1726
1742
|
category: "gaps",
|
|
1727
1743
|
howToFix: "No meltctl activity in N days \u2014 confirm the project is still active, or mark it on-hold",
|
|
1728
|
-
scope: "project"
|
|
1744
|
+
scope: "project",
|
|
1745
|
+
suppressedInStatuses: ["warranty", "closed", "on_hold"]
|
|
1729
1746
|
},
|
|
1730
1747
|
// Delivery — Plans
|
|
1731
1748
|
{
|
|
@@ -1735,7 +1752,8 @@ var ISSUE_RULES = [
|
|
|
1735
1752
|
label: "No recent plan",
|
|
1736
1753
|
category: "plans",
|
|
1737
1754
|
howToFix: "Remind the team to run `meltctl plan submit` before starting new tickets",
|
|
1738
|
-
scope: "project"
|
|
1755
|
+
scope: "project",
|
|
1756
|
+
suppressedInStatuses: ["planning"]
|
|
1739
1757
|
},
|
|
1740
1758
|
{
|
|
1741
1759
|
id: "plans.unscored",
|
|
@@ -1744,7 +1762,8 @@ var ISSUE_RULES = [
|
|
|
1744
1762
|
label: "Plans not yet scored",
|
|
1745
1763
|
category: "plans",
|
|
1746
1764
|
howToFix: "Open the plan and click 'Score plan' to run the rubric",
|
|
1747
|
-
scope: "project"
|
|
1765
|
+
scope: "project",
|
|
1766
|
+
suppressedInStatuses: ["planning"]
|
|
1748
1767
|
},
|
|
1749
1768
|
{
|
|
1750
1769
|
id: "plans.stuck",
|
|
@@ -1755,7 +1774,8 @@ var ISSUE_RULES = [
|
|
|
1755
1774
|
label: "Plan can't be scored",
|
|
1756
1775
|
category: "plans",
|
|
1757
1776
|
howToFix: "Re-run `meltctl plan submit` with a valid ticket, or close the plan if it's no longer relevant",
|
|
1758
|
-
scope: "project"
|
|
1777
|
+
scope: "project",
|
|
1778
|
+
suppressedInStatuses: ["planning"]
|
|
1759
1779
|
},
|
|
1760
1780
|
// Delivery — Standups
|
|
1761
1781
|
{
|
|
@@ -1765,7 +1785,8 @@ var ISSUE_RULES = [
|
|
|
1765
1785
|
label: "Standup submission below 50%",
|
|
1766
1786
|
category: "standup",
|
|
1767
1787
|
howToFix: "Remind the team that standup is set for 9am Colombia; follow up with non-submitters",
|
|
1768
|
-
scope: "project"
|
|
1788
|
+
scope: "project",
|
|
1789
|
+
suppressedInStatuses: ["planning"]
|
|
1769
1790
|
},
|
|
1770
1791
|
{
|
|
1771
1792
|
id: "standups.punctuality",
|
|
@@ -1774,7 +1795,8 @@ var ISSUE_RULES = [
|
|
|
1774
1795
|
label: "Standups submitted but often late",
|
|
1775
1796
|
category: "standup",
|
|
1776
1797
|
howToFix: "The team is submitting standups but many land late \u2014 nudge toward the 9am Colombia cutoff",
|
|
1777
|
-
scope: "project"
|
|
1798
|
+
scope: "project",
|
|
1799
|
+
suppressedInStatuses: ["planning"]
|
|
1778
1800
|
},
|
|
1779
1801
|
// Code — Findings
|
|
1780
1802
|
{
|
|
@@ -1816,7 +1838,8 @@ var ISSUE_RULES = [
|
|
|
1816
1838
|
label: "Never audited",
|
|
1817
1839
|
category: "audits",
|
|
1818
1840
|
howToFix: "Run `/melt-audit` on the repo to create the baseline",
|
|
1819
|
-
scope: "project"
|
|
1841
|
+
scope: "project",
|
|
1842
|
+
suppressedInStatuses: ["commercial"]
|
|
1820
1843
|
},
|
|
1821
1844
|
{
|
|
1822
1845
|
id: "audit.stale",
|
|
@@ -1827,6 +1850,19 @@ var ISSUE_RULES = [
|
|
|
1827
1850
|
howToFix: "Run `/melt-audit` on the repo to refresh the baseline",
|
|
1828
1851
|
scope: "project"
|
|
1829
1852
|
},
|
|
1853
|
+
{
|
|
1854
|
+
id: "audit.overdue",
|
|
1855
|
+
dimension: "audit-coverage",
|
|
1856
|
+
// Low — a re-audit nudge, not an alarm. The team reserves red/high, and
|
|
1857
|
+
// the 90-day `audit.stale` stays medium; this fills the 31–90 day gap so a
|
|
1858
|
+
// repo flagged "overdue" on the card actually produces an issue + score
|
|
1859
|
+
// impact (low still costs −2).
|
|
1860
|
+
severity: "low",
|
|
1861
|
+
label: "Audit overdue (30+ days)",
|
|
1862
|
+
category: "audits",
|
|
1863
|
+
howToFix: "A repo's last audit is over 30 days old \u2014 re-run `/melt-audit` (or the relevant audit skill) to refresh the findings.",
|
|
1864
|
+
scope: "project"
|
|
1865
|
+
},
|
|
1830
1866
|
{
|
|
1831
1867
|
id: "audit.partial",
|
|
1832
1868
|
dimension: "audit-coverage",
|
|
@@ -1834,7 +1870,8 @@ var ISSUE_RULES = [
|
|
|
1834
1870
|
label: "Some repos never audited",
|
|
1835
1871
|
category: "audits",
|
|
1836
1872
|
howToFix: "Run `/melt-audit` on each unaudited repo to create its baseline",
|
|
1837
|
-
scope: "project"
|
|
1873
|
+
scope: "project",
|
|
1874
|
+
suppressedInStatuses: ["commercial"]
|
|
1838
1875
|
},
|
|
1839
1876
|
{
|
|
1840
1877
|
id: "audit.unprocessed",
|
|
@@ -4604,7 +4641,9 @@ var ISSUE_RULES2 = [
|
|
|
4604
4641
|
label: "No roadmap",
|
|
4605
4642
|
category: "gaps",
|
|
4606
4643
|
howToFix: "Open the project's Roadmap tab and add an active phase with at least one planned feature",
|
|
4607
|
-
scope: "project"
|
|
4644
|
+
scope: "project",
|
|
4645
|
+
suppressedInStatuses: ["commercial"],
|
|
4646
|
+
requiresRoadmapOwnership: true
|
|
4608
4647
|
},
|
|
4609
4648
|
{
|
|
4610
4649
|
id: "roadmap.no-active-phase",
|
|
@@ -4613,7 +4652,8 @@ var ISSUE_RULES2 = [
|
|
|
4613
4652
|
label: "Features but no active phase",
|
|
4614
4653
|
category: "gaps",
|
|
4615
4654
|
howToFix: "Open the Roadmap tab and mark the phase the team is currently working on as active",
|
|
4616
|
-
scope: "project"
|
|
4655
|
+
scope: "project",
|
|
4656
|
+
requiresRoadmapOwnership: true
|
|
4617
4657
|
},
|
|
4618
4658
|
{
|
|
4619
4659
|
id: "roadmap.empty-phase",
|
|
@@ -4622,7 +4662,8 @@ var ISSUE_RULES2 = [
|
|
|
4622
4662
|
label: "Active phase is empty",
|
|
4623
4663
|
category: "gaps",
|
|
4624
4664
|
howToFix: "Open the Roadmap tab and attach the phase's planned features, or close the phase if it's done",
|
|
4625
|
-
scope: "project"
|
|
4665
|
+
scope: "project",
|
|
4666
|
+
requiresRoadmapOwnership: true
|
|
4626
4667
|
},
|
|
4627
4668
|
{
|
|
4628
4669
|
id: "roadmap.no-features-with-active-phase",
|
|
@@ -4631,7 +4672,9 @@ var ISSUE_RULES2 = [
|
|
|
4631
4672
|
label: "Active phase but no features",
|
|
4632
4673
|
category: "sprint",
|
|
4633
4674
|
howToFix: "Run a backlog-seeding session and add features to the active phase before the team starts",
|
|
4634
|
-
scope: "project"
|
|
4675
|
+
scope: "project",
|
|
4676
|
+
suppressedInStatuses: ["commercial"],
|
|
4677
|
+
requiresRoadmapOwnership: true
|
|
4635
4678
|
},
|
|
4636
4679
|
{
|
|
4637
4680
|
id: "roadmap.closed-phase-open-work",
|
|
@@ -4640,7 +4683,8 @@ var ISSUE_RULES2 = [
|
|
|
4640
4683
|
label: "Closed phase has unfinished features",
|
|
4641
4684
|
category: "gaps",
|
|
4642
4685
|
howToFix: "A closed phase still has features that aren't done/canceled. Decide per feature: mark it done in that phase if the work landed (update_phase_feature), or move it to an active phase if it's still in flight. (#446 stage 7)",
|
|
4643
|
-
scope: "project"
|
|
4686
|
+
scope: "project",
|
|
4687
|
+
requiresRoadmapOwnership: true
|
|
4644
4688
|
},
|
|
4645
4689
|
{
|
|
4646
4690
|
id: "roadmap.feature-no-epic",
|
|
@@ -4649,7 +4693,8 @@ var ISSUE_RULES2 = [
|
|
|
4649
4693
|
label: "Primary-phase feature missing Linear epic",
|
|
4650
4694
|
category: "gaps",
|
|
4651
4695
|
howToFix: "Wire each current-phase feature's Linear epic via update_phase_feature (linearEpicUrl) \u2014 without it the roadmap can't sync status from the board and shows everything as not-started",
|
|
4652
|
-
scope: "project"
|
|
4696
|
+
scope: "project",
|
|
4697
|
+
requiresRoadmapOwnership: true
|
|
4653
4698
|
},
|
|
4654
4699
|
{
|
|
4655
4700
|
id: "roadmap.feature-no-prd",
|
|
@@ -4658,7 +4703,8 @@ var ISSUE_RULES2 = [
|
|
|
4658
4703
|
label: "Primary-phase feature missing PRD",
|
|
4659
4704
|
category: "gaps",
|
|
4660
4705
|
howToFix: "Write a PRD for each current-phase feature and link it on the feature (prdPath) \u2014 without one the dev team plans the work blind and plans score low on PRD alignment. PRD authoring is a PM deliverable (melt-pm-tech-investigate drafts the maturity/PRD sections)",
|
|
4661
|
-
scope: "project"
|
|
4706
|
+
scope: "project",
|
|
4707
|
+
requiresRoadmapOwnership: true
|
|
4662
4708
|
},
|
|
4663
4709
|
{
|
|
4664
4710
|
id: "roadmap.feature-status-mismatch",
|
|
@@ -4667,7 +4713,8 @@ var ISSUE_RULES2 = [
|
|
|
4667
4713
|
label: "Roadmap status differs from Linear",
|
|
4668
4714
|
category: "gaps",
|
|
4669
4715
|
howToFix: "A current-phase feature's roadmap status (what the client sees) disagrees with its linked Linear epic. The roadmap is the source of truth and is never auto-overwritten \u2014 reconcile so the client sees reality: either move the Linear epic to match the roadmap, or update the feature status (update_feature) to match where the work actually is",
|
|
4670
|
-
scope: "project"
|
|
4716
|
+
scope: "project",
|
|
4717
|
+
requiresRoadmapOwnership: true
|
|
4671
4718
|
},
|
|
4672
4719
|
// Delivery — Board
|
|
4673
4720
|
{
|
|
@@ -4677,7 +4724,8 @@ var ISSUE_RULES2 = [
|
|
|
4677
4724
|
label: "No board connected",
|
|
4678
4725
|
category: "gaps",
|
|
4679
4726
|
howToFix: "Open Project Settings and connect a Linear team or Jira project in the mappings card",
|
|
4680
|
-
scope: "project"
|
|
4727
|
+
scope: "project",
|
|
4728
|
+
suppressedInStatuses: ["commercial"]
|
|
4681
4729
|
},
|
|
4682
4730
|
{
|
|
4683
4731
|
id: "tracker.no-oauth",
|
|
@@ -4686,7 +4734,8 @@ var ISSUE_RULES2 = [
|
|
|
4686
4734
|
label: "Tracker needs OAuth connect",
|
|
4687
4735
|
category: "gaps",
|
|
4688
4736
|
howToFix: "Open Project Settings \u2192 Tracker connections and click Connect for the missing provider; that switches the project off Melt's shared key onto its own OAuth grant",
|
|
4689
|
-
scope: "project"
|
|
4737
|
+
scope: "project",
|
|
4738
|
+
suppressedInStatuses: ["commercial"]
|
|
4690
4739
|
},
|
|
4691
4740
|
{
|
|
4692
4741
|
id: "board.empty",
|
|
@@ -4740,7 +4789,8 @@ var ISSUE_RULES2 = [
|
|
|
4740
4789
|
label: "Open stories not in the active cycle",
|
|
4741
4790
|
category: "sprint",
|
|
4742
4791
|
howToFix: "Add this sprint\u2019s stories to the active Linear cycle (a Sprint label is not the cycle) \u2014 otherwise velocity and burndown read as empty",
|
|
4743
|
-
scope: "project"
|
|
4792
|
+
scope: "project",
|
|
4793
|
+
suppressedInStatuses: ["planning"]
|
|
4744
4794
|
},
|
|
4745
4795
|
{
|
|
4746
4796
|
id: "board.in-progress-stale",
|
|
@@ -4749,7 +4799,8 @@ var ISSUE_RULES2 = [
|
|
|
4749
4799
|
label: "Stale in-progress tickets",
|
|
4750
4800
|
category: "sprint",
|
|
4751
4801
|
howToFix: "Open the project board, ask the assignees what's blocking, and either move the ticket forward or back to the backlog",
|
|
4752
|
-
scope: "project"
|
|
4802
|
+
scope: "project",
|
|
4803
|
+
suppressedInStatuses: ["planning"]
|
|
4753
4804
|
},
|
|
4754
4805
|
{
|
|
4755
4806
|
id: "board.pm-silent-critical",
|
|
@@ -4761,7 +4812,8 @@ var ISSUE_RULES2 = [
|
|
|
4761
4812
|
label: "PM silent in active cycle",
|
|
4762
4813
|
category: "sprint",
|
|
4763
4814
|
howToFix: "Comment on the active-cycle tickets to acknowledge progress, ask questions, or flag concerns",
|
|
4764
|
-
scope: "project"
|
|
4815
|
+
scope: "project",
|
|
4816
|
+
suppressedInStatuses: ["planning"]
|
|
4765
4817
|
},
|
|
4766
4818
|
{
|
|
4767
4819
|
id: "board.pm-silent-medium",
|
|
@@ -4770,7 +4822,8 @@ var ISSUE_RULES2 = [
|
|
|
4770
4822
|
label: "PM commenting on under 60% of active-cycle tickets",
|
|
4771
4823
|
category: "sprint",
|
|
4772
4824
|
howToFix: "Comment on the active-cycle tickets to acknowledge progress, ask questions, or flag concerns",
|
|
4773
|
-
scope: "project"
|
|
4825
|
+
scope: "project",
|
|
4826
|
+
suppressedInStatuses: ["planning"]
|
|
4774
4827
|
},
|
|
4775
4828
|
// Delivery — Risks
|
|
4776
4829
|
{
|
|
@@ -4799,7 +4852,8 @@ var ISSUE_RULES2 = [
|
|
|
4799
4852
|
label: "No activity in 21+ days",
|
|
4800
4853
|
category: "gaps",
|
|
4801
4854
|
howToFix: "No meltctl activity in N days \u2014 confirm the project is still active, or mark it on-hold",
|
|
4802
|
-
scope: "project"
|
|
4855
|
+
scope: "project",
|
|
4856
|
+
suppressedInStatuses: ["warranty", "closed", "on_hold"]
|
|
4803
4857
|
},
|
|
4804
4858
|
// Delivery — Plans
|
|
4805
4859
|
{
|
|
@@ -4809,7 +4863,8 @@ var ISSUE_RULES2 = [
|
|
|
4809
4863
|
label: "No recent plan",
|
|
4810
4864
|
category: "plans",
|
|
4811
4865
|
howToFix: "Remind the team to run `meltctl plan submit` before starting new tickets",
|
|
4812
|
-
scope: "project"
|
|
4866
|
+
scope: "project",
|
|
4867
|
+
suppressedInStatuses: ["planning"]
|
|
4813
4868
|
},
|
|
4814
4869
|
{
|
|
4815
4870
|
id: "plans.unscored",
|
|
@@ -4818,7 +4873,8 @@ var ISSUE_RULES2 = [
|
|
|
4818
4873
|
label: "Plans not yet scored",
|
|
4819
4874
|
category: "plans",
|
|
4820
4875
|
howToFix: "Open the plan and click 'Score plan' to run the rubric",
|
|
4821
|
-
scope: "project"
|
|
4876
|
+
scope: "project",
|
|
4877
|
+
suppressedInStatuses: ["planning"]
|
|
4822
4878
|
},
|
|
4823
4879
|
{
|
|
4824
4880
|
id: "plans.stuck",
|
|
@@ -4829,7 +4885,8 @@ var ISSUE_RULES2 = [
|
|
|
4829
4885
|
label: "Plan can't be scored",
|
|
4830
4886
|
category: "plans",
|
|
4831
4887
|
howToFix: "Re-run `meltctl plan submit` with a valid ticket, or close the plan if it's no longer relevant",
|
|
4832
|
-
scope: "project"
|
|
4888
|
+
scope: "project",
|
|
4889
|
+
suppressedInStatuses: ["planning"]
|
|
4833
4890
|
},
|
|
4834
4891
|
// Delivery — Standups
|
|
4835
4892
|
{
|
|
@@ -4839,7 +4896,8 @@ var ISSUE_RULES2 = [
|
|
|
4839
4896
|
label: "Standup submission below 50%",
|
|
4840
4897
|
category: "standup",
|
|
4841
4898
|
howToFix: "Remind the team that standup is set for 9am Colombia; follow up with non-submitters",
|
|
4842
|
-
scope: "project"
|
|
4899
|
+
scope: "project",
|
|
4900
|
+
suppressedInStatuses: ["planning"]
|
|
4843
4901
|
},
|
|
4844
4902
|
{
|
|
4845
4903
|
id: "standups.punctuality",
|
|
@@ -4848,7 +4906,8 @@ var ISSUE_RULES2 = [
|
|
|
4848
4906
|
label: "Standups submitted but often late",
|
|
4849
4907
|
category: "standup",
|
|
4850
4908
|
howToFix: "The team is submitting standups but many land late \u2014 nudge toward the 9am Colombia cutoff",
|
|
4851
|
-
scope: "project"
|
|
4909
|
+
scope: "project",
|
|
4910
|
+
suppressedInStatuses: ["planning"]
|
|
4852
4911
|
},
|
|
4853
4912
|
// Code — Findings
|
|
4854
4913
|
{
|
|
@@ -4890,7 +4949,8 @@ var ISSUE_RULES2 = [
|
|
|
4890
4949
|
label: "Never audited",
|
|
4891
4950
|
category: "audits",
|
|
4892
4951
|
howToFix: "Run `/melt-audit` on the repo to create the baseline",
|
|
4893
|
-
scope: "project"
|
|
4952
|
+
scope: "project",
|
|
4953
|
+
suppressedInStatuses: ["commercial"]
|
|
4894
4954
|
},
|
|
4895
4955
|
{
|
|
4896
4956
|
id: "audit.stale",
|
|
@@ -4901,6 +4961,19 @@ var ISSUE_RULES2 = [
|
|
|
4901
4961
|
howToFix: "Run `/melt-audit` on the repo to refresh the baseline",
|
|
4902
4962
|
scope: "project"
|
|
4903
4963
|
},
|
|
4964
|
+
{
|
|
4965
|
+
id: "audit.overdue",
|
|
4966
|
+
dimension: "audit-coverage",
|
|
4967
|
+
// Low — a re-audit nudge, not an alarm. The team reserves red/high, and
|
|
4968
|
+
// the 90-day `audit.stale` stays medium; this fills the 31–90 day gap so a
|
|
4969
|
+
// repo flagged "overdue" on the card actually produces an issue + score
|
|
4970
|
+
// impact (low still costs −2).
|
|
4971
|
+
severity: "low",
|
|
4972
|
+
label: "Audit overdue (30+ days)",
|
|
4973
|
+
category: "audits",
|
|
4974
|
+
howToFix: "A repo's last audit is over 30 days old \u2014 re-run `/melt-audit` (or the relevant audit skill) to refresh the findings.",
|
|
4975
|
+
scope: "project"
|
|
4976
|
+
},
|
|
4904
4977
|
{
|
|
4905
4978
|
id: "audit.partial",
|
|
4906
4979
|
dimension: "audit-coverage",
|
|
@@ -4908,7 +4981,8 @@ var ISSUE_RULES2 = [
|
|
|
4908
4981
|
label: "Some repos never audited",
|
|
4909
4982
|
category: "audits",
|
|
4910
4983
|
howToFix: "Run `/melt-audit` on each unaudited repo to create its baseline",
|
|
4911
|
-
scope: "project"
|
|
4984
|
+
scope: "project",
|
|
4985
|
+
suppressedInStatuses: ["commercial"]
|
|
4912
4986
|
},
|
|
4913
4987
|
{
|
|
4914
4988
|
id: "audit.unprocessed",
|
|
@@ -5662,7 +5736,7 @@ var submitDailyPlanInputSchema = z11.object({
|
|
|
5662
5736
|
});
|
|
5663
5737
|
function registerDailyPlanTools(server, getClient2) {
|
|
5664
5738
|
server.registerTool(
|
|
5665
|
-
"
|
|
5739
|
+
"get_pm_daily_plan",
|
|
5666
5740
|
{
|
|
5667
5741
|
title: "Get the PM's daily plan",
|
|
5668
5742
|
description: "Returns the calling PM's daily plan for a day (defaults to today, Colombia time), or null if none exists. Each agenda item has a label, optional project/meeting/suggestedSkill, a status (pending/done/blocked/carried), and an optional note. Use this in melt-pm-close-my-day to read back the morning's plan and reconcile it. Self-scoped \u2014 a PM only ever reads their own plan.",
|
|
@@ -5673,7 +5747,7 @@ function registerDailyPlanTools(server, getClient2) {
|
|
|
5673
5747
|
withClientArgs(getClient2, getDailyPlan)
|
|
5674
5748
|
);
|
|
5675
5749
|
server.registerTool(
|
|
5676
|
-
"
|
|
5750
|
+
"submit_pm_daily_plan",
|
|
5677
5751
|
{
|
|
5678
5752
|
title: "Submit/update the PM's daily plan",
|
|
5679
5753
|
description: "Upserts the calling PM's daily plan for a day (defaults to today). melt-pm-plan-my-day calls this once it has built the morning agenda (items with status='pending'); melt-pm-close-my-day calls it again with the same items flipped to done/blocked/carried. Idempotent per (PM, day) \u2014 calling again replaces the day's agenda. Self-scoped.",
|
package/package.json
CHANGED