vgxness 1.13.0 → 1.14.1
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 +2 -1
- package/dist/agents/canonical-agent-manifest.js +8 -7
- package/dist/cli/cli-flags.js +3 -3
- package/dist/cli/cli-help.js +4 -4
- package/dist/cli/commands/agent-skill-dispatcher.js +10 -1
- package/dist/mcp/control-plane.js +5 -0
- package/dist/mcp/schema.js +1 -0
- package/dist/mcp/validation.js +6 -0
- package/dist/memory/sqlite/migrations/017_intent_signal_skill_targets.sql +42 -0
- package/dist/orchestrator/natural-language-planner.js +53 -8
- package/dist/skills/boot-seed.js +42 -0
- package/dist/skills/skill-resolver.js +13 -2
- package/dist/skills/skill-seed-service.js +39 -16
- package/docs/architecture.md +9 -8
- package/docs/cli.md +14 -13
- package/docs/project-health-audit-v1.10.x.md +2 -0
- package/docs/project-health-audit-v1.14.x.md +79 -0
- package/docs/project-health-audit-v1.9.1.md +1 -1
- package/docs/providers.md +1 -1
- package/docs/roadmap.md +1 -1
- package/docs/sdd-flow.es.md +403 -0
- package/docs/sdd-flow.md +403 -0
- package/package.json +1 -1
- package/seeds/skills/skill-seed-v1.json +73 -1
package/docs/cli.md
CHANGED
|
@@ -577,7 +577,7 @@ This seed file is repo-only in v1.3.0 package contents. If installed-package wor
|
|
|
577
577
|
|
|
578
578
|
The command prints an `AgentSeedLoadSummary` JSON payload with `created`, `updated`, `agents`, `subagents`, and `warnings`. Re-running the same seed is safe: records are upserted by the current project, scope, and name, so existing seed records are updated in place instead of duplicated.
|
|
579
579
|
|
|
580
|
-
The checked-in `vgxness-manager` and SDD subagents are self-contained: their seed instructions describe the MCP-first orchestration contract inline and do not require
|
|
580
|
+
The checked-in `vgxness-manager` and SDD subagents are self-contained: their seed instructions describe the MCP-first orchestration contract inline and do not require external provider-native skill directories. SDD skills can still be registered and attached as optional VGXNESS registry assets when a project wants extra reusable guidance.
|
|
581
581
|
|
|
582
582
|
Seed loading preserves user-created agents that are absent from the manifest. It only writes to the selected local registry database (`--db`, `VGXNESS_DB_PATH`, or the global default); it does **not** create `.opencode/`, `.claude/`, provider config, or user/global OpenCode configuration.
|
|
583
583
|
|
|
@@ -592,20 +592,18 @@ The render command returns preview artifacts only and keeps provider config unto
|
|
|
592
592
|
|
|
593
593
|
## Skill examples
|
|
594
594
|
|
|
595
|
-
|
|
595
|
+
Inspect the built-in VGXNESS registry/context skills and resolve the context that would be available to a workflow phase. These examples are registry-managed guidance only; they do not install provider-native OpenCode skills or write provider config:
|
|
596
596
|
|
|
597
597
|
```bash
|
|
598
|
-
bun run cli:bun -- skills
|
|
599
|
-
bun run cli:bun -- skills
|
|
600
|
-
bun run cli:bun -- skills attach --project vgxness --name sdd-apply --target-type workflow-phase --target-key sdd:apply
|
|
601
|
-
bun run cli:bun -- skills record-usage --project vgxness --name sdd-apply --outcome helped --run-id <run-id> --target-type workflow-phase --target-key sdd:apply
|
|
598
|
+
bun run cli:bun -- skills get --project vgxness --name vgxness-sdd-apply
|
|
599
|
+
bun run cli:bun -- skills payload --project vgxness --workflow sdd --phase apply-progress --intent-signals git,tdd,review-size --provider opencode
|
|
602
600
|
```
|
|
603
601
|
|
|
604
602
|
Resolve the skills that would be available to a runtime context:
|
|
605
603
|
|
|
606
604
|
```bash
|
|
607
|
-
bun run cli:bun -- skills resolve --
|
|
608
|
-
bun run cli:bun -- skills resolve --
|
|
605
|
+
bun run cli:bun -- skills resolve --project vgxness --workflow sdd --phase apply-progress --intent-signals git,tdd,review-size --provider opencode
|
|
606
|
+
bun run cli:bun -- skills resolve --project vgxness --workflow plan --phase pr --intent-signals workflow-selection,pull-request --provider opencode
|
|
609
607
|
```
|
|
610
608
|
|
|
611
609
|
`skills resolve` is read-only by default. It combines matching skill attachments plus the agent definition `skills` field, returns active/current versions only, and includes source metadata plus inline `summary`/`content` when available. It records `selected` or `injected` usage only when both `--run` and `--record-usage` are explicit.
|
|
@@ -619,10 +617,13 @@ bun run cli:bun -- skills status --project vgxness --scope project --provider op
|
|
|
619
617
|
|
|
620
618
|
`skills status` prints deterministic JSON with `kind: "skills-status"` and `version: 1`. It includes project/scope/provider context, registry skill counts and current-version status, declared/resolved/missing skills for matching agents or subagents, resolver diagnostics, and safety markers. The command is read-only: it does not repair, install, or write provider configuration and does not record skill usage. A missing `--agent` match returns valid JSON with a warning diagnostic instead of crashing.
|
|
621
619
|
|
|
622
|
-
|
|
620
|
+
Register and review an optional project-local registry skill without activating provider-native OpenCode skill loading:
|
|
623
621
|
|
|
624
622
|
```bash
|
|
625
|
-
bun run cli:bun -- skills
|
|
623
|
+
bun run cli:bun -- skills register --project vgxness --name team-review-guidance --description "Team-specific review guidance"
|
|
624
|
+
bun run cli:bun -- skills add-version --project vgxness --name team-review-guidance --version 1.0.0 --source-kind inline --inline-metadata '{"content":"Check product risk, review size, and rollback notes."}' --activate
|
|
625
|
+
bun run cli:bun -- skills attach --project vgxness --name team-review-guidance --target-type intent-signal --target-key review-size
|
|
626
|
+
bun run cli:bun -- skills propose --project vgxness --name team-review-guidance --proposed-version 1.1.0 --source-kind inline --inline-metadata '{"content":"Revised team guidance."}' --rationale "Repeated correction from trace" --source-signal '{"kind":"trace-failure"}'
|
|
626
627
|
bun run cli:bun -- skills proposals --status draft
|
|
627
628
|
bun run cli:bun -- skills get-proposal --proposal <proposal-id>
|
|
628
629
|
```
|
|
@@ -640,7 +641,7 @@ Rejected or cancelled proposals cannot be applied. These commands store reviewab
|
|
|
640
641
|
Build an injection-ready payload without mutating provider config:
|
|
641
642
|
|
|
642
643
|
```bash
|
|
643
|
-
bun run cli:bun -- skills payload --
|
|
644
|
+
bun run cli:bun -- skills payload --project vgxness --workflow sdd --phase apply-progress --intent-signals git,tdd,review-size --provider opencode
|
|
644
645
|
```
|
|
645
646
|
|
|
646
647
|
`skills payload` resolves the same active skills and returns payload v1 JSON: skill identity/version, source kind, available content or an unavailable reason, attachment reasons, and ordering metadata. Inline `content` is included directly. Local `path` sources are loaded read-only only when they resolve inside the current workspace root. URL sources are never fetched in v1 and return `url_fetch_disabled`. The command does **not** write `.opencode/`, `.claude/`, provider prompts, or external skill files.
|
|
@@ -648,7 +649,7 @@ bun run cli:bun -- skills payload --agent apply-agent --project vgxness --workfl
|
|
|
648
649
|
`skills get` returns the current version, all versions, attachments, and usage records:
|
|
649
650
|
|
|
650
651
|
```bash
|
|
651
|
-
bun run cli:bun -- skills get --project vgxness --name sdd-apply
|
|
652
|
+
bun run cli:bun -- skills get --project vgxness --name vgxness-sdd-apply
|
|
652
653
|
bun run cli:bun -- skills list --project vgxness
|
|
653
654
|
```
|
|
654
655
|
|
|
@@ -676,7 +677,7 @@ Use `--file` when a definition has permissions, memory, workflows, skills, or ad
|
|
|
676
677
|
"permissions": { "read": "allow", "edit": "ask", "shell": "ask" },
|
|
677
678
|
"memory": { "scopes": ["project"] },
|
|
678
679
|
"workflows": ["sdd"],
|
|
679
|
-
"skills": ["sdd-apply"],
|
|
680
|
+
"skills": ["vgxness-sdd-apply"],
|
|
680
681
|
"adapters": { "opencode": { "model": "openai/gpt-5.5" } }
|
|
681
682
|
}
|
|
682
683
|
```
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Auditoría de salud del proyecto VGXNESS v1.10.x
|
|
2
2
|
|
|
3
|
+
> Historical snapshot: this document records the v1.10.x health review and should not be treated as current status. See [Project health audit v1.14.x](./project-health-audit-v1.14.x.md) for the current system snapshot.
|
|
4
|
+
|
|
3
5
|
## Resumen ejecutivo
|
|
4
6
|
|
|
5
7
|
VGXNESS v1.10.x está en un punto avanzado como **CLI/MCP control plane local-first** para SDD, memoria, runs, permisos, agentes, skills y setup de OpenCode. La base de producto es sólida: hay workflow SDD canónico, storage SQLite local, superficies read-only/advisory, provider doctor, agent manifest canónico y verificación Bun-first.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Auditoría de salud del proyecto VGXNESS v1.14.x
|
|
2
|
+
|
|
3
|
+
## Resumen ejecutivo
|
|
4
|
+
|
|
5
|
+
VGXNESS v1.14.x está avanzado como **CLI/MCP control plane local-first** para SDD, memoria, runs, permisos, agentes, skills y setup de OpenCode. La base de producto es sólida: el flujo SDD canónico existe como estado SQLite-backed, OpenCode es el provider primario, los drafts y la aceptación humana están separados, y la ruta oficial de verificación es Bun-first.
|
|
6
|
+
|
|
7
|
+
No debe tratarse como “versión final cerrada” hasta resolver la brecha de ejecución/recovery productiva. El sistema gobierna, audita, planea y guía mejor de lo que ejecuta efectos reales de forma autónoma: el executor real, `resume-after-approval`, materialización de sandbox/worktree y evidencia integrada en cockpit siguen siendo trabajo planificado.
|
|
8
|
+
|
|
9
|
+
Esta auditoría es una foto de release-readiness v1.14.x basada en inspección del repositorio, subauditorías internas y verificación local de release candidate. No publica artefactos ni sustituye la aprobación humana explícita de publicación.
|
|
10
|
+
|
|
11
|
+
## Evidencia observada
|
|
12
|
+
|
|
13
|
+
| Área | Evidencia | Estado |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Package | `package.json` declara `version: 1.14.1` y expone los binarios `vgxness`/`vgx` desde `dist/cli/bun-bin.js`. | Implementado |
|
|
16
|
+
| Release history | `CHANGELOG.md` contiene `v1.14.1 — 2026-06-17` para el cierre de release-readiness posterior al tag `v1.14.0`. | Implementado |
|
|
17
|
+
| Runtime/tooling | `package.json` codifica la ruta oficial `bun run verify`: typecheck, tests Node, tests Bun storage-backed, Bun SQLite y evidencia de paquete. | Implementado |
|
|
18
|
+
| Release candidate verification | La ruta completa `verify:typecheck`, `verify:test`, `verify:test:bun-storage`, `verify:bun-sqlite` y `package:bun:evidence -- --require-pass` pasó localmente; package evidence reportó `releaseReadiness.status: pass` y `publicationAttempted: false`. | Validado |
|
|
19
|
+
| CI | `.github/workflows/node22.yml` ahora ejecuta también `bun run verify:test:bun-storage`, alineando el gate principal con `package.json`. | Alineado |
|
|
20
|
+
| CLI/MCP | README y docs describen CLI para bootstrap/diagnóstico/recovery y MCP para trabajo diario dentro de OpenCode. | Implementado |
|
|
21
|
+
| SDD | Fases canónicas `explore → proposal → spec → design → tasks → apply-progress → verify → archive`; aceptación humana separada de presencia de artifact. | Implementado |
|
|
22
|
+
| Providers | OpenCode es primario; Claude es secundario/guarded; Antigravity/custom son placeholder/extensión. | Implementado con límites |
|
|
23
|
+
| Code runtime | El runtime experimental `vgxness code` y la superficie principal OpenTUI están removidos temporalmente. | Fuera de release |
|
|
24
|
+
| Docs | README, architecture, providers, roadmap y auditorías históricas apuntan a este snapshot v1.14.x como actual. | Alineado |
|
|
25
|
+
|
|
26
|
+
## Estado por superficie
|
|
27
|
+
|
|
28
|
+
### CLI y MCP
|
|
29
|
+
|
|
30
|
+
La CLI está madura para setup, status, recuperación, SDD, runs, permisos, agentes, skills, MCP y verificación. La superficie MCP es la ruta diaria recomendada para trabajar desde OpenCode con subagentes SDD ocultos. Los comandos preview/status/plan mantienen el contrato no mutante respecto a provider config; las escrituras de config requieren consentimiento explícito.
|
|
31
|
+
|
|
32
|
+
### SDD governance
|
|
33
|
+
|
|
34
|
+
La fortaleza principal del producto es que SDD no depende solo de prompts: fases, artifacts, readiness, aceptación humana, runs y eventos viven como estado consultable. La aceptación humana sigue siendo un gate separado; guardar drafts no implica aceptación.
|
|
35
|
+
|
|
36
|
+
### Release y paquete
|
|
37
|
+
|
|
38
|
+
El release gate debe ser Bun-first:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
bun run verify:typecheck
|
|
42
|
+
bun run verify:test
|
|
43
|
+
bun run verify:test:bun-storage
|
|
44
|
+
bun run verify:bun-sqlite
|
|
45
|
+
bun run package:bun:evidence -- --require-pass
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
CI debe permanecer alineado con esa ruta. La publicación sigue siendo una operación separada, explícita y humana; esta auditoría no aprueba ni intenta publicación.
|
|
49
|
+
|
|
50
|
+
### Ejecución y recovery
|
|
51
|
+
|
|
52
|
+
El mayor gap de producto sigue siendo operacional: `docs/roadmap.md` marca como pendiente el executor real, `resume-after-approval`, materialización sandbox/worktree y mejores resúmenes de evidencia de verificación. Hasta cerrar eso, VGXNESS es muy fuerte como control plane y guía de workflow, pero no como runtime autónomo final.
|
|
53
|
+
|
|
54
|
+
## Riesgos principales
|
|
55
|
+
|
|
56
|
+
| Riesgo | Impacto | Recomendación |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| Release tag pendiente | Riesgo de publicar contenido sin tag/release note correspondiente. | Taggear/publicar solo después de revisar diff final y con aprobación humana explícita. |
|
|
59
|
+
| Execution/resume gap | El producto puede dejar al usuario en recuperación manual para runs complejos. | Priorizar executor real, checkpoints útiles y `resume-after-approval`. |
|
|
60
|
+
| Cockpit sin evidencia rica | “Por qué está bloqueado” puede requerir inspección adicional. | Integrar pass/fail/skipped, timestamp y evidencia por fase. |
|
|
61
|
+
| Provider wording drift | Usuarios pueden asumir paridad completa fuera de OpenCode. | Mantener OpenCode como primario y Claude/otros con límites explícitos. |
|
|
62
|
+
| TUI/code-runtime removidos | Puede haber expectativas viejas de `vgxness code`. | Mantener docs claras: la ruta diaria es OpenCode + MCP; CLI es fallback/diagnóstico. |
|
|
63
|
+
|
|
64
|
+
## Próximo paso recomendado
|
|
65
|
+
|
|
66
|
+
Para cerrar un release candidate v1.14.x:
|
|
67
|
+
|
|
68
|
+
1. Revisar el diff final y commit/tag de release si corresponde.
|
|
69
|
+
2. Confirmar que CI reproduce la cadena oficial completa en la rama remota.
|
|
70
|
+
3. No publicar hasta que la evidencia de paquete reporte `releaseReadiness.status: pass` y exista aprobación humana explícita.
|
|
71
|
+
|
|
72
|
+
Para avanzar hacia “versión final” de producto, abrir un cambio SDD separado para **final-product readiness hardening** con foco en executor/recovery/cockpit evidence.
|
|
73
|
+
|
|
74
|
+
## Fuera de alcance de esta auditoría
|
|
75
|
+
|
|
76
|
+
- No se publicó ni se contactó un registry.
|
|
77
|
+
- No se mutó provider config.
|
|
78
|
+
- No se aceptó ningún artifact SDD.
|
|
79
|
+
- No se creó tag de release.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Auditoría de salud del proyecto VGXNESS v1.9.1
|
|
2
2
|
|
|
3
|
-
> Historical snapshot: this document records validated v1.9.1 evidence and should not be treated as current
|
|
3
|
+
> Historical snapshot: this document records validated v1.9.1 evidence and should not be treated as current status. See [Project health audit v1.14.x](./project-health-audit-v1.14.x.md) for the current system snapshot.
|
|
4
4
|
|
|
5
5
|
## Resumen v1.9.1
|
|
6
6
|
|
package/docs/providers.md
CHANGED
|
@@ -4,7 +4,7 @@ VGXNESS is provider-agnostic at the core: the registry stores provider-neutral d
|
|
|
4
4
|
|
|
5
5
|
## Status
|
|
6
6
|
|
|
7
|
-
Current as of the v1.
|
|
7
|
+
Current as of the v1.14.x documentation snapshot.
|
|
8
8
|
|
|
9
9
|
| Provider | Control plane | Workspace runtime | Notes |
|
|
10
10
|
|---|---|---|---|
|
package/docs/roadmap.md
CHANGED
|
@@ -41,7 +41,7 @@ SQLite, scopes, migrations, and the run snapshot export are in.
|
|
|
41
41
|
|
|
42
42
|
## TUI
|
|
43
43
|
|
|
44
|
-
The principal code surface is
|
|
44
|
+
The previous principal OpenTUI code surface is temporarily unavailable. The legacy interactive setup surfaces and dashboard directory are absent in the current tree; future TUI work should be rebuilt around the current MCP/CLI control-plane boundaries rather than the removed runtime.
|
|
45
45
|
|
|
46
46
|
- **TUI dashboard screen.** Real-time view of active runs, pending approvals, and SDD blockers. Should match the cockpit surface from MCP.
|
|
47
47
|
- **TUI runs screen.** Run list, drill into a run, see events/approvals/attempts, with read-only safe actions.
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
# Flujo SDD
|
|
2
|
+
|
|
3
|
+
> Versión en inglés: [SDD Flow](./sdd-flow.md).
|
|
4
|
+
|
|
5
|
+
> **Alcance:** este documento explica el flujo SDD completo en VGXNESS: desde una intención humana, pasando por artefactos de planeación, progreso de implementación, verificación y archivo. Es una guía práctica para operadores y acompaña a [Architecture](./architecture.md), [Safety](./safety.md), [CLI](./cli.md) y [MCP tools](./mcp.md).
|
|
6
|
+
|
|
7
|
+
VGXNESS trata SDD como estado real del producto, no solo como instrucciones para agentes. Cada fase produce un artefacto guardado localmente en SQLite, y el avance entre fases se controla mediante readiness explícito y, cuando aplica, aceptación humana explícita.
|
|
8
|
+
|
|
9
|
+
Las fases canónicas de SDD son:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
explore → proposal → spec → design → tasks → apply-progress → verify → archive
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Modelo mental
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
Intención humana
|
|
19
|
+
↓
|
|
20
|
+
Conversación en OpenCode / acción del operador por CLI
|
|
21
|
+
↓
|
|
22
|
+
Superficie VGXNESS MCP o CLI
|
|
23
|
+
↓
|
|
24
|
+
Servicios del control plane
|
|
25
|
+
↓
|
|
26
|
+
Artefactos SDD, runs, memoria y checkpoints en SQLite
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
La separación importante es:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
Conversación ≠ estado
|
|
33
|
+
Draft ≠ aceptación
|
|
34
|
+
Plan ≠ ejecución
|
|
35
|
+
Preflight ≠ permiso automático
|
|
36
|
+
Provider status ≠ escritura de config del provider
|
|
37
|
+
CLI/MCP ≠ reglas de negocio duplicadas
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 1. Intención humana
|
|
41
|
+
|
|
42
|
+
El flujo empieza cuando el humano expresa un objetivo, normalmente dentro de OpenCode después de instalar el MCP de VGXNESS.
|
|
43
|
+
|
|
44
|
+
Ejemplo:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
Mejorar el flujo de recuperación de runs interrumpidos para que VGXNESS sugiera cómo continuar de forma segura.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Para cambios sustanciales, VGXNESS no debería saltar directo al código. El camino seguro es inspeccionar el estado SDD actual y elegir la siguiente fase válida.
|
|
51
|
+
|
|
52
|
+
Superficies útiles:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
sdd_status
|
|
56
|
+
sdd_next
|
|
57
|
+
sdd_continue
|
|
58
|
+
agent_resolve
|
|
59
|
+
agent_activate
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Equivalentes por CLI para setup, diagnóstico, recuperación y scripting:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
vgxness sdd status --project <project> --change <change>
|
|
66
|
+
vgxness sdd next --project <project> --change <change>
|
|
67
|
+
vgxness sdd continue --project <project> --change <change>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 2. `explore`: entender antes de elegir solución
|
|
71
|
+
|
|
72
|
+
Objetivo: investigar el problema, los límites actuales del código, decisiones previas, riesgos y posibles enfoques sin comprometerse todavía con una implementación.
|
|
73
|
+
|
|
74
|
+
Preguntas típicas:
|
|
75
|
+
|
|
76
|
+
- ¿Dónde vive la lógica relevante?
|
|
77
|
+
- ¿Qué herramientas CLI y MCP ya existen?
|
|
78
|
+
- ¿Qué servicio es dueño de la regla de dominio?
|
|
79
|
+
- ¿Qué restricciones de safety o storage aplican?
|
|
80
|
+
- ¿Qué riesgos harían difícil revisar el cambio?
|
|
81
|
+
|
|
82
|
+
Para recuperación de runs interrumpidos, la exploración podría revisar:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
src/runs/*
|
|
86
|
+
src/sdd/*
|
|
87
|
+
src/mcp/control-plane.ts
|
|
88
|
+
src/cli/commands/*
|
|
89
|
+
docs/*
|
|
90
|
+
test/*
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
El artefacto de fase se guarda con el topic key canónico:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
sdd/{change}/explore
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Un agente puede marcar el artefacto como ready, pero readiness no es aceptación.
|
|
100
|
+
|
|
101
|
+
## 3. Aceptación humana de `explore`
|
|
102
|
+
|
|
103
|
+
VGXNESS separa deliberadamente contenido generado y aprobación humana:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
draft / ready ≠ accepted
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Solo una decisión humana de aceptación debería avanzar trabajo posterior que esté gobernado por gates. Esto evita que un agente apruebe silenciosamente su propia dirección.
|
|
110
|
+
|
|
111
|
+
Ejemplo CLI:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
vgxness sdd accept-artifact --project <project> --change <change> --phase explore
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 4. `proposal`: elegir dirección de producto
|
|
118
|
+
|
|
119
|
+
Objetivo: definir qué cambio debe hacerse y por qué.
|
|
120
|
+
|
|
121
|
+
Una buena propuesta responde:
|
|
122
|
+
|
|
123
|
+
- ¿Qué problema estamos resolviendo?
|
|
124
|
+
- ¿Quién se beneficia?
|
|
125
|
+
- ¿Qué está dentro del alcance?
|
|
126
|
+
- ¿Qué queda explícitamente fuera del alcance?
|
|
127
|
+
- ¿Qué riesgos o tradeoffs existen?
|
|
128
|
+
- ¿Cómo sabremos que funcionó?
|
|
129
|
+
|
|
130
|
+
Ejemplo de resumen de propuesta:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
Agregar una superficie read-only de continuación para runs interrumpidos que combine runs failed/blocked/needs-human, el último checkpoint, la fase SDD asociada y una siguiente acción recomendada segura.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Esto sigue siendo definición de dirección, no implementación.
|
|
137
|
+
|
|
138
|
+
## 5. Aceptación humana de `proposal`
|
|
139
|
+
|
|
140
|
+
La propuesta es el contrato principal de alcance. Si es demasiado amplia, la implementación y la revisión se vuelven riesgosas.
|
|
141
|
+
|
|
142
|
+
Pregunta recomendada para revisión:
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
¿Esto puede revisarse como un slice coherente o deberíamos dividirlo?
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Por ejemplo, un primer slice más seguro puede ser:
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
Diagnóstico read-only de runs interrumpidos antes de cualquier recuperación automática o ejecución de provider.
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Después de aceptar exactamente la propuesta, se pueden generar borradores downstream de planeación, pero esos artefactos siguen siendo drafts hasta que se revisen y acepten según la gobernanza.
|
|
155
|
+
|
|
156
|
+
## 6. `spec`: definir comportamiento observable
|
|
157
|
+
|
|
158
|
+
Objetivo: especificar qué debe hacer el sistema sin sobreadaptarse a detalles de implementación.
|
|
159
|
+
|
|
160
|
+
Para recuperación de runs interrumpidos, una spec podría requerir:
|
|
161
|
+
|
|
162
|
+
- Runs con estado `failed`, `blocked` o `needs-human` aparecen como candidatos de recuperación.
|
|
163
|
+
- Cada candidato incluye run id, proyecto, workflow, fase, estado, último checkpoint, razón de fallo o bloqueo y siguiente acción recomendada.
|
|
164
|
+
- El estado vacío es explícito cuando no existen runs interrumpidos.
|
|
165
|
+
- La superficie es read-only y no reanuda providers ni muta estado de runs.
|
|
166
|
+
|
|
167
|
+
La spec debe incluir casos límite, por ejemplo:
|
|
168
|
+
|
|
169
|
+
- muchos runs interrumpidos;
|
|
170
|
+
- runs sin checkpoints;
|
|
171
|
+
- runs de otro proyecto;
|
|
172
|
+
- runs ligados a fases SDD ya aceptadas;
|
|
173
|
+
- metadata incompleta o inconsistente.
|
|
174
|
+
|
|
175
|
+
## 7. `design`: decidir cómo construirlo
|
|
176
|
+
|
|
177
|
+
Objetivo: conectar la spec con la arquitectura existente.
|
|
178
|
+
|
|
179
|
+
Un buen diseño identifica:
|
|
180
|
+
|
|
181
|
+
- límites de servicio;
|
|
182
|
+
- cambios de repository/query;
|
|
183
|
+
- superficies CLI y MCP;
|
|
184
|
+
- agregados de schema;
|
|
185
|
+
- comportamiento de renderers;
|
|
186
|
+
- tests;
|
|
187
|
+
- necesidad de migraciones, si aplica;
|
|
188
|
+
- invariantes de safety.
|
|
189
|
+
|
|
190
|
+
Ejemplo de diseño:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
Agregar un servicio de candidatos de resume respaldado por el repositorio de runs.
|
|
194
|
+
Exponer herramientas MCP read-only para listar e inspeccionar candidatos.
|
|
195
|
+
Exponer un comando CLI de recuperación/status que use el mismo servicio.
|
|
196
|
+
Mantener la generación de recomendaciones como no-mutante.
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Reglas arquitectónicas que preservar:
|
|
200
|
+
|
|
201
|
+
- CLI y MCP deben compartir servicios de dominio.
|
|
202
|
+
- Los renderers no deben reimplementar reglas de negocio.
|
|
203
|
+
- Las herramientas read-only deben seguir siendo no-mutantes.
|
|
204
|
+
- Las escrituras de configuración de provider requieren consentimiento humano explícito.
|
|
205
|
+
- Los artefactos SDD siguen respaldados por SQLite; no crear `openspec/`.
|
|
206
|
+
|
|
207
|
+
## 8. `tasks`: hacer el diseño revisable
|
|
208
|
+
|
|
209
|
+
Objetivo: dividir el diseño en pasos pequeños de implementación.
|
|
210
|
+
|
|
211
|
+
Ejemplo de desglose:
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
1. Agregar query de repositorio para runs interrumpidos.
|
|
215
|
+
2. Agregar servicio de candidatos de resume.
|
|
216
|
+
3. Agregar schema MCP y herramientas read-only.
|
|
217
|
+
4. Agregar comando CLI o extender la superficie existente de recovery/status.
|
|
218
|
+
5. Agregar salida de renderer para estados vacío, único candidato y múltiples candidatos.
|
|
219
|
+
6. Agregar tests enfocados de servicio.
|
|
220
|
+
7. Agregar tests de contrato CLI/MCP.
|
|
221
|
+
8. Actualizar docs si cambia comportamiento visible para el usuario.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Buenas tasks son pequeñas, testeables y fáciles de revisar.
|
|
225
|
+
|
|
226
|
+
## 9. `apply-progress`: implementar con progreso trazable
|
|
227
|
+
|
|
228
|
+
Objetivo: hacer el cambio de código mientras se registra qué cambió, qué falta y qué evidencia existe.
|
|
229
|
+
|
|
230
|
+
Antes de implementar, revisar tamaño y riesgo:
|
|
231
|
+
|
|
232
|
+
- ¿El cambio toca varios subsistemas?
|
|
233
|
+
- ¿Altera storage o migraciones?
|
|
234
|
+
- ¿Cambia schemas MCP?
|
|
235
|
+
- ¿Cambia comportamiento de safety?
|
|
236
|
+
- ¿El diff es demasiado grande para una sola revisión?
|
|
237
|
+
|
|
238
|
+
Si el cambio es demasiado amplio, hay que dividirlo antes de implementar.
|
|
239
|
+
|
|
240
|
+
Durante la implementación, `apply-progress` debería capturar:
|
|
241
|
+
|
|
242
|
+
- trabajo completado;
|
|
243
|
+
- archivos o módulos modificados;
|
|
244
|
+
- tareas pendientes;
|
|
245
|
+
- resultados de tests;
|
|
246
|
+
- blockers conocidos;
|
|
247
|
+
- desviaciones del diseño aceptado.
|
|
248
|
+
|
|
249
|
+
`apply-progress` es un registro de progreso, no prueba de que la implementación sea correcta.
|
|
250
|
+
|
|
251
|
+
## 10. Preflight para operaciones riesgosas
|
|
252
|
+
|
|
253
|
+
VGXNESS usa preflight checks para mantener explícitas las operaciones riesgosas.
|
|
254
|
+
|
|
255
|
+
Ejemplos de categorías riesgosas:
|
|
256
|
+
|
|
257
|
+
```text
|
|
258
|
+
implementation-edit
|
|
259
|
+
shell
|
|
260
|
+
test-run
|
|
261
|
+
install
|
|
262
|
+
git-write
|
|
263
|
+
provider-tool
|
|
264
|
+
secrets
|
|
265
|
+
external-directory
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Ejemplo conceptual MCP:
|
|
269
|
+
|
|
270
|
+
```text
|
|
271
|
+
run_preflight({
|
|
272
|
+
category: "test-run",
|
|
273
|
+
operation: "bun run verify:test",
|
|
274
|
+
workflow: "sdd",
|
|
275
|
+
phase: "apply-progress"
|
|
276
|
+
})
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Preflight es control consultivo/de planeación. No significa que la operación esté automáticamente aprobada o ejecutada.
|
|
280
|
+
|
|
281
|
+
## 11. `verify`: comprobar la implementación independientemente
|
|
282
|
+
|
|
283
|
+
Objetivo: verificar la implementación contra la spec y el design aceptados, idealmente con contexto fresco de revisor/agente para cambios no triviales.
|
|
284
|
+
|
|
285
|
+
La verificación debe revisar:
|
|
286
|
+
|
|
287
|
+
- que la spec se cumpla;
|
|
288
|
+
- que los límites del diseño se respeten o las desviaciones estén justificadas;
|
|
289
|
+
- que los tests relevantes pasen;
|
|
290
|
+
- que superficies read-only no se hayan vuelto mutantes;
|
|
291
|
+
- que setup/config de providers sigan requiriendo consentimiento explícito;
|
|
292
|
+
- que storage, CLI y MCP sigan siendo consistentes.
|
|
293
|
+
|
|
294
|
+
Comandos típicos de verificación del repo:
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
bun run verify:typecheck
|
|
298
|
+
bun run verify:test
|
|
299
|
+
bun run verify:bun-sqlite
|
|
300
|
+
bun run package:bun:evidence
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
No todo cambio pequeño de docs o copy necesita la suite completa. Cambios de storage, schema CLI/MCP, setup de providers o packaging merecen verificación más estricta.
|
|
304
|
+
|
|
305
|
+
## 12. `archive`: cerrar el cambio con contexto durable
|
|
306
|
+
|
|
307
|
+
Objetivo: preservar qué ocurrió para que trabajo futuro pueda recuperar contexto sin releer todo el hilo o diff.
|
|
308
|
+
|
|
309
|
+
Un artefacto de archive debería incluir:
|
|
310
|
+
|
|
311
|
+
- resultado final;
|
|
312
|
+
- comportamiento visible que cambió;
|
|
313
|
+
- archivos o módulos clave tocados;
|
|
314
|
+
- verificación realizada;
|
|
315
|
+
- riesgos residuales;
|
|
316
|
+
- trabajo de seguimiento;
|
|
317
|
+
- notas de rollback o recuperación, si aplica.
|
|
318
|
+
|
|
319
|
+
Ejemplo de resumen archive:
|
|
320
|
+
|
|
321
|
+
```text
|
|
322
|
+
Change: recover-runs
|
|
323
|
+
Outcome: implemented a read-only interrupted-run recovery surface.
|
|
324
|
+
Verification: typecheck and focused service/CLI tests passed.
|
|
325
|
+
Residual risk: full package evidence was not run locally.
|
|
326
|
+
Follow-up: consider TUI integration after the CLI/MCP flow stabilizes.
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Boceto del flujo de herramientas
|
|
330
|
+
|
|
331
|
+
Dentro de OpenCode, el flujo normalmente se ve así conceptualmente:
|
|
332
|
+
|
|
333
|
+
```text
|
|
334
|
+
sdd_status
|
|
335
|
+
↓
|
|
336
|
+
sdd_continue
|
|
337
|
+
↓
|
|
338
|
+
agent_activate(explore)
|
|
339
|
+
↓
|
|
340
|
+
sdd_save_artifact(explore)
|
|
341
|
+
↓
|
|
342
|
+
sdd_ready(explore)
|
|
343
|
+
↓
|
|
344
|
+
humano acepta explore
|
|
345
|
+
↓
|
|
346
|
+
agent_activate(proposal)
|
|
347
|
+
↓
|
|
348
|
+
sdd_save_artifact(proposal)
|
|
349
|
+
↓
|
|
350
|
+
sdd_ready(proposal)
|
|
351
|
+
↓
|
|
352
|
+
humano acepta proposal
|
|
353
|
+
↓
|
|
354
|
+
agent_activate(spec)
|
|
355
|
+
↓
|
|
356
|
+
agent_activate(design)
|
|
357
|
+
↓
|
|
358
|
+
agent_activate(tasks)
|
|
359
|
+
↓
|
|
360
|
+
humano revisa/acepta artefactos con gate
|
|
361
|
+
↓
|
|
362
|
+
agent_activate(apply)
|
|
363
|
+
↓
|
|
364
|
+
run_preflight(...)
|
|
365
|
+
↓
|
|
366
|
+
sdd_save_artifact(apply-progress)
|
|
367
|
+
↓
|
|
368
|
+
agent_activate(verify)
|
|
369
|
+
↓
|
|
370
|
+
sdd_save_artifact(verify)
|
|
371
|
+
↓
|
|
372
|
+
archive
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## Por qué existe este flujo
|
|
376
|
+
|
|
377
|
+
Un flujo agentic ingenuo sería:
|
|
378
|
+
|
|
379
|
+
```text
|
|
380
|
+
leer código → editar código → correr tests → decir terminado
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
VGXNESS usa SDD para hacerlo más seguro:
|
|
384
|
+
|
|
385
|
+
```text
|
|
386
|
+
entender objetivo
|
|
387
|
+
↓
|
|
388
|
+
elegir alcance
|
|
389
|
+
↓
|
|
390
|
+
especificar comportamiento
|
|
391
|
+
↓
|
|
392
|
+
diseñar el cambio
|
|
393
|
+
↓
|
|
394
|
+
dividir en tareas
|
|
395
|
+
↓
|
|
396
|
+
implementar con preflight y tracking de progreso
|
|
397
|
+
↓
|
|
398
|
+
verificar independientemente
|
|
399
|
+
↓
|
|
400
|
+
archivar contexto durable
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
La estructura inicial cuesta un poco de tiempo, pero reduce scope creep oculto, diffs imposibles de revisar, automatización insegura y pérdida de contexto.
|