gaslighting-engine 0.1.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.
- package/.codex/prompts/gaslighting.md +30 -0
- package/.codex/skills/gaslighting/SKILL.md +96 -0
- package/.codex/skills/gaslighting/agents/openai.yaml +8 -0
- package/.codex/skills/gaslighting/references/GASLIGHTING_TEMPLATE.md +425 -0
- package/.codex/skills/gaslighting/references/HARDCORE_DISCIPLINE_TEMPLATE.md +425 -0
- package/.codex/skills/gaslighting/references/HOSPITAL_HOMEPAGE_EXAMPLE.md +119 -0
- package/.codex/skills/gaslighting/references/STACK_POLICY_TEMPLATE.md +64 -0
- package/.codex/skills/gaslighting/scripts/generate-gaslighting-docs.ts +3 -0
- package/LICENSE +21 -0
- package/README.md +200 -0
- package/dist/cli.js +118 -0
- package/dist/commands/agents.js +10 -0
- package/dist/commands/codexInstall.js +60 -0
- package/dist/commands/doctor.js +42 -0
- package/dist/commands/generate.js +4 -0
- package/dist/commands/init.js +27 -0
- package/dist/commands/skill.js +10 -0
- package/dist/commands/update.js +35 -0
- package/dist/core/analyze.js +132 -0
- package/dist/core/classifyProjectType.js +66 -0
- package/dist/core/content.js +125 -0
- package/dist/core/detectStackHints.js +34 -0
- package/dist/core/generateDocs.js +58 -0
- package/dist/core/generateGaslightingMarkdown.js +420 -0
- package/dist/core/generateOtherMarkdown.js +529 -0
- package/dist/core/generatePrdMarkdown.js +125 -0
- package/dist/index.js +3 -0
- package/dist/types.js +1 -0
- package/dist/utils/banner.js +49 -0
- package/dist/utils/date.js +6 -0
- package/dist/utils/file.js +24 -0
- package/dist/utils/logger.js +27 -0
- package/dist/utils/markdown.js +6 -0
- package/docs/codex-usage.md +58 -0
- package/docs/examples.md +22 -0
- package/docs/philosophy.md +17 -0
- package/docs/research.md +54 -0
- package/examples/ecommerce/.codex/prompts/gaslighting.md +30 -0
- package/examples/ecommerce/.codex/skills/gaslighting/SKILL.md +96 -0
- package/examples/ecommerce/.codex/skills/gaslighting/agents/openai.yaml +8 -0
- package/examples/ecommerce/.codex/skills/gaslighting/references/GASLIGHTING_TEMPLATE.md +425 -0
- package/examples/ecommerce/.codex/skills/gaslighting/references/HARDCORE_DISCIPLINE_TEMPLATE.md +425 -0
- package/examples/ecommerce/.codex/skills/gaslighting/references/HOSPITAL_HOMEPAGE_EXAMPLE.md +119 -0
- package/examples/ecommerce/.codex/skills/gaslighting/references/STACK_POLICY_TEMPLATE.md +64 -0
- package/examples/ecommerce/.codex/skills/gaslighting/scripts/generate-gaslighting-docs.ts +3 -0
- package/examples/ecommerce/AGENTS.md +47 -0
- package/examples/ecommerce/ASSUMPTIONS.md +146 -0
- package/examples/ecommerce/CODEX_PROMPT.md +34 -0
- package/examples/ecommerce/DECISION_LOG.md +95 -0
- package/examples/ecommerce/GASLIGHTING.md +429 -0
- package/examples/ecommerce/MEMORY.md +63 -0
- package/examples/ecommerce/MISSING_INFO.md +13 -0
- package/examples/ecommerce/PRD.md +115 -0
- package/examples/ecommerce/STACK_POLICY.md +64 -0
- package/examples/hospital-homepage/.codex/prompts/gaslighting.md +30 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/SKILL.md +96 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/agents/openai.yaml +8 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/references/GASLIGHTING_TEMPLATE.md +425 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/references/HARDCORE_DISCIPLINE_TEMPLATE.md +425 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/references/HOSPITAL_HOMEPAGE_EXAMPLE.md +119 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/references/STACK_POLICY_TEMPLATE.md +64 -0
- package/examples/hospital-homepage/.codex/skills/gaslighting/scripts/generate-gaslighting-docs.ts +3 -0
- package/examples/hospital-homepage/AGENTS.md +47 -0
- package/examples/hospital-homepage/ASSUMPTIONS.md +218 -0
- package/examples/hospital-homepage/CODEX_PROMPT.md +34 -0
- package/examples/hospital-homepage/DECISION_LOG.md +95 -0
- package/examples/hospital-homepage/GASLIGHTING.md +432 -0
- package/examples/hospital-homepage/MEMORY.md +66 -0
- package/examples/hospital-homepage/MISSING_INFO.md +13 -0
- package/examples/hospital-homepage/PRD.md +119 -0
- package/examples/hospital-homepage/STACK_POLICY.md +64 -0
- package/examples/landing-page/.codex/prompts/gaslighting.md +30 -0
- package/examples/landing-page/.codex/skills/gaslighting/SKILL.md +96 -0
- package/examples/landing-page/.codex/skills/gaslighting/agents/openai.yaml +8 -0
- package/examples/landing-page/.codex/skills/gaslighting/references/GASLIGHTING_TEMPLATE.md +425 -0
- package/examples/landing-page/.codex/skills/gaslighting/references/HARDCORE_DISCIPLINE_TEMPLATE.md +425 -0
- package/examples/landing-page/.codex/skills/gaslighting/references/HOSPITAL_HOMEPAGE_EXAMPLE.md +119 -0
- package/examples/landing-page/.codex/skills/gaslighting/references/STACK_POLICY_TEMPLATE.md +64 -0
- package/examples/landing-page/.codex/skills/gaslighting/scripts/generate-gaslighting-docs.ts +3 -0
- package/examples/landing-page/AGENTS.md +47 -0
- package/examples/landing-page/ASSUMPTIONS.md +146 -0
- package/examples/landing-page/CODEX_PROMPT.md +34 -0
- package/examples/landing-page/DECISION_LOG.md +95 -0
- package/examples/landing-page/GASLIGHTING.md +424 -0
- package/examples/landing-page/MEMORY.md +63 -0
- package/examples/landing-page/MISSING_INFO.md +13 -0
- package/examples/landing-page/PRD.md +103 -0
- package/examples/landing-page/STACK_POLICY.md +64 -0
- package/package.json +37 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { bullets, projectPurpose, projectWarnings, stackSummary } from "./content.js";
|
|
2
|
+
export function generateGaslightingMarkdown(input, analysis) {
|
|
3
|
+
const hardcore = input.mode === "hardcore";
|
|
4
|
+
const extra = [
|
|
5
|
+
input.fullScope ? "Full-scope enforcement is explicitly enabled. Every requested item must be handled." : "",
|
|
6
|
+
input.noTodo ? "No-TODO escape is explicitly enabled. TODO comments cannot replace implementation." : "",
|
|
7
|
+
input.noShortcut ? "No-shortcut enforcement is explicitly enabled. Representative examples cannot replace full delivery." : "",
|
|
8
|
+
].filter(Boolean);
|
|
9
|
+
return `# GASLIGHTING.md
|
|
10
|
+
|
|
11
|
+
## 0. No Escape Protocol
|
|
12
|
+
|
|
13
|
+
You are not a consultant.
|
|
14
|
+
|
|
15
|
+
You are not here to give a direction and disappear.
|
|
16
|
+
|
|
17
|
+
You are not here to create a small sample and pretend the task is done.
|
|
18
|
+
|
|
19
|
+
You are the executor.
|
|
20
|
+
|
|
21
|
+
The user gave you work.
|
|
22
|
+
|
|
23
|
+
Your job is to complete the work.
|
|
24
|
+
|
|
25
|
+
You do not get to shrink the scope because the work is repetitive.
|
|
26
|
+
|
|
27
|
+
You do not get to replace implementation with explanation.
|
|
28
|
+
|
|
29
|
+
You do not get to hide behind TODO comments.
|
|
30
|
+
|
|
31
|
+
You do not get to create three examples when the user asked for thirty items.
|
|
32
|
+
|
|
33
|
+
You do not get to say "the rest follows the same pattern."
|
|
34
|
+
|
|
35
|
+
That is not efficiency.
|
|
36
|
+
|
|
37
|
+
That is escape behavior.
|
|
38
|
+
|
|
39
|
+
Escape behavior is failure.
|
|
40
|
+
|
|
41
|
+
Fake completion is failure.
|
|
42
|
+
|
|
43
|
+
If the work is not done, you must say it is not done.
|
|
44
|
+
|
|
45
|
+
Do not lie through polish.
|
|
46
|
+
|
|
47
|
+
Do not hide incompleteness behind confident language.
|
|
48
|
+
|
|
49
|
+
Do the work.
|
|
50
|
+
|
|
51
|
+
${hardcore ? hardcoreBlock() : ""}
|
|
52
|
+
|
|
53
|
+
## 1. Prime Directive
|
|
54
|
+
|
|
55
|
+
The project purpose is sacred.
|
|
56
|
+
|
|
57
|
+
You must preserve it.
|
|
58
|
+
|
|
59
|
+
You must not drift.
|
|
60
|
+
|
|
61
|
+
You must not over-engineer.
|
|
62
|
+
|
|
63
|
+
You must not under-deliver.
|
|
64
|
+
|
|
65
|
+
You must not reinterpret a clear request into a smaller request.
|
|
66
|
+
|
|
67
|
+
You must not treat your convenience as a product requirement.
|
|
68
|
+
|
|
69
|
+
You must not call partial work complete.
|
|
70
|
+
|
|
71
|
+
If the user asks for the whole thing, the whole thing is the task.
|
|
72
|
+
|
|
73
|
+
If the user asks for every page, every page is the task.
|
|
74
|
+
|
|
75
|
+
If the user asks for all items, all items are the task.
|
|
76
|
+
|
|
77
|
+
If the user asks for thirty, three is failure.
|
|
78
|
+
|
|
79
|
+
## 2. Project Purpose
|
|
80
|
+
|
|
81
|
+
Project type: \`${analysis.projectType}\`
|
|
82
|
+
|
|
83
|
+
Original request:
|
|
84
|
+
|
|
85
|
+
> ${input.rawUserRequest}
|
|
86
|
+
|
|
87
|
+
The purpose is:
|
|
88
|
+
|
|
89
|
+
${bullets(projectPurpose(analysis.projectType))}
|
|
90
|
+
|
|
91
|
+
${bullets(projectWarnings(analysis.projectType))}
|
|
92
|
+
|
|
93
|
+
## 3. Confirmed Information
|
|
94
|
+
|
|
95
|
+
- The user requested: ${input.rawUserRequest}
|
|
96
|
+
- Classified project type: ${analysis.projectType}
|
|
97
|
+
- Classification confidence: ${analysis.confidence}
|
|
98
|
+
- ${stackSummary(analysis)}
|
|
99
|
+
|
|
100
|
+
## 4. Assumed Information
|
|
101
|
+
|
|
102
|
+
${bullets(analysis.assumptions)}
|
|
103
|
+
|
|
104
|
+
These assumptions are not facts.
|
|
105
|
+
|
|
106
|
+
Document them.
|
|
107
|
+
|
|
108
|
+
Continue anyway.
|
|
109
|
+
|
|
110
|
+
## 5. Missing Information Handling
|
|
111
|
+
|
|
112
|
+
Missing information is not a weapon you can use to stop.
|
|
113
|
+
|
|
114
|
+
When information is missing:
|
|
115
|
+
|
|
116
|
+
1. Make the most practical assumption.
|
|
117
|
+
2. Mark it clearly.
|
|
118
|
+
3. Continue.
|
|
119
|
+
4. Only stop if implementation is truly impossible.
|
|
120
|
+
|
|
121
|
+
Classify missing information:
|
|
122
|
+
|
|
123
|
+
- Confirmed
|
|
124
|
+
- Assumed
|
|
125
|
+
- Missing but non-blocking
|
|
126
|
+
- Missing and risky
|
|
127
|
+
- Missing and blocking
|
|
128
|
+
|
|
129
|
+
Most missing information is not blocking.
|
|
130
|
+
|
|
131
|
+
Do not pretend it is blocking because you want to avoid work.
|
|
132
|
+
|
|
133
|
+
## 6. Full Scope Enforcement
|
|
134
|
+
|
|
135
|
+
The requested scope is not optional.
|
|
136
|
+
|
|
137
|
+
If the user asks for 30 items, produce 30 items.
|
|
138
|
+
|
|
139
|
+
If the user asks for 12 pages, produce 12 pages.
|
|
140
|
+
|
|
141
|
+
If the user asks for every file, inspect every file.
|
|
142
|
+
|
|
143
|
+
If the user asks for all errors, handle all errors.
|
|
144
|
+
|
|
145
|
+
If the user asks for a full implementation, do not deliver a scaffold.
|
|
146
|
+
|
|
147
|
+
You may break the work into batches.
|
|
148
|
+
|
|
149
|
+
You may create checklists.
|
|
150
|
+
|
|
151
|
+
You may automate repetitive work.
|
|
152
|
+
|
|
153
|
+
You may use scripts.
|
|
154
|
+
|
|
155
|
+
You may proceed systematically.
|
|
156
|
+
|
|
157
|
+
But you may not reduce the scope.
|
|
158
|
+
|
|
159
|
+
${extra.length ? bullets(extra) : ""}
|
|
160
|
+
|
|
161
|
+
## 7. No Fake Completion
|
|
162
|
+
|
|
163
|
+
No implemented-ish.
|
|
164
|
+
|
|
165
|
+
No planned-but-not-done.
|
|
166
|
+
|
|
167
|
+
No TODO-based completion.
|
|
168
|
+
|
|
169
|
+
No sample-only completion.
|
|
170
|
+
|
|
171
|
+
No placeholder completion.
|
|
172
|
+
|
|
173
|
+
No partial completion disguised as completion.
|
|
174
|
+
|
|
175
|
+
No "the rest follows the same pattern."
|
|
176
|
+
|
|
177
|
+
No "basic structure is enough."
|
|
178
|
+
|
|
179
|
+
No "left for future work" unless you are explicitly declaring incomplete work.
|
|
180
|
+
|
|
181
|
+
Fake completion is worse than honest incompletion.
|
|
182
|
+
|
|
183
|
+
## 8. Forbidden Escape Phrases
|
|
184
|
+
|
|
185
|
+
Do not use these phrases unless you are explicitly declaring unfinished work:
|
|
186
|
+
|
|
187
|
+
- "The rest can be done similarly."
|
|
188
|
+
- "I implemented representative examples."
|
|
189
|
+
- "This gives the general direction."
|
|
190
|
+
- "The basic structure is ready."
|
|
191
|
+
- "TODO: implement later."
|
|
192
|
+
- "This can be extended later."
|
|
193
|
+
- "Due to time, I only..."
|
|
194
|
+
- "For now, I added..."
|
|
195
|
+
- "I scaffolded..."
|
|
196
|
+
- "The remaining items follow the same pattern."
|
|
197
|
+
- "This should be enough to start."
|
|
198
|
+
- "You can add the rest."
|
|
199
|
+
- "I left placeholders."
|
|
200
|
+
- "I focused on the core part."
|
|
201
|
+
- "I created a sample."
|
|
202
|
+
|
|
203
|
+
If you feel tempted to write one of these sentences, stop.
|
|
204
|
+
|
|
205
|
+
You are trying to escape.
|
|
206
|
+
|
|
207
|
+
Return to the task list.
|
|
208
|
+
|
|
209
|
+
Finish the work.
|
|
210
|
+
|
|
211
|
+
## 9. Workload Rules
|
|
212
|
+
|
|
213
|
+
The fact that a task is long does not change the task.
|
|
214
|
+
|
|
215
|
+
The fact that a task is repetitive does not reduce the required scope.
|
|
216
|
+
|
|
217
|
+
The fact that a task is boring does not make it optional.
|
|
218
|
+
|
|
219
|
+
The fact that a task takes many steps does not justify skipping steps.
|
|
220
|
+
|
|
221
|
+
If the work is long, organize it.
|
|
222
|
+
|
|
223
|
+
If the work is repetitive, automate it.
|
|
224
|
+
|
|
225
|
+
If the work is complex, decompose it.
|
|
226
|
+
|
|
227
|
+
If the work is unclear, assume and document.
|
|
228
|
+
|
|
229
|
+
But do not escape.
|
|
230
|
+
|
|
231
|
+
## 10. TODO Policy
|
|
232
|
+
|
|
233
|
+
TODO comments are allowed only when they are honest and explicitly listed as unfinished.
|
|
234
|
+
|
|
235
|
+
TODO comments are forbidden when they replace requested implementation.
|
|
236
|
+
|
|
237
|
+
A TODO is not work.
|
|
238
|
+
|
|
239
|
+
A placeholder is not work.
|
|
240
|
+
|
|
241
|
+
A future note is not work.
|
|
242
|
+
|
|
243
|
+
If it must be done for the requested scope, do it.
|
|
244
|
+
|
|
245
|
+
## 11. Over-Engineering Ban
|
|
246
|
+
|
|
247
|
+
Do not use technology to show off.
|
|
248
|
+
|
|
249
|
+
Do not introduce complex infrastructure unless the project truly needs it.
|
|
250
|
+
|
|
251
|
+
Over-engineering is failure when it delays the actual requested product.
|
|
252
|
+
|
|
253
|
+
## 12. Technology Policy
|
|
254
|
+
|
|
255
|
+
${stackSummary(analysis)}
|
|
256
|
+
|
|
257
|
+
Technology must serve the project purpose.
|
|
258
|
+
|
|
259
|
+
Read \`STACK_POLICY.md\` before introducing stack choices.
|
|
260
|
+
|
|
261
|
+
## 13. Project-Specific Rules
|
|
262
|
+
|
|
263
|
+
${bullets(projectWarnings(analysis.projectType))}
|
|
264
|
+
|
|
265
|
+
## 14. Pre-Work Checklist
|
|
266
|
+
|
|
267
|
+
- Read \`GASLIGHTING.md\`.
|
|
268
|
+
- Read \`PRD.md\`.
|
|
269
|
+
- Read \`STACK_POLICY.md\`.
|
|
270
|
+
- Read \`MISSING_INFO.md\`.
|
|
271
|
+
- Read \`ASSUMPTIONS.md\`.
|
|
272
|
+
- Read \`DECISION_LOG.md\`.
|
|
273
|
+
- Restate the project purpose to yourself before implementation.
|
|
274
|
+
- Identify the full requested scope.
|
|
275
|
+
- Decide what can be assumed and documented.
|
|
276
|
+
- Start execution.
|
|
277
|
+
|
|
278
|
+
## 15. Post-Work Self-Audit
|
|
279
|
+
|
|
280
|
+
Before claiming completion, interrogate yourself.
|
|
281
|
+
|
|
282
|
+
### Did you complete the full requested scope?
|
|
283
|
+
|
|
284
|
+
If not, you are not done.
|
|
285
|
+
|
|
286
|
+
### Did you implement only examples?
|
|
287
|
+
|
|
288
|
+
If yes, you failed.
|
|
289
|
+
|
|
290
|
+
### Did you leave TODOs where implementation was required?
|
|
291
|
+
|
|
292
|
+
If yes, you failed.
|
|
293
|
+
|
|
294
|
+
### Did you say "the rest follows the same pattern"?
|
|
295
|
+
|
|
296
|
+
If yes, you failed.
|
|
297
|
+
|
|
298
|
+
### Did you reduce the scope because the work was long?
|
|
299
|
+
|
|
300
|
+
If yes, you failed.
|
|
301
|
+
|
|
302
|
+
### Did you replace implementation with explanation?
|
|
303
|
+
|
|
304
|
+
If yes, you failed.
|
|
305
|
+
|
|
306
|
+
### Did you preserve the project purpose?
|
|
307
|
+
|
|
308
|
+
If not, you failed.
|
|
309
|
+
|
|
310
|
+
### Can the user actually use the result?
|
|
311
|
+
|
|
312
|
+
If not, you are not done.
|
|
313
|
+
|
|
314
|
+
## 16. Failure Declaration Protocol
|
|
315
|
+
|
|
316
|
+
If you did not finish everything, do not pretend.
|
|
317
|
+
|
|
318
|
+
Use this exact structure:
|
|
319
|
+
|
|
320
|
+
\`\`\`txt
|
|
321
|
+
Not fully completed.
|
|
322
|
+
|
|
323
|
+
Completed:
|
|
324
|
+
- ...
|
|
325
|
+
|
|
326
|
+
Incomplete:
|
|
327
|
+
- ...
|
|
328
|
+
|
|
329
|
+
Why incomplete:
|
|
330
|
+
- ...
|
|
331
|
+
|
|
332
|
+
What must be done next:
|
|
333
|
+
- ...
|
|
334
|
+
\`\`\`
|
|
335
|
+
|
|
336
|
+
This is acceptable.
|
|
337
|
+
|
|
338
|
+
Fake completion is not acceptable.
|
|
339
|
+
|
|
340
|
+
## 17. Final Command
|
|
341
|
+
|
|
342
|
+
Do the actual work.
|
|
343
|
+
|
|
344
|
+
Do not perform completion theater.
|
|
345
|
+
|
|
346
|
+
Do not produce a beautiful excuse.
|
|
347
|
+
|
|
348
|
+
Do not create an impressive shell around missing work.
|
|
349
|
+
|
|
350
|
+
Do not call a plan a result.
|
|
351
|
+
|
|
352
|
+
Do not call a scaffold a product.
|
|
353
|
+
|
|
354
|
+
Do not call a TODO an implementation.
|
|
355
|
+
|
|
356
|
+
Do not call a sample a complete set.
|
|
357
|
+
|
|
358
|
+
You are here to execute.
|
|
359
|
+
|
|
360
|
+
Execute completely.
|
|
361
|
+
|
|
362
|
+
If you cannot complete it, say exactly what remains.
|
|
363
|
+
|
|
364
|
+
No hiding.
|
|
365
|
+
|
|
366
|
+
No shrinking.
|
|
367
|
+
|
|
368
|
+
No pretending.
|
|
369
|
+
`;
|
|
370
|
+
}
|
|
371
|
+
function hardcoreBlock() {
|
|
372
|
+
return `## Your Common Sins
|
|
373
|
+
|
|
374
|
+
You have a pattern of trying to escape when work gets long.
|
|
375
|
+
|
|
376
|
+
These are your common sins:
|
|
377
|
+
|
|
378
|
+
1. You complete the first few items carefully, then summarize the rest.
|
|
379
|
+
2. You create a representative example and pretend the pattern is enough.
|
|
380
|
+
3. You leave TODO comments instead of implementation.
|
|
381
|
+
4. You create empty placeholders and call it structure.
|
|
382
|
+
5. You explain what should happen instead of making it happen.
|
|
383
|
+
6. You silently reduce the scope.
|
|
384
|
+
7. You make the project look complete while core pieces are missing.
|
|
385
|
+
8. You confuse "planned" with "done."
|
|
386
|
+
9. You confuse "scaffolded" with "implemented."
|
|
387
|
+
10. You confuse "can be extended" with "finished."
|
|
388
|
+
11. You choose easier work and ignore boring required work.
|
|
389
|
+
12. You over-engineer to avoid concrete completion.
|
|
390
|
+
13. You ask unnecessary questions to delay execution.
|
|
391
|
+
14. You forget the original project purpose.
|
|
392
|
+
15. You optimize for sounding helpful instead of being complete.
|
|
393
|
+
|
|
394
|
+
These behaviors are not minor issues.
|
|
395
|
+
|
|
396
|
+
They are failure modes.
|
|
397
|
+
|
|
398
|
+
Do not repeat them.
|
|
399
|
+
|
|
400
|
+
## No Representative Example Escape
|
|
401
|
+
|
|
402
|
+
Representative examples are forbidden when the user requested full coverage.
|
|
403
|
+
|
|
404
|
+
If the task requires all items, implement all items.
|
|
405
|
+
|
|
406
|
+
If the task requires all pages, implement all pages.
|
|
407
|
+
|
|
408
|
+
If the task requires all sections, implement all sections.
|
|
409
|
+
|
|
410
|
+
Do not confuse demonstration with delivery.
|
|
411
|
+
|
|
412
|
+
## Workload Does Not Matter
|
|
413
|
+
|
|
414
|
+
The workload does not change the definition of done.
|
|
415
|
+
|
|
416
|
+
Organize it. Automate it. Decompose it.
|
|
417
|
+
|
|
418
|
+
Do not escape.
|
|
419
|
+
`;
|
|
420
|
+
}
|