@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
@@ -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.
@@ -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.
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.1",
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,66 @@
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
+
22
+ ## Bulk And Batch Safety
23
+ - Implement for 1..N records, requests, files, events, or messages. Do not special-case only the happy-path singleton.
24
+ - Avoid unbounded data reads, writes, queries, or network calls inside loops. Prefer set-based reads, bulk writes, batching, pagination, or bounded concurrency.
25
+ - Make transaction boundaries explicit and keep them as small as correctness allows.
26
+ - Add regression coverage for multi-item input when the code can receive lists, streams, queues, or batched requests.
27
+
28
+ ## Data Access
29
+ - Reuse the existing data-access pattern before adding a new repository, selector, ORM helper, query builder, or gateway abstraction.
30
+ - Model query shape from real access patterns, including filters, sort order, pagination, indexes, locking, and authorization scope.
31
+ - Keep data ownership explicit. Unrelated modules should not write directly to another bounded context without a service, event, or contract.
32
+ - Validate migrations, generated artifacts, or deployed metadata before relying on tests that exercise them.
33
+
34
+ ## Errors And Logging
35
+ - Scan for the existing exception and logging framework before adding try/catch blocks or new error types.
36
+ - Convert operational errors to user-safe messages at the boundary. Propagate or fail fast on programmer errors.
37
+ - Include useful context in logs: operation name, stable IDs, duration, retry count, and external system name when relevant.
38
+ - Never swallow errors with empty catches or generic success fallbacks.
39
+
40
+ ## External Integrations
41
+ - Use configured clients, named endpoints, and typed configuration. Never hardcode endpoints, tokens, credentials, shell commands, or timeouts.
42
+ - Validate URLs before outbound calls, validate response status before parsing, and handle non-2xx responses explicitly.
43
+ - Define timeouts, retries, backoff, idempotency keys, circuit breaking, and observability for integrations with side effects or production impact.
44
+ - Keep provider-specific request and response mapping in adapters so product logic does not depend on one vendor shape.
45
+
46
+ ## Async Workflows
47
+ - Choose queues, jobs, events, schedulers, or workflow engines based on ordering, retry, observability, latency, and partial-failure semantics.
48
+ - Async payloads should carry stable IDs and versioned schemas, not large mutable snapshots unless snapshots are required for correctness.
49
+ - Define retry policy, dead-letter handling, compensation or forward-fix behavior, and user-visible recovery for critical work.
50
+ - Tests for async code must flush or drain queued work using the framework-supported pattern.
51
+
52
+ ## Testing
53
+ - Use centralized builders, factories, fixtures, or test data helpers instead of copy-pasted setup blocks.
54
+ - Authorization-sensitive logic needs tests under representative user, role, permission, tenant, or policy contexts.
55
+ - Add tests for bulk input, empty input, partial failure, retries, authorization denial, and malformed external responses when applicable.
56
+ - Run static analysis before handoff and include exact commands, results, known gaps, and suggested QA coverage in the handoff.
57
+
58
+ ## Stack Examples
59
+ - 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.
60
+ - .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.
61
+ - 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.
62
+ - 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.
63
+
64
+ ## Handoff
65
+ - Handoffs must state the active project conventions, data-access strategy, test strategy, changed artifacts, validation commands, known constraints, and remaining risks.
66
+ - When a task touches security, data, async workflows, external integrations, or infrastructure, include the related review outcome before release approval.