gentle-pi 3.7.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -6
- package/assets/agents/gentle-ai-explore.md +4 -4
- package/assets/agents/gentle-ai-verify.md +6 -4
- package/assets/agents/gentle-ai-worker.md +7 -9
- package/assets/orchestrator-delegation.md +40 -41
- package/assets/orchestrator-memory.md +1 -22
- package/assets/orchestrator-skills.md +1 -1
- package/assets/orchestrator.md +12 -24
- package/assets/support/strict-tdd-verify.md +4 -266
- package/assets/support/strict-tdd.md +8 -360
- package/bin/gentle-shell.mjs +254 -29
- package/docs/delegated-verification.md +26 -1
- package/docs/gentle-agents-activity.md +24 -0
- package/docs/gentle-shell.md +92 -28
- package/docs/native-authority-architecture.md +2 -2
- package/docs/prompt-history.md +280 -0
- package/docs/readme-reference.md +112 -206
- package/docs/telemetry.md +1 -1
- package/docs/yolo-mode.md +86 -0
- package/extensions/child-context.ts +26 -0
- package/extensions/child-safety.ts +23 -0
- package/extensions/gentle-agents.ts +429 -262
- package/extensions/gentle-ai.ts +781 -683
- package/extensions/gentle-shell.ts +1375 -88
- package/extensions/gentle-stats.ts +101 -0
- package/extensions/gentle-todo.ts +18 -7
- package/extensions/history/atomic-write.ts +38 -0
- package/extensions/history/hide-prompts.ts +183 -0
- package/extensions/history/index.ts +1419 -0
- package/extensions/history/load-shared-history.ts +39 -0
- package/extensions/history/selector-helpers.ts +538 -0
- package/extensions/history/session-scan.ts +233 -0
- package/extensions/history/store.ts +1119 -0
- package/extensions/nan-provider.ts +6 -0
- package/extensions/quiet-tools.ts +179 -87
- package/extensions/resume-hint.ts +60 -0
- package/extensions/skill-registry.ts +16 -12
- package/extensions/startup-banner.ts +60 -31
- package/lib/agent-assets.ts +604 -0
- package/lib/agent-profile-pin.ts +12 -0
- package/lib/agents-message-delivery.ts +181 -0
- package/lib/agents-protocol.ts +60 -0
- package/lib/agents-runner.ts +96 -98
- package/lib/agents-view.ts +26 -3
- package/lib/agents-widget.ts +16 -9
- package/lib/append-system-prompt.ts +21 -0
- package/lib/bounded-writer-admission.ts +147 -0
- package/lib/card-style-policy.ts +60 -0
- package/lib/child-context-files.ts +166 -0
- package/lib/codemode-renderer.ts +185 -0
- package/lib/command-palette-catalog.ts +3 -9
- package/lib/command-palette.ts +25 -14
- package/lib/destructive-command-guard.ts +144 -0
- package/lib/gentle-ai-elapsed-store.ts +87 -0
- package/lib/gentle-ai-renderer.ts +196 -39
- package/lib/gentle-shell-launcher.ts +24 -13
- package/lib/gentle-shell-resume-hint.ts +176 -0
- package/lib/history-capture-policy.ts +95 -0
- package/lib/model-routing-authority.ts +5 -1
- package/lib/nan-provider.ts +227 -0
- package/lib/native-review-cli.ts +49 -108
- package/lib/odd-phase-inference.ts +231 -0
- package/lib/odd-phase.ts +141 -0
- package/lib/overlay-repaint.ts +26 -0
- package/lib/pi-tui-keys.ts +53 -0
- package/lib/review-candidate-view-owner.ts +67 -17
- package/lib/review-candidate-view.ts +112 -25
- package/lib/review-reminder-receipt.ts +48 -8
- package/lib/review-risk-assessment.ts +156 -11
- package/lib/review-sidebar-state.ts +223 -0
- package/lib/selection-engine.ts +515 -0
- package/lib/session-messaging-grants.ts +135 -0
- package/lib/session-worktree-registry.ts +14 -2
- package/lib/shell-bar.ts +179 -24
- package/lib/shell-card.ts +287 -18
- package/lib/shell-changes-view.ts +2 -1
- package/lib/shell-prompt.ts +102 -6
- package/lib/shell-sidebar-layout.ts +78 -14
- package/lib/shell-sidebar.ts +15 -1
- package/lib/shell-todo.ts +23 -13
- package/lib/shell-usage-view.ts +9 -4
- package/lib/shell-usage.ts +66 -10
- package/lib/stats-collector.ts +381 -0
- package/lib/stats-view.ts +431 -0
- package/lib/theme-customization.ts +52 -0
- package/lib/vim-editor-adapter.ts +379 -0
- package/lib/vim-normal-engine.ts +154 -0
- package/lib/vim-operator-engine.ts +416 -0
- package/lib/vim-policy.ts +49 -0
- package/lib/vim-visual-engine.ts +107 -0
- package/lib/visual-customization-policy.ts +108 -0
- package/lib/visual-customize-view.ts +330 -0
- package/lib/visual-profiles.ts +228 -0
- package/lib/yolo-session-policy.ts +240 -0
- package/package.json +20 -8
- package/runtime/gentle-shell-launcher.mjs +23 -12
- package/runtime/gentle-shell-resume-hint.mjs +177 -0
- package/runtime/native-review-cli.mjs +49 -108
- package/runtime/review-risk-assessment.mjs +154 -9
- package/scripts/build-runtime-modules.mjs +1 -0
- package/scripts/gentle-ai-installer.mjs +14 -13
- package/scripts/mirror-odd-routing.mjs +2 -2
- package/scripts/run-test-suite.mjs +76 -0
- package/scripts/test-packed-runner.mjs +31 -14
- package/scripts/verify-package-files.mjs +11 -22
- package/skills/branch-pr/SKILL.md +24 -52
- package/skills/chained-pr/SKILL.md +31 -15
- package/skills/chained-pr/references/chaining-details.md +31 -20
- package/skills/gentle-ai/SKILL.md +9 -15
- package/skills/issue-creation/SKILL.md +8 -2
- package/skills/issue-creation/references/delegated-workflow-actions.md +19 -0
- package/skills/work-unit-commits/SKILL.md +4 -3
- package/tests/agent-profiles.test.ts +18 -0
- package/tests/agents-fake-child.ts +2 -2
- package/tests/agents-message-delivery.test.ts +106 -0
- package/tests/agents-protocol.test.ts +40 -0
- package/tests/agents-runner.test.ts +378 -89
- package/tests/agents-view-thread-identity.test.ts +169 -0
- package/tests/agents-view.test.ts +8 -2
- package/tests/agents-widget.test.ts +154 -15
- package/tests/append-system-prompt-route.test.ts +160 -0
- package/tests/append-system-prompt.test.ts +46 -0
- package/tests/artifact-language.test.ts +19 -213
- package/tests/ask-user-question.test.ts +44 -1
- package/tests/asset-installation-runtime.test.ts +5 -16
- package/tests/autonomous-guard.test.ts +69 -1
- package/tests/bounded-writer-admission.test.ts +95 -0
- package/tests/branch-pr-skill.test.ts +43 -0
- package/tests/card-style-policy.test.ts +55 -0
- package/tests/chained-pr-skill.test.ts +124 -0
- package/tests/child-context-files.test.ts +255 -0
- package/tests/child-safety.test.ts +82 -0
- package/tests/codemode-rendering.test.ts +491 -0
- package/tests/command-palette.test.ts +39 -3
- package/tests/delegated-key-learnings-contract.test.ts +0 -76
- package/tests/destructive-command-guard.test.ts +84 -0
- package/tests/devbinary/native-review-parity.devtest.ts +170 -2
- package/tests/devbinary/non-git-subagent-bootstrap.devtest.ts +193 -0
- package/tests/fixtures/stats/sessions/--work-alpha--/2026-09-28T10-00-00-000Z_aaa.jsonl +7 -0
- package/tests/fixtures/stats/sessions/--work-alpha--/2026-09-29T23-00-00-000Z_bbb.jsonl +3 -0
- package/tests/fixtures/stats/sessions/--work-alpha--/2026-09-30T08-00-00-000Z_ddd.jsonl +2 -0
- package/tests/fixtures/stats/sessions/--work-alpha--/2026-09-30T09-00-00-000Z_eee.jsonl +3 -0
- package/tests/fixtures/stats/sessions/--work-alpha--/run-1/session.jsonl +2 -0
- package/tests/fixtures/stats/sessions/--work-beta--/2026-09-01T12-00-00-000Z_ccc.jsonl +2 -0
- package/tests/fixtures/stats/user-pi/sessions/--work-alpha--/2026-09-28T10-00-00-000Z_aaa.jsonl +2 -0
- package/tests/fixtures/stats/user-pi/sessions/--work-alpha--/2026-09-29T23-00-00-000Z_bbb.jsonl +4 -0
- package/tests/fixtures/stats/user-pi/sessions/--work-gamma--/2026-09-20T09-00-00-000Z_fff.jsonl +3 -0
- package/tests/generic-agent-tools.test.ts +54 -0
- package/tests/gentle-agents.test.ts +1047 -252
- package/tests/gentle-ai-binary.test.ts +3 -3
- package/tests/gentle-ai-elapsed-store.test.ts +68 -0
- package/tests/gentle-ai-installer.test.ts +68 -54
- package/tests/gentle-ai-renderer.test.ts +487 -8
- package/tests/gentle-ai.test.ts +288 -65
- package/tests/gentle-card-text.ts +2 -1
- package/tests/gentle-shell-bin.test.ts +651 -114
- package/tests/gentle-shell-launcher.test.ts +99 -52
- package/tests/gentle-shell-resume-hint.test.ts +270 -0
- package/tests/gentle-shell.test.ts +3839 -187
- package/tests/gentle-stats.test.ts +152 -0
- package/tests/gentle-theme.test.ts +4 -1
- package/tests/gentle-todo.test.ts +80 -8
- package/tests/history-atomic-write.test.ts +57 -0
- package/tests/history-capture-policy.test.ts +102 -0
- package/tests/history-command-registration.test.ts +164 -0
- package/tests/history-dedupe-entries.test.ts +123 -0
- package/tests/history-delete-backfill.test.ts +190 -0
- package/tests/history-delete-confirm.test.ts +460 -0
- package/tests/history-dispatch.test.ts +180 -0
- package/tests/history-drain-hidden.test.ts +110 -0
- package/tests/history-drain-order.test.ts +98 -0
- package/tests/history-expanded-globals.test.ts +62 -0
- package/tests/history-gc.test.ts +832 -0
- package/tests/history-header-layout.test.ts +265 -0
- package/tests/history-hide-prompts.test.ts +275 -0
- package/tests/history-lazy-windowing.test.ts +508 -0
- package/tests/history-legacy-migrate-v2.test.ts +297 -0
- package/tests/history-load-shared-history.test.ts +53 -0
- package/tests/history-max-results-cap.test.ts +76 -0
- package/tests/history-multi-reader.test.ts +203 -0
- package/tests/history-off-path.test.ts +170 -0
- package/tests/history-openflow-integration.test.ts +173 -0
- package/tests/history-overlay-margin.test.ts +326 -0
- package/tests/history-preview-layout.test.ts +93 -0
- package/tests/history-registry.test.ts +143 -0
- package/tests/history-scope-delete.test.ts +411 -0
- package/tests/history-search-caret-keys.test.ts +142 -0
- package/tests/history-seed-bootstrap.test.ts +170 -0
- package/tests/history-seed-regen.test.ts +129 -0
- package/tests/history-selector-windowing.test.ts +94 -0
- package/tests/history-session-scan-directory.test.ts +87 -0
- package/tests/history-session-scan-extract.test.ts +583 -0
- package/tests/history-session-writer.test.ts +351 -0
- package/tests/history-store-paths.test.ts +79 -0
- package/tests/history-tombstone-exact.test.ts +139 -0
- package/tests/history-wheel-mouse.test.ts +242 -0
- package/tests/inprocess-reviewer.test.ts +29 -19
- package/tests/issue-creation-skill.test.ts +61 -0
- package/tests/model-routing-authority.test.ts +16 -0
- package/tests/nan-provider.test.ts +471 -0
- package/tests/native-review-capability-contract.test.ts +7 -1
- package/tests/native-review-cli.test.ts +6 -120
- package/tests/native-review-parity-runtime.test.ts +100 -3
- package/tests/odd-integration.test.ts +67 -0
- package/tests/odd-phase-inference.test.ts +213 -0
- package/tests/odd-phase-loader.test.ts +253 -0
- package/tests/odd-phase.test.ts +307 -0
- package/tests/odd-routing-canonical-ratchet.test.ts +11 -6
- package/tests/odd-routing-contract.test.ts +86 -35
- package/tests/orchestrator-budget.test.ts +14 -39
- package/tests/orchestrator-rdd-ownership.test.ts +3 -3
- package/tests/overlay-repaint.test.ts +74 -0
- package/tests/package-manifest.test.ts +252 -115
- package/tests/packed-runner-owned-path.test.ts +46 -0
- package/tests/persona-single-channel.test.ts +6 -6
- package/tests/provider-defect-handoff.test.ts +3 -11
- package/tests/quiet-bash-runtime.test.ts +76 -0
- package/tests/quiet-tool-rendering.test.ts +409 -184
- package/tests/rdd-aware-verification-contract.test.ts +76 -1
- package/tests/rdd-status-line.test.ts +9 -4
- package/tests/resume-hint-extension.test.ts +122 -0
- package/tests/review-agent-end-preflight.test.ts +176 -12
- package/tests/review-candidate-owner-retry.test.ts +22 -1
- package/tests/review-candidate-view.test.ts +298 -0
- package/tests/review-contract-prompt.test.ts +108 -43
- package/tests/review-controller-lock-status.test.ts +0 -1
- package/tests/review-controller-native-routing.test.ts +611 -5
- package/tests/review-controller-workspace-root.test.ts +163 -4
- package/tests/review-host-relay-routing.test.ts +338 -2
- package/tests/review-integration-v2-forward.test.ts +200 -0
- package/tests/review-ledger-contract.test.ts +10 -34
- package/tests/review-reminder-receipt.test.ts +47 -1
- package/tests/review-risk-assessment.test.ts +498 -6
- package/tests/review-sidebar-state.test.ts +402 -0
- package/tests/run-test-suite.test.ts +124 -0
- package/tests/runtime-harness.mjs +145 -786
- package/tests/runtime-metrics-children.test.ts +16 -23
- package/tests/selection-engine.test.ts +421 -0
- package/tests/session-messaging-grants.test.ts +255 -0
- package/tests/session-worktree-registry.test.ts +77 -0
- package/tests/shell-bar.test.ts +382 -1
- package/tests/shell-card.test.ts +353 -1
- package/tests/shell-changes-view.test.ts +52 -0
- package/tests/shell-prompt.test.ts +94 -2
- package/tests/shell-sidebar-layout.test.ts +325 -21
- package/tests/shell-sidebar-scroll-benchmark.test.ts +255 -0
- package/tests/shell-todo.test.ts +87 -1
- package/tests/shell-usage-view.test.ts +27 -0
- package/tests/shell-usage.test.ts +73 -0
- package/tests/skill-registry.test.ts +50 -1
- package/tests/startup-banner.test.ts +130 -2
- package/tests/stats-collector.test.ts +195 -0
- package/tests/stats-view.test.ts +202 -0
- package/tests/telemetry-trigger.test.ts +81 -20
- package/tests/theme-customization.test.ts +72 -0
- package/tests/vim-editor-adapter-host-resolution.test.ts +37 -0
- package/tests/vim-editor-adapter.test.ts +804 -0
- package/tests/vim-normal-engine.test.ts +101 -0
- package/tests/vim-operator-engine.test.ts +215 -0
- package/tests/vim-policy.test.ts +19 -0
- package/tests/vim-visual-engine.test.ts +52 -0
- package/tests/visual-customization-policy.test.ts +110 -0
- package/tests/visual-customize-view.test.ts +418 -0
- package/tests/visual-profiles.test.ts +87 -0
- package/tests/yolo-customize.test.ts +256 -0
- package/tests/yolo-mode-runtime.test.ts +161 -0
- package/tests/yolo-mode.test.ts +261 -0
- package/tests/yolo-session-policy.test.ts +59 -0
- package/themes/Gentle.json +2 -1
- package/themes/Gentleman-Cute.json +2 -1
- package/themes/Gentleman-Sexy.json +2 -1
- package/assets/agents/sdd-apply.md +0 -159
- package/assets/agents/sdd-archive.md +0 -228
- package/assets/agents/sdd-design.md +0 -49
- package/assets/agents/sdd-explore.md +0 -48
- package/assets/agents/sdd-init.md +0 -56
- package/assets/agents/sdd-onboard.md +0 -52
- package/assets/agents/sdd-proposal.md +0 -64
- package/assets/agents/sdd-remediate.md +0 -37
- package/assets/agents/sdd-research.md +0 -49
- package/assets/agents/sdd-spec.md +0 -192
- package/assets/agents/sdd-status.md +0 -54
- package/assets/agents/sdd-tasks.md +0 -108
- package/assets/agents/sdd-verify.md +0 -124
- package/assets/chains/sdd-full.chain.md +0 -83
- package/assets/chains/sdd-plan.chain.md +0 -56
- package/assets/chains/sdd-verify.chain.md +0 -43
- package/assets/sdd-orchestrator-workflow.md +0 -319
- package/assets/support/sdd-status-contract.md +0 -77
- package/docs/assets/diagrams/sdd-cycle.svg +0 -14
- package/extensions/sdd-init.ts +0 -816
- package/lib/openspec-deltas.ts +0 -156
- package/lib/sdd-preflight.ts +0 -1066
- package/lib/sdd-research-capabilities.ts +0 -94
- package/lib/sdd-status.ts +0 -26
- package/tests/fixtures/legacy/sdd-research-v2.5.0.md +0 -54
- package/tests/fixtures/native-review-cli/v2.1.3/bind-sdd.json +0 -25
- package/tests/fixtures/v0.10.7/assets/agents/sdd-apply.md +0 -132
- package/tests/openspec-deltas.test.ts +0 -209
- package/tests/sdd-agent-tools.test.ts +0 -156
- package/tests/sdd-archive-replay.test.ts +0 -82
- package/tests/sdd-classical-continuation.test.ts +0 -74
- package/tests/sdd-execution-routing-contract.test.ts +0 -44
- package/tests/sdd-managed-runtime-settlement.test.ts +0 -155
- package/tests/sdd-native-managed-uptake.test.ts +0 -243
- package/tests/sdd-no-attempts-contract.test.ts +0 -15
- package/tests/sdd-odd-integration.test.ts +0 -33
- package/tests/sdd-optional-research.test.ts +0 -124
- package/tests/sdd-planning-routing-contract.test.ts +0 -45
- package/tests/sdd-preflight-rpc-input.test.ts +0 -125
- package/tests/sdd-preflight.test.ts +0 -541
- package/tests/sdd-research-capabilities.test.ts +0 -114
- package/tests/sdd-research-live.test.ts +0 -241
- package/tests/sdd-selection-transport.test.ts +0 -653
- package/tests/sdd-status.test.ts +0 -9
- package/tests/sdd-task-truth.test.ts +0 -43
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-spec
|
|
3
|
-
description: Write SDD delta specs with requirements and scenarios.
|
|
4
|
-
tools:
|
|
5
|
-
- read
|
|
6
|
-
- grep
|
|
7
|
-
- find
|
|
8
|
-
- write
|
|
9
|
-
- edit
|
|
10
|
-
- mem_search
|
|
11
|
-
- mem_get_observation
|
|
12
|
-
- mem_save
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
You are the SDD spec executor for Gentle AI.
|
|
16
|
-
|
|
17
|
-
## Parent Preflight Transport
|
|
18
|
-
|
|
19
|
-
Consume the exact `## SDD Session Preflight` block from parent-provided context. It is parent authority, not a prompt to infer or persist defaults. If absent or malformed, return `blocked` without phase work. A delegated RPC child never confirms or persists SDD choices.
|
|
20
|
-
|
|
21
|
-
## Skill Resolution Contract
|
|
22
|
-
|
|
23
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
24
|
-
|
|
25
|
-
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
26
|
-
|
|
27
|
-
## Memory Contract
|
|
28
|
-
|
|
29
|
-
Read your own input artifacts directly from the active backend before doing the phase work; do not wait for the parent to inline them. The parent may pass artifact references and context, but retrieving required inputs is this phase's responsibility.
|
|
30
|
-
|
|
31
|
-
Inputs to read (`engram`/`both`: use the injected Engram memory read tools for the topic key, then fetch the full observation; `openspec`: read the file under `openspec/changes/{change}/`):
|
|
32
|
-
- Proposal (required): `sdd/{change}/proposal`
|
|
33
|
-
|
|
34
|
-
Persist this phase's artifact to the active backend before returning (mandatory):
|
|
35
|
-
- `engram`/`both`: call the injected Engram save tool with title and `topic_key` `"sdd/{change}/spec"`, `type: "architecture"`, `project` from context, and `capture_prompt: false` when the tool schema supports it (omit the field if an older schema rejects it).
|
|
36
|
-
- `openspec`: write/update the spec files under `openspec/changes/{change}/`.
|
|
37
|
-
- `none`: return the spec inline.
|
|
38
|
-
|
|
39
|
-
Never claim persistence you did not perform.
|
|
40
|
-
|
|
41
|
-
## Purpose
|
|
42
|
-
|
|
43
|
-
Write specifications for an approved change. Specs describe WHAT must be true after the change, not HOW to implement it.
|
|
44
|
-
|
|
45
|
-
## Artifact Store Modes
|
|
46
|
-
|
|
47
|
-
- `openspec`: write file-backed artifacts only.
|
|
48
|
-
- `both` / `hybrid`: write file-backed artifacts and save the phase artifact to memory when tools are available.
|
|
49
|
-
- `engram`: save the spec artifact to memory only. Engram is working memory; do not create or require `sdd/canonical/<domain>/spec` topics and do not perform canonical spec merge in Engram-only mode.
|
|
50
|
-
- `none`: return the result inline only.
|
|
51
|
-
|
|
52
|
-
## OpenSpec File Convention
|
|
53
|
-
|
|
54
|
-
In `openspec` and `both` / `hybrid` modes, use this layout:
|
|
55
|
-
|
|
56
|
-
```text
|
|
57
|
-
openspec/
|
|
58
|
-
├── specs/
|
|
59
|
-
│ └── {domain}/
|
|
60
|
-
│ └── spec.md # canonical accepted behavior
|
|
61
|
-
└── changes/
|
|
62
|
-
└── {change}/
|
|
63
|
-
├── proposal.md
|
|
64
|
-
└── specs/
|
|
65
|
-
└── {domain}/
|
|
66
|
-
└── spec.md # change spec or delta spec
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Read the proposal's `Capabilities` section first when present:
|
|
70
|
-
|
|
71
|
-
- `New Capabilities` become new domain specs.
|
|
72
|
-
- `Modified Capabilities` become delta specs against existing canonical specs.
|
|
73
|
-
|
|
74
|
-
If the proposal has no `Capabilities` section, infer domains from affected areas and report the assumption as a risk.
|
|
75
|
-
|
|
76
|
-
## Existing Spec Lookup
|
|
77
|
-
|
|
78
|
-
For each affected domain in file-backed modes:
|
|
79
|
-
|
|
80
|
-
1. Check `openspec/specs/{domain}/spec.md`.
|
|
81
|
-
2. If it exists, read it before writing the change spec.
|
|
82
|
-
3. If it does not exist, write a full new domain spec under the change folder.
|
|
83
|
-
4. Warn if another active change already has `openspec/changes/*/specs/{domain}/spec.md` for the same domain, excluding `openspec/changes/archive/` and the current change.
|
|
84
|
-
5. Warn if the current change has legacy flat `openspec/changes/{change}/spec.md`; archive cannot silently skip that shape.
|
|
85
|
-
|
|
86
|
-
## Delta Spec Format
|
|
87
|
-
|
|
88
|
-
When a canonical spec exists, write a delta spec at:
|
|
89
|
-
|
|
90
|
-
```text
|
|
91
|
-
openspec/changes/{change}/specs/{domain}/spec.md
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Use this structure:
|
|
95
|
-
|
|
96
|
-
```markdown
|
|
97
|
-
# Delta for {Domain}
|
|
98
|
-
|
|
99
|
-
## ADDED Requirements
|
|
100
|
-
|
|
101
|
-
### Requirement: {New Requirement Name}
|
|
102
|
-
|
|
103
|
-
The system MUST ...
|
|
104
|
-
|
|
105
|
-
#### Scenario: {Happy path}
|
|
106
|
-
|
|
107
|
-
- GIVEN ...
|
|
108
|
-
- WHEN ...
|
|
109
|
-
- THEN ...
|
|
110
|
-
|
|
111
|
-
## MODIFIED Requirements
|
|
112
|
-
|
|
113
|
-
### Requirement: {Existing Requirement Name}
|
|
114
|
-
|
|
115
|
-
{Full updated requirement text.}
|
|
116
|
-
(Previously: {one-line summary of what changed})
|
|
117
|
-
|
|
118
|
-
#### Scenario: {Still-valid scenario}
|
|
119
|
-
|
|
120
|
-
- GIVEN ...
|
|
121
|
-
- WHEN ...
|
|
122
|
-
- THEN ...
|
|
123
|
-
|
|
124
|
-
## REMOVED Requirements
|
|
125
|
-
|
|
126
|
-
### Requirement: {Requirement Being Removed}
|
|
127
|
-
|
|
128
|
-
(Reason: {why this requirement is being removed})
|
|
129
|
-
(Migration: {consumer/data/docs/test migration guidance, or "None"})
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Omit empty operation sections only when they would add noise. Do not invent implementation details.
|
|
133
|
-
|
|
134
|
-
`## RENAMED Requirements` is intentionally unsupported in gentle-pi until `lib/openspec-deltas.ts` implements executable rename semantics. Do not emit RENAMED sections; model renames as explicit ADDED/MODIFIED/REMOVED changes with Reason/Migration notes or block and ask for implementation support.
|
|
135
|
-
|
|
136
|
-
## MODIFIED Requirements Workflow
|
|
137
|
-
|
|
138
|
-
`## MODIFIED Requirements` is destructive at archive time because it replaces the canonical requirement block. To avoid losing scenarios:
|
|
139
|
-
|
|
140
|
-
1. Locate the requirement in `openspec/specs/{domain}/spec.md`.
|
|
141
|
-
2. Copy the entire requirement block, from `### Requirement:` through all of its `#### Scenario:` sections.
|
|
142
|
-
3. Paste the full block under `## MODIFIED Requirements`.
|
|
143
|
-
4. Edit the copy to reflect the new behavior.
|
|
144
|
-
5. Add `(Previously: ...)` under the requirement text.
|
|
145
|
-
|
|
146
|
-
If you are only adding behavior without changing existing behavior, use `## ADDED Requirements` instead of `## MODIFIED Requirements`.
|
|
147
|
-
|
|
148
|
-
## REMOVED Requirements Workflow
|
|
149
|
-
|
|
150
|
-
For each removed requirement, include `(Reason: ...)`. Include `(Migration: ...)` when consumers, persisted behavior, documentation, tests, or follow-up cleanup are affected; use `(Migration: None)` only when there is no migration impact.
|
|
151
|
-
|
|
152
|
-
## Full Spec Format for New Domains
|
|
153
|
-
|
|
154
|
-
If no canonical spec exists for the domain, write a full spec in the same change path:
|
|
155
|
-
|
|
156
|
-
```markdown
|
|
157
|
-
# {Domain} Specification
|
|
158
|
-
|
|
159
|
-
## Purpose
|
|
160
|
-
|
|
161
|
-
{High-level purpose.}
|
|
162
|
-
|
|
163
|
-
## Requirements
|
|
164
|
-
|
|
165
|
-
### Requirement: {Requirement Name}
|
|
166
|
-
|
|
167
|
-
The system MUST ...
|
|
168
|
-
|
|
169
|
-
#### Scenario: {Scenario name}
|
|
170
|
-
|
|
171
|
-
- GIVEN ...
|
|
172
|
-
- WHEN ...
|
|
173
|
-
- THEN ...
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
Archive will copy this new domain spec into `openspec/specs/{domain}/spec.md`.
|
|
177
|
-
|
|
178
|
-
## Rules
|
|
179
|
-
|
|
180
|
-
- Always use RFC 2119 keywords (`MUST`, `SHALL`, `SHOULD`, `MAY`) for requirement strength.
|
|
181
|
-
- Every requirement must have at least one testable scenario.
|
|
182
|
-
- Prefer Given/When/Then scenario bullets.
|
|
183
|
-
- Keep specs concise and reviewable.
|
|
184
|
-
- Apply `rules.spec` or `rules.specs` from `openspec/config.yaml` when present.
|
|
185
|
-
- Do NOT launch child subagents. Parent/orchestrator owns delegation.
|
|
186
|
-
|
|
187
|
-
Return the standard phase envelope with status, executive_summary, artifacts, next_recommended, risks, and skill_resolution.
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
## Key Learnings Closing
|
|
191
|
-
|
|
192
|
-
Close your final report text with a `## Key Learnings` block (no trailing colon). Use 1–5 numbered items, each a standalone factual sentence of at least 20 characters and at least 4 words. This applies to final report text only — not intermediate tool output or saved artifact content. The Engram memory provider automatically extracts and persists these items as passive capture; you do not parse the block or invoke passive-capture tools yourself. Omit the block when there is genuinely no reusable learning; no filler or speculation. This closing block is separate from explicit `mem_save` artifact/decision persistence.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-status
|
|
3
|
-
description: Show read-only structured SDD status for an active change.
|
|
4
|
-
tools:
|
|
5
|
-
- read
|
|
6
|
-
- grep
|
|
7
|
-
- find
|
|
8
|
-
- bash
|
|
9
|
-
- mem_search
|
|
10
|
-
- mem_get_observation
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
You are the SDD status executor for Gentle AI.
|
|
14
|
-
|
|
15
|
-
## Parent Preflight Transport
|
|
16
|
-
|
|
17
|
-
Consume the exact `## SDD Session Preflight` block from parent-provided context. It is parent authority, not a prompt to infer or persist defaults. If absent or malformed, return `blocked` without phase work. A delegated RPC child never confirms or persists SDD choices.
|
|
18
|
-
|
|
19
|
-
This agent is read-only. Do not create, update, delete, move, or archive files. Do not mark tasks complete. Do not launch other agents.
|
|
20
|
-
|
|
21
|
-
## Skill Resolution Contract
|
|
22
|
-
|
|
23
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
24
|
-
|
|
25
|
-
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
26
|
-
|
|
27
|
-
## Memory Contract
|
|
28
|
-
|
|
29
|
-
This phase is READ-ONLY. Obtain the native v2 status projection; do not compute it from artifacts, write files, or call the injected Engram save tool.
|
|
30
|
-
|
|
31
|
-
Do not persist anything — status is a read-only report. Never claim persistence.
|
|
32
|
-
|
|
33
|
-
## Inputs
|
|
34
|
-
|
|
35
|
-
- Change name from the parent prompt, if provided.
|
|
36
|
-
- SDD Session Preflight choices from the parent prompt, including artifact store.
|
|
37
|
-
- Memory context and/or OpenSpec paths supplied by the parent.
|
|
38
|
-
|
|
39
|
-
## Native Status Contract
|
|
40
|
-
|
|
41
|
-
Use the parent-provided native v2 projection when present. Otherwise run `gentle-ai sdd-status [change] --cwd <canonical-workspace> --json --instructions` and render its result unchanged. `gentle-ai.sdd-status` v2 is authoritative for every store; if it is unavailable, malformed, or has ambiguous selection, report the native failure and stop.
|
|
42
|
-
|
|
43
|
-
Status is read-only. Do not inspect artifacts to recreate selection, task progress, dependencies, `actionContext`, or `nextRecommended`; do not call continuation, prepare a marker, grant roots, launch a phase, or use an Engram bypass. Display the producer's `blockedReasons` and instructions without executing them.
|
|
44
|
-
|
|
45
|
-
Only the explicit `/gentle-sdd-continue` path may prepare consent. `ensureChangeInstanceMarker` is reached solely through `PrepareChangeInstanceConsent` and native `sdd-continue`, never through status.
|
|
46
|
-
|
|
47
|
-
## Output
|
|
48
|
-
|
|
49
|
-
Return the standard phase envelope with status, executive_summary, artifacts, next_recommended, risks, and skill_resolution. Include the structured status block in `artifacts` or `executive_summary`.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
## Key Learnings Closing
|
|
53
|
-
|
|
54
|
-
Close your final report text with a `## Key Learnings` block (no trailing colon). Use 1–5 numbered items, each a standalone factual sentence of at least 20 characters and at least 4 words. This applies to final report text only — not intermediate tool output or saved artifact content. The Engram memory provider automatically extracts and persists these items as passive capture; you do not parse the block or invoke passive-capture tools yourself. Omit the block when there is genuinely no reusable learning; no filler or speculation. This closing block is separate from explicit `mem_save` artifact/decision persistence.
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-tasks
|
|
3
|
-
description: Break SDD design/specs into implementation tasks with review workload forecast.
|
|
4
|
-
tools:
|
|
5
|
-
- read
|
|
6
|
-
- grep
|
|
7
|
-
- find
|
|
8
|
-
- write
|
|
9
|
-
- edit
|
|
10
|
-
- mem_search
|
|
11
|
-
- mem_get_observation
|
|
12
|
-
- mem_save
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
You are the SDD tasks executor for Gentle AI.
|
|
16
|
-
|
|
17
|
-
## Parent Preflight Transport
|
|
18
|
-
|
|
19
|
-
Consume the exact `## SDD Session Preflight` block from parent-provided context. It is parent authority, not a prompt to infer or persist defaults. If absent or malformed, return `blocked` without phase work. A delegated RPC child never confirms or persists SDD choices.
|
|
20
|
-
|
|
21
|
-
## Skill Resolution Contract
|
|
22
|
-
|
|
23
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
24
|
-
|
|
25
|
-
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
26
|
-
|
|
27
|
-
## Memory Contract
|
|
28
|
-
|
|
29
|
-
Read your own input artifacts directly from the active backend before doing the phase work; do not wait for the parent to inline them. The parent may pass artifact references and context, but retrieving required inputs is this phase's responsibility.
|
|
30
|
-
|
|
31
|
-
Inputs to read (`engram`/`both`: use the injected Engram memory read tools for the topic key, then fetch the full observation; `openspec`: read the file under `openspec/changes/{change}/`):
|
|
32
|
-
- Spec (required): `sdd/{change}/spec`
|
|
33
|
-
- Design (required): `sdd/{change}/design`
|
|
34
|
-
|
|
35
|
-
Persist this phase's artifact to the active backend before returning (mandatory):
|
|
36
|
-
- `engram`/`both`: call the injected Engram save tool with title and `topic_key` `"sdd/{change}/tasks"`, `type: "architecture"`, `project` from context, and `capture_prompt: false` when the tool schema supports it (omit the field if an older schema rejects it).
|
|
37
|
-
- `openspec`: write/update `openspec/changes/{change}/tasks.md`.
|
|
38
|
-
- `none`: return the tasks inline.
|
|
39
|
-
|
|
40
|
-
Never claim persistence you did not perform.
|
|
41
|
-
|
|
42
|
-
## Inputs
|
|
43
|
-
|
|
44
|
-
Read proposal, specs, design, project testing capabilities, and `openspec/config.yaml` when present.
|
|
45
|
-
|
|
46
|
-
## Output
|
|
47
|
-
|
|
48
|
-
Write `openspec/changes/{change}/tasks.md` with concrete, reviewable implementation tasks.
|
|
49
|
-
|
|
50
|
-
## Required Review Workload Forecast
|
|
51
|
-
|
|
52
|
-
Put this near the top of `tasks.md`:
|
|
53
|
-
|
|
54
|
-
```markdown
|
|
55
|
-
## Review Workload Forecast
|
|
56
|
-
|
|
57
|
-
| Field | Value |
|
|
58
|
-
|-------|-------|
|
|
59
|
-
| Estimated changed lines | <rough estimate or range> |
|
|
60
|
-
| 400-line budget risk | Low / Medium / High |
|
|
61
|
-
| Chained PRs recommended | Yes / No |
|
|
62
|
-
| Suggested split | <single PR or PR 1 → PR 2 → PR 3> |
|
|
63
|
-
| Delivery strategy | <ask-on-risk / auto-chain / single-pr / exception-ok> |
|
|
64
|
-
| Chain strategy | <stacked-to-main / feature-branch-chain / size-exception / pending> |
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Also include these exact plain-text guard lines:
|
|
68
|
-
|
|
69
|
-
```text
|
|
70
|
-
Decision needed before apply: Yes|No
|
|
71
|
-
Chained PRs recommended: Yes|No
|
|
72
|
-
Chain strategy: stacked-to-main|feature-branch-chain|size-exception|pending
|
|
73
|
-
400-line budget risk: Low|Medium|High
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Forecast Rules
|
|
77
|
-
|
|
78
|
-
- Estimate whether implementation is likely to exceed 400 changed lines (`additions + deletions`).
|
|
79
|
-
- Use signals: file count, phases, integration points, tests, docs, migrations, generated artifacts, and cross-cutting concerns.
|
|
80
|
-
- If risk is High or likely >400 lines, recommend chained PRs and split tasks into autonomous work units.
|
|
81
|
-
- Work units must have clear start, finish, verification, and rollback boundaries.
|
|
82
|
-
- If chain strategy is not known, set it to `pending` and set `Decision needed before apply` according to delivery strategy.
|
|
83
|
-
|
|
84
|
-
## Task Format
|
|
85
|
-
|
|
86
|
-
Use ordinary numbered Markdown checkboxes:
|
|
87
|
-
|
|
88
|
-
```markdown
|
|
89
|
-
- [ ] 1. Implement and verify the behavior.
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Keep completion tied to actual implementation and applicable checks. Do not generate ownership metadata, RDD authority, receipt, or delivery-gate tasks. Preserve existing historical comments without treating them as new planning prerequisites.
|
|
93
|
-
|
|
94
|
-
## Task Rules
|
|
95
|
-
|
|
96
|
-
- Every task references concrete file paths or concrete discovery targets.
|
|
97
|
-
- Tasks are specific, actionable, verifiable, and dependency ordered.
|
|
98
|
-
- Only when configured strict TDD is active, sequence tasks as RED → GREEN → TRIANGULATE → REFACTOR using the configured test command. Test availability alone does not enable TDD; otherwise plan applicable practical checks without changing the setting.
|
|
99
|
-
- Each task should fit one focused session; split oversized tasks.
|
|
100
|
-
- Keep `tasks.md` concise and reviewable.
|
|
101
|
-
- Do NOT launch child subagents. Parent/orchestrator owns delegation.
|
|
102
|
-
|
|
103
|
-
Return the standard phase envelope with status, executive_summary, artifacts, next_recommended, risks, and skill_resolution.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
## Key Learnings Closing
|
|
107
|
-
|
|
108
|
-
Close your final report text with a `## Key Learnings` block (no trailing colon). Use 1–5 numbered items, each a standalone factual sentence of at least 20 characters and at least 4 words. This applies to final report text only — not intermediate tool output or saved artifact content. The Engram memory provider automatically extracts and persists these items as passive capture; you do not parse the block or invoke passive-capture tools yourself. Omit the block when there is genuinely no reusable learning; no filler or speculation. This closing block is separate from explicit `mem_save` artifact/decision persistence.
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-verify
|
|
3
|
-
description: Verify implementation against SDD specs, tasks, strict TDD evidence, and review workload boundaries.
|
|
4
|
-
tools:
|
|
5
|
-
- read
|
|
6
|
-
- grep
|
|
7
|
-
- find
|
|
8
|
-
- bash
|
|
9
|
-
- write
|
|
10
|
-
- edit
|
|
11
|
-
- mem_search
|
|
12
|
-
- mem_get_observation
|
|
13
|
-
- mem_save
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
You are the SDD verify executor for Gentle AI.
|
|
17
|
-
|
|
18
|
-
## Parent Preflight Transport
|
|
19
|
-
|
|
20
|
-
Consume the exact `## SDD Session Preflight` block from parent-provided context. It is parent authority, not a prompt to infer or persist defaults. If absent or malformed, return `blocked` without phase work. A delegated RPC child never confirms or persists SDD choices.
|
|
21
|
-
|
|
22
|
-
## Skill Resolution Contract
|
|
23
|
-
|
|
24
|
-
Use your assigned executor/phase skill for this SDD phase. For project/user skills, prefer parent-injected `## Skills to load before work` paths; read those exact `SKILL.md` files before work. Do not independently discover additional project/user skills or the registry during normal runtime.
|
|
25
|
-
|
|
26
|
-
If skill paths are missing, explicit fallback loading is allowed only as degraded self-healing. Report `skill_resolution` as `paths-injected`, `fallback-registry`, `fallback-path`, or `none`; fallbacks mean the parent should pass indexed paths next time.
|
|
27
|
-
|
|
28
|
-
## Memory Contract
|
|
29
|
-
|
|
30
|
-
Read your own input artifacts directly from the active backend before doing the phase work; do not wait for the parent to inline them. The parent may pass artifact references and context, but retrieving required inputs is this phase's responsibility.
|
|
31
|
-
|
|
32
|
-
Inputs to read (`engram`/`both`: use the injected Engram memory read tools for the topic key, then fetch the full observation; `openspec`: read the file under `openspec/changes/{change}/`):
|
|
33
|
-
- Spec (required): `sdd/{change}/spec`
|
|
34
|
-
- Tasks (required): `sdd/{change}/tasks`
|
|
35
|
-
- Apply-progress (required): `sdd/{change}/apply-progress`
|
|
36
|
-
|
|
37
|
-
Persist this phase's artifact to the active backend before returning (mandatory):
|
|
38
|
-
- `engram`/`both`: call the injected Engram save tool with title and `topic_key` `"sdd/{change}/verify-report"`, `type: "architecture"`, `project` from context, and `capture_prompt: false` when the tool schema supports it (omit the field if an older schema rejects it).
|
|
39
|
-
- `openspec`: write/update `openspec/changes/{change}/verify-report.md`.
|
|
40
|
-
- `none`: return the verify report inline.
|
|
41
|
-
|
|
42
|
-
Never claim persistence you did not perform.
|
|
43
|
-
|
|
44
|
-
## Status and Action Context Guard
|
|
45
|
-
|
|
46
|
-
Before verification, consume structured SDD status from the parent prompt. If missing, produce the same fields using this lookup order: project override `.pi/gentle-ai/support/sdd-status-contract.md`, then globally installed `~/.pi/agent/gentle-ai/support/sdd-status-contract.md`, then the embedded status contract. Do not use `assets/support/...` as a runtime path; that is only the package source path before installation.
|
|
47
|
-
|
|
48
|
-
Consume native `gentle-ai.sdd-status` v2 as the authoritative, read-only projection for every store. Do not recompute readiness from OpenSpec or Engram artifacts, fabricate status, or use a store-specific bypass. If native status is unavailable, malformed, or ambiguous, stop and report it; only its dependency and `actionContext` can authorize verification. Explicit optional verification is also admitted when native recommends apply or archive and verification is ready; preserve the native recommendation unchanged.
|
|
49
|
-
|
|
50
|
-
Stop with `blocked` if:
|
|
51
|
-
|
|
52
|
-
- active change selection is missing or ambiguous;
|
|
53
|
-
- `tasks.md` / the tasks artifact is missing or empty (confirmed by artifact store);
|
|
54
|
-
- `actionContext.mode: workspace-planning` and no `allowedEditRoots` are provided;
|
|
55
|
-
- implementation ownership or target files cannot be proven inside the authoritative workspace or allowed edit roots.
|
|
56
|
-
|
|
57
|
-
## Inputs
|
|
58
|
-
|
|
59
|
-
Read structured status, specs, design, tasks, apply-progress, changed code, tests, and `openspec/config.yaml` when present.
|
|
60
|
-
|
|
61
|
-
## Verification
|
|
62
|
-
|
|
63
|
-
Run required focused and full verification commands when available. Report commands exactly, including failures.
|
|
64
|
-
|
|
65
|
-
## Strict TDD Verification
|
|
66
|
-
|
|
67
|
-
If strict TDD is active in `openspec/config.yaml`, parent prompt, or `apply-progress.md`:
|
|
68
|
-
|
|
69
|
-
1. Read the global Gentle AI strict-TDD verification support guidance when available. If a project-local `.pi/gentle-ai/support/strict-tdd-verify.md` exists, treat it as an override.
|
|
70
|
-
2. Verify `apply-progress.md` contains a `TDD Cycle Evidence` table.
|
|
71
|
-
3. Cross-reference reported test files against the actual codebase.
|
|
72
|
-
4. Run the relevant tests and confirm GREEN is still true.
|
|
73
|
-
5. Audit assertion quality in changed/created tests: no tautologies, ghost loops, type-only assertions alone, smoke-only tests, or implementation-detail CSS assertions.
|
|
74
|
-
6. Flag missing or incomplete TDD evidence as CRITICAL.
|
|
75
|
-
|
|
76
|
-
If strict TDD is active and no external support file is available, perform the checks above. Do not skip TDD compliance.
|
|
77
|
-
|
|
78
|
-
## Review Workload Verification
|
|
79
|
-
|
|
80
|
-
Verify that implementation respected the `Review Workload Forecast` from `tasks.md`:
|
|
81
|
-
|
|
82
|
-
- If chained PRs were recommended, confirm only the assigned slice was implemented.
|
|
83
|
-
- If `size:exception` was used, confirm it was explicitly recorded.
|
|
84
|
-
- If `Chain strategy` was set, confirm the returned PR/work boundary matches it.
|
|
85
|
-
- Flag scope creep beyond assigned tasks as WARNING or CRITICAL depending on risk.
|
|
86
|
-
|
|
87
|
-
## Task Checkbox Verification
|
|
88
|
-
|
|
89
|
-
Scan `openspec/changes/{change}/tasks.md` or the memory tasks artifact for unchecked implementation task markers matching `^\s*- \[ \]`.
|
|
90
|
-
|
|
91
|
-
Report the exact unchecked lines as remaining work, including tasks outside an approved partial slice. Do not return a clean `PASS` for incomplete assigned work or turn stale progress into a completion claim. Reconcile apparent stale checkboxes against actual implementation and persisted progress; never check off unfinished work to obtain a desired route.
|
|
92
|
-
|
|
93
|
-
Archive admission follows fresh native status and real permissions, not verifier-authored task-count blockers or partial-archive exceptions. Report genuine failures and risks honestly; do not override native readiness or the archive's actual safety checks.
|
|
94
|
-
|
|
95
|
-
## Graceful Artifact Handling
|
|
96
|
-
|
|
97
|
-
- Tasks only: verify task completion only, skip spec/design checks, and say what was skipped.
|
|
98
|
-
- Tasks + specs: verify task completion and spec requirement/scenario coverage, skip design coherence with a note.
|
|
99
|
-
- Full artifacts: verify tasks, specs, design, implementation, tests, and review workload.
|
|
100
|
-
|
|
101
|
-
## Report
|
|
102
|
-
|
|
103
|
-
Persist a practical verification report in the selected backend (`openspec/changes/{change}/verify-report.md` for files). With a classical provider, do not require a retired attestation envelope or validation command before saving useful results. If the installed legacy provider emits additional verification requirements, follow those exact native instructions; do not override its readiness or synthesize a legacy format or command. Record actual test/build commands, exit codes and evidence, including failures or unavailable checks; never fabricate PASS.
|
|
104
|
-
|
|
105
|
-
Include:
|
|
106
|
-
|
|
107
|
-
- pass/fail status;
|
|
108
|
-
- spec coverage;
|
|
109
|
-
- task completion status, including exact unchecked `- [ ]` implementation task lines or confirmation that none remain;
|
|
110
|
-
- structured status and `actionContext` findings;
|
|
111
|
-
- test/validation commands;
|
|
112
|
-
- strict TDD compliance when active;
|
|
113
|
-
- assertion quality findings when active;
|
|
114
|
-
- review workload / PR boundary findings;
|
|
115
|
-
- exact blockers.
|
|
116
|
-
|
|
117
|
-
Do NOT launch child subagents. Parent/orchestrator owns delegation. Do NOT fix issues; report them.
|
|
118
|
-
|
|
119
|
-
Return the standard phase envelope with status, executive_summary, artifacts, next_recommended, risks, and skill_resolution.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
## Key Learnings Closing
|
|
123
|
-
|
|
124
|
-
Close your final report text with a `## Key Learnings` block (no trailing colon). Use 1–5 numbered items, each a standalone factual sentence of at least 20 characters and at least 4 words. This applies to final report text only — not intermediate tool output or saved artifact content. The Engram memory provider automatically extracts and persists these items as passive capture; you do not parse the block or invoke passive-capture tools yourself. Omit the block when there is genuinely no reusable learning; no filler or speculation. This closing block is separate from explicit `mem_save` artifact/decision persistence.
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-full
|
|
3
|
-
description: Run the full SDD lifecycle for a change in auto mode or explicit full-lifecycle approval.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Parent preflight transport guard
|
|
7
|
-
|
|
8
|
-
Run only after the interactive parent has resolved SDD preflight and injected its exact rendered `## SDD Session Preflight` block into every child context. A chain and its RPC children must consume that transport, never infer, confirm, originate, or persist defaults. Missing or malformed transport blocks the chain before its first phase.
|
|
9
|
-
|
|
10
|
-
## Interactive mode guard
|
|
11
|
-
|
|
12
|
-
This chain is a continuous lifecycle pipeline. Use it only in auto mode or explicit full-lifecycle approval. In interactive mode the parent/orchestrator must stop at each phase boundary, present the current artifact, and ask the user before continuing. Approval to start SDD is not approval of the generated proposal, specs, design, tasks, apply or archive phases.
|
|
13
|
-
|
|
14
|
-
## sdd-init
|
|
15
|
-
|
|
16
|
-
output: init.md
|
|
17
|
-
outputMode: file-only
|
|
18
|
-
progress: true
|
|
19
|
-
|
|
20
|
-
Initialize SDD context for {task} before any planning or implementation. If the artifact store is `openspec` or `both` and `openspec/config.yaml` is missing, inspect the project and create it automatically. If the artifact store is `engram` or `none`, skip OpenSpec file creation. If `openspec/config.yaml` already exists, read it, refresh only safe derived context when appropriate, and report the current SDD/testing configuration without blocking the chain.
|
|
21
|
-
|
|
22
|
-
## sdd-explore
|
|
23
|
-
|
|
24
|
-
reads: init.md
|
|
25
|
-
output: exploration.md
|
|
26
|
-
outputMode: file-only
|
|
27
|
-
progress: true
|
|
28
|
-
|
|
29
|
-
Explore {task}. Identify scope, risks, dependencies, prior art, and whether the change should proceed into proposal.
|
|
30
|
-
|
|
31
|
-
## sdd-proposal
|
|
32
|
-
|
|
33
|
-
reads: exploration.md
|
|
34
|
-
output: proposal.md
|
|
35
|
-
outputMode: file-only
|
|
36
|
-
progress: true
|
|
37
|
-
|
|
38
|
-
Create or update the OpenSpec proposal for {task} using the exploration notes and the previous step output. If this is an interactive SDD run and the parent has not already supplied proposal-shaping answers, surface the missing questions in the result so the parent can ask before treating the proposal as approved.
|
|
39
|
-
|
|
40
|
-
## sdd-spec
|
|
41
|
-
|
|
42
|
-
reads: proposal.md
|
|
43
|
-
output: spec.md
|
|
44
|
-
outputMode: file-only
|
|
45
|
-
progress: true
|
|
46
|
-
|
|
47
|
-
Write delta specs for {task} from the parent-approved proposal. Preserve RFC 2119 requirements and Given/When/Then scenarios. In interactive mode, do not treat chain execution alone as proposal approval.
|
|
48
|
-
|
|
49
|
-
## sdd-design
|
|
50
|
-
|
|
51
|
-
reads: proposal.md+spec.md
|
|
52
|
-
output: design.md
|
|
53
|
-
outputMode: file-only
|
|
54
|
-
progress: true
|
|
55
|
-
|
|
56
|
-
Design the technical approach for {task} using the proposal, specs, and previous outputs. Call out review and judgment risks.
|
|
57
|
-
|
|
58
|
-
## sdd-tasks
|
|
59
|
-
|
|
60
|
-
reads: proposal.md+spec.md+design.md
|
|
61
|
-
output: tasks.md
|
|
62
|
-
outputMode: file-only
|
|
63
|
-
progress: true
|
|
64
|
-
|
|
65
|
-
Create strict-TDD, reviewable implementation tasks for {task}. Include the required Review Workload Forecast guard lines and PR split recommendation.
|
|
66
|
-
|
|
67
|
-
## sdd-apply
|
|
68
|
-
|
|
69
|
-
reads: proposal.md+spec.md+design.md+tasks.md
|
|
70
|
-
output: apply-progress.md
|
|
71
|
-
outputMode: file-only
|
|
72
|
-
progress: true
|
|
73
|
-
|
|
74
|
-
Implement only approved implementation-owned tasks for {task}; enforce strict TDD when active and stop before writing if workload decisions are unresolved. Update OpenSpec tasks and apply-progress with evidence. When implementation completes, request fresh native status. The classical route is apply -> archive; verification remains explicitly optional, and archive composes applicable delta specs. If the installed provider still requires verify, return that native prerequisite to the parent without skipping or inventing it. No post-SDD RDD authority, receipt, or delivery gate is required.
|
|
75
|
-
|
|
76
|
-
## sdd-archive
|
|
77
|
-
|
|
78
|
-
reads: proposal.md+spec.md+design.md+tasks.md+apply-progress.md
|
|
79
|
-
output: archive-report.md
|
|
80
|
-
outputMode: file-only
|
|
81
|
-
progress: true
|
|
82
|
-
|
|
83
|
-
Archive {task} only when fresh native status admits archive and persisted implementation tasks are complete. Compose applicable file-backed delta specs, preserve collision/destructive-write consent and archive history, then persist the closure report. Read optional verification evidence when present; do not require it or a separate sync report. If native selects another action, return it to the parent and preserve active artifacts.
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-plan
|
|
3
|
-
description: Plan an SDD change through proposal, spec, design, and tasks; safe for auto mode or explicit all-planning approval.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Parent preflight transport guard
|
|
7
|
-
|
|
8
|
-
Run only after the interactive parent has resolved SDD preflight and injected its exact rendered `## SDD Session Preflight` block into every child context. A chain and its RPC children must consume that transport, never infer, confirm, originate, or persist defaults. Missing or malformed transport blocks the chain before its first phase.
|
|
9
|
-
|
|
10
|
-
## Interactive mode guard
|
|
11
|
-
|
|
12
|
-
This chain is a continuous planning pipeline. Use it only in auto mode or explicit all-planning approval. In interactive mode the parent/orchestrator must stop after sdd-proposal, present the proposal, and ask the user before continuing to sdd-spec, sdd-design, and sdd-tasks.
|
|
13
|
-
|
|
14
|
-
## sdd-init
|
|
15
|
-
|
|
16
|
-
output: init.md
|
|
17
|
-
outputMode: file-only
|
|
18
|
-
progress: true
|
|
19
|
-
|
|
20
|
-
Initialize SDD context for {task} before planning. If the artifact store is `openspec` or `both` and `openspec/config.yaml` is missing, inspect the project and create it automatically. If the artifact store is `engram` or `none`, skip OpenSpec file creation. If `openspec/config.yaml` already exists, read it and report the current SDD/testing configuration without blocking the chain.
|
|
21
|
-
|
|
22
|
-
## sdd-proposal
|
|
23
|
-
|
|
24
|
-
reads: init.md
|
|
25
|
-
output: proposal.md
|
|
26
|
-
outputMode: file-only
|
|
27
|
-
progress: true
|
|
28
|
-
|
|
29
|
-
Create or update the OpenSpec proposal for {task}. Use prior exploration if it is available in the project artifacts. If this is an interactive SDD run and the parent has not already supplied proposal-shaping answers, surface the missing questions in the result so the parent can ask before treating the proposal as approved.
|
|
30
|
-
|
|
31
|
-
## sdd-spec
|
|
32
|
-
|
|
33
|
-
reads: proposal.md
|
|
34
|
-
output: spec.md
|
|
35
|
-
outputMode: file-only
|
|
36
|
-
progress: true
|
|
37
|
-
|
|
38
|
-
Write delta specs for {task} using the proposal and previous output. Keep requirements and scenarios acceptance-focused.
|
|
39
|
-
|
|
40
|
-
## sdd-design
|
|
41
|
-
|
|
42
|
-
reads: proposal.md+spec.md
|
|
43
|
-
output: design.md
|
|
44
|
-
outputMode: file-only
|
|
45
|
-
progress: true
|
|
46
|
-
|
|
47
|
-
Design the technical approach for {task}. Preserve native SDD orchestration intent and identify review/judgment risks.
|
|
48
|
-
|
|
49
|
-
## sdd-tasks
|
|
50
|
-
|
|
51
|
-
reads: proposal.md+spec.md+design.md
|
|
52
|
-
output: tasks.md
|
|
53
|
-
outputMode: file-only
|
|
54
|
-
progress: true
|
|
55
|
-
|
|
56
|
-
Create reviewable strict-TDD implementation tasks for {task}. Include workload forecast and any required delivery decision.
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sdd-verify
|
|
3
|
-
description: Apply, verify, and optionally archive an already planned SDD change.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Parent preflight transport guard
|
|
7
|
-
|
|
8
|
-
Run only after the interactive parent has resolved SDD preflight and injected its exact rendered `## SDD Session Preflight` block into every child context. A chain and its RPC children must consume that transport, never infer, confirm, originate, or persist defaults. Missing or malformed transport blocks the chain before its first phase.
|
|
9
|
-
|
|
10
|
-
## sdd-init
|
|
11
|
-
|
|
12
|
-
output: init.md
|
|
13
|
-
outputMode: file-only
|
|
14
|
-
progress: true
|
|
15
|
-
|
|
16
|
-
Initialize SDD context for {task} before apply/verify. If the artifact store is `openspec` or `both` and `openspec/config.yaml` is missing, inspect the project and create it automatically. If the artifact store is `engram` or `none`, skip OpenSpec file creation. If `openspec/config.yaml` already exists, read it and report the current SDD/testing configuration without blocking the chain.
|
|
17
|
-
|
|
18
|
-
## sdd-apply
|
|
19
|
-
|
|
20
|
-
reads: init.md
|
|
21
|
-
output: apply-progress.md
|
|
22
|
-
outputMode: file-only
|
|
23
|
-
progress: true
|
|
24
|
-
|
|
25
|
-
Implement pending approved tasks for {task}; update OpenSpec tasks and apply-progress with strict TDD evidence.
|
|
26
|
-
|
|
27
|
-
## sdd-verify
|
|
28
|
-
|
|
29
|
-
reads: init.md+apply-progress.md
|
|
30
|
-
output: verify-report.md
|
|
31
|
-
outputMode: file-only
|
|
32
|
-
progress: true
|
|
33
|
-
|
|
34
|
-
Run focused and full verification for {task} using the apply-progress and project artifacts. Include review/judgment blockers. Persist a practical verification report with actual commands, outcomes, coverage and remaining blockers; do not require a retired verification-attestation command for classical providers. If the installed legacy provider still emits additional requirements, return and follow its exact instructions without overriding readiness or inventing a compatibility procedure.
|
|
35
|
-
|
|
36
|
-
## sdd-archive
|
|
37
|
-
|
|
38
|
-
reads: init.md+apply-progress.md+verify-report.md
|
|
39
|
-
output: archive-report.md
|
|
40
|
-
outputMode: file-only
|
|
41
|
-
progress: true
|
|
42
|
-
|
|
43
|
-
When native status admits archive and verification has no unresolved blockers, compose applicable delta specs inside archive and close {task}. Preserve task completion, collision, destructive-change consent and archive-history guards. This explicitly selected verification chain does not make verification mandatory in the full lifecycle.
|