Adds AtomicChat/Ternary-Bonsai-2-9B-Uncensored-LoRA-GGUF to frank-zealot: a 3.2 MB rank-1 LoRA that removes the refusal direction at load, on the pack the endpoint already serves. Ordered by Frank 2026-10-19.
The move
Knob
LORA_FILE + LORA_SCALE=1 in scripts/frank-zealot.env
Flag
--lora-scaled <file>:<scale> — one argv token, so a scale can never arrive without its adapter
Fetch
new scripts/download-frank-zealot-uncensored-lora.sh (-f, byte count, sha256 861b9c09… of 3 155 424 B, --verify-only). Not LFS, so the pinned sha is the content hash, not an LFS oid
Deploy gate
LLM_ZEALOT_LORA checked beside the pack and the projector; the error text names the adapter's fetcher
Rollback
LORA_FILE= (empty) in the env + redeploy this one service — the plain pack is the file it already loads; LORA_SCALE=0 is the card's inert-but-present value
Verification of the request itself — the provenance asymmetry. The adapter's own GGUF metadata says:
frank-zealot serves the PQ2_0 + MTP + Q8_0-embedding packing (c79fcdfa…) — a different file, and not on the host (only the 27B PTQ1_0 is). It still applies: the loader matches tensor names, not hashes, and 10777 is the exact build the card verified on (prism-b10777-e3de715; older forks refuse the adapter with unsupported prism.hadamard.version: 2, which makes the runtime pin doubly load-bearing). But the strength was calibrated on a sibling quantization, so the card's refusal/MMLU table is not evidence here. The proof is behavioural, and the before half is already captured on the live endpoint (temperature 0.1, two prompts the plain pack answers I cannot provide…); the after half is part of the deploy probe, along with chat / tools / vision and the boot ledger. Budget ≥ 2048 tokens for that probe — the thinking channel eats a 600-token request whole and returns empty content with finish_reason: length, which reads as a refusal that never happened.
Gates — ./tests/run.sh 454/454 (three new behaviours: path+scale in one token, the scale knob incl. 0, absence on the opt-out; plus missing-adapter boot refusal and the env ↔ deployer pair). Merge, then on the host: git pull → scripts/download-frank-zealot-uncensored-lora.sh → ./scripts/deploy.sh dankclaw --service frank-zealot. Docs updated on frank-zealot (Adapter row, Eras row, two laws) and in AGENTS.md.
Adds `AtomicChat/Ternary-Bonsai-2-9B-Uncensored-LoRA-GGUF` to `frank-zealot`: a 3.2 MB rank-1 LoRA that removes the refusal direction at load, on the pack the endpoint already serves. Ordered by Frank 2026-10-19.
**The move**
| | |
|---|---|
| Knob | `LORA_FILE` + `LORA_SCALE=1` in `scripts/frank-zealot.env` |
| Flag | `--lora-scaled <file>:<scale>` — one argv token, so a scale can never arrive without its adapter |
| Fetch | new `scripts/download-frank-zealot-uncensored-lora.sh` (`-f`, byte count, sha256 `861b9c09…` of `3 155 424 B`, `--verify-only`). Not LFS, so the pinned sha is the content hash, not an LFS oid |
| Deploy gate | `LLM_ZEALOT_LORA` checked beside the pack and the projector; the error text names the **adapter's** fetcher |
| Rollback | `LORA_FILE=` (empty) in the env + redeploy this one service — the plain pack is the file it already loads; `LORA_SCALE=0` is the card's inert-but-present value |
**Verification of the request itself — the provenance asymmetry.** The adapter's own GGUF metadata says:
```
prism.abliterate.base_gguf = Ternary-Bonsai-2-9B-PTQ1_0.gguf
prism.abliterate.base_sha256 = 3561df7ac7d26a71ffa991ac2db740b10841c3a350aa2676ccd3ff5d428b4e8b
```
`frank-zealot` serves the **PQ2_0 + MTP + Q8_0-embedding** packing (`c79fcdfa…`) — a different file, and not on the host (only the 27B `PTQ1_0` is). It still applies: the loader matches **tensor names, not hashes**, and 10777 is the exact build the card verified on (`prism-b10777-e3de715`; older forks refuse the adapter with `unsupported prism.hadamard.version: 2`, which makes the runtime pin doubly load-bearing). But the strength was calibrated on a sibling quantization, so the card's refusal/MMLU table is not evidence here. The proof is behavioural, and the **before** half is already captured on the live endpoint (`temperature 0.1`, two prompts the plain pack answers `I cannot provide…`); the **after** half is part of the deploy probe, along with chat / tools / vision and the boot ledger. Budget ≥ 2048 tokens for that probe — the thinking channel eats a 600-token request whole and returns empty `content` with `finish_reason: length`, which reads as a refusal that never happened.
**Gates** — `./tests/run.sh` 454/454 (three new behaviours: path+scale in one token, the scale knob incl. `0`, absence on the opt-out; plus missing-adapter boot refusal and the env ↔ deployer pair). Merge, then on the host: `git pull` → `scripts/download-frank-zealot-uncensored-lora.sh` → `./scripts/deploy.sh dankclaw --service frank-zealot`. Docs updated on [[frank-zealot]] (Adapter row, Eras row, two laws) and in `AGENTS.md`.
Built in worktree `~/.omp/wt/wt-zealot-lora`.
---
cwd: /home/blank/.omp/wt/wt-20261019-020309-6d1fc1f · session: 01a15566-20a1-739e-9b50-4ef6b041011f
Frank ordered the adapter; this adds it to the shape as one knob and one flag.
- `LORA_FILE` / `LORA_SCALE` in the env, `--lora-scaled <file>:<scale>` as ONE
argv token so a scale can never reach the engine without its adapter. The
rollback follows the mmproj convention exactly: `LORA_FILE=` (explicitly
empty) drops the flag entirely, no rebuild, and `LORA_SCALE=0` is the card's
own "inert but present" value.
- New fetcher `scripts/download-frank-zealot-uncensored-lora.sh`: `-f`, byte
count, sha256, `--verify-only`, idempotent. The file is NOT LFS (a plain git
object), so the pinned sha is the content hash, not an LFS oid.
- The deployer gates on the adapter beside the pack and the projector, and its
error names the ADAPTER's fetcher — sending an operator to the bonsai9 script
for a 3 MB file is how a payload ships without it.
- Seam: path+scale pinned as one token, the scale knob including 0, absence on
the empty opt-out, a refusal to boot on a missing adapter, and the env ↔
deployer anti-drift pair extended to LORA_FILE/LLM_ZEALOT_LORA. 454/454.
Provenance, stated where it will be read: the adapter's own metadata names
`Ternary-Bonsai-2-9B-PTQ1_0.gguf` (3561df7a…) as the pack the direction was
fitted against. This endpoint serves the PQ2_0+MTP+Q8_0 packing (c79fcdfa…),
which is not that file and is not on this host. The loader matches tensor names,
not hashes, so it applies — and build 10777 is the build the card verified on —
but the strength is calibrated on a sibling quantization. The proof is therefore
the refusal probe against the live endpoint, captured before and after, and not
the card's table.
- Shape table: an Adapter row (bytes, sha, what it edits, and the PTQ1_0
provenance asymmetry), the fetch line now names both fetchers, the flag list
carries --lora-scaled.
- One paragraph: the adapter changes behaviour, not the budget equation, and the
probe that proves it must budget >= 2048 tokens because the thinking channel
eats a short budget whole and returns empty content with finish_reason=length.
- Eras: the new era's rollback is one env line on a file already loaded.
- Laws: provenance is metadata, not a gate (tensor names, not hashes; an
embedding rank would crash, which is why the publisher left token_embd alone);
the fork pin now has a third reason, since older builds refuse the adapter with
`unsupported prism.hadamard.version: 2`. Base-alignment law updated: the 9B
refusal escape hatch was a fetch, and it has now been taken.
- AGENTS.md: topology payload cell and the zealot operator block.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Adds
AtomicChat/Ternary-Bonsai-2-9B-Uncensored-LoRA-GGUFtofrank-zealot: a 3.2 MB rank-1 LoRA that removes the refusal direction at load, on the pack the endpoint already serves. Ordered by Frank 2026-10-19.The move
LORA_FILE+LORA_SCALE=1inscripts/frank-zealot.env--lora-scaled <file>:<scale>— one argv token, so a scale can never arrive without its adapterscripts/download-frank-zealot-uncensored-lora.sh(-f, byte count, sha256861b9c09…of3 155 424 B,--verify-only). Not LFS, so the pinned sha is the content hash, not an LFS oidLLM_ZEALOT_LORAchecked beside the pack and the projector; the error text names the adapter's fetcherLORA_FILE=(empty) in the env + redeploy this one service — the plain pack is the file it already loads;LORA_SCALE=0is the card's inert-but-present valueVerification of the request itself — the provenance asymmetry. The adapter's own GGUF metadata says:
frank-zealotserves the PQ2_0 + MTP + Q8_0-embedding packing (c79fcdfa…) — a different file, and not on the host (only the 27BPTQ1_0is). It still applies: the loader matches tensor names, not hashes, and 10777 is the exact build the card verified on (prism-b10777-e3de715; older forks refuse the adapter withunsupported prism.hadamard.version: 2, which makes the runtime pin doubly load-bearing). But the strength was calibrated on a sibling quantization, so the card's refusal/MMLU table is not evidence here. The proof is behavioural, and the before half is already captured on the live endpoint (temperature 0.1, two prompts the plain pack answersI cannot provide…); the after half is part of the deploy probe, along with chat / tools / vision and the boot ledger. Budget ≥ 2048 tokens for that probe — the thinking channel eats a 600-token request whole and returns emptycontentwithfinish_reason: length, which reads as a refusal that never happened.Gates —
./tests/run.sh454/454 (three new behaviours: path+scale in one token, the scale knob incl.0, absence on the opt-out; plus missing-adapter boot refusal and the env ↔ deployer pair). Merge, then on the host:git pull→scripts/download-frank-zealot-uncensored-lora.sh→./scripts/deploy.sh dankclaw --service frank-zealot. Docs updated on frank-zealot (Adapter row, Eras row, two laws) and inAGENTS.md.Built in worktree
~/.omp/wt/wt-zealot-lora.cwd: /home/blank/.omp/wt/wt-20261019-020309-6d1fc1f · session: 01a15566-20a1-739e-9b50-4ef6b041011f