pumuki 6.3.280 → 6.3.281

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/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [6.3.281] - 2026-05-19
4
+
5
+ - `PUMUKI-INC-150`: `skills.ios.prefer-swift-testing` no longer blocks brownfield XCTest specs that already follow the repo quality contract with `makeSUT()` and `trackForMemoryLeaks()`. Swift Testing migration findings remain active for modernizable XCTest suites without an explicit brownfield quality pattern.
6
+
3
7
  ## [6.3.280] - 2026-05-18
4
8
 
5
9
  - `PUMUKI-INC-149`: PRE_WRITE validation no longer reports the generic `EVIDENCE_GATE_BLOCKED` symptom when a concrete actionable cause has already been resolved from `next_action`. JSON output, panels and blocked notifications now keep the real cause only, avoiding contradictory "blocked by stale evidence" guidance when the remediation is an atomic-slice/worktree action.
package/VERSION CHANGED
@@ -1 +1 @@
1
- v6.3.277
1
+ v6.3.281
@@ -1775,6 +1775,27 @@ final class SyncTests: XCTestCase {
1775
1775
  assert.equal(hasSwiftLegacyXCTestImportUsage(performanceTest), false);
1776
1776
  });
1777
1777
 
1778
+ test('hasSwiftLegacyXCTestImportUsage excluye specs XCTest brownfield con calidad makeSUT y memory tracking', () => {
1779
+ const brownfieldSpec = `
1780
+ import XCTest
1781
+
1782
+ final class BuyerOnboardingStringsTests: XCTestCase {
1783
+ func testTitle() {
1784
+ let sut = makeSUT()
1785
+ XCTAssertEqual(sut.title, "Comprar cerca")
1786
+ }
1787
+
1788
+ private func makeSUT() -> BuyerOnboardingStrings {
1789
+ let sut = BuyerOnboardingStrings()
1790
+ trackForMemoryLeaks(sut)
1791
+ return sut
1792
+ }
1793
+ }
1794
+ `;
1795
+
1796
+ assert.equal(hasSwiftLegacyXCTestImportUsage(brownfieldSpec), false);
1797
+ });
1798
+
1778
1799
  test('hasSwiftLegacySwiftUiObservableWrapperUsage detecta @StateObject/@ObservedObject legacy', () => {
1779
1800
  const legacyWrapper = `
1780
1801
  @StateObject private var viewModel = LegacyViewModel()
@@ -2001,6 +2022,28 @@ final class LoginUITests: XCTestCase {
2001
2022
  assert.deepEqual(collectSwiftModernizableXCTestSuiteLines(mixedSuite), []);
2002
2023
  });
2003
2024
 
2025
+ test('hasSwiftModernizableXCTestSuiteUsage no bloquea specs XCTest brownfield con makeSUT y trackForMemoryLeaks', () => {
2026
+ const brownfieldSpec = `
2027
+ import XCTest
2028
+
2029
+ final class BuyerOnboardingStringsTests: XCTestCase {
2030
+ func testTitle() {
2031
+ let sut = makeSUT()
2032
+ XCTAssertEqual(sut.title, "Comprar cerca")
2033
+ }
2034
+
2035
+ private func makeSUT() -> BuyerOnboardingStrings {
2036
+ let sut = BuyerOnboardingStrings()
2037
+ trackForMemoryLeaks(sut)
2038
+ return sut
2039
+ }
2040
+ }
2041
+ `;
2042
+
2043
+ assert.equal(hasSwiftModernizableXCTestSuiteUsage(brownfieldSpec), false);
2044
+ assert.deepEqual(collectSwiftModernizableXCTestSuiteLines(brownfieldSpec), []);
2045
+ });
2046
+
2004
2047
  test('hasSwiftMixedTestingFrameworksUsage detecta mezcla XCTestCase y Testing/@Test', () => {
2005
2048
  const mixedSuite = `
2006
2049
  import XCTest
@@ -1606,6 +1606,11 @@ const hasSwiftLegacyXCTestMethodUsage = (source: string): boolean => {
1606
1606
  .length > 0;
1607
1607
  };
1608
1608
 
1609
+ const hasSwiftBrownfieldXCTestQualityPattern = (source: string): boolean => {
1610
+ const sanitized = sanitizeSwiftSourceForMultilineRegex(source);
1611
+ return /\bmakeSUT\s*\(/.test(sanitized) && /\btrackForMemoryLeaks\s*\(/.test(sanitized);
1612
+ };
1613
+
1609
1614
  export const hasSwiftLegacyXCTestImportUsage = (source: string): boolean => {
1610
1615
  if (!hasSwiftXCTestImportUsage(source)) {
1611
1616
  return false;
@@ -1615,6 +1620,10 @@ export const hasSwiftLegacyXCTestImportUsage = (source: string): boolean => {
1615
1620
  return false;
1616
1621
  }
1617
1622
 
1623
+ if (hasSwiftBrownfieldXCTestQualityPattern(source)) {
1624
+ return false;
1625
+ }
1626
+
1618
1627
  return true;
1619
1628
  };
1620
1629
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pumuki",
3
- "version": "6.3.280",
3
+ "version": "6.3.281",
4
4
  "description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
5
5
  "main": "index.js",
6
6
  "bin": {