@jterrats/open-orchestra 0.5.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/AGENTS.md +9 -8
  2. package/CLAUDE.md +13 -11
  3. package/README.md +78 -11
  4. package/dist/assets/web-console.js +203 -36
  5. package/dist/automation-evidence.d.ts +23 -0
  6. package/dist/automation-evidence.js +97 -0
  7. package/dist/automation-evidence.js.map +1 -0
  8. package/dist/autonomous-run-state.d.ts +4 -1
  9. package/dist/autonomous-run-state.js +8 -2
  10. package/dist/autonomous-run-state.js.map +1 -1
  11. package/dist/autonomous-run-store.d.ts +3 -1
  12. package/dist/autonomous-run-store.js +9 -3
  13. package/dist/autonomous-run-store.js.map +1 -1
  14. package/dist/autonomous-workflow-constants.js +5 -1
  15. package/dist/autonomous-workflow-constants.js.map +1 -1
  16. package/dist/benchmark.d.ts +4 -1
  17. package/dist/benchmark.js +140 -19
  18. package/dist/benchmark.js.map +1 -1
  19. package/dist/cli.js +88 -2
  20. package/dist/cli.js.map +1 -1
  21. package/dist/collaboration-flows.js +5 -19
  22. package/dist/collaboration-flows.js.map +1 -1
  23. package/dist/collection-utils.d.ts +3 -0
  24. package/dist/collection-utils.js +10 -0
  25. package/dist/collection-utils.js.map +1 -0
  26. package/dist/command-manifest.d.ts +12 -1
  27. package/dist/command-manifest.js +218 -10
  28. package/dist/command-manifest.js.map +1 -1
  29. package/dist/commands.d.ts +14 -6
  30. package/dist/commands.js +78 -28
  31. package/dist/commands.js.map +1 -1
  32. package/dist/config-migrations.d.ts +24 -0
  33. package/dist/config-migrations.js +102 -0
  34. package/dist/config-migrations.js.map +1 -0
  35. package/dist/constants.d.ts +3 -0
  36. package/dist/constants.js +26 -0
  37. package/dist/constants.js.map +1 -1
  38. package/dist/cursor-canvas.d.ts +20 -0
  39. package/dist/cursor-canvas.js +119 -0
  40. package/dist/cursor-canvas.js.map +1 -0
  41. package/dist/dashboard-commands.d.ts +2 -0
  42. package/dist/dashboard-commands.js +14 -0
  43. package/dist/dashboard-commands.js.map +1 -0
  44. package/dist/defaults.d.ts +13 -0
  45. package/dist/defaults.js +13 -0
  46. package/dist/defaults.js.map +1 -1
  47. package/dist/delegation-decision.js +23 -8
  48. package/dist/delegation-decision.js.map +1 -1
  49. package/dist/delivery-commands.js +5 -0
  50. package/dist/delivery-commands.js.map +1 -1
  51. package/dist/delivery-dashboard-charts.d.ts +4 -0
  52. package/dist/delivery-dashboard-charts.js +156 -0
  53. package/dist/delivery-dashboard-charts.js.map +1 -0
  54. package/dist/delivery-dashboard-html.d.ts +2 -0
  55. package/dist/delivery-dashboard-html.js +115 -0
  56. package/dist/delivery-dashboard-html.js.map +1 -0
  57. package/dist/delivery-dashboard-types.d.ts +78 -0
  58. package/dist/delivery-dashboard-types.js +2 -0
  59. package/dist/delivery-dashboard-types.js.map +1 -0
  60. package/dist/delivery-dashboard.d.ts +8 -0
  61. package/dist/delivery-dashboard.js +124 -0
  62. package/dist/delivery-dashboard.js.map +1 -0
  63. package/dist/doc-sync.d.ts +25 -0
  64. package/dist/doc-sync.js +79 -0
  65. package/dist/doc-sync.js.map +1 -0
  66. package/dist/effort-classification.d.ts +7 -0
  67. package/dist/effort-classification.js +72 -0
  68. package/dist/effort-classification.js.map +1 -0
  69. package/dist/extension-commands.d.ts +3 -0
  70. package/dist/extension-commands.js +40 -0
  71. package/dist/extension-commands.js.map +1 -0
  72. package/dist/extensions.d.ts +22 -0
  73. package/dist/extensions.js +126 -0
  74. package/dist/extensions.js.map +1 -0
  75. package/dist/gemini-provider.d.ts +3 -6
  76. package/dist/gemini-provider.js +8 -17
  77. package/dist/gemini-provider.js.map +1 -1
  78. package/dist/github.d.ts +2 -0
  79. package/dist/github.js +15 -3
  80. package/dist/github.js.map +1 -1
  81. package/dist/health-checks.js +51 -0
  82. package/dist/health-checks.js.map +1 -1
  83. package/dist/lucid-story-map.d.ts +73 -0
  84. package/dist/lucid-story-map.js +112 -0
  85. package/dist/lucid-story-map.js.map +1 -0
  86. package/dist/mcp-integrations.d.ts +19 -0
  87. package/dist/mcp-integrations.js +58 -0
  88. package/dist/mcp-integrations.js.map +1 -0
  89. package/dist/mcp-tool-adapter.d.ts +21 -0
  90. package/dist/mcp-tool-adapter.js +56 -0
  91. package/dist/mcp-tool-adapter.js.map +1 -0
  92. package/dist/metrics-commands.js +47 -13
  93. package/dist/metrics-commands.js.map +1 -1
  94. package/dist/model-commands.d.ts +5 -0
  95. package/dist/model-commands.js +95 -1
  96. package/dist/model-commands.js.map +1 -1
  97. package/dist/model-providers.d.ts +5 -12
  98. package/dist/model-providers.js +30 -43
  99. package/dist/model-providers.js.map +1 -1
  100. package/dist/network-policy.d.ts +2 -0
  101. package/dist/network-policy.js +6 -0
  102. package/dist/network-policy.js.map +1 -0
  103. package/dist/ollama-provider.d.ts +3 -6
  104. package/dist/ollama-provider.js +7 -16
  105. package/dist/ollama-provider.js.map +1 -1
  106. package/dist/package-update-check.d.ts +19 -0
  107. package/dist/package-update-check.js +24 -0
  108. package/dist/package-update-check.js.map +1 -1
  109. package/dist/phase-executor.d.ts +1 -0
  110. package/dist/phase-executor.js +401 -9
  111. package/dist/phase-executor.js.map +1 -1
  112. package/dist/phase-playbooks.d.ts +18 -1
  113. package/dist/phase-playbooks.js +146 -2
  114. package/dist/phase-playbooks.js.map +1 -1
  115. package/dist/planning-commands.d.ts +1 -0
  116. package/dist/planning-commands.js +36 -36
  117. package/dist/planning-commands.js.map +1 -1
  118. package/dist/policy-commands.d.ts +2 -0
  119. package/dist/policy-commands.js +29 -0
  120. package/dist/policy-commands.js.map +1 -0
  121. package/dist/policy-defaults.d.ts +2 -0
  122. package/dist/policy-defaults.js +42 -0
  123. package/dist/policy-defaults.js.map +1 -0
  124. package/dist/policy.d.ts +20 -0
  125. package/dist/policy.js +155 -0
  126. package/dist/policy.js.map +1 -0
  127. package/dist/project-detection.js +9 -7
  128. package/dist/project-detection.js.map +1 -1
  129. package/dist/prompt-registry-update.d.ts +2 -0
  130. package/dist/prompt-registry-update.js +5 -1
  131. package/dist/prompt-registry-update.js.map +1 -1
  132. package/dist/prompt-registry-validation.d.ts +3 -0
  133. package/dist/prompt-registry-validation.js +61 -21
  134. package/dist/prompt-registry-validation.js.map +1 -1
  135. package/dist/provider-utils.d.ts +11 -0
  136. package/dist/provider-utils.js +14 -0
  137. package/dist/provider-utils.js.map +1 -1
  138. package/dist/qa-commands.d.ts +2 -0
  139. package/dist/qa-commands.js +18 -0
  140. package/dist/qa-commands.js.map +1 -0
  141. package/dist/qa-coverage.d.ts +24 -0
  142. package/dist/qa-coverage.js +189 -0
  143. package/dist/qa-coverage.js.map +1 -0
  144. package/dist/qa-readiness.d.ts +5 -0
  145. package/dist/qa-readiness.js +26 -0
  146. package/dist/qa-readiness.js.map +1 -0
  147. package/dist/refresh-generated.d.ts +32 -0
  148. package/dist/refresh-generated.js +180 -0
  149. package/dist/refresh-generated.js.map +1 -0
  150. package/dist/release-candidate.d.ts +9 -1
  151. package/dist/release-candidate.js +52 -1
  152. package/dist/release-candidate.js.map +1 -1
  153. package/dist/release-commands.js +161 -8
  154. package/dist/release-commands.js.map +1 -1
  155. package/dist/release-readiness.d.ts +33 -0
  156. package/dist/release-readiness.js +187 -3
  157. package/dist/release-readiness.js.map +1 -1
  158. package/dist/runtime-adapters.d.ts +2 -1
  159. package/dist/runtime-adapters.js +16 -0
  160. package/dist/runtime-adapters.js.map +1 -1
  161. package/dist/runtime-bootstrap.js +1 -1
  162. package/dist/runtime-bootstrap.js.map +1 -1
  163. package/dist/runtime-commands.d.ts +2 -0
  164. package/dist/runtime-commands.js +85 -3
  165. package/dist/runtime-commands.js.map +1 -1
  166. package/dist/runtime-execution-adapters.js +40 -0
  167. package/dist/runtime-execution-adapters.js.map +1 -1
  168. package/dist/runtime-execution-renderer.d.ts +3 -2
  169. package/dist/runtime-execution-renderer.js +46 -8
  170. package/dist/runtime-execution-renderer.js.map +1 -1
  171. package/dist/runtime-execution.d.ts +8 -2
  172. package/dist/runtime-execution.js +109 -11
  173. package/dist/runtime-execution.js.map +1 -1
  174. package/dist/runtime-guardrails.d.ts +26 -0
  175. package/dist/runtime-guardrails.js +168 -0
  176. package/dist/runtime-guardrails.js.map +1 -0
  177. package/dist/setup-agents-import.js +5 -3
  178. package/dist/setup-agents-import.js.map +1 -1
  179. package/dist/skills-catalog.js +1 -0
  180. package/dist/skills-catalog.js.map +1 -1
  181. package/dist/skills-commands.d.ts +5 -0
  182. package/dist/skills-commands.js +79 -2
  183. package/dist/skills-commands.js.map +1 -1
  184. package/dist/skills-memory.d.ts +36 -2
  185. package/dist/skills-memory.js +165 -6
  186. package/dist/skills-memory.js.map +1 -1
  187. package/dist/skills-planning.js +9 -22
  188. package/dist/skills-planning.js.map +1 -1
  189. package/dist/skills-render.js +2 -4
  190. package/dist/skills-render.js.map +1 -1
  191. package/dist/skills.d.ts +1 -1
  192. package/dist/skills.js +1 -1
  193. package/dist/skills.js.map +1 -1
  194. package/dist/sprint-commands.js +2 -1
  195. package/dist/sprint-commands.js.map +1 -1
  196. package/dist/subagent-protocol.js +3 -5
  197. package/dist/subagent-protocol.js.map +1 -1
  198. package/dist/support-commands.d.ts +2 -0
  199. package/dist/support-commands.js +18 -0
  200. package/dist/support-commands.js.map +1 -0
  201. package/dist/support-diagnostics.d.ts +49 -0
  202. package/dist/support-diagnostics.js +86 -0
  203. package/dist/support-diagnostics.js.map +1 -0
  204. package/dist/task-graph-commands.js +6 -14
  205. package/dist/task-graph-commands.js.map +1 -1
  206. package/dist/task-text.d.ts +8 -0
  207. package/dist/task-text.js +18 -0
  208. package/dist/task-text.js.map +1 -0
  209. package/dist/telemetry-redaction.js +8 -1
  210. package/dist/telemetry-redaction.js.map +1 -1
  211. package/dist/tool-commands.d.ts +3 -0
  212. package/dist/tool-commands.js +62 -0
  213. package/dist/tool-commands.js.map +1 -1
  214. package/dist/tracker-adapters.d.ts +71 -0
  215. package/dist/tracker-adapters.js +186 -0
  216. package/dist/tracker-adapters.js.map +1 -0
  217. package/dist/tracker-commands.d.ts +2 -0
  218. package/dist/tracker-commands.js +119 -0
  219. package/dist/tracker-commands.js.map +1 -0
  220. package/dist/types/metrics.d.ts +25 -1
  221. package/dist/types/model-config.d.ts +51 -4
  222. package/dist/types/runtime.d.ts +83 -0
  223. package/dist/types/skills.d.ts +2 -0
  224. package/dist/types/tasks.d.ts +10 -0
  225. package/dist/types/workflow-run.d.ts +35 -0
  226. package/dist/types.d.ts +12 -4
  227. package/dist/types.js.map +1 -1
  228. package/dist/upgrade-commands.js +13 -4
  229. package/dist/upgrade-commands.js.map +1 -1
  230. package/dist/validation.js +2 -2
  231. package/dist/validation.js.map +1 -1
  232. package/dist/visual-validation.d.ts +81 -0
  233. package/dist/visual-validation.js +290 -0
  234. package/dist/visual-validation.js.map +1 -0
  235. package/dist/web-action-security.d.ts +11 -0
  236. package/dist/web-action-security.js +45 -0
  237. package/dist/web-action-security.js.map +1 -0
  238. package/dist/web-api-read-routes.js +115 -3
  239. package/dist/web-api-read-routes.js.map +1 -1
  240. package/dist/web-api.js +507 -5
  241. package/dist/web-api.js.map +1 -1
  242. package/dist/web-artifacts.d.ts +55 -0
  243. package/dist/web-artifacts.js +222 -0
  244. package/dist/web-artifacts.js.map +1 -0
  245. package/dist/web-console/assets/index-C9lx-V42.css +1 -0
  246. package/dist/web-console/assets/index-M3S0g1GK.js +11 -0
  247. package/dist/web-console/index.html +13 -0
  248. package/dist/web-console.js +9 -3
  249. package/dist/web-console.js.map +1 -1
  250. package/dist/web-recovery.d.ts +30 -0
  251. package/dist/web-recovery.js +163 -0
  252. package/dist/web-recovery.js.map +1 -0
  253. package/dist/web-workflow-progress.d.ts +41 -0
  254. package/dist/web-workflow-progress.js +114 -0
  255. package/dist/web-workflow-progress.js.map +1 -0
  256. package/dist/workflow-approval-service.d.ts +2 -1
  257. package/dist/workflow-approval-service.js +83 -4
  258. package/dist/workflow-approval-service.js.map +1 -1
  259. package/dist/workflow-approval-utils.js +13 -3
  260. package/dist/workflow-approval-utils.js.map +1 -1
  261. package/dist/workflow-event-query.d.ts +2 -0
  262. package/dist/workflow-event-query.js +6 -0
  263. package/dist/workflow-event-query.js.map +1 -0
  264. package/dist/workflow-evidence-service.js +18 -9
  265. package/dist/workflow-evidence-service.js.map +1 -1
  266. package/dist/workflow-gates.d.ts +2 -0
  267. package/dist/workflow-gates.js +103 -0
  268. package/dist/workflow-gates.js.map +1 -1
  269. package/dist/workflow-markdown.d.ts +6 -0
  270. package/dist/workflow-markdown.js +25 -0
  271. package/dist/workflow-markdown.js.map +1 -0
  272. package/dist/workflow-phase-planner.d.ts +19 -0
  273. package/dist/workflow-phase-planner.js +133 -0
  274. package/dist/workflow-phase-planner.js.map +1 -0
  275. package/dist/workflow-run-commands.d.ts +1 -0
  276. package/dist/workflow-run-commands.js +247 -20
  277. package/dist/workflow-run-commands.js.map +1 -1
  278. package/dist/workflow-services.d.ts +21 -12
  279. package/dist/workflow-services.js +376 -260
  280. package/dist/workflow-services.js.map +1 -1
  281. package/dist/workflow-task-service.d.ts +11 -0
  282. package/dist/workflow-task-service.js +242 -0
  283. package/dist/workflow-task-service.js.map +1 -0
  284. package/dist/workflow-templates.js +2 -14
  285. package/dist/workflow-templates.js.map +1 -1
  286. package/dist/workspace-validator.js +133 -5
  287. package/dist/workspace-validator.js.map +1 -1
  288. package/dist/workspace.js +10 -2
  289. package/dist/workspace.js.map +1 -1
  290. package/docs/adoption-guide.md +147 -0
  291. package/docs/autonomous-workflow.md +146 -28
  292. package/docs/benchmark.md +17 -9
  293. package/docs/command-contracts.md +18 -1
  294. package/docs/core-command-surface.md +62 -13
  295. package/docs/end-to-end-demo.md +1 -0
  296. package/docs/extension-contracts.md +83 -0
  297. package/docs/orchestra-mvp.md +86 -3
  298. package/docs/persona-workflows.md +32 -0
  299. package/docs/release-test-matrix.md +42 -0
  300. package/docs/runtime-adapters.md +113 -0
  301. package/docs/runtime-llm-flow.md +13 -0
  302. package/docs/setup-agents-applicability-review.md +173 -0
  303. package/docs/skill-loading-strategy.md +1 -0
  304. package/docs/source-of-truth-and-agent-learning.md +14 -0
  305. package/docs/traceability-flow.md +5 -1
  306. package/docs/tracker-adapter-contract.md +10 -1
  307. package/docs/web-console-qa.md +35 -0
  308. package/package.json +12 -6
  309. package/rules/development-engineering.mdc +66 -0
  310. package/skills/doc-sync/SKILL.md +2 -0
@@ -145,6 +145,9 @@ orchestra skills render --target codex --task TASK-1
145
145
  orchestra protocol render --target codex --task TASK-1
146
146
  orchestra workflow render --target codex --task TASK-1
147
147
  orchestra runtime brief --task TASK-1 --runtime codex-cli --json
148
+ orchestra runtime delegate-plan --task TASK-1 --runtime claude-cli --roles developer,qa --json
149
+ orchestra runtime sessions --task TASK-1 --json
150
+ orchestra runtime session --session TASK-1:claude-cli --action suspend --json
148
151
  ```
149
152
 
150
153
  Memory hooks are explicit retrieval points for lessons learned and prompt
@@ -153,6 +156,11 @@ registry entries. Bundles are scoped by role (`product_owner`, `architect`,
153
156
  tokens, kept and omitted sections, and trimming rationale in both JSON and human
154
157
  output.
155
158
 
159
+ Runtime delegation sessions are derived from append-only events. Session
160
+ operations record suspend, resume, cancel, or close events for the parent
161
+ runtime and web console to reconcile active work, stale sessions, and handoff
162
+ state without creating a second session store.
163
+
156
164
  Delivery evidence, handoff, and gates:
157
165
 
158
166
  ```bash
@@ -173,6 +181,42 @@ locks, and missing smoke or rollback evidence. Browser/UI criteria require
173
181
  Playwright-style screenshot, trace, or video evidence unless the task has an
174
182
  accepted risk.
175
183
 
184
+ For `1.0.0` release candidates, the same report includes `gaReadiness`. This is
185
+ the repeatable go/no-go layer for production promotion. A GA-ready workspace
186
+ must have no uncovered acceptance criteria, no blocking reviews, no active
187
+ locks, smoke and rollback evidence, documentation or release notes evidence,
188
+ observability evidence, security and permissions review evidence, package
189
+ provenance evidence, public CLI contract evidence, migration or upgrade
190
+ readiness evidence, and release test matrix evidence. Accepted risks must include
191
+ an owner, a rationale, and a follow-up or expiry signal in the rationale.
192
+
193
+ The human release check summary reports both the legacy release readiness gaps
194
+ and the number of GA blockers. Use JSON output for the full criterion list:
195
+
196
+ ```bash
197
+ orchestra release check --json
198
+ ```
199
+
200
+ ## Config Schema Migrations
201
+
202
+ Open Orchestra workspace config is versioned through
203
+ `.agent-workflow/config.json`. For pre-1.0 workspaces, inspect migrations before
204
+ writing anything:
205
+
206
+ ```bash
207
+ orchestra config migrate --json
208
+ ```
209
+
210
+ Apply a supported migration only after reviewing the plan:
211
+
212
+ ```bash
213
+ orchestra config migrate --apply --json
214
+ ```
215
+
216
+ Migration apply writes a backup under `.agent-workflow/backups/` before updating
217
+ `config.json`. Newer unsupported schema versions are reported as errors and are
218
+ not modified.
219
+
176
220
  Upgrade dogfooding:
177
221
 
178
222
  ```bash
@@ -184,17 +228,52 @@ orchestra upgrade --smoke --json
184
228
  Stable installs use `npm install -g @jterrats/open-orchestra@latest`; beta
185
229
  dogfooding uses `npm install -g @jterrats/open-orchestra@beta` or the exact
186
230
  version reported by `orchestra upgrade --beta`. After upgrading, run the smoke
187
- command shown by the CLI to verify the installed binary and health report.
231
+ command shown by the CLI to verify the installed binary and health report. The
232
+ upgrade output also includes the exact rollback install command for the
233
+ previous version plus `orchestra config migrate --json` as the migration
234
+ compatibility check before accepting the new package.
235
+ Set `SKIP_NETWORK_TESTS=1` in CI jobs that must avoid external network calls;
236
+ package update checks and provider smoke tests honor it, while localhost E2E
237
+ coverage remains available.
188
238
 
189
239
  Release go/no-go:
190
240
 
191
241
  - Run `npm run precommit` locally before pushing release changes.
242
+ - Confirm `npm run security:audit` passes or attach an accepted security risk.
243
+ - Confirm `orchestra release check --json` passes the package provenance gate,
244
+ which runs `npm pack --dry-run --json` and rejects private workflow state,
245
+ generated prompts, env files, and missing public package entry points.
192
246
  - Confirm GitHub Actions CI is green for the latest pushed HEAD.
193
247
  - Confirm installed-package dogfooding passes on `ubuntu-latest`,
194
248
  `macos-latest`, and `windows-latest`.
195
249
  - Confirm `Create release tag`, site publish, and npm publish workflows are
196
250
  successful for the intended release commit.
197
251
 
252
+ Support diagnostics:
253
+
254
+ ```bash
255
+ orchestra diagnostics bundle --json
256
+ orchestra diagnostics bundle --output support/diagnostics.json --json
257
+ ```
258
+
259
+ The diagnostics bundle is written inside the workspace and includes local
260
+ health, workflow validation, task and lock counts, run failure summaries, and a
261
+ sanitized config summary. It redacts token-like values, email addresses, user
262
+ home paths, and credential fields before writing the JSON artifact so it can be
263
+ attached to an issue or support handoff.
264
+
265
+ Performance budgets:
266
+
267
+ ```bash
268
+ npm run performance:bench -- --json
269
+ npm run performance:bench -- --tasks 500 --json
270
+ ```
271
+
272
+ The benchmark seeds a synthetic workspace and measures core CLI commands plus
273
+ read-only web API routes against documented millisecond budgets. Use the JSON
274
+ result as release evidence for large-workspace readiness and investigate any
275
+ failed budget before promoting a production release.
276
+
198
277
  Model routing, budget, telemetry, and release:
199
278
 
200
279
  ```bash
@@ -359,7 +438,11 @@ The VS Code Control Center scaffold is under `extensions/vscode-open-orchestra`.
359
438
  - `orchestra model set-role` configures provider/model routing per role without invoking real model APIs.
360
439
  - `orchestra model complete-fake` simulates provider fallback behavior without invoking real model APIs.
361
440
  - `orchestra model provenance` records model usage metadata in the append-only event log without storing raw prompts, raw responses, or secrets.
362
- - `orchestra release check`, `release candidate`, `release tag`, and `release evidence` provide a local release-readiness flow for stable, beta, and other prerelease tags.
441
+ - `orchestra release check`, `release candidate`, `release tag`, and
442
+ `release evidence` provide a local release-readiness flow for stable, beta,
443
+ and other prerelease tags. Candidate plans include rollout, rollback,
444
+ post-release, changelog, and semver-impact sections; release evidence accepts
445
+ `smoke`, `rollback`, `post-release`, and `release-notes` kinds.
363
446
  - `orchestra health --network` can check for a newer published package version and print the exact `npm install -g @jterrats/open-orchestra@<version>` update command when one is available.
364
447
  - Package identity is intentionally split: `@jterrats/open-orchestra` is the
365
448
  canonical npm package and `orchestra` is the installed CLI binary. Do not use
@@ -381,7 +464,7 @@ Quality signals collected automatically:
381
464
 
382
465
  ```bash
383
466
  # Declare baseline at story start (once per story)
384
- orchestra estimate --task TASK-1 --sizing m --solo-days 5 --ai-unguided-days 3
467
+ orchestra estimate --task TASK-1 --sizing m --solo-days 5 --ai-unguided-days 3 --ai-guided-days 2
385
468
 
386
469
  # Per-story benchmark after run completes
387
470
  orchestra benchmark --task TASK-1
@@ -4,6 +4,36 @@ Use these paths when you want to operate Open Orchestra by role instead of
4
4
  learning the full command catalog first. Commands assume the installed CLI form:
5
5
  `orchestra`.
6
6
 
7
+ ## First Visible Value
8
+
9
+ Goal: complete one local workflow run and preview release readiness before
10
+ learning every role-specific artifact.
11
+
12
+ Commands:
13
+
14
+ ```bash
15
+ orchestra init
16
+ orchestra health --json
17
+ orchestra task add --id DEMO-001 --title "Ship a governed README update" --owner developer --paths "README.md"
18
+ orchestra workflow run --task DEMO-001 --gates none
19
+ orchestra status
20
+ orchestra release candidate --dry-run --json
21
+ ```
22
+
23
+ Expected artifacts:
24
+
25
+ - `.agent-workflow/tasks.json` contains `DEMO-001`.
26
+ - `.agent-workflow/workflow-runs.jsonl` contains the completed lifecycle.
27
+ - Release candidate dry-run output shows what is ready and what evidence is
28
+ still missing.
29
+
30
+ Recovery:
31
+
32
+ - Run `orchestra health --json` if local tools are missing.
33
+ - Use `orchestra workflow runs` to find a paused or failed run.
34
+ - Move to the production paths below when the story needs human gates,
35
+ explicit sizing, command evidence, QA review, and release readiness approval.
36
+
7
37
  ## Product Owner Refinement
8
38
 
9
39
  Goal: turn a backlog item into a task that is ready for architecture and
@@ -169,6 +199,8 @@ Commands:
169
199
  orchestra release check --json
170
200
  orchestra release evidence --kind smoke --summary "smoke passed"
171
201
  orchestra release evidence --kind rollback --summary "rollback verified"
202
+ orchestra release evidence --kind post-release --summary "post-release smoke passed"
203
+ orchestra release evidence --kind release-notes --summary "release notes published"
172
204
  orchestra gate --gate release-readiness --task STORY-001
173
205
  orchestra release candidate --version 0.5.0-beta.0 --json
174
206
  ```
@@ -0,0 +1,42 @@
1
+ # 1.0.0 Release Test Matrix
2
+
3
+ The release test matrix is the minimum validation surface for a production
4
+ `1.0.0` candidate. It is intentionally explicit so release readiness can attach
5
+ reviewable evidence instead of relying on conversational sign-off.
6
+
7
+ ## Command
8
+
9
+ ```bash
10
+ npm run release:matrix -- --json
11
+ ```
12
+
13
+ Use the JSON output as the release-manager checklist and attach the final
14
+ execution summary as release test matrix evidence before running:
15
+
16
+ ```bash
17
+ orchestra release check --json
18
+ ```
19
+
20
+ ## Required Environments
21
+
22
+ - `ubuntu-latest` with Node `>=22` and npm.
23
+ - `macos-latest` with Node `>=22` and npm.
24
+ - `windows-latest` with Node `>=22` and npm.
25
+
26
+ ## Required Flows
27
+
28
+ | Flow | Command | Evidence |
29
+ | --- | --- | --- |
30
+ | Source quality gate | `npm run precommit` | lint, typecheck, secret scan, security audit, build, unit tests, workflow validation |
31
+ | Browser E2E | `npm run test:e2e` | Playwright regression coverage for browser workflows |
32
+ | Installed package init | `npm run test:e2e:init` | npm package init, health, task, workflow, evidence, readiness smoke |
33
+ | Public site build | `npm run site:build` | production site build |
34
+ | Release readiness | `orchestra release check --json` | `releaseReadiness` and `gaReadiness` report |
35
+ | Package contents | `npm pack --dry-run --json` | package file list and provenance check |
36
+ | Performance budgets | `npm run performance:bench -- --json` | CLI and web API timings on a synthetic large workspace |
37
+
38
+ ## Network Policy
39
+
40
+ The default release matrix is offline-friendly. Provider and tracker tests that
41
+ need network access must honor `SKIP_NETWORK_TESTS` and report skipped status
42
+ instead of failing offline CI.
@@ -20,6 +20,35 @@ Current targets:
20
20
  and `.vscode/open-orchestra.md`.
21
21
  - `windsurf`: Windsurf rules in `.windsurf/rules/open-orchestra.md`.
22
22
 
23
+ Execution adapters are separate from instruction-file targets. They describe
24
+ how an already-authenticated runtime should receive a brief or delegation
25
+ packet:
26
+
27
+ - `codex-cli`: use the current Codex CLI/session. Tool permissions and shell
28
+ approvals stay inside Codex; Orchestra renders briefs and packets only.
29
+ - `opencode-cli`: use an authenticated OpenCode CLI with its own provider
30
+ config. Orchestra uses the generic instruction target and never copies
31
+ provider keys into workflow artifacts.
32
+ - `generic-runtime`: produce portable briefs when the executor has no known
33
+ invocation or permission model.
34
+
35
+ Provider-backed model adapters are configured separately from execution
36
+ adapters. `gemini` and `ollama` can be used for workflow phases without making
37
+ them child process runtimes:
38
+
39
+ ```bash
40
+ orchestra model connect --provider gemini --model gemini-2.5-pro \
41
+ --roles architect,developer --api-key-file ~/.env_jt/gemini
42
+
43
+ orchestra model connect --provider ollama --model llama3.1 \
44
+ --roles qa --base-url http://127.0.0.1:11434
45
+ ```
46
+
47
+ Secrets stay in environment variables or local secret files referenced from
48
+ config. Runtime packets keep `directProviderApiAllowed: false`; provider API
49
+ execution only happens in the workflow phase provider layer when policy allows
50
+ it.
51
+
23
52
  ## Init Modes
24
53
 
25
54
  Default project init keeps the current compact bootstrap behavior:
@@ -34,6 +63,18 @@ Generate only selected runtime files:
34
63
  orchestra init --target claude,cursor,windsurf
35
64
  ```
36
65
 
66
+ Refresh managed runtime blocks and generated instruction files:
67
+
68
+ ```bash
69
+ orchestra refresh --check --json
70
+ orchestra refresh --dry-run
71
+ orchestra refresh --force --target codex
72
+ ```
73
+
74
+ `refresh --check` reports drift without writing. `refresh --dry-run` shows the
75
+ planned changes. `refresh --force` rewrites managed blocks only; user-authored
76
+ content outside generated blocks is preserved.
77
+
37
78
  Advisory mode creates workflow state without root instruction files unless a
38
79
  target is explicit:
39
80
 
@@ -85,7 +126,79 @@ The API contracts are:
85
126
  ```bash
86
127
  curl -s http://127.0.0.1:3717/api/workspace/classification
87
128
  curl -s http://127.0.0.1:3717/api/runtime/adapters
129
+ curl -s http://127.0.0.1:3717/api/workflow/progress
88
130
  ```
89
131
 
90
132
  These endpoints are intended for VS Code, Cursor-like extensions, and other
91
133
  clients that need to show safe next actions without parsing human CLI output.
134
+ `/api/runtime/adapters` and `orchestra runtime adapters --json` expose both
135
+ instruction-file targets and nested execution adapters. Execution adapters
136
+ include tool permission policy metadata so clients can distinguish
137
+ runtime-managed, brief-only, read-only, and opt-in autonomous execution models.
138
+
139
+ Runtime delegation operations are event-derived:
140
+
141
+ ```bash
142
+ orchestra runtime sessions --json
143
+ orchestra runtime sessions --task STORY-001 --json
144
+ orchestra runtime session --session STORY-001:claude-cli --action suspend --json
145
+ orchestra runtime session --session STORY-001:claude-cli --action resume --json
146
+ orchestra runtime session --session STORY-001:claude-cli --action cancel --json
147
+ ```
148
+
149
+ The matching read API is `/api/runtime/sessions`. Session operations do not kill
150
+ external provider processes directly; they record auditable suspend, resume,
151
+ cancel, or close events so the parent runtime can reconcile claimed work,
152
+ stale sessions, and handoff state without inventing a second source of truth.
153
+
154
+ Cursor canvas sync is intentionally runtime-specific:
155
+
156
+ ```bash
157
+ orchestra cursor canvas status --json
158
+ orchestra cursor canvas sync --dry-run --json
159
+ orchestra cursor canvas clean --json
160
+ ```
161
+
162
+ Use it only when Cursor canvas artifacts should be copied into the workspace for
163
+ review. Other runtimes should use `runtime brief`, `runtime delegate-plan`, and
164
+ managed bootstrap files instead.
165
+
166
+ ## Invocation Planning
167
+
168
+ Direct CLI execution is intentionally disabled. Orchestra can render a typed
169
+ invocation plan so callers can inspect the command shape before any future
170
+ executor is enabled:
171
+
172
+ - `claude-cli` with `gates=phase` or `gates=all` plans
173
+ `claude --print <prompt> --allowedTools Read Glob Grep`.
174
+ - `claude-cli` with `gates=none` plans
175
+ `claude --print <prompt> --allow-dangerously-skip-permissions`.
176
+ - `codex-cli`, `opencode-cli`, IDE runtimes, and generic runtimes remain
177
+ runtime-managed or brief-only, so the plan has no command to execute.
178
+
179
+ Every invocation plan reports `directExecutionEnabled: false` and
180
+ `canExecute: false`; the contract is for policy review, UI display, and future
181
+ executor hardening, not for spawning tools today.
182
+
183
+ ## Dependency Remediation
184
+
185
+ Missing tools should be handled as runtime setup problems, not hidden fallback
186
+ behavior:
187
+
188
+ - Missing Codex CLI: install or authenticate Codex, then rerender the brief with
189
+ `orchestra runtime brief --task <id> --runtime codex-cli`.
190
+ - Missing OpenCode CLI: install OpenCode and configure its provider credentials
191
+ in OpenCode, then use `--runtime opencode-cli`.
192
+ - Missing Gemini credentials: set `GEMINI_API_KEY` or configure
193
+ `--api-key-file` through `orchestra model connect`.
194
+ - Missing Ollama server: start Ollama locally or set the configured base URL to
195
+ the reachable OpenAI-compatible endpoint.
196
+
197
+ The stable inspection commands are:
198
+
199
+ ```bash
200
+ orchestra runtime adapters --json
201
+ orchestra runtime brief --task <id> --runtime codex-cli --json
202
+ orchestra runtime delegate-plan --task <id> --runtime opencode-cli --roles qa --json
203
+ orchestra model providers --json
204
+ ```
@@ -98,6 +98,10 @@ Anthropic Messages API, `gemini` for the Gemini `generateContent` API, or
98
98
 
99
99
  ```bash
100
100
  orchestra model providers --json
101
+ orchestra model profile set --name local-fast --provider fake --model fake-model --roles developer,qa --activate
102
+ orchestra model profile list --json
103
+ orchestra model profile smoke --name local-fast --json
104
+ orchestra workflow run --task STORY-001 --profile local-fast --gates phase
101
105
  orchestra model set-role --role qa --provider fake --model fake-model
102
106
  orchestra model connect --provider gemini --model gemini-3-pro-preview --roles qa,reviewer_critic --api-key-file /absolute/path/to/gemini-key --allow-direct-provider-api
103
107
  OPENAI_API_KEY=... orchestra model set-role --role architect --provider openai --model gpt-5.2
@@ -116,6 +120,15 @@ in one idempotent config update. This is provider-agnostic: `--provider`,
116
120
  routing. Project-specific choices such as "Codex for developer and Gemini for
117
121
  QA" belong in the consuming workspace config, not in Open Orchestra defaults.
118
122
 
123
+ Use named provider runtime profiles when a workspace needs repeatable routing
124
+ presets such as `local-fast`, `premium-review`, `offline`, or `regulated`.
125
+ `model profile set` stores role routing, fallback chains, and required
126
+ environment variable names without storing secrets. `model profile apply`
127
+ updates active role routing deterministically, and `workflow run --profile`
128
+ applies the profile before execution and records command evidence on the task.
129
+ `model profile smoke` performs local configuration checks and reports missing
130
+ secrets or policy failures with sanitized messages.
131
+
119
132
  The OpenAI adapter reads `OPENAI_API_KEY` from the environment and optionally
120
133
  `OPENAI_BASE_URL` for an HTTPS-compatible endpoint. API keys must not be stored
121
134
  in workflow config, evidence, docs, or committed files.
@@ -0,0 +1,173 @@
1
+ # setup-agents Applicability Review
2
+
3
+ Date: 2026-05-14
4
+
5
+ ## Scope
6
+
7
+ Review new `setup-agents` issues and local setup-agents standards to decide what
8
+ should be adopted by Open Orchestra.
9
+
10
+ Sources reviewed:
11
+
12
+ - Open Orchestra issue #317
13
+ - setup-agents issues #198-#211, with emphasis on #211, #209, #208, #205, #204,
14
+ #203, #202, #201, #200, #199, #198
15
+ - Local setup-agents developer profile and generated Developer standards
16
+ - Open Orchestra `setup-agents import` bridge and standards rules
17
+
18
+ ## Applies Directly
19
+
20
+ ### Visual Post-Write Validation
21
+
22
+ Source: setup-agents #211 and Open Orchestra #317.
23
+
24
+ This applies directly. Open Orchestra is the orchestrator and should own the
25
+ generic gate contract:
26
+
27
+ - external visual write manifest from agents or MCP integrations
28
+ - export/snapshot evidence
29
+ - fresh fetch of target state
30
+ - duplicate, overlap, fallback-text, orphan, and bounds assertions
31
+ - remediation loop where safe
32
+ - blocking gate when non-remediable defects remain
33
+
34
+ The Lucid-specific assertions belong in adapters or skills, but the gate type,
35
+ evidence attachment, and workflow blocking behavior belong in Open Orchestra.
36
+
37
+ ### setup-agents Import Role Mapping
38
+
39
+ Open Orchestra currently maps setup-agents `po` and `pm` aliases to `po` and
40
+ `pm` in `src/setup-agents-import.ts`. Core Open Orchestra roles are
41
+ `product_owner` and `product_manager`. Imported setup-agents tasks should map
42
+ aliases to canonical role IDs.
43
+
44
+ This is a bug-sized Open Orchestra fix.
45
+
46
+ ### Workflow Benchmark Feedback Into Estimates
47
+
48
+ Source: setup-agents #205.
49
+
50
+ Open Orchestra already has estimates and benchmark concepts. Historical
51
+ calibration belongs in Open Orchestra so every stack benefits, not only
52
+ Salesforce. The useful contract is:
53
+
54
+ - estimates read completed run benchmark data when available
55
+ - output includes historical median and variance
56
+ - warning when historical estimates deviate materially
57
+ - `--ignore-history` bypass
58
+ - JSON output exposes calibration fields
59
+
60
+ ### Playbook Scaffolding And Playbook Authoring Docs
61
+
62
+ Sources: setup-agents #204 and #201.
63
+
64
+ Open Orchestra has phase playbooks and task-scoped workflow rendering. A
65
+ scaffold command would reduce friction for teams adapting phases by stack
66
+ without reading source. This applies cross-stack.
67
+
68
+ ### Gate vs Clarify Documentation
69
+
70
+ Source: setup-agents #202.
71
+
72
+ Open Orchestra exposes gates, reviews, decisions, and clarification patterns.
73
+ The distinction should be documented in Open Orchestra user docs and runtime
74
+ bootstrap copy because agents otherwise use phase gates for mid-phase questions.
75
+
76
+ ### Workflow Phase Matrix / End-to-End Workflow Narrative
77
+
78
+ Sources: setup-agents #200 and #199.
79
+
80
+ Open Orchestra should document its PM -> PO -> Architect -> Developer -> QA ->
81
+ Release sequence, gates, evidence, review checkpoints, and what is autonomous
82
+ versus human-approved. This is product documentation, not setup-agents-specific.
83
+
84
+ ### Rules Health / Generated Guidance Freshness
85
+
86
+ Source: setup-agents #203.
87
+
88
+ Open Orchestra already generates bootstrap and managed instruction blocks. A
89
+ health surface that reports stale generated guidance, missing playbooks, and
90
+ workflow readiness would apply directly.
91
+
92
+ ## Applies As A Pattern, Not Literally
93
+
94
+ ### API 66 Salesforce Agent Metadata CI/CD
95
+
96
+ Source: setup-agents #209.
97
+
98
+ The Salesforce metadata details do not belong in Open Orchestra core, but the
99
+ pattern does:
100
+
101
+ - deployment lanes are not always one generic deploy command
102
+ - some artifacts require publish/activate flows
103
+ - generated or managed artifacts may need ignore rules
104
+ - dependency prechecks should run before deploy
105
+
106
+ Open Orchestra should represent this as stack-specific release lanes or release
107
+ playbook checks, not as Salesforce API 66 logic.
108
+
109
+ ### Auto-Run Local Rule Generation After Init
110
+
111
+ Source: setup-agents #208.
112
+
113
+ The exact `sf setup-agents init -> local` behavior is setup-agents-specific.
114
+ For Open Orchestra, the applicable concept is first-run completeness: after
115
+ `orchestra init`, users should exit with usable runtime instructions, workflow
116
+ files, and a clear next command without a hidden second step.
117
+
118
+ ## Developer Standards To Generalize
119
+
120
+ Several setup-agents Developer standards are Apex-specific, but the underlying
121
+ rules are stack-agnostic and should remain or be strengthened in Open Orchestra:
122
+
123
+ - Read project metadata/config before generating code.
124
+ - Infer naming and layering from existing code.
125
+ - Default to least privilege / safe execution context.
126
+ - Never query or mutate data inside loops; batch or bulk operations.
127
+ - Keep entry points thin; delegate business logic to services/handlers.
128
+ - Scan for existing exception/logging patterns before adding new ones.
129
+ - Prefer existing data access patterns over inventing a new repository/selector.
130
+ - Handle 1..N records/requests, not only the happy-path singleton.
131
+ - Use centralized test data builders/factories.
132
+ - Include async tests that flush queued work.
133
+ - Use user/permission-specific test contexts for authorization-sensitive logic.
134
+ - Avoid fixed async patterns; choose queues, jobs, events, or schedulers based on
135
+ ordering, retry, observability, and failure semantics.
136
+ - Use named external integrations/configured clients; never hardcode endpoints,
137
+ tokens, credentials, or command strings.
138
+ - Validate response status before processing external responses.
139
+ - Keep user-facing strings configurable/localizable where the product needs it.
140
+ - Run static analysis before handoff.
141
+ - Deploy/validate the changed production artifact before relying on tests that
142
+ exercise it.
143
+ - Every sub-agent handoff should include project conventions, data access
144
+ strategy, test strategy, and known constraints.
145
+
146
+ These already overlap with current Open Orchestra rules. The main gap is making
147
+ some of them more explicit for Java, .NET, TypeScript, and Python examples
148
+ without carrying Apex names into stack-agnostic docs.
149
+
150
+ Adopted in Open Orchestra via `rules/development-engineering.mdc`, with examples
151
+ for Java/Spring, .NET, TypeScript/Node, and Python.
152
+
153
+ ## Does Not Apply To Core
154
+
155
+ - Salesforce-specific API 66 commands such as `sf agent publish
156
+ authoring-bundle`.
157
+ - Salesforce-only metadata folders such as `genAiPlannerBundles/`.
158
+ - LWC/SLDS/LDS-specific UI implementation rules.
159
+ - Apex trigger handler naming, `with sharing`, SOQL/DML, PSG test setup, and
160
+ Custom Labels as literal rules.
161
+
162
+ These belong in Salesforce/setup-agents profiles, not Open Orchestra core.
163
+
164
+ ## Recommended Open Orchestra Backlog
165
+
166
+ 1. Implement visual validation gate contract and evidence attachment.
167
+ 2. Fix setup-agents import role aliases to canonical Open Orchestra roles.
168
+ 3. Add benchmark-calibrated estimates.
169
+ 4. Add playbook scaffold command and authoring docs.
170
+ 5. Add Gate vs Clarify docs and workflow phase matrix.
171
+ 6. Add rules/playbook health to `orchestra health` or a dedicated status view.
172
+ 7. Add stack-agnostic Developer standards examples for Java, .NET, TypeScript,
173
+ and Python.
@@ -97,6 +97,7 @@ Primary MD files should stay bounded:
97
97
  - `orchestra skills validate` validates canonical skills against portable `manifest.json` and `SKILL.md` files.
98
98
  - `orchestra sources list` exposes the source-of-truth catalog.
99
99
  - `orchestra lessons list/add/promote` manages local agent learning and promotes repeated lessons into reviewable artifacts.
100
+ - `orchestra doc-sync audit [--task <id>] [--strict]` checks changed documentation, changelog, architecture, diagram, and public-site surfaces for prompt registry coverage and suggests `lessons assist` when repeated documentation rework should become a reusable lesson.
100
101
 
101
102
  The CLI render path is the universal fallback for environments without native skill support.
102
103
 
@@ -78,6 +78,20 @@ Do not record a lesson for:
78
78
  4. If reusable, append one JSONL entry with root cause, fix, prevention, and verification.
79
79
  5. If the same lesson appears repeatedly, promote it into the relevant skill or project rule.
80
80
 
81
+ ## Memory Governance
82
+
83
+ Local memory is useful only while it stays bounded, current, and safe to load
84
+ into future agent context. Use `orchestra memory governance` to inspect active,
85
+ archived, stale, and sensitive lessons. Use `orchestra lessons prune --dry-run`
86
+ before applying retention cleanup, then run without `--dry-run` to archive stale
87
+ or overflow lessons.
88
+
89
+ Use `orchestra lessons archive --id <lesson-id>` when a lesson is superseded but
90
+ still useful as audit history. Use `orchestra lessons redact --id <lesson-id>`
91
+ when a stored lesson contains token-like or secret-shaped values. Use
92
+ `orchestra lessons delete --id <lesson-id>` only when the record should be
93
+ removed from local memory entirely.
94
+
81
95
  ## Relationship to Skills
82
96
 
83
97
  Skills should declare which source groups they use and which lessons are relevant. The orchestrator should load lessons only for the selected skills and current operation, not the full historical log.
@@ -42,12 +42,16 @@ user-facing:
42
42
 
43
43
  ```bash
44
44
  orchestra playwright plan --task STORY-1
45
+ orchestra qa coverage --task STORY-1 --json
45
46
  orchestra playwright evidence --task STORY-1 --kind trace --path test-results/story-1.zip --summary "acceptance flow trace"
46
47
  orchestra review --task STORY-1 --role qa --result approve --findings "..." --recommendation "..."
47
48
  ```
48
49
 
49
50
  Developer-to-QA handoff should include touched files, commands, known gaps, and
50
- recommended Playwright coverage.
51
+ recommended Playwright, CLI, shell, or API coverage. `qa coverage` maps each
52
+ acceptance criterion to `covered`, `planned`, `skipped`, or `gap` using task
53
+ paths, project scripts, and existing evidence; release readiness surfaces
54
+ unresolved QA automation gaps before promotion.
51
55
 
52
56
  ## Advisory Conversion
53
57
 
@@ -4,6 +4,7 @@ Open Orchestra currently ships a GitHub-oriented tracker command:
4
4
 
5
5
  ```bash
6
6
  orchestra github sync --issue <number> --task <id> --comment --json
7
+ orchestra tracker sync --tracker jira --remote PROJ-123 --issue-file jira-123.json --json
7
8
  ```
8
9
 
9
10
  The product contract is broader than GitHub CLI. A runtime may use `gh` when it
@@ -23,7 +24,9 @@ custom issue system.
23
24
  ## Common Adapter Shape
24
25
 
25
26
  Every tracker adapter should provide the same normalized fields to Open
26
- Orchestra:
27
+ Orchestra. Runtime MCP skills, Jira/GitLab/Bitbucket CLIs, or custom bridge
28
+ scripts should write this shape to a workspace-local JSON file and pass it to
29
+ `orchestra tracker sync --issue-file <file>`:
27
30
 
28
31
  | Field | Meaning |
29
32
  | --- | --- |
@@ -42,6 +45,12 @@ Writes should support comment, status update, close, and accepted-risk note when
42
45
  the provider allows them. Missing write support should be reported as a transport
43
46
  capability gap, not treated as successful sync.
44
47
 
48
+ The generic sync command maps the normalized issue into local task fields,
49
+ detects existing-link conflicts before writing, and records local evidence when
50
+ the sync is applied. Live remote reads and writes remain adapter-owned; the CLI
51
+ does not fabricate Jira, GitLab, Bitbucket, or MCP calls when no adapter runner
52
+ is available.
53
+
45
54
  ## MCP Fallback Requirements
46
55
 
47
56
  MCP tracker tools must:
@@ -0,0 +1,35 @@
1
+ # Web Console QA Notes
2
+
3
+ The web console is a local browser surface for workflow operations. It is not a
4
+ replacement for the CLI; it consumes the same JSON contracts and should remain
5
+ usable when a user needs to inspect state, create tasks, attach evidence, run or
6
+ resume workflows, and review release readiness.
7
+
8
+ ## 1.0.0 Browser Support
9
+
10
+ - Chromium is the release-blocking automated browser for 1.0.0 E2E coverage.
11
+ - Desktop smoke uses the default Playwright viewport.
12
+ - Mobile smoke uses a narrow viewport and must not create horizontal overflow.
13
+ - Keyboard-only operation must reach refresh, task creation, evidence,
14
+ Playwright evidence, workflow start, gate approval, resume, and cancel
15
+ controls.
16
+
17
+ ## Required States
18
+
19
+ - Loading: the status line announces `Loading workflow`.
20
+ - Success: the status line announces `Workflow loaded`.
21
+ - Empty: operational panels render friendly empty states when no matching data
22
+ exists.
23
+ - Error: failed API calls render recoverable copy without raw stack traces.
24
+
25
+ ## Release Evidence
26
+
27
+ Run:
28
+
29
+ ```bash
30
+ npm run test:e2e -- e2e/web-console.spec.js
31
+ ```
32
+
33
+ Attach the command result as QA evidence before release readiness. If a browser
34
+ failure is accepted temporarily, record the affected viewport, failed action,
35
+ user impact, owner, and expiry as review or release evidence.