@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.
- package/AGENTS.md +9 -8
- package/CLAUDE.md +13 -11
- package/README.md +78 -11
- package/dist/assets/web-console.js +169 -32
- package/dist/automation-evidence.d.ts +23 -0
- package/dist/automation-evidence.js +97 -0
- package/dist/automation-evidence.js.map +1 -0
- package/dist/autonomous-run-store.js +3 -3
- package/dist/autonomous-run-store.js.map +1 -1
- package/dist/benchmark.d.ts +4 -1
- package/dist/benchmark.js +93 -4
- package/dist/benchmark.js.map +1 -1
- package/dist/cli.js +73 -2
- package/dist/cli.js.map +1 -1
- package/dist/collaboration-flows.js +3 -5
- package/dist/collaboration-flows.js.map +1 -1
- package/dist/collection-utils.d.ts +3 -0
- package/dist/collection-utils.js +10 -0
- package/dist/collection-utils.js.map +1 -0
- package/dist/command-manifest.d.ts +12 -1
- package/dist/command-manifest.js +213 -10
- package/dist/command-manifest.js.map +1 -1
- package/dist/commands.d.ts +10 -5
- package/dist/commands.js +16 -6
- package/dist/commands.js.map +1 -1
- package/dist/config-migrations.d.ts +24 -0
- package/dist/config-migrations.js +102 -0
- package/dist/config-migrations.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +22 -0
- package/dist/constants.js.map +1 -1
- package/dist/dashboard-commands.d.ts +2 -0
- package/dist/dashboard-commands.js +14 -0
- package/dist/dashboard-commands.js.map +1 -0
- package/dist/defaults.d.ts +13 -0
- package/dist/defaults.js +13 -0
- package/dist/defaults.js.map +1 -1
- package/dist/delegation-decision.js +23 -8
- package/dist/delegation-decision.js.map +1 -1
- package/dist/delivery-commands.js +5 -0
- package/dist/delivery-commands.js.map +1 -1
- package/dist/delivery-dashboard-charts.d.ts +4 -0
- package/dist/delivery-dashboard-charts.js +156 -0
- package/dist/delivery-dashboard-charts.js.map +1 -0
- package/dist/delivery-dashboard-html.d.ts +2 -0
- package/dist/delivery-dashboard-html.js +115 -0
- package/dist/delivery-dashboard-html.js.map +1 -0
- package/dist/delivery-dashboard-types.d.ts +78 -0
- package/dist/delivery-dashboard-types.js +2 -0
- package/dist/delivery-dashboard-types.js.map +1 -0
- package/dist/delivery-dashboard.d.ts +8 -0
- package/dist/delivery-dashboard.js +124 -0
- package/dist/delivery-dashboard.js.map +1 -0
- package/dist/effort-classification.d.ts +7 -0
- package/dist/effort-classification.js +72 -0
- package/dist/effort-classification.js.map +1 -0
- package/dist/extension-commands.d.ts +3 -0
- package/dist/extension-commands.js +40 -0
- package/dist/extension-commands.js.map +1 -0
- package/dist/extensions.d.ts +22 -0
- package/dist/extensions.js +126 -0
- package/dist/extensions.js.map +1 -0
- package/dist/github.d.ts +2 -0
- package/dist/github.js +15 -3
- package/dist/github.js.map +1 -1
- package/dist/health-checks.js +51 -0
- package/dist/health-checks.js.map +1 -1
- package/dist/lucid-story-map.d.ts +73 -0
- package/dist/lucid-story-map.js +112 -0
- package/dist/lucid-story-map.js.map +1 -0
- package/dist/mcp-integrations.d.ts +19 -0
- package/dist/mcp-integrations.js +58 -0
- package/dist/mcp-integrations.js.map +1 -0
- package/dist/mcp-tool-adapter.d.ts +21 -0
- package/dist/mcp-tool-adapter.js +56 -0
- package/dist/mcp-tool-adapter.js.map +1 -0
- package/dist/metrics-commands.js +47 -13
- package/dist/metrics-commands.js.map +1 -1
- package/dist/model-commands.d.ts +5 -0
- package/dist/model-commands.js +95 -1
- package/dist/model-commands.js.map +1 -1
- package/dist/model-providers.js +13 -1
- package/dist/model-providers.js.map +1 -1
- package/dist/package-update-check.d.ts +18 -0
- package/dist/package-update-check.js +20 -0
- package/dist/package-update-check.js.map +1 -1
- package/dist/phase-executor.d.ts +1 -0
- package/dist/phase-executor.js +115 -14
- package/dist/phase-executor.js.map +1 -1
- package/dist/phase-playbooks.d.ts +15 -0
- package/dist/phase-playbooks.js +82 -0
- package/dist/phase-playbooks.js.map +1 -1
- package/dist/planning-commands.d.ts +1 -0
- package/dist/planning-commands.js +24 -1
- package/dist/planning-commands.js.map +1 -1
- package/dist/project-detection.js +9 -7
- package/dist/project-detection.js.map +1 -1
- package/dist/prompt-registry-update.d.ts +2 -0
- package/dist/prompt-registry-update.js +5 -1
- package/dist/prompt-registry-update.js.map +1 -1
- package/dist/prompt-registry-validation.js +39 -2
- package/dist/prompt-registry-validation.js.map +1 -1
- package/dist/qa-commands.d.ts +2 -0
- package/dist/qa-commands.js +18 -0
- package/dist/qa-commands.js.map +1 -0
- package/dist/qa-coverage.d.ts +24 -0
- package/dist/qa-coverage.js +189 -0
- package/dist/qa-coverage.js.map +1 -0
- package/dist/qa-readiness.d.ts +5 -0
- package/dist/qa-readiness.js +26 -0
- package/dist/qa-readiness.js.map +1 -0
- package/dist/refresh-generated.d.ts +10 -1
- package/dist/refresh-generated.js +83 -6
- package/dist/refresh-generated.js.map +1 -1
- package/dist/release-candidate.d.ts +9 -1
- package/dist/release-candidate.js +52 -1
- package/dist/release-candidate.js.map +1 -1
- package/dist/release-commands.js +161 -8
- package/dist/release-commands.js.map +1 -1
- package/dist/release-readiness.d.ts +33 -0
- package/dist/release-readiness.js +187 -3
- package/dist/release-readiness.js.map +1 -1
- package/dist/runtime-bootstrap.js +1 -1
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/runtime-commands.d.ts +2 -0
- package/dist/runtime-commands.js +77 -0
- package/dist/runtime-commands.js.map +1 -1
- package/dist/runtime-execution-renderer.d.ts +3 -2
- package/dist/runtime-execution-renderer.js +19 -1
- package/dist/runtime-execution-renderer.js.map +1 -1
- package/dist/runtime-execution.d.ts +2 -1
- package/dist/runtime-execution.js +71 -11
- package/dist/runtime-execution.js.map +1 -1
- package/dist/runtime-guardrails.d.ts +26 -0
- package/dist/runtime-guardrails.js +168 -0
- package/dist/runtime-guardrails.js.map +1 -0
- package/dist/setup-agents-import.js +5 -3
- package/dist/setup-agents-import.js.map +1 -1
- package/dist/skills-commands.d.ts +4 -0
- package/dist/skills-commands.js +55 -2
- package/dist/skills-commands.js.map +1 -1
- package/dist/skills-memory.d.ts +36 -2
- package/dist/skills-memory.js +165 -6
- package/dist/skills-memory.js.map +1 -1
- package/dist/skills-planning.js +2 -4
- package/dist/skills-planning.js.map +1 -1
- package/dist/skills-render.js +2 -4
- package/dist/skills-render.js.map +1 -1
- package/dist/skills.d.ts +1 -1
- package/dist/skills.js +1 -1
- package/dist/skills.js.map +1 -1
- package/dist/sprint-commands.js +2 -1
- package/dist/sprint-commands.js.map +1 -1
- package/dist/subagent-protocol.js +3 -5
- package/dist/subagent-protocol.js.map +1 -1
- package/dist/support-commands.d.ts +2 -0
- package/dist/support-commands.js +18 -0
- package/dist/support-commands.js.map +1 -0
- package/dist/support-diagnostics.d.ts +49 -0
- package/dist/support-diagnostics.js +86 -0
- package/dist/support-diagnostics.js.map +1 -0
- package/dist/task-graph-commands.js +5 -3
- package/dist/task-graph-commands.js.map +1 -1
- package/dist/telemetry-redaction.js +8 -1
- package/dist/telemetry-redaction.js.map +1 -1
- package/dist/tool-commands.d.ts +3 -0
- package/dist/tool-commands.js +62 -0
- package/dist/tool-commands.js.map +1 -1
- package/dist/tracker-adapters.d.ts +71 -0
- package/dist/tracker-adapters.js +186 -0
- package/dist/tracker-adapters.js.map +1 -0
- package/dist/tracker-commands.d.ts +2 -0
- package/dist/tracker-commands.js +119 -0
- package/dist/tracker-commands.js.map +1 -0
- package/dist/types/metrics.d.ts +24 -0
- package/dist/types/model-config.d.ts +35 -0
- package/dist/types/runtime.d.ts +56 -0
- package/dist/types/skills.d.ts +2 -0
- package/dist/types/tasks.d.ts +6 -0
- package/dist/types/workflow-run.d.ts +17 -0
- package/dist/types.d.ts +4 -4
- package/dist/types.js.map +1 -1
- package/dist/upgrade-commands.js +13 -4
- package/dist/upgrade-commands.js.map +1 -1
- package/dist/validation.js +2 -2
- package/dist/validation.js.map +1 -1
- package/dist/visual-validation.d.ts +81 -0
- package/dist/visual-validation.js +290 -0
- package/dist/visual-validation.js.map +1 -0
- package/dist/web-action-security.d.ts +11 -0
- package/dist/web-action-security.js +45 -0
- package/dist/web-action-security.js.map +1 -0
- package/dist/web-api-read-routes.js +101 -1
- package/dist/web-api-read-routes.js.map +1 -1
- package/dist/web-api.js +507 -5
- package/dist/web-api.js.map +1 -1
- package/dist/web-artifacts.d.ts +55 -0
- package/dist/web-artifacts.js +222 -0
- package/dist/web-artifacts.js.map +1 -0
- package/dist/web-console/assets/index-C9lx-V42.css +1 -0
- package/dist/web-console/assets/index-M3S0g1GK.js +11 -0
- package/dist/web-console/index.html +13 -0
- package/dist/web-console.js +9 -3
- package/dist/web-console.js.map +1 -1
- package/dist/web-recovery.d.ts +30 -0
- package/dist/web-recovery.js +163 -0
- package/dist/web-recovery.js.map +1 -0
- package/dist/web-workflow-progress.d.ts +41 -0
- package/dist/web-workflow-progress.js +114 -0
- package/dist/web-workflow-progress.js.map +1 -0
- package/dist/workflow-approval-service.d.ts +2 -1
- package/dist/workflow-approval-service.js +72 -0
- package/dist/workflow-approval-service.js.map +1 -1
- package/dist/workflow-evidence-service.js +8 -1
- package/dist/workflow-evidence-service.js.map +1 -1
- package/dist/workflow-gates.d.ts +1 -0
- package/dist/workflow-gates.js +57 -0
- package/dist/workflow-gates.js.map +1 -1
- package/dist/workflow-run-commands.js +13 -1
- package/dist/workflow-run-commands.js.map +1 -1
- package/dist/workflow-services.d.ts +16 -12
- package/dist/workflow-services.js +311 -253
- package/dist/workflow-services.js.map +1 -1
- package/dist/workflow-task-service.d.ts +11 -0
- package/dist/workflow-task-service.js +242 -0
- package/dist/workflow-task-service.js.map +1 -0
- package/dist/workspace-validator.js +109 -3
- package/dist/workspace-validator.js.map +1 -1
- package/dist/workspace.js +8 -2
- package/dist/workspace.js.map +1 -1
- package/docs/adoption-guide.md +147 -0
- package/docs/autonomous-workflow.md +118 -27
- package/docs/benchmark.md +15 -7
- package/docs/command-contracts.md +18 -1
- package/docs/core-command-surface.md +59 -13
- package/docs/end-to-end-demo.md +1 -0
- package/docs/extension-contracts.md +83 -0
- package/docs/orchestra-mvp.md +83 -3
- package/docs/persona-workflows.md +32 -0
- package/docs/release-test-matrix.md +42 -0
- package/docs/runtime-adapters.md +92 -0
- package/docs/runtime-llm-flow.md +13 -0
- package/docs/setup-agents-applicability-review.md +173 -0
- package/docs/source-of-truth-and-agent-learning.md +14 -0
- package/docs/traceability-flow.md +5 -1
- package/docs/tracker-adapter-contract.md +10 -1
- package/docs/web-console-qa.md +35 -0
- package/package.json +12 -6
- 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.
|
|
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
|
-
"
|
|
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": "
|
|
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.
|