@xenonbyte/da-vinci-workflow 0.2.2 → 0.2.3

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +24 -14
  3. package/README.zh-CN.md +25 -14
  4. package/commands/claude/dv/breakdown.md +8 -0
  5. package/commands/claude/dv/build.md +11 -0
  6. package/commands/claude/dv/design.md +5 -2
  7. package/commands/claude/dv/tasks.md +8 -0
  8. package/commands/claude/dv/verify.md +9 -0
  9. package/commands/codex/prompts/dv-breakdown.md +8 -0
  10. package/commands/codex/prompts/dv-build.md +11 -0
  11. package/commands/codex/prompts/dv-design.md +5 -2
  12. package/commands/codex/prompts/dv-tasks.md +8 -0
  13. package/commands/codex/prompts/dv-verify.md +8 -0
  14. package/commands/gemini/dv/breakdown.toml +8 -0
  15. package/commands/gemini/dv/build.toml +11 -0
  16. package/commands/gemini/dv/design.toml +5 -2
  17. package/commands/gemini/dv/tasks.toml +8 -0
  18. package/commands/gemini/dv/verify.toml +8 -0
  19. package/docs/dv-command-reference.md +43 -0
  20. package/docs/execution-chain-plan.md +10 -3
  21. package/docs/mode-use-cases.md +2 -1
  22. package/docs/pencil-rendering-workflow.md +15 -12
  23. package/docs/prompt-presets/README.md +1 -1
  24. package/docs/prompt-presets/desktop-app.md +3 -3
  25. package/docs/prompt-presets/mobile-app.md +3 -3
  26. package/docs/prompt-presets/tablet-app.md +3 -3
  27. package/docs/prompt-presets/web-app.md +3 -3
  28. package/docs/skill-usage.md +45 -38
  29. package/docs/workflow-examples.md +16 -13
  30. package/docs/workflow-overview.md +2 -0
  31. package/docs/zh-CN/dv-command-reference.md +43 -0
  32. package/docs/zh-CN/mode-use-cases.md +2 -1
  33. package/docs/zh-CN/pencil-rendering-workflow.md +15 -12
  34. package/docs/zh-CN/prompt-presets/README.md +1 -1
  35. package/docs/zh-CN/prompt-presets/desktop-app.md +3 -3
  36. package/docs/zh-CN/prompt-presets/mobile-app.md +3 -3
  37. package/docs/zh-CN/prompt-presets/tablet-app.md +3 -3
  38. package/docs/zh-CN/prompt-presets/web-app.md +3 -3
  39. package/docs/zh-CN/skill-usage.md +45 -38
  40. package/docs/zh-CN/workflow-examples.md +15 -13
  41. package/docs/zh-CN/workflow-overview.md +2 -0
  42. package/examples/greenfield-spec-markupflow/.da-vinci/state/execution-signals/demo__lint-tasks.json +16 -0
  43. package/lib/audit-parsers.js +18 -9
  44. package/lib/audit.js +3 -26
  45. package/lib/cli.js +50 -1
  46. package/lib/design-source-registry.js +146 -0
  47. package/lib/save-current-design.js +790 -0
  48. package/lib/supervisor-review.js +1 -1
  49. package/lib/workflow-bootstrap.js +2 -13
  50. package/lib/workflow-persisted-state.js +3 -1
  51. package/lib/workflow-state.js +51 -3
  52. package/package.json +1 -1
  53. package/tui/catalog.js +103 -0
  54. package/tui/index.js +2274 -418
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.2.3 - 2026-04-02
4
+
5
+ ### Added
6
+ - scene-first `Design Ops` actions in TUI for managed `save-current-design`, icon sync progress feedback, and platform+quality Visual Assist presets
7
+ - additional TUI/CLI regression coverage for scene ordering, route mapping, and environment-stable `save-current-design` unavailable behavior
8
+
9
+ ### Changed
10
+ - TUI root scenes now keep the documented order (`Install & Uninstall`, `Current Status`, `Switch Work Item`, `Design Ops`, `Pre-Implementation Checks`, `Pre-Acceptance Checks`, `Settings`)
11
+ - `Current Status` route mapping now keeps `/dv:tasks`, `/dv:build`, and bootstrap routes as direct command recommendations instead of forcing mismatched scene actions
12
+ - README (EN/ZH) now documents the updated scene-first behavior and release highlights for `0.2.3`
13
+
14
+ ### Fixed
15
+ - removed stale Advanced-command branches from TUI runtime routing and key handling so only reachable scene navigation paths remain
16
+ - stabilized `save-current-design` unavailable-path CLI testing by isolating PATH during bridge-absent assertions
17
+
3
18
  ## v0.2.2 - 2026-03-31
4
19
 
5
20
  ### Added
package/README.md CHANGED
@@ -28,18 +28,15 @@ This workflow is intended for:
28
28
 
29
29
  Latest published npm package:
30
30
 
31
- - `@xenonbyte/da-vinci-workflow@0.2.2`
31
+ - `@xenonbyte/da-vinci-workflow@0.2.3`
32
32
 
33
- Release highlights for `0.2.2`:
33
+ Release highlights for `0.2.3`:
34
34
 
35
- - added the built-in terminal TUI via `da-vinci tui` and `da-vinci-tui`, with phase-grouped command discovery, bilingual labels, command previews, and project/change context management
36
- - added command-parameter help inside the TUI so operators can inspect supported flags and placeholder requirements without leaving the terminal
37
- - added operator-facing English and Chinese workflow guides that explain first-run routing, implementation handoff, pause/resume rules, and TUI usage
38
- - expanded release coverage with TUI-specific regression tests plus package-content checks for the dedicated TUI bin and shipped `tui/` assets
39
- - fixed TUI exit handling so `q` and `Ctrl-C` actually terminate the interactive session instead of leaving stdin resumed in the foreground
40
- - fixed preview-command editing so unclosed quotes are handled as a recoverable TUI error instead of crashing the process
41
- - fixed TUI JSON toggling by moving the shortcut to `J`, preserving `j/k` for navigation only
42
- - fixed TUI child-command execution so relative paths resolve from the active project context selected in the header
35
+ - added scene-first `Design Ops` actions for managed `Save Current Design`, icon sync progress, and Visual Assist platform+quality presets
36
+ - tightened `Current Status` route mapping so `/dv:tasks`, `/dv:build`, and bootstrap routes are no longer forced into unrelated scene actions
37
+ - removed stale hidden Advanced-command UI branches and aligned reachable keyboard/help behavior with scene-only navigation
38
+ - simplified install/uninstall operations to one-click all-platform actions (`Codex`, `Claude Code`, `Gemini`) from the TUI
39
+ - expanded regression coverage for TUI scene order, route mapping, and environment-stable `save-current-design` CLI behavior
43
40
 
44
41
  ## Supported workflow modes
45
42
 
@@ -99,8 +96,18 @@ If the growing CLI surface is the main usability problem, use the built-in termi
99
96
 
100
97
  - launch with `da-vinci tui` or `da-vinci-tui`
101
98
  - use `npx -p @xenonbyte/da-vinci-workflow da-vinci tui` when the package is not installed globally
102
- - the TUI groups commands by workflow phase, supports English and Chinese descriptions, and lets you launch the selected command after previewing it
103
- - `p` sets project path context, `c` sets change-id context, `l` toggles language, `m` edits the preview command, and `Enter` runs it
99
+ - the root menu is scene-first: `Install & Uninstall`, `Current Status`, `Switch Work Item`, `Design Ops`, `Pre-Implementation Checks`, `Pre-Acceptance Checks`, `Settings`
100
+ - `Pre-Implementation Checks` is a direct readiness gate for implementation
101
+ - persistent header is intentionally minimal: brand + current project + current change
102
+ - `Design Ops > Save Current Design` persists the current live editor state back to the project-owned `.pen` source
103
+ - `Design Ops > Visual Assist Preset` maps `Masterpiece`/`High Quality`/`Normal` to platform preset variants `Required Supervisor Signoff`/`Advisory Supervisor Review`/`Adapter-Only`
104
+ - `Install & Uninstall` provides three actions: `Status` (show `da-vinci status`), `Install` (install all supported platforms), and `Uninstall` (uninstall all supported platforms)
105
+ - Visual Assist preset output is always English and updates only the `## Visual Assist` block in project-root `DA-VINCI.md` after platform+quality selection (it does not rewrite unrelated sections)
106
+ - `Current Status` now keeps route guidance honest: when `next-step` points to `/dv:tasks`, `/dv:build`, or bootstrap, TUI keeps it as a direct command recommendation instead of forcing a mismatched scene
107
+ - `Settings` now keeps only `Language` and `Logs`
108
+ - `Settings > Logs` shows project-local daily diagnostics from `.da-vinci/logs/YYYY-MM-DD.ndjson`; logs are troubleshooting evidence, not workflow truth
109
+ - it supports English/Chinese chrome, light/dark theme auto-detection, and `t` as a manual fallback
110
+ - `p` sets project context, `c` sets change context, `l` toggles language, `J` toggles `--json`, and `Enter` opens/runs the selected item
104
111
 
105
112
  Use [docs/skill-usage.md](/Users/xubo/x-skills/da-vinci/docs/skill-usage.md) for the operator-facing workflow, resume rules, and TUI guidance.
106
113
 
@@ -495,7 +502,8 @@ During active redesign work, run `da-vinci audit --mode integrity <project-path>
495
502
  Project-local `.pen` persistence now has two supported paths:
496
503
 
497
504
  - first-run path: seed the registered project-local `.pen` with `da-vinci ensure-pen --output <path> --verify-open`, open that exact path, then persist later MCP snapshot writes back to the same file
498
- - resume path: if a registered project-local `.pen` already exists, reopen it for continuity, but after material live edits persist a fresh live MCP snapshot back to that same path and run `da-vinci check-pen-sync`
505
+ - resume path: if a registered project-local `.pen` already exists, reopen it for continuity, then use `da-vinci save-current-design --project <project-path>` after material live edits
506
+ - treat `save-current-design` outcomes explicitly: `saved` means persisted, `blocked` means bound-source contract failure, and `unavailable` means the runtime bridge could not capture a live snapshot
499
507
  - multi-source guard: when external `.pen` sources also exist, run `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>` before each new `pencil-session begin`; if hashes diverge, confirm source priority explicitly and sync the chosen source into `<project-pen>` before new edits
500
508
 
501
509
  On autonomous redesign runs, the session wrapper is required when it is available. Lower-level helpers remain available only when the wrapper truly cannot be used.
@@ -504,8 +512,10 @@ Persistence helpers:
504
512
 
505
513
  - required wrapper on autonomous runs:
506
514
  - `da-vinci pencil-session begin --project <project-path> --pen <path> [--baseline <path>] [--prefer-source <path>] [--sync-preferred-source]`
507
- - `da-vinci pencil-session persist --project <project-path> --pen <path> --nodes-file <batch-get-json> --variables-file <get-variables-json> --version <version>`
515
+ - `da-vinci save-current-design --project <project-path> [--json] [--continue-on-error]`
508
516
  - `da-vinci pencil-session end --project <project-path> --pen <path> --nodes-file <batch-get-json> --variables-file <get-variables-json> --version <version>`
517
+ - low-level fallback when high-level save reports `unavailable`:
518
+ - `da-vinci pencil-session persist --project <project-path> --pen <path> --nodes-file <batch-get-json> --variables-file <get-variables-json> --version <version>`
509
519
  - `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>[,<other-pen>...] [--prefer-source <path>]`
510
520
  - `da-vinci sync-pen-source --from <preferred-source> --to <project-pen>`
511
521
  - `da-vinci ensure-pen --output <path> --verify-open`
package/README.zh-CN.md CHANGED
@@ -30,18 +30,15 @@ Da Vinci 是一个把产品需求一路推进到结构化规格、Pencil 设计
30
30
 
31
31
  最新已发布 npm 包:
32
32
 
33
- - `@xenonbyte/da-vinci-workflow@0.2.2`
33
+ - `@xenonbyte/da-vinci-workflow@0.2.3`
34
34
 
35
- `0.2.2` 版本重点:
35
+ `0.2.3` 版本重点:
36
36
 
37
- - 新增内置终端 TUI:可通过 `da-vinci tui` `da-vinci-tui` 启动,按阶段分组浏览命令,支持中英文说明、命令预览以及 project/change 上下文维护
38
- - 新增 TUI 内的命令参数帮助,可以直接在终端里查看支持的 flag、占位符和必填参数
39
- - 新增中英文 operator 文档,专门说明第一次如何进入、实现前如何衔接、中途退出后怎么恢复,以及 TUI 怎么配合
40
- - 回归测试与打包校验现已覆盖 TUI 专项路径,包括独立 bin、`tui/` 目录资产和帮助输出
41
- - 修复 TUI 退出路径:`q` `Ctrl-C` 现在会真正结束会话,不再把进程留在前台挂住
42
- - 修复预览命令编辑:未闭合引号现在会显示可恢复错误页,不再直接把 TUI 进程打崩
43
- - 修复 TUI 的 JSON 切换快捷键冲突:现在使用 `J` 切换 `--json`,`j/k` 只负责移动
44
- - 修复 TUI 子命令执行目录:相对路径现在会基于当前 header 里选中的项目上下文解析
37
+ - 新增场景化 `设计操作`:支持托管 `保存当前设计稿`、图标库同步进度反馈,以及 Visual Assist 平台+质量预设写入
38
+ - 收紧 `当前状态` 场景映射:`/dv:tasks`、`/dv:build`、bootstrap 不再被错误导向到无关场景
39
+ - 清理已下线的 Advanced 命令路径残留,TUI 键位与帮助文本统一为可达的场景交互
40
+ - `安装与卸载` 统一为一键全平台动作(`Codex`、`Claude Code`、`Gemini`)
41
+ - 补强回归测试:覆盖 TUI 场景顺序、路由映射,以及 `save-current-design` 的环境隔离稳定性
45
42
 
46
43
  ## 支持的工作流模式
47
44
 
@@ -104,8 +101,19 @@ Da Vinci 当前支持五种模式:
104
101
 
105
102
  - 用 `da-vinci tui` 或 `da-vinci-tui` 启动
106
103
  - 没有全局安装时,用 `npx -p @xenonbyte/da-vinci-workflow da-vinci tui`
107
- - TUI 会按工作流阶段对命令分组,支持中英文说明,并在执行前先给出命令预览
108
- - `p` 设置项目路径上下文,`c` 设置 change-id 上下文,`l` 切换语言,`m` 编辑预览命令,`Enter` 执行
104
+ - 首屏按场景组织:`安装与卸载`、`当前状态`、`切换工作项`、`设计操作`、`实施前检查`、`验收前检查`、`设置`
105
+ - 顶部信息最小化:只保留品牌、当前项目、当前 change
106
+ - `设计操作 > 保存当前设计稿` 会把当前 live 编辑器状态回写到项目管理的 `.pen` 设计源
107
+ - `提示词模版` 从英文权威源 `docs/prompt-presets/` 取内容,支持预览和复制
108
+ - `mode1..mode5` 分别映射 `Simple redesign`、`Complex redesign`、`Redesign with reference directory`、`Design-only`、`Continue`
109
+ - `设计操作 > Visual Assist 预设` 中 `Masterpiece`/`High Quality`/`Normal` 分别映射平台预设里的 `Required Supervisor Signoff`/`Advisory Supervisor Review`/`Adapter-Only`
110
+ - `安装与卸载` 提供三个动作:`状态`(查看 `da-vinci status`)、`安装`(一键安装所有支持平台)、`卸载`(一键卸载所有支持平台)
111
+ - Visual Assist 预设写入始终输出英文;在完成“平台 + 质量”选择后只更新项目根 `DA-VINCI.md` 的 `## Visual Assist` 区块,不会改写其他章节
112
+ - `当前状态` 现在会保持路由建议真实:当 `next-step` 建议 `/dv:tasks`、`/dv:build` 或 bootstrap 时,TUI 会给出直接命令建议,而不是强行映射到不匹配场景
113
+ - `设置` 现在只保留 `语言` 和 `日志`
114
+ - `设置 > 日志` 读取项目内 `.da-vinci/logs/YYYY-MM-DD.ndjson` 的每日诊断日志;日志是排障证据,不是工作流真相源
115
+ - 支持中英文界面与浅色/深色自动识别,`t` 可手动切换主题
116
+ - `p` 设置项目上下文,`c` 设置 change 上下文,`l` 切语言,`J` 切 `--json`,`Enter` 进入/执行
109
117
 
110
118
  如果你想看“人到底怎么用这个 skill、暂停后怎么续跑、TUI 怎么配合”的完整说明,直接看 [docs/zh-CN/skill-usage.md](/Users/xubo/x-skills/da-vinci/docs/zh-CN/skill-usage.md)。
111
119
 
@@ -416,7 +424,8 @@ Context Delta 与 audit 的关系:
416
424
  项目内 `.pen` 持久化现在分成两条受支持路径:
417
425
 
418
426
  - 首次运行路径:先用 `da-vinci ensure-pen --output <path> --verify-open` seed 登记好的项目内 `.pen`,打开这个精确路径,然后把后续 MCP 快照持续写回同一个文件
419
- - 继续迭代路径:如果项目里原本已有登记的 `.pen`,先打开它继续工作;但发生实质性 live edit 后,要把当前 live MCP 快照重新持久化回同一路径,并运行 `da-vinci check-pen-sync`
427
+ - 继续迭代路径:如果项目里原本已有登记的 `.pen`,先打开它继续工作;发生实质性 live edit 后,优先执行 `da-vinci save-current-design --project <project-path>`
428
+ - `save-current-design` 结果必须分开处理:`saved` 才代表已持久化;`blocked` 代表绑定源契约失败;`unavailable` 代表 runtime bridge 无法抓取 live 快照
420
429
  - 多源门禁:如果还存在外部 `.pen` 源,每次新一轮 `pencil-session begin` 前先运行 `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>`;若 hash 不一致,必须先确认来源优先级并把选中的来源同步回 `<project-pen>`
421
430
 
422
431
  如果是自治运行,session wrapper 只要可用就必须使用。只有 wrapper 确实不可用时,才退回底层 helper。
@@ -425,8 +434,10 @@ Context Delta 与 audit 的关系:
425
434
 
426
435
  - 自治运行必须使用的 session 命令:
427
436
  - `da-vinci pencil-session begin --project <project-path> --pen <path> [--baseline <path>] [--prefer-source <path>] [--sync-preferred-source]`
428
- - `da-vinci pencil-session persist --project <project-path> --pen <path> --nodes-file <batch-get-json> --variables-file <get-variables-json> --version <version>`
437
+ - `da-vinci save-current-design --project <project-path> [--json] [--continue-on-error]`
429
438
  - `da-vinci pencil-session end --project <project-path> --pen <path> --nodes-file <batch-get-json> --variables-file <get-variables-json> --version <version>`
439
+ - 当高层保存返回 `unavailable` 时,才回退到底层链路:
440
+ - `da-vinci pencil-session persist --project <project-path> --pen <path> --nodes-file <batch-get-json> --variables-file <get-variables-json> --version <version>`
430
441
  - `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>[,<other-pen>...] [--prefer-source <path>]`
431
442
  - `da-vinci sync-pen-source --from <preferred-source> --to <project-pen>`
432
443
  - `da-vinci ensure-pen --output <path> --verify-open`
@@ -7,6 +7,14 @@ Use the Da Vinci workflow for this request.
7
7
 
8
8
  Action: `breakdown`
9
9
 
10
+ Before handing requirements off to design when shell access is available:
11
+ - run `da-vinci workflow-status --project <path> [--change <id>] --json`
12
+ - run `da-vinci next-step --project <path> [--change <id>]`
13
+ - run `da-vinci lint-spec --project <path> [--change <id>] --strict`
14
+ - treat command output as the gate; do not replace `BLOCK` or non-zero results with narrative judgment
15
+ - if the primary recommended route is still `/dv:breakdown`, keep refining `proposal.md` and specs instead of forcing design
16
+ - do not move to `/dv:design` until the command-backed checks stop blocking
17
+
10
18
  Focus on:
11
19
  - scope
12
20
  - pages
@@ -7,6 +7,17 @@ Use the Da Vinci workflow for this request.
7
7
 
8
8
  Action: `build`
9
9
 
10
+ Before broad implementation when shell access is available:
11
+ - run `da-vinci workflow-status --project <path> [--change <id>] --json`
12
+ - run `da-vinci next-step --project <path> [--change <id>]`
13
+ - if the primary recommended route is not `/dv:build`, stop and continue from that route instead of forcing implementation
14
+ - run `da-vinci lint-spec --project <path> [--change <id>]`
15
+ - run `da-vinci scope-check --project <path> [--change <id>]`
16
+ - if `tasks.md` exists, run `da-vinci lint-tasks --project <path> [--change <id>]`
17
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
18
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
19
+ - treat any `BLOCK` or missing required planning/design artifact as a hard stop before broad implementation
20
+
10
21
  Focus on:
11
22
  - requirements-backed behavior
12
23
  - Pencil-backed layout and presentation
@@ -20,10 +20,13 @@ Create or update:
20
20
  Run the `design checkpoint` before locking implementation tasks.
21
21
  Before non-trivial `batch_design` calls, preflight the Pencil operations when shell access is available.
22
22
  If the same anchor surface rolls back twice, switch to micro-batches of 6 or fewer operations until a clean schema-safe pass succeeds.
23
- Require the session wrapper commands on autonomous runs: `da-vinci pencil-session begin`, `da-vinci pencil-session persist`, and `da-vinci pencil-session end`.
23
+ Require the session wrapper commands on autonomous runs: `da-vinci pencil-session begin`, `da-vinci save-current-design`, and `da-vinci pencil-session end`.
24
24
  Before the first Pencil edit, require `da-vinci pencil-session begin` so the registered project-local `.pen` is seeded and locked before editing starts.
25
25
  When multiple `.pen` sources exist (for example an external backup), run `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>` before `pencil-session begin`. If hashes diverge, confirm source priority explicitly and sync the chosen source into the project-local `.pen` (for example `da-vinci sync-pen-source --from <preferred-source> --to <project-pen>`) before continuing edits.
26
- If a registered project-local `.pen` already exists, reopen it for continuity but persist a fresh live MCP snapshot back to that same path through `pencil-session persist` after material edits.
26
+ If a registered project-local `.pen` already exists, reopen it for continuity and use `da-vinci save-current-design --project <project-path>` after material edits.
27
+ Treat `saved`, `blocked`, and `unavailable` as distinct outcomes; never treat `unavailable` as a successful save.
28
+ Use the lower-level `pencil-session persist` payload path only when the high-level save bridge is unavailable.
29
+ The MVP guarantee is bound source-path safety (`registered .pen`, session `penPath`, and active editor path converge), not exact window-instance identity before MCP exposes stable window/editor identifiers.
27
30
  After the first successful Pencil write, run `da-vinci audit --mode integrity <project-path>` before broad expansion continues.
28
31
  If Pencil MCP is active, run the MCP runtime gate after the first successful Pencil write and record it in `pencil-design.md`.
29
32
  Screenshot review must record an explicit `PASS`, `WARN`, or `BLOCK` plus the issue list and revision outcome; "looks good" is not a valid review record.
@@ -16,4 +16,12 @@ Focus on:
16
16
  Create or update:
17
17
  - `tasks.md`
18
18
 
19
+ Before claiming implementation-ready task planning:
20
+ - re-check that the workflow is still in the `/dv:tasks` lane when route context is stale or unclear
21
+ - run the `task checkpoint`
22
+ - when shell access is available, run `da-vinci lint-tasks --project <path> [--change <id>]`
23
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
24
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
25
+ - do not hand off to `build` while task coverage or bindings readiness are still blocking
26
+
19
27
  Run the `task checkpoint` before implementation begins.
@@ -15,4 +15,13 @@ Check:
15
15
  Create or update:
16
16
  - `verification.md`
17
17
 
18
+ When shell access is available:
19
+ - run `da-vinci verify-bindings --project <path> [--change <id>]`
20
+ - run `da-vinci verify-implementation --project <path> [--change <id>]`
21
+ - run `da-vinci verify-structure --project <path> [--change <id>]`
22
+ - run `da-vinci verify-coverage --project <path> [--change <id>]`
23
+ - treat command output as the gate; do not downgrade `BLOCK` or `FAIL` into soft guidance
24
+ - if any verification surface is still `BLOCK` or `FAIL`, keep the workflow in verification and record the drift instead of claiming success
25
+
18
26
  If Pencil MCP is active and terminal completion is being considered, re-check the MCP runtime gate evidence before treating verification as complete.
27
+ Before any terminal completion claim, require `da-vinci audit --mode completion --change <change-id> <project-path>` to pass.
@@ -7,6 +7,14 @@ Use the `da-vinci` skill for this request.
7
7
 
8
8
  Action: `breakdown`
9
9
 
10
+ Before handing requirements off to design when shell access is available:
11
+ - run `da-vinci workflow-status --project <path> [--change <id>] --json`
12
+ - run `da-vinci next-step --project <path> [--change <id>]`
13
+ - run `da-vinci lint-spec --project <path> [--change <id>] --strict`
14
+ - treat command output as the gate; do not replace `BLOCK` or non-zero results with narrative judgment
15
+ - if the primary recommended route is still `/dv:breakdown`, keep refining `proposal.md` and specs instead of forcing design
16
+ - do not move to `/dv:design` until the command-backed checks stop blocking
17
+
10
18
  Output should move the work toward:
11
19
  - `proposal.md`
12
20
  - `specs/<capability>/spec.md`
@@ -7,6 +7,17 @@ Use the `da-vinci` skill for this request.
7
7
 
8
8
  Action: `build`
9
9
 
10
+ Before broad implementation when shell access is available:
11
+ - run `da-vinci workflow-status --project <path> [--change <id>] --json`
12
+ - run `da-vinci next-step --project <path> [--change <id>]`
13
+ - if the primary recommended route is not `/dv:build`, stop and continue from that route instead of forcing implementation
14
+ - run `da-vinci lint-spec --project <path> [--change <id>]`
15
+ - run `da-vinci scope-check --project <path> [--change <id>]`
16
+ - if `tasks.md` exists, run `da-vinci lint-tasks --project <path> [--change <id>]`
17
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
18
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
19
+ - treat any `BLOCK` or missing required planning/design artifact as a hard stop before broad implementation
20
+
10
21
  Implementation rules:
11
22
  - requirements decide behavior
12
23
  - Pencil decides presentation
@@ -14,10 +14,13 @@ Output should move the work toward:
14
14
  Use Pencil-backed structure as the design source when available.
15
15
  Before non-trivial `batch_design` calls, preflight the Pencil operations when shell access is available.
16
16
  If the same anchor surface rolls back twice, switch to micro-batches of 6 or fewer operations until a clean schema-safe pass succeeds.
17
- Require the session wrapper commands on autonomous runs: `da-vinci pencil-session begin`, `da-vinci pencil-session persist`, and `da-vinci pencil-session end`.
17
+ Require the session wrapper commands on autonomous runs: `da-vinci pencil-session begin`, `da-vinci save-current-design`, and `da-vinci pencil-session end`.
18
18
  Before the first Pencil edit, require `da-vinci pencil-session begin` so the registered project-local `.pen` is seeded and locked before editing starts.
19
19
  When multiple `.pen` sources exist (for example an external backup), run `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>` before `pencil-session begin`. If hashes diverge, confirm source priority explicitly and sync the chosen source into the project-local `.pen` (for example `da-vinci sync-pen-source --from <preferred-source> --to <project-pen>`) before continuing edits.
20
- If a registered project-local `.pen` already exists, reopen it for continuity but persist a fresh live MCP snapshot back to that same path through `pencil-session persist` after material edits.
20
+ If a registered project-local `.pen` already exists, reopen it for continuity and use `da-vinci save-current-design --project <project-path>` after material edits.
21
+ Treat `saved`, `blocked`, and `unavailable` as distinct outcomes; never treat `unavailable` as a successful save.
22
+ Use the lower-level `pencil-session persist` payload path only when the high-level save bridge is unavailable.
23
+ The MVP guarantee is bound source-path safety (`registered .pen`, session `penPath`, and active editor path converge), not exact window-instance identity before MCP exposes stable window/editor identifiers.
21
24
  After the first successful Pencil write, run `da-vinci audit --mode integrity <project-path>` before broad expansion continues.
22
25
  If Pencil MCP is active, run the MCP runtime gate after the first successful Pencil write and record it in `pencil-design.md`.
23
26
  Screenshot review must record an explicit `PASS`, `WARN`, or `BLOCK` plus the issue list and revision outcome; "looks good" is not a valid review record.
@@ -14,3 +14,11 @@ Tasks must cover:
14
14
  - spec-backed behavior
15
15
  - Pencil-backed UI work
16
16
  - verification work
17
+
18
+ Before claiming implementation-ready task planning:
19
+ - re-check that the workflow is still in the `/dv:tasks` lane when route context is stale or unclear
20
+ - run the `task checkpoint`
21
+ - when shell access is available, run `da-vinci lint-tasks --project <path> [--change <id>]`
22
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
23
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
24
+ - do not hand off to `build` while task coverage or bindings readiness are still blocking
@@ -13,4 +13,12 @@ Check:
13
13
  - drift between artifacts and code
14
14
 
15
15
  Update `verification.md` when needed.
16
+ When shell access is available:
17
+ - run `da-vinci verify-bindings --project <path> [--change <id>]`
18
+ - run `da-vinci verify-implementation --project <path> [--change <id>]`
19
+ - run `da-vinci verify-structure --project <path> [--change <id>]`
20
+ - run `da-vinci verify-coverage --project <path> [--change <id>]`
21
+ - treat command output as the gate; do not downgrade `BLOCK` or `FAIL` into soft guidance
22
+ - if any verification surface is still `BLOCK` or `FAIL`, keep the workflow in verification and record the drift instead of claiming success
16
23
  If Pencil MCP is active and terminal completion is being considered, re-check the MCP runtime gate evidence before treating verification as complete.
24
+ Before any terminal completion claim, require `da-vinci audit --mode completion --change <change-id> <project-path>` to pass.
@@ -6,6 +6,14 @@ Use the Da Vinci workflow for this request.
6
6
 
7
7
  Action: `breakdown`
8
8
 
9
+ Before handing requirements off to design when shell access is available:
10
+ - run `da-vinci workflow-status --project <path> [--change <id>] --json`
11
+ - run `da-vinci next-step --project <path> [--change <id>]`
12
+ - run `da-vinci lint-spec --project <path> [--change <id>] --strict`
13
+ - treat command output as the gate; do not replace `BLOCK` or non-zero results with narrative judgment
14
+ - if the primary recommended route is still `/dv:breakdown`, keep refining `proposal.md` and specs instead of forcing design
15
+ - do not move to `/dv:design` until the command-backed checks stop blocking
16
+
9
17
  Focus on:
10
18
  - scope
11
19
  - pages
@@ -6,6 +6,17 @@ Use the Da Vinci workflow for this request.
6
6
 
7
7
  Action: `build`
8
8
 
9
+ Before broad implementation when shell access is available:
10
+ - run `da-vinci workflow-status --project <path> [--change <id>] --json`
11
+ - run `da-vinci next-step --project <path> [--change <id>]`
12
+ - if the primary recommended route is not `/dv:build`, stop and continue from that route instead of forcing implementation
13
+ - run `da-vinci lint-spec --project <path> [--change <id>]`
14
+ - run `da-vinci scope-check --project <path> [--change <id>]`
15
+ - if `tasks.md` exists, run `da-vinci lint-tasks --project <path> [--change <id>]`
16
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
17
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
18
+ - treat any `BLOCK` or missing required planning/design artifact as a hard stop before broad implementation
19
+
9
20
  Implementation rules:
10
21
  - requirements decide behavior
11
22
  - Pencil decides presentation
@@ -13,10 +13,13 @@ Create or update:
13
13
  Use Pencil-backed page coverage as the source of presentation truth.
14
14
  Before non-trivial `batch_design` calls, preflight the Pencil operations when shell access is available.
15
15
  If the same anchor surface rolls back twice, switch to micro-batches of 6 or fewer operations until a clean schema-safe pass succeeds.
16
- Require the session wrapper commands on autonomous runs: `da-vinci pencil-session begin`, `da-vinci pencil-session persist`, and `da-vinci pencil-session end`.
16
+ Require the session wrapper commands on autonomous runs: `da-vinci pencil-session begin`, `da-vinci save-current-design`, and `da-vinci pencil-session end`.
17
17
  Before the first Pencil edit, require `da-vinci pencil-session begin` so the registered project-local `.pen` is seeded and locked before editing starts.
18
18
  When multiple `.pen` sources exist (for example an external backup), run `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>` before `pencil-session begin`. If hashes diverge, confirm source priority explicitly and sync the chosen source into the project-local `.pen` (for example `da-vinci sync-pen-source --from <preferred-source> --to <project-pen>`) before continuing edits.
19
- If a registered project-local `.pen` already exists, reopen it for continuity but persist a fresh live MCP snapshot back to that same path through `pencil-session persist` after material edits.
19
+ If a registered project-local `.pen` already exists, reopen it for continuity and use `da-vinci save-current-design --project <project-path>` after material edits.
20
+ Treat `saved`, `blocked`, and `unavailable` as distinct outcomes; never treat `unavailable` as a successful save.
21
+ Use the lower-level `pencil-session persist` payload path only when the high-level save bridge is unavailable.
22
+ The MVP guarantee is bound source-path safety (`registered .pen`, session `penPath`, and active editor path converge), not exact window-instance identity before MCP exposes stable window/editor identifiers.
20
23
  After the first successful Pencil write, run `da-vinci audit --mode integrity <project-path>` before broad expansion continues.
21
24
  If Pencil MCP is active, run the MCP runtime gate after the first successful Pencil write and record it in `pencil-design.md`.
22
25
  Screenshot review must record an explicit `PASS`, `WARN`, or `BLOCK` plus the issue list and revision outcome; "looks good" is not a valid review record.
@@ -10,4 +10,12 @@ Create or update:
10
10
  - `tasks.md`
11
11
 
12
12
  Tasks must cover spec behavior, Pencil-backed UI work, and verification.
13
+
14
+ Before claiming implementation-ready task planning:
15
+ - re-check that the workflow is still in the `/dv:tasks` lane when route context is stale or unclear
16
+ - run the `task checkpoint`
17
+ - when shell access is available, run `da-vinci lint-tasks --project <path> [--change <id>]`
18
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
19
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
20
+ - do not hand off to `build` while task coverage or bindings readiness are still blocking
13
21
  """
@@ -12,5 +12,13 @@ Check:
12
12
  - drift between artifacts and code
13
13
 
14
14
  Update `verification.md` when needed.
15
+ When shell access is available:
16
+ - run `da-vinci verify-bindings --project <path> [--change <id>]`
17
+ - run `da-vinci verify-implementation --project <path> [--change <id>]`
18
+ - run `da-vinci verify-structure --project <path> [--change <id>]`
19
+ - run `da-vinci verify-coverage --project <path> [--change <id>]`
20
+ - treat command output as the gate; do not downgrade `BLOCK` or `FAIL` into soft guidance
21
+ - if any verification surface is still `BLOCK` or `FAIL`, keep the workflow in verification and record the drift instead of claiming success
15
22
  If Pencil MCP is active and terminal completion is being considered, re-check the MCP runtime gate evidence before treating verification as complete.
23
+ Before any terminal completion claim, require `da-vinci audit --mode completion --change <change-id> <project-path>` to pass.
16
24
  """
@@ -99,6 +99,11 @@ These commands do not replace route selection, but they support design execution
99
99
  - `da-vinci sync-pen-source --from <preferred-source> --to <project-pen>`
100
100
  - copies the selected latest `.pen` source into the project-local `.pen` path and refreshes Da Vinci state metadata
101
101
  - use when external backup is the latest baseline and must be materialized before `pencil-session begin`
102
+ - `da-vinci save-current-design --project <path> [--json] [--continue-on-error]`
103
+ - runs the high-level bound-source save flow for guided design persistence
104
+ - requires convergence of registered `.pen`, session `penPath`, and active editor path before persistence
105
+ - returns one explicit outcome envelope: `saved`, `blocked`, or `unavailable`
106
+ - `blocked` means save-time source/lock/payload contracts failed; `unavailable` means MCP bridge/runtime capture was not reachable
102
107
 
103
108
  Use these utilities during `/dv:design`, especially before anchor-surface icon finalization.
104
109
 
@@ -172,6 +177,14 @@ For `overhaul-from-code`, this stage may also create:
172
177
 
173
178
  This is the behavior-truth shaping stage.
174
179
 
180
+ Breakdown-stage self-check:
181
+
182
+ - before handing requirements off to design, run `da-vinci workflow-status --project <path> [--change <id>] --json`
183
+ - run `da-vinci next-step --project <path> [--change <id>]`
184
+ - run `da-vinci lint-spec --project <path> [--change <id>] --strict`
185
+ - treat command output as the gate; do not replace `BLOCK` or non-zero results with narrative judgment
186
+ - if the primary recommended route is still `/dv:breakdown`, keep refining `proposal.md` and specs instead of forcing `/dv:design`
187
+
175
188
  ### `/dv:design`
176
189
 
177
190
  Use when:
@@ -210,6 +223,14 @@ This is the implementation-planning stage.
210
223
 
211
224
  It does not write code.
212
225
 
226
+ Task-stage self-check:
227
+
228
+ - run the `task checkpoint` before handing work off to implementation
229
+ - when shell access is available, run `da-vinci lint-tasks --project <path> [--change <id>]`
230
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
231
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
232
+ - do not promote `/dv:build` while task coverage or bindings readiness are still blocking
233
+
213
234
  ### `/dv:build`
214
235
 
215
236
  Use when:
@@ -225,6 +246,18 @@ Creates or updates:
225
246
 
226
247
  This is the execution stage.
227
248
 
249
+ Build-stage self-check:
250
+
251
+ - before broad implementation, run `da-vinci workflow-status --project <path> [--change <id>] --json`
252
+ - run `da-vinci next-step --project <path> [--change <id>]`
253
+ - if the primary recommended route is not `/dv:build`, stop and continue from that route instead of forcing implementation
254
+ - run `da-vinci lint-spec --project <path> [--change <id>]`
255
+ - run `da-vinci scope-check --project <path> [--change <id>]`
256
+ - if `tasks.md` exists, run `da-vinci lint-tasks --project <path> [--change <id>]`
257
+ - if both `pencil-design.md` and `pencil-bindings.md` exist, run `da-vinci lint-bindings --project <path> [--change <id>]`
258
+ - treat command output as the gate; do not downgrade `BLOCK` or non-zero results into soft guidance
259
+ - treat any `BLOCK` or missing required planning/design artifact as a hard stop before broad implementation
260
+
228
261
  Completion discipline:
229
262
 
230
263
  - treat `BUILD SUCCESSFUL` as compile-only evidence
@@ -245,6 +278,16 @@ Creates or updates:
245
278
 
246
279
  This is the truth-reconciliation stage.
247
280
 
281
+ Verify-stage self-check:
282
+
283
+ - when shell access is available, run `da-vinci verify-bindings --project <path> [--change <id>]`
284
+ - run `da-vinci verify-implementation --project <path> [--change <id>]`
285
+ - run `da-vinci verify-structure --project <path> [--change <id>]`
286
+ - run `da-vinci verify-coverage --project <path> [--change <id>]`
287
+ - treat command output as the gate; do not downgrade `BLOCK` or `FAIL` into soft guidance
288
+ - if any verification surface is still `BLOCK` or `FAIL`, keep the workflow in verification and record the drift instead of claiming success
289
+ - before terminal completion, require `da-vinci audit --mode completion --change <change-id> <project-path>` to pass
290
+
248
291
  ## State-Based Next-Step Rules
249
292
 
250
293
  These are the intended route recommendations.
@@ -1,5 +1,9 @@
1
1
  # Execution-Chain Upgrade Plan Notes
2
2
 
3
+ Historical planning note only.
4
+
5
+ Use `openspec/changes/execution-chain-upgrade-plan/tasks.md` as the canonical executable task breakdown for this upgrade. This file records the background planning decisions that shaped that OpenSpec change; it is not the source of truth for implementation sequencing or release signoff.
6
+
3
7
  This document records planning decisions required by the execution-chain upgrade.
4
8
 
5
9
  ## Phase 0 Pre-work Decisions
@@ -24,6 +28,7 @@ The workflow contract must own:
24
28
  - route dependencies
25
29
  - stage handoff gates
26
30
  - status vocabulary (`PASS/WARN/BLOCK`)
31
+ - audit-owned machine-parsed hard-gate fields from `DA-VINCI.md`, `.da-vinci/design-registry.md`, and `pencil-design.md`
27
32
 
28
33
  ### Compatibility boundaries
29
34
 
@@ -83,18 +88,18 @@ Re-baseline rule:
83
88
  ### Measurable DoD checks
84
89
 
85
90
  - Phase 0: inventory, parser ownership, schema boundaries, and test layers documented
86
- - Phase 1: workflow-status/next-step + prompt-first continue integration + contract tests green
91
+ - Phase 1: workflow-status/next-step + prompt-first continue integration + design-source/runtime/mapping-aware routing + contract tests green
87
92
  - Phase 2: lint/scope + deterministic sidecars + advisory/strict semantics tested
88
93
  - Phase 3: verify surfaces + task-group metadata + audit wiring tested
89
94
  - Phase 4a: persisted state + diff + compatibility hardening tested
90
95
  - Phase 4b: constrained scaffold MVP tested
91
- - Phase 4c: command-asset convergence + docs + release controls tested
96
+ - Phase 4c: command-asset convergence + docs + audit-aligned release controls tested
92
97
 
93
98
  ### First-release MVP scope
94
99
 
95
100
  In scope:
96
101
 
97
- - workflow-status/next-step
102
+ - workflow-status/next-step with design-source/runtime/mapping-aware route guards
98
103
  - lint-spec/lint-tasks/lint-bindings/scope-check
99
104
  - generate-sidecars + diff-spec
100
105
  - verify-bindings/verify-implementation/verify-structure/verify-coverage
@@ -121,5 +126,7 @@ Out of scope:
121
126
  ### Release criteria and fallback
122
127
 
123
128
  - release requires core + contracts + e2e lanes green
129
+ - completion or release-ready claims for shipped change scope must also pass `da-vinci audit --mode completion --change <change-id> <project-path>`
130
+ - CI green is necessary but not sufficient when workflow truth or completion semantics disagree with audit
124
131
  - stale persisted state always falls back to derived state
125
132
  - verify-structure unsupported cases must emit heuristic fallback with confidence
@@ -146,7 +146,8 @@ Generate DA-VINCI.md, proposal, specs, page map, Pencil-backed launch pages, bin
146
146
  8. create `pencil-design.md`
147
147
  - record the generated Pencil screens
148
148
  - require `da-vinci pencil-session begin` before the first Pencil edit so the registered `.pen` is seeded and locked up front
149
- - if a registered project-local `.pen` already exists, reopen it for continuity but overwrite it from the current live MCP snapshot through `da-vinci pencil-session persist` after material live edits
149
+ - if a registered project-local `.pen` already exists, reopen it for continuity, then run `da-vinci save-current-design --project <project-path>` after material live edits
150
+ - treat `saved`, `blocked`, and `unavailable` as distinct outcomes; only fall back to low-level `pencil-session persist --nodes-file/--variables-file` when the high-level bridge is unavailable
150
151
  - keep screenshot exports under `.da-vinci/changes/<change-id>/exports/` rather than `.da-vinci/designs/`
151
152
 
152
153
  9. create `pencil-bindings.md`
@@ -29,7 +29,7 @@ PNG exports are review artifacts only. They are not the design source of truth.
29
29
  Da Vinci now requires the session wrapper on autonomous runs:
30
30
 
31
31
  - `da-vinci pencil-session begin`
32
- - `da-vinci pencil-session persist`
32
+ - `da-vinci save-current-design`
33
33
  - `da-vinci pencil-session end`
34
34
 
35
35
  This wrapper exists to make three things mandatory:
@@ -75,18 +75,21 @@ When resuming from existing artifacts:
75
75
 
76
76
  Da Vinci does not treat headless interactive `save()` as authoritative persistence truth.
77
77
 
78
- Instead, the persistence step is:
78
+ Instead, the primary persistence step is:
79
79
 
80
- 1. read MCP-readable node snapshot data
81
- 2. read MCP-readable variable snapshot data
82
- 3. write the project-local `.pen`
83
- 4. reopen-verify it
84
- 5. compare live snapshot and persisted snapshot hashes
80
+ 1. run `da-vinci save-current-design --project <project-path>`
81
+ 2. require one explicit result envelope: `saved`, `blocked`, or `unavailable`
82
+ 3. treat only `saved` as persisted success
83
+ 4. treat `blocked` as save-time source/lock/payload contract failure
84
+ 5. treat `unavailable` as MCP bridge/runtime capture absence (never as a successful save)
85
85
 
86
86
  Relevant commands:
87
87
 
88
- - `da-vinci write-pen`
89
- - `da-vinci check-pen-sync`
88
+ - high-level: `da-vinci save-current-design`
89
+ - low-level fallback: `da-vinci pencil-session persist`, `da-vinci write-pen`, `da-vinci check-pen-sync`
90
+
91
+ The MVP safety guarantee is source-path convergence only: registered `.pen`, session `penPath`, and active editor path must converge.
92
+ Exact window-instance identity remains out of scope until MCP exposes stable window/editor identifiers.
90
93
 
91
94
  `da-vinci snapshot-pen` is disk-to-disk only. It is not the live-edit persistence path.
92
95
 
@@ -251,7 +254,7 @@ Typical autonomous chain:
251
254
  1. `da-vinci pencil-session begin --project <project-path> --pen <path>`
252
255
  2. if external/secondary `.pen` files exist, run `da-vinci check-pen-baseline --pen <project-pen> --baseline <other-pen>` before edits; if diverged, sync the preferred source into `<project-pen>` first
253
256
  3. Pencil MCP edits
254
- 4. `da-vinci pencil-session persist --project <project-path> --pen <path> --nodes-file <nodes.json> --variables-file <vars.json> --version <version>`
257
+ 4. `da-vinci save-current-design --project <project-path>`
255
258
  5. screenshot review + layout hygiene
256
259
  6. design checkpoint
257
260
  7. design-supervisor review when configured
@@ -278,13 +281,13 @@ flowchart TD
278
281
  K -- No --> F
279
282
  K -- Yes --> L{Design-supervisor review configured?}
280
283
  L -- Yes --> M[Run design-supervisor review on screenshots plus theme inputs]
281
- L -- No --> N[pencil-session persist writes live MCP snapshot back to .pen]
284
+ L -- No --> N[save-current-design persists bound live snapshot back to .pen]
282
285
  M --> O{Require Supervisor Review?}
283
286
  O -- No --> N
284
287
  O -- Yes --> P{Review PASS or accepted WARN?}
285
288
  P -- No --> F
286
289
  P -- Yes --> N
287
- N --> Q[check-pen-sync verifies live hash equals persisted hash]
290
+ N --> Q[save-current-design returns saved or a terminal blocker/unavailable result]
288
291
  Q --> R{design-source checkpoint and runtime gate pass?}
289
292
  R -- No --> F
290
293
  R -- Yes --> S{More design work needed?}