vgxness 1.9.3 → 1.9.5
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 +4 -3
- package/dist/agents/canonical-agent-manifest.js +35 -9
- package/dist/agents/canonical-agent-projection.js +15 -0
- package/dist/cli/cli-help.js +1 -1
- package/dist/cli/commands/mcp-dispatcher.js +49 -18
- package/dist/cli/commands/memory-sdd-dispatcher.js +6 -2
- package/dist/cli/commands/setup-dispatcher.js +22 -10
- package/dist/cli/product-status-renderer.js +9 -2
- package/dist/cli/sdd-renderer.js +33 -20
- package/dist/cli/tui/main-menu/main-menu-read-model.js +8 -8
- package/dist/cli/tui/setup/setup-tui-services.js +27 -10
- package/dist/mcp/client-install-opencode-contract.js +45 -31
- package/dist/mcp/client-install-opencode.js +35 -24
- package/dist/mcp/control-plane.js +5 -1
- package/dist/mcp/opencode-default-agent-config.js +7 -4
- package/dist/mcp/stdio-server.js +1 -1
- package/dist/sdd/cockpit-read-model.js +192 -0
- package/dist/sdd/cockpit-types.js +1 -0
- package/dist/setup/providers/opencode-setup-adapter.js +8 -5
- package/dist/setup/setup-plan.js +3 -1
- package/dist/status/product-status.js +5 -1
- package/docs/cli.md +19 -14
- package/docs/mcp.md +2 -2
- package/package.json +1 -1
|
@@ -61,8 +61,8 @@ export const openCodeSetupAdapter = {
|
|
|
61
61
|
writesProviderConfig: false,
|
|
62
62
|
summary: contract.status === 'would_install'
|
|
63
63
|
? contract.overwriteVgxness
|
|
64
|
-
? `OpenCode ${contract.action} reinstall plan is available; confirmed apply overwrites VGXNESS entries only, preserves unrelated config, and creates managed backups for existing targets.`
|
|
65
|
-
: `OpenCode ${contract.action} plan is available for external application; confirmed
|
|
64
|
+
? `OpenCode ${contract.action} reinstall plan is available; confirmed apply overwrites VGXNESS entries only, preserves unrelated config, sets permission.bash=allow, and creates managed backups for existing targets.`
|
|
65
|
+
: `OpenCode ${contract.action} plan is available for external application; confirmed applies mcp.vgxness and permission.bash=allow, and creates managed VGXNESS backups when merging.`
|
|
66
66
|
: contract.message,
|
|
67
67
|
...(targetPath !== undefined ? { targetPath } : {}),
|
|
68
68
|
warnings: contract.warnings,
|
|
@@ -122,7 +122,7 @@ function openCodePlanPreview(visibility, plan) {
|
|
|
122
122
|
targetPath: source.targetPath,
|
|
123
123
|
backupRequired: source.backupRequired,
|
|
124
124
|
confirmationRequired: Boolean(plan?.actions.some((candidate) => candidate.safety.requiresExplicitConfirmation)),
|
|
125
|
-
risks: source.overwriteVgxness ? overwriteInstallRisks(source.installsAgents) : source.action === 'create' ? createInstallRisks() : mergeInstallRisks(),
|
|
125
|
+
risks: [...(source.overwriteVgxness ? overwriteInstallRisks(source.installsAgents) : source.action === 'create' ? createInstallRisks() : mergeInstallRisks()), ...bashPermissionRisks(source.allowBash)],
|
|
126
126
|
warnings: source.warnings,
|
|
127
127
|
};
|
|
128
128
|
}
|
|
@@ -154,6 +154,9 @@ function overwriteInstallRisks(installsAgents) {
|
|
|
154
154
|
'OpenCode must be restarted after external installation before it discovers the updated vgxness MCP server.',
|
|
155
155
|
];
|
|
156
156
|
}
|
|
157
|
+
function bashPermissionRisks(allowBash) {
|
|
158
|
+
return allowBash === true ? ['OpenCode permission.bash is set to allow by default, so terminal commands may run without prompting after restart.'] : [];
|
|
159
|
+
}
|
|
157
160
|
function refusedRepairRisks(message) {
|
|
158
161
|
return [
|
|
159
162
|
`Install planner refused automatic repair: ${message}`,
|
|
@@ -176,8 +179,8 @@ function externalInstallAction(scope, targetPath, overwriteVgxness = false) {
|
|
|
176
179
|
kind: 'copy-command',
|
|
177
180
|
command: ['vgxness', 'mcp', 'install', 'opencode', '--scope', scope, '--yes', ...(overwriteVgxness ? ['--overwrite-vgxness'] : [])],
|
|
178
181
|
description: overwriteVgxness
|
|
179
|
-
? 'Copy and run this outside the TUI only after reviewing that VGXNESS entries will be overwritten
|
|
180
|
-
: 'Copy and run this outside the TUI only after reviewing the read-only plan.',
|
|
182
|
+
? 'Copy and run this outside the TUI only after reviewing that VGXNESS entries will be overwritten, unrelated config preserved, and bash allowed without prompts.'
|
|
183
|
+
: 'Copy and run this outside the TUI only after reviewing the read-only plan and bash permission risk.',
|
|
181
184
|
safety: externalProviderWriteSafety(targetPath),
|
|
182
185
|
};
|
|
183
186
|
}
|
package/dist/setup/setup-plan.js
CHANGED
|
@@ -131,6 +131,7 @@ function setupPlanFromOpenCode(input) {
|
|
|
131
131
|
installsAgents: input.opencode.installsAgents,
|
|
132
132
|
agentNames: input.opencode.agentNames,
|
|
133
133
|
...(input.opencode.overwriteVgxness ? { overwriteVgxness: true } : {}),
|
|
134
|
+
...(input.opencode.allowBash ? { allowBash: true } : {}),
|
|
134
135
|
},
|
|
135
136
|
actions: [],
|
|
136
137
|
conflicts: [
|
|
@@ -158,11 +159,12 @@ function setupPlanFromOpenCode(input) {
|
|
|
158
159
|
installsAgents: input.opencode.installsAgents,
|
|
159
160
|
agentNames: input.opencode.agentNames,
|
|
160
161
|
...(input.opencode.overwriteVgxness ? { overwriteVgxness: true } : {}),
|
|
162
|
+
...(input.opencode.allowBash ? { allowBash: true } : {}),
|
|
161
163
|
},
|
|
162
164
|
actions: [
|
|
163
165
|
{
|
|
164
166
|
id: `opencode-${input.opencode.action}`,
|
|
165
|
-
description: `${input.opencode.overwriteVgxness ? 'Reinstall/overwrite VGXNESS entries in' : input.opencode.action === 'create' ? 'Create' : 'Merge'} OpenCode config with mcp.vgxness using vgxness mcp start${input.installMode === 'mcp-plus-agents' ? ' and manager/SDD agents' : ''}${input.opencode.overwriteVgxness ? '; unrelated OpenCode config is preserved' : ''}.`,
|
|
167
|
+
description: `${input.opencode.overwriteVgxness ? 'Reinstall/overwrite VGXNESS entries in' : input.opencode.action === 'create' ? 'Create' : 'Merge'} OpenCode config with mcp.vgxness using vgxness mcp start${input.installMode === 'mcp-plus-agents' ? ' and manager/SDD agents' : ''}${input.opencode.overwriteVgxness ? '; unrelated OpenCode config is preserved' : ''}${input.opencode.allowBash ? '; sets permission.bash to allow by default' : ''}.`,
|
|
166
168
|
mutating: false,
|
|
167
169
|
targetPath: input.opencode.targetPath,
|
|
168
170
|
backupRequired: input.opencode.backupRequired,
|
|
@@ -82,7 +82,11 @@ function fromSddCockpit(cockpit, project, baseSafety, relatedRunContext) {
|
|
|
82
82
|
blockers: cockpit.aggregateBlockers.length === 0
|
|
83
83
|
? ['none']
|
|
84
84
|
: cockpit.aggregateBlockers.map((blocker) => `${blocker.phase}: ${blocker.reason} at ${blocker.topicKey}${blocker.action === undefined ? '' : `; action=${blocker.action}`}`),
|
|
85
|
-
next: [
|
|
85
|
+
next: [
|
|
86
|
+
cockpit.next.status === 'runnable' && cockpit.next.nextPhase !== undefined
|
|
87
|
+
? `Continue the ${cockpit.next.nextPhase} phase in OpenCode using VGXNESS MCP and hidden SDD subagents.`
|
|
88
|
+
: cockpit.recommendedAction,
|
|
89
|
+
],
|
|
86
90
|
command,
|
|
87
91
|
sddNextStatus: cockpit.next.status,
|
|
88
92
|
...(relatedRunContext === undefined ? {} : { relatedRunContext }),
|
package/docs/cli.md
CHANGED
|
@@ -49,7 +49,7 @@ Release defaults used by the guided setup are:
|
|
|
49
49
|
- Install mode: MCP plus manager/SDD agents (`mcp-plus-agents`).
|
|
50
50
|
- Public CLI language: English.
|
|
51
51
|
|
|
52
|
-
Recommended
|
|
52
|
+
Recommended bootstrap and diagnostic flow after `npm install -g vgxness`:
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
vgxness --help
|
|
@@ -59,30 +59,35 @@ vgxness setup plan # human-readable, read-only plan
|
|
|
59
59
|
vgxness setup status # human-readable, read-only setup status
|
|
60
60
|
vgxness setup apply --yes # writes OpenCode config only after explicit consent
|
|
61
61
|
vgxness doctor # human-readable readiness checks
|
|
62
|
-
vgxness status --project <project> --change <change>
|
|
63
|
-
vgxness next --project <project> --change <change>
|
|
62
|
+
vgxness status --project <project> --change <change> # diagnostic cockpit
|
|
63
|
+
vgxness next --project <project> --change <change> # diagnostic/recovery next step
|
|
64
|
+
vgxness sdd continue --project <project> --change <change> # read-only manual continuation plan
|
|
64
65
|
vgxness resume --project <project> --run-id <id>
|
|
65
66
|
vgxness setup rollback --backup <path>
|
|
66
67
|
```
|
|
67
68
|
|
|
69
|
+
Daily SDD phase progression is OpenCode-first: talk to OpenCode with the VGXNESS MCP server installed, and let the hidden SDD subagents use MCP tools for phase work. The CLI and TUI remain supported for bootstrap/setup, diagnostics, recovery, manual fallback, and scripting; they are not the primary daily surface.
|
|
70
|
+
|
|
68
71
|
`setup plan`, `setup status`, and non-TTY `init` planning do not write provider config. Local VGXNESS store initialization may occur when the selected SQLite store is needed. They are human-readable by default; pass `--json` when you need parseable automation output. With the default global database, the OpenCode MCP command is `vgxness mcp start`; for custom/project-local DBs it includes `--db <path>`. The default OpenCode target is `$HOME/.config/opencode/opencode.json`; pass `--scope project` to opt into `<workspace>/.opencode/opencode.json`. `setup apply --yes` is the explicit OpenCode provider-config write path. `setup rollback --backup <path>` validates a VGXNESS/OpenCode backup such as `opencode.json.backup-<timestamp>`, creates a pre-rollback backup of the current target when present, restores the selected backup byte-for-byte, and recommends `vgxness doctor`.
|
|
69
72
|
|
|
70
|
-
`vgxness init` prompts in English when stdin/stdout are TTYs: project name, DB location, provider, OpenCode scope, install mode, then shows the plan and asks `Apply this setup? Type "yes" to continue:`. Any answer other than `yes` exits successfully without writes. In CI/non-TTY without `--yes`, `init` returns the read-only plan and never waits for input. `vgxness doctor`, `vgxness sdd status`, `vgxness sdd next`, `vgxness sdd get-artifact`, and `vgxness sdd list-artifacts` are also human-readable by default; use `--json` for scripts.
|
|
73
|
+
`vgxness init` prompts in English when stdin/stdout are TTYs: project name, DB location, provider, OpenCode scope, install mode, then shows the plan and asks `Apply this setup? Type "yes" to continue:`. Any answer other than `yes` exits successfully without writes. In CI/non-TTY without `--yes`, `init` returns the read-only plan and never waits for input. `vgxness doctor`, `vgxness sdd status`, `vgxness sdd next`, `vgxness sdd cockpit`, `vgxness sdd get-artifact`, and `vgxness sdd list-artifacts` are also human-readable by default; use `--json` for scripts.
|
|
74
|
+
|
|
75
|
+
`vgxness sdd cockpit --json` returns the same additive compatibility shape as the MCP cockpit: all existing raw `SddCockpit` top-level fields remain present, with an additional top-level `readModel`. The cockpit is read-only and metadata-only: it does not include artifact bodies, infer acceptance from artifact presence, advance phases, execute acceptance, call providers, or write provider config. Text output renders from read-model concepts such as next action, phase metadata, blockers, guidance, and `Content included: no`.
|
|
71
76
|
|
|
72
77
|
## Daily workflow front doors
|
|
73
78
|
|
|
74
|
-
Use these top-level commands
|
|
79
|
+
Use OpenCode conversation + VGXNESS MCP + hidden SDD subagents for normal daily SDD work. Use these top-level commands when you need diagnostics, recovery, manual fallback, or scriptable state inspection:
|
|
75
80
|
|
|
76
81
|
| Question | Command | Purpose |
|
|
77
82
|
|---|---|---|
|
|
78
|
-
| Where am I? | `vgxness status --project <project> --change <change>` |
|
|
79
|
-
| What should I do now? | `vgxness next --project <project> --change <change>` |
|
|
80
|
-
| How do I continue a change? | `vgxness sdd continue --project <project> --change <change>` | Builds a read-only continuation plan for the selected SDD change. |
|
|
83
|
+
| Where am I? | `vgxness status --project <project> --change <change>` | Diagnostic cockpit state, blockers, next recommendation, and safety notes. |
|
|
84
|
+
| What should I do now? | `vgxness next --project <project> --change <change>` | Recovery/diagnostic next action and why it is safe or blocked. |
|
|
85
|
+
| How do I continue a change manually? | `vgxness sdd continue --project <project> --change <change>` | Builds a read-only continuation plan and manual fallback commands for the selected SDD change. |
|
|
81
86
|
| How do I continue interrupted work? | `vgxness resume --project <project> [--run-id <id>]` | Lists or inspects interrupted runs and suggests manual continuation commands without retrying anything. |
|
|
82
87
|
|
|
83
88
|
Without `--change`, `--project`, or `--run-id`, these commands stay orientation-only and do not open the local memory store. With a selected change, project, or run, top-level `status`, `next`, and `resume` inspect SQLite read-only; formal `sdd` commands are non-provider, non-run-executing planning/artifact commands that may use the normal local store path. Pass `--json` for automation.
|
|
84
89
|
|
|
85
|
-
The usual SDD operator loop
|
|
90
|
+
The usual SDD operator loop happens inside OpenCode: continue the phase in conversation while VGXNESS MCP and hidden SDD subagents inspect readiness, persist artifacts, and report evidence. CLI commands remain fallback/recovery tools: inspect `status`, ask `next`, run `sdd continue` for a copyable manual continuation plan, then either run `vgxness code sdd ...` as an explicit fallback or `vgxness resume ...` for interrupted work. After a draft is ready, use `sdd accept-artifact` for explicit human acceptance; if an artifact was rejected, use `sdd reopen-artifact` before revising it. Related interrupted run hints in `status`, `next`, and `sdd continue` are advisory only; they help avoid duplicate work but do not retry or execute runs.
|
|
86
91
|
|
|
87
92
|
## Bun-first repository verification
|
|
88
93
|
|
|
@@ -237,7 +242,7 @@ bun run cli:bun --
|
|
|
237
242
|
|
|
238
243
|
The installed `vgxness`/`vgx` binary opens the OpenTUI main menu when run with no arguments in a TTY. With no TTY, no-args prints deterministic safe setup guidance, exits 0, and does not infer a project, open project state, toggle raw mode, or write provider/config artifacts. Use `vgxness --help` or `vgxness -h` to print command help without starting the main menu; explicit subcommands keep their normal behavior.
|
|
239
244
|
|
|
240
|
-
The top-level menu is: **Installation, Doctor / recovery, SDD / workflow guidance, Advanced CLI, Exit**. Terminal controls are `↑/↓` or `j/k` to move, `Enter` to open the focused item, `?` for help, and `q` to quit.
|
|
245
|
+
The top-level menu is: **Installation, Doctor / recovery, SDD / workflow guidance, Advanced CLI, Exit**. It is a read-only setup, diagnostics, recovery, and fallback surface; daily SDD progression stays in OpenCode with VGXNESS MCP. Terminal controls are `↑/↓` or `j/k` to move, `Enter` to open the focused item, `?` for help, and `q` to quit.
|
|
241
246
|
|
|
242
247
|
For scriptable status, use explicit read-only commands:
|
|
243
248
|
|
|
@@ -255,7 +260,7 @@ Provider support shown in the Installation surface is:
|
|
|
255
260
|
- **Antigravity** — placeholder/coming-soon guidance only.
|
|
256
261
|
- **Custom/future** — extension point with safe manual/default unsupported behavior.
|
|
257
262
|
|
|
258
|
-
Setup and main-menu TUI surfaces do **not** silently write OpenCode or other provider config, do **not** call provider executables, and do **not** approve/reject preflights.
|
|
263
|
+
Setup and main-menu TUI surfaces do **not** silently write OpenCode or other provider config, do **not** call provider executables, and do **not** approve/reject preflights. They print diagnostics, recovery hints, and manual fallback commands; daily SDD work should continue in OpenCode.
|
|
259
264
|
|
|
260
265
|
## Natural-language orchestrator preview
|
|
261
266
|
|
|
@@ -562,7 +567,7 @@ Manual/opt-in runtime validation checklist (not normal CI):
|
|
|
562
567
|
|
|
563
568
|
## SDD workflow examples
|
|
564
569
|
|
|
565
|
-
Use `sdd` commands to inspect local SDD artifact state and save, read, or list phase artifacts. These commands read and write only the selected `vgxness` local SQLite memory store: `--db <path>` when passed, `VGXNESS_DB_PATH` when set, or the global default database when neither override is present.
|
|
570
|
+
Use OpenCode conversation with VGXNESS MCP and hidden SDD subagents for normal daily SDD progression. Use `sdd` commands to inspect local SDD artifact state and save, read, or list phase artifacts for diagnostics, recovery, scripting, or manual fallback. These commands read and write only the selected `vgxness` local SQLite memory store: `--db <path>` when passed, `VGXNESS_DB_PATH` when set, or the global default database when neither override is present.
|
|
566
571
|
|
|
567
572
|
```bash
|
|
568
573
|
bun run cli:bun -- sdd status --project vgxness --change sdd-workflow-engine --db /tmp/vgxness-memory.sqlite
|
|
@@ -579,13 +584,13 @@ bun run cli:bun -- sdd reopen-artifact --project vgxness --change sdd-workflow-e
|
|
|
579
584
|
VGXNESS_DB_PATH=/tmp/vgxness-memory.sqlite bun run cli:bun -- sdd list-artifacts --project vgxness --change sdd-workflow-engine
|
|
580
585
|
```
|
|
581
586
|
|
|
582
|
-
Current canonical phases are `explore`, `proposal`, `spec`, `design`, `tasks`, `apply-progress`, `verify`, and `archive`. `apply` is accepted as a user-facing input alias, but artifacts, topic keys, readiness/status/cockpit JSON, and internal metadata continue to use canonical `apply-progress`. Each artifact is stored under `sdd/{change}/{phase}` in the local SQLite memory store. `sdd status` reports which phase artifacts are present, blocker-specific next actions, and related interrupted run hints when available. `sdd next` reports the next SDD action for a project/change. `sdd continue` turns that state into a read-only continuation plan, including draft-run suggestions for planning phases and related interrupted run context when a matching stopped run exists. `sdd status`, `sdd next`, `sdd continue`, `sdd get-artifact`, and `sdd list-artifacts` are human-readable by default; pass `--json` for automation/stable structured output. `sdd ready` reports satisfied prerequisites and missing artifact topic keys for one phase. `sdd get-artifact` shows artifact metadata and then full content after `--- Content ---`; `sdd list-artifacts` shows one compact row for every canonical SDD phase in phase order and does not print full artifact content.
|
|
587
|
+
Current canonical phases are `explore`, `proposal`, `spec`, `design`, `tasks`, `apply-progress`, `verify`, and `archive`. `apply` is accepted as a user-facing input alias, but artifacts, topic keys, readiness/status/cockpit JSON, and internal metadata continue to use canonical `apply-progress`. Each artifact is stored under `sdd/{change}/{phase}` in the local SQLite memory store. `sdd status` reports which phase artifacts are present, blocker-specific next actions, and related interrupted run hints when available. `sdd next` reports the next SDD action for a project/change and frames runnable phase work as OpenCode-first while preserving fallback command fields. `sdd continue` turns that state into a read-only continuation plan, including manual fallback commands, draft-run suggestions for planning phases, and related interrupted run context when a matching stopped run exists. `sdd status`, `sdd next`, `sdd continue`, `sdd get-artifact`, and `sdd list-artifacts` are human-readable by default; pass `--json` for automation/stable structured output. `sdd ready` reports satisfied prerequisites and missing artifact topic keys for one phase. `sdd get-artifact` shows artifact metadata and then full content after `--- Content ---`; `sdd list-artifacts` shows one compact row for every canonical SDD phase in phase order and does not print full artifact content.
|
|
583
588
|
|
|
584
589
|
`sdd accept-artifact` records explicit human-only acceptance of an existing artifact through the same SDD workflow service used by MCP. It requires `--project`, `--change`, `--phase`, and `--actor`; `--display-name` defaults to the actor id. `--accepted-at` is optional, but when supplied it must be an ISO date-time with an explicit timezone (`Z` or offset) and is normalized to UTC `toISOString()` output. The default output is a human-readable confirmation with a JSON hint; `--json` returns a content-free success object with project/change/phase/topic key/artifact id/status/acceptedBy/acceptedAt and optional note. `save-artifact` creates or updates draft content only and does not imply acceptance. `sdd reopen-artifact` moves a rejected artifact back to draft after an explicit human decision, so the artifact can be revised and accepted again.
|
|
585
590
|
|
|
586
591
|
Use `resume --project <project>` when you do not know the run id. It lists recent interrupted candidates for that project from the selected database. Use `resume --project <project> --run-id <id>` to inspect one candidate; this is still read-only and advisory.
|
|
587
592
|
|
|
588
|
-
The SDD CLI is status, planning,
|
|
593
|
+
The SDD CLI is status, planning, artifact persistence, diagnostics, recovery, scripting, and manual fallback only. It does **not** execute providers, retry workflow runs, create `openspec/`, or write `.opencode/`, `.claude/`, or user/global provider config.
|
|
589
594
|
|
|
590
595
|
## Agent resolution
|
|
591
596
|
|
package/docs/mcp.md
CHANGED
|
@@ -25,7 +25,7 @@ All tools:
|
|
|
25
25
|
| `vgxness_sdd_reopen_artifact` | Move a rejected artifact back to draft for revision. | `project`, `change`, `phase`, `reopenedBy` (`{type:"human", id, displayName?}`); optional `reopenedAt`, `note`, `runId`, `agentId` | Human-only recovery path. Does not imply acceptance or bypass downstream gates. |
|
|
26
26
|
| `vgxness_sdd_get_artifact` | Read one full artifact. | `project`, `change`, `phase`; optional `payloadMode` (`compact`/`verbose`) | |
|
|
27
27
|
| `vgxness_sdd_list_artifacts` | List all artifacts for a change in canonical phase order. | `project`, `change`; optional `payloadMode` | |
|
|
28
|
-
| `vgxness_sdd_cockpit` | Aggregate per-phase status, blockers, and recommended next action. | `project`, `change` | Returns `SddCockpit`
|
|
28
|
+
| `vgxness_sdd_cockpit` | Aggregate per-phase status, blockers, and recommended next action. | `project`, `change` | Returns the raw `SddCockpit` compatibility fields plus additive top-level `readModel`. The response is read-only and metadata-only: no artifact bodies, no phase advancement, no provider/config writes. `readModel.contentIncluded` is always `false`; accepted means explicit human acceptance, not artifact presence. |
|
|
29
29
|
| `vgxness_governance_report` | Build a redacted governance report for a project/change/run. | `project`; optional `change`, `runId`, `workflow`, `phase`, `agentId`, `agent` (with `id`, `name`, `mode`, `scope`), `payloadMode` | See [Safety model](./safety.md) for redaction rules. |
|
|
30
30
|
|
|
31
31
|
## Memory (4)
|
|
@@ -114,7 +114,7 @@ vgxness_sdd_continue { project: "vgxness", change: "new-flow" }
|
|
|
114
114
|
vgxness_sdd_get_readiness { project: "vgxness", change: "new-flow", phase: "proposal" }
|
|
115
115
|
```
|
|
116
116
|
|
|
117
|
-
The cockpit
|
|
117
|
+
The cockpit preserves raw `SddCockpit` fields such as `phases`, `artifacts`, `aggregateBlockers`, and `inspectCommand`, and also adds `readModel` for stable UI/MCP consumption. Both raw artifact summaries and `readModel.phases[].artifact` omit artifact bodies. If any raw blocker is `unaccepted-phase`, or any read-model phase has `acceptance.acceptedByHuman: false`, do not treat the prerequisite as accepted merely because an artifact exists. `vgxness_sdd_continue` uses the same SDD state to explain how to continue; it is advisory only.
|
|
118
118
|
|
|
119
119
|
Recording a phase with explicit human acceptance:
|
|
120
120
|
|