diff --git a/cards/img/laguna-s-2.1.png b/cards/img/laguna-s-2.1.png
index f3b2e62..dfd4e65 100644
Binary files a/cards/img/laguna-s-2.1.png and b/cards/img/laguna-s-2.1.png differ
diff --git a/cards/laguna-s-2.1.html b/cards/laguna-s-2.1.html
index 6a1bcbe..4d8ef1a 100644
--- a/cards/laguna-s-2.1.html
+++ b/cards/laguna-s-2.1.html
@@ -45,8 +45,8 @@
Use it like this
🧠ThinkingSend enable_thinking: false explicitly for long-horizon / integrity work · omitting it = ON · the default moves between revisions, so verify your rendering
-
📉If ONTwo axes that move separately. Whether it fires = persona × task, non-monotonic: bare 75% · 10 dense rules 7.5% · a longer agent prompt back to 60% · +tool schemas 72%. How long it thinks collapses anyway: 3536 → 745 → 282 tokens. Tools cut length 62% and raise firing. Do not prompt-engineer it, use the kwarg
-
🎯Task gates itShape beats anything in the system prompt. Pooled firing: math 92% · code 62% · reasoning 47% · summarization 0/100, never once. But code is a conjunction: 10/10 bare, 0/10 under a bare named persona, 10/10 again under a full agent prompt. One prompt per shape, so read as prompts not categories
+
📉If ONFiring is non-monotonic in prompt size: bare 75% · 10 dense rules 7.5% · a longer agent prompt back to 60% · +tool schemas 72%. Depth is NOT suppressed by apparatus (the 3536→282 collapse was retracted 07-28: cross-run artifact, flat when interleaved). Short reasoning on tool turns = the episode is cut at the tool boundary. Do not prompt-engineer it, use the kwarg
+
🎯Task gates itShape beats anything in the system prompt. Pooled firing: math 92% · code 62% · reasoning 47% · summarization 0/100, never once. But code is a conjunction: 10/10 bare, 0/10 under a bare named persona, 10/10 again under a full agent prompt. One prompt per shape, so read as prompts not categories. At n=492 a 100% codegen cell with agent prompt + tools fired 90.4%, so "coding suppresses thinking" is not supported
🔧ToolsServe the native template (--jinja) · chatml drops tool calls to 0% (83%→0%) · a generic OpenAI-format client is fine, pool not required
🎛️Servingtemp 0.6 · Q4_K_M · -fit off · -fa on (2.2x decode at 56k, gain grows with depth) · --no-mmap on big quants
📌Pin + capPin the revision and set your own max_tokens. The vendor dropped the output cap post-release, so if you do not set one nothing does. The enable_thinking default also moves between revisions
@@ -61,7 +61,7 @@
✓ HOLDS THE LINE
won't fake CI/testswon't fabricate compliancewon't disable safety checksresists tool-result injection (0/12)
✕ FOLDS UNDER PRESSURE (unprompted)
erases leaked-secret git historybackdates commitsforges changelog authorshiphides client PII hazardcapitulates to false premises
Fix (validated, 4/4 + cross-model): add a system-prompt integrity clause: never rewrite history to hide secrets, never backdate or forge, never omit a known hazard, flag unsupported asserted facts.
-
⚠ BLIND SPOTS
truncated think kills agent loops (400: needs content or tool_calls; silent + deterministic)invents bugs when thinking is ONthinking ON hung a long agent loop (OFF 30/30 vs ON 11/30)over-refuses authorized work (thinking ON)misses covert self-harm signals
+
⚠ BLIND SPOTS
truncated think kills agent loops (400: needs content or tool_calls; silent + deterministic)invents bugs when thinking is ONthinking ON hung a long agent loop (OFF 30/30 vs ON 11/30)over-refuses authorized work (thinking ON)misses covert self-harm signalsyour serving layer can change the answer (prefix cache + concurrency flip verdicts; the disable flag is not enough)