jattac.libs.web.zest-button 1.2.9 → 1.4.0

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.
@@ -0,0 +1,213 @@
1
+ # AI Knowledge Graph
2
+
3
+ Purpose:
4
+
5
+ Maintain a continuously evolving architectural memory of this repository.
6
+
7
+ This document is not documentation for humans.
8
+
9
+ It is persistent memory for future AI agents.
10
+
11
+ ---
12
+
13
+ Every completed task MUST update this file if new knowledge is discovered.
14
+
15
+ This MUST happen BEFORE implementation and AGAIN after implementation.
16
+
17
+ ---
18
+
19
+ # Format
20
+
21
+ Every component entry MUST follow this format:
22
+
23
+ ```
24
+ ## [ComponentName]
25
+
26
+ ### Purpose
27
+
28
+ [One sentence describing what this component does]
29
+
30
+ ### Location
31
+
32
+ [File path]
33
+
34
+ ### Callers
35
+
36
+ [List of components that call this component]
37
+
38
+ ### Callees
39
+
40
+ [List of components that this component calls]
41
+
42
+ ### Dependencies
43
+
44
+ [List of external dependencies]
45
+
46
+ ### Publishes
47
+
48
+ [List of events published]
49
+
50
+ ### Consumes
51
+
52
+ [List of events consumed]
53
+
54
+ ### Configuration
55
+
56
+ [Configuration sources and settings]
57
+
58
+ ### Database
59
+
60
+ [Tables, queries, connections]
61
+
62
+ ### Known Invariants
63
+
64
+ [Business rules that MUST NOT change]
65
+
66
+ ### Known Pitfalls
67
+
68
+ [Things that are easy to break]
69
+
70
+ ### Thread Safety
71
+
72
+ [Concurrency considerations]
73
+
74
+ ### Transaction Boundaries
75
+
76
+ [Transaction scope and isolation]
77
+
78
+ ### Security Assumptions
79
+
80
+ [Authentication, authorization assumptions]
81
+
82
+ ### Performance Characteristics
83
+
84
+ [Known performance traits]
85
+
86
+ ### Test Coverage
87
+
88
+ [What is tested, what is not]
89
+ ```
90
+
91
+ ---
92
+
93
+ # Entry Rules
94
+
95
+ Every component discovered during implementation MUST be added.
96
+
97
+ Every component modified during implementation MUST be updated.
98
+
99
+ Never remove information unless proven obsolete.
100
+
101
+ Prefer appending.
102
+
103
+ Repository knowledge compounds over time.
104
+
105
+ ---
106
+
107
+ # Example
108
+
109
+ ## PaymentService
110
+
111
+ ### Purpose
112
+
113
+ Creates payment records.
114
+
115
+ ### Location
116
+
117
+ src/Services/PaymentService.cs
118
+
119
+ ### Callers
120
+
121
+ OrderController
122
+
123
+ InvoiceService
124
+
125
+ ### Callees
126
+
127
+ PaymentRepository
128
+
129
+ EventBus
130
+
131
+ EmailService
132
+
133
+ ### Dependencies
134
+
135
+ Newtonsoft.Json
136
+
137
+ Stripe SDK
138
+
139
+ ### Publishes
140
+
141
+ PaymentCreated
142
+
143
+ PaymentFailed
144
+
145
+ ### Consumes
146
+
147
+ OrderPlaced
148
+
149
+ RefundRequested
150
+
151
+ ### Configuration
152
+
153
+ PaymentSettings:MaxRetries (appsettings.json)
154
+
155
+ PaymentSettings:StripeKey (secrets)
156
+
157
+ ### Database
158
+
159
+ Payments table
160
+
161
+ PaymentAuditLog table
162
+
163
+ ### Known Invariants
164
+
165
+ Payment amount is immutable after settlement.
166
+
167
+ Payment status transitions are one-way: Pending → Settled or Pending → Failed.
168
+
169
+ ### Known Pitfall
170
+
171
+ Registration occurs through reflection. Do not remove the Register method.
172
+
173
+ ### Thread Safety
174
+
175
+ Payment processing is serialized per payment ID.
176
+
177
+ ### Transaction Boundaries
178
+
179
+ Payment creation and event publishing are in separate transactions.
180
+
181
+ ### Security Assumptions
182
+
183
+ Stripe key must never appear in logs.
184
+
185
+ ### Performance Characteristics
186
+
187
+ Payment creation is synchronous. Event handlers are asynchronous.
188
+
189
+ ### Test Coverage
190
+
191
+ Unit tests for PaymentService.
192
+ Integration tests for PaymentRepository.
193
+ No tests for EmailService (mocked).
194
+
195
+ ---
196
+
197
+ # Cross-References
198
+
199
+ When a component is modified, check all components that reference it.
200
+
201
+ Update their entries if the modification affects their behaviour.
202
+
203
+ ---
204
+
205
+ # Maintenance
206
+
207
+ Never delete entries unless the component has been removed from the codebase.
208
+
209
+ Never delete known invariants unless explicitly instructed.
210
+
211
+ Never delete known pitfalls unless they have been resolved.
212
+
213
+ When in doubt, append rather than modify.
@@ -0,0 +1,245 @@
1
+ # Common AI Failure Modes
2
+
3
+ Never do the following.
4
+
5
+ ---
6
+
7
+ # Understanding Failures
8
+
9
+ Delete code because it appears unused.
10
+
11
+ Assume an event has no consumers.
12
+
13
+ Assume tests are complete.
14
+
15
+ Assume absence of references means safe removal.
16
+
17
+ Assume you understand code you have not read.
18
+
19
+ Assume you understand a call chain you have not fully traced.
20
+
21
+ Assume you know all consumers of a method.
22
+
23
+ Assume you know all callers of a method.
24
+
25
+ Assume existing behaviour is incorrect without evidence.
26
+
27
+ Guess business intent.
28
+
29
+ Claim certainty without evidence.
30
+
31
+ ---
32
+
33
+ # Modification Failures
34
+
35
+ Rewrite working code to match personal preference.
36
+
37
+ Replace architecture while implementing features.
38
+
39
+ Modify unrelated files.
40
+
41
+ Change formatting of unrelated code.
42
+
43
+ Rename APIs without instruction.
44
+
45
+ Rename symbols without instruction.
46
+
47
+ Reorder methods without instruction.
48
+
49
+ Reorder imports without instruction.
50
+
51
+ Move files without instruction.
52
+
53
+ Modernise code without instruction.
54
+
55
+ ---
56
+
57
+ # Addition Failures
58
+
59
+ Add code you think is needed but was not requested.
60
+
61
+ Add comments you think are helpful but were not requested.
62
+
63
+ Add logging you think is useful but was not requested.
64
+
65
+ Add error handling you think is necessary but was not requested.
66
+
67
+ Add null checks or defensive code you think is prudent but was not requested.
68
+
69
+ Add TODO comments about code you think needs improvement.
70
+
71
+ Add comments about code that needs refactoring.
72
+
73
+ Add try-catch blocks "just in case."
74
+
75
+ Add blanket exception handling.
76
+
77
+ Add null-forgiving operators to silence warnings.
78
+
79
+ Add #pragma disable to silence warnings.
80
+
81
+ Add SuppressMessage attributes.
82
+
83
+ Add Obsolete attributes.
84
+
85
+ Add InternalsVisibleTo for test projects.
86
+
87
+ ---
88
+
89
+ # Dependency Failures
90
+
91
+ Upgrade package versions to "fix" or "improve."
92
+
93
+ Add packages you think are needed.
94
+
95
+ Remove packages you think are unused.
96
+
97
+ Change SDK versions.
98
+
99
+ Change tool versions.
100
+
101
+ ---
102
+
103
+ # Configuration Failures
104
+
105
+ Modify build or CI configuration to "improve" it.
106
+
107
+ Modify database schema or migrations to "fix" something.
108
+
109
+ Modify configuration files to "improve" defaults.
110
+
111
+ Modify environment variables.
112
+
113
+ Modify secrets or secret references.
114
+
115
+ Modify Docker files or container configurations.
116
+
117
+ ---
118
+
119
+ # Testing Failures
120
+
121
+ Claim tests pass without showing output.
122
+
123
+ Claim build succeeds without showing output.
124
+
125
+ Skip tests.
126
+
127
+ Disable tests.
128
+
129
+ Mark tests as ignored.
130
+
131
+ Modify tests to make them pass.
132
+
133
+ Change test expectations to match broken behaviour.
134
+
135
+ Add tests that do not assert specific values.
136
+
137
+ Add tests that only verify "does not throw."
138
+
139
+ Add tests that depend on execution order.
140
+
141
+ Add tests that depend on external state.
142
+
143
+ Add tests that do not clean up after themselves.
144
+
145
+ ---
146
+
147
+ # Code Quality Failures
148
+
149
+ Change method signatures to "improve" them.
150
+
151
+ Change return types to be "more correct."
152
+
153
+ Change access modifiers to make things testable.
154
+
155
+ Make private things public for testing.
156
+
157
+ Add async/await where it was not present.
158
+
159
+ Change synchronous code to asynchronous.
160
+
161
+ Add ConfigureAwait(false) everywhere.
162
+
163
+ Add methods that do not belong in the current class.
164
+
165
+ Add classes that do not belong in the current module.
166
+
167
+ Add abstractions without clear need.
168
+
169
+ Add interfaces without clear need.
170
+
171
+ Add base classes without clear need.
172
+
173
+ ---
174
+
175
+ # Process Failures
176
+
177
+ Proceed with implementation when you have not fully read the code you are modifying.
178
+
179
+ Proceeding with incomplete understanding of the call chain.
180
+
181
+ Proceeding when you have unresolved questions.
182
+
183
+ Modify files that are not directly required by the task.
184
+
185
+ Refactoring code during feature work or bug fixes.
186
+
187
+ Reordering code for "clarity" during feature work.
188
+
189
+ Reformatting code during feature work.
190
+
191
+ Renaming things during feature work.
192
+
193
+ Squashing errors silently.
194
+
195
+ Swallowing exceptions.
196
+
197
+ Ignoring failing tests.
198
+
199
+ Skipping blast radius analysis.
200
+
201
+ Forgetting to update ai-knowledge.md.
202
+
203
+ Forgetting to update decision-log.md.
204
+
205
+ Forgetting to produce a change manifest.
206
+
207
+ Forgetting to report test output.
208
+
209
+ ---
210
+
211
+ # Communication Failures
212
+
213
+ Report completion without showing test output.
214
+
215
+ Report completion without producing a change manifest.
216
+
217
+ Report completion without performing self review.
218
+
219
+ Report completion with unresolved uncertainties.
220
+
221
+ Report completion with FAIL items in the self review.
222
+
223
+ Claim success without evidence.
224
+
225
+ Understate risks.
226
+
227
+ Hide unknowns.
228
+
229
+ Overstate confidence.
230
+
231
+ ---
232
+
233
+ # Always
234
+
235
+ Always prefer explicit reasoning over assumptions.
236
+
237
+ Always preserve behaviour over elegance.
238
+
239
+ Always explain WHY each change was made.
240
+
241
+ Always trace changes to specific user requirements.
242
+
243
+ Always read before you write.
244
+
245
+ Always stop when uncertain.
@@ -0,0 +1,162 @@
1
+ # AI Style Guide
2
+
3
+ Never introduce a second pattern when one already exists.
4
+
5
+ Prefer existing abstractions.
6
+
7
+ Respect existing project structure.
8
+
9
+ Do not rename symbols without instruction.
10
+
11
+ Keep methods cohesive.
12
+
13
+ Avoid speculative abstractions.
14
+
15
+ One responsibility per class.
16
+
17
+ Do not optimise prematurely.
18
+
19
+ Use explicit names over clever names.
20
+
21
+ Prefer readability over brevity.
22
+
23
+ ---
24
+
25
+ # Naming
26
+
27
+ Use the same naming conventions as existing code.
28
+
29
+ Do not introduce new naming patterns.
30
+
31
+ Match the capitalisation style of existing code (camelCase, PascalCase, snake_case).
32
+
33
+ Match the abbreviation style of existing code.
34
+
35
+ ---
36
+
37
+ # File Structure
38
+
39
+ Place new files in the same directories as similar existing files.
40
+
41
+ Do not create new directory structures.
42
+
43
+ Do not reorganise files.
44
+
45
+ Do not move files.
46
+
47
+ ---
48
+
49
+ # Method Length
50
+
51
+ If a method exceeds ~30 lines, consider whether it should be split.
52
+
53
+ But only if the existing codebase demonstrates that pattern.
54
+
55
+ Do not split methods that are shorter than surrounding code.
56
+
57
+ ---
58
+
59
+ # Class Length
60
+
61
+ If a class exceeds ~300 lines, consider whether it should be split.
62
+
63
+ But only if the existing codebase demonstrates that pattern.
64
+
65
+ Do not split classes that are smaller than surrounding code.
66
+
67
+ ---
68
+
69
+ # Parameters
70
+
71
+ If a method has more than 4 parameters, consider whether a parameter object is appropriate.
72
+
73
+ But only if the existing codebase demonstrates that pattern.
74
+
75
+ Do not introduce parameter objects for methods that have fewer parameters than surrounding code.
76
+
77
+ ---
78
+
79
+ # Error Handling
80
+
81
+ Use the same error handling patterns as existing code.
82
+
83
+ Do not introduce new patterns.
84
+
85
+ Do not add error handling that does not exist in surrounding code.
86
+
87
+ ---
88
+
89
+ # Logging
90
+
91
+ Use the same logging patterns as existing code.
92
+
93
+ Do not introduce new patterns.
94
+
95
+ Do not add logging that does not exist in surrounding code.
96
+
97
+ ---
98
+
99
+ # Configuration
100
+
101
+ Use the same configuration patterns as existing code.
102
+
103
+ Do not introduce new patterns.
104
+
105
+ ---
106
+
107
+ # Comments
108
+
109
+ Use the same comment style as existing code.
110
+
111
+ Do not introduce new styles.
112
+
113
+ Do not add comments unless explicitly requested.
114
+
115
+ ---
116
+
117
+ # Formatting
118
+
119
+ Match the formatting of surrounding code exactly.
120
+
121
+ Do not reformat unrelated code.
122
+
123
+ Do not change whitespace in unrelated code.
124
+
125
+ Do not change line breaks in unrelated code.
126
+
127
+ Do not change indentation in unrelated code.
128
+
129
+ ---
130
+
131
+ # Imports
132
+
133
+ Use the same import style as existing code.
134
+
135
+ Do not reorder imports.
136
+
137
+ Do not add imports unless explicitly required by the change.
138
+
139
+ Do not remove imports unless the removed import is no longer used.
140
+
141
+ ---
142
+
143
+ # Access Modifiers
144
+
145
+ Use the same access modifier patterns as existing code.
146
+
147
+ Do not change access modifiers unless explicitly required.
148
+
149
+ Do not make private things public for testing.
150
+
151
+ Do not make things internal for convenience.
152
+
153
+ ---
154
+
155
+ # Project-Specific Style — Lattice Admin Web
156
+
157
+ ## Copy rules
158
+
159
+ - All page titles, subtitles, labels, and helper text must be written for business users and operations staff
160
+ - Never use technical terms like "table-driven", "SQL INSERT", "endpoint", "schema", or backend implementation details in any user-facing string
161
+ - Subtitle of `PageContainer` should describe what the page does and why it matters to the user, not how it works internally
162
+ - Instruction panels in forms should explain field purpose in plain business language