@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.
- 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 +23 -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/memory.js +18 -8
- package/dist/memory.js.map +1 -1
- 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 +101 -3
- 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 +118 -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 +25 -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 +198 -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 +202 -12
- package/dist/release-commands.js.map +1 -1
- package/dist/release-readiness.d.ts +36 -1
- package/dist/release-readiness.js +217 -6
- 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-catalog.js +63 -0
- package/dist/skills-catalog.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 +39 -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-BNESIVvk.js +11 -0
- package/dist/web-console/assets/index-jxCY5eEc.css +1 -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 +2 -0
- package/dist/workflow-gates.js +221 -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 +313 -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/skill-loading-strategy.md +1 -0
- package/docs/source-of-truth-and-agent-learning.md +14 -0
- package/docs/traceability-flow.md +16 -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 +68 -0
- package/rules/devops-tooling.mdc +1 -0
- package/rules/dry-clean-code.mdc +1 -0
- package/rules/performance-reliability.mdc +1 -0
- package/rules/testing-discipline.mdc +4 -1
- package/skills/collection-standards/SKILL.md +63 -0
- 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.
|
|
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
|
-
"
|
|
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,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.
|
package/rules/devops-tooling.mdc
CHANGED
|
@@ -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.
|
package/rules/dry-clean-code.mdc
CHANGED
|
@@ -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
|
+
}
|