pumuki 6.3.376 → 6.3.378
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
CHANGED
|
@@ -1,390 +1,613 @@
|
|
|
1
1
|
# Pumuki
|
|
2
2
|
|
|
3
|
-
<
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="assets/logo_banner.png" alt="Pumuki" width="100%" />
|
|
5
|
+
</p>
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/pumuki"><img src="https://img.shields.io/npm/v/pumuki?color=1d4ed8" alt="npm version" /></a>
|
|
9
|
+
<a href="https://github.com/SwiftEnProfundidad/ast-intelligence-hooks/actions/workflows/ci.yml"><img src="https://github.com/SwiftEnProfundidad/ast-intelligence-hooks/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
10
|
+
<img src="https://img.shields.io/node/v/pumuki" alt="Node.js version" />
|
|
11
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-16a34a" alt="License: MIT" /></a>
|
|
12
|
+
</p>
|
|
8
13
|
|
|
9
|
-
|
|
14
|
+
Pumuki is an enterprise governance framework for AI-assisted software delivery.
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
It turns repository rules, SDD/OpenSpec workflow, Git hooks, AST intelligence, skills contracts, evidence, notifications, an interactive menu and optional MCP servers into one deterministic delivery contract:
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
```text
|
|
19
|
+
Facts -> Rules -> Gate -> Evidence
|
|
20
|
+
```
|
|
14
21
|
|
|
15
|
-
|
|
22
|
+
Pumuki is built for teams that need AI agents and humans to follow the same engineering law: know the active change, evaluate the real diff, block unsafe delivery, explain the reason in developer language, and leave auditable evidence.
|
|
16
23
|
|
|
17
|
-
|
|
18
|
-
- **No** sustituye tests de dominio, contratos de API ni E2E: el gate ayuda a **cumplir políticas y evidencias**; la calidad funcional la define tu equipo con pruebas y criterios de aceptación.
|
|
19
|
-
- **No** garantiza por sí solo “un producto excelente”: sin reglas de equipo, revisión humana y criterios claros, solo obtienes **cumplimiento de lo que configuraste**.
|
|
24
|
+
Current maturity: **advanced beta**. The framework is already useful for governed internal adoption and consumer-repository rollout, but the project is still evolving quickly.
|
|
20
25
|
|
|
21
|
-
##
|
|
26
|
+
## Contents
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
- [Why Pumuki Exists](#why-pumuki-exists)
|
|
29
|
+
- [What Pumuki Does](#what-pumuki-does)
|
|
30
|
+
- [Architecture](#architecture)
|
|
31
|
+
- [Quick Start](#quick-start)
|
|
32
|
+
- [Installation](#installation)
|
|
33
|
+
- [Uninstallation and Upgrade](#uninstallation-and-upgrade)
|
|
34
|
+
- [Command Reference](#command-reference)
|
|
35
|
+
- [Git Hooks and CI](#git-hooks-and-ci)
|
|
36
|
+
- [SDD and OpenSpec](#sdd-and-openspec)
|
|
37
|
+
- [Session Continuity and AI Window Handoff](#session-continuity-and-ai-window-handoff)
|
|
38
|
+
- [AST Intelligence and Rule Packs](#ast-intelligence-and-rule-packs)
|
|
39
|
+
- [Evidence](#evidence)
|
|
40
|
+
- [Menu and Notifications](#menu-and-notifications)
|
|
41
|
+
- [MCP and Agent Adapters](#mcp-and-agent-adapters)
|
|
42
|
+
- [Enterprise Operations](#enterprise-operations)
|
|
43
|
+
- [Adoption Models](#adoption-models)
|
|
44
|
+
- [Troubleshooting](#troubleshooting)
|
|
45
|
+
- [Documentation](#documentation)
|
|
46
|
+
- [Contributing](#contributing)
|
|
47
|
+
- [License](#license)
|
|
28
48
|
|
|
29
|
-
##
|
|
49
|
+
## Why Pumuki Exists
|
|
30
50
|
|
|
31
|
-
|
|
51
|
+
AI-assisted development increases delivery speed, but it also increases the risk of ungoverned changes: skipped tests, missing specs, vague evidence, mixed commits, stale repo context, unsafe hooks, and rules that live only in documentation.
|
|
32
52
|
|
|
33
|
-
|
|
34
|
-
|--------|-------------------------|-------------------|-----------------|
|
|
35
|
-
| **Mínimo** | `npm install --save-exact pumuki` (en repos Git el `postinstall` ejecuta baseline `pumuki install`; `--with-mcp --agent=repo` es opt-in con `PUMUKI_POSTINSTALL_WITH_MCP=1` o `PUMUKI_POSTINSTALL_MCP_AGENT=repo`). | Hooks Git: **PRE_COMMIT**, **PRE_PUSH**; cadena **PRE_WRITE** cuando el hook lo encadena (según versión y config). | Evidencia [`.ai_evidence.json` v2.1](docs/mcp/ai-evidence-v2.1-contract.md); reglas core embebidas. |
|
|
36
|
-
| **Estándar** | Lo anterior + flujo **OpenSpec/SDD** bajo `openspec/` según tu política. | Lo anterior + validación SDD por stage (`pumuki sdd validate --stage=…`). | Sesiones SDD, cambios versionados bajo `openspec/changes/`. |
|
|
37
|
-
| **Enterprise completo** | `pumuki bootstrap --enterprise` (o equivalente documentado) + `skills.lock.json` / reglas custom / [policy-as-code](docs/product/CONFIGURATION.md) donde aplique. | Lo anterior + **CI** (`pumuki-ci`) y comprobaciones de alineación (`doctor`, parity). | [Skills / MCP](docs/mcp/mcp-servers-overview.md), `pumuki doctor --parity`, notificaciones, [hard mode](docs/product/CONFIGURATION.md). |
|
|
53
|
+
Pumuki makes those rules executable.
|
|
38
54
|
|
|
39
|
-
|
|
55
|
+
It is designed to answer operational questions before a change enters the repository:
|
|
40
56
|
|
|
41
|
-
|
|
57
|
+
| Question | Pumuki answer |
|
|
58
|
+
|---|---|
|
|
59
|
+
| What is being changed? | Git scope, SDD context and repository facts. |
|
|
60
|
+
| Which rules apply? | Platform rule packs, skills contracts, policy-as-code and project overrides. |
|
|
61
|
+
| Can this change proceed? | Deterministic gate decision per stage. |
|
|
62
|
+
| Why was it blocked? | Developer-facing cause, file, rule and remediation. |
|
|
63
|
+
| What evidence remains? | `.ai_evidence.json` v2.1 plus optional MCP/telemetry access. |
|
|
42
64
|
|
|
43
|
-
|
|
65
|
+
Pumuki does not replace product tests, code review, domain acceptance criteria or security review. It enforces the delivery contract around them.
|
|
44
66
|
|
|
45
|
-
|
|
67
|
+
## What Pumuki Does
|
|
46
68
|
|
|
47
|
-
|
|
48
|
-
2. **`npx pumuki status --json`** — Estado resumido del menú/lifecycle y alineación de versión. Detalle: [USAGE](docs/product/USAGE.md).
|
|
49
|
-
3. **`npx pumuki install`** (o deja que el `postinstall` lo ejecute en Git) — Hooks y lifecycle en el repo. Detalle: [INSTALLATION](docs/product/INSTALLATION.md).
|
|
50
|
-
4. **Gates locales** — `npx pumuki-pre-write`, `npx pumuki-pre-commit` (y `pumuki-pre-push` cuando toque push). Detalle: [USAGE](docs/product/USAGE.md), [Troubleshooting (USAGE)](docs/product/USAGE.md#troubleshooting).
|
|
51
|
-
5. **SDD por stage (enterprise)** — `npx pumuki sdd validate --stage=PRE_COMMIT` (u otro stage). Detalle: [USAGE](docs/product/USAGE.md), [INSTALLATION](docs/product/INSTALLATION.md#troubleshooting) si falla el bootstrap.
|
|
69
|
+
Pumuki provides a governed delivery surface for modern repositories:
|
|
52
70
|
|
|
53
|
-
|
|
71
|
+
| Capability | What it provides |
|
|
72
|
+
|---|---|
|
|
73
|
+
| Git lifecycle | Managed `pre-commit` and `pre-push` hooks, with chained `PRE_WRITE` by default. |
|
|
74
|
+
| Stage gates | `PRE_WRITE`, `PRE_COMMIT`, `PRE_PUSH` and `CI` policies with deterministic semantics. |
|
|
75
|
+
| Full audit | `pumuki audit` for tracked-repository evaluation outside a hook. |
|
|
76
|
+
| SDD/OpenSpec | Change sessions, validation, evidence sync and state sync. |
|
|
77
|
+
| Session continuity | Repo-owned context, SDD state, evidence and MCP resources so a new AI window can resume from facts instead of chat memory. |
|
|
78
|
+
| AST intelligence | Rule-backed findings for iOS, Android, backend, frontend and generic TypeScript patterns. |
|
|
79
|
+
| Skills contracts | Compiled rules from enterprise skills, with coverage checks and missing-detector protection. |
|
|
80
|
+
| Evidence | Stable `.ai_evidence.json` v2.1 snapshots for auditability and automation. |
|
|
81
|
+
| Developer UX | Interactive menu, clear blocking messages, terminal output and system notifications. |
|
|
82
|
+
| MCP | Optional evidence and enterprise MCP servers over HTTP or stdio. |
|
|
83
|
+
| Adapters | Provider-agnostic adapter scaffolding for Codex, Claude, Cursor, Windsurf and Opencode. |
|
|
84
|
+
| Policy-as-code | Optional signed stage-policy contract under `.pumuki/policy-as-code.json`. |
|
|
85
|
+
| Telemetry | Optional JSONL and OTLP export for enterprise observability. |
|
|
86
|
+
| Brownfield control | Scope-aware gates that avoid blocking a slice for unrelated historical debt. |
|
|
87
|
+
|
|
88
|
+
## Architecture
|
|
89
|
+
|
|
90
|
+
<p align="center">
|
|
91
|
+
<img src="assets/readme/pumuki-governance-flow.svg" alt="Pumuki governance flow" width="100%" />
|
|
92
|
+
</p>
|
|
93
|
+
|
|
94
|
+
Pumuki keeps product decisions deterministic by separating domain logic from integrations:
|
|
95
|
+
|
|
96
|
+
| Layer | Responsibility |
|
|
97
|
+
|---|---|
|
|
98
|
+
| `core/*` | Facts, rules, rule presets and gate decision model. |
|
|
99
|
+
| `integrations/*` | Git scopes, stage policies, evidence, SDD, MCP, notifications and lifecycle adapters. |
|
|
100
|
+
| `bin/*` | Public CLI binaries published by npm. |
|
|
101
|
+
| `docs/*` | Product documentation, operation guides, MCP contracts and rule-pack references. |
|
|
102
|
+
| `vendor/skills/*` | Vendored enterprise skill contracts consumed by the rules compiler. |
|
|
103
|
+
|
|
104
|
+
Core pipeline:
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
Git scope / repo state
|
|
108
|
+
-> fact extraction
|
|
109
|
+
-> platform detection
|
|
110
|
+
-> rule-pack and skills loading
|
|
111
|
+
-> stage policy evaluation
|
|
112
|
+
-> gate decision
|
|
113
|
+
-> evidence, notification and optional MCP/telemetry output
|
|
114
|
+
```
|
|
54
115
|
|
|
55
|
-
|
|
116
|
+
Pumuki is IDE-agnostic at baseline. Git hooks, gates, lifecycle, evidence and policy enforcement do not require Cursor, Codex, Claude or any other IDE. IDE/client files are opt-in adapter output.
|
|
56
117
|
|
|
57
|
-
##
|
|
118
|
+
## Quick Start
|
|
58
119
|
|
|
59
120
|
Prerequisites:
|
|
60
121
|
|
|
61
|
-
- Node.js `>=
|
|
62
|
-
- npm `>=
|
|
122
|
+
- Node.js `>=18`
|
|
123
|
+
- npm `>=9`
|
|
63
124
|
- Git repository
|
|
64
125
|
|
|
65
|
-
Install
|
|
126
|
+
Install Pumuki in a consumer repository:
|
|
66
127
|
|
|
67
128
|
```bash
|
|
68
129
|
npm install --save-exact pumuki
|
|
69
|
-
npx --yes pumuki bootstrap --enterprise
|
|
70
|
-
npx --yes pumuki status
|
|
71
|
-
npx --yes pumuki doctor --json
|
|
130
|
+
npx --yes pumuki bootstrap --enterprise
|
|
131
|
+
npx --yes pumuki status --json
|
|
132
|
+
npx --yes pumuki doctor --deep --json
|
|
72
133
|
```
|
|
73
134
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
Fallback (equivalent in pasos separados):
|
|
135
|
+
After bootstrap, the normal developer path is intentionally small:
|
|
77
136
|
|
|
78
137
|
```bash
|
|
79
|
-
|
|
80
|
-
|
|
138
|
+
git add <files>
|
|
139
|
+
git commit
|
|
140
|
+
git push
|
|
81
141
|
```
|
|
82
142
|
|
|
83
|
-
|
|
143
|
+
Managed hooks run the required Pumuki lifecycle automatically. Teams only reach for explicit commands when they need setup, diagnostics, CI wiring, SDD evidence, MCP servers or operational recovery.
|
|
144
|
+
|
|
145
|
+
Open a governed SDD change session when the repository requires explicit SDD/OpenSpec control:
|
|
84
146
|
|
|
85
147
|
```bash
|
|
86
148
|
npx --yes pumuki sdd status
|
|
87
|
-
mkdir -p openspec/changes/<change-id>
|
|
88
149
|
npx --yes pumuki sdd session --open --change=<change-id>
|
|
89
|
-
npx --yes pumuki sdd validate --stage=PRE_COMMIT
|
|
150
|
+
npx --yes pumuki sdd validate --stage=PRE_COMMIT --json
|
|
90
151
|
```
|
|
91
152
|
|
|
92
|
-
|
|
153
|
+
Run a full tracked-repository audit only for diagnostics or governance reporting:
|
|
93
154
|
|
|
94
155
|
```bash
|
|
95
|
-
npx --yes pumuki
|
|
96
|
-
npx --yes pumuki
|
|
156
|
+
npx --yes pumuki audit --json
|
|
157
|
+
npx --yes pumuki audit --stage=CI --engine --json
|
|
97
158
|
```
|
|
98
159
|
|
|
99
|
-
|
|
160
|
+
## Installation
|
|
161
|
+
|
|
162
|
+
### Consumer Repository
|
|
163
|
+
|
|
164
|
+
Recommended enterprise path:
|
|
100
165
|
|
|
101
166
|
```bash
|
|
102
|
-
|
|
103
|
-
npx --yes
|
|
167
|
+
npm install --save-exact pumuki
|
|
168
|
+
npx --yes pumuki bootstrap --enterprise
|
|
104
169
|
```
|
|
105
170
|
|
|
106
|
-
|
|
171
|
+
What the bootstrap path does:
|
|
172
|
+
|
|
173
|
+
- installs managed Git hooks;
|
|
174
|
+
- configures lifecycle state;
|
|
175
|
+
- creates `.pumuki/adapter.json` when missing;
|
|
176
|
+
- prepares OpenSpec/SDD baseline where applicable;
|
|
177
|
+
- initializes evidence when missing;
|
|
178
|
+
- runs deep diagnostics.
|
|
179
|
+
|
|
180
|
+
The package `postinstall` runs a baseline `pumuki install` in Git repositories unless disabled. That baseline is IDE-agnostic: hooks, lifecycle and `.pumuki/adapter.json` are the default product surface.
|
|
181
|
+
|
|
182
|
+
Useful postinstall controls:
|
|
183
|
+
|
|
184
|
+
| Variable | Effect |
|
|
185
|
+
|---|---|
|
|
186
|
+
| `PUMUKI_SKIP_POSTINSTALL=1` | Disable postinstall bootstrap. |
|
|
187
|
+
| `PUMUKI_POSTINSTALL_WITH_MCP=1` | Include MCP wiring during postinstall. |
|
|
188
|
+
| `PUMUKI_POSTINSTALL_MCP_AGENT=<agent>` | Select optional adapter/client wiring for postinstall. |
|
|
189
|
+
| `PUMUKI_SKIP_CHAINED_PRE_WRITE=1` | Skip chained `PRE_WRITE` inside managed hooks. |
|
|
190
|
+
|
|
191
|
+
### Framework Repository
|
|
192
|
+
|
|
193
|
+
For maintainers of this repository:
|
|
107
194
|
|
|
108
195
|
```bash
|
|
109
|
-
git
|
|
110
|
-
|
|
111
|
-
|
|
196
|
+
git clone https://github.com/SwiftEnProfundidad/ast-intelligence-hooks.git
|
|
197
|
+
cd ast-intelligence-hooks
|
|
198
|
+
npm ci
|
|
199
|
+
npm run -s typecheck
|
|
200
|
+
npm run -s test:deterministic
|
|
112
201
|
```
|
|
113
202
|
|
|
114
|
-
|
|
203
|
+
## Uninstallation and Upgrade
|
|
115
204
|
|
|
116
|
-
|
|
117
|
-
- `PRE_PUSH`: blocks if branch has no upstream tracking reference.
|
|
118
|
-
- `CI`: requires a valid diff range context (not `HEAD..HEAD` with ambiguous range).
|
|
205
|
+
Plain npm removal only removes the dependency. It does not remove managed lifecycle state.
|
|
119
206
|
|
|
120
|
-
|
|
207
|
+
| Goal | Command |
|
|
208
|
+
|---|---|
|
|
209
|
+
| Remove managed hooks and purge runtime artifacts | `npx --yes pumuki uninstall --purge-artifacts` |
|
|
210
|
+
| Remove lifecycle and dependency from package manifests | `npx --yes pumuki remove` |
|
|
211
|
+
| Update to latest package and reapply hooks | `npx --yes pumuki update --latest` |
|
|
212
|
+
| Standard npm dependency removal only | `npm uninstall pumuki` |
|
|
121
213
|
|
|
122
|
-
|
|
123
|
-
- If `driftWarning` is not `null`, prefer the exact command already exposed in `version.alignmentCommand`.
|
|
124
|
-
- If `pathExecutionHazard` is `true`, avoid `npx/npm exec` for the install step and use the safe local workaround reported by Pumuki, for example:
|
|
214
|
+
Recommended upgrade check:
|
|
125
215
|
|
|
126
216
|
```bash
|
|
127
|
-
|
|
217
|
+
npm install --save-exact pumuki@latest
|
|
218
|
+
npx --yes pumuki status --json
|
|
219
|
+
npx --yes pumuki doctor --deep --json
|
|
220
|
+
npx --yes pumuki policy reconcile --strict --json
|
|
128
221
|
```
|
|
129
222
|
|
|
130
|
-
|
|
223
|
+
If `status` or `doctor` reports version drift, use the `alignmentCommand` printed in the JSON payload.
|
|
224
|
+
|
|
225
|
+
## Command Reference
|
|
226
|
+
|
|
227
|
+
The main lifecycle binary is `pumuki`. This section is an operator reference, not the expected daily developer workflow. The intended enterprise path is progressive disclosure:
|
|
228
|
+
|
|
229
|
+
1. `bootstrap` once per repository.
|
|
230
|
+
2. work through normal Git operations.
|
|
231
|
+
3. let managed hooks, CI and policy decide automatically.
|
|
232
|
+
4. use explicit commands only for diagnostics, evidence, adapters, SDD operations or automation.
|
|
233
|
+
|
|
234
|
+
```text
|
|
235
|
+
pumuki --version | -v
|
|
236
|
+
pumuki bootstrap [--enterprise] [--agent=<name>] [--json]
|
|
237
|
+
pumuki install [--with-mcp] [--agent=<name>]
|
|
238
|
+
pumuki uninstall [--purge-artifacts]
|
|
239
|
+
pumuki remove
|
|
240
|
+
pumuki update [--latest|--spec=<package-spec>]
|
|
241
|
+
pumuki doctor [--remote-checks] [--deep] [--parity] [--json]
|
|
242
|
+
pumuki audit [--stage=PRE_WRITE|PRE_COMMIT|PRE_PUSH|CI] [--engine] [--json]
|
|
243
|
+
pumuki status [--json] [--remote-checks]
|
|
244
|
+
pumuki menu
|
|
245
|
+
pumuki watch [--stage=<stage>] [--scope=<scope>] [--once] [--json]
|
|
246
|
+
pumuki loop run --objective=<text> [--max-attempts=<n>] [--json]
|
|
247
|
+
pumuki adapter install --agent=<name> [--dry-run] [--json]
|
|
248
|
+
pumuki analytics hotspots report [--top=<n>] [--since-days=<n>] [--json]
|
|
249
|
+
pumuki analytics hotspots diagnose [--json]
|
|
250
|
+
pumuki policy reconcile [--strict] [--apply] [--json]
|
|
251
|
+
pumuki context init|status|repair [--json]
|
|
252
|
+
pumuki sdd status|validate|session|sync-docs|sync|learn|auto-sync|evidence|state-sync
|
|
253
|
+
```
|
|
131
254
|
|
|
132
|
-
|
|
255
|
+
Published binaries:
|
|
133
256
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
257
|
+
| Binary | Purpose |
|
|
258
|
+
|---|---|
|
|
259
|
+
| `pumuki` | Main lifecycle CLI. |
|
|
260
|
+
| `pumuki-framework`, `pumuki-ast-hooks`, `ast-hooks` | Interactive framework/menu entrypoints. |
|
|
261
|
+
| `pumuki-pre-write` | PRE_WRITE gate and SDD policy surface. |
|
|
262
|
+
| `pumuki-pre-commit` | PRE_COMMIT hook runner. |
|
|
263
|
+
| `pumuki-pre-push` | PRE_PUSH hook runner. |
|
|
264
|
+
| `pumuki-ci` | CI gate runner. |
|
|
265
|
+
| `pumuki-mcp-evidence` | Evidence MCP HTTP server. |
|
|
266
|
+
| `pumuki-mcp-enterprise` | Enterprise MCP HTTP server. |
|
|
267
|
+
| `pumuki-mcp-evidence-stdio` | Evidence MCP stdio bridge. |
|
|
268
|
+
| `pumuki-mcp-enterprise-stdio` | Enterprise MCP stdio bridge. |
|
|
140
269
|
|
|
141
|
-
|
|
270
|
+
Detailed command documentation:
|
|
142
271
|
|
|
143
|
-
|
|
272
|
+
- [Installation Guide](docs/product/INSTALLATION.md)
|
|
273
|
+
- [Usage Guide](docs/product/USAGE.md)
|
|
274
|
+
- [API Reference](docs/product/API_REFERENCE.md)
|
|
275
|
+
- [Operator Playbook](PUMUKI.md)
|
|
144
276
|
|
|
145
|
-
|
|
146
|
-
2. Rule evaluation by platform and stage policy.
|
|
147
|
-
3. Gate decision (`PASS`, `WARN`, `BLOCK`) with deterministic thresholds.
|
|
148
|
-
4. Evidence emission (`.ai_evidence.json`) with findings, metadata, and coverage telemetry.
|
|
277
|
+
## Git Hooks and CI
|
|
149
278
|
|
|
150
|
-
|
|
279
|
+
Pumuki evaluates different scopes per stage:
|
|
151
280
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
281
|
+
| Stage | Typical trigger | Scope | Purpose |
|
|
282
|
+
|---|---|---|---|
|
|
283
|
+
| `PRE_WRITE` | Before hook execution or explicit guard | Active write/session context | Prevent unmanaged agent work and invalid SDD state. |
|
|
284
|
+
| `PRE_COMMIT` | `pre-commit` | `git diff --cached` | Protect the atomic commit. |
|
|
285
|
+
| `PRE_PUSH` | `pre-push` | `upstream..HEAD` | Protect outgoing branch range. |
|
|
286
|
+
| `CI` | CI job | CI base range | Repeat the same governance outside the laptop. |
|
|
287
|
+
| `audit` | Manual CLI | Git tracked files | Diagnose the full tracked repository. |
|
|
155
288
|
|
|
156
|
-
|
|
289
|
+
Managed `pre-commit` and `pre-push` hooks run `pumuki-pre-write` first by default, then the stage runner. Use `PUMUKI_SKIP_CHAINED_PRE_WRITE=1` only for explicit operational exceptions.
|
|
157
290
|
|
|
158
|
-
|
|
159
|
-
- Platform rules activate only for detected platforms.
|
|
160
|
-
- `generic/text` rules remain available as cross-platform governance guards.
|
|
291
|
+
CI entrypoint:
|
|
161
292
|
|
|
162
|
-
|
|
293
|
+
```bash
|
|
294
|
+
npx --yes --package pumuki@latest pumuki-ci
|
|
295
|
+
```
|
|
163
296
|
|
|
164
|
-
|
|
165
|
-
- `DECLARATIVE`: valid only when explicitly declared in lock/custom payload (no silent fallback for rules extracted from skills markdown).
|
|
297
|
+
When GitHub Actions quota or remote CI is not available, this repository uses local validation as the operational merge bar:
|
|
166
298
|
|
|
167
|
-
|
|
299
|
+
```bash
|
|
300
|
+
npm run -s validation:local-merge-bar
|
|
301
|
+
```
|
|
168
302
|
|
|
169
|
-
|
|
170
|
-
2. Evidence v2.1 with rules coverage enforcement and stable ordering.
|
|
171
|
-
3. Unified skills rules engine (core + repo + custom).
|
|
172
|
-
4. Unified AI gate behavior across CLI and MCP surfaces.
|
|
173
|
-
5. Mandatory OpenSpec/SDD policy checks.
|
|
174
|
-
6. Interactive menu UX (consumer + advanced modes).
|
|
175
|
-
7. Hard mode policy hardening (`.pumuki/hard-mode.json` + env overrides).
|
|
176
|
-
8. Lifecycle commands for install/update/diagnostics/teardown.
|
|
177
|
-
9. Provider-agnostic adapter scaffolding (`codex`, `claude`, `cursor`, `windsurf`, `opencode`).
|
|
178
|
-
10. Optional MCP servers for evidence and enterprise context.
|
|
303
|
+
## SDD and OpenSpec
|
|
179
304
|
|
|
180
|
-
|
|
305
|
+
Pumuki supports a mandatory SDD/OpenSpec delivery workflow for enterprise repositories.
|
|
181
306
|
|
|
182
|
-
|
|
307
|
+
Common commands:
|
|
183
308
|
|
|
184
|
-
|
|
309
|
+
```bash
|
|
310
|
+
npx --yes pumuki sdd status --json
|
|
311
|
+
npx --yes pumuki sdd session --open --change=<change-id> --json
|
|
312
|
+
npx --yes pumuki sdd session --refresh --ttl-minutes=90 --json
|
|
313
|
+
npx --yes pumuki sdd validate --stage=PRE_WRITE --json
|
|
314
|
+
npx --yes pumuki sdd evidence --scenario-id=<id> --test-command='<command>' --test-status=passed --json
|
|
315
|
+
npx --yes pumuki sdd state-sync --scenario-id=<id> --status=done --dry-run --json
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Stage aliases:
|
|
319
|
+
|
|
320
|
+
| Alias | Stage |
|
|
321
|
+
|---|---|
|
|
322
|
+
| `RED` | `PRE_WRITE` |
|
|
323
|
+
| `GREEN` | `PRE_COMMIT` |
|
|
324
|
+
| `REFACTOR` | `PRE_PUSH` |
|
|
325
|
+
| `CLOSE` | `CI` |
|
|
185
326
|
|
|
186
|
-
|
|
327
|
+
OpenSpec is resolved from the checked repository, not from a random global binary on `PATH`. Install or bootstrap Pumuki inside the repository so local and CI behavior match.
|
|
187
328
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
329
|
+
## Session Continuity and AI Window Handoff
|
|
330
|
+
|
|
331
|
+
Pumuki is designed for AI-assisted work where the chat window, IDE session or CLI agent can change before the repository work is finished.
|
|
332
|
+
|
|
333
|
+
It does not claim to preserve private conversational memory from a vendor window. Instead, it externalizes the operational context that matters into repository-owned, auditable state:
|
|
334
|
+
|
|
335
|
+
| Context surface | What it preserves |
|
|
336
|
+
|---|---|
|
|
337
|
+
| `.pumuki/context/context.json` | Local context contract for the repository and the instruction that an AI agent must stop if the context cannot be read or validated. |
|
|
338
|
+
| `pumuki context init|status|repair` | Initialize, validate or repair the local context gate before edits, audits, commits or pushes. |
|
|
339
|
+
| SDD/OpenSpec session state | Active change id, session validity and stage validation through `pumuki sdd status`, `session` and `validate`. |
|
|
340
|
+
| `.ai_evidence.json` v2.1 | Last gate snapshot, findings, platform detection, rule provenance, severity breakdown and operational hints. |
|
|
341
|
+
| Managed hooks and receipts | PRE_WRITE/PRE_COMMIT/PRE_PUSH/CI decisions, MCP receipt freshness and evidence age. |
|
|
342
|
+
| MCP resources | Provider-agnostic resources such as `context://active`, `sdd://status`, `sdd://active-change`, `gitflow://state` and `evidence://status`. |
|
|
343
|
+
|
|
344
|
+
This makes a new AI window resumable from facts:
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
npx --yes pumuki status --json
|
|
348
|
+
npx --yes pumuki context status --json
|
|
349
|
+
npx --yes pumuki sdd status --json
|
|
350
|
+
npx --yes pumuki doctor --deep --json
|
|
199
351
|
```
|
|
200
352
|
|
|
201
|
-
|
|
353
|
+
For MCP-capable clients, the same pattern is available through read-only context resources and evidence endpoints before an agent edits files. The expected agent behavior is conservative: if context, evidence or SDD state is missing or invalid, the agent should downgrade to diagnosis and report a blocker instead of mutating production code.
|
|
354
|
+
|
|
355
|
+
In practice, Pumuki turns "remember what we were doing" into a repository contract: current branch, lifecycle health, active SDD change, latest evidence, blocking findings, remediation and policy provenance are recoverable without trusting the transient memory of one AI session.
|
|
202
356
|
|
|
203
|
-
|
|
204
|
-
- If present, the contract is validated against active runtime policy for source/stage/signature.
|
|
205
|
-
- Validation states are emitted as `valid`, `invalid`, `expired`, or `unknown-source`.
|
|
206
|
-
- `PUMUKI_POLICY_STRICT=1` turns non-valid states into blocking findings (`governance.policy-as-code.invalid`).
|
|
357
|
+
## AST Intelligence and Rule Packs
|
|
207
358
|
|
|
208
|
-
|
|
359
|
+
Pumuki detects active platforms and loads rule packs for the real repository shape:
|
|
209
360
|
|
|
210
|
-
|
|
211
|
-
|
|
361
|
+
| Platform | Coverage area |
|
|
362
|
+
|---|---|
|
|
363
|
+
| iOS | Swift, SwiftUI, Swift Testing, concurrency, architecture and security patterns. |
|
|
364
|
+
| Android | Kotlin, Compose, DI, lifecycle, architecture and Android-specific risk patterns. |
|
|
365
|
+
| Backend | TypeScript/NestJS, DTO validation, controllers, DI, error handling, persistence and security patterns. |
|
|
366
|
+
| Frontend | TypeScript/React/Next.js, JSX accessibility, API routes, UI safety and browser risk patterns. |
|
|
367
|
+
| Generic | Cross-platform TypeScript, process, filesystem, dynamic code execution and security signals. |
|
|
212
368
|
|
|
213
|
-
|
|
369
|
+
Current baseline families:
|
|
214
370
|
|
|
215
|
-
|
|
371
|
+
- `iosEnterpriseRuleSet`
|
|
372
|
+
- `backendRuleSet`
|
|
373
|
+
- `frontendRuleSet`
|
|
374
|
+
- `androidRuleSet`
|
|
375
|
+
- `astHeuristicsRuleSet`
|
|
376
|
+
- compiled skills bundles from `skills.lock.json`
|
|
216
377
|
|
|
217
|
-
|
|
378
|
+
Rule-pack documentation:
|
|
218
379
|
|
|
219
|
-
|
|
380
|
+
- [Rule Packs Overview](docs/rule-packs/README.md)
|
|
381
|
+
- [iOS Rule Pack](docs/rule-packs/ios.md)
|
|
382
|
+
- [Android Rule Pack](docs/rule-packs/android.md)
|
|
383
|
+
- [Backend Rule Pack](docs/rule-packs/backend.md)
|
|
384
|
+
- [Frontend Rule Pack](docs/rule-packs/frontend.md)
|
|
385
|
+
- [AST Heuristics Rule Pack](docs/rule-packs/heuristics.md)
|
|
220
386
|
|
|
221
|
-
|
|
222
|
-
- `PUMUKI_TELEMETRY_OTEL_ENDPOINT`: OTLP HTTP logs endpoint (`/v1/logs`)
|
|
223
|
-
- `PUMUKI_TELEMETRY_OTEL_SERVICE_NAME`: optional OTel service name (default: `pumuki`)
|
|
224
|
-
- `PUMUKI_TELEMETRY_OTEL_TIMEOUT_MS`: optional OTel timeout in ms (default: `1500`)
|
|
387
|
+
AST intelligence is not a promise that every guideline can be enforced as code. Pumuki distinguishes runtime-code rules, process rules, positive recommendations and rules that still require study, so the gate does not create false confidence.
|
|
225
388
|
|
|
226
|
-
|
|
389
|
+
## Evidence
|
|
227
390
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
391
|
+
Pumuki writes deterministic evidence to `.ai_evidence.json` using the v2.1 contract.
|
|
392
|
+
|
|
393
|
+
Evidence can include:
|
|
394
|
+
|
|
395
|
+
- stage and policy metadata;
|
|
396
|
+
- gate outcome;
|
|
397
|
+
- findings and blocking causes;
|
|
398
|
+
- loaded rulesets and content hashes;
|
|
399
|
+
- detected platforms;
|
|
400
|
+
- skills coverage;
|
|
401
|
+
- SDD/OpenSpec state;
|
|
402
|
+
- operational hints;
|
|
403
|
+
- ledger and snapshot metadata.
|
|
234
404
|
|
|
235
|
-
|
|
405
|
+
Reference:
|
|
236
406
|
|
|
237
|
-
|
|
407
|
+
- [AI Evidence v2.1 Contract](docs/mcp/ai-evidence-v2.1-contract.md)
|
|
408
|
+
- [Evidence API](docs/product/API_REFERENCE.md#evidence-api)
|
|
238
409
|
|
|
239
|
-
|
|
410
|
+
## Menu and Notifications
|
|
411
|
+
|
|
412
|
+
Pumuki includes an interactive menu for local developer operation.
|
|
413
|
+
|
|
414
|
+
Framework repository:
|
|
240
415
|
|
|
241
416
|
```bash
|
|
242
417
|
npm run framework:menu
|
|
243
|
-
PUMUKI_MENU_UI_V2=1 npm run framework:menu
|
|
244
418
|
PUMUKI_MENU_MODE=advanced npm run framework:menu
|
|
245
419
|
```
|
|
246
420
|
|
|
247
|
-
|
|
421
|
+
Consumer repository:
|
|
248
422
|
|
|
249
423
|
```bash
|
|
250
|
-
|
|
251
|
-
npm run skills:lock:check
|
|
252
|
-
npm run skills:import:custom
|
|
253
|
-
npm run skills:import:custom -- --source <absolute-path-to-SKILL.md> --source <second-absolute-path-to-SKILL.md>
|
|
424
|
+
npx --yes --package pumuki@latest pumuki-framework
|
|
254
425
|
```
|
|
255
426
|
|
|
256
|
-
|
|
427
|
+
Screenshots from the consumer menu:
|
|
257
428
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
429
|
+
| Consumer menu | Blocked pre-flight | Final summary |
|
|
430
|
+
|---|---|---|
|
|
431
|
+
|  |  |  |
|
|
432
|
+
|  |  |  |
|
|
433
|
+
|
|
434
|
+
Notification channels include terminal output, stderr mirrors for relevant blocking events and optional system notifications. Blocking messages are expected to explain:
|
|
435
|
+
|
|
436
|
+
1. blocking cause;
|
|
437
|
+
2. concrete rule or skill;
|
|
438
|
+
3. file and line when available;
|
|
439
|
+
4. missing condition;
|
|
440
|
+
5. direct remediation.
|
|
441
|
+
|
|
442
|
+
Extended walkthrough:
|
|
443
|
+
|
|
444
|
+
- [Framework Menu Consumer Walkthrough](docs/operations/framework-menu-consumer-walkthrough.md)
|
|
263
445
|
|
|
264
|
-
|
|
446
|
+
## MCP and Agent Adapters
|
|
447
|
+
|
|
448
|
+
MCP is optional. Git hooks and gates do not depend on MCP.
|
|
449
|
+
|
|
450
|
+
Pumuki publishes two MCP server families:
|
|
451
|
+
|
|
452
|
+
| Server | Purpose |
|
|
453
|
+
|---|---|
|
|
454
|
+
| `pumuki-mcp-evidence` | Read-only evidence context over HTTP. |
|
|
455
|
+
| `pumuki-mcp-enterprise` | Enterprise repository state, resources and safe tools over HTTP. |
|
|
456
|
+
| `pumuki-mcp-evidence-stdio` | Evidence resources over MCP stdio. |
|
|
457
|
+
| `pumuki-mcp-enterprise-stdio` | Enterprise resources/tools over MCP stdio. |
|
|
458
|
+
|
|
459
|
+
The enterprise server exposes repository-state resources used for session continuity, including `context://active`, `gitflow://state`, `sdd://status`, `sdd://active-change` and `evidence://status`. The evidence server exposes compact and paginated evidence views so agents can load only the facts they need before acting.
|
|
460
|
+
|
|
461
|
+
Consumer quick start:
|
|
265
462
|
|
|
266
463
|
```bash
|
|
267
|
-
|
|
268
|
-
|
|
464
|
+
npx --yes --package pumuki@latest pumuki-mcp-evidence
|
|
465
|
+
npx --yes --package pumuki@latest pumuki-mcp-enterprise
|
|
466
|
+
npx --yes --package pumuki@latest pumuki-mcp-enterprise-stdio
|
|
269
467
|
```
|
|
270
468
|
|
|
271
|
-
|
|
469
|
+
Adapter scaffolding:
|
|
272
470
|
|
|
273
471
|
```bash
|
|
274
|
-
|
|
472
|
+
npx --yes pumuki adapter install --agent=repo --dry-run --json
|
|
473
|
+
npx --yes pumuki adapter install --agent=<agent> --json
|
|
474
|
+
npx --yes pumuki adapter install --agent=cursor --dry-run --json
|
|
275
475
|
```
|
|
276
476
|
|
|
277
|
-
|
|
477
|
+
Supported adapter targets include `repo`, `cursor`, `claude`, `codex`, `windsurf` and `opencode`. These are opt-in client adapters; the managed Git hooks, gates, lifecycle, evidence and `.pumuki/adapter.json` baseline remain AI-agent, CLI and IDE agnostic.
|
|
278
478
|
|
|
279
|
-
|
|
479
|
+
References:
|
|
280
480
|
|
|
281
|
-
-
|
|
282
|
-
|
|
283
|
-
-
|
|
284
|
-
- `docs/product/USAGE.md`
|
|
285
|
-
- Operator-focused short playbook:
|
|
286
|
-
- `PUMUKI.md`
|
|
287
|
-
- Validation runbooks and framework-only diagnostics:
|
|
288
|
-
- `docs/validation/README.md`
|
|
481
|
+
- [MCP Servers](docs/mcp/mcp-servers-overview.md)
|
|
482
|
+
- [Evidence Context Server](docs/mcp/evidence-context-server.md)
|
|
483
|
+
- [Agent Context Consumption](docs/mcp/agent-context-consumption.md)
|
|
289
484
|
|
|
290
|
-
##
|
|
485
|
+
## Enterprise Operations
|
|
291
486
|
|
|
292
|
-
|
|
487
|
+
Pumuki includes enterprise-oriented controls for teams that need governed rollout across multiple repositories.
|
|
293
488
|
|
|
294
|
-
|
|
489
|
+
| Area | Capability |
|
|
490
|
+
|---|---|
|
|
491
|
+
| Policy-as-code | `.pumuki/policy-as-code.json` with stage signatures and strict validation. |
|
|
492
|
+
| Telemetry | Optional JSONL and OTLP export for gate telemetry. |
|
|
493
|
+
| Version drift | `status` and `doctor` expose effective/runtime/lifecycle/package alignment. |
|
|
494
|
+
| Adapter health | Deep diagnostics for hook and MCP wiring. |
|
|
495
|
+
| Worktree hygiene | Guardrails for pending changes and atomic delivery. |
|
|
496
|
+
| Consumer rollout | Package smoke, installed-bin smoke and consumer support tooling. |
|
|
497
|
+
| Operations policy | SLO/SLA, severity model, incident response and rollback expectations. |
|
|
295
498
|
|
|
296
|
-
|
|
499
|
+
Operational references:
|
|
297
500
|
|
|
298
|
-
|
|
501
|
+
- [Configuration](docs/product/CONFIGURATION.md)
|
|
502
|
+
- [Production Operations Policy](docs/operations/production-operations-policy.md)
|
|
503
|
+
- [Validation Runbooks](docs/validation/README.md)
|
|
504
|
+
- [Release Notes](docs/operations/RELEASE_NOTES.md)
|
|
505
|
+
- [Changelog](CHANGELOG.md)
|
|
299
506
|
|
|
300
|
-
|
|
507
|
+
## Adoption Models
|
|
301
508
|
|
|
302
|
-
|
|
509
|
+
| Context | Recommended path |
|
|
510
|
+
|---|---|
|
|
511
|
+
| Greenfield repository | Install Pumuki early, enable SDD/OpenSpec, commit through hooks from day one. |
|
|
512
|
+
| Brownfield repository | Start with scoped hooks and audits; fix active-slice debt before historical debt. |
|
|
513
|
+
| AI-enabled team | Treat `AGENTS.md` and skills as the human contract, and Pumuki as executable enforcement. |
|
|
514
|
+
| Multi-platform monorepo | Pin platforms when needed and let rule packs activate by detected scope. |
|
|
515
|
+
| Enterprise rollout | Pilot in one consumer, validate `doctor/status/hooks`, then repin controlled repositories. |
|
|
516
|
+
|
|
517
|
+
Suggested rollout checklist:
|
|
518
|
+
|
|
519
|
+
1. Install exact package version.
|
|
520
|
+
2. Run `pumuki bootstrap --enterprise`.
|
|
521
|
+
3. Verify `status` and `doctor`.
|
|
522
|
+
4. Open an SDD session for a real change.
|
|
523
|
+
5. Run `PRE_WRITE` and `PRE_COMMIT`.
|
|
524
|
+
6. Validate menu and notification output.
|
|
525
|
+
7. Add CI gate when the local contract is stable.
|
|
526
|
+
8. Document local exceptions in the consumer repository.
|
|
303
527
|
|
|
304
|
-
|
|
528
|
+
## Troubleshooting
|
|
305
529
|
|
|
306
|
-
|
|
530
|
+
| Symptom | Likely cause | Action |
|
|
531
|
+
|---|---|---|
|
|
532
|
+
| `SDD_SESSION_MISSING` | No active SDD session. | Run `pumuki sdd session --open --change=<change-id>`. |
|
|
533
|
+
| `SDD_SESSION_INVALID` | Session does not match current change or expired. | Run `pumuki sdd session --refresh --ttl-minutes=90`. |
|
|
534
|
+
| `OPENSPEC_MISSING` | Repo-local OpenSpec binary is missing. | Run `pumuki bootstrap --enterprise` or install the required package in the repo. |
|
|
535
|
+
| PRE_PUSH blocks due to missing upstream | Branch has no tracking ref. | Run `git push --set-upstream origin <branch>`. |
|
|
536
|
+
| Version drift in `doctor` | Package/runtime/lifecycle versions differ. | Use the printed `alignmentCommand`. |
|
|
537
|
+
| Hook blocks unrelated brownfield debt | Scope classification may be wrong. | Capture command, staged files and JSON output; open an issue. |
|
|
538
|
+
| `.ai_evidence.json` changes during docs-only work | Evidence refresh behavior is active. | Review the diff and stage only when the evidence belongs to the slice. |
|
|
539
|
+
| MCP port conflict | Another instance is running. | Use `PUMUKI_ENTERPRISE_MCP_PORT=0` for dynamic port allocation. |
|
|
540
|
+
|
|
541
|
+
Bug report template:
|
|
542
|
+
|
|
543
|
+
```text
|
|
544
|
+
Repository:
|
|
545
|
+
Branch:
|
|
546
|
+
Pumuki version:
|
|
547
|
+
Command:
|
|
548
|
+
Expected result:
|
|
549
|
+
Actual result:
|
|
550
|
+
Staged files:
|
|
551
|
+
Relevant output:
|
|
552
|
+
Evidence file present:
|
|
553
|
+
```
|
|
307
554
|
|
|
308
|
-
|
|
555
|
+
## Documentation
|
|
309
556
|
|
|
310
|
-
|
|
557
|
+
Start here:
|
|
311
558
|
|
|
312
|
-
|
|
559
|
+
- [Operator Playbook](PUMUKI.md)
|
|
560
|
+
- [Documentation Index](docs/README.md)
|
|
561
|
+
- [Installation](docs/product/INSTALLATION.md)
|
|
562
|
+
- [Usage](docs/product/USAGE.md)
|
|
563
|
+
- [Architecture](docs/product/ARCHITECTURE.md)
|
|
564
|
+
- [Configuration](docs/product/CONFIGURATION.md)
|
|
565
|
+
- [API Reference](docs/product/API_REFERENCE.md)
|
|
566
|
+
- [Testing](docs/product/TESTING.md)
|
|
567
|
+
- [MCP Servers](docs/mcp/mcp-servers-overview.md)
|
|
568
|
+
- [Rule Packs](docs/rule-packs/README.md)
|
|
569
|
+
- [Governance Standards](docs/governance/CODE_STANDARDS.md)
|
|
570
|
+
- [Contributing](docs/governance/CONTRIBUTING.md)
|
|
313
571
|
|
|
314
|
-
|
|
572
|
+
Optional training hub:
|
|
315
573
|
|
|
316
|
-
|
|
574
|
+
- [Pumuki course in Stack My Architecture](https://stack-my-architecture-hub.vercel.app/pumuki/)
|
|
317
575
|
|
|
318
|
-
|
|
576
|
+
## Contributing
|
|
319
577
|
|
|
320
|
-
|
|
578
|
+
For high-quality contributions:
|
|
321
579
|
|
|
322
|
-
|
|
580
|
+
1. Read [Contributing](docs/governance/CONTRIBUTING.md) and [Code Standards](docs/governance/CODE_STANDARDS.md).
|
|
581
|
+
2. Work on a dedicated branch.
|
|
582
|
+
3. Keep each change atomic.
|
|
583
|
+
4. Add focused regression coverage for behavior changes.
|
|
584
|
+
5. Run the relevant local validation commands.
|
|
585
|
+
6. Open a PR with problem, approach and evidence.
|
|
323
586
|
|
|
324
|
-
|
|
587
|
+
Maintainer validation commands:
|
|
325
588
|
|
|
326
|
-
|
|
589
|
+
```bash
|
|
590
|
+
npm run -s typecheck
|
|
591
|
+
npm run -s test:deterministic
|
|
592
|
+
npm run -s validation:package-manifest
|
|
593
|
+
npm run -s smoke:pumuki-surface
|
|
594
|
+
```
|
|
327
595
|
|
|
328
|
-
-
|
|
329
|
-
- Severity model (`SEV1/SEV2/SEV3`) with response and RCA expectations.
|
|
330
|
-
- Mandatory controls for tenant/repo isolation, auth policy, idempotency, and auditing.
|
|
331
|
-
- Go-live checklist and rollback requirements.
|
|
596
|
+
For release-grade validation in this repository:
|
|
332
597
|
|
|
333
|
-
|
|
598
|
+
```bash
|
|
599
|
+
npm run -s validation:local-merge-bar
|
|
600
|
+
npm publish --dry-run --access public
|
|
601
|
+
```
|
|
334
602
|
|
|
335
|
-
|
|
336
|
-
- `SDD_SESSION_MISSING`: open and validate session first.
|
|
337
|
-
- `pre-push blocked: branch has no upstream`: run `git push --set-upstream origin <branch>`.
|
|
338
|
-
- `Missing required argument --repo` / `--repo-path`: pass required flags for validation scripts.
|
|
339
|
-
- Legacy parity report usage requires `--legacy=<path>` and `--enterprise=<path>` (equals form).
|
|
340
|
-
- If menu v2 rendering fails, Pumuki falls back to classic UI.
|
|
341
|
-
|
|
342
|
-
## Documentation Index
|
|
343
|
-
|
|
344
|
-
- Installation: `docs/product/INSTALLATION.md`
|
|
345
|
-
- Usage: `docs/product/USAGE.md`
|
|
346
|
-
- Backlog tooling quick nav (incluye snippet terminal): `docs/product/USAGE.md#backlog-tooling`
|
|
347
|
-
- Backlog reasons shared module: `docs/product/USAGE.md#backlog-reasons`
|
|
348
|
-
- Testing: `docs/product/TESTING.md`
|
|
349
|
-
- API reference: `docs/product/API_REFERENCE.md`
|
|
350
|
-
- Architecture: `docs/product/ARCHITECTURE.md`
|
|
351
|
-
- Configuration: `docs/product/CONFIGURATION.md`
|
|
352
|
-
- Code standards: `docs/governance/CODE_STANDARDS.md`
|
|
353
|
-
- Branch protection: `docs/governance/BRANCH_PROTECTION_GUIDE.md`
|
|
354
|
-
- MCP servers: `docs/mcp/mcp-servers-overview.md`
|
|
355
|
-
- MCP evidence server: `docs/mcp/evidence-context-server.md`
|
|
356
|
-
- MCP consumption: `docs/mcp/agent-context-consumption.md`
|
|
357
|
-
- Evidence schema v2.1: `docs/mcp/ai-evidence-v2.1-contract.md`
|
|
358
|
-
- Operations policy (SLA/SLO): `docs/operations/production-operations-policy.md`
|
|
359
|
-
- Release notes: `docs/operations/RELEASE_NOTES.md`
|
|
360
|
-
- Changelog: `CHANGELOG.md`
|
|
361
|
-
|
|
362
|
-
## Collaboration
|
|
363
|
-
|
|
364
|
-
Contributions are welcome. For high-quality collaboration:
|
|
365
|
-
|
|
366
|
-
1. Read `docs/governance/CONTRIBUTING.md` and `docs/governance/CODE_STANDARDS.md`.
|
|
367
|
-
2. Create a dedicated branch per change.
|
|
368
|
-
3. Keep scope focused and include deterministic evidence when relevant.
|
|
369
|
-
4. Before opening a PR, run at least:
|
|
370
|
-
- `npm run typecheck`
|
|
371
|
-
- `npm run -s test:backlog-tooling`
|
|
372
|
-
- `npm run test:operational-memory`
|
|
373
|
-
- `npm run test:saas-ingestion`
|
|
374
|
-
5. Open a PR with clear problem statement, approach, and validation evidence.
|
|
603
|
+
Publishing to npm is a separate release operation and may require registry auth/MFA handling.
|
|
375
604
|
|
|
376
605
|
## Support and Security
|
|
377
606
|
|
|
378
|
-
- Functional
|
|
379
|
-
-
|
|
380
|
-
-
|
|
607
|
+
- Functional issues: use [GitHub Issues](https://github.com/SwiftEnProfundidad/ast-intelligence-hooks/issues).
|
|
608
|
+
- Security-sensitive issues: use GitHub Security Advisories or coordinated private disclosure.
|
|
609
|
+
- Enterprise diagnostics: attach command output and evidence excerpts, but never include secrets.
|
|
381
610
|
|
|
382
611
|
## License
|
|
383
612
|
|
|
384
|
-
MIT. See
|
|
385
|
-
|
|
386
|
-
## If Pumuki Helped You
|
|
387
|
-
|
|
388
|
-
If this project was useful for your team, please consider leaving a GitHub star:
|
|
389
|
-
|
|
390
|
-
[Star Pumuki on GitHub](https://github.com/SwiftEnProfundidad/ast-intelligence-hooks)
|
|
613
|
+
MIT. See [LICENSE](LICENSE).
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
6.3.
|
|
1
|
+
6.3.378
|
|
Binary file
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="760" viewBox="0 0 1600 760" role="img" aria-label="Pumuki governance flow">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.bg { fill: #0b0f14; }
|
|
5
|
+
.panel { fill: #111827; stroke: #263244; stroke-width: 2; }
|
|
6
|
+
.box { fill: #0f172a; stroke: #38bdf8; stroke-width: 2; }
|
|
7
|
+
.box2 { fill: #102118; stroke: #34d399; stroke-width: 2; }
|
|
8
|
+
.box3 { fill: #221a10; stroke: #f59e0b; stroke-width: 2; }
|
|
9
|
+
.title { fill: #f8fafc; font: 700 42px ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
10
|
+
.sub { fill: #93c5fd; font: 600 24px ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
11
|
+
.h { fill: #e5e7eb; font: 700 23px ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
12
|
+
.t { fill: #cbd5e1; font: 18px ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
13
|
+
.muted { fill: #94a3b8; font: 16px ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
14
|
+
.arrow { stroke: #64748b; stroke-width: 4; fill: none; marker-end: url(#arrowhead); }
|
|
15
|
+
</style>
|
|
16
|
+
<marker id="arrowhead" markerWidth="10" markerHeight="8" refX="9" refY="4" orient="auto">
|
|
17
|
+
<path d="M 0 0 L 10 4 L 0 8 z" fill="#64748b" />
|
|
18
|
+
</marker>
|
|
19
|
+
</defs>
|
|
20
|
+
|
|
21
|
+
<rect class="bg" width="1600" height="760" rx="28" />
|
|
22
|
+
<rect class="panel" x="44" y="44" width="1512" height="672" rx="24" />
|
|
23
|
+
|
|
24
|
+
<text class="title" x="90" y="116">Pumuki Enterprise Governance Flow</text>
|
|
25
|
+
<text class="sub" x="90" y="158">One deterministic contract for humans, AI agents, hooks and CI</text>
|
|
26
|
+
|
|
27
|
+
<rect class="box" x="90" y="230" width="260" height="128" rx="16" />
|
|
28
|
+
<text class="h" x="118" y="274">1. Facts</text>
|
|
29
|
+
<text class="t" x="118" y="310">Git scope</text>
|
|
30
|
+
<text class="t" x="118" y="338">Repo state</text>
|
|
31
|
+
|
|
32
|
+
<rect class="box" x="440" y="230" width="260" height="128" rx="16" />
|
|
33
|
+
<text class="h" x="468" y="274">2. Rules</text>
|
|
34
|
+
<text class="t" x="468" y="310">Skills</text>
|
|
35
|
+
<text class="t" x="468" y="338">Rule packs</text>
|
|
36
|
+
|
|
37
|
+
<rect class="box3" x="790" y="230" width="260" height="128" rx="16" />
|
|
38
|
+
<text class="h" x="818" y="274">3. Gate</text>
|
|
39
|
+
<text class="t" x="818" y="310">PASS / WARN / BLOCK</text>
|
|
40
|
+
<text class="t" x="818" y="338">Stage policy</text>
|
|
41
|
+
|
|
42
|
+
<rect class="box2" x="1140" y="230" width="260" height="128" rx="16" />
|
|
43
|
+
<text class="h" x="1168" y="274">4. Evidence</text>
|
|
44
|
+
<text class="t" x="1168" y="310">ai_evidence v2.1</text>
|
|
45
|
+
<text class="t" x="1168" y="338">Traceable output</text>
|
|
46
|
+
|
|
47
|
+
<path class="arrow" d="M 355 294 L 430 294" />
|
|
48
|
+
<path class="arrow" d="M 705 294 L 780 294" />
|
|
49
|
+
<path class="arrow" d="M 1055 294 L 1130 294" />
|
|
50
|
+
|
|
51
|
+
<rect class="box" x="150" y="470" width="330" height="120" rx="16" />
|
|
52
|
+
<text class="h" x="178" y="512">Delivery surfaces</text>
|
|
53
|
+
<text class="t" x="178" y="548">PRE_WRITE, PRE_COMMIT</text>
|
|
54
|
+
<text class="t" x="178" y="576">PRE_PUSH, CI, audit</text>
|
|
55
|
+
|
|
56
|
+
<rect class="box2" x="635" y="470" width="330" height="120" rx="16" />
|
|
57
|
+
<text class="h" x="663" y="512">Developer UX</text>
|
|
58
|
+
<text class="t" x="663" y="548">Menu, notifications</text>
|
|
59
|
+
<text class="t" x="663" y="576">Actionable remediation</text>
|
|
60
|
+
|
|
61
|
+
<rect class="box" x="1120" y="470" width="330" height="120" rx="16" />
|
|
62
|
+
<text class="h" x="1148" y="512">Automation</text>
|
|
63
|
+
<text class="t" x="1148" y="548">MCP, adapters</text>
|
|
64
|
+
<text class="t" x="1148" y="576">Telemetry, diagnostics</text>
|
|
65
|
+
|
|
66
|
+
<path class="arrow" d="M 920 364 L 920 414 L 315 414 L 315 460" />
|
|
67
|
+
<path class="arrow" d="M 1270 364 L 1270 414 L 800 414 L 800 460" />
|
|
68
|
+
<path class="arrow" d="M 1270 364 L 1285 414 L 1285 460" />
|
|
69
|
+
|
|
70
|
+
<text class="muted" x="90" y="660">Baseline is IDE-agnostic. Client-specific adapters are opt-in.</text>
|
|
71
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
4
|
-
"description": "Enterprise-
|
|
3
|
+
"version": "6.3.378",
|
|
4
|
+
"description": "Enterprise governance framework for AI-assisted software delivery with Git hooks, SDD/OpenSpec, AST intelligence, evidence, MCP and multi-platform rule enforcement.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"pumuki": "bin/pumuki.js",
|
|
@@ -184,7 +184,14 @@
|
|
|
184
184
|
"kotlin",
|
|
185
185
|
"react",
|
|
186
186
|
"nextjs",
|
|
187
|
-
"nestjs"
|
|
187
|
+
"nestjs",
|
|
188
|
+
"ai-governance",
|
|
189
|
+
"ai-assisted-development",
|
|
190
|
+
"software-delivery",
|
|
191
|
+
"sdd",
|
|
192
|
+
"openspec",
|
|
193
|
+
"mcp",
|
|
194
|
+
"evidence"
|
|
188
195
|
],
|
|
189
196
|
"author": {
|
|
190
197
|
"name": "Juan Carlos Merlos Albarracín",
|