@jterrats/open-orchestra 0.5.7 → 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 (249) 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 +169 -32
  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-store.js +3 -3
  9. package/dist/autonomous-run-store.js.map +1 -1
  10. package/dist/benchmark.d.ts +4 -1
  11. package/dist/benchmark.js +93 -4
  12. package/dist/benchmark.js.map +1 -1
  13. package/dist/cli.js +73 -2
  14. package/dist/cli.js.map +1 -1
  15. package/dist/collaboration-flows.js +3 -5
  16. package/dist/collaboration-flows.js.map +1 -1
  17. package/dist/collection-utils.d.ts +3 -0
  18. package/dist/collection-utils.js +10 -0
  19. package/dist/collection-utils.js.map +1 -0
  20. package/dist/command-manifest.d.ts +12 -1
  21. package/dist/command-manifest.js +213 -10
  22. package/dist/command-manifest.js.map +1 -1
  23. package/dist/commands.d.ts +10 -5
  24. package/dist/commands.js +16 -6
  25. package/dist/commands.js.map +1 -1
  26. package/dist/config-migrations.d.ts +24 -0
  27. package/dist/config-migrations.js +102 -0
  28. package/dist/config-migrations.js.map +1 -0
  29. package/dist/constants.d.ts +2 -0
  30. package/dist/constants.js +22 -0
  31. package/dist/constants.js.map +1 -1
  32. package/dist/dashboard-commands.d.ts +2 -0
  33. package/dist/dashboard-commands.js +14 -0
  34. package/dist/dashboard-commands.js.map +1 -0
  35. package/dist/defaults.d.ts +13 -0
  36. package/dist/defaults.js +13 -0
  37. package/dist/defaults.js.map +1 -1
  38. package/dist/delegation-decision.js +23 -8
  39. package/dist/delegation-decision.js.map +1 -1
  40. package/dist/delivery-commands.js +5 -0
  41. package/dist/delivery-commands.js.map +1 -1
  42. package/dist/delivery-dashboard-charts.d.ts +4 -0
  43. package/dist/delivery-dashboard-charts.js +156 -0
  44. package/dist/delivery-dashboard-charts.js.map +1 -0
  45. package/dist/delivery-dashboard-html.d.ts +2 -0
  46. package/dist/delivery-dashboard-html.js +115 -0
  47. package/dist/delivery-dashboard-html.js.map +1 -0
  48. package/dist/delivery-dashboard-types.d.ts +78 -0
  49. package/dist/delivery-dashboard-types.js +2 -0
  50. package/dist/delivery-dashboard-types.js.map +1 -0
  51. package/dist/delivery-dashboard.d.ts +8 -0
  52. package/dist/delivery-dashboard.js +124 -0
  53. package/dist/delivery-dashboard.js.map +1 -0
  54. package/dist/effort-classification.d.ts +7 -0
  55. package/dist/effort-classification.js +72 -0
  56. package/dist/effort-classification.js.map +1 -0
  57. package/dist/extension-commands.d.ts +3 -0
  58. package/dist/extension-commands.js +40 -0
  59. package/dist/extension-commands.js.map +1 -0
  60. package/dist/extensions.d.ts +22 -0
  61. package/dist/extensions.js +126 -0
  62. package/dist/extensions.js.map +1 -0
  63. package/dist/github.d.ts +2 -0
  64. package/dist/github.js +15 -3
  65. package/dist/github.js.map +1 -1
  66. package/dist/health-checks.js +51 -0
  67. package/dist/health-checks.js.map +1 -1
  68. package/dist/lucid-story-map.d.ts +73 -0
  69. package/dist/lucid-story-map.js +112 -0
  70. package/dist/lucid-story-map.js.map +1 -0
  71. package/dist/mcp-integrations.d.ts +19 -0
  72. package/dist/mcp-integrations.js +58 -0
  73. package/dist/mcp-integrations.js.map +1 -0
  74. package/dist/mcp-tool-adapter.d.ts +21 -0
  75. package/dist/mcp-tool-adapter.js +56 -0
  76. package/dist/mcp-tool-adapter.js.map +1 -0
  77. package/dist/metrics-commands.js +47 -13
  78. package/dist/metrics-commands.js.map +1 -1
  79. package/dist/model-commands.d.ts +5 -0
  80. package/dist/model-commands.js +95 -1
  81. package/dist/model-commands.js.map +1 -1
  82. package/dist/model-providers.js +13 -1
  83. package/dist/model-providers.js.map +1 -1
  84. package/dist/package-update-check.d.ts +18 -0
  85. package/dist/package-update-check.js +20 -0
  86. package/dist/package-update-check.js.map +1 -1
  87. package/dist/phase-executor.d.ts +1 -0
  88. package/dist/phase-executor.js +115 -14
  89. package/dist/phase-executor.js.map +1 -1
  90. package/dist/phase-playbooks.d.ts +15 -0
  91. package/dist/phase-playbooks.js +82 -0
  92. package/dist/phase-playbooks.js.map +1 -1
  93. package/dist/planning-commands.d.ts +1 -0
  94. package/dist/planning-commands.js +24 -1
  95. package/dist/planning-commands.js.map +1 -1
  96. package/dist/project-detection.js +9 -7
  97. package/dist/project-detection.js.map +1 -1
  98. package/dist/prompt-registry-update.d.ts +2 -0
  99. package/dist/prompt-registry-update.js +5 -1
  100. package/dist/prompt-registry-update.js.map +1 -1
  101. package/dist/prompt-registry-validation.js +39 -2
  102. package/dist/prompt-registry-validation.js.map +1 -1
  103. package/dist/qa-commands.d.ts +2 -0
  104. package/dist/qa-commands.js +18 -0
  105. package/dist/qa-commands.js.map +1 -0
  106. package/dist/qa-coverage.d.ts +24 -0
  107. package/dist/qa-coverage.js +189 -0
  108. package/dist/qa-coverage.js.map +1 -0
  109. package/dist/qa-readiness.d.ts +5 -0
  110. package/dist/qa-readiness.js +26 -0
  111. package/dist/qa-readiness.js.map +1 -0
  112. package/dist/refresh-generated.d.ts +10 -1
  113. package/dist/refresh-generated.js +83 -6
  114. package/dist/refresh-generated.js.map +1 -1
  115. package/dist/release-candidate.d.ts +9 -1
  116. package/dist/release-candidate.js +52 -1
  117. package/dist/release-candidate.js.map +1 -1
  118. package/dist/release-commands.js +161 -8
  119. package/dist/release-commands.js.map +1 -1
  120. package/dist/release-readiness.d.ts +33 -0
  121. package/dist/release-readiness.js +187 -3
  122. package/dist/release-readiness.js.map +1 -1
  123. package/dist/runtime-bootstrap.js +1 -1
  124. package/dist/runtime-bootstrap.js.map +1 -1
  125. package/dist/runtime-commands.d.ts +2 -0
  126. package/dist/runtime-commands.js +77 -0
  127. package/dist/runtime-commands.js.map +1 -1
  128. package/dist/runtime-execution-renderer.d.ts +3 -2
  129. package/dist/runtime-execution-renderer.js +19 -1
  130. package/dist/runtime-execution-renderer.js.map +1 -1
  131. package/dist/runtime-execution.d.ts +2 -1
  132. package/dist/runtime-execution.js +71 -11
  133. package/dist/runtime-execution.js.map +1 -1
  134. package/dist/runtime-guardrails.d.ts +26 -0
  135. package/dist/runtime-guardrails.js +168 -0
  136. package/dist/runtime-guardrails.js.map +1 -0
  137. package/dist/setup-agents-import.js +5 -3
  138. package/dist/setup-agents-import.js.map +1 -1
  139. package/dist/skills-commands.d.ts +4 -0
  140. package/dist/skills-commands.js +55 -2
  141. package/dist/skills-commands.js.map +1 -1
  142. package/dist/skills-memory.d.ts +36 -2
  143. package/dist/skills-memory.js +165 -6
  144. package/dist/skills-memory.js.map +1 -1
  145. package/dist/skills-planning.js +2 -4
  146. package/dist/skills-planning.js.map +1 -1
  147. package/dist/skills-render.js +2 -4
  148. package/dist/skills-render.js.map +1 -1
  149. package/dist/skills.d.ts +1 -1
  150. package/dist/skills.js +1 -1
  151. package/dist/skills.js.map +1 -1
  152. package/dist/sprint-commands.js +2 -1
  153. package/dist/sprint-commands.js.map +1 -1
  154. package/dist/subagent-protocol.js +3 -5
  155. package/dist/subagent-protocol.js.map +1 -1
  156. package/dist/support-commands.d.ts +2 -0
  157. package/dist/support-commands.js +18 -0
  158. package/dist/support-commands.js.map +1 -0
  159. package/dist/support-diagnostics.d.ts +49 -0
  160. package/dist/support-diagnostics.js +86 -0
  161. package/dist/support-diagnostics.js.map +1 -0
  162. package/dist/task-graph-commands.js +5 -3
  163. package/dist/task-graph-commands.js.map +1 -1
  164. package/dist/telemetry-redaction.js +8 -1
  165. package/dist/telemetry-redaction.js.map +1 -1
  166. package/dist/tool-commands.d.ts +3 -0
  167. package/dist/tool-commands.js +62 -0
  168. package/dist/tool-commands.js.map +1 -1
  169. package/dist/tracker-adapters.d.ts +71 -0
  170. package/dist/tracker-adapters.js +186 -0
  171. package/dist/tracker-adapters.js.map +1 -0
  172. package/dist/tracker-commands.d.ts +2 -0
  173. package/dist/tracker-commands.js +119 -0
  174. package/dist/tracker-commands.js.map +1 -0
  175. package/dist/types/metrics.d.ts +24 -0
  176. package/dist/types/model-config.d.ts +35 -0
  177. package/dist/types/runtime.d.ts +56 -0
  178. package/dist/types/skills.d.ts +2 -0
  179. package/dist/types/tasks.d.ts +6 -0
  180. package/dist/types/workflow-run.d.ts +17 -0
  181. package/dist/types.d.ts +4 -4
  182. package/dist/types.js.map +1 -1
  183. package/dist/upgrade-commands.js +13 -4
  184. package/dist/upgrade-commands.js.map +1 -1
  185. package/dist/validation.js +2 -2
  186. package/dist/validation.js.map +1 -1
  187. package/dist/visual-validation.d.ts +81 -0
  188. package/dist/visual-validation.js +290 -0
  189. package/dist/visual-validation.js.map +1 -0
  190. package/dist/web-action-security.d.ts +11 -0
  191. package/dist/web-action-security.js +45 -0
  192. package/dist/web-action-security.js.map +1 -0
  193. package/dist/web-api-read-routes.js +101 -1
  194. package/dist/web-api-read-routes.js.map +1 -1
  195. package/dist/web-api.js +507 -5
  196. package/dist/web-api.js.map +1 -1
  197. package/dist/web-artifacts.d.ts +55 -0
  198. package/dist/web-artifacts.js +222 -0
  199. package/dist/web-artifacts.js.map +1 -0
  200. package/dist/web-console/assets/index-C9lx-V42.css +1 -0
  201. package/dist/web-console/assets/index-M3S0g1GK.js +11 -0
  202. package/dist/web-console/index.html +13 -0
  203. package/dist/web-console.js +9 -3
  204. package/dist/web-console.js.map +1 -1
  205. package/dist/web-recovery.d.ts +30 -0
  206. package/dist/web-recovery.js +163 -0
  207. package/dist/web-recovery.js.map +1 -0
  208. package/dist/web-workflow-progress.d.ts +41 -0
  209. package/dist/web-workflow-progress.js +114 -0
  210. package/dist/web-workflow-progress.js.map +1 -0
  211. package/dist/workflow-approval-service.d.ts +2 -1
  212. package/dist/workflow-approval-service.js +72 -0
  213. package/dist/workflow-approval-service.js.map +1 -1
  214. package/dist/workflow-evidence-service.js +8 -1
  215. package/dist/workflow-evidence-service.js.map +1 -1
  216. package/dist/workflow-gates.d.ts +1 -0
  217. package/dist/workflow-gates.js +57 -0
  218. package/dist/workflow-gates.js.map +1 -1
  219. package/dist/workflow-run-commands.js +13 -1
  220. package/dist/workflow-run-commands.js.map +1 -1
  221. package/dist/workflow-services.d.ts +16 -12
  222. package/dist/workflow-services.js +311 -253
  223. package/dist/workflow-services.js.map +1 -1
  224. package/dist/workflow-task-service.d.ts +11 -0
  225. package/dist/workflow-task-service.js +242 -0
  226. package/dist/workflow-task-service.js.map +1 -0
  227. package/dist/workspace-validator.js +109 -3
  228. package/dist/workspace-validator.js.map +1 -1
  229. package/dist/workspace.js +8 -2
  230. package/dist/workspace.js.map +1 -1
  231. package/docs/adoption-guide.md +147 -0
  232. package/docs/autonomous-workflow.md +118 -27
  233. package/docs/benchmark.md +15 -7
  234. package/docs/command-contracts.md +18 -1
  235. package/docs/core-command-surface.md +59 -13
  236. package/docs/end-to-end-demo.md +1 -0
  237. package/docs/extension-contracts.md +83 -0
  238. package/docs/orchestra-mvp.md +83 -3
  239. package/docs/persona-workflows.md +32 -0
  240. package/docs/release-test-matrix.md +42 -0
  241. package/docs/runtime-adapters.md +92 -0
  242. package/docs/runtime-llm-flow.md +13 -0
  243. package/docs/setup-agents-applicability-review.md +173 -0
  244. package/docs/source-of-truth-and-agent-learning.md +14 -0
  245. package/docs/traceability-flow.md +5 -1
  246. package/docs/tracker-adapter-contract.md +10 -1
  247. package/docs/web-console-qa.md +35 -0
  248. package/package.json +12 -6
  249. package/rules/development-engineering.mdc +66 -0
package/docs/benchmark.md CHANGED
@@ -8,9 +8,10 @@ Open Orchestra measures the effectiveness of AI-assisted development across thre
8
8
  |------|-------------|
9
9
  | **Solo (no LLM)** | Declared by PM or architect at story start — contrafactual estimate |
10
10
  | **AI-unguided** | Declared at story start — how long with a general LLM but no roles, gates, or skills |
11
+ | **AI-guided** | Declared at story start — how long with AI plus Orchestra workflow, roles, gates, memory, and evidence |
11
12
  | **AI + Orchestra (actual)** | Measured automatically from `AUTONOMOUS_PHASE_DONE` timestamps in the event log |
12
13
 
13
- The first two are self-reported. Orchestra only measures the third. The comparison is meaningful even with declared baselines because it creates a consistent, auditable record across many stories.
14
+ The first three are self-reported. Orchestra measures the actual governed run. The comparison is meaningful even with declared baselines because it creates a consistent, auditable record across many stories.
14
15
 
15
16
  ## Usage
16
17
 
@@ -24,6 +25,7 @@ orchestra estimate \
24
25
  --sizing m \
25
26
  --solo-days 5 \
26
27
  --ai-unguided-days 3 \
28
+ --ai-guided-days 2 \
27
29
  --confidence high \
28
30
  --declared-by pm
29
31
  ```
@@ -36,6 +38,7 @@ Options:
36
38
  | `--sizing` | Yes | — | `xs`, `s`, `m`, `l`, `xl` |
37
39
  | `--solo-days` | Yes | — | Estimated days without any AI |
38
40
  | `--ai-unguided-days` | Yes | — | Estimated days with a general LLM, no Orchestra |
41
+ | `--ai-guided-days` | Yes | — | Estimated days with AI guided by Orchestra workflow |
39
42
  | `--confidence` | No | `medium` | `low`, `medium`, `high` |
40
43
  | `--declared-by` | No | `pm` | Role recording the estimate |
41
44
  | `--json` | No | — | Structured output |
@@ -66,9 +69,11 @@ Benchmark: FEAT-001 [complete]
66
69
  Sizing: m
67
70
  Solo: 5d (declared)
68
71
  AI-unguided: 3d (declared)
72
+ AI-guided: 2d (declared)
69
73
  Actual: 1.4d
70
74
  vs Solo: -72%
71
- vs AI: -53%
75
+ vs AI-U: -53%
76
+ vs AI-G: -30%
72
77
  QA loops: 1
73
78
  Reviews: 3 (0 blocking)
74
79
  Evidence: 5 artifacts
@@ -81,14 +86,15 @@ Benchmark: FEAT-001 [complete]
81
86
  Example summary table:
82
87
 
83
88
  ```
84
- Story Size Solo AI Actual vs Solo vs AI QA Rev Blk Ev Les
85
- ────────────────────────────────────────────────────────────────────────────────────
86
- TASK-042 m 5d 3d 1.4d -72% -53% 1 3 0 5 2
87
- TASK-089 l 8d 5d 2.1d -74% -58% 2 4 1 7 3
88
- TASK-101 s 2d 1.5d 0.6d -70% -60% 0 2 0 3 1
89
+ Story Size Solo AI-U AI-G Actual vs Solo vs AI-U vs AI-G QA Rev Blk Ev Les
90
+ ────────────────────────────────────────────────────────────────────────────────────────────────────
91
+ TASK-042 m 5d 3d 2d 1.4d -72% -53% -30% 1 3 0 5 2
92
+ TASK-089 l 8d 5d 3d 2.1d -74% -58% -30% 2 4 1 7 3
93
+ TASK-101 s 2d 1.5d 1d 0.6d -70% -60% -40% 0 2 0 3 1
89
94
 
90
95
  Avg savings vs solo: -72%
91
96
  Avg savings vs AI-unguided: -57%
97
+ Avg savings vs AI-guided: -33%
92
98
  Stories with actuals: 3/3
93
99
  ```
94
100
 
@@ -194,9 +200,11 @@ All benchmark and burndown commands support `--json` for structured output.
194
200
  "sizingLabel": "m",
195
201
  "soloEstimateDays": 5,
196
202
  "aiUnguidedEstimateDays": 3,
203
+ "aiGuidedEstimateDays": 2,
197
204
  "actualDays": 1.4,
198
205
  "vsSoloPct": -72,
199
206
  "vsAiUnguidedPct": -53,
207
+ "vsAiGuidedPct": -30,
200
208
  "qaIterations": 1,
201
209
  "quality": {
202
210
  "reviewCount": 3,
@@ -2,7 +2,8 @@
2
2
 
3
3
  `orchestra commands manifest --json` is the supported discovery surface for
4
4
  automation. Entries include command text, required and optional flags, JSON
5
- support, compatibility status, and reusable schema/message references.
5
+ support, surface classification, compatibility status, contract version, exit
6
+ codes, error shape, and reusable schema/message references.
6
7
 
7
8
  ## Compatibility
8
9
 
@@ -11,6 +12,22 @@ support, compatibility status, and reusable schema/message references.
11
12
  - `experimental`: command is intended for humans or workflow mutation and should
12
13
  not be consumed as a stable machine contract unless a future schema is linked.
13
14
 
15
+ ## Surfaces
16
+
17
+ - `public`: stable automation contract for project workflows, documentation,
18
+ bootstrap files, and CI usage.
19
+ - `experimental`: supported CLI behavior, but not a frozen machine contract for
20
+ `1.0.0`.
21
+ - `internal`: implementation or adapter support surface. It may expose `--json`
22
+ for local tooling, but it is not part of the public 1.0 automation contract.
23
+
24
+ Public commands use contract version `1.0`, exit codes `0` and `1`, and the
25
+ generic JSON error contract unless a command-specific schema replaces it.
26
+
27
+ Config migration is exposed as a public contract through
28
+ `orchestra config migrate --json`. It is dry-run by default and requires
29
+ `--apply` before writing `.agent-workflow/config.json`.
30
+
14
31
  ## Reusable Contracts
15
32
 
16
33
  - `schemas/commands/generic-json-output.schema.json` defines the baseline JSON
@@ -17,16 +17,48 @@ orchestra commands manifest --json
17
17
  Core commands are the first screen for a new project or a production delivery
18
18
  workflow. They are stable enough to appear in onboarding and public examples.
19
19
 
20
- | Job | Commands |
21
- | --- | --- |
22
- | Install and verify | `orchestra version`, `orchestra upgrade --smoke --json` |
23
- | Initialize workspace | `orchestra init`, `orchestra health --json`, `orchestra status` |
24
- | Create and inspect work | `orchestra task add`, `orchestra task list`, `orchestra task show` |
25
- | Run governed delivery | `orchestra workflow run`, `orchestra workflow runs` |
26
- | Resolve workflow gates | `orchestra decision add`, `orchestra workflow gate-approve` |
27
- | Record delivery proof | `orchestra evidence add`, `orchestra review` |
28
- | Sync tracker state | `orchestra github sync --issue <number>` |
29
- | Check release readiness | `orchestra release check --json`, `orchestra release candidate --dry-run --json` |
20
+ For first visible value, show this compact sequence before introducing every
21
+ artifact type:
22
+
23
+ ```bash
24
+ orchestra init
25
+ orchestra health --json
26
+ orchestra task add --id DEMO-001 --title "Ship a governed README update" --owner developer --paths "README.md"
27
+ orchestra workflow run --task DEMO-001 --gates none
28
+ orchestra status
29
+ orchestra release candidate --dry-run --json
30
+ ```
31
+
32
+ For production delivery, follow with estimates, architecture sizing decisions,
33
+ human gates, evidence, QA reviews, and `orchestra release check --json`.
34
+
35
+ | Job | Commands |
36
+ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
37
+ | Install and verify | `orchestra version`, `orchestra upgrade --smoke --json` |
38
+ | Initialize workspace | `orchestra init`, `orchestra health --json`, `orchestra status` |
39
+ | Create and inspect work | `orchestra task add`, `orchestra task list`, `orchestra task show` |
40
+ | Run governed delivery | `orchestra workflow run`, `orchestra workflow runs` |
41
+ | Inspect workflow shape and playbooks | `orchestra workflow phase-plan --task <id>`, `orchestra workflow render --task <id> --phase <phase>` |
42
+ | Resolve workflow gates and clarifications | `orchestra decision add`, `orchestra workflow gate-approve`, `orchestra workflow clarify`, `orchestra workflow clarify-respond` |
43
+ | Record delivery proof | `orchestra evidence add`, `orchestra review` |
44
+ | Plan QA automation | `orchestra qa coverage --task <id>`, `orchestra playwright plan --task <id>` |
45
+ | Sync tracker state | `orchestra github sync --issue <number>`, `orchestra tracker sync --tracker <provider> --remote <id> --issue-file <file>` |
46
+ | Check release readiness | `orchestra release check --json`, `orchestra release candidate --dry-run --json` |
47
+
48
+ ## Run Command Guidance
49
+
50
+ `orchestra workflow run` is the governed delivery lifecycle. It creates phase
51
+ sub-tasks, handoffs, run state, and gates across PM, PO, Architect, Developer,
52
+ QA, and Release. Use it for product work, issue delivery, QA handoff, release
53
+ readiness, and dogfooding the end-to-end process.
54
+
55
+ `orchestra run` executes the task's local execution plan. It is useful for
56
+ lower-level plan execution and budget/fallback validation, but it does not
57
+ replace the autonomous lifecycle or its phase gates.
58
+
59
+ For the full workflow narrative, phase matrix, gate-versus-clarify decision
60
+ table, and playbook authoring guidance, see
61
+ [autonomous-workflow.md](autonomous-workflow.md).
30
62
 
31
63
  ## Advanced Commands
32
64
 
@@ -39,8 +71,20 @@ should be linked from onboarding, not mixed into first-run copy.
39
71
  - Runtime and skills: `orchestra runtime brief`,
40
72
  `orchestra runtime delegate-plan`, `orchestra skills plan`,
41
73
  `orchestra skills render`, `orchestra protocol render`.
74
+ - Extensions: `orchestra extensions list --json`,
75
+ `orchestra extensions validate --json`.
76
+ - Provider profiles: `orchestra model profile set`,
77
+ `orchestra model profile apply`, `orchestra model profile smoke`,
78
+ `orchestra model providers`.
79
+ - Generated-file operations: `orchestra refresh --check --json`,
80
+ `orchestra refresh --dry-run`, `orchestra refresh --force`,
81
+ `orchestra cursor canvas status --json`,
82
+ `orchestra cursor canvas sync --dry-run --json`.
42
83
  - Memory and source selection: `orchestra memory query`,
43
- `orchestra memory hook`, `orchestra sources list`, `orchestra lessons list`.
84
+ `orchestra memory hook`, `orchestra memory governance`,
85
+ `orchestra sources list`, `orchestra lessons list`,
86
+ `orchestra lessons archive`, `orchestra lessons redact`,
87
+ `orchestra lessons prune`.
44
88
  - Metrics and cost: `orchestra estimate`, `orchestra benchmark`,
45
89
  `orchestra burndown`, `orchestra usage`, `orchestra budget check`.
46
90
  - Governance policy: `orchestra policy evaluate` checks routine, elevated,
@@ -70,5 +114,7 @@ unless a specific workflow needs them.
70
114
  ## Documentation Rule
71
115
 
72
116
  Do not duplicate the full command manifest in README or the site. Show the core
73
- path, then link to `orchestra commands manifest --json` and
74
- [command-contracts.md](command-contracts.md) for automation consumers.
117
+ path, then link to `orchestra -h` for human onboarding,
118
+ `orchestra help commands` for the full CLI catalog, and
119
+ `orchestra commands manifest --json` plus [command-contracts.md](command-contracts.md)
120
+ for automation consumers.
@@ -31,6 +31,7 @@ orchestra estimate \
31
31
  --sizing s \
32
32
  --solo-days 1 \
33
33
  --ai-unguided-days 0.5 \
34
+ --ai-guided-days 0.25 \
34
35
  --confidence medium
35
36
  ```
36
37
 
@@ -0,0 +1,83 @@
1
+ # Extension Contracts
2
+
3
+ Open Orchestra discovers local extensions from:
4
+
5
+ ```text
6
+ .agent-workflow/extensions/<extension-id>/manifest.json
7
+ ```
8
+
9
+ The manifest is metadata only. Discovery and validation do not import or execute
10
+ extension code.
11
+
12
+ ## Manifest
13
+
14
+ ```json
15
+ {
16
+ "id": "acme-tracker",
17
+ "name": "Acme Tracker Adapter",
18
+ "version": "1.0.0",
19
+ "compatibility": { "orchestra": "^1.0.0" },
20
+ "extensionPoints": ["tracker-adapter"],
21
+ "entry": "adapter.js",
22
+ "capabilities": ["normalized-issue-sync"],
23
+ "riskAreas": ["network", "tracker-state"]
24
+ }
25
+ ```
26
+
27
+ Supported extension points for the 1.0 contract are:
28
+
29
+ - `skill`
30
+ - `tracker-adapter`
31
+ - `provider-adapter`
32
+ - `phase-playbook`
33
+ - `refresh-target`
34
+
35
+ `entry` must be a relative path inside the extension directory. Absolute paths
36
+ and traversal are rejected. Provider adapter extensions are currently
37
+ metadata-only until runtime provider loading is stabilized.
38
+
39
+ ## Commands
40
+
41
+ ```bash
42
+ orchestra extensions list --json
43
+ orchestra extensions validate --json
44
+ ```
45
+
46
+ ## Provider-Like Example
47
+
48
+ ```json
49
+ {
50
+ "id": "acme-models",
51
+ "name": "Acme Models Provider",
52
+ "version": "1.0.0",
53
+ "compatibility": { "orchestra": "^1.0.0" },
54
+ "extensionPoints": ["provider-adapter"],
55
+ "entry": "provider.js",
56
+ "capabilities": ["chat-completions", "json-mode"],
57
+ "riskAreas": ["secrets", "network"]
58
+ }
59
+ ```
60
+
61
+ ## Tracker-Like Example
62
+
63
+ ```json
64
+ {
65
+ "id": "acme-tracker",
66
+ "name": "Acme Tracker Adapter",
67
+ "version": "1.0.0",
68
+ "compatibility": { "orchestra": "^1.0.0" },
69
+ "extensionPoints": ["tracker-adapter"],
70
+ "entry": "tracker.js",
71
+ "capabilities": ["normalized-issue-sync"],
72
+ "riskAreas": ["network", "tracker-state"]
73
+ }
74
+ ```
75
+
76
+ ## Stability
77
+
78
+ Stable for 1.0.0: manifest shape, discovery path, extension point names, local
79
+ path safety validation, and JSON output from `extensions list` and
80
+ `extensions validate`.
81
+
82
+ Experimental: dynamic code loading, provider runtime registration, tracker live
83
+ transport execution, and generated-file refresh target execution.
@@ -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,7 +228,10 @@ 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.
188
235
  Set `SKIP_NETWORK_TESTS=1` in CI jobs that must avoid external network calls;
189
236
  package update checks and provider smoke tests honor it, while localhost E2E
190
237
  coverage remains available.
@@ -192,12 +239,41 @@ coverage remains available.
192
239
  Release go/no-go:
193
240
 
194
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.
195
246
  - Confirm GitHub Actions CI is green for the latest pushed HEAD.
196
247
  - Confirm installed-package dogfooding passes on `ubuntu-latest`,
197
248
  `macos-latest`, and `windows-latest`.
198
249
  - Confirm `Create release tag`, site publish, and npm publish workflows are
199
250
  successful for the intended release commit.
200
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
+
201
277
  Model routing, budget, telemetry, and release:
202
278
 
203
279
  ```bash
@@ -362,7 +438,11 @@ The VS Code Control Center scaffold is under `extensions/vscode-open-orchestra`.
362
438
  - `orchestra model set-role` configures provider/model routing per role without invoking real model APIs.
363
439
  - `orchestra model complete-fake` simulates provider fallback behavior without invoking real model APIs.
364
440
  - `orchestra model provenance` records model usage metadata in the append-only event log without storing raw prompts, raw responses, or secrets.
365
- - `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.
366
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.
367
447
  - Package identity is intentionally split: `@jterrats/open-orchestra` is the
368
448
  canonical npm package and `orchestra` is the installed CLI binary. Do not use
@@ -384,7 +464,7 @@ Quality signals collected automatically:
384
464
 
385
465
  ```bash
386
466
  # Declare baseline at story start (once per story)
387
- 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
388
468
 
389
469
  # Per-story benchmark after run completes
390
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,6 +126,7 @@ 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
@@ -94,6 +136,33 @@ instruction-file targets and nested execution adapters. Execution adapters
94
136
  include tool permission policy metadata so clients can distinguish
95
137
  runtime-managed, brief-only, read-only, and opt-in autonomous execution models.
96
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
+
97
166
  ## Invocation Planning
98
167
 
99
168
  Direct CLI execution is intentionally disabled. Orchestra can render a typed
@@ -110,3 +179,26 @@ executor is enabled:
110
179
  Every invocation plan reports `directExecutionEnabled: false` and
111
180
  `canExecute: false`; the contract is for policy review, UI display, and future
112
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.