sistema-multiagente-sdlc 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased]
4
+
5
+ _No hay cambios pendientes._
6
+
7
+ ## [1.3.0] — 2026-05-23
8
+
9
+ ### Added
10
+
11
+ - ADR `0002-codegraph-spike.md` (versión Propuesta inicial): aprobar evaluación de 7 días de [CodeGraph (colbymchenry)](https://github.com/colbymchenry/codegraph). Esta versión queda en el historial git; la versión vigente es la Aceptada del bloque "Changed" anterior.
12
+ - ADR `0003-per-phase-model-assignment.md`: extender `templates/scripts/models.yaml` con bloque opcional `phases:` para asignar modelos distintos a fases SDD (`sdd-explore`, `sdd-design`, `sdd-implement`, `sdd-review` o F0-F17). Reduce costo en exploración manteniendo precisión en F2-F3. Inspirado por el patrón `--profile-phase` de `gentle-ai`.
13
+ - `templates/scripts/models.yaml`: bloque `phases:` opt-in con defaults documentados (Haiku para `sdd-explore`, Opus para `sdd-design`, Sonnet para `sdd-implement`/`sdd-review`).
14
+ - Skill `edge-case-hunter`: checklist portable para revisar entradas límite, concurrencia, fallos parciales, dependencias, autorización y volumen antes de implementación.
15
+ - `analista-requisitos.agent.md`: protocolo de elicitación avanzada para historias ambiguas antes de pasar a diseño.
16
+
17
+ ### Changed
18
+
19
+ - ADR `0002-codegraph-spike.md` cambia de estado **Propuesta → Aceptada**. Se reemplaza la estrategia de "spike 7 días con benchmarks sintéticos obligatorios" por **"instalar y observar"**: la adopción es coexistencia con Graphify desde el día 1, sin slice dedicado, y la verificación del ahorro de tokens claimado por CodeGraph (94 % menos tool-calls según su README) se hará por observación natural durante varias sesiones reales. El ADR ahora documenta:
20
+ - Reglas concretas de coexistencia (Graphify-first para razonamiento humano y `enrich-us` 4.5; CodeGraph vía MCP para queries estructurales runtime).
21
+ - Triggers para abrir ADR 0004 (evidencia de ahorro real, cobertura de rutas framework, o costo operativo excesivo).
22
+ - Implementación operativa ya ejecutada en `FacturacionDian` con scope narrow (`apps/**/src` + `packages/**/src`, `.ts/.tsx`) para evitar el OOM del index default sobre un monorepo grande.
23
+ - Métricas del index inicial sobre `FacturacionDian`: 658 archivos, 7.954 nodes, 14.869 edges, 14.48 MB native SQLite.
24
+ - `scripts/validate-models-schema.mjs`: soporte para clave top-level `phases` opcional + verificación de shape `{ primary, fallback }` por fase. Bloque `phases:` declarado pero vacío produce error explícito.
25
+
26
+ ### Docs
27
+
28
+ - README: actualizada tabla `BMAD Comparison` con realidad V6 de BMAD-METHOD (module ecosystem BMM/BMB/TEA/BMGD/CIS, Skills Architecture, Sub-Agent inclusion, scale-adaptive, Discord community) y comparación side-by-side honesta. Datos tomados del README oficial v6 de `bmad-code-org/BMAD-METHOD`.
29
+ - README Roadmap v1.3.0: agregadas entradas `macos-latest` para `regression-install` matrix y bump de `actions/checkout@v5` + `actions/setup-node@v5` con `node-version: 24` antes del deprecation deadline de GitHub (Node 20 deprecated jun 2026, removed sep 2026).
30
+
3
31
  ## [1.2.1] — 2026-05-18
4
32
 
5
33
  ### UX fix — `init` sin `--target` usa cwd
package/README.md CHANGED
@@ -122,21 +122,35 @@ All external installs are opt-in. Scripts default to dry-run or local-only behav
122
122
 
123
123
  ## BMAD Comparison
124
124
 
125
- | Feature | BMAD-METHOD | SistemaMultiagente_SDLC |
125
+ Side-by-side de los dos frameworks. La intención no es competir sino aclarar dónde se solapan y dónde cada uno se especializa. Datos de BMAD tomados de su README oficial v6 (`bmad-code-org/BMAD-METHOD`, npm `bmad-method`).
126
+
127
+ | Feature | BMAD-METHOD v6 | SistemaMultiagente_SDLC v1.3.0 |
126
128
  | --- | --- | --- |
127
- | AI-driven agents | 12+ personas | 8 personas plus extensible roadmap |
128
- | Workflows | agile | SDD waterfall by slice, agile by release |
129
- | Scale-adaptive | yes | reserved for v1.3.0 |
130
- | Party mode | yes | roundtable opt-in planned for v1.3.0 |
131
- | Help CLI | bmad-help | `sdlc next` planned for v1.3.0 |
132
- | Modules/packs | yes | packs marketplace planned for v2.0.0 |
133
- | Governance validators | not core | 14 validators |
134
- | OpenSpec/SDD | not core | integrated |
135
- | Readiness L1/L2/L3 | not core | integrated |
136
- | Multi-agent lock | not core | TTL platform-context lock |
137
- | Brownfield-first | no | yes |
138
- | Migration system | not core | backup and rollback |
139
- | Sanitization validators | not core | no-personal-paths and template-sanitization |
129
+ | License | MIT | MIT |
130
+ | Runtime requisitos | Node ≥20.12, Python ≥3.10, `uv` | Node ≥18, PowerShell (pwsh/powershell), Git |
131
+ | Install command | `npx bmad-method install` (interactive) o `--yes --modules --tools` (CI) | `npx sistema-multiagente-sdlc init` (cwd default desde v1.2.1) |
132
+ | Scope principal | AI-driven agile development | AI-assisted SDLC con governance enterprise y SDD |
133
+ | Workflows | 34+ agile workflows (BMM core) | SDD waterfall por slice + agile por release (F0-F17 phases) |
134
+ | Scale-adaptive | sí, automático (bug → enterprise) | scale hint activo desde v1.3.0 |
135
+ | Agentes/personas | 12+ personas (PM, Architect, Dev, UX, …) | 8 personas activas + roadmap extensible |
136
+ | Party / collaboration mode | yes (multiple personas en sesión) | roundtable opt-in planned v1.3.0 |
137
+ | Help CLI / next-step coach | `bmad-help` skill | `sdlc doctor` (state checks); `sdlc next` planned v1.3.0 |
138
+ | Modules / ecosystem | BMM (core) + BMB (builder) + TEA (test architect) + BMGD (game dev) + CIS (creative) | mode-based (`greenfield` / `legacy`) + extensible packs planned v2.0.0 |
139
+ | Skills architecture | (V6 + Sub-Agent inclusion + Cross-Platform Agent Team) | skills mirroring across `.claude/`, `.agents/`, `.windsurf/` (`bootstrap-agent-skills.ps1`) |
140
+ | Custom agent/workflow builder | BMad Builder v1 | personas `.agent.md` + validators (`validate-agent-persona-schema`) |
141
+ | Dev Loop automation | en roadmap V6 | `phase-graph.yaml` + rework label-driven + lock TTL |
142
+ | Brownfield-first | no | sí (legacy mode con research obligatorio antes de proposal) |
143
+ | Governance validators | not core | 14 validators (config, personal-paths, template-sanitization, manifest-integrity, governance-precedence, …) |
144
+ | OpenSpec / SDD | not core | integrated (capacidades canónicas en `openspec/specs/`) |
145
+ | Readiness L1/L2/L3 + matriz NFR | not core | integrated (`business-production-readiness` spec) |
146
+ | Migration system + rollback | not core | backup automático + `sdlc upgrade --to-version` + `sdlc rollback --to <id>` |
147
+ | Multi-agent lock | not core | TTL `platform-context.json` lock |
148
+ | Sanitization de paths/templates | not core | `validate:no-personal-paths` + `validate:template-sanitization` |
149
+ | Provenance (SLSA) | n/d explícito | sí, SLSA v1 + signatures vía OIDC GitHub (workflow `publish.yml`) |
150
+ | Community | Discord abierto, YouTube, X | GitHub Issues + Discussions (Discord no necesario) |
151
+ | Trademark | BMad / BMAD-METHOD trademarks of BMad Code, LLC | sin restricción explícita más allá de MIT |
152
+
153
+ Lectura corta: BMAD lidera en agile breadth y community (12+ personas, 34+ workflows, 5 módulos, Discord activo, Skills Architecture V6). SistemaMultiagente_SDLC lidera en governance + brownfield + SDD + validators (14) + migration system + readiness L1/L2/L3 + sanitization. Ambos pueden coexistir: BMAD orquesta; SistemaMultiagente_SDLC orquesta **y verifica**.
140
154
 
141
155
  ## Roadmap
142
156
 
@@ -148,6 +162,8 @@ v1.3.0:
148
162
  - calibration extensions
149
163
  - roundtable opt-in
150
164
  - docs site
165
+ - regression-install matrix: agregar `macos-latest` (triple coverage ubuntu + windows + macos)
166
+ - bump `actions/checkout@v5` + `actions/setup-node@v5` con `node-version: 24`; deadline GitHub: Node 20 deprecated jun 2026, removed sep 2026
151
167
 
152
168
  v2.0.0:
153
169
 
@@ -0,0 +1,14 @@
1
+ export function up(files = {}) {
2
+ const extra = {
3
+ ".sdlc/migrations/1.3.0-applied.txt": "Migration 1.3.0 applied by SistemaMultiagente_SDLC.\ngenerated-by-sdlc\n"
4
+ };
5
+
6
+ const configPath = ".sdlc/config.json";
7
+ if (typeof files[configPath] === "string") {
8
+ const config = JSON.parse(files[configPath]);
9
+ config.frameworkVersion = "1.3.0";
10
+ extra[configPath] = `${JSON.stringify(config, null, 2)}\n`;
11
+ }
12
+
13
+ return extra;
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sistema-multiagente-sdlc",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "Framework reusable para instalar un SDLC multiagente gobernado en repos greenfield o legacy.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,7 +21,7 @@
21
21
  "type": "string",
22
22
  "enum": ["bug", "feature", "epic", "platform"],
23
23
  "default": "feature",
24
- "description": "Reserved for v1.3.0 adaptive scale. Not consumed in v1.2.0."
24
+ "description": "Scale hint used by v1.3.0+ for adaptive planning and agent routing."
25
25
  },
26
26
  "stack": {
27
27
  "type": "object",
@@ -25,7 +25,31 @@ for (const platform of ["claude_code", "codex", "copilot", "windsurf"]) {
25
25
  requirePattern(new RegExp(`^ ${platform}:\\s*\\n default:\\s*\\S+`, "m"), `platform ${platform} requires default`);
26
26
  }
27
27
 
28
- const allowedTopLevel = new Set(["version", "updated", "roles", "platforms", "fallbacks"]);
28
+ // Optional `phases:` block (v1.3.0+). When present, each phase entry must
29
+ // declare primary and fallback model identifiers, same shape as `roles`.
30
+ if (/^phases:\s*$/m.test(content)) {
31
+ const phasesBlockRegex = /^phases:\s*$([\s\S]*?)(?=^[A-Za-z0-9_-]+:|\Z)/m;
32
+ const phasesBlockMatch = phasesBlockRegex.exec(content);
33
+ if (phasesBlockMatch) {
34
+ const phasesBody = phasesBlockMatch[1];
35
+ const phaseEntryRegex = /^ ([A-Za-z0-9_-]+):\s*$/gm;
36
+ let phaseMatch;
37
+ let phasesFound = 0;
38
+ while ((phaseMatch = phaseEntryRegex.exec(phasesBody)) !== null) {
39
+ phasesFound += 1;
40
+ const phaseName = phaseMatch[1];
41
+ const phaseShape = new RegExp(`^ ${phaseName}:\\s*\\n primary:\\s*\\S+\\n fallback:\\s*\\S+`, "m");
42
+ if (!phaseShape.test(phasesBody)) {
43
+ errors.push(`phase ${phaseName} requires primary and fallback`);
44
+ }
45
+ }
46
+ if (phasesFound === 0) {
47
+ errors.push("phases block declared but contains no phase entries");
48
+ }
49
+ }
50
+ }
51
+
52
+ const allowedTopLevel = new Set(["version", "updated", "roles", "platforms", "phases", "fallbacks"]);
29
53
  for (const line of content.split("\n")) {
30
54
  const match = /^([A-Za-z0-9_-]+):/.exec(line);
31
55
  if (match && !allowedTopLevel.has(match[1])) {
package/src/cli.js CHANGED
@@ -392,7 +392,7 @@ function collectDoctorEnhancements(target, config) {
392
392
  }
393
393
 
394
394
  if (!config || !config.scale) {
395
- findings.push({ level: "error", code: "scale-missing", message: "config.scale is required in v1.2.0" });
395
+ findings.push({ level: "error", code: "scale-missing", message: "config.scale is required in v1.3.0" });
396
396
  } else {
397
397
  findings.push({ level: "info", code: "scale-present", message: `scale=${config.scale}` });
398
398
  }
package/src/migrations.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { up as up_1_0_1 } from "../migrations/1.0.1/up.mjs";
2
2
  import { up as up_1_1_0 } from "../migrations/1.1.0/up.mjs";
3
3
  import { up as up_1_2_0 } from "../migrations/1.2.0/up.mjs";
4
+ import { up as up_1_3_0 } from "../migrations/1.3.0/up.mjs";
4
5
 
5
6
  const REGISTRY = [
6
7
  { version: "1.0.1", up: up_1_0_1 },
7
8
  { version: "1.1.0", up: up_1_1_0 },
8
- { version: "1.2.0", up: up_1_2_0 }
9
+ { version: "1.2.0", up: up_1_2_0 },
10
+ { version: "1.3.0", up: up_1_3_0 }
9
11
  ];
10
12
 
11
13
  function semverTuple(v) {
package/src/render.js CHANGED
@@ -2,7 +2,7 @@ import path from "node:path";
2
2
  import { renderTemplates } from "./template-loader.js";
3
3
  export { validateConfigShape } from "./config-validator.js";
4
4
 
5
- export const FRAMEWORK_VERSION = "1.2.0";
5
+ export const FRAMEWORK_VERSION = "1.3.0";
6
6
  export const SCHEMA_VERSION = 1;
7
7
  export const SUPPORTED_MODES = new Set(["greenfield", "legacy"]);
8
8
 
@@ -23,3 +23,34 @@ Owns functional definition before planning and implementation begin.
23
23
  - Skip human validation for functional scope.
24
24
  - Treat ambiguous stakeholder language as executable specification.
25
25
  - Decide architecture ownership without involving `arquitecto`.
26
+
27
+ ## Advanced Elicitation
28
+
29
+ When a story is ambiguous, incomplete or contradictory, apply this protocol before producing the functional draft.
30
+
31
+ ### Clarification Dimensions
32
+
33
+ Ask at least one question for every undefined dimension:
34
+
35
+ | Dimension | Example question |
36
+ |---|---|
37
+ | Functional | What must the user be able to do at the end? What works today and must not change? |
38
+ | NFR | Is there a response-time, concurrency or data-size constraint? |
39
+ | UX | Is there visible UI? Where does it happen? How does the user know it finished? |
40
+ | Integration | Which external systems participate? What happens if one fails? |
41
+
42
+ ### Minimum Acceptance Criteria
43
+
44
+ Do not move to design until these exist:
45
+
46
+ 1. Actor + action + expected result.
47
+ 2. Happy path + one unhappy path.
48
+ 3. Functional Definition of Done.
49
+
50
+ ### Escalation
51
+
52
+ If the stakeholder cannot answer in one elicitation session:
53
+
54
+ 1. Mark gaps in the draft with `[GAP: undefined]`.
55
+ 2. Propose a 48-hour deadline in the validation block.
56
+ 3. If still undefined after 48 hours, escalate to the human business owner and do not move to design.
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: edge-case-hunter
3
+ description: "Structured edge-case checklist for F3/F4 before implementation. Adapted from BMAD-METHOD patterns without installing the full framework."
4
+ ---
5
+
6
+ # Edge Case Hunter
7
+
8
+ ## Goal
9
+
10
+ Produce an edge-case inventory for a capability before implementation starts. The goal is not to block delivery; it is to force hard cases into design time instead of QA or production.
11
+
12
+ ## When To Use
13
+
14
+ - **F3 Design** — before closing design and moving to implementation.
15
+ - **F4 Validation** — pre-merge review when design skipped edge-case review.
16
+
17
+ ## Checklist
18
+
19
+ Answer every dimension. A "not applicable" answer must include a one-line justification.
20
+
21
+ ### 1. Invalid Or Boundary Input
22
+
23
+ - [ ] Empty, null or undefined input.
24
+ - [ ] Zero-size input: empty array, empty string, object without properties.
25
+ - [ ] Valid min and max boundary.
26
+ - [ ] Just outside valid boundary.
27
+ - [ ] Wrong types.
28
+
29
+ ### 2. Concurrency And Shared State
30
+
31
+ - [ ] Two users execute the same operation on the same resource.
32
+ - [ ] Read/write race condition.
33
+ - [ ] Retry after partial state change.
34
+
35
+ ### 3. Partial Failure And Recovery
36
+
37
+ - [ ] Step N fails after step N-1 already changed state.
38
+ - [ ] Rollback or explicit partial-state handling.
39
+ - [ ] Error message names the failing step enough for recovery.
40
+
41
+ ### 4. External Dependencies
42
+
43
+ - [ ] External service timeout.
44
+ - [ ] Unexpected response shape.
45
+ - [ ] Retry idempotency.
46
+
47
+ ### 5. Authorization And Privacy
48
+
49
+ - [ ] User changes an ID in the URL or payload.
50
+ - [ ] Logs or errors expose sensitive data.
51
+ - [ ] Permission validation happens on the server, not only in UI.
52
+
53
+ ### 6. Volume And Performance
54
+
55
+ - [ ] Large result set.
56
+ - [ ] Required indexes for queries.
57
+ - [ ] Explicit response limits.
58
+
59
+ ## Expected Output
60
+
61
+ Add an `### Edge cases` section to the design or local issue with:
62
+
63
+ - Cases that pass.
64
+ - Cases that create implementation tasks.
65
+ - Cases that do not apply, with justification.
66
+
67
+ ## Limits
68
+
69
+ - Do not invent unrelated cases.
70
+ - If investigation takes more than 30 minutes, create a spike.
71
+ - This complements QA; it does not replace it.
@@ -8,7 +8,7 @@
8
8
  | `sdlc install --mode legacy` | instala gobierno en proyecto brownfield |
9
9
  | `sdlc doctor --json` | valida estado instalado |
10
10
  | `sdlc diff --json` | detecta drift contra templates |
11
- | `sdlc upgrade --to-version 1.2.0` | aplica migraciones |
11
+ | `sdlc upgrade --to-version 1.3.0` | aplica migraciones |
12
12
  | `sdlc rollback --to <backup>` | restaura backup |
13
13
  | `sdlc prune-backups --keep 5` | limpia backups antiguos |
14
14
 
@@ -172,6 +172,8 @@ templates:
172
172
  target: .claude/skills/enrich-us/SKILL.md
173
173
  - source: .github/skills/enrich-us/SKILL.md
174
174
  target: .github/skills/enrich-us/SKILL.md
175
+ - source: .github/skills/edge-case-hunter/SKILL.md
176
+ target: .github/skills/edge-case-hunter/SKILL.md
175
177
  - source: .claude/skills/commit/SKILL.md
176
178
  target: .claude/skills/commit/SKILL.md
177
179
  - source: .github/skills/commit/SKILL.md
@@ -14,6 +14,7 @@
14
14
  "commit",
15
15
  "contexto-proyecto",
16
16
  "documentacion-viva",
17
+ "edge-case-hunter",
17
18
  "enrich-us",
18
19
  "openspec-apply",
19
20
  "openspec-archive",
@@ -1,5 +1,5 @@
1
1
  version: 1
2
- updated: "2026-05-18"
2
+ updated: "2026-05-19"
3
3
 
4
4
  roles:
5
5
  orquestador:
@@ -25,6 +25,36 @@ platforms:
25
25
  windsurf:
26
26
  default: claude-sonnet-4-6
27
27
 
28
+ # Per-phase model assignment (opt-in, v1.3.0+).
29
+ # Asignar modelos distintos a cada fase del flujo SDD para optimizar costo sin
30
+ # perder calidad en pasos críticos. Cuando una fase no aparezca aquí, se usa el
31
+ # rol equivalente (ver bloque `roles` arriba). Esto NO reemplaza `roles`/`platforms`;
32
+ # es una capa de override más fina.
33
+ #
34
+ # Convenciones:
35
+ # - Claves: nombres canónicos de fase F0-F17 (ver docs/agents/presentacion-sistema-multiagente-sdlc.md)
36
+ # o pseudo-fases SDD (`sdd-explore`, `sdd-design`, `sdd-implement`, `sdd-review`).
37
+ # - Valores: { primary, fallback }, mismo schema que `roles`.
38
+ # - Modelos `cheap:*` o `:free` quedan permitidos para exploración/triage donde la
39
+ # precisión no es crítica. Ver ADR 0003 para criterios.
40
+ phases:
41
+ # F0 triage / exploración rápida → modelo barato
42
+ sdd-explore:
43
+ primary: claude-haiku-4-5-20251001
44
+ fallback: claude-sonnet-4-6
45
+ # F2-F3 análisis y diseño → modelo más capaz
46
+ sdd-design:
47
+ primary: claude-opus-4-7
48
+ fallback: claude-sonnet-4-6
49
+ # F5+ implementación → modelo intermedio
50
+ sdd-implement:
51
+ primary: claude-sonnet-4-6
52
+ fallback: claude-haiku-4-5-20251001
53
+ # F6+ verificación / review → modelo intermedio con fallback a haiku
54
+ sdd-review:
55
+ primary: claude-sonnet-4-6
56
+ fallback: claude-haiku-4-5-20251001
57
+
28
58
  fallbacks:
29
59
  - claude-sonnet-4-6
30
60
  - claude-haiku-4-5-20251001