pumuki 6.3.59 → 6.3.60
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/VERSION +1 -1
- package/bin/_run-ts-entry.js +4 -1
- package/core/facts/detectors/text/ios.test.ts +10 -0
- package/core/rules/presets/iosEnterpriseRuleSet.test.ts +49 -1
- package/core/rules/presets/iosEnterpriseRuleSet.ts +4 -11
- package/docs/README.md +5 -10
- package/docs/operations/RELEASE_NOTES.md +28 -33
- package/docs/product/API_REFERENCE.md +35 -16
- package/docs/product/CONFIGURATION.md +8 -1
- package/docs/product/HOW_IT_WORKS.md +9 -9
- package/docs/product/TESTING.md +28 -0
- package/docs/product/USAGE.md +60 -18
- package/docs/validation/README.md +31 -7
- package/integrations/config/compileSkillsLock.ts +1 -1
- package/integrations/config/coreSkillsLock.ts +20 -10
- package/integrations/evidence/repoState.ts +8 -20
- package/integrations/gate/stagePolicies.ts +50 -550
- package/integrations/git/runPlatformGate.ts +65 -19
- package/integrations/lifecycle/cli.ts +293 -21
- package/integrations/lifecycle/doctor.ts +51 -10
- package/integrations/lifecycle/experimentalFeaturesSnapshot.ts +61 -0
- package/integrations/lifecycle/packageInfo.ts +22 -5
- package/integrations/lifecycle/policyValidationSnapshot.ts +6 -0
- package/integrations/lifecycle/saasIngestionContract.ts +1 -1
- package/integrations/lifecycle/status.ts +6 -0
- package/integrations/mcp/aiGateCheck.ts +7 -3
- package/integrations/mcp/autoExecuteAiStart.ts +7 -3
- package/integrations/mcp/enterpriseServer.ts +49 -2
- package/integrations/mcp/preFlightCheck.ts +7 -3
- package/integrations/policy/experimentalFeatures.ts +189 -0
- package/integrations/policy/heuristicsEnforcement.ts +65 -0
- package/integrations/policy/policyAsCode.ts +250 -0
- package/integrations/policy/policyProfiles.ts +410 -0
- package/integrations/policy/preWriteEnforcement.ts +19 -31
- package/integrations/policy/sddCompletenessEnforcement.ts +57 -0
- package/integrations/policy/skillsEnforcement.ts +1 -10
- package/integrations/policy/tddBddEnforcement.ts +103 -0
- package/integrations/sdd/policy.ts +125 -39
- package/integrations/sdd/types.ts +2 -0
- package/integrations/tdd/types.ts +1 -1
- package/integrations/telemetry/gateTelemetry.ts +4 -0
- package/package.json +37 -3
- package/scripts/adapter-readiness-markdown-next-actions-lib.ts +1 -1
- package/scripts/adapter-real-session-analysis-evaluation-lib.ts +4 -0
- package/scripts/adapter-real-session-analysis-messages-lib.ts +13 -0
- package/scripts/adapter-real-session-contract.ts +3 -0
- package/scripts/adapter-real-session-markdown-sections-context-lib.ts +8 -2
- package/scripts/adapter-real-session-status-parser-lib.ts +29 -1
- package/scripts/adapter-session-status-capabilities-lib.ts +77 -0
- package/scripts/adapter-session-status-command-lib.ts +18 -6
- package/scripts/adapter-session-status-contract.ts +20 -5
- package/scripts/adapter-session-status-markdown-lib.ts +30 -7
- package/scripts/adapter-session-status-verdict-lib.ts +15 -4
- package/scripts/build-adapter-session-status.ts +5 -3
- package/scripts/build-consumer-menu-matrix-baseline.ts +5 -0
- package/scripts/build-consumer-startup-triage-runner-lib.ts +2 -4
- package/scripts/check-tracking-single-active.sh +12 -12
- package/scripts/compile-skills-lock.ts +9 -2
- package/scripts/consumer-menu-matrix-baseline-builder-lib.ts +114 -0
- package/scripts/consumer-menu-matrix-baseline-cli-lib.ts +117 -0
- package/scripts/consumer-menu-matrix-baseline-report-lib.ts +263 -0
- package/scripts/consumer-startup-triage-command-builders-core-required-lib.ts +9 -2
- package/scripts/consumer-startup-triage-command-builders-support-bundle-lib.ts +5 -1
- package/scripts/consumer-startup-triage-command-builders-support-followup-lib.ts +9 -2
- package/scripts/consumer-startup-triage-command-builders-workflow-lint-lib.ts +9 -6
- package/scripts/consumer-startup-triage-contract.ts +2 -1
- package/scripts/consumer-startup-triage-markdown-lib.ts +1 -1
- package/scripts/consumer-startup-triage-script-paths-lib.ts +17 -0
- package/scripts/consumer-support-bundle-markdown-sections-support-payload-lib.ts +57 -3
- package/scripts/consumer-support-ticket-draft-lib.ts +2 -1
- package/scripts/consumer-support-ticket-draft-primary-sections-lib.ts +49 -4
- package/scripts/consumer-workflow-lint-markdown-lib.ts +8 -1
- package/scripts/enterprise-contract-suite-contract.ts +2 -2
- package/scripts/framework-menu-actions-diagnostics-adapter-lib.ts +17 -3
- package/scripts/framework-menu-actions-diagnostics-maintenance-lib.ts +1 -1
- package/scripts/framework-menu-actions-diagnostics-support-core-lib.ts +3 -3
- package/scripts/framework-menu-actions-diagnostics-support-triage-lib.ts +2 -2
- package/scripts/framework-menu-actions-gates-stage-lib.ts +3 -3
- package/scripts/framework-menu-actions-phase5-exec-lib.ts +2 -2
- package/scripts/framework-menu-actions-phase5-reports-lib.ts +4 -4
- package/scripts/framework-menu-advanced-view-help.ts +15 -15
- package/scripts/framework-menu-builders-maintenance.ts +10 -4
- package/scripts/framework-menu-consumer-actions-lib.ts +9 -9
- package/scripts/framework-menu-consumer-runtime-actions.ts +27 -7
- package/scripts/framework-menu-consumer-runtime-audit.ts +163 -17
- package/scripts/framework-menu-consumer-runtime-lib.ts +10 -0
- package/scripts/framework-menu-consumer-runtime-menu.ts +17 -8
- package/scripts/framework-menu-consumer-runtime-types.ts +20 -6
- package/scripts/framework-menu-evidence-summary-normalize.ts +7 -0
- package/scripts/framework-menu-evidence-summary-read.ts +28 -0
- package/scripts/framework-menu-evidence-summary-severity.ts +129 -0
- package/scripts/framework-menu-evidence-summary-types.ts +16 -0
- package/scripts/framework-menu-gate-lib.ts +44 -7
- package/scripts/framework-menu-layout-data.ts +15 -10
- package/scripts/framework-menu-legacy-audit-markdown-document.ts +6 -2
- package/scripts/framework-menu-legacy-audit-render-panel.ts +3 -2
- package/scripts/framework-menu-legacy-audit-render-report.ts +20 -58
- package/scripts/framework-menu-legacy-audit-render-sections.ts +5 -7
- package/scripts/framework-menu-runner-constants.ts +2 -1
- package/scripts/framework-menu-runners-adapter-real-session-lib.ts +35 -12
- package/scripts/framework-menu-runners-adapter-session-lib.ts +35 -12
- package/scripts/framework-menu-runners-validation-custom-rules-lib.ts +10 -2
- package/scripts/framework-menu-runners-validation-skills-lib.ts +10 -2
- package/scripts/framework-menu-skills-lib.ts +8 -1
- package/scripts/framework-menu-system-notifications-gate.ts +12 -0
- package/scripts/framework-menu-system-notifications-lib.ts +1 -0
- package/scripts/framework-menu.ts +23 -14
- package/scripts/lint-consumer-workflows.ts +21 -12
- package/scripts/package-install-smoke-consumer-npm-lib.ts +41 -5
- package/scripts/package-install-smoke-workspace-factory-lib.ts +1 -1
- package/scripts/package-manifest-lib.ts +2 -0
- package/scripts/phase5-blockers-markdown-next-actions-blocked-lib.ts +3 -3
- package/scripts/phase5-blockers-markdown-next-actions-ready-lib.ts +1 -1
- package/scripts/phase5-execution-closure-plan-consumer-triage-lib.ts +4 -5
- package/scripts/phase5-execution-closure-status-markdown-next-actions-lib.ts +1 -1
- package/scripts/phase5-external-handoff-markdown-next-actions-lib.ts +1 -1
- package/scripts/prepare-phase5-escalation-submission.sh +1 -1
- package/scripts/refresh-phase5-latest-escalation.sh +1 -1
- package/scripts/run-phase5-post-support-refresh.sh +1 -1
- package/scripts/run-phase8-after-billing-reactivation.sh +2 -2
- package/scripts/run-phase8-autopilot.sh +3 -3
- package/scripts/run-phase8-close-ready.sh +2 -4
- package/scripts/run-phase8-doctor.sh +3 -3
- package/scripts/run-phase8-next-step.sh +3 -3
- package/scripts/run-phase8-status-pack.sh +3 -3
- package/scripts/run-phase8-tick.sh +5 -5
- package/scripts/build-phase8-ready-handoff-summary.sh +0 -66
- package/scripts/check-refactor-progress-single-active.sh +0 -25
- package/scripts/close-phase5-escalation-submission.sh +0 -81
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v6.3.
|
|
1
|
+
v6.3.57
|
package/bin/_run-ts-entry.js
CHANGED
|
@@ -111,6 +111,16 @@ test('hasSwiftCallbackStyleSignature ignora usos fuera de firmas callback', () =
|
|
|
111
111
|
assert.equal(hasSwiftCallbackStyleSignature(source), false);
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
+
test('hasSwiftCallbackStyleSignature ignora closures async modernos con @Sendable', () => {
|
|
115
|
+
const source = `
|
|
116
|
+
public init(publish: @escaping @Sendable ([AppRoute]) async -> Void) {
|
|
117
|
+
self.publish = publish
|
|
118
|
+
}
|
|
119
|
+
`;
|
|
120
|
+
|
|
121
|
+
assert.equal(hasSwiftCallbackStyleSignature(source), false);
|
|
122
|
+
});
|
|
123
|
+
|
|
114
124
|
test('detecta primitivas GCD y OperationQueue en codigo ejecutable', () => {
|
|
115
125
|
const source = `
|
|
116
126
|
DispatchQueue.main.async { }
|
|
@@ -35,7 +35,7 @@ test('iosEnterpriseRuleSet define reglas locked para plataforma ios', () => {
|
|
|
35
35
|
assert.equal(byId.get('ios.solid.srp.presentation-mixed-responsibilities')?.when.kind, 'Heuristic');
|
|
36
36
|
assert.equal(byId.get('ios.canary-001.presentation-mixed-responsibilities')?.when.kind, 'Heuristic');
|
|
37
37
|
assert.equal(byId.get('ios.tdd.domain-changes-require-tests')?.when.kind, 'All');
|
|
38
|
-
assert.equal(byId.get('ios.no-completion-handlers-outside-bridges')?.when.kind, '
|
|
38
|
+
assert.equal(byId.get('ios.no-completion-handlers-outside-bridges')?.when.kind, 'Heuristic');
|
|
39
39
|
assert.equal(byId.get('ios.no-force-unwrap')?.when.kind, 'All');
|
|
40
40
|
assert.equal(byId.get('ios.no-force-unwrap')?.when.conditions[0]?.kind, 'Heuristic');
|
|
41
41
|
|
|
@@ -90,6 +90,54 @@ test('ios.no-force-unwrap bloquea cuando la heuristica detecta force unwrap real
|
|
|
90
90
|
assert.equal(findings[0]?.code, 'IOS_NO_FORCE_UNWRAP');
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
+
test('ios.no-completion-handlers-outside-bridges ignora closures async modernos', () => {
|
|
94
|
+
const rule = iosEnterpriseRuleSet.find(
|
|
95
|
+
(candidate) => candidate.id === 'ios.no-completion-handlers-outside-bridges'
|
|
96
|
+
);
|
|
97
|
+
assert.ok(rule);
|
|
98
|
+
|
|
99
|
+
const findings = evaluateRules([rule], [
|
|
100
|
+
{
|
|
101
|
+
kind: 'FileContent',
|
|
102
|
+
path: 'Sources/AppComposition/Presentation/ProtectedPathCommandChannel.swift',
|
|
103
|
+
content:
|
|
104
|
+
'public init(publish: @escaping @Sendable ([AppRoute]) async -> Void) { self.publish = publish }',
|
|
105
|
+
source: 'unit-test',
|
|
106
|
+
},
|
|
107
|
+
]);
|
|
108
|
+
|
|
109
|
+
assert.deepEqual(findings, []);
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test('ios.no-completion-handlers-outside-bridges bloquea callback-style signatures detectadas por AST', () => {
|
|
113
|
+
const rule = iosEnterpriseRuleSet.find(
|
|
114
|
+
(candidate) => candidate.id === 'ios.no-completion-handlers-outside-bridges'
|
|
115
|
+
);
|
|
116
|
+
assert.ok(rule);
|
|
117
|
+
|
|
118
|
+
const findings = evaluateRules([rule], [
|
|
119
|
+
{
|
|
120
|
+
kind: 'FileContent',
|
|
121
|
+
path: 'Sources/Features/Flights/Application/LegacyAdapter.swift',
|
|
122
|
+
content: 'func fetch(completion: @escaping (Result<Void, Error>) -> Void) {}',
|
|
123
|
+
source: 'unit-test',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
kind: 'Heuristic',
|
|
127
|
+
ruleId: 'heuristics.ios.callback-style.ast',
|
|
128
|
+
severity: 'CRITICAL',
|
|
129
|
+
code: 'HEURISTICS_IOS_CALLBACK_STYLE_AST',
|
|
130
|
+
message: 'AST heuristic detected callback-style API signature outside bridge layers.',
|
|
131
|
+
filePath: 'Sources/Features/Flights/Application/LegacyAdapter.swift',
|
|
132
|
+
source: 'heuristics:ast',
|
|
133
|
+
},
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
assert.equal(findings.length, 1);
|
|
137
|
+
assert.equal(findings[0]?.ruleId, 'ios.no-completion-handlers-outside-bridges');
|
|
138
|
+
assert.equal(findings[0]?.code, 'IOS_NO_COMPLETION_HANDLERS');
|
|
139
|
+
});
|
|
140
|
+
|
|
93
141
|
test('ios.canary-001.presentation-mixed-responsibilities emite finding bloqueante con metadata semantica', () => {
|
|
94
142
|
const rule = iosEnterpriseRuleSet.find(
|
|
95
143
|
(candidate) => candidate.id === 'ios.canary-001.presentation-mixed-responsibilities'
|
|
@@ -341,17 +341,10 @@ export const iosEnterpriseRuleSet: RuleSet = [
|
|
|
341
341
|
exclude: ['**/Bridges/**', '**/*Tests*/**'],
|
|
342
342
|
},
|
|
343
343
|
when: {
|
|
344
|
-
kind: '
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
contains: ['@escaping'],
|
|
349
|
-
},
|
|
350
|
-
{
|
|
351
|
-
kind: 'FileContent',
|
|
352
|
-
contains: ['completion:'],
|
|
353
|
-
},
|
|
354
|
-
],
|
|
344
|
+
kind: 'Heuristic',
|
|
345
|
+
where: {
|
|
346
|
+
ruleId: 'heuristics.ios.callback-style.ast',
|
|
347
|
+
},
|
|
355
348
|
},
|
|
356
349
|
then: {
|
|
357
350
|
kind: 'Finding',
|
package/docs/README.md
CHANGED
|
@@ -33,8 +33,7 @@ Mapa corto y humano de la documentación oficial de Pumuki.
|
|
|
33
33
|
- `docs/validation/README.md`
|
|
34
34
|
|
|
35
35
|
- Quiero saber en qué estamos ahora:
|
|
36
|
-
- `
|
|
37
|
-
- `docs/tracking/plan-activo-de-trabajo.md`
|
|
36
|
+
- `PUMUKI-RESET-MASTER-PLAN.md`
|
|
38
37
|
|
|
39
38
|
## Estructura oficial
|
|
40
39
|
|
|
@@ -60,14 +59,9 @@ Mapa corto y humano de la documentación oficial de Pumuki.
|
|
|
60
59
|
- `docs/codex-skills/`
|
|
61
60
|
- Skills vendorizadas que el repo usa como contrato local.
|
|
62
61
|
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
- Plan activo: `docs/tracking/plan-activo-de-trabajo.md`
|
|
67
|
-
- Históricos técnicos permitidos:
|
|
68
|
-
- `docs/tracking/historico-validacion-ruralgo-03-03-2026.md`
|
|
69
|
-
- `docs/tracking/historico-contrato-aceptacion-c022.md`
|
|
70
|
-
- Regla hard: solo puede existir una tarea `🚧` en el plan activo.
|
|
62
|
+
- Seguimiento operativo:
|
|
63
|
+
- Fuente viva única: `PUMUKI-RESET-MASTER-PLAN.md`
|
|
64
|
+
- Regla hard: no mantener MDs legacy de seguimiento dentro del repo.
|
|
71
65
|
|
|
72
66
|
## Fuera de `docs/`
|
|
73
67
|
|
|
@@ -76,6 +70,7 @@ Mapa corto y humano de la documentación oficial de Pumuki.
|
|
|
76
70
|
- `CHANGELOG.md`
|
|
77
71
|
- `AGENTS.md`
|
|
78
72
|
- `PUMUKI.md`
|
|
73
|
+
- `PUMUKI-RESET-MASTER-PLAN.md`
|
|
79
74
|
|
|
80
75
|
## Lo que no se conserva
|
|
81
76
|
|
|
@@ -6,40 +6,35 @@ This file keeps only the operational highlights and rollout notes that matter wh
|
|
|
6
6
|
|
|
7
7
|
## 2026-03 (enterprise hardening updates)
|
|
8
8
|
|
|
9
|
-
### 2026-03-14 (
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
- consumer
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
- `node --import tsx --test integrations/gate/__tests__/evaluateAiGate.test.ts` (`41 pass / 0 fail`)
|
|
21
|
-
- `node --import tsx --test --test-name-pattern "autocura evidence y receipt stale aunque la sesión SDD esté inválida|blocks AI gate violations in strict enforcement mode|blocks missing OpenSpec in strict enforcement mode|expone next_action de reconcile cuando active_rule_ids está vacío para código|expone next_action con slice atómico" integrations/lifecycle/__tests__/cli.test.ts` (`4 pass / 0 fail`)
|
|
22
|
-
- `npm run -s validation:package-manifest` (`PASS`)
|
|
23
|
-
- `npm pack --json --dry-run` (`PASS`)
|
|
24
|
-
|
|
25
|
-
### 2026-03-14 (v6.3.58)
|
|
26
|
-
|
|
27
|
-
- PRE_WRITE no-op stability for consumer slices:
|
|
28
|
-
- clean slices with `pending_changes=0` no longer fail by undetected multi-platform skills contract noise,
|
|
29
|
-
- the resulting contract is now `NOT_APPLICABLE` when there is no materialized active platform scope.
|
|
30
|
-
- PRE_WRITE freshness autocure:
|
|
31
|
-
- stale `ai_evidence` and stale MCP receipts are refreshed even if the SDD session itself is invalid,
|
|
32
|
-
- operational noise is removed before the final decision is reported.
|
|
33
|
-
- Deep doctor de-escalation:
|
|
34
|
-
- missing/stale evidence is now treated as operational drift (`warning`) instead of a hard diagnostic block.
|
|
9
|
+
### 2026-03-14 (unreleased)
|
|
10
|
+
|
|
11
|
+
- Support surface removed from product baseline:
|
|
12
|
+
- consumer support bundle, startup triage, adapter readiness and phase5 closure helpers are now presented as auxiliary support toolkit,
|
|
13
|
+
- product docs and menu labels no longer describe that surface as baseline framework behavior.
|
|
14
|
+
- Canonical support namespace:
|
|
15
|
+
- new primary npm commands: `toolkit:*`,
|
|
16
|
+
- legacy `validation:*` commands remain only as compatibility aliases for existing automations.
|
|
17
|
+
- Legacy escalation/handoff surface frozen:
|
|
18
|
+
- `phase5-latest`, `phase5-escalation`, `phase8` and final external handoff/reporting now live under `toolkit:legacy:*`,
|
|
19
|
+
- shell chains and next-command hints already point to `toolkit:legacy:*` instead of treating `validation:*` as the primary contract.
|
|
35
20
|
- Operational impact:
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
- `
|
|
42
|
-
|
|
21
|
+
- the product baseline stays focused on install/status/doctor/gate,
|
|
22
|
+
- support and rollout helpers remain available without contaminating the core surface,
|
|
23
|
+
- frozen escalation chains stay callable for legacy workflows but leave the official product API.
|
|
24
|
+
- Legacy export/reporting downgraded to read-only snapshots:
|
|
25
|
+
- legacy markdown export and consumer runtime export now declare themselves as `legacy read-only evidence snapshots`,
|
|
26
|
+
- they no longer publish prescriptive `next_action` / `blocked` copy or act as a parallel gate summary outside canonical `status` / `doctor`.
|
|
27
|
+
- Consumer menu shell parity tightened:
|
|
28
|
+
- consumer mode now groups `1/2/3/4` as canonical read-only gate flows, `8` as the matching read-only markdown export, and `5/6/7/9` as `Legacy Read-Only Diagnostics`,
|
|
29
|
+
- fixture validation on `ios-architecture-showcase` confirms parity between gate execution, menu summary, and exported markdown snapshot.
|
|
30
|
+
- Fixture acceptance baseline added:
|
|
31
|
+
- `validation:consumer-matrix-baseline` now runs repeated consumer matrix rounds against a real fixture repo,
|
|
32
|
+
- the command emits `report.json` + `summary.md` under `.audit-reports/fixture-matrix/<fixture>/consumer-menu-matrix-baseline/`, adds `doctor_blocking` plus `layerSummary`, and fails fast on drift,
|
|
33
|
+
- real baselines on `2026-03-14` are already stable for `ios-architecture-showcase`, `SAAS:APP_SUPERMERCADOS`, and `R_GO`, which makes per-layer acceptance visible before any promotion to blocking.
|
|
34
|
+
- Release readiness frozen for the reset:
|
|
35
|
+
- release decision now depends on an explicit checklist (`typecheck`, enterprise contract suite, package manifest, both package smokes, and the three fixture baselines),
|
|
36
|
+
- publication is allowed only from `release/<semver>` cut from `develop`,
|
|
37
|
+
- rollback is defined as previous stable semver + consumer repin + revalidation of `status` / `doctor` / fixture baseline.
|
|
43
38
|
|
|
44
39
|
### 2026-03-11 (v6.3.57)
|
|
45
40
|
|
|
@@ -301,7 +301,7 @@ Consumption: `docs/mcp/agent-context-consumption.md`.
|
|
|
301
301
|
npm run framework:menu
|
|
302
302
|
npm run adapter:install -- --agent=codex --dry-run
|
|
303
303
|
npx --yes pumuki adapter install --agent=cursor
|
|
304
|
-
npm run
|
|
304
|
+
npm run toolkit:adapter-readiness
|
|
305
305
|
npm run typecheck
|
|
306
306
|
npm run test:deterministic
|
|
307
307
|
```
|
|
@@ -318,11 +318,19 @@ Consumer menu pre-flight:
|
|
|
318
318
|
- options `1/2/3/4` execute pre-flight before gate evaluation
|
|
319
319
|
- pre-flight checks `repo_state`, stale/missing evidence, git-flow protected branches, and AI gate chain consistency
|
|
320
320
|
- stage mapping is deterministic: `1/3 -> PRE_COMMIT`, `2/4 -> PRE_PUSH`
|
|
321
|
+
- consumer mode is a read-only shell: `1/2/3/4` are gate flows, `8` is the matching markdown export, and `5/6/7/9` are `Legacy Read-Only Diagnostics`
|
|
321
322
|
- in modern UI mode (`PUMUKI_MENU_UI_V2=1`) options are grouped by domains while preserving IDs and execution wiring
|
|
322
323
|
- advanced maintenance option `33` imports custom rules from `AGENTS.md/SKILLS.md` to `/.pumuki/custom-rules.json`
|
|
323
324
|
- menu audits no longer bypass SDD; `sdd.policy.blocked` can be emitted in menu-driven runs
|
|
325
|
+
- advanced options `28/29/30/32` are legacy read-only audits: they help inspect evidence snapshots, but they do not redefine the canonical gate verdict
|
|
326
|
+
- acceptance baseline helper: `npm run validation:consumer-matrix-baseline -- --repo-root /absolute/path/to/<fixture> --fixture <name> --rounds 3 --json`
|
|
327
|
+
- baseline outputs are written under `.audit-reports/fixture-matrix/<fixture>/consumer-menu-matrix-baseline/{report.json,summary.md}` and return exit `1` on drift
|
|
328
|
+
- baseline `report.json` also carries `status.policyValidation`, `status.experimentalFeatures`, `doctor.blocking`, and `doctor.layerSummary`
|
|
329
|
+
- validated acceptance snapshots on `2026-03-14`: `ios-architecture-showcase=stable YES`, `SAAS:APP_SUPERMERCADOS=stable YES`, `R_GO=stable YES`
|
|
324
330
|
|
|
325
|
-
## Optional
|
|
331
|
+
## Optional support toolkit
|
|
332
|
+
|
|
333
|
+
Primary namespace is `toolkit:*`. Legacy `validation:*` aliases remain only for compatibility.
|
|
326
334
|
|
|
327
335
|
Files:
|
|
328
336
|
|
|
@@ -340,16 +348,15 @@ Files:
|
|
|
340
348
|
|
|
341
349
|
Commands:
|
|
342
350
|
|
|
343
|
-
- `npm run
|
|
344
|
-
- `npm run
|
|
345
|
-
- `npm run
|
|
346
|
-
- `npm run
|
|
347
|
-
- `npm run
|
|
348
|
-
- `npm run
|
|
349
|
-
- `npm run
|
|
350
|
-
- `npm run validation:clean-artifacts`
|
|
351
|
+
- `npm run toolkit:adapter-readiness`
|
|
352
|
+
- `npm run toolkit:adapter-session-status`
|
|
353
|
+
- `npm run toolkit:adapter-real-session-report`
|
|
354
|
+
- `npm run toolkit:phase5-blockers-readiness`
|
|
355
|
+
- `npm run toolkit:phase5-execution-closure-status`
|
|
356
|
+
- `npm run toolkit:phase5-execution-closure`
|
|
357
|
+
- `npm run toolkit:clean-artifacts`
|
|
351
358
|
|
|
352
|
-
`
|
|
359
|
+
`toolkit:phase5-execution-closure` notes:
|
|
353
360
|
|
|
354
361
|
- defaults to output directory `.audit-reports/phase5`
|
|
355
362
|
- runs auth preflight and fails fast on auth/scope blockers
|
|
@@ -357,11 +364,23 @@ Commands:
|
|
|
357
364
|
|
|
358
365
|
Framework menu action:
|
|
359
366
|
|
|
360
|
-
- `
|
|
361
|
-
- `
|
|
362
|
-
- `
|
|
363
|
-
- `
|
|
364
|
-
|
|
367
|
+
- `Toolkit: build adapter readiness report`
|
|
368
|
+
- `Toolkit: build phase5 execution closure status report`
|
|
369
|
+
- `Toolkit: run phase5 execution closure`
|
|
370
|
+
- `Toolkit: clean local validation artifacts`
|
|
371
|
+
|
|
372
|
+
Frozen legacy support namespace:
|
|
373
|
+
|
|
374
|
+
- `npm run toolkit:legacy:phase5-external-handoff`
|
|
375
|
+
- `npm run toolkit:legacy:phase5-latest:refresh`
|
|
376
|
+
- `npm run toolkit:legacy:phase5-latest:ready-check`
|
|
377
|
+
- `npm run toolkit:legacy:phase5-escalation:prepare`
|
|
378
|
+
- `npm run toolkit:legacy:phase8:doctor`
|
|
379
|
+
- `npm run toolkit:legacy:phase8:close-ready`
|
|
380
|
+
|
|
381
|
+
Legacy advanced menu action:
|
|
382
|
+
|
|
383
|
+
- `Toolkit legacy: build phase5 external handoff report`
|
|
365
384
|
|
|
366
385
|
Deterministic argument builders exported from menu module:
|
|
367
386
|
|
|
@@ -74,13 +74,20 @@ Ownership model:
|
|
|
74
74
|
- CI and team members must evaluate the same committed contract files.
|
|
75
75
|
- User-home skill sources (`~/.codex/**`) are not runtime inputs for CI gate decisions.
|
|
76
76
|
|
|
77
|
-
Compile/check commands:
|
|
77
|
+
Compile/check commands in the Pumuki source workspace:
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
80
|
npm run skills:compile
|
|
81
81
|
npm run skills:lock:check
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
If you are validating an installed consumer package rather than the Pumuki source repo, invoke the packaged tool directly instead of assuming consumer-local `npm run skills:*` scripts:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npx --yes tsx@4.21.0 ./node_modules/pumuki/scripts/compile-skills-lock.ts
|
|
88
|
+
npx --yes tsx@4.21.0 ./node_modules/pumuki/scripts/compile-skills-lock.ts --check
|
|
89
|
+
```
|
|
90
|
+
|
|
84
91
|
CI guardrail:
|
|
85
92
|
|
|
86
93
|
- `.github/workflows/ci.yml` includes `Skills Lock Freshness` and fails when committed lock is stale.
|
|
@@ -109,39 +109,39 @@ npx tsx integrations/git/prePushBackend.cli.ts
|
|
|
109
109
|
npx tsx integrations/git/ciFrontend.cli.ts
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
##
|
|
112
|
+
## Support toolkit (optional)
|
|
113
113
|
|
|
114
|
-
Adapter diagnostics are intentionally outside the deterministic gate runtime.
|
|
114
|
+
Adapter diagnostics and rollout helpers are intentionally outside the deterministic gate runtime and outside the product baseline.
|
|
115
115
|
|
|
116
116
|
- They live under `scripts/*` and `docs/validation/*`.
|
|
117
117
|
- They do not change PRE_COMMIT/PRE_PUSH/CI outcomes.
|
|
118
|
-
- They support rollout diagnostics and incident triage.
|
|
118
|
+
- They support rollout diagnostics and incident triage as auxiliary toolkit.
|
|
119
119
|
|
|
120
120
|
Typical commands:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
npm run
|
|
123
|
+
npm run toolkit:adapter-readiness -- \
|
|
124
124
|
--adapter-report .audit-reports/adapter/adapter-real-session-report.md \
|
|
125
125
|
--out .audit-reports/adapter/adapter-readiness.md
|
|
126
126
|
|
|
127
|
-
npm run
|
|
127
|
+
npm run toolkit:adapter-session-status -- \
|
|
128
128
|
--out .audit-reports/adapter/adapter-session-status.md
|
|
129
129
|
|
|
130
|
-
npm run
|
|
130
|
+
npm run toolkit:adapter-real-session-report -- \
|
|
131
131
|
--status-report .audit-reports/adapter/adapter-session-status.md \
|
|
132
132
|
--out .audit-reports/adapter/adapter-real-session-report.md
|
|
133
133
|
|
|
134
|
-
npm run
|
|
134
|
+
npm run toolkit:phase5-blockers-readiness -- \
|
|
135
135
|
--consumer-triage-report .audit-reports/consumer-triage/consumer-startup-triage-report.md \
|
|
136
136
|
--out .audit-reports/phase5/phase5-blockers-readiness.md
|
|
137
137
|
|
|
138
|
-
npm run
|
|
138
|
+
npm run toolkit:phase5-execution-closure-status -- \
|
|
139
139
|
--phase5-blockers-report .audit-reports/phase5/phase5-blockers-readiness.md \
|
|
140
140
|
--consumer-unblock-report .audit-reports/consumer-triage/consumer-startup-unblock-status.md \
|
|
141
141
|
--out .audit-reports/phase5/phase5-execution-closure-status.md
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
Primary namespace is `toolkit:*`; legacy `validation:*` aliases remain only for compatibility. Current adapter readiness command still uses `--adapter-report` as the adapter input file flag.
|
|
145
145
|
|
|
146
146
|
### CI workflows
|
|
147
147
|
|
package/docs/product/TESTING.md
CHANGED
|
@@ -80,6 +80,34 @@ npm run test:saas-ingestion
|
|
|
80
80
|
npm run test:deterministic
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
## Release readiness del reset
|
|
84
|
+
|
|
85
|
+
Before deciding whether the reset is publishable, freeze this exact sequence:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npm run -s typecheck
|
|
89
|
+
npm run -s validation:contract-suite:enterprise
|
|
90
|
+
npm run -s validation:package-manifest
|
|
91
|
+
npm run -s validation:package-smoke
|
|
92
|
+
npm run -s validation:package-smoke:minimal
|
|
93
|
+
npm run -s validation:consumer-matrix-baseline -- --repo-root /Users/juancarlosmerlosalbarracin/Developer/Projects/ios-architecture-showcase --fixture ios-architecture-showcase --rounds 3 --json
|
|
94
|
+
npm run -s validation:consumer-matrix-baseline -- --repo-root "/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS" --fixture saas-app-supermercados --rounds 3 --json
|
|
95
|
+
npm run -s validation:consumer-matrix-baseline -- --repo-root /Users/juancarlosmerlosalbarracin/Developer/Projects/R_GO --fixture r_go --rounds 3 --json
|
|
96
|
+
git diff --check
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Publication rule:
|
|
100
|
+
|
|
101
|
+
- only publish from `release/<semver>` cut from `develop`
|
|
102
|
+
- do not publish while a framework-owned fixture failure or known false-positive blocking signal remains
|
|
103
|
+
- consumer-owned debt may remain only when it is explicitly classified and does not change the canonical framework verdict
|
|
104
|
+
|
|
105
|
+
Minimum rollback:
|
|
106
|
+
|
|
107
|
+
- revert to the previous stable `pumuki` semver
|
|
108
|
+
- repin affected consumers to that exact version
|
|
109
|
+
- rerun `status`, `doctor`, and the fixture baseline on the impacted consumer before declaring rollback complete
|
|
110
|
+
|
|
83
111
|
## CI alignment
|
|
84
112
|
|
|
85
113
|
Workflows rely on the same deterministic model and should remain consistent with local commands:
|
package/docs/product/USAGE.md
CHANGED
|
@@ -121,6 +121,12 @@ npx --yes --package pumuki@latest pumuki-framework
|
|
|
121
121
|
Menu starts in `Consumer` mode by default (focused operational options).
|
|
122
122
|
Use `A` to switch to `Advanced` mode (full options), and `C` to return to `Consumer`.
|
|
123
123
|
Advanced mode options include short inline contextual help.
|
|
124
|
+
Consumer mode is now a minimal read-only shell:
|
|
125
|
+
|
|
126
|
+
- `1/2/3/4` are the canonical read-only gate flows
|
|
127
|
+
- `8` exports the same evidence snapshot in markdown form
|
|
128
|
+
- `5/6/7/9` remain available only as `Legacy Read-Only Diagnostics`
|
|
129
|
+
|
|
124
130
|
If needed, you can start directly in advanced mode:
|
|
125
131
|
|
|
126
132
|
```bash
|
|
@@ -145,14 +151,16 @@ To avoid host-specific defaults for consumer diagnostics prompts, set:
|
|
|
145
151
|
export PUMUKI_CONSUMER_REPO_PATH=/absolute/path/to/consumer-repo
|
|
146
152
|
```
|
|
147
153
|
|
|
148
|
-
|
|
154
|
+
Advanced menu still exposes an auxiliary support toolkit (runtime diagnostics, consumer startup triage and phase5 closure helpers), but that toolkit is outside the product baseline and never required for PRE_COMMIT/PRE_PUSH/CI gate outcomes.
|
|
155
|
+
|
|
156
|
+
Advanced menu options `28/29/30/32` are legacy read-only audits. They remain available for diagnosis, but they are not part of the baseline gate shell and must not be interpreted as the canonical gate result.
|
|
149
157
|
|
|
150
|
-
|
|
158
|
+
Support toolkit actions are available from the interactive menu as:
|
|
151
159
|
|
|
152
|
-
- `
|
|
153
|
-
- `
|
|
154
|
-
- `
|
|
155
|
-
- `
|
|
160
|
+
- `Toolkit: build adapter readiness report`
|
|
161
|
+
- `Toolkit: build phase5 execution closure status report`
|
|
162
|
+
- `Toolkit: run phase5 execution closure`
|
|
163
|
+
- `Toolkit: clean local validation artifacts`
|
|
156
164
|
|
|
157
165
|
### 1.1) Non-interactive consumer matrix (1/2/3/4/9)
|
|
158
166
|
|
|
@@ -183,6 +191,31 @@ Diagnosis semantics:
|
|
|
183
191
|
- `violations-detected`: one or more findings were produced.
|
|
184
192
|
- `unknown`: evidence is missing/invalid or report normalization could not resolve status.
|
|
185
193
|
|
|
194
|
+
Repeated baseline for a real fixture:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npm run validation:consumer-matrix-baseline -- \
|
|
198
|
+
--repo-root /absolute/path/to/ios-architecture-showcase \
|
|
199
|
+
--fixture ios-architecture-showcase \
|
|
200
|
+
--rounds 3 \
|
|
201
|
+
--json
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
This command writes `report.json` and `summary.md` under `.audit-reports/fixture-matrix/<fixture>/consumer-menu-matrix-baseline/`.
|
|
205
|
+
Exit code is `0` when the repeated matrix stays stable and `1` when drift is detected across rounds.
|
|
206
|
+
The JSON snapshot also includes:
|
|
207
|
+
|
|
208
|
+
- `status.policyValidation`
|
|
209
|
+
- `status.experimentalFeatures`
|
|
210
|
+
- `doctor.blocking`
|
|
211
|
+
- `doctor.layerSummary` for `core`, `operational`, `integration`, `policy-pack`, and `experimental`
|
|
212
|
+
|
|
213
|
+
Real baselines validated on `2026-03-14`:
|
|
214
|
+
|
|
215
|
+
- `ios-architecture-showcase`: `stable=YES`, with deterministic matrix output across `3` rounds
|
|
216
|
+
- `SAAS:APP_SUPERMERCADOS`: `stable=YES`, `layerSummary={core:FAIL, operational:WARN, integration:FAIL, policy-pack:WARN, experimental:PASS}`
|
|
217
|
+
- `R_GO`: `stable=YES`, `layerSummary={core:PASS, operational:WARN, integration:PASS, policy-pack:WARN, experimental:PASS}`
|
|
218
|
+
|
|
186
219
|
Optional canary execution (controlled temporary violation + cleanup):
|
|
187
220
|
|
|
188
221
|
```bash
|
|
@@ -311,13 +344,20 @@ npx --yes pumuki adapter install --agent=codex --dry-run
|
|
|
311
344
|
npx --yes pumuki adapter install --agent=cursor
|
|
312
345
|
npm run adapter:install -- --agent=claude
|
|
313
346
|
|
|
314
|
-
# skills engine helpers
|
|
347
|
+
# skills engine helpers (inside the Pumuki source repo)
|
|
315
348
|
npm run skills:compile
|
|
316
349
|
npm run skills:lock:check
|
|
317
350
|
npm run skills:import:custom
|
|
318
351
|
npm run skills:import:custom -- --source /abs/path/to/SKILL.md --source ./skills/backend/SKILL.md
|
|
319
352
|
```
|
|
320
353
|
|
|
354
|
+
If you are operating from a consumer repository with the published package installed, do not assume `npm run skills:*` exists in the consumer. Use the packaged script directly instead:
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
npx --yes tsx@4.21.0 ./node_modules/pumuki/scripts/compile-skills-lock.ts
|
|
358
|
+
npx --yes tsx@4.21.0 ./node_modules/pumuki/scripts/compile-skills-lock.ts --check
|
|
359
|
+
```
|
|
360
|
+
|
|
321
361
|
`pumuki remove` is the enterprise-safe removal path because it performs lifecycle cleanup before package uninstall.
|
|
322
362
|
When no modules remain, it also prunes orphan `node_modules/.package-lock.json` residue.
|
|
323
363
|
Plain `npm uninstall pumuki` removes only the dependency; it does not remove managed hooks or lifecycle state.
|
|
@@ -570,56 +610,58 @@ Verificación post-rollback:
|
|
|
570
610
|
- `npx --yes pumuki analytics hotspots diagnose --json` puede quedar en `degraded` por artefactos ausentes.
|
|
571
611
|
- El flujo local de gate (`pre-write/pre-commit/pre-push/ci`) sigue operativo y no depende de publicación SaaS.
|
|
572
612
|
|
|
573
|
-
### 3)
|
|
613
|
+
### 3) Support toolkit reports (advanced-only, optional)
|
|
614
|
+
|
|
615
|
+
These commands are support tooling, not gate baseline. Primary namespace is `toolkit:*`; legacy `validation:*` aliases remain only for compatibility.
|
|
574
616
|
|
|
575
617
|
```bash
|
|
576
618
|
# Adapter-only readiness
|
|
577
619
|
# (current adapter implementation consumes --adapter-report as input path)
|
|
578
|
-
npm run
|
|
620
|
+
npm run toolkit:adapter-readiness -- \
|
|
579
621
|
--adapter-report .audit-reports/adapter/adapter-real-session-report.md \
|
|
580
622
|
--out .audit-reports/adapter/adapter-readiness.md
|
|
581
623
|
|
|
582
624
|
# Adapter runtime status/report aliases (provider-agnostic command naming)
|
|
583
|
-
npm run
|
|
625
|
+
npm run toolkit:adapter-session-status -- \
|
|
584
626
|
--out .audit-reports/adapter/adapter-session-status.md
|
|
585
627
|
|
|
586
|
-
npm run
|
|
628
|
+
npm run toolkit:adapter-real-session-report -- \
|
|
587
629
|
--status-report .audit-reports/adapter/adapter-session-status.md \
|
|
588
630
|
--out .audit-reports/adapter/adapter-real-session-report.md
|
|
589
631
|
|
|
590
632
|
# Phase 5 consolidated readiness (consumer triage required, adapter report optional by default)
|
|
591
|
-
npm run
|
|
633
|
+
npm run toolkit:phase5-blockers-readiness -- \
|
|
592
634
|
--consumer-triage-report .audit-reports/consumer-triage/consumer-startup-triage-report.md \
|
|
593
635
|
--out .audit-reports/phase5/phase5-blockers-readiness.md
|
|
594
636
|
|
|
595
637
|
# Phase 5 execution-closure status snapshot
|
|
596
|
-
npm run
|
|
638
|
+
npm run toolkit:phase5-execution-closure-status -- \
|
|
597
639
|
--phase5-blockers-report .audit-reports/phase5/phase5-blockers-readiness.md \
|
|
598
640
|
--consumer-unblock-report .audit-reports/consumer-triage/consumer-startup-unblock-status.md \
|
|
599
641
|
--out .audit-reports/phase5/phase5-execution-closure-status.md
|
|
600
642
|
|
|
601
643
|
# One-shot: run full Phase 5 execution-closure orchestration
|
|
602
|
-
npm run
|
|
644
|
+
npm run toolkit:phase5-execution-closure -- \
|
|
603
645
|
--repo <owner>/<repo> \
|
|
604
646
|
--out-dir .audit-reports/phase5 \
|
|
605
647
|
--skip-workflow-lint
|
|
606
648
|
|
|
607
649
|
# Local mock-consumer closure (no external GH dependency)
|
|
608
|
-
npm run
|
|
650
|
+
npm run toolkit:phase5-execution-closure -- \
|
|
609
651
|
--repo <owner>/<repo> \
|
|
610
652
|
--out-dir .audit-reports/phase5 \
|
|
611
653
|
--mock-consumer
|
|
612
654
|
|
|
613
655
|
# Optional: disable auth preflight fail-fast
|
|
614
|
-
npm run
|
|
656
|
+
npm run toolkit:phase5-execution-closure -- \
|
|
615
657
|
--repo <owner>/<repo> \
|
|
616
658
|
--out-dir .audit-reports/phase5 \
|
|
617
659
|
--skip-workflow-lint \
|
|
618
660
|
--skip-auth-preflight
|
|
619
661
|
|
|
620
662
|
# Optional: clean local generated validation artifacts
|
|
621
|
-
npm run
|
|
622
|
-
npm run
|
|
663
|
+
npm run toolkit:clean-artifacts
|
|
664
|
+
npm run toolkit:clean-artifacts -- --dry-run
|
|
623
665
|
```
|
|
624
666
|
|
|
625
667
|
## Scope behavior
|
|
@@ -13,13 +13,8 @@ Este directorio contiene solo documentación estable de validación y runbooks o
|
|
|
13
13
|
|
|
14
14
|
## Estado de seguimiento
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
- Histórico permitido: `docs/tracking/historico-validacion-ruralgo-03-03-2026.md`
|
|
19
|
-
|
|
20
|
-
## Histórico técnico conservado
|
|
21
|
-
|
|
22
|
-
- `docs/tracking/historico-contrato-aceptacion-c022.md`
|
|
16
|
+
- Fuente viva única: `PUMUKI-RESET-MASTER-PLAN.md`
|
|
17
|
+
- No se conservan MDs legacy de seguimiento en `docs/tracking/`.
|
|
23
18
|
|
|
24
19
|
## Política de higiene
|
|
25
20
|
|
|
@@ -34,4 +29,33 @@ Este directorio contiene solo documentación estable de validación y runbooks o
|
|
|
34
29
|
|
|
35
30
|
- Higiene hard del worktree propio: `npm run -s validation:self-worktree-hygiene`
|
|
36
31
|
- Suite contractual enterprise: `npm run -s validation:contract-suite:enterprise`
|
|
32
|
+
- Baseline repetible de fixture consumer: `npm run -s validation:consumer-matrix-baseline -- --repo-root /absolute/path/to/<fixture> --fixture <name> --rounds 3 --json`
|
|
33
|
+
- emite `report.json` + `summary.md` con `doctor_blocking` y `layerSummary`
|
|
34
|
+
- validado en `ios-architecture-showcase`, `SAAS:APP_SUPERMERCADOS` y `R_GO`
|
|
37
35
|
- Verificación de plan activo único + higiene hard del worktree propio: `npm run -s validation:tracking-single-active`
|
|
36
|
+
|
|
37
|
+
## Release readiness del reset
|
|
38
|
+
|
|
39
|
+
Secuencia mínima congelada antes de decidir una publicación útil:
|
|
40
|
+
|
|
41
|
+
- `npm run -s typecheck`
|
|
42
|
+
- `npm run -s validation:contract-suite:enterprise`
|
|
43
|
+
- `npm run -s validation:package-manifest`
|
|
44
|
+
- `npm run -s validation:package-smoke`
|
|
45
|
+
- `npm run -s validation:package-smoke:minimal`
|
|
46
|
+
- `npm run -s validation:consumer-matrix-baseline -- --repo-root /Users/juancarlosmerlosalbarracin/Developer/Projects/ios-architecture-showcase --fixture ios-architecture-showcase --rounds 3 --json`
|
|
47
|
+
- `npm run -s validation:consumer-matrix-baseline -- --repo-root "/Users/juancarlosmerlosalbarracin/Developer/Projects/SAAS:APP_SUPERMERCADOS" --fixture saas-app-supermercados --rounds 3 --json`
|
|
48
|
+
- `npm run -s validation:consumer-matrix-baseline -- --repo-root /Users/juancarlosmerlosalbarracin/Developer/Projects/R_GO --fixture r_go --rounds 3 --json`
|
|
49
|
+
- `git diff --check`
|
|
50
|
+
|
|
51
|
+
Regla de publicación:
|
|
52
|
+
|
|
53
|
+
- publicar solo desde `release/<semver>` cortada desde `develop`
|
|
54
|
+
- exigir checklist verde o hallazgos remanentes ya clasificados como deuda del consumer, nunca como bug del framework
|
|
55
|
+
- no publicar si reaparece un falso positivo blocking conocido o si un fixture necesita bypass manual
|
|
56
|
+
|
|
57
|
+
Rollback mínimo:
|
|
58
|
+
|
|
59
|
+
- volver al semver estable previo de `pumuki`
|
|
60
|
+
- repinear consumers afectados a esa versión exacta
|
|
61
|
+
- revalidar `status`, `doctor` y la baseline del consumer impactado antes de cerrar el incidente
|
|
@@ -208,7 +208,7 @@ export const checkSkillsLockStatus = (
|
|
|
208
208
|
if (!existsSync(lockPath)) {
|
|
209
209
|
return {
|
|
210
210
|
status: 'missing',
|
|
211
|
-
details: `${lockFile} is missing.
|
|
211
|
+
details: `${lockFile} is missing. Generate it with the installed Pumuki skills lock tool.`,
|
|
212
212
|
};
|
|
213
213
|
}
|
|
214
214
|
|