pumuki 6.3.39 → 6.3.40
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/README.md +21 -12
- package/VERSION +1 -1
- package/core/gate/evaluateRules.test.ts +40 -0
- package/core/gate/evaluateRules.ts +7 -1
- package/core/rules/Consequence.ts +1 -0
- package/docs/CONFIGURATION.md +50 -0
- package/docs/INSTALLATION.md +38 -11
- package/docs/MCP_SERVERS.md +1 -1
- package/docs/README.md +1 -0
- package/docs/RELEASE_NOTES.md +44 -0
- package/docs/USAGE.md +191 -9
- package/docs/registro-maestro-de-seguimiento.md +2 -2
- package/docs/seguimiento-activo-pumuki-saas-supermercados.md +1592 -1
- package/docs/validation/README.md +2 -1
- package/docs/validation/ast-intelligence-roadmap.md +96 -0
- package/integrations/config/skillsCustomRules.ts +14 -0
- package/integrations/config/skillsDetectorRegistry.ts +11 -1
- package/integrations/config/skillsLock.ts +30 -0
- package/integrations/config/skillsMarkdownRules.ts +14 -3
- package/integrations/config/skillsRuleSet.ts +25 -3
- package/integrations/evidence/readEvidence.test.ts +3 -2
- package/integrations/evidence/readEvidence.ts +14 -4
- package/integrations/evidence/repoState.ts +10 -2
- package/integrations/evidence/schema.test.ts +3 -2
- package/integrations/evidence/schema.ts +3 -0
- package/integrations/evidence/writeEvidence.test.ts +3 -2
- package/integrations/gate/evaluateAiGate.ts +511 -2
- package/integrations/git/GitService.ts +5 -1
- package/integrations/git/astIntelligenceDualValidation.ts +275 -0
- package/integrations/git/gitAtomicity.ts +42 -9
- package/integrations/git/resolveGitRefs.ts +37 -0
- package/integrations/git/runPlatformGate.ts +228 -1
- package/integrations/git/runPlatformGateEvaluation.ts +4 -0
- package/integrations/git/stageRunners.ts +116 -2
- package/integrations/lifecycle/cli.ts +759 -22
- package/integrations/lifecycle/doctor.ts +62 -0
- package/integrations/lifecycle/index.ts +1 -0
- package/integrations/lifecycle/packageInfo.ts +25 -3
- package/integrations/lifecycle/policyReconcile.ts +304 -0
- package/integrations/lifecycle/preWriteAutomation.ts +42 -2
- package/integrations/lifecycle/watch.ts +365 -0
- package/integrations/mcp/aiGateCheck.ts +59 -2
- package/integrations/mcp/autoExecuteAiStart.ts +25 -1
- package/integrations/mcp/preFlightCheck.ts +13 -0
- package/integrations/sdd/evidenceScaffold.ts +223 -0
- package/integrations/sdd/index.ts +2 -0
- package/integrations/sdd/stateSync.ts +400 -0
- package/integrations/sdd/syncDocs.ts +97 -2
- package/package.json +4 -1
- package/scripts/backlog-action-reasons-lib.ts +38 -0
- package/scripts/backlog-id-issue-map-lib.ts +69 -0
- package/scripts/backlog-json-contract-lib.ts +3 -0
- package/scripts/framework-menu-consumer-preflight-lib.ts +6 -0
- package/scripts/package-install-smoke-command-resolution-lib.ts +64 -0
- package/scripts/package-install-smoke-consumer-npm-lib.ts +43 -0
- package/scripts/package-install-smoke-consumer-repo-setup-lib.ts +2 -0
- package/scripts/package-install-smoke-execution-steps-lib.ts +27 -9
- package/scripts/package-install-smoke-lifecycle-lib.ts +15 -4
- package/scripts/package-install-smoke-workspace-factory-lib.ts +4 -1
- package/scripts/reconcile-consumer-backlog-issues-lib.ts +651 -0
- package/scripts/reconcile-consumer-backlog-issues.ts +348 -0
- package/scripts/watch-consumer-backlog-lib.ts +465 -0
- package/scripts/watch-consumer-backlog.ts +326 -0
package/README.md
CHANGED
|
@@ -32,11 +32,17 @@ Install and bootstrap:
|
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
npm install --save-exact pumuki
|
|
35
|
-
npx --yes pumuki
|
|
36
|
-
npx --yes pumuki doctor
|
|
35
|
+
npx --yes pumuki bootstrap --enterprise --agent=codex
|
|
37
36
|
npx --yes pumuki status
|
|
38
37
|
```
|
|
39
38
|
|
|
39
|
+
Fallback (equivalent in pasos separados):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx --yes pumuki install --with-mcp --agent=codex
|
|
43
|
+
npx --yes pumuki doctor --deep --json
|
|
44
|
+
```
|
|
45
|
+
|
|
40
46
|
OpenSpec/SDD baseline:
|
|
41
47
|
|
|
42
48
|
```bash
|
|
@@ -56,16 +62,16 @@ npx --yes pumuki loop list --json
|
|
|
56
62
|
Run local gates:
|
|
57
63
|
|
|
58
64
|
```bash
|
|
59
|
-
npx --yes pumuki-pre-write
|
|
60
|
-
npx --yes pumuki-pre-commit
|
|
65
|
+
npx --yes --package pumuki@latest pumuki-pre-write
|
|
66
|
+
npx --yes --package pumuki@latest pumuki-pre-commit
|
|
61
67
|
```
|
|
62
68
|
|
|
63
69
|
Run push/CI gates (requires proper git context):
|
|
64
70
|
|
|
65
71
|
```bash
|
|
66
72
|
git push --set-upstream origin <branch>
|
|
67
|
-
npx --yes pumuki-pre-push
|
|
68
|
-
npx --yes pumuki-ci
|
|
73
|
+
npx --yes --package pumuki@latest pumuki-pre-push
|
|
74
|
+
npx --yes --package pumuki@latest pumuki-ci
|
|
69
75
|
```
|
|
70
76
|
|
|
71
77
|
Expected behavior:
|
|
@@ -176,7 +182,7 @@ Example:
|
|
|
176
182
|
export PUMUKI_TELEMETRY_JSONL_PATH=".pumuki/artifacts/gate-telemetry.jsonl"
|
|
177
183
|
export PUMUKI_TELEMETRY_OTEL_ENDPOINT="https://otel.example/v1/logs"
|
|
178
184
|
export PUMUKI_TELEMETRY_OTEL_SERVICE_NAME="pumuki-enterprise"
|
|
179
|
-
npx --yes pumuki-pre-commit
|
|
185
|
+
npx --yes --package pumuki@latest pumuki-pre-commit
|
|
180
186
|
```
|
|
181
187
|
|
|
182
188
|
Each event captures deterministic stage/outcome/policy/repo context per gate execution.
|
|
@@ -258,16 +264,16 @@ npx --yes pumuki loop export --session=<session-id> --output-json=.audit-reports
|
|
|
258
264
|
### Stage Gates (Consumer)
|
|
259
265
|
|
|
260
266
|
```bash
|
|
261
|
-
npx --yes pumuki-pre-write
|
|
262
|
-
npx --yes pumuki-pre-commit
|
|
263
|
-
npx --yes pumuki-pre-push
|
|
264
|
-
npx --yes pumuki-ci
|
|
267
|
+
npx --yes --package pumuki@latest pumuki-pre-write
|
|
268
|
+
npx --yes --package pumuki@latest pumuki-pre-commit
|
|
269
|
+
npx --yes --package pumuki@latest pumuki-pre-push
|
|
270
|
+
npx --yes --package pumuki@latest pumuki-ci
|
|
265
271
|
```
|
|
266
272
|
|
|
267
273
|
### MCP Servers (Optional, Long-Running)
|
|
268
274
|
|
|
269
275
|
```bash
|
|
270
|
-
npx --yes pumuki-mcp-evidence
|
|
276
|
+
npx --yes --package pumuki@latest pumuki-mcp-evidence
|
|
271
277
|
npx --yes --package pumuki@latest pumuki-mcp-evidence-stdio
|
|
272
278
|
npx --yes --package pumuki@latest pumuki-mcp-enterprise
|
|
273
279
|
npx --yes --package pumuki@latest pumuki-mcp-enterprise-stdio
|
|
@@ -359,6 +365,8 @@ Highlights:
|
|
|
359
365
|
|
|
360
366
|
- Installation: `docs/INSTALLATION.md`
|
|
361
367
|
- Usage: `docs/USAGE.md`
|
|
368
|
+
- Backlog tooling quick nav (incluye snippet terminal): `docs/USAGE.md#backlog-tooling`
|
|
369
|
+
- Backlog reasons shared module: `docs/USAGE.md#backlog-reasons`
|
|
362
370
|
- Testing: `docs/TESTING.md`
|
|
363
371
|
- API reference: `docs/API_REFERENCE.md`
|
|
364
372
|
- Architecture: `docs/ARCHITECTURE.md`
|
|
@@ -382,6 +390,7 @@ Contributions are welcome. For high-quality collaboration:
|
|
|
382
390
|
3. Keep scope focused and include deterministic evidence when relevant.
|
|
383
391
|
4. Before opening a PR, run at least:
|
|
384
392
|
- `npm run typecheck`
|
|
393
|
+
- `npm run -s test:backlog-tooling`
|
|
385
394
|
- `npm run test:operational-memory`
|
|
386
395
|
- `npm run test:saas-ingestion`
|
|
387
396
|
5. Open a PR with clear problem statement, approach, and validation evidence.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v6.3.
|
|
1
|
+
v6.3.40
|
|
@@ -75,6 +75,46 @@ test('evaluateRules usa id de la regla como code cuando no se define en consecue
|
|
|
75
75
|
assert.equal(findings[0]?.severity, 'ERROR');
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
+
test('evaluateRules combina source del fact y source declarada por la regla', () => {
|
|
79
|
+
const rules: RuleSet = [
|
|
80
|
+
{
|
|
81
|
+
id: 'skills.backend.no-empty-catch',
|
|
82
|
+
description: 'Disallow empty catch blocks in backend runtime code.',
|
|
83
|
+
severity: 'ERROR',
|
|
84
|
+
when: {
|
|
85
|
+
kind: 'FileContent',
|
|
86
|
+
regex: ['catch\\s*\\{\\s*\\}'],
|
|
87
|
+
},
|
|
88
|
+
then: {
|
|
89
|
+
kind: 'Finding',
|
|
90
|
+
message: 'Disallow empty catch blocks in backend runtime code.',
|
|
91
|
+
code: 'SKILLS_BACKEND_NO_EMPTY_CATCH',
|
|
92
|
+
source:
|
|
93
|
+
'skills-ir:rule=skills.backend.no-empty-catch;source_skill=backend-guidelines;source_path=docs/codex-skills/windsurf-rules-backend.md;evaluation_mode=AUTO;ast_nodes=[heuristics.ts.empty-catch.ast]',
|
|
94
|
+
},
|
|
95
|
+
scope: {
|
|
96
|
+
include: ['apps/backend/'],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
const facts = [
|
|
101
|
+
{
|
|
102
|
+
kind: 'FileContent',
|
|
103
|
+
path: 'apps/backend/src/service.ts',
|
|
104
|
+
content: 'try { doStuff(); } catch {}',
|
|
105
|
+
source: 'git:staged',
|
|
106
|
+
},
|
|
107
|
+
] as const;
|
|
108
|
+
|
|
109
|
+
const findings = evaluateRules(rules, facts);
|
|
110
|
+
|
|
111
|
+
assert.equal(findings.length, 1);
|
|
112
|
+
assert.equal(
|
|
113
|
+
findings[0]?.source,
|
|
114
|
+
'git:staged|skills-ir:rule=skills.backend.no-empty-catch;source_skill=backend-guidelines;source_path=docs/codex-skills/windsurf-rules-backend.md;evaluation_mode=AUTO;ast_nodes=[heuristics.ts.empty-catch.ast]'
|
|
115
|
+
);
|
|
116
|
+
});
|
|
117
|
+
|
|
78
118
|
test('evaluateRules respeta scope y no genera hallazgo cuando no coincide', () => {
|
|
79
119
|
const rules: RuleSet = [
|
|
80
120
|
{
|
|
@@ -27,6 +27,12 @@ const toFinding = (
|
|
|
27
27
|
consequence: Consequence,
|
|
28
28
|
target?: FindingTarget
|
|
29
29
|
): Finding => {
|
|
30
|
+
const sourceParts = [
|
|
31
|
+
target?.source?.trim(),
|
|
32
|
+
consequence.source?.trim(),
|
|
33
|
+
].filter((part): part is string => typeof part === 'string' && part.length > 0);
|
|
34
|
+
const mergedSource = sourceParts.length > 0 ? sourceParts.join('|') : undefined;
|
|
35
|
+
|
|
30
36
|
return {
|
|
31
37
|
ruleId: rule.id,
|
|
32
38
|
severity: rule.severity,
|
|
@@ -34,7 +40,7 @@ const toFinding = (
|
|
|
34
40
|
message: consequence.message,
|
|
35
41
|
filePath: target?.filePath,
|
|
36
42
|
matchedBy: target?.matchedBy,
|
|
37
|
-
source:
|
|
43
|
+
source: mergedSource,
|
|
38
44
|
};
|
|
39
45
|
};
|
|
40
46
|
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -192,6 +192,7 @@ Behavior:
|
|
|
192
192
|
- `rule_updates`: deterministic recommendations derived from evidence/gate signals (`missing`, `invalid`, `blocked`, `allowed`).
|
|
193
193
|
- dedicated command: `pumuki sdd learn --change=<id> [--stage=<stage>] [--task=<task>] [--dry-run] [--json]` generates/persists the same artifact without requiring `sync-docs`.
|
|
194
194
|
- orchestration command: `pumuki sdd auto-sync --change=<id> [--stage=<stage>] [--task=<task>] [--dry-run] [--json]` executes deterministic docs sync plus learning generation in one step.
|
|
195
|
+
- safety limit: `--from-evidence` must resolve inside the repository root; path traversal/outside-repo paths are blocked.
|
|
195
196
|
|
|
196
197
|
## Gate telemetry export (optional)
|
|
197
198
|
|
|
@@ -241,6 +242,18 @@ PUMUKI_ENABLE_AST_HEURISTICS=true
|
|
|
241
242
|
|
|
242
243
|
When enabled, stage-based heuristic severity maturity applies via `applyHeuristicSeverityForStage`.
|
|
243
244
|
|
|
245
|
+
## AST Intelligence dual mode (legacy + nodos)
|
|
246
|
+
|
|
247
|
+
Controla la validación dual entre findings legacy y evaluación AST por nodos compilados desde `skills-ir`.
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
PUMUKI_AST_INTELLIGENCE_DUAL_MODE=off|shadow|strict
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
- `off` (default): desactivado.
|
|
254
|
+
- `shadow`: compara y reporta divergencias sin bloquear.
|
|
255
|
+
- `strict`: bloquea si hay divergencias (`false_positive/false_negative`) entre legacy y AST.
|
|
256
|
+
|
|
244
257
|
## Rule packs
|
|
245
258
|
|
|
246
259
|
Version map lives in `core/rules/presets/rulePackVersions.ts`.
|
|
@@ -265,6 +278,43 @@ Configuration outcomes are reflected in `.ai_evidence.json`:
|
|
|
265
278
|
|
|
266
279
|
Schema reference: `docs/evidence-v2.1.md`.
|
|
267
280
|
|
|
281
|
+
## AI Gate skills contract
|
|
282
|
+
|
|
283
|
+
`evaluateAiGate` now emits a machine-readable contract snapshot under `skills_contract`.
|
|
284
|
+
|
|
285
|
+
Contract goals:
|
|
286
|
+
|
|
287
|
+
- deterministic mapping: `detected platform -> required skills policy/rules`
|
|
288
|
+
- explicit coverage checks for `active_rule_ids` and `evaluated_rule_ids`
|
|
289
|
+
- stage-aware enforcement beyond PRE_WRITE (`PRE_COMMIT`, `PRE_PUSH`, `CI`)
|
|
290
|
+
|
|
291
|
+
Runtime fields:
|
|
292
|
+
|
|
293
|
+
- `skills_contract.stage`
|
|
294
|
+
- `skills_contract.status` (`PASS|FAIL|NOT_APPLICABLE`)
|
|
295
|
+
- `skills_contract.detected_platforms`
|
|
296
|
+
- `skills_contract.requirements[]`
|
|
297
|
+
- `skills_contract.violations[]`
|
|
298
|
+
|
|
299
|
+
Blocking code:
|
|
300
|
+
|
|
301
|
+
- `EVIDENCE_SKILLS_CONTRACT_INCOMPLETE` (when contract is incomplete outside PRE_WRITE)
|
|
302
|
+
|
|
303
|
+
## PRE_WRITE worktree hygiene guard
|
|
304
|
+
|
|
305
|
+
AI Gate can enforce early worktree hygiene in `PRE_WRITE` to reduce non-atomic changes before commit time.
|
|
306
|
+
|
|
307
|
+
Environment variables:
|
|
308
|
+
|
|
309
|
+
- `PUMUKI_PREWRITE_WORKTREE_HYGIENE_ENABLED` (`true|false`, default: `true`)
|
|
310
|
+
- `PUMUKI_PREWRITE_WORKTREE_WARN_THRESHOLD` (default: `12`)
|
|
311
|
+
- `PUMUKI_PREWRITE_WORKTREE_BLOCK_THRESHOLD` (default: `24`)
|
|
312
|
+
|
|
313
|
+
Codes emitted:
|
|
314
|
+
|
|
315
|
+
- `EVIDENCE_PREWRITE_WORKTREE_WARN` (warning, still `ALLOWED`)
|
|
316
|
+
- `EVIDENCE_PREWRITE_WORKTREE_OVER_LIMIT` (blocking error)
|
|
317
|
+
|
|
268
318
|
## TDD/BDD Vertical Enforcement Contract
|
|
269
319
|
|
|
270
320
|
For new/complex changes, Pumuki enforces a neutral TDD/BDD evidence contract.
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -45,10 +45,10 @@ If both commands pass, the workspace is ready.
|
|
|
45
45
|
npm install --save-exact pumuki
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
### 2)
|
|
48
|
+
### 2) Bootstrap managed lifecycle (recommended single command)
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
npx --yes pumuki
|
|
51
|
+
npx --yes pumuki bootstrap --enterprise --agent=codex
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Behavior:
|
|
@@ -56,11 +56,20 @@ Behavior:
|
|
|
56
56
|
- Auto-installs `@fission-ai/openspec@latest` when OpenSpec is missing/incompatible (when `package.json` exists).
|
|
57
57
|
- Scaffolds `openspec/` baseline if missing (`project` file plus archive/spec placeholders).
|
|
58
58
|
- Bootstraps `.ai_evidence.json` when missing (deterministic empty baseline with repo state snapshot).
|
|
59
|
+
- Scaffolds adapter wiring (`.pumuki/adapter.json` by default) and runs `doctor --deep` automatically.
|
|
60
|
+
|
|
61
|
+
Fallback (equivalent):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx --yes pumuki install --with-mcp --agent=codex
|
|
65
|
+
npx --yes pumuki doctor --deep --json
|
|
66
|
+
```
|
|
59
67
|
|
|
60
68
|
### 3) Verify lifecycle and SDD status
|
|
61
69
|
|
|
62
70
|
```bash
|
|
63
71
|
npx --yes pumuki doctor
|
|
72
|
+
npx --yes pumuki doctor --deep --json
|
|
64
73
|
npx --yes pumuki status
|
|
65
74
|
npx --yes pumuki sdd status
|
|
66
75
|
```
|
|
@@ -81,10 +90,10 @@ npx --yes pumuki sdd validate --stage=PRE_COMMIT
|
|
|
81
90
|
### 5) Run gates
|
|
82
91
|
|
|
83
92
|
```bash
|
|
84
|
-
npx --yes pumuki-pre-write
|
|
85
|
-
npx --yes pumuki-pre-commit
|
|
86
|
-
npx --yes pumuki-pre-push
|
|
87
|
-
npx --yes pumuki-ci
|
|
93
|
+
npx --yes --package pumuki@latest pumuki-pre-write
|
|
94
|
+
npx --yes --package pumuki@latest pumuki-pre-commit
|
|
95
|
+
npx --yes --package pumuki@latest pumuki-pre-push
|
|
96
|
+
npx --yes --package pumuki@latest pumuki-ci
|
|
88
97
|
```
|
|
89
98
|
|
|
90
99
|
`PRE_WRITE` JSON shape:
|
|
@@ -121,23 +130,23 @@ Consumer repositories do not have the `framework:menu` npm script by default.
|
|
|
121
130
|
Use the published binary instead:
|
|
122
131
|
|
|
123
132
|
```bash
|
|
124
|
-
npx --yes pumuki-framework
|
|
133
|
+
npx --yes --package pumuki@latest pumuki-framework
|
|
125
134
|
```
|
|
126
135
|
|
|
127
136
|
### Direct stage runners
|
|
128
137
|
|
|
129
138
|
```bash
|
|
130
139
|
# PRE_WRITE
|
|
131
|
-
npx --yes pumuki-pre-write
|
|
140
|
+
npx --yes --package pumuki@latest pumuki-pre-write
|
|
132
141
|
|
|
133
142
|
# PRE_COMMIT
|
|
134
|
-
npx --yes pumuki-pre-commit
|
|
143
|
+
npx --yes --package pumuki@latest pumuki-pre-commit
|
|
135
144
|
|
|
136
145
|
# PRE_PUSH
|
|
137
|
-
npx --yes pumuki-pre-push
|
|
146
|
+
npx --yes --package pumuki@latest pumuki-pre-push
|
|
138
147
|
|
|
139
148
|
# CI
|
|
140
|
-
npx --yes pumuki-ci
|
|
149
|
+
npx --yes --package pumuki@latest pumuki-ci
|
|
141
150
|
```
|
|
142
151
|
|
|
143
152
|
## Lifecycle + SDD commands
|
|
@@ -241,3 +250,21 @@ Then reopen/refresh active session:
|
|
|
241
250
|
npx --yes pumuki sdd session --open --change=<change-id>
|
|
242
251
|
npx --yes pumuki sdd session --refresh
|
|
243
252
|
```
|
|
253
|
+
|
|
254
|
+
### Hooks/adapter use fragile `npx` binary resolution
|
|
255
|
+
|
|
256
|
+
Run deep doctor diagnostics and verify `adapter-wiring`:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
npx --yes pumuki doctor --deep --json
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
If doctor reports fragile commands in adapter wiring, repair with:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
npx --yes pumuki adapter install --agent=codex
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Notes for repos with `:` in path:
|
|
269
|
+
- Avoid adapter/hook commands that mutate `PATH` inline (for example `PATH="...:$PATH" npx ...`).
|
|
270
|
+
- Prefer generated commands from `pumuki adapter install` (local bin / local node entry / `npx --package` fallback).
|
package/docs/MCP_SERVERS.md
CHANGED
|
@@ -21,7 +21,7 @@ npm run mcp:enterprise
|
|
|
21
21
|
### Desde un repositorio consumidor
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npx --yes pumuki-mcp-evidence
|
|
24
|
+
npx --yes --package pumuki@latest pumuki-mcp-evidence
|
|
25
25
|
npx --yes --package pumuki@latest pumuki-mcp-enterprise
|
|
26
26
|
npx --yes --package pumuki@latest pumuki-mcp-enterprise-stdio
|
|
27
27
|
```
|
package/docs/README.md
CHANGED
|
@@ -48,6 +48,7 @@ Canonical index for active Pumuki documentation.
|
|
|
48
48
|
|
|
49
49
|
- `docs/validation/README.md`: enterprise minimal validation index.
|
|
50
50
|
- `docs/validation/adapter-hook-runtime-validation.md`
|
|
51
|
+
- `docs/validation/ast-intelligence-roadmap.md`
|
|
51
52
|
- `docs/validation/c022-phase-acceptance-contract.md`
|
|
52
53
|
- `docs/validation/enterprise-consumer-isolation-policy.md`
|
|
53
54
|
- `docs/validation/mock-consumer-integration-runbook.md`
|
package/docs/RELEASE_NOTES.md
CHANGED
|
@@ -5,6 +5,50 @@ Detailed commit history remains available through Git history (`git log` / `git
|
|
|
5
5
|
|
|
6
6
|
## 2026-03 (enterprise hardening updates)
|
|
7
7
|
|
|
8
|
+
### 2026-03-05 (v6.3.40)
|
|
9
|
+
|
|
10
|
+
- AST Intelligence dual validation PoC (`#616`) integrado en gate:
|
|
11
|
+
- runtime mode: `PUMUKI_AST_INTELLIGENCE_DUAL_MODE=off|shadow|strict`.
|
|
12
|
+
- `shadow`: comparación legacy vs AST por nodos sin bloqueo.
|
|
13
|
+
- `strict`: bloqueo cuando hay divergencias.
|
|
14
|
+
- métricas en runtime: `mapped_rules`, `divergences`, `false_positives`, `false_negatives`, `latency_ms`, `languages`.
|
|
15
|
+
- Señales de gate añadidas:
|
|
16
|
+
- `governance.ast-intelligence.dual-validation.shadow`
|
|
17
|
+
- `governance.ast-intelligence.dual-validation.mismatch`
|
|
18
|
+
- Backlog tooling (`watch/reconcile`) amplía contrato JSON en `next_commands[]`:
|
|
19
|
+
- nuevo campo `probe_kind` (`json_contract` | `state_recheck`) para tipar verificación post-ejecución.
|
|
20
|
+
- Correcciones de robustez operativa en consumidores reales:
|
|
21
|
+
- `PRE_PUSH` detecta upstream desalineado antes de evaluar scope coverage (evita falsos positivos de plataforma por delta contaminado).
|
|
22
|
+
- smoke de instalación local hace fallback cuando `npx --no-install` falla por `MODULE_NOT_FOUND`.
|
|
23
|
+
- `ai_gate_check` unifica hint de precedencia para códigos legacy `EVIDENCE_*` (incluye `EVIDENCE_INTEGRITY_MISSING`).
|
|
24
|
+
- RFC y plan de rollout/rollback:
|
|
25
|
+
- `docs/validation/ast-intelligence-roadmap.md`.
|
|
26
|
+
- Evidencia de validación:
|
|
27
|
+
- `npx --yes tsx@4.21.0 --test scripts/__tests__/backlog-cli-help-exit-code.test.ts` (`11 pass / 0 fail`)
|
|
28
|
+
- `npm run -s typecheck` (`PASS`)
|
|
29
|
+
- `npm run -s test:stage-gates` (`1033 pass / 0 fail / 4 skip`)
|
|
30
|
+
|
|
31
|
+
### 2026-03-04 (next cut candidate, post v6.3.39)
|
|
32
|
+
|
|
33
|
+
- Gate coverage hardening for SAAS backlog (`#622`):
|
|
34
|
+
- when code changes are present and `active_rule_ids` is empty, gate now blocks with:
|
|
35
|
+
- finding id: `governance.rules.active-rule-coverage.empty`
|
|
36
|
+
- code: `ACTIVE_RULE_IDS_EMPTY_FOR_CODE_CHANGES_HIGH`
|
|
37
|
+
- iOS test quality hardening for SAAS backlog (`#623`):
|
|
38
|
+
- for XCTest sources in `apps/ios/**/Tests/**.swift`, gate now requires:
|
|
39
|
+
- `makeSUT()`
|
|
40
|
+
- `trackForMemoryLeaks()`
|
|
41
|
+
- blocking signal:
|
|
42
|
+
- finding id: `governance.skills.ios-test-quality.incomplete`
|
|
43
|
+
- code: `IOS_TEST_QUALITY_PATTERN_MISSING_HIGH`
|
|
44
|
+
- Gate traceability consistency:
|
|
45
|
+
- fixed propagation of guard findings to `effectiveFindings` so `BLOCK` outcomes are always accompanied by explicit finding payload.
|
|
46
|
+
- Validation evidence:
|
|
47
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/runPlatformGate.test.ts` (`32 pass / 0 fail`)
|
|
48
|
+
- `npx --yes tsx@4.21.0 --test integrations/git/__tests__/stageRunners.test.ts` (`21 pass / 0 fail`)
|
|
49
|
+
- `npm run -s typecheck` (`PASS`)
|
|
50
|
+
- `npm run -s test:stage-gates` (`1024 pass / 0 fail / 4 skip`)
|
|
51
|
+
|
|
8
52
|
### 2026-03-04 (v6.3.39)
|
|
9
53
|
|
|
10
54
|
- Adapter/runtime bootstrap hardening:
|