@jterrats/open-orchestra 0.5.7 → 1.0.2

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 (260) 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 +23 -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/memory.js +18 -8
  78. package/dist/memory.js.map +1 -1
  79. package/dist/metrics-commands.js +47 -13
  80. package/dist/metrics-commands.js.map +1 -1
  81. package/dist/model-commands.d.ts +5 -0
  82. package/dist/model-commands.js +101 -3
  83. package/dist/model-commands.js.map +1 -1
  84. package/dist/model-providers.js +13 -1
  85. package/dist/model-providers.js.map +1 -1
  86. package/dist/package-update-check.d.ts +18 -0
  87. package/dist/package-update-check.js +20 -0
  88. package/dist/package-update-check.js.map +1 -1
  89. package/dist/phase-executor.d.ts +1 -0
  90. package/dist/phase-executor.js +118 -14
  91. package/dist/phase-executor.js.map +1 -1
  92. package/dist/phase-playbooks.d.ts +15 -0
  93. package/dist/phase-playbooks.js +82 -0
  94. package/dist/phase-playbooks.js.map +1 -1
  95. package/dist/planning-commands.d.ts +1 -0
  96. package/dist/planning-commands.js +24 -1
  97. package/dist/planning-commands.js.map +1 -1
  98. package/dist/project-detection.js +9 -7
  99. package/dist/project-detection.js.map +1 -1
  100. package/dist/prompt-registry-update.d.ts +2 -0
  101. package/dist/prompt-registry-update.js +25 -1
  102. package/dist/prompt-registry-update.js.map +1 -1
  103. package/dist/prompt-registry-validation.js +39 -2
  104. package/dist/prompt-registry-validation.js.map +1 -1
  105. package/dist/qa-commands.d.ts +2 -0
  106. package/dist/qa-commands.js +18 -0
  107. package/dist/qa-commands.js.map +1 -0
  108. package/dist/qa-coverage.d.ts +24 -0
  109. package/dist/qa-coverage.js +198 -0
  110. package/dist/qa-coverage.js.map +1 -0
  111. package/dist/qa-readiness.d.ts +5 -0
  112. package/dist/qa-readiness.js +26 -0
  113. package/dist/qa-readiness.js.map +1 -0
  114. package/dist/refresh-generated.d.ts +10 -1
  115. package/dist/refresh-generated.js +83 -6
  116. package/dist/refresh-generated.js.map +1 -1
  117. package/dist/release-candidate.d.ts +9 -1
  118. package/dist/release-candidate.js +52 -1
  119. package/dist/release-candidate.js.map +1 -1
  120. package/dist/release-commands.js +202 -12
  121. package/dist/release-commands.js.map +1 -1
  122. package/dist/release-readiness.d.ts +36 -1
  123. package/dist/release-readiness.js +217 -6
  124. package/dist/release-readiness.js.map +1 -1
  125. package/dist/runtime-bootstrap.js +1 -1
  126. package/dist/runtime-bootstrap.js.map +1 -1
  127. package/dist/runtime-commands.d.ts +2 -0
  128. package/dist/runtime-commands.js +77 -0
  129. package/dist/runtime-commands.js.map +1 -1
  130. package/dist/runtime-execution-renderer.d.ts +3 -2
  131. package/dist/runtime-execution-renderer.js +19 -1
  132. package/dist/runtime-execution-renderer.js.map +1 -1
  133. package/dist/runtime-execution.d.ts +2 -1
  134. package/dist/runtime-execution.js +71 -11
  135. package/dist/runtime-execution.js.map +1 -1
  136. package/dist/runtime-guardrails.d.ts +26 -0
  137. package/dist/runtime-guardrails.js +168 -0
  138. package/dist/runtime-guardrails.js.map +1 -0
  139. package/dist/setup-agents-import.js +5 -3
  140. package/dist/setup-agents-import.js.map +1 -1
  141. package/dist/skills-catalog.js +63 -0
  142. package/dist/skills-catalog.js.map +1 -1
  143. package/dist/skills-commands.d.ts +4 -0
  144. package/dist/skills-commands.js +55 -2
  145. package/dist/skills-commands.js.map +1 -1
  146. package/dist/skills-memory.d.ts +36 -2
  147. package/dist/skills-memory.js +165 -6
  148. package/dist/skills-memory.js.map +1 -1
  149. package/dist/skills-planning.js +2 -4
  150. package/dist/skills-planning.js.map +1 -1
  151. package/dist/skills-render.js +2 -4
  152. package/dist/skills-render.js.map +1 -1
  153. package/dist/skills.d.ts +1 -1
  154. package/dist/skills.js +1 -1
  155. package/dist/skills.js.map +1 -1
  156. package/dist/sprint-commands.js +2 -1
  157. package/dist/sprint-commands.js.map +1 -1
  158. package/dist/subagent-protocol.js +3 -5
  159. package/dist/subagent-protocol.js.map +1 -1
  160. package/dist/support-commands.d.ts +2 -0
  161. package/dist/support-commands.js +18 -0
  162. package/dist/support-commands.js.map +1 -0
  163. package/dist/support-diagnostics.d.ts +49 -0
  164. package/dist/support-diagnostics.js +86 -0
  165. package/dist/support-diagnostics.js.map +1 -0
  166. package/dist/task-graph-commands.js +5 -3
  167. package/dist/task-graph-commands.js.map +1 -1
  168. package/dist/telemetry-redaction.js +8 -1
  169. package/dist/telemetry-redaction.js.map +1 -1
  170. package/dist/tool-commands.d.ts +3 -0
  171. package/dist/tool-commands.js +62 -0
  172. package/dist/tool-commands.js.map +1 -1
  173. package/dist/tracker-adapters.d.ts +71 -0
  174. package/dist/tracker-adapters.js +186 -0
  175. package/dist/tracker-adapters.js.map +1 -0
  176. package/dist/tracker-commands.d.ts +2 -0
  177. package/dist/tracker-commands.js +119 -0
  178. package/dist/tracker-commands.js.map +1 -0
  179. package/dist/types/metrics.d.ts +24 -0
  180. package/dist/types/model-config.d.ts +39 -0
  181. package/dist/types/runtime.d.ts +56 -0
  182. package/dist/types/skills.d.ts +2 -0
  183. package/dist/types/tasks.d.ts +6 -0
  184. package/dist/types/workflow-run.d.ts +17 -0
  185. package/dist/types.d.ts +4 -4
  186. package/dist/types.js.map +1 -1
  187. package/dist/upgrade-commands.js +13 -4
  188. package/dist/upgrade-commands.js.map +1 -1
  189. package/dist/validation.js +2 -2
  190. package/dist/validation.js.map +1 -1
  191. package/dist/visual-validation.d.ts +81 -0
  192. package/dist/visual-validation.js +290 -0
  193. package/dist/visual-validation.js.map +1 -0
  194. package/dist/web-action-security.d.ts +11 -0
  195. package/dist/web-action-security.js +45 -0
  196. package/dist/web-action-security.js.map +1 -0
  197. package/dist/web-api-read-routes.js +101 -1
  198. package/dist/web-api-read-routes.js.map +1 -1
  199. package/dist/web-api.js +507 -5
  200. package/dist/web-api.js.map +1 -1
  201. package/dist/web-artifacts.d.ts +55 -0
  202. package/dist/web-artifacts.js +222 -0
  203. package/dist/web-artifacts.js.map +1 -0
  204. package/dist/web-console/assets/index-BNESIVvk.js +11 -0
  205. package/dist/web-console/assets/index-jxCY5eEc.css +1 -0
  206. package/dist/web-console/index.html +13 -0
  207. package/dist/web-console.js +9 -3
  208. package/dist/web-console.js.map +1 -1
  209. package/dist/web-recovery.d.ts +30 -0
  210. package/dist/web-recovery.js +163 -0
  211. package/dist/web-recovery.js.map +1 -0
  212. package/dist/web-workflow-progress.d.ts +41 -0
  213. package/dist/web-workflow-progress.js +114 -0
  214. package/dist/web-workflow-progress.js.map +1 -0
  215. package/dist/workflow-approval-service.d.ts +2 -1
  216. package/dist/workflow-approval-service.js +72 -0
  217. package/dist/workflow-approval-service.js.map +1 -1
  218. package/dist/workflow-evidence-service.js +8 -1
  219. package/dist/workflow-evidence-service.js.map +1 -1
  220. package/dist/workflow-gates.d.ts +2 -0
  221. package/dist/workflow-gates.js +221 -0
  222. package/dist/workflow-gates.js.map +1 -1
  223. package/dist/workflow-run-commands.js +13 -1
  224. package/dist/workflow-run-commands.js.map +1 -1
  225. package/dist/workflow-services.d.ts +16 -12
  226. package/dist/workflow-services.js +313 -253
  227. package/dist/workflow-services.js.map +1 -1
  228. package/dist/workflow-task-service.d.ts +11 -0
  229. package/dist/workflow-task-service.js +242 -0
  230. package/dist/workflow-task-service.js.map +1 -0
  231. package/dist/workspace-validator.js +109 -3
  232. package/dist/workspace-validator.js.map +1 -1
  233. package/dist/workspace.js +8 -2
  234. package/dist/workspace.js.map +1 -1
  235. package/docs/adoption-guide.md +147 -0
  236. package/docs/autonomous-workflow.md +118 -27
  237. package/docs/benchmark.md +15 -7
  238. package/docs/command-contracts.md +18 -1
  239. package/docs/core-command-surface.md +59 -13
  240. package/docs/end-to-end-demo.md +1 -0
  241. package/docs/extension-contracts.md +83 -0
  242. package/docs/orchestra-mvp.md +83 -3
  243. package/docs/persona-workflows.md +32 -0
  244. package/docs/release-test-matrix.md +42 -0
  245. package/docs/runtime-adapters.md +92 -0
  246. package/docs/runtime-llm-flow.md +13 -0
  247. package/docs/setup-agents-applicability-review.md +173 -0
  248. package/docs/skill-loading-strategy.md +1 -0
  249. package/docs/source-of-truth-and-agent-learning.md +14 -0
  250. package/docs/traceability-flow.md +16 -1
  251. package/docs/tracker-adapter-contract.md +10 -1
  252. package/docs/web-console-qa.md +35 -0
  253. package/package.json +12 -6
  254. package/rules/development-engineering.mdc +68 -0
  255. package/rules/devops-tooling.mdc +1 -0
  256. package/rules/dry-clean-code.mdc +1 -0
  257. package/rules/performance-reliability.mdc +1 -0
  258. package/rules/testing-discipline.mdc +4 -1
  259. package/skills/collection-standards/SKILL.md +63 -0
  260. package/skills/collection-standards/manifest.json +69 -0
@@ -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.
@@ -58,6 +58,7 @@ Skill manifests should be able to declare `sourceGroups` so the orchestrator can
58
58
  - `prompt-registry`: read and update `.generated-prompts/` registers for substantial AI-generated artifacts.
59
59
  - `diagram-export`: generate, validate, and export architecture or workflow diagrams.
60
60
  - `static-analysis`: run local quality, typing, SAST, dependency, and secret checks.
61
+ - `collection-standards`: centralize repeated collections and keep collection processing linear or explicitly bounded across product code, QA automation, and DevOps scripts.
61
62
  - `pr-review`: produce review findings, PR summary, risks, rollout notes, and missing-test gaps.
62
63
  - `playwright-evidence`: plan browser automation and attach screenshots, traces, videos, and reports.
63
64
  - `backlog-sync`: keep GitHub issues, local stories, and workflow tasks aligned.
@@ -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.
@@ -37,17 +37,32 @@ orchestra evidence add --task STORY-1 --role developer --type command --summary
37
37
  ## QA Verification
38
38
 
39
39
  QA verifies acceptance criteria, regression areas, edge cases, and data setup.
40
+ Each acceptance criterion must map to evidence that proves an observable
41
+ outcome. For CLI work, assert exit code, stdout/stderr, generated files,
42
+ workflow events, or final state. For web work, assert visible user-facing state.
43
+ For API, data, DB, storage, or integration work, assert response contracts,
44
+ persisted state, side effects, sandbox/mock/contract/webhook/event/log outcomes,
45
+ or record a deferred validation with owner and rationale.
40
46
  Browser automation should use Playwright evidence when the behavior is
41
47
  user-facing:
42
48
 
43
49
  ```bash
44
50
  orchestra playwright plan --task STORY-1
51
+ orchestra qa coverage --task STORY-1 --json
45
52
  orchestra playwright evidence --task STORY-1 --kind trace --path test-results/story-1.zip --summary "acceptance flow trace"
46
53
  orchestra review --task STORY-1 --role qa --result approve --findings "..." --recommendation "..."
47
54
  ```
48
55
 
49
56
  Developer-to-QA handoff should include touched files, commands, known gaps, and
50
- recommended Playwright coverage.
57
+ recommended Playwright, CLI, shell, or API coverage. `qa coverage` maps each
58
+ acceptance criterion to `covered`, `planned`, `skipped`, or `gap` using task
59
+ paths, project scripts, and existing evidence; release readiness surfaces
60
+ unresolved QA automation gaps before promotion.
61
+
62
+ Evidence summaries should name the acceptance criterion they cover or say
63
+ "covers all acceptance criteria" when a single artifact proves the full story.
64
+ Smoke and regression checks that do not map to a criterion are still useful, but
65
+ they do not count as acceptance coverage.
51
66
 
52
67
  ## Advisory Conversion
53
68
 
@@ -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.
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@jterrats/open-orchestra",
3
- "version": "0.5.7",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "workspaces": [
6
- "site"
6
+ "site",
7
+ "web-console"
7
8
  ],
8
9
  "bin": {
9
10
  "orchestra": "bin/orchestra.js"
@@ -14,14 +15,19 @@
14
15
  "test": "npm run build && node --test test/**/*.js extensions/**/*.test.cjs",
15
16
  "test:e2e": "npm run build && npm run site:build && playwright test",
16
17
  "test:e2e:init": "node --test e2e/init-onboarding.test.js",
17
- "lint": "eslint . && prettier --check \"{bin,e2e,scripts,test,src}/**/*.js\" \"site/src/**/*.{css,js,jsx}\" \"site/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
18
- "format": "prettier --write \"{bin,e2e,scripts,test,src}/**/*.js\" \"site/src/**/*.{css,js,jsx}\" \"site/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
18
+ "lint": "eslint . && prettier --check \"{bin,e2e,scripts,test,src}/**/*.js\" \"{site,web-console}/src/**/*.{css,js,jsx}\" \"{site,web-console}/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
19
+ "format": "prettier --write \"{bin,e2e,scripts,test,src}/**/*.js\" \"{site,web-console}/src/**/*.{css,js,jsx}\" \"{site,web-console}/*.{html,js,json}\" \"extensions/**/*.{cjs,json,md}\" \"src/**/*.ts\" \"*.{js,json}\"",
19
20
  "secret-scan": "node scripts/secret-scan.js",
21
+ "security:audit": "node scripts/security-audit.js",
20
22
  "validate:workflow": "node scripts/validate-workflow.js",
21
- "precommit": "npm run lint && npm run typecheck && npm run secret-scan && npm test && npm run validate:workflow",
23
+ "release:matrix": "node scripts/release-test-matrix.js",
24
+ "performance:bench": "npm run build && node scripts/performance-benchmark.js",
25
+ "precommit": "npm run lint && npm run typecheck && npm run secret-scan && npm run security:audit && npm test && npm run validate:workflow",
22
26
  "prepack": "npm run build",
23
27
  "hooks:install": "git config core.hooksPath .githooks",
24
- "build:web": "esbuild src/web-console-client.js --bundle --format=esm --platform=browser --target=es2022 --outfile=dist/assets/web-console.js",
28
+ "build:web": "npm run build:web:legacy && npm run build:web:react",
29
+ "build:web:legacy": "esbuild src/web-console-client.js --bundle --format=esm --platform=browser --target=es2022 --outfile=dist/assets/web-console.js",
30
+ "build:web:react": "npm --workspace @jterrats/open-orchestra-web-console run build",
25
31
  "site:build": "npm --workspace @jterrats/open-orchestra-site run build",
26
32
  "site:dev": "npm --workspace @jterrats/open-orchestra-site run dev -- --host 127.0.0.1"
27
33
  },
@@ -0,0 +1,68 @@
1
+ ---
2
+ description: Stack-agnostic developer implementation standards across common application stacks
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Development Engineering
7
+
8
+ Developer work must start from the existing project shape, preserve the local architecture, and leave verifiable evidence that the changed production artifact works.
9
+
10
+ ## Project Context First
11
+ - Read the project manifest, build files, framework config, and existing module boundaries before generating code.
12
+ - Infer naming, layering, dependency direction, error style, logging style, and test conventions from nearby code.
13
+ - Do not introduce a new framework pattern, repository style, package layout, or dependency injection approach without a recorded architecture decision.
14
+ - Keep framework-specific adapters at the boundary. Domain and service code should remain portable where the product permits it.
15
+
16
+ ## Entry Points And Layers
17
+ - Controllers, routes, commands, triggers, handlers, jobs, and webhooks must stay thin.
18
+ - Delegate business rules to services or domain modules, and delegate I/O to repositories, clients, gateways, or data-access modules.
19
+ - Keep request parsing, authorization, validation, orchestration, and persistence responsibilities separate enough that each can be tested directly.
20
+ - Public APIs and CLI commands must define request, response, errors, pagination, compatibility, and idempotency before implementation.
21
+ - Developer-owned code, scripts, generated options, and automation helpers that repeat collection values or process collections at scale must load the `collection-standards` skill.
22
+
23
+ ## Bulk And Batch Safety
24
+ - Implement for 1..N records, requests, files, events, or messages. Do not special-case only the happy-path singleton.
25
+ - Avoid unbounded data reads, writes, queries, or network calls inside loops. Prefer set-based reads, bulk writes, batching, pagination, or bounded concurrency.
26
+ - When collection-processing complexity matters, load `collection-standards` for O(n), map/index, and bounded-complexity guidance.
27
+ - Make transaction boundaries explicit and keep them as small as correctness allows.
28
+ - Add regression coverage for multi-item input when the code can receive lists, streams, queues, or batched requests.
29
+
30
+ ## Data Access
31
+ - Reuse the existing data-access pattern before adding a new repository, selector, ORM helper, query builder, or gateway abstraction.
32
+ - Model query shape from real access patterns, including filters, sort order, pagination, indexes, locking, and authorization scope.
33
+ - Keep data ownership explicit. Unrelated modules should not write directly to another bounded context without a service, event, or contract.
34
+ - Validate migrations, generated artifacts, or deployed metadata before relying on tests that exercise them.
35
+
36
+ ## Errors And Logging
37
+ - Scan for the existing exception and logging framework before adding try/catch blocks or new error types.
38
+ - Convert operational errors to user-safe messages at the boundary. Propagate or fail fast on programmer errors.
39
+ - Include useful context in logs: operation name, stable IDs, duration, retry count, and external system name when relevant.
40
+ - Never swallow errors with empty catches or generic success fallbacks.
41
+
42
+ ## External Integrations
43
+ - Use configured clients, named endpoints, and typed configuration. Never hardcode endpoints, tokens, credentials, shell commands, or timeouts.
44
+ - Validate URLs before outbound calls, validate response status before parsing, and handle non-2xx responses explicitly.
45
+ - Define timeouts, retries, backoff, idempotency keys, circuit breaking, and observability for integrations with side effects or production impact.
46
+ - Keep provider-specific request and response mapping in adapters so product logic does not depend on one vendor shape.
47
+
48
+ ## Async Workflows
49
+ - Choose queues, jobs, events, schedulers, or workflow engines based on ordering, retry, observability, latency, and partial-failure semantics.
50
+ - Async payloads should carry stable IDs and versioned schemas, not large mutable snapshots unless snapshots are required for correctness.
51
+ - Define retry policy, dead-letter handling, compensation or forward-fix behavior, and user-visible recovery for critical work.
52
+ - Tests for async code must flush or drain queued work using the framework-supported pattern.
53
+
54
+ ## Testing
55
+ - Use centralized builders, factories, fixtures, or test data helpers instead of copy-pasted setup blocks.
56
+ - Authorization-sensitive logic needs tests under representative user, role, permission, tenant, or policy contexts.
57
+ - Add tests for bulk input, empty input, partial failure, retries, authorization denial, and malformed external responses when applicable.
58
+ - Run static analysis before handoff and include exact commands, results, known gaps, and suggested QA coverage in the handoff.
59
+
60
+ ## Stack Examples
61
+ - Java/Spring: keep controllers thin, place rules in services, use repositories for data access, define `@Transactional` boundaries deliberately, and use Testcontainers or slice tests for persistence contracts.
62
+ - .NET: keep controllers or minimal APIs thin, place rules in application services, pass `CancellationToken`, centralize typed options, and test EF Core query behavior with realistic providers when query translation matters.
63
+ - TypeScript/Node: route or CLI handlers should call services, services should call typed repositories or clients, config should be validated at startup, and integration tests should cover pagination, async drains, and external status handling.
64
+ - Python: endpoint or command functions should call services, services should call repositories or clients, use pytest fixtures/builders for setup, validate settings at startup, and test migrations or ORM queries when schema behavior changes.
65
+
66
+ ## Handoff
67
+ - Handoffs must state the active project conventions, data-access strategy, test strategy, changed artifacts, validation commands, known constraints, and remaining risks.
68
+ - When a task touches security, data, async workflows, external integrations, or infrastructure, include the related review outcome before release approval.
@@ -29,6 +29,7 @@ DevOps decisions must cover deployability, scalability, downtime strategy, obser
29
29
  - Do not approve infrastructure or release changes without deployment, rollback, monitoring, and ownership details.
30
30
  - Prefer managed services when they reduce operational risk without creating unacceptable lock-in or cost exposure.
31
31
  - Record tool choices and major operational trade-offs in an ADR when they affect long-term operations.
32
+ - CI/CD, IaC, runbooks, and operational scripts that repeat command matrices, provider lists, environment maps, or resource collections must load the `collection-standards` skill.
32
33
 
33
34
  ## Scalability
34
35
  - Define expected traffic, data volume, concurrency, growth assumptions, and bottlenecks.
@@ -7,6 +7,7 @@ alwaysApply: true
7
7
 
8
8
  ## Don't Repeat Yourself
9
9
  - **Single Source of Truth for data.** If a constant, type, or config exists in one place, every consumer must import or derive from it — never copy-paste.
10
+ - When work touches repeated collections, option sets, fixtures, matrices, or collection-processing complexity, load the `collection-standards` skill instead of embedding detailed collection rules here.
10
11
  - When two blocks share >5 lines of identical structure, extract a reusable function.
11
12
  - Cross-package type sharing: define once, import at build time, or add a sync test. Never maintain parallel copies.
12
13
 
@@ -16,6 +16,7 @@ Performance and reliability must be designed, measured, and protected. Do not op
16
16
  ## Hot Paths
17
17
  - Avoid N+1 queries, unbounded loops with I/O, repeated serialization, and large synchronous work on request paths.
18
18
  - Paginate or stream large datasets. Do not load unbounded result sets into memory.
19
+ - Load the `collection-standards` skill when implementation, QA automation, or DevOps scripting processes repeated collections, joins lists, scans logs, builds command matrices, or must prove O(n) or bounded complexity.
19
20
  - Keep expensive work outside user-facing request paths through queues, jobs, or precomputation.
20
21
  - Measure before and after performance changes and report the evidence.
21
22
 
@@ -18,6 +18,7 @@ alwaysApply: true
18
18
  ## Test Structure
19
19
  - **Arrange → Act → Assert.** Separate setup, execution, and verification with blank lines.
20
20
  - Use factory functions or builders for test data — never copy-paste fixtures across test files.
21
+ - QA automation, E2E suites, contract tests, and test scripts that repeat fixture collections, selectors, expected outputs, or command matrices must load the `collection-standards` skill.
21
22
  - Tests must be deterministic. No reliance on system clock, network, or random values without seeding.
22
23
 
23
24
  ## Sync Tests
@@ -36,7 +37,9 @@ alwaysApply: true
36
37
 
37
38
  ## QA Handoff
38
39
  - Developer must provide QA with test commands run, pass/fail results, covered scenarios, and known gaps.
39
- - QA must produce a test plan before release approval.
40
+ - QA must produce a test plan before release approval and map every acceptance criterion to automated, manual, contract/mock, or deferred evidence.
41
+ - QA evidence must validate observable outcomes, not only execution. CLI checks assert exit code, stdout/stderr, files, events, or final state; browser checks assert visible user-facing state; API checks assert response contract and side effects; integration checks assert sandbox/mock/contract/webhook/event/log outcomes or defer with owner and rationale.
42
+ - Evidence summaries or metadata must name the covered acceptance criterion or explicitly state that all acceptance criteria are covered. Smoke and regression checks are useful but do not count as acceptance coverage unless they map to an acceptance criterion.
40
43
  - QA and Developer must decide which manual checks should be automated, preferring Playwright for browser flows.
41
44
  - User-facing QA plans must include responsive, accessibility, copy, tooltip, loading, empty, error, success, and recovery-state checks.
42
45
  - API, data, async, performance, and config changes must include targeted regression checks for contract, migration, idempotency, latency, and environment behavior when applicable.
@@ -0,0 +1,63 @@
1
+ # Collection Standards
2
+
3
+ Use this skill when a task touches repeated collections, option sets, fixtures,
4
+ command matrices, selectors, validators, or collection-processing complexity.
5
+ It applies to product code, QA automation, scripts, CI/CD, IaC helpers,
6
+ operational tooling, and generated code.
7
+
8
+ ## When To Load
9
+
10
+ - Developer, QA/SDET, DevOps, Platform, SRE, or Performance work writes code,
11
+ scripts, tests, generated options, or automation helpers.
12
+ - The task mentions hardcoded values, arrays, maps, key/value pairs, options,
13
+ fixtures, selectors, command cases, provider lists, CI matrices, roles,
14
+ statuses, validators, bulk/batch processing, O(n), N+1, nested loops, or
15
+ complexity.
16
+ - A review finds duplicated collections or repeated scans across files.
17
+
18
+ ## Single Source Of Truth
19
+
20
+ - If the same list, map, enum-like set, key/value collection, option list,
21
+ validator set, selector set, fixture set, provider list, role/status list,
22
+ script argument collection, or CI matrix is needed in more than one place,
23
+ define one typed source of truth.
24
+ - Prefer the smallest project-native shape: exported constant, typed union,
25
+ registry, builder, factory, fixture helper, page object, or config-derived
26
+ adapter.
27
+ - Derive all arrays, lookup maps, dropdown options, validators, test data,
28
+ command arguments, docs examples, and automation config from that source.
29
+ - Do not maintain parallel copies in product code, tests, QA scripts, DevOps
30
+ scripts, generated docs, or UI controls. If duplication is unavoidable across
31
+ packages, add a sync test.
32
+
33
+ ## Collection Complexity
34
+
35
+ - Default to O(n) or explicitly bounded collection processing for normal code,
36
+ CLI commands, QA automation, CI scripts, and operational tools.
37
+ - Avoid nested scans, repeated full-list filters, N+1 calls, unbounded log
38
+ scans, and synchronous work over large collections.
39
+ - For joins or repeated lookups, build a `Map`, dictionary, index, page object,
40
+ or normalized structure once, then use O(1) lookups.
41
+ - Paginate, stream, batch, or bound large data sources. Do not load unbounded
42
+ result sets into memory.
43
+ - If O(n^2) or another higher-complexity approach is intentional, document the
44
+ input bound or measured trade-off and attach representative multi-item
45
+ evidence.
46
+
47
+ ## Review Checklist
48
+
49
+ - What collection is authoritative?
50
+ - Which consumers derive from it?
51
+ - Are tests, scripts, UI controls, validators, and docs using the same source?
52
+ - Are joins/lookups linear or bounded?
53
+ - Is there evidence with more than one item, including empty and multi-item
54
+ cases when the workflow supports collections?
55
+
56
+ ## Evidence
57
+
58
+ - `file`: changed source-of-truth module, registry, builder, fixture helper, or
59
+ page object.
60
+ - `command`: focused test, E2E, script, lint, or build proving the derived
61
+ consumers work.
62
+ - `report`: reviewer note or benchmark when complexity is intentionally higher
63
+ than O(n).
@@ -0,0 +1,69 @@
1
+ {
2
+ "id": "collection-standards",
3
+ "name": "Collection Standards",
4
+ "summary": "Centralize repeated collections and keep collection processing linear or explicitly bounded across product code, QA automation, and DevOps scripts.",
5
+ "triggers": [
6
+ "collection",
7
+ "collections",
8
+ "hardcoded",
9
+ "array",
10
+ "arrays",
11
+ "map",
12
+ "maps",
13
+ "key/value",
14
+ "option",
15
+ "options",
16
+ "fixture",
17
+ "fixtures",
18
+ "matrix",
19
+ "matrices",
20
+ "selector",
21
+ "selectors",
22
+ "o(n)",
23
+ "o(n2)",
24
+ "o(n^2)",
25
+ "complexity",
26
+ "nested loop",
27
+ "nested loops",
28
+ "n+1",
29
+ "bulk",
30
+ "batch"
31
+ ],
32
+ "roles": [
33
+ "developer",
34
+ "tech_lead",
35
+ "frontend_specialist",
36
+ "backend_specialist",
37
+ "mobile_specialist",
38
+ "qa",
39
+ "sdet",
40
+ "devops",
41
+ "platform_engineer",
42
+ "sre",
43
+ "performance_engineer"
44
+ ],
45
+ "capabilities": [
46
+ "maintainability",
47
+ "performance-safety",
48
+ "automation-quality"
49
+ ],
50
+ "riskAreas": [
51
+ "maintainability",
52
+ "performance",
53
+ "release",
54
+ "devops",
55
+ "sre"
56
+ ],
57
+ "sourceGroups": [
58
+ "codebase",
59
+ "quality-security",
60
+ "agent-memory"
61
+ ],
62
+ "evidence": [
63
+ "file",
64
+ "command",
65
+ "report"
66
+ ],
67
+ "loadBudget": "small",
68
+ "entry": "skills/collection-standards/SKILL.md"
69
+ }