@fro.bot/systematic 2.1.0 → 2.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "description": "Structured engineering workflows for OpenCode",
5
5
  "type": "module",
6
6
  "homepage": "https://fro.bot/systematic",
@@ -0,0 +1,90 @@
1
+ # Resolution Templates
2
+
3
+ Choose the template matching the problem_type track (see `references/schema.yaml`).
4
+
5
+ ---
6
+
7
+ ## Bug Track Template
8
+
9
+ Use for: `build_error`, `test_failure`, `runtime_error`, `performance_issue`, `database_issue`, `security_issue`, `ui_bug`, `integration_issue`, `logic_error`
10
+
11
+ ```markdown
12
+ ---
13
+ title: [Clear problem title]
14
+ date: [YYYY-MM-DD]
15
+ category: [docs/solutions subdirectory]
16
+ module: [Module or area]
17
+ problem_type: [schema enum]
18
+ component: [schema enum]
19
+ symptoms:
20
+ - [Observable symptom 1]
21
+ root_cause: [schema enum]
22
+ resolution_type: [schema enum]
23
+ severity: [schema enum]
24
+ tags: [keyword-one, keyword-two]
25
+ ---
26
+
27
+ # [Clear problem title]
28
+
29
+ ## Problem
30
+ [1-2 sentence description of the issue and user-visible impact]
31
+
32
+ ## Symptoms
33
+ - [Observable symptom or error]
34
+
35
+ ## What Didn't Work
36
+ - [Attempted fix and why it failed]
37
+
38
+ ## Solution
39
+ [The fix that worked, including code snippets when useful]
40
+
41
+ ## Why This Works
42
+ [Root cause explanation and why the fix addresses it]
43
+
44
+ ## Prevention
45
+ - [Concrete practice, test, or guardrail]
46
+
47
+ ## Related Issues
48
+ - [Related docs or issues, if any]
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Knowledge Track Template
54
+
55
+ Use for: `best_practice`, `documentation_gap`, `workflow_issue`, `developer_experience`
56
+
57
+ ```markdown
58
+ ---
59
+ title: [Clear, descriptive title]
60
+ date: [YYYY-MM-DD]
61
+ category: [docs/solutions subdirectory]
62
+ module: [Module or area]
63
+ problem_type: [schema enum]
64
+ component: [schema enum]
65
+ severity: [schema enum]
66
+ applies_when:
67
+ - [Condition where this applies]
68
+ tags: [keyword-one, keyword-two]
69
+ ---
70
+
71
+ # [Clear, descriptive title]
72
+
73
+ ## Context
74
+ [What situation, gap, or friction prompted this guidance]
75
+
76
+ ## Guidance
77
+ [The practice, pattern, or recommendation with code examples when useful]
78
+
79
+ ## Why This Matters
80
+ [Rationale and impact of following or not following this guidance]
81
+
82
+ ## When to Apply
83
+ - [Conditions or situations where this applies]
84
+
85
+ ## Examples
86
+ [Concrete before/after or usage examples showing the practice in action]
87
+
88
+ ## Related
89
+ - [Related docs or issues, if any]
90
+ ```
@@ -0,0 +1,222 @@
1
+ # Documentation schema for learnings written by ce:compound
2
+ # Treat this as the canonical frontmatter contract for docs/solutions/.
3
+ #
4
+ # The schema has two tracks based on problem_type:
5
+ # Bug track — problem_type is a defect or failure (build_error, test_failure, etc.)
6
+ # Knowledge track — problem_type is guidance or practice (best_practice, workflow_issue, etc.)
7
+ #
8
+ # Both tracks share the same required core fields. The tracks differ in which
9
+ # additional fields are required vs optional (see track_rules below).
10
+
11
+ # --- Track classification ---------------------------------------------------
12
+ tracks:
13
+ bug:
14
+ description: "Defects, failures, and errors that were diagnosed and fixed"
15
+ problem_types:
16
+ - build_error
17
+ - test_failure
18
+ - runtime_error
19
+ - performance_issue
20
+ - database_issue
21
+ - security_issue
22
+ - ui_bug
23
+ - integration_issue
24
+ - logic_error
25
+ knowledge:
26
+ description: "Best practices, workflow improvements, patterns, and documentation"
27
+ problem_types:
28
+ - best_practice
29
+ - documentation_gap
30
+ - workflow_issue
31
+ - developer_experience
32
+
33
+ # --- Fields required by BOTH tracks -----------------------------------------
34
+ required_fields:
35
+ module:
36
+ type: string
37
+ description: "Module or area affected"
38
+
39
+ date:
40
+ type: string
41
+ pattern: '^\d{4}-\d{2}-\d{2}$'
42
+ description: "Date documented (YYYY-MM-DD)"
43
+
44
+ problem_type:
45
+ type: enum
46
+ values:
47
+ - build_error
48
+ - test_failure
49
+ - runtime_error
50
+ - performance_issue
51
+ - database_issue
52
+ - security_issue
53
+ - ui_bug
54
+ - integration_issue
55
+ - logic_error
56
+ - developer_experience
57
+ - workflow_issue
58
+ - best_practice
59
+ - documentation_gap
60
+ description: "Primary category — determines track (bug vs knowledge)"
61
+
62
+ component:
63
+ type: enum
64
+ values:
65
+ - rails_model
66
+ - rails_controller
67
+ - rails_view
68
+ - service_object
69
+ - background_job
70
+ - database
71
+ - frontend_stimulus
72
+ - hotwire_turbo
73
+ - email_processing
74
+ - brief_system
75
+ - assistant
76
+ - authentication
77
+ - payments
78
+ - development_workflow
79
+ - testing_framework
80
+ - documentation
81
+ - tooling
82
+ description: "Component involved"
83
+
84
+ severity:
85
+ type: enum
86
+ values:
87
+ - critical
88
+ - high
89
+ - medium
90
+ - low
91
+ description: "Impact severity"
92
+
93
+ # --- Track-specific rules ----------------------------------------------------
94
+ track_rules:
95
+ bug:
96
+ required:
97
+ symptoms:
98
+ type: array[string]
99
+ min_items: 1
100
+ max_items: 5
101
+ description: "Observable symptoms such as errors or broken behavior"
102
+ root_cause:
103
+ type: enum
104
+ values:
105
+ - missing_association
106
+ - missing_include
107
+ - missing_index
108
+ - wrong_api
109
+ - scope_issue
110
+ - thread_violation
111
+ - async_timing
112
+ - memory_leak
113
+ - config_error
114
+ - logic_error
115
+ - test_isolation
116
+ - missing_validation
117
+ - missing_permission
118
+ - missing_workflow_step
119
+ - inadequate_documentation
120
+ - missing_tooling
121
+ - incomplete_setup
122
+ description: "Fundamental technical cause of the problem"
123
+ resolution_type:
124
+ type: enum
125
+ values:
126
+ - code_fix
127
+ - migration
128
+ - config_change
129
+ - test_fix
130
+ - dependency_update
131
+ - environment_setup
132
+ - workflow_improvement
133
+ - documentation_update
134
+ - tooling_addition
135
+ - seed_data_update
136
+ description: "Type of fix applied"
137
+
138
+ knowledge:
139
+ optional:
140
+ applies_when:
141
+ type: array[string]
142
+ max_items: 5
143
+ description: "Conditions or situations where this guidance applies"
144
+ symptoms:
145
+ type: array[string]
146
+ max_items: 5
147
+ description: "Observable gaps or friction that prompted this guidance (optional for knowledge track)"
148
+ root_cause:
149
+ type: enum
150
+ values:
151
+ - missing_association
152
+ - missing_include
153
+ - missing_index
154
+ - wrong_api
155
+ - scope_issue
156
+ - thread_violation
157
+ - async_timing
158
+ - memory_leak
159
+ - config_error
160
+ - logic_error
161
+ - test_isolation
162
+ - missing_validation
163
+ - missing_permission
164
+ - missing_workflow_step
165
+ - inadequate_documentation
166
+ - missing_tooling
167
+ - incomplete_setup
168
+ description: "Underlying cause, if there is a specific one (optional for knowledge track)"
169
+ resolution_type:
170
+ type: enum
171
+ values:
172
+ - code_fix
173
+ - migration
174
+ - config_change
175
+ - test_fix
176
+ - dependency_update
177
+ - environment_setup
178
+ - workflow_improvement
179
+ - documentation_update
180
+ - tooling_addition
181
+ - seed_data_update
182
+ description: "Type of change, if applicable (optional for knowledge track)"
183
+
184
+ # --- Fields optional for BOTH tracks ----------------------------------------
185
+ optional_fields:
186
+ related_components:
187
+ type: array[string]
188
+ description: "Other components involved"
189
+
190
+ tags:
191
+ type: array[string]
192
+ max_items: 8
193
+ description: "Search keywords, lowercase and hyphen-separated"
194
+
195
+ # --- Fields optional for bug track only -------------------------------------
196
+ bug_optional_fields:
197
+ rails_version:
198
+ type: string
199
+ pattern: '^\d+\.\d+\.\d+$'
200
+ description: "Rails version in X.Y.Z format. Only relevant for bug-track docs."
201
+
202
+ # --- Backward compatibility --------------------------------------------------
203
+ # Docs created before the track system was introduced may have bug-track
204
+ # fields (symptoms, root_cause, resolution_type) on knowledge-type
205
+ # problem_types. These are valid legacy docs:
206
+ # - Bug-track fields present on a knowledge-track doc are harmless. Do not
207
+ # strip them during refresh unless the doc is being rewritten for other reasons.
208
+ # - When creating NEW docs, follow the track rules above.
209
+
210
+ # --- Validation rules --------------------------------------------------------
211
+ validation_rules:
212
+ - "Determine track from problem_type using the tracks section above"
213
+ - "All shared required_fields must be present"
214
+ - "Bug-track required fields (symptoms, root_cause, resolution_type) must be present on bug-track docs"
215
+ - "Knowledge-track docs have no additional required fields beyond the shared ones"
216
+ - "Bug-track fields on existing knowledge-track docs are harmless (see backward compatibility note)"
217
+ - "Track-specific optional fields may be included but are not required"
218
+ - "Enum fields must match allowed values exactly"
219
+ - "Array fields must respect min_items/max_items when specified"
220
+ - "date must match YYYY-MM-DD format"
221
+ - "rails_version, if provided, must match X.Y.Z format and only applies to bug-track docs"
222
+ - "tags should be lowercase and hyphen-separated"
@@ -0,0 +1,87 @@
1
+ # YAML Frontmatter Schema
2
+
3
+ `schema.yaml` in this directory is the canonical contract for `docs/solutions/` frontmatter written by `ce:compound`.
4
+
5
+ Use this file as the quick reference for:
6
+ - required fields
7
+ - enum values
8
+ - validation expectations
9
+ - category mapping
10
+ - track classification (bug vs knowledge)
11
+
12
+ ## Tracks
13
+
14
+ The `problem_type` determines which **track** applies. Each track has different required and optional fields.
15
+
16
+ | Track | problem_types | Description |
17
+ |-------|--------------|-------------|
18
+ | **Bug** | `build_error`, `test_failure`, `runtime_error`, `performance_issue`, `database_issue`, `security_issue`, `ui_bug`, `integration_issue`, `logic_error` | Defects and failures that were diagnosed and fixed |
19
+ | **Knowledge** | `best_practice`, `documentation_gap`, `workflow_issue`, `developer_experience` | Practices, patterns, workflow improvements, and documentation |
20
+
21
+ ## Required Fields (both tracks)
22
+
23
+ - **module**: Module or area affected
24
+ - **date**: ISO date in `YYYY-MM-DD`
25
+ - **problem_type**: One of the values listed in the Tracks table above
26
+ - **component**: One of `rails_model`, `rails_controller`, `rails_view`, `service_object`, `background_job`, `database`, `frontend_stimulus`, `hotwire_turbo`, `email_processing`, `brief_system`, `assistant`, `authentication`, `payments`, `development_workflow`, `testing_framework`, `documentation`, `tooling`
27
+ - **severity**: One of `critical`, `high`, `medium`, `low`
28
+
29
+ ## Bug Track Fields
30
+
31
+ Required:
32
+ - **symptoms**: YAML array with 1-5 observable symptoms (errors, broken behavior)
33
+ - **root_cause**: One of `missing_association`, `missing_include`, `missing_index`, `wrong_api`, `scope_issue`, `thread_violation`, `async_timing`, `memory_leak`, `config_error`, `logic_error`, `test_isolation`, `missing_validation`, `missing_permission`, `missing_workflow_step`, `inadequate_documentation`, `missing_tooling`, `incomplete_setup`
34
+ - **resolution_type**: One of `code_fix`, `migration`, `config_change`, `test_fix`, `dependency_update`, `environment_setup`, `workflow_improvement`, `documentation_update`, `tooling_addition`, `seed_data_update`
35
+
36
+ ## Knowledge Track Fields
37
+
38
+ No additional required fields beyond the shared ones. All fields below are optional:
39
+
40
+ - **applies_when**: Conditions or situations where this guidance applies
41
+ - **symptoms**: Observable gaps or friction that prompted this guidance
42
+ - **root_cause**: Underlying cause, if there is a specific one
43
+ - **resolution_type**: Type of change, if applicable
44
+
45
+ ## Optional Fields (both tracks)
46
+
47
+ - **related_components**: Other components involved
48
+ - **tags**: Search keywords, lowercase and hyphen-separated
49
+
50
+ ## Optional Fields (bug track only)
51
+
52
+ - **rails_version**: Rails version in `X.Y.Z` format
53
+
54
+ ## Backward Compatibility
55
+
56
+ Docs created before the track system may have `symptoms`/`root_cause`/`resolution_type` on knowledge-type problem_types. These are valid legacy docs:
57
+
58
+ - Bug-track fields present on a knowledge-track doc are harmless. Do not strip them during refresh unless the doc is being rewritten for other reasons.
59
+ - When creating **new** docs, follow the track rules above.
60
+
61
+ ## Category Mapping
62
+
63
+ - `build_error` -> `docs/solutions/build-errors/`
64
+ - `test_failure` -> `docs/solutions/test-failures/`
65
+ - `runtime_error` -> `docs/solutions/runtime-errors/`
66
+ - `performance_issue` -> `docs/solutions/performance-issues/`
67
+ - `database_issue` -> `docs/solutions/database-issues/`
68
+ - `security_issue` -> `docs/solutions/security-issues/`
69
+ - `ui_bug` -> `docs/solutions/ui-bugs/`
70
+ - `integration_issue` -> `docs/solutions/integration-issues/`
71
+ - `logic_error` -> `docs/solutions/logic-errors/`
72
+ - `developer_experience` -> `docs/solutions/developer-experience/`
73
+ - `workflow_issue` -> `docs/solutions/workflow-issues/`
74
+ - `best_practice` -> `docs/solutions/best-practices/`
75
+ - `documentation_gap` -> `docs/solutions/documentation-gaps/`
76
+
77
+ ## Validation Rules
78
+
79
+ 1. Determine the track from `problem_type` using the Tracks table.
80
+ 2. All shared required fields must be present.
81
+ 3. Bug-track required fields (`symptoms`, `root_cause`, `resolution_type`) must be present on bug-track docs.
82
+ 4. Knowledge-track docs have no additional required fields beyond the shared ones.
83
+ 5. Bug-track fields on existing knowledge-track docs are harmless (see Backward Compatibility).
84
+ 6. Enum fields must match the allowed values exactly.
85
+ 7. Array fields must respect min/max item counts.
86
+ 8. `date` must match `YYYY-MM-DD`.
87
+ 9. `rails_version`, if present, must match `X.Y.Z` and only applies to bug-track docs.
@@ -0,0 +1,90 @@
1
+ # Resolution Templates
2
+
3
+ Choose the template matching the problem_type track (see `references/schema.yaml`).
4
+
5
+ ---
6
+
7
+ ## Bug Track Template
8
+
9
+ Use for: `build_error`, `test_failure`, `runtime_error`, `performance_issue`, `database_issue`, `security_issue`, `ui_bug`, `integration_issue`, `logic_error`
10
+
11
+ ```markdown
12
+ ---
13
+ title: [Clear problem title]
14
+ date: [YYYY-MM-DD]
15
+ category: [docs/solutions subdirectory]
16
+ module: [Module or area]
17
+ problem_type: [schema enum]
18
+ component: [schema enum]
19
+ symptoms:
20
+ - [Observable symptom 1]
21
+ root_cause: [schema enum]
22
+ resolution_type: [schema enum]
23
+ severity: [schema enum]
24
+ tags: [keyword-one, keyword-two]
25
+ ---
26
+
27
+ # [Clear problem title]
28
+
29
+ ## Problem
30
+ [1-2 sentence description of the issue and user-visible impact]
31
+
32
+ ## Symptoms
33
+ - [Observable symptom or error]
34
+
35
+ ## What Didn't Work
36
+ - [Attempted fix and why it failed]
37
+
38
+ ## Solution
39
+ [The fix that worked, including code snippets when useful]
40
+
41
+ ## Why This Works
42
+ [Root cause explanation and why the fix addresses it]
43
+
44
+ ## Prevention
45
+ - [Concrete practice, test, or guardrail]
46
+
47
+ ## Related Issues
48
+ - [Related docs or issues, if any]
49
+ ```
50
+
51
+ ---
52
+
53
+ ## Knowledge Track Template
54
+
55
+ Use for: `best_practice`, `documentation_gap`, `workflow_issue`, `developer_experience`
56
+
57
+ ```markdown
58
+ ---
59
+ title: [Clear, descriptive title]
60
+ date: [YYYY-MM-DD]
61
+ category: [docs/solutions subdirectory]
62
+ module: [Module or area]
63
+ problem_type: [schema enum]
64
+ component: [schema enum]
65
+ severity: [schema enum]
66
+ applies_when:
67
+ - [Condition where this applies]
68
+ tags: [keyword-one, keyword-two]
69
+ ---
70
+
71
+ # [Clear, descriptive title]
72
+
73
+ ## Context
74
+ [What situation, gap, or friction prompted this guidance]
75
+
76
+ ## Guidance
77
+ [The practice, pattern, or recommendation with code examples when useful]
78
+
79
+ ## Why This Matters
80
+ [Rationale and impact of following or not following this guidance]
81
+
82
+ ## When to Apply
83
+ - [Conditions or situations where this applies]
84
+
85
+ ## Examples
86
+ [Concrete before/after or usage examples showing the practice in action]
87
+
88
+ ## Related
89
+ - [Related docs or issues, if any]
90
+ ```