pumuki 6.3.39 → 6.3.41

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 (64) hide show
  1. package/README.md +21 -12
  2. package/VERSION +1 -1
  3. package/core/gate/evaluateRules.test.ts +40 -0
  4. package/core/gate/evaluateRules.ts +7 -1
  5. package/core/rules/Consequence.ts +1 -0
  6. package/docs/CONFIGURATION.md +50 -0
  7. package/docs/INSTALLATION.md +38 -11
  8. package/docs/MCP_SERVERS.md +1 -1
  9. package/docs/README.md +1 -0
  10. package/docs/RELEASE_NOTES.md +58 -0
  11. package/docs/USAGE.md +191 -9
  12. package/docs/registro-maestro-de-seguimiento.md +2 -2
  13. package/docs/seguimiento-activo-pumuki-saas-supermercados.md +1629 -1
  14. package/docs/validation/README.md +2 -1
  15. package/docs/validation/ast-intelligence-roadmap.md +96 -0
  16. package/integrations/config/skillsCustomRules.ts +14 -0
  17. package/integrations/config/skillsDetectorRegistry.ts +11 -1
  18. package/integrations/config/skillsLock.ts +30 -0
  19. package/integrations/config/skillsMarkdownRules.ts +14 -3
  20. package/integrations/config/skillsRuleSet.ts +25 -3
  21. package/integrations/evidence/readEvidence.test.ts +3 -2
  22. package/integrations/evidence/readEvidence.ts +14 -4
  23. package/integrations/evidence/repoState.ts +10 -2
  24. package/integrations/evidence/schema.test.ts +3 -2
  25. package/integrations/evidence/schema.ts +3 -0
  26. package/integrations/evidence/writeEvidence.test.ts +3 -2
  27. package/integrations/gate/evaluateAiGate.ts +511 -2
  28. package/integrations/git/GitService.ts +5 -1
  29. package/integrations/git/astIntelligenceDualValidation.ts +275 -0
  30. package/integrations/git/gitAtomicity.ts +42 -9
  31. package/integrations/git/resolveGitRefs.ts +37 -0
  32. package/integrations/git/runPlatformGate.ts +228 -1
  33. package/integrations/git/runPlatformGateEvaluation.ts +4 -0
  34. package/integrations/git/stageRunners.ts +116 -2
  35. package/integrations/lifecycle/cli.ts +759 -22
  36. package/integrations/lifecycle/doctor.ts +62 -0
  37. package/integrations/lifecycle/index.ts +1 -0
  38. package/integrations/lifecycle/packageInfo.ts +25 -3
  39. package/integrations/lifecycle/policyReconcile.ts +304 -0
  40. package/integrations/lifecycle/preWriteAutomation.ts +42 -2
  41. package/integrations/lifecycle/watch.ts +365 -0
  42. package/integrations/mcp/aiGateCheck.ts +59 -2
  43. package/integrations/mcp/autoExecuteAiStart.ts +25 -1
  44. package/integrations/mcp/preFlightCheck.ts +13 -0
  45. package/integrations/sdd/evidenceScaffold.ts +223 -0
  46. package/integrations/sdd/index.ts +2 -0
  47. package/integrations/sdd/stateSync.ts +400 -0
  48. package/integrations/sdd/syncDocs.ts +97 -2
  49. package/package.json +4 -1
  50. package/scripts/backlog-action-reasons-lib.ts +38 -0
  51. package/scripts/backlog-id-issue-map-lib.ts +69 -0
  52. package/scripts/backlog-json-contract-lib.ts +3 -0
  53. package/scripts/framework-menu-consumer-preflight-lib.ts +6 -0
  54. package/scripts/framework-menu-system-notifications-lib.ts +66 -6
  55. package/scripts/package-install-smoke-command-resolution-lib.ts +64 -0
  56. package/scripts/package-install-smoke-consumer-npm-lib.ts +43 -0
  57. package/scripts/package-install-smoke-consumer-repo-setup-lib.ts +2 -0
  58. package/scripts/package-install-smoke-execution-steps-lib.ts +27 -9
  59. package/scripts/package-install-smoke-lifecycle-lib.ts +15 -4
  60. package/scripts/package-install-smoke-workspace-factory-lib.ts +4 -1
  61. package/scripts/reconcile-consumer-backlog-issues-lib.ts +651 -0
  62. package/scripts/reconcile-consumer-backlog-issues.ts +348 -0
  63. package/scripts/watch-consumer-backlog-lib.ts +465 -0
  64. package/scripts/watch-consumer-backlog.ts +326 -0
@@ -1,5 +1,6 @@
1
1
  import type { SmokeExpectation } from './package-install-smoke-contract';
2
2
  import { runGateStep, type SmokeGateStep } from './package-install-smoke-gate-lib';
3
+ import { resolveConsumerPumukiCommand } from './package-install-smoke-command-resolution-lib';
3
4
  import type { SmokeWorkspace } from './package-install-smoke-workspace-contract';
4
5
 
5
6
  export type SmokeStepResult = {
@@ -8,25 +9,30 @@ export type SmokeStepResult = {
8
9
  exitCode: number;
9
10
  };
10
11
 
11
- export const DEFAULT_SMOKE_GATE_STEPS: ReadonlyArray<SmokeGateStep> = [
12
+ type SmokeGateStepDescriptor = {
13
+ label: SmokeGateStep['label'];
14
+ binary: string;
15
+ args?: ReadonlyArray<string>;
16
+ evidenceFile: SmokeGateStep['evidenceFile'];
17
+ stage: SmokeGateStep['stage'];
18
+ };
19
+
20
+ export const DEFAULT_SMOKE_GATE_STEPS: ReadonlyArray<SmokeGateStepDescriptor> = [
12
21
  {
13
22
  label: 'pre-commit',
14
- command: 'npx',
15
- args: ['--yes', 'pumuki-pre-commit'],
23
+ binary: 'pumuki-pre-commit',
16
24
  evidenceFile: 'pre-commit.ai_evidence.json',
17
25
  stage: 'PRE_COMMIT',
18
26
  },
19
27
  {
20
28
  label: 'pre-push',
21
- command: 'npx',
22
- args: ['--yes', 'pumuki-pre-push'],
29
+ binary: 'pumuki-pre-push',
23
30
  evidenceFile: 'pre-push.ai_evidence.json',
24
31
  stage: 'PRE_PUSH',
25
32
  },
26
33
  {
27
34
  label: 'ci',
28
- command: 'npx',
29
- args: ['--yes', 'pumuki-ci'],
35
+ binary: 'pumuki-ci',
30
36
  evidenceFile: 'ci.ai_evidence.json',
31
37
  stage: 'CI',
32
38
  },
@@ -36,10 +42,22 @@ export const runDefaultSmokeGateSteps = (params: {
36
42
  workspace: SmokeWorkspace;
37
43
  expectation: SmokeExpectation;
38
44
  }): ReadonlyArray<SmokeStepResult> =>
39
- DEFAULT_SMOKE_GATE_STEPS.map((step) => {
45
+ DEFAULT_SMOKE_GATE_STEPS.map((stepDescriptor) => {
46
+ const resolvedCommand = resolveConsumerPumukiCommand({
47
+ consumerRepo: params.workspace.consumerRepo,
48
+ binary: stepDescriptor.binary,
49
+ args: stepDescriptor.args,
50
+ });
51
+ const step: SmokeGateStep = {
52
+ label: stepDescriptor.label,
53
+ command: resolvedCommand.executable,
54
+ args: resolvedCommand.args,
55
+ evidenceFile: stepDescriptor.evidenceFile,
56
+ stage: stepDescriptor.stage,
57
+ };
40
58
  const result = runGateStep(params.workspace, step, params.expectation);
41
59
  return {
42
- label: step.label,
60
+ label: stepDescriptor.label,
43
61
  outcome: result.outcome,
44
62
  exitCode: result.exitCode,
45
63
  };
@@ -3,6 +3,7 @@ import {
3
3
  assertSuccess,
4
4
  runCommand,
5
5
  } from './package-install-smoke-runner-common';
6
+ import { resolveConsumerPumukiCommand } from './package-install-smoke-command-resolution-lib';
6
7
  import { pushCommandLog, type SmokeWorkspace } from './package-install-smoke-workspace-lib';
7
8
 
8
9
  const normalizeStatus = (value: string): string =>
@@ -27,10 +28,15 @@ export const captureLifecycleStatusSnapshot = (workspace: SmokeWorkspace): strin
27
28
  getShortStatus(workspace);
28
29
 
29
30
  export const runLifecycleInstallStep = (workspace: SmokeWorkspace): void => {
31
+ const command = resolveConsumerPumukiCommand({
32
+ consumerRepo: workspace.consumerRepo,
33
+ binary: 'pumuki',
34
+ args: ['install'],
35
+ });
30
36
  const result = runCommand({
31
37
  cwd: workspace.consumerRepo,
32
- executable: 'npx',
33
- args: ['--yes', 'pumuki', 'install'],
38
+ executable: command.executable,
39
+ args: command.args,
34
40
  env: {
35
41
  PUMUKI_SKIP_OPENSPEC_BOOTSTRAP: '1',
36
42
  },
@@ -41,10 +47,15 @@ export const runLifecycleInstallStep = (workspace: SmokeWorkspace): void => {
41
47
  };
42
48
 
43
49
  export const runLifecycleUninstallStep = (workspace: SmokeWorkspace): void => {
50
+ const command = resolveConsumerPumukiCommand({
51
+ consumerRepo: workspace.consumerRepo,
52
+ binary: 'pumuki',
53
+ args: ['uninstall', '--purge-artifacts'],
54
+ });
44
55
  const result = runCommand({
45
56
  cwd: workspace.consumerRepo,
46
- executable: 'npx',
47
- args: ['--yes', 'pumuki', 'uninstall', '--purge-artifacts'],
57
+ executable: command.executable,
58
+ args: command.args,
48
59
  });
49
60
  pushCommandLog(workspace.commandLog, result);
50
61
  assertNoFatalOutput(result, 'pumuki lifecycle uninstall');
@@ -15,7 +15,10 @@ export const createSmokeWorkspace = (mode: SmokeMode): SmokeWorkspace => {
15
15
  ensureDirectory(reportRoot);
16
16
 
17
17
  const tmpRoot = mkdtempSync(join(tmpdir(), 'pumuki-package-smoke-'));
18
- const consumerRepo = join(tmpRoot, 'consumer');
18
+ const consumerRepo = join(
19
+ tmpRoot,
20
+ process.platform === 'win32' ? 'consumer' : 'consumer:repo'
21
+ );
19
22
  const bareRemote = join(tmpRoot, 'origin.git');
20
23
 
21
24
  return {