roadmapsmith 0.9.29 → 0.9.31
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/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +3 -3
- package/README.md +100 -326
- package/bin/cli.js +50 -17
- package/package.json +2 -2
- package/skills/roadmap-maintain/SKILL.md +1 -0
- package/skills/roadmap-status/SKILL.md +7 -6
- package/skills/roadmap-update/SKILL.md +4 -4
- package/skills.json +13 -13
- package/src/host.js +96 -27
- package/src/reasons.js +28 -0
- package/src/slash.js +126 -44
- package/src/sync/index.js +9 -4
- package/src/validator/index.js +268 -37
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "roadmapsmith",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.9.31",
|
|
4
|
+
"description": "Evidence-backed ROADMAP.md workflows for AI coding agents, with canonical RoadmapSmith status and maintain surfaces plus advanced sync/generate tools and legacy compatibility aliases.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "PapiScholz"
|
|
7
7
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "roadmapsmith",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.9.31",
|
|
4
|
+
"description": "Evidence-backed ROADMAP.md workflows for AI coding agents, with canonical RoadmapSmith status and maintain surfaces plus advanced sync/generate tools and legacy compatibility aliases.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "PapiScholz"
|
|
7
7
|
},
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"interface": {
|
|
36
36
|
"displayName": "RoadmapSmith",
|
|
37
37
|
"shortDescription": "Evidence-backed roadmap workflows for AI coding agents",
|
|
38
|
-
"longDescription": "Install RoadmapSmith in Codex to expose the shared skills bundle for zero-mode onboarding, existing-repo maintenance, roadmap discovery,
|
|
38
|
+
"longDescription": "Install RoadmapSmith in Codex to expose the shared skills bundle for zero-mode onboarding, existing-repo maintenance, roadmap discovery, evidence-backed validation, and compatibility-aware host readiness while keeping the CLI and Claude bundle surfaces aligned.",
|
|
39
39
|
"developerName": "PapiScholz",
|
|
40
40
|
"category": "Developer Tools",
|
|
41
41
|
"capabilities": [
|
package/README.md
CHANGED
|
@@ -1,390 +1,164 @@
|
|
|
1
|
-
|
|
2
|
-
<img src="https://raw.githubusercontent.com/PapiScholz/roadmapsmith/main/assets/roadmapsmith-logo.png" alt="RoadmapSmith logo" width="180">
|
|
3
|
-
</p>
|
|
1
|
+
# RoadmapSmith CLI Contract
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
This package owns the RoadmapSmith CLI, validator, sync engine, host setup files, and the shared command-surface contract consumed by the root bundle docs, `skills.json`, and both plugin manifests.
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
## Public Contract
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
### Canonical
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
- `roadmapsmith setup`
|
|
10
|
+
- `roadmapsmith zero`
|
|
11
|
+
- `roadmapsmith maintain`
|
|
12
|
+
- `roadmapsmith status [--json]`
|
|
13
|
+
- `roadmapsmith validate [--json] [--strict]`
|
|
14
|
+
- `roadmapsmith update [--task <stable-id> --evidence "<single-line evidence>"]`
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
npm install -g roadmapsmith
|
|
15
|
-
roadmapsmith setup
|
|
16
|
-
roadmapsmith zero
|
|
17
|
-
roadmapsmith maintain
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Slash entrypoints are also supported from the CLI and launcher, for example: `roadmapsmith /roadmap`, `roadmapsmith /roadmap-zero`, `roadmapsmith /roadmap-maintain`, `roadmapsmith /roadmap-update`, and the deprecated legacy router form `roadmapsmith /roadmap-sync validate`.
|
|
21
|
-
The generated VS Code task layer now resolves Node automatically where possible; if it cannot, RoadmapSmith prints a readable runtime diagnostic instead of a dead task.
|
|
22
|
-
`RoadmapSmith: Status` now treats "ready" as runnable task UX, not merely generated files.
|
|
23
|
-
|
|
24
|
-
### Agent Skill
|
|
16
|
+
### Advanced
|
|
25
17
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
- `roadmapsmith init`
|
|
19
|
+
- `roadmapsmith generate`
|
|
20
|
+
- `roadmapsmith generate --full-regen`
|
|
21
|
+
- `roadmapsmith sync`
|
|
22
|
+
- `roadmapsmith sync --audit`
|
|
23
|
+
- `roadmapsmith sync` as the advanced alias for `roadmapsmith update`
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
`roadmap-sync` is deprecated compatibility only; install the full bundle for new workflows and use `/roadmap-maintain` or `/roadmap-update`.
|
|
32
|
-
The skill bundle does not install the CLI and it does not create visible VS Code actions by itself.
|
|
33
|
-
The published `roadmapsmith` package/plugin surface now also ships the shared bundle files for both hosts (`skills.json`, `skills/*`, `.codex-plugin/plugin.json`, `.claude-plugin/plugin.json`) for downstream host installers, but consuming the CLI alone still does not auto-register native Codex or Claude GUI commands.
|
|
25
|
+
### Compatibility only
|
|
34
26
|
|
|
35
|
-
|
|
27
|
+
- `roadmapsmith doctor`
|
|
28
|
+
- `roadmapsmith regenerate`
|
|
29
|
+
- `roadmapsmith /road <action>`
|
|
30
|
+
- `roadmapsmith /roadmap-sync <action>`
|
|
31
|
+
- deprecated direct aliases such as `/maintain` or `/status`
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
`status` is the public readiness command. `doctor` remains a compatibility alias to the same payload.
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
# Global npm install
|
|
41
|
-
npm install -g roadmapsmith@latest
|
|
35
|
+
`update` is the public checklist-refresh and verified single-task completion family. `sync` remains executable as the advanced alias for the refresh path.
|
|
42
36
|
|
|
43
|
-
|
|
44
|
-
npm install roadmapsmith@latest
|
|
45
|
-
|
|
46
|
-
# One-off execution without installing
|
|
47
|
-
npx roadmapsmith@latest validate --json
|
|
48
|
-
```
|
|
37
|
+
`generate --full-regen` is the only public destructive rebuild path. `regenerate` remains executable but prints a deprecation warning.
|
|
49
38
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
npx skills add PapiScholz/roadmapsmith --skill '*' -a claude-code
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
After updating the Claude skill bundle, run `/reload-skills` and, if applicable, `/reload-plugins`.
|
|
57
|
-
After updating the CLI, rerun `roadmapsmith setup` in repositories where you want the latest VS Code tasks, task wrappers, launcher behavior, or Claude hook template. Published npm/plugin artifacts now include the Codex and Claude bundle files for downstream host loaders, but native UX still depends on the host loading the correct surface.
|
|
58
|
-
|
|
59
|
-
Fixes are available through `@latest` after the automated release path completes on `main`. In this repo, a successful push to `main` now opens or refreshes an automated `release/vX.Y.Z` PR, that PR squashes back into `main` as the bot release commit `chore(release): vX.Y.Z`, and the follow-up `main` run publishes the new patch version. Before that completes, install from a local checkout or a packed tarball for testing.
|
|
60
|
-
|
|
61
|
-
## Operating Modes
|
|
39
|
+
## Modes
|
|
62
40
|
|
|
63
41
|
### Zero Mode
|
|
64
42
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Run `roadmapsmith setup` first if you want visible VS Code tasks. `roadmapsmith zero` is the one-command entrypoint: it runs the terminal interview, creates governance files when needed, and generates the first roadmap.
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
roadmapsmith setup
|
|
71
|
-
roadmapsmith zero
|
|
72
|
-
```
|
|
43
|
+
Use for empty or low-context repositories. `roadmapsmith zero` runs the terminal interview, updates config, and generates the first roadmap.
|
|
73
44
|
|
|
74
45
|
### Sync/Audit Mode
|
|
75
46
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
roadmapsmith setup
|
|
80
|
-
roadmapsmith maintain
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Recommended Daily Flow
|
|
84
|
-
|
|
85
|
-
Use the public entrypoints first:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
roadmapsmith setup
|
|
89
|
-
roadmapsmith zero # empty repo
|
|
90
|
-
roadmapsmith maintain # existing repo
|
|
91
|
-
```
|
|
47
|
+
Use for repositories that already contain code, tests, docs, TODOs, or an existing roadmap. `roadmapsmith maintain` is the preserve-first one-command flow.
|
|
92
48
|
|
|
93
|
-
|
|
49
|
+
## Verification Model
|
|
94
50
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
For unchecked implementation tasks, related files and matching test names are candidate signals only. `maintain` completes a task only from explicit `Evidence:` or typed child verification metadata:
|
|
98
|
-
|
|
99
|
-
```markdown
|
|
100
|
-
- [ ] Enable ESLint builds
|
|
101
|
-
- Verify: kind=property; file=next.config.js; key=ignoreDuringBuilds; equals=false
|
|
102
|
-
- [ ] Prevent double submit
|
|
103
|
-
- Verify: kind=behavior; source=src/login.tsx; test=src/__tests__/login.test.tsx; case=disables submit; trigger=fireEvent.click; assertion=toBeDisabled
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
`contains`, `property`, and `endpoints` are static checks. A behavioral check also requires a fresh `validation.testReports` entry using `format: "vitest-json"`; RoadmapSmith reads reports but never executes tests. Missing proof produces a `Verification recipe:` and a warning rather than a checked box. A fresh passing report is persisted as `Test evidence: file=<test>; case=<case>; status=PASS; verifiedAt=<ISO timestamp>` and becomes stale when it predates the referenced source or test file.
|
|
107
|
-
|
|
108
|
-
## Host Support Today
|
|
109
|
-
|
|
110
|
-
| Host | Current support |
|
|
111
|
-
|---|---|
|
|
112
|
-
| Claude Code | Supported through the full RoadmapSmith skill bundle for native GUI slash commands, plus `roadmapsmith setup` for visible VS Code tasks and the optional repo-local Claude hook. |
|
|
113
|
-
| Codex / Codex CLI | Supported through the native Codex plugin surface (`.codex-plugin/plugin.json` + repo marketplace) and the visible VS Code task workflow after `roadmapsmith setup`. |
|
|
114
|
-
| CI | Use disposable checkouts if you run `sync --audit`, because it still mutates the roadmap today. |
|
|
115
|
-
| Other hosts | Use the skill plus manual CLI commands. |
|
|
116
|
-
|
|
117
|
-
If Node is installed outside PATH, set `ROADMAPSMITH_NODE` to a working `node` executable before using the generated VS Code tasks. If the globally installed `roadmapsmith` shim itself cannot resolve Node, bypass it in PowerShell with:
|
|
118
|
-
|
|
119
|
-
```powershell
|
|
120
|
-
& "C:\Program Files\nodejs\node.exe" "$env:APPDATA\npm\node_modules\roadmapsmith\bin\cli.js" <command>
|
|
121
|
-
```
|
|
51
|
+
RoadmapSmith separates candidate discovery from completion.
|
|
122
52
|
|
|
123
|
-
|
|
53
|
+
Candidate discovery may use:
|
|
124
54
|
|
|
125
|
-
|
|
55
|
+
- explicit path hints
|
|
56
|
+
- symbol matches
|
|
57
|
+
- code-token overlap
|
|
58
|
+
- task-path overlap
|
|
59
|
+
- test references
|
|
126
60
|
|
|
127
|
-
|
|
128
|
-
roadmapsmith /roadmap
|
|
129
|
-
roadmapsmith /roadmap-zero
|
|
130
|
-
roadmapsmith /roadmap-maintain
|
|
131
|
-
roadmapsmith /roadmap-update
|
|
132
|
-
roadmapsmith /roadmap-sync validate
|
|
133
|
-
roadmapsmith setup [--project-root <path>] [--config <path>] [--editor vscode] [--hosts <codex,claude>] [--dry-run]
|
|
134
|
-
roadmapsmith zero [--project-root <path>] [--config <path>]
|
|
135
|
-
roadmapsmith maintain [--project-root <path>] [--config <path>] [--roadmap-file <path>] [--full-regen]
|
|
136
|
-
roadmapsmith init [--roadmap-file <path>] [--agents-file <path>] [--dry-run]
|
|
137
|
-
roadmapsmith generate [--project-root <path>] [--config <path>] [--roadmap-file <path>] [--dry-run] [--audit] [--full-regen]
|
|
138
|
-
roadmapsmith sync [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--dry-run] [--audit]
|
|
139
|
-
roadmapsmith update --task <stable-id> --evidence <text> [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--dry-run]
|
|
140
|
-
roadmapsmith validate [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--task <id|text>] [--json]
|
|
141
|
-
roadmapsmith status [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--json]
|
|
142
|
-
roadmapsmith doctor [--roadmap-file <path>] [--project-root <path>] [--config <path>] [--json] # compatibility alias
|
|
143
|
-
```
|
|
61
|
+
Unchecked implementation tasks complete only from:
|
|
144
62
|
|
|
145
|
-
|
|
63
|
+
- valid explicit `Evidence:`
|
|
64
|
+
- `Verify: kind=contains`
|
|
65
|
+
- `Verify: kind=property`
|
|
66
|
+
- `Verify: kind=endpoints`
|
|
67
|
+
- `Verify: kind=behavior` plus fresh configured test-report proof
|
|
146
68
|
|
|
147
|
-
|
|
69
|
+
Behavioral tasks without explicit proof remain warnings. When the engine can generate exactly one task-specific verification recipe, sync can render it as `Verification recipe:`. If the recipe is global, duplicated, off-domain, or otherwise non-specific, it is suppressed.
|
|
148
70
|
|
|
149
|
-
|
|
150
|
-
npx skills add PapiScholz/roadmapsmith --skill '*' -a claude-code
|
|
151
|
-
```
|
|
71
|
+
Generated outputs such as `dist-electron/`, `dist/`, `build/`, `out/`, `.next/`, and `coverage/` are excluded from heuristic evidence discovery.
|
|
152
72
|
|
|
153
|
-
|
|
73
|
+
Auxiliary tooling paths such as `scripts/` and `tools/` are excluded from heuristic scoring unless the task explicitly references them.
|
|
154
74
|
|
|
155
|
-
|
|
156
|
-
2. If RoadmapSmith was installed through a Claude plugin, also run `/reload-plugins`
|
|
157
|
-
3. Confirm the slash menu shows `/roadmap`, `/roadmap-zero`, `/roadmap-maintain`, `/roadmap-status`, `/roadmap-init`, `/roadmap-generate`, `/roadmap-validate`, `/roadmap-update`, `/roadmap-audit`, and `/roadmap-setup`
|
|
75
|
+
## Strict Validation
|
|
158
76
|
|
|
159
|
-
|
|
77
|
+
`roadmapsmith validate --strict` is the independent audit path.
|
|
160
78
|
|
|
161
|
-
|
|
79
|
+
In strict mode:
|
|
162
80
|
|
|
163
|
-
|
|
81
|
+
- candidate discovery still narrows where to look
|
|
82
|
+
- PASS may come only from explicit `Evidence:` or passing typed `Verify:`
|
|
83
|
+
- file existence, domain overlap, token proximity, and test-file presence alone never produce PASS
|
|
84
|
+
- preserved checked-state behavior is disabled
|
|
164
85
|
|
|
165
|
-
|
|
86
|
+
Recommended audit sequence:
|
|
166
87
|
|
|
167
88
|
```bash
|
|
168
|
-
|
|
89
|
+
roadmapsmith maintain
|
|
90
|
+
roadmapsmith validate --strict --json
|
|
169
91
|
```
|
|
170
92
|
|
|
171
|
-
|
|
93
|
+
`sync --audit` remains an advanced mutating summary, not an independent audit engine.
|
|
172
94
|
|
|
173
|
-
|
|
95
|
+
## Slash And Host Surfaces
|
|
174
96
|
|
|
175
|
-
|
|
97
|
+
Canonical native slash surfaces:
|
|
176
98
|
|
|
177
|
-
- `
|
|
178
|
-
- `
|
|
179
|
-
- `
|
|
180
|
-
- `
|
|
99
|
+
- `/roadmap`
|
|
100
|
+
- `/roadmap-zero`
|
|
101
|
+
- `/roadmap-maintain`
|
|
102
|
+
- `/roadmap-status`
|
|
103
|
+
- `/roadmap-validate`
|
|
104
|
+
- `/roadmap-update`
|
|
105
|
+
- `/roadmap-setup`
|
|
181
106
|
|
|
182
|
-
|
|
107
|
+
Advanced native slash surfaces:
|
|
183
108
|
|
|
184
|
-
|
|
109
|
+
- `/roadmap-init`
|
|
110
|
+
- `/roadmap-generate`
|
|
111
|
+
- `/roadmap-audit`
|
|
185
112
|
|
|
186
|
-
-
|
|
187
|
-
- the installed `roadmapsmith` Codex plugin
|
|
113
|
+
Compatibility-only slash surfaces:
|
|
188
114
|
|
|
189
|
-
|
|
115
|
+
- `/roadmap-sync <action>`
|
|
116
|
+
- `/road <action>`
|
|
117
|
+
- deprecated direct aliases
|
|
190
118
|
|
|
191
|
-
|
|
119
|
+
Native-bundle readiness is computed from canonical surfaces only. Missing advanced labels or duplicate legacy `/roadmap-sync` installs are warnings, not canonical-health failures.
|
|
192
120
|
|
|
193
|
-
|
|
194
|
-
- Uses stable task IDs: `<!-- rs:task=<slug> -->`.
|
|
195
|
-
- Sync marks `[x]` only when validation passes.
|
|
196
|
-
- `sync --audit` currently runs sync and then prints a mismatch summary; it is not yet a dedicated read-only audit mode.
|
|
197
|
-
- For unchecked implementation tasks, heuristic code/test/path matches are candidates only. Completion requires explicit `Evidence:`, a trusted validator rule, or typed deterministic `Verify:` metadata.
|
|
198
|
-
- `Verify:` supports `contains`, `property`, `endpoints`, and `behavior`; behavior additionally requires a fresh configured Vitest JSON report or a fresh `Test evidence:` annotation.
|
|
199
|
-
- Validation failures in sync write warning lines:
|
|
200
|
-
- `- ⚠️ attempted but validation failed: <reason>` when there is concrete attempt evidence
|
|
201
|
-
- `- ⚠️ no implementation evidence found yet: <reason>` when there is not
|
|
202
|
-
- Preserves unmanaged markdown content by updating only the managed roadmap block.
|
|
203
|
-
- `validate` emits structured diagnostics in human and JSON output, including `FAIL:NOT_IMPLEMENTED`, `FAIL:NO_TEST`, `FAIL:MISSING_REFERENCE`, `FAIL:WRONG_VALUE`, `FAIL:PARTIAL`, `WARN:STALE_EVIDENCE`, `WARN:REQUIRES_HUMAN_EVIDENCE`, `WARN:NO_STATIC_SIGNAL`, `WARN:HAS_EXPLICIT_PENDING`, and `WARN:STALE_TEST_REPORT`.
|
|
204
|
-
- `update --task <id> --evidence <text>` writes only when the evidence validates at high confidence; otherwise the roadmap is unchanged.
|
|
121
|
+
## Host Setup
|
|
205
122
|
|
|
206
|
-
|
|
123
|
+
`roadmapsmith setup` generates:
|
|
207
124
|
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
125
|
+
- `.vscode/tasks.json`
|
|
126
|
+
- `.vscode/roadmapsmith-launcher.js`
|
|
127
|
+
- `.vscode/roadmapsmith-task.cmd`
|
|
128
|
+
- `.vscode/roadmapsmith-task.sh`
|
|
129
|
+
- optional Claude hook wiring
|
|
211
130
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
1. `--roadmap-file` CLI flag
|
|
215
|
-
2. `config.roadmapFile` in `roadmap-skill.config.json`
|
|
216
|
-
3. Existing `./ROADMAP.md`
|
|
217
|
-
4. Existing `./roadmap.md` (legacy fallback)
|
|
218
|
-
5. `./ROADMAP.md` when neither file exists
|
|
131
|
+
The internal hook filename remains `.claude/hooks/roadmap-sync.js`. It is a legacy internal filename, not a public command surface.
|
|
219
132
|
|
|
220
133
|
## Config
|
|
221
134
|
|
|
222
|
-
|
|
135
|
+
Typical config file:
|
|
223
136
|
|
|
224
137
|
```json
|
|
225
138
|
{
|
|
226
139
|
"roadmapFile": "./ROADMAP.md",
|
|
227
140
|
"agentsFile": "./AGENTS.md",
|
|
228
|
-
"
|
|
229
|
-
|
|
230
|
-
"
|
|
231
|
-
"
|
|
232
|
-
"positioning": "What makes this different from alternatives.",
|
|
233
|
-
"primaryUser": "Frontend developers, full-stack developers, and AI coding agents.",
|
|
234
|
-
"targetOutcome": "A stable CLI that captures full-page screenshots, crawls internal links, exports metadata, and produces an AI-readable report.",
|
|
235
|
-
"antiGoals": [
|
|
236
|
-
"Do not bypass authentication",
|
|
237
|
-
"Do not target private systems without authorization"
|
|
238
|
-
],
|
|
239
|
-
"risks": [
|
|
240
|
-
"Browser automation instability",
|
|
241
|
-
"Scope creep into generic scraping"
|
|
242
|
-
],
|
|
243
|
-
"successCriteria": [
|
|
244
|
-
"CLI works against a public test site",
|
|
245
|
-
"Screenshots and metadata are exported deterministically",
|
|
246
|
-
"README documents safe and authorized usage"
|
|
247
|
-
]
|
|
248
|
-
},
|
|
249
|
-
|
|
250
|
-
"taskMatchers": [
|
|
251
|
-
{
|
|
252
|
-
"pattern": "src/payments/",
|
|
253
|
-
"task": "Complete payment flow hardening",
|
|
254
|
-
"phase": "P0",
|
|
255
|
-
"priority": "P0"
|
|
256
|
-
}
|
|
257
|
-
],
|
|
258
|
-
"validators": [
|
|
259
|
-
{
|
|
260
|
-
"type": "file-exists",
|
|
261
|
-
"when": "migration",
|
|
262
|
-
"path": "db/migrations"
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
"type": "grant-evidence",
|
|
266
|
-
"whenId": "^p0-electron-builder-windows$",
|
|
267
|
-
"evidence": ["test"],
|
|
268
|
-
"testFiles": ["test/electron-builder.test.js"]
|
|
269
|
-
}
|
|
270
|
-
],
|
|
271
|
-
"customSections": [
|
|
272
|
-
{
|
|
273
|
-
"title": "Compliance",
|
|
274
|
-
"items": [
|
|
275
|
-
"- [ ] Complete SOC2 evidence packet <!-- rs:task=compliance-soc2-evidence -->"
|
|
276
|
-
]
|
|
277
|
-
}
|
|
278
|
-
],
|
|
279
|
-
"plugins": [
|
|
280
|
-
"./plugins/roadmap.plugin.js"
|
|
281
|
-
],
|
|
282
|
-
"milestones": [
|
|
283
|
-
{ "version": "v0.1", "goal": "Foundation" },
|
|
284
|
-
{ "version": "v0.2", "goal": "Reliability" },
|
|
285
|
-
{ "version": "v0.3", "goal": "Release candidate" },
|
|
286
|
-
{ "version": "v1.0", "goal": "General availability" }
|
|
287
|
-
],
|
|
288
|
-
"phaseTemplates": {
|
|
289
|
-
"P0": ["Stabilize critical path"],
|
|
290
|
-
"P1": ["Expand reliability"],
|
|
291
|
-
"P2": ["Finalize release hardening"]
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
Task markers can include `rs:no-test` to disable the test-evidence requirement for one task:
|
|
297
|
-
|
|
298
|
-
```markdown
|
|
299
|
-
- [ ] Add Windows autostart script <!-- rs:task=p0-windows-autostart rs:no-test -->
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
Validator rules are backward compatible:
|
|
303
|
-
|
|
304
|
-
- `when` matches task text.
|
|
305
|
-
- `whenId` matches the stable `rs:task` ID.
|
|
306
|
-
- `grant-evidence` can grant `code`, `test`, or `artifact` evidence without `overrideResult`.
|
|
307
|
-
- `overrideResult: true` is only needed when a rule should replace automatic failures.
|
|
308
|
-
- Tests that read a referenced file with `fs.readFileSync`, `fs.readFile`, `readFileSync`, or `readFile` can count as test evidence for tasks that explicitly mention that file.
|
|
309
|
-
|
|
310
|
-
## Plugin API
|
|
311
|
-
|
|
312
|
-
Plugin module path(s) are loaded from `config.plugins` in deterministic order.
|
|
313
|
-
|
|
314
|
-
```js
|
|
315
|
-
module.exports = {
|
|
316
|
-
registerTaskDetectors(ctx) {
|
|
317
|
-
return [
|
|
318
|
-
{ text: 'Implement billing retries', phase: 'P1', priority: 'P1' }
|
|
319
|
-
];
|
|
320
|
-
},
|
|
321
|
-
registerSectionGenerators(ctx) {
|
|
322
|
-
return [
|
|
323
|
-
{
|
|
324
|
-
title: 'Platform Notes',
|
|
325
|
-
items: ['- [ ] Verify deployment rollback path <!-- rs:task=verify-deployment-rollback-path -->']
|
|
326
|
-
}
|
|
327
|
-
];
|
|
328
|
-
},
|
|
329
|
-
registerValidators(ctx) {
|
|
330
|
-
return [
|
|
141
|
+
"validation": {
|
|
142
|
+
"minimumConfidence": "low",
|
|
143
|
+
"recipeCommand": "npm test -- {testFile}",
|
|
144
|
+
"testReports": [
|
|
331
145
|
{
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
pattern: 'retry',
|
|
335
|
-
message: 'billing retry symbol not found'
|
|
146
|
+
"path": "test-results.json",
|
|
147
|
+
"format": "vitest-json"
|
|
336
148
|
}
|
|
337
|
-
]
|
|
149
|
+
]
|
|
338
150
|
}
|
|
339
|
-
}
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
## Example Usage
|
|
343
|
-
|
|
344
|
-
```bash
|
|
345
|
-
roadmapsmith zero
|
|
346
|
-
roadmapsmith maintain
|
|
347
|
-
roadmapsmith validate --json
|
|
348
|
-
roadmapsmith sync --dry-run
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
## Dry Run and Audit
|
|
352
|
-
|
|
353
|
-
- `--dry-run`: shows file diff preview without writing.
|
|
354
|
-
- `--audit`: currently runs sync and then reports roadmap/code mismatches:
|
|
355
|
-
- checked without evidence
|
|
356
|
-
- ready but unchecked
|
|
357
|
-
|
|
358
|
-
## Development
|
|
359
|
-
|
|
360
|
-
```bash
|
|
361
|
-
npm test
|
|
362
|
-
npm run validate:qa-regression
|
|
363
|
-
npm run validate:functional-smoke
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
If `npm test` fails in your shell with "`node` is not recognized", treat that as a local PATH/runtime issue first and rerun the suite with an explicit Node executable.
|
|
367
|
-
|
|
368
|
-
## Publishing
|
|
369
|
-
|
|
370
|
-
```bash
|
|
371
|
-
npm run validate:qa-regression
|
|
372
|
-
npm run validate:functional-smoke
|
|
373
|
-
npm test
|
|
151
|
+
}
|
|
374
152
|
```
|
|
375
153
|
|
|
376
|
-
|
|
154
|
+
Key validation fields:
|
|
377
155
|
|
|
378
|
-
-
|
|
379
|
-
-
|
|
380
|
-
-
|
|
381
|
-
- On repos where GitHub blocks `GITHUB_TOKEN` from creating or merging PRs, provide a dedicated secret such as `RELEASE_BOT_TOKEN` so the protected-branch release PR flow can complete.
|
|
382
|
-
- Before any push, run the dual validation gate with separate owners: `QA/Regression` uses `npm run validate:qa-regression` and `Functional/Smoke` uses `npm run validate:functional-smoke`.
|
|
383
|
-
- The release gate now includes packed-artifact verification for `skills.json`, `skills/*`, `.codex-plugin/plugin.json`, `.claude-plugin/plugin.json`, and the referenced Codex assets so the published surface matches the GitHub-source bundle for both hosts.
|
|
384
|
-
- Before merging to `main`, verify the UX/release gate in `docs/release-ux-gate.md` and keep `CHANGELOG.md` ready for CI-managed version section generation.
|
|
156
|
+
- `minimumConfidence`: output filter for validate/sync
|
|
157
|
+
- `recipeCommand`: optional command suffix for generated verification recipes
|
|
158
|
+
- `testReports`: configured behavioral proof sources
|
|
385
159
|
|
|
386
|
-
##
|
|
160
|
+
## Related Docs
|
|
387
161
|
|
|
388
|
-
-
|
|
389
|
-
-
|
|
390
|
-
-
|
|
162
|
+
- [../docs/command-surfaces.md](../docs/command-surfaces.md)
|
|
163
|
+
- [../docs/troubleshooting-host-setup.md](../docs/troubleshooting-host-setup.md)
|
|
164
|
+
- [../docs/use-cases/sync-audit-mode.md](../docs/use-cases/sync-audit-mode.md)
|