kodelyth-ecc 1.7.2 → 1.7.3

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,301 @@
1
+ # VIDEO 2 — "How the compound memory works"
2
+
3
+ **Duration:** 8–10 minutes
4
+ **Platform:** YouTube (technical audience — engineers who care about architecture)
5
+ **Hook:** "Your AI has no memory. But yours does."
6
+ **Goal:** Drive installs + explain the unique differentiator
7
+ **Screen setup:** Terminal + code editor + browser (dashboard)
8
+
9
+ ---
10
+
11
+ ## FULL SCRIPT
12
+
13
+ ---
14
+
15
+ ### [0:00–0:20] COLD OPEN
16
+
17
+ **[SCREEN: Two Claude Code sessions side by side — one with blank context, one with a memory recall injection]**
18
+
19
+ **NARRATION:**
20
+ > "This is your AI without memory."
21
+ > "And this is your AI with Kodelyth ECC's compound memory."
22
+
23
+ **[Left: clean AI asks basic questions about your stack]**
24
+ **[Right: AI opens with — "I checked your memory — you've solved a similar Stripe webhook issue before. Raw body parser before signature validation. Want me to apply that?"]**
25
+
26
+ **NARRATION:**
27
+ > "Same model. Different context. Completely different output."
28
+ > "Let me show you how this works — and why it compounds over time."
29
+
30
+ **[TITLE CARD: Kodelyth ECC — Compound Memory Architecture]**
31
+
32
+ ---
33
+
34
+ ### [0:20–1:30] THE PROBLEM: AI HAS NO MEMORY
35
+
36
+ **[SCREEN: Simple diagram — each AI session as an isolated bubble]**
37
+
38
+ **NARRATION:**
39
+ > "Here's the fundamental problem with AI coding tools."
40
+ > "Every session is a blank slate."
41
+
42
+ **[Draw/animate: session 1 bubble, session 2 bubble, session 3 — completely disconnected]**
43
+
44
+ **NARRATION:**
45
+ > "You solve a hard problem Monday. You close the chat. Tuesday — it's gone."
46
+ > "You join a new project three months later. You hit the same bug pattern you fixed before. You debug it from scratch. Again."
47
+
48
+ **[SCREEN: Typing the same question again]**
49
+
50
+ **NARRATION:**
51
+ > "This isn't a model problem. The models are brilliant. It's a context problem."
52
+ > "The model never knew about that fix. You never told it."
53
+ > "ECC closes that loop automatically."
54
+
55
+ ---
56
+
57
+ ### [1:30–3:00] THE THREE LAYERS
58
+
59
+ **[SCREEN: Diagram — three stacked layers]**
60
+
61
+ **NARRATION:**
62
+ > "ECC's compound memory has three layers. Each one is independent. Together they stack."
63
+
64
+ **[LAYER 1 — Project Lessons]**
65
+
66
+ **[Show: tasks/lessons.md in code editor]**
67
+
68
+ **NARRATION:**
69
+ > "Layer one: tasks/lessons.md — your project's permanent rulebook."
70
+ > "Every time you correct the AI — 'use pnpm not npm', 'never add try/catch without logging', 'we use Zod not Yup' — a hook at the end of the session extracts that correction and writes it here."
71
+
72
+ **[SCREEN: Show correction being typed in chat → session ends → lessons.md showing new rule]**
73
+
74
+ **NARRATION:**
75
+ > "Next session starts — this file is injected before the first message. The AI already knows your rules. You never repeat yourself."
76
+
77
+ **[SCREEN: Show lessons.md growing over time — week 1, month 1, month 3]**
78
+
79
+ **NARRATION:**
80
+ > "It compounds. Month one: 5 rules. Month three: 30 rules. The AI knows your tech stack, naming style, patterns you hate, tools you prefer. Zero ramp-up on every new task."
81
+
82
+ ---
83
+
84
+ **[LAYER 2 — Global BM25 Memory]**
85
+
86
+ **[SCREEN: ~/.kodelyth/memory/ in terminal]**
87
+
88
+ **NARRATION:**
89
+ > "Layer two: global memory. Stored at ~/.kodelyth/memory/. BM25 full-text search."
90
+
91
+ **[SCREEN: Show memories.jsonl file, then show dashboard Memory tab]**
92
+
93
+ **NARRATION:**
94
+ > "BM25 is the algorithm that powers early Google. Keyword weighting, term frequency, document frequency. Pure math — no embeddings, no neural network, no API calls."
95
+ > "Sub-millisecond recall. Zero dependencies. Works offline."
96
+
97
+ **[SCREEN: Show capture flow — problem/approach/tags format]**
98
+
99
+ **NARRATION:**
100
+ > "When you capture a memory, it stores: problem statement, approach that worked, gotchas, tags, language, project."
101
+
102
+ **[SCREEN: Show recall in action — type in dashboard search, results appear]**
103
+
104
+ **NARRATION:**
105
+ > "When you start a new session or type a prompt, ECC searches this store and injects relevant matches before your AI responds."
106
+ > "It's like your AI checked your notes first."
107
+
108
+ ---
109
+
110
+ **[LAYER 3 — Auto Chat Recall]**
111
+
112
+ **[SCREEN: Diagram showing UserPromptSubmit hook intercepting messages]**
113
+
114
+ **NARRATION:**
115
+ > "Layer three: auto chat recall. This one is invisible — which is why it's powerful."
116
+ > "Every message you type goes through a BM25 search before the AI sees it. If there's a relevant past memory, it's injected into the context automatically."
117
+ > "You just type normally. The recall happens in the background."
118
+
119
+ **[SCREEN: Terminal showing hook fires, memory injected, then AI response includes "based on your previous work..."]**
120
+
121
+ **NARRATION:**
122
+ > "Per-session repeat suppression — the same memory won't be injected twice in one session. Clean, no noise."
123
+
124
+ ---
125
+
126
+ ### [3:00–4:30] LIVE DEMO — THE FULL LOOP
127
+
128
+ **[SCREEN: Terminal + Claude Code]**
129
+
130
+ **NARRATION:**
131
+ > "Let me show you the full loop. We're going to capture a solution, then recall it five minutes later in a fresh session."
132
+
133
+ **[STEP 1: Session 1 — solve a problem]**
134
+
135
+ **[TYPE in chat:]**
136
+ ```
137
+ My Stripe webhook keeps returning 400 - invalid signature
138
+ ```
139
+
140
+ **[Show AI helping solve it — raw body parser issue]**
141
+
142
+ **[STEP 2: Capture the memory]**
143
+
144
+ **[TYPE in chat:]**
145
+ ```
146
+ /memory remember "Stripe webhook signature validation"
147
+ ```
148
+
149
+ **[Show capture confirmation — problem/approach/tags saved]**
150
+
151
+ **NARRATION:**
152
+ > "Captured. Stored at ~/.kodelyth/memory/memories.jsonl. Let me show you exactly what got saved."
153
+
154
+ **[Open terminal:]**
155
+ ```bash
156
+ tail -1 ~/.kodelyth/memory/memories.jsonl | jq .
157
+ ```
158
+
159
+ **[Show JSON output with problem, approach, tags, language]**
160
+
161
+ ---
162
+
163
+ **[STEP 3: New session — fresh context]**
164
+
165
+ **[Close Claude Code, reopen, fresh chat]**
166
+
167
+ **[TYPE:]**
168
+ ```
169
+ I need to add Stripe webhooks to my checkout flow
170
+ ```
171
+
172
+ **[Show response — memory injected at the top:]**
173
+ ```
174
+ I checked your memory — you solved a similar problem before:
175
+
176
+ "Stripe webhook signature validation" (captured 2 min ago)
177
+ → Raw body parser must come before express.json() middleware
178
+ → Use stripe.webhooks.constructEvent() not manual sig parsing
179
+ → Test with stripe-cli forward, not curl
180
+
181
+ Want me to apply this exact pattern?
182
+ ```
183
+
184
+ **NARRATION:**
185
+ > "Same session, different project. It recalled the fix before you even described the bug."
186
+ > "In real usage, this gap is months. And the value compounds every session."
187
+
188
+ ---
189
+
190
+ ### [4:30–6:00] THE COST WIN — PROMPT CACHE
191
+
192
+ **[SCREEN: Diagram — token costs, cache zone]**
193
+
194
+ **NARRATION:**
195
+ > "There's a financial angle to this that most people miss."
196
+
197
+ **[Show Anthropic pricing: 3$/M input, 0.30$/M cached]**
198
+
199
+ **NARRATION:**
200
+ > "Anthropic charges 10% for cached tokens. OpenAI auto-caches prefixes over 1024 tokens."
201
+ > "ECC's memory injection is designed as a stable prefix. The same content, in the same order, session after session."
202
+ > "That prefix hits the cache. Every long session, the repeated context is 90% cheaper."
203
+
204
+ **[SCREEN: Show example — 50,000 token session, 15,000 cached prefix]**
205
+
206
+ **NARRATION:**
207
+ > "If you do heavy AI coding sessions — hours per day — this adds up to real money over a month."
208
+
209
+ ---
210
+
211
+ ### [6:00–7:30] THE SELF-EVOLVING MEMORY (EVOLVE TAB)
212
+
213
+ **[SCREEN: Dashboard → Evolve tab]**
214
+
215
+ **NARRATION:**
216
+ > "The memory system also closes its own learning loop."
217
+
218
+ **[Show evolve tab with pending proposals]**
219
+
220
+ **NARRATION:**
221
+ > "ECC tracks which memories get recalled most often. When a pattern repeats enough times, it proposes a new skill — a permanent knowledge file that the AI uses on every relevant session."
222
+
223
+ **[Show a proposal in the dashboard — pending status]**
224
+
225
+ **NARRATION:**
226
+ > "Nothing is ever auto-applied. You review, accept, edit, then commit."
227
+ > "That's the design principle: the system proposes. You decide."
228
+
229
+ **[Show CLI:]**
230
+ ```bash
231
+ npx kodelyth-ecc evolve analyze
232
+ npx kodelyth-ecc evolve list
233
+ npx kodelyth-ecc evolve show <id>
234
+ npx kodelyth-ecc evolve accept <id>
235
+ ```
236
+
237
+ **NARRATION:**
238
+ > "The evolve CLI is your interface to the proposal pipeline."
239
+
240
+ ---
241
+
242
+ ### [7:30–8:30] PRIVACY — EVERYTHING LOCAL
243
+
244
+ **[SCREEN: Terminal]**
245
+
246
+ **NARRATION:**
247
+ > "One thing I want to be explicit about."
248
+
249
+ **[TYPE:]**
250
+ ```bash
251
+ ls -la ~/.kodelyth/memory/
252
+ ```
253
+
254
+ **[Show the files — memories.jsonl, indexes]**
255
+
256
+ **NARRATION:**
257
+ > "That's everything. A JSONL file on your disk."
258
+ > "No API call leaves your machine for memory operations. No server. No account. No sync unless you set it up yourself."
259
+
260
+ **[TYPE:]**
261
+ ```bash
262
+ npx kodelyth-ecc verify
263
+ ```
264
+
265
+ **[Show sha256 manifest verification running]**
266
+
267
+ **NARRATION:**
268
+ > "You can verify the entire installed toolkit against a sha256 manifest any time. Every file, every agent, every hook — verifiable."
269
+
270
+ ---
271
+
272
+ ### [8:30–9:00] CTA
273
+
274
+ **NARRATION:**
275
+ > "The memory layer is what makes ECC different from every other toolkit."
276
+ > "It's not a feature you toggle on. It's infrastructure that builds over time and saves you real hours."
277
+
278
+ **[SCREEN: npm install command]**
279
+
280
+ **[TYPE:]**
281
+ ```
282
+ npx kodelyth-ecc
283
+ ```
284
+
285
+ **NARRATION:**
286
+ > "github.com/sifxprime/kodelyth-ecc — link in description."
287
+ > "Next video: Devil Mode. 8 adversarial agents that read your code like an attacker. I'll show you what they find on a real project."
288
+
289
+ **[END CARD: subscribe, next video preview, github link]**
290
+
291
+ ---
292
+
293
+ ## B-ROLL / EDITING NOTES
294
+
295
+ - Animate the three-layer diagram with Figma or simple CSS animation
296
+ - Show REAL `memories.jsonl` content (blur personal project names if needed)
297
+ - The BM25 recall response must be real — test it, record it
298
+ - Dashboard footage: real session on localhost:5747
299
+ - Show the `jq` pipe — this builds technical credibility
300
+ - Music: same lo-fi track as Video 1 for consistency
301
+ - Thumbnail: "Your AI remembered. 5 months later. Different project." + memory icon
@@ -0,0 +1,294 @@
1
+ # VIDEO 3 — "Devil Mode: I audited my own codebase with 8 adversarial agents"
2
+
3
+ **Duration:** 10–12 minutes
4
+ **Platform:** YouTube (security engineers, senior devs, indie hackers pre-launch)
5
+ **Hook:** Real adversarial findings on a real project — not a demo, an actual audit
6
+ **Goal:** Show that ECC's devil mode produces real security value, not theater
7
+ **Screen setup:** Terminal + code editor + Claude Code/Windsurf on right
8
+
9
+ ---
10
+
11
+ ## FULL SCRIPT
12
+
13
+ ---
14
+
15
+ ### [0:00–0:25] COLD OPEN — Start with a finding
16
+
17
+ **[SCREEN: Claude Code showing a live devil-mode result]**
18
+
19
+ **NARRATION:**
20
+ > "This is a real finding."
21
+
22
+ **[Show output — e.g., a secret in a config file, or a GPL dep, or a prompt injection vector]**
23
+
24
+ **NARRATION:**
25
+ > "I ran 8 adversarial agents on my own project. In parallel. They found this in under 3 minutes."
26
+ > "And I had already done a 'security review' the week before."
27
+
28
+ **[TITLE CARD: Devil Mode — 8 adversarial agents. Attacker mindset.]**
29
+
30
+ ---
31
+
32
+ ### [0:25–1:30] WHY SECURITY REVIEWS FAIL
33
+
34
+ **[SCREEN: Simple diagram]**
35
+
36
+ **NARRATION:**
37
+ > "Most security reviews fail for a simple reason."
38
+ > "The person doing the review is the same person who wrote the code."
39
+ > "You can't unsee what you built. You have blind spots in exactly the places that matter."
40
+
41
+ **[Draw: developer → reviews own code → misses the thing they built]**
42
+
43
+ **NARRATION:**
44
+ > "An attacker has no such blind spot. They come in cold. They look at your code the way a stranger would."
45
+ > "Devil mode is that stranger."
46
+
47
+ **[SCREEN: List the 8 agents]**
48
+
49
+ **NARRATION:**
50
+ > "8 agents. Each one with a specific attack surface. All running in parallel."
51
+ > "Let me walk you through each one — then we'll run them live."
52
+
53
+ ---
54
+
55
+ ### [1:30–4:30] THE 8 AGENTS — QUICK TOUR
56
+
57
+ **[Show each agent as a card — name + what it hunts + one real grep pattern]**
58
+
59
+ **[AGENT 1: secret-hunter]**
60
+
61
+ **NARRATION:**
62
+ > "Secret hunter. This one looks for leaked credentials."
63
+ > "Not just obvious API keys — it digs into git history. Leaked secrets don't disappear when you delete the file. They live in every commit before you noticed."
64
+
65
+ **[SCREEN: Show bash pattern — `git log -p --all | grep -E 'AKIA|ghp_|sk-|SG\.'`]**
66
+
67
+ **NARRATION:**
68
+ > "AWS keys, GitHub tokens, Stripe secret keys, SendGrid API keys. All have distinctive prefixes. It knows them."
69
+
70
+ ---
71
+
72
+ **[AGENT 2: supply-chain-auditor]**
73
+
74
+ **NARRATION:**
75
+ > "Supply chain auditor. Your biggest attack surface is probably your node_modules."
76
+ > "It checks for typosquats — packages named almost like popular ones. It checks lockfile drift — packages that changed without a lockfile update. It reads install scripts."
77
+
78
+ **[SCREEN: Show a package with an install script that makes a network call]**
79
+
80
+ ---
81
+
82
+ **[AGENT 3: license-violation-finder]**
83
+
84
+ **NARRATION:**
85
+ > "License violation finder. If you're going open source, one GPL dependency contaminates your whole project under copyleft law."
86
+ > "This agent maps your dependency tree, identifies AGPL and GPL licenses, and flags anything that creates legal risk before you flip the repo public."
87
+
88
+ ---
89
+
90
+ **[AGENT 4: prompt-injection-hunter]**
91
+
92
+ **NARRATION:**
93
+ > "Prompt injection hunter. This one is for AI-powered features."
94
+ > "If your app takes user input and feeds it to an LLM — a chatbot, a RAG pipeline, a tool-calling agent — that input path is an attack surface."
95
+ > "Indirect injection. System prompt leak. Tool hijacking. This agent reads every LLM integration looking for those patterns."
96
+
97
+ ---
98
+
99
+ **[AGENT 5: jailbreak-tester]**
100
+
101
+ **NARRATION:**
102
+ > "Jailbreak tester. This one red-teams your AI features live."
103
+ > "It doesn't just read code — it sends adversarial inputs to your running AI and checks if your guardrails hold."
104
+
105
+ ---
106
+
107
+ **[AGENT 6: code-stealer-detector]**
108
+
109
+ **NARRATION:**
110
+ > "Code stealer detector. If you're shipping commercial software, you need to know if any block of code was copy-pasted from somewhere with a license that conflicts with yours."
111
+ > "This is especially critical for AI-generated code — Copilot and similar tools sometimes reproduce licensed training data."
112
+
113
+ ---
114
+
115
+ **[AGENT 7: backdoor-hunter]**
116
+
117
+ **NARRATION:**
118
+ > "Backdoor hunter. This one looks for malicious code patterns."
119
+ > "Obfuscated eval. Suspicious base64. Functions that encode URLs at runtime. Unexplained outbound connections."
120
+ > "If you received code from a contractor or vendored a library — this is the scan you run first."
121
+
122
+ ---
123
+
124
+ **[AGENT 8: chaos-engineer]**
125
+
126
+ **NARRATION:**
127
+ > "Chaos engineer. Not a security agent in the traditional sense — an adversarial reliability agent."
128
+ > "It asks: what happens when your database goes down? When your message queue fills up? When a downstream API times out at the worst moment?"
129
+ > "It maps your hidden assumptions and turns them into fault injection scenarios before your users find them."
130
+
131
+ ---
132
+
133
+ ### [4:30–7:30] LIVE AUDIT — REAL PROJECT
134
+
135
+ **[SCREEN: Terminal — running on a real sample project]**
136
+
137
+ **NARRATION:**
138
+ > "Let's run it. I'm going to use a real project — a Next.js SaaS starter I've been building."
139
+
140
+ **[TYPE in Claude Code / Windsurf chat:]**
141
+ ```
142
+ /devil-mode --pre-public
143
+ ```
144
+
145
+ **[Show the agents firing — show output appearing in real time]**
146
+
147
+ **NARRATION:**
148
+ > "Watch the agents fan out in parallel. Each one is running its own playbook simultaneously."
149
+
150
+ **[Wait for results — narrate as they come in:]**
151
+
152
+ **[Finding 1: secret-hunter]**
153
+
154
+ **NARRATION:**
155
+ > "Secret hunter flagged something. Let's look."
156
+
157
+ **[Show: a .env.example file that was committed with a real key accidentally]**
158
+
159
+ **NARRATION:**
160
+ > "Committed 3 months ago. I removed it, but it's in git history. Anyone who clones this repo can find it with `git log -p`."
161
+ > "This would have been a problem if I went public. Now it's not."
162
+
163
+ **[REMEDIATION shown: `git filter-branch` or BFG Repo Cleaner command]**
164
+
165
+ ---
166
+
167
+ **[Finding 2: supply-chain-auditor]**
168
+
169
+ **NARRATION:**
170
+ > "Supply chain flagged a package. Let me check."
171
+
172
+ **[Show: a dep with an install script that makes a network call to a third-party analytics service]**
173
+
174
+ **NARRATION:**
175
+ > "This package phones home on install. I had no idea. It's not malicious but it's not something I want happening silently."
176
+
177
+ ---
178
+
179
+ **[Finding 3: license-violation-finder]**
180
+
181
+ **NARRATION:**
182
+ > "License finder flagged one. LGPL-2.1 in a transitive dependency."
183
+ > "For my use case — commercial SaaS — this is fine if I keep it as a library. It's flagging for awareness, not as a blocker."
184
+ > "But if I was statically linking it, different story."
185
+
186
+ ---
187
+
188
+ **[Summary]**
189
+
190
+ **[Show the aggregated report:]**
191
+
192
+ ```
193
+ CRITICAL (1): Leaked secret in git history — rotate STRIPE_SECRET_KEY immediately
194
+ HIGH (1): Dependency phones home on install — audit or replace
195
+ MEDIUM (1): LGPL transitive dep — review linking model
196
+ LOW (2): Two advisory items
197
+ ```
198
+
199
+ **NARRATION:**
200
+ > "Three real findings I would have missed. The most important one — the leaked key — would have been a serious problem post-launch."
201
+ > "This took 3 minutes. Not 3 hours. Not a contractor invoice."
202
+
203
+ ---
204
+
205
+ ### [7:30–8:30] THE THREE FLAGS
206
+
207
+ **[SCREEN: Terminal]**
208
+
209
+ **NARRATION:**
210
+ > "Devil mode ships with three flags for different situations."
211
+
212
+ **[TYPE and explain each:]**
213
+
214
+ ```bash
215
+ /devil-mode # Default: 4 agents (secret, supply-chain, backdoor, prompt-injection)
216
+ /devil-mode --pre-public # Before going open source: adds license + code-stealer
217
+ /devil-mode --pre-launch # Before production launch: adds jailbreak-tester + chaos-engineer
218
+ /devil-mode --all # All 8 agents simultaneously
219
+ ```
220
+
221
+ **NARRATION:**
222
+ > "I recommend --pre-public every time you plan to open-source something. Non-negotiable."
223
+ > "--all for post-incident sweeps or high-stakes launches."
224
+
225
+ ---
226
+
227
+ ### [8:30–9:30] INDIVIDUAL AGENTS
228
+
229
+ **[SCREEN: Claude Code]**
230
+
231
+ **NARRATION:**
232
+ > "You can also call individual agents if you only need one angle."
233
+
234
+ **[TYPE:]**
235
+ ```
236
+ use secret-hunter
237
+ ```
238
+
239
+ **[Show it running]**
240
+
241
+ **NARRATION:**
242
+ > "Same agent, just one of them."
243
+ > "Useful when you added a new feature and only need the prompt injection sweep."
244
+
245
+ ---
246
+
247
+ ### [9:30–10:00] HOW IT'S DIFFERENT FROM A LINTER
248
+
249
+ **NARRATION:**
250
+ > "A question I get: how is this different from running a security linter?"
251
+
252
+ **[SCREEN: Split — linter output vs devil-mode output]**
253
+
254
+ **NARRATION:**
255
+ > "Linters catch syntax-level issues. SQL injection patterns. Known unsafe API calls. Static analysis."
256
+ > "Devil mode catches semantic issues. Why is this code making an outbound call? Why does this install script exist? Is this base64 innocent or suspicious? What happens to this system under adversarial conditions?"
257
+ > "Different tool. Different attack surface. You want both."
258
+
259
+ ---
260
+
261
+ ### [10:00–10:30] CTA
262
+
263
+ **NARRATION:**
264
+ > "If you're shipping software and you haven't run something like this — run it today."
265
+
266
+ **[TYPE:]**
267
+ ```bash
268
+ npx kodelyth-ecc
269
+ ```
270
+
271
+ **[Then in chat:]**
272
+ ```
273
+ /devil-mode --pre-public
274
+ ```
275
+
276
+ **NARRATION:**
277
+ > "github.com/sifxprime/kodelyth-ecc — zero telemetry, everything local, MIT license."
278
+ > "Next video: the MCP server — how to give LangGraph, AutoGen, or Claude Desktop access to all 70 agents and local memory. In one command."
279
+
280
+ **[END CARD]**
281
+
282
+ ---
283
+
284
+ ## B-ROLL / EDITING NOTES
285
+
286
+ - **USE A REAL PROJECT** — the credibility of this video depends on real findings, not demo setups
287
+ - If you don't want to show your own project, create a realistic sample project with planted issues
288
+ - Plant: one expired/rotated key in git history, one dep with install script, one GPL dep
289
+ - Record the `/devil-mode` run uncut — the waiting time builds tension and authenticity
290
+ - Show the `git log -p | grep` command for the secret finding
291
+ - Show BFG Repo Cleaner remediation or `git filter-branch` command
292
+ - Diagram for "attacker mindset vs author mindset" — 30-second simple animation
293
+ - Thumbnail: red background + "I ran 8 attackers on my own code" + devil emoji or adversarial icon
294
+ - This video will get shared in security communities — keep it technically precise