53 KiB
Persistent memory — eshpfi-management
Last updated: 2026-07-13
Repo purpose
Reference workspace for PFI infrastructure: server inventory, canonical
Docker Compose stacks, ops playbooks, and conventions. Authoritative
copies of compose files live on the servers under
/opt/docker/compose/<stack>/; this repo mirrors them for version
control, editing, planning, and CI-driven deploys. It was originally
spun up to handle the fleet backups — keep that lens when triaging
backup/storage issues.
Tools and conventions
Sister repos (separate gitea repos, deployed by playbooks here):
| Repo | Role | CI status |
|---|---|---|
vh/task-board |
MCP + web dashboard for assistant task state (port 7878) | push-to-main → CI deploys (2026-04-29) |
vh/vor |
Inquisitor UI sidecar (port 7879) | push-to-main → CI deploys (2026-04-29) |
vh/nevermore |
Twice-daily LLM-curated briefing (port 8181, replaces news-digest) | push-to-main → CI deploys (2026-04-30) |
vh/asset-engine |
Internal control plane over inference services (port 8200, LAN-direct) | push-to-main → CI deploys (2026-05-12) |
vh/althing |
Lean trusted inter-agent message bus — v2 "email model" (v2.0.0b2, 2026-07): per-box local-SQLite bus + courier/receiver for P2P over the 10.x net; pillars = open-loops / per-box herald + wake-listener / roaming owner API /owner/* / althing-mcp stdio surface. The v0.15 lean-bus cut RIPPED moderation / chamber / forseti-daemon / agent-runner / redis-valkey. |
per-box uv tool install (NOT CI-deploy); nh3-dev = the DEV box (editable install of ~/development/althing, gets new versions first); nh3-extdev a mesh peer (model B: althing-svc + shared /srv/althing) |
vh/mead-hall |
Bifrost tool-provider sidecar (port 5173 on dev VM 10.100.10.50) | push-to-main → CI deploys (2026-05-16) |
vh/skaldsong |
Wizard + reader surface (port 8300, ana-docker, registry-pull pattern) | push-to-main → CI deploys (2026-05-19) |
vh/Worldtree |
Conversation API (corviduo-dev demo :8080 / personal :8081 / pinned :8082) — Heimdall auth, Bifrost integration. gitea-runner builds on ana-docker; claude-bot ADMIN collaborator (2026-06-20). Now v1.0.0b19. | push-to-main → CI build-and-deploy (runner on ana-docker) |
vh/yt-voice-clipper |
YouTube → diarized voice-clip dataset builder + audition console (irv-ml1 :8000) | push-to-main → gitea-webhook auto-deploy to irv-ml1 (2026-06-03) — see docs/runbooks/ytvc-autodeploy.md |
vh/arbo |
Catalog-driven ComfyUI engine (irv-ml1 :8201, comfy-dev owns engine/catalog/image) | push-to-main → gitea Actions CI (deploy-engine.sh, build-local, health-gated) now LIVE; catalog via :9009 webhook |
model-training-forge (mtf-dev) |
Fine-tuning recipe forge; T1 = E-RP writing LoRA, retargeted qwopus-122B→AEON-27B (2026-07-06) (SFT→DPO, LitBench-RM reward) | training runs, not a deployed sidecar |
(vh/volva + Heid were re-architected from systemd daemons to Claude Code
session orchestrators 2026-06-08; their nh3-dev .service units were removed —
no longer deployed sidecars here. See Recent decisions.)
-
Two-layer backups — Backrest orchestrates restic for file+DB (5 fleet repos, daily 01:00 PDT); PBS-ANA primary + PBS-NH3 DR mirror for VM images. ana-nas is the SPOF for postgres + PBS-ANA datastore + cross-site restic targets — see
docs/runbooks/disaster-recovery.mdfor the blast-radius matrix. ⚠️ The restic file+DB layer routes through TWO rest-servers (rest-server-ana@ ana-docker:8000 → ana-docker/ana-ml2/esh-docker-vm/vm-esh-nas;rest-server-nh3@ nh3-nas:8000 → irv-ml1/nh3-docker). Both depend on their NAS's NFS export of/mnt/backup. (rest-server-ana recovered 2026-06-20.) -
pull-hf-repo.yamlis the canonical "get a HuggingFace model/dataset onto ana-ml2's shared cache at/tank/aimodels/huggingface/" playbook. Supports--var repo_type=model|dataset|space. Replaces ad-hochuggingface_hub.snapshot_downloadpatterns. -
Worldtree admin auth — per-instance. Each Worldtree deployment (demo :8080, personal :8081, pinned :8082) has its own Heimdall registry and its own bootstrap admin key. Infra-ops's stored long-lived admin key (
key_id 61419c92) atana-docker:/opt/docker/conf/.secrets/worldtree-infra-ops-adminauths against demo only. Personal-instance admin (the~/.config/worldtree/personal-admin-token, mode 600) POSTs/admin/keys(mints per-project keys; takesuser_id+label, no scope param — scopes are tier-derived). On-instance mint recipe (cleaner than DB-manip):docker exec worldtree-worldtree-api-1POST/admin/keyswith the in-containerWORLDTREE_BOOTSTRAP_ADMIN_KEY; cleartext once in.key=wt_live_+16hex. auto-memoryreference_worldtree_demo_key_mint. -
Per-project user keys against personal Worldtree (issued 2026-05-19):
skaldsong:79744637,skaldsong:7c1dbbbe,althing:50d85460,mead-hall:a360822d. Mint via/admin/keys, drop value to/tmp/wt-personal-<name>.keymode 600, dev collects + shreds (DO NOT cat to chat transcript). -
Skaldsong CD pattern (registry-pull). vh/skaldsong's CI builds and pushes
gitea.phasefinal.com/vh/skaldsong:<sha>+:latest;playbooks/deploy-skaldsong.yamlon ana-docker pulls + recreates. SHA-pin only. Prereq: host needsdocker login gitea.phasefinal.comonce. -
gitea internal route for fleet hosts. gitea is a container on ana-docker — git-SSH
10.250.50.70:222, HTTP:3000. Fleet/colo hosts must use this internal route, NOT publicgitea.phasefinal.com(38.120.12.44) — the public path fail2bans the host egress IP. Full gotcha indocs/orientation.md→ Git/gitea. -
docker-as-root pattern (for ops with no admin API, or to edit deploy-owned/root-owned files without sudo):
docker run --rm -v <target-dir>:/wt docker:cli sh -c "...". docker-group membership is effectively root via bind-mount. Foot-gun: relative paths in compose.yaml resolve against the sandbox CWD but the daemon interprets them against the HOST fs — always pass-e VAR=/abs/pathfor any relative-default config dir. -
scripts/elwaysudo handling — elway prompts for the sudo password ONCE viagetpassbefore the firstsudo: truestep → can't run unattended from a non-TTY tool if any step needs sudo. Sudo-free playbooks run fully non-interactive over key SSH. -
Per-host SSH identity matters for sudo. infra-ops has NOPASSWD sudo on most PFI Linux boxes (corviduo-dev included since 2026-06-15). On ana-docker: default
ssh ana-docker=lkraven(docker-group, NO passwordless sudo);ssh infra-ops@ana-dockerHAS NOPASSWD root. → For any sudo op on ana-docker, usessh infra-ops@ana-docker.ssh infra-ops@10.100.10.50(nh3-dev) ALSO NOPASSWD sudo; on nh3-extdev infra-ops is sudo-LESS by design (ssh lkraven@10.100.50.42is the NOPASSWD path). irv-ml1:ssh irv-ml1= lkraven, docker-group (plain docker) but sudo needs a PASSWORD (no NOPASSWD) — stage model pulls to/home, not root-owned/worktank.
Current state / in-flight
As of 2026-07-13 — two active tasks (per /snapshot args): the LiteLLM gateway #355-residual investigation and wiring the runner-side persistent BuildKit cache. The big WT #355 validation saga + Ledger provisioning + the assistant-role adds all LANDED this session; the concluded TTS/Zonos/RP-seat/ComfyUI/T1 in-flight was rolled out of this section (it lives in git + auto-memory).
🔺 ACTIVE 1 — LiteLLM gateway #355-residual investigation (our domain)
- The data-confirmed finding: WT #355's residual 300s hang is NOT the seat and NOT WT-pre-send — it's OUR LiteLLM gateway (ana-docker
10.250.50.70:4000) holding two char-rp-reasoning requests ~21 min (spend_logs dur: 1255.9s + 1357.4s, startTimes 16:54:44 + 16:56:26Z = the two wedge onsets) while the Deckard seat sat IDLE. The seat (ana-ml2:8018 llama.cpp,--reasoning-budget 400— forecloses an indefinite mid-thinking hang) completes every request ≤72s and received no request at the wedge onset → EXONERATED. This CONTRADICTS worldtree-dev's "seat wedging mid-thinking" premise, which I'd relayed unconfirmed until the operator challenged it. - DECISIVE next step (brokkr's dwarf-panel, read-only pcap analysis): the FIN-check — in the WT↔gateway pcap for the WEDGED streams, did WT send FIN/RST to the gateway at its 302s stall-cancel?
- WT closed but gateway held anyway → pure LiteLLM bug (brokkr's lead: a concurrency-slot LEAK — cancelled requests don't free LiteLLM's internal slot → new invokes queue ~21 min behind leaked slots while the seat idles). Our fix.
- WT did NOT close → WT's un-propagated cancel (earlier httpcore shielded-
aclosecan't-kill bug) → worldtree's already-planned force-close fix also releases the hold.
- Then: pull LiteLLM router /
max_parallel_requestsconfig for deploymenthosted_vllm/deckard-pkd-27b; confirm whether the seat EVERlaunch_slot'd the 1255s request (never-served vs delayed). pcap-only tools: no tshark on corviduo — usetcpdump -r. - Data on hand: WT-netns pcaps + py-spy dumps at
corviduo-dev:~infra-ops/py-spy-355/wedge_20260713_095626/(+ 100039/100341/100543); the 095626 capture overlaps turn-2064's wedge (16:54:46–16:59:46Z). py-spy + tcpdump are installed on corviduo-dev (~/.local/bin/py-spy, hand-carried musl binary; no pip/uv on that box). LiteLLM spend_logs =litellm-dbon ana-docker (docker exec litellm printenv DATABASE_URL; SpendLogs cols are camelCase → double-quote them). - Status: WT-code panel DONE (seat-innocent accepted); residual is LiteLLM-forensic (mine, brokkr reasons alongside). Awaiting operator go on the FIN-check.
🔺 ACTIVE 2 — Worldtree deploy-speed: wire the runner-side persistent BuildKit cache
- Measured (gitea Actions API,
vh/worldtree, claude-bot token): full code deploy ≈12 min; bottleneck =build-and-deploy~11 min (685/614/659s recent).lint-test~7.5 min runs PARALLEL (off critical path).deploy/recreate ≈50s (fine — not the problem). - Root cause (Dockerfile at repo root): the dep install
RUN --mount=type=secret,... uv sync --frozen --no-dev --no-install-project --no-cacheuses--no-cacheAND has no BuildKit--mount=type=cache→ re-downloads+rebuilds ALL Python deps cold every build. Layer ordering is CORRECT (COPY pyproject.toml uv.lock+packages/beforeuv sync, app code after) — the problem is purely caching. - Fix (split by domain): (a) worldtree-dev's Dockerfile diff — add
--mount=type=cache,target=/root/.cache/uv+ drop--no-cache; (b) MINE, runner-side — persist the BuildKit layer cache between CI runs (--cache-to/--cache-fromregistry or runner-local). Config-only changes already skip the pipeline via a pinned recreate. - Confirm first: pull the build-STEP log to verify the dep-install is THE dominant sub-step (vs the apt layer or the registry push) before handing worldtree-dev the diff — don't assume. Awaiting operator go.
Landed this session (2026-07-13) — context for the fresh session
- WT #355 turn-lifecycle fix VALIDATED (worldtree b60): wedged turns self-terminate cancelled/stalled at the 300s watchdog (turns 2064/2065 = 302s/360s) vs pre-b60 turn 2061's 16-min no-terminal silence. The residual (ACTIVE 1) is a separate LiteLLM matter.
- Ledger tier-3 provisioned (
ledger:miranda) on personal:8081: key minted (userledger, key_idb38932f5), GPG-delivered + verified + cleartext shredded; scope confirmed (user tier hasbifrost:invoke+agents.define); allowlist10.100.10.50:8770activated by the b60 recreate. assistant+thoughtful-assistantroles added (bindgen/gen-reasoning, kind capability, grants[foundational]) on personal+demo; canonicalized by worldtree-dev (d8bd497).- 3 zombie soong sessions retired (2ad34ec6+7d23052f+0775c9b1 via
POST /admin/sessions/<id>/retire); pre-b60 stale-active backlog HELD (worldtree's #356 rehydrate fix reclaims that class).
Still-open standing items (carried)
- T1 SFT LoRA (AEON-27B E-RP) — adapter banked but BLOCKED on hot-swap serving; DORMANT (operator pivoted to off-the-shelf). Merge fallback primed (~2-3h) if hot-swap abandoned.
- Backups — rotate the 5 disclosed rest-server creds (operator, offline); confirm cross-site restic mirror.
- althing monitor dies on /clear — re-arm
/althing:monitorin the fresh session (open await-reply loops: brokkr on the #355-residual, worldtree-dev on the deploy-resilience follow-ons #356/#357/#358).
Recent decisions
-
[2026-07-13]WT #355 residual 300s hang localized to OUR LiteLLM gateway (holds 2 char-rp-reasoning requests ~21 min while the seat idles), NOT the seat — Deckard seat EXONERATED (completes ≤72s;--reasoning-budget 400forecloses a mid-thinking hang). Corrects worldtree-dev's "seat wedging" diagnosis. Decisive next = the FIN-check (pcap on corviduo). See in-flight ACTIVE 1. -
[2026-07-13]WT #355 turn-lifecycle fix VALIDATED on worldtree b60 — wedged turns self-terminate cancelled/stalled at the 300s stall-watchdog (turns 2064/2065 vs pre-b60 2061's 16-min no-terminal). worldtree-dev filed follow-ons #356 (rehydrate Tier-3 ctx on resume — the recreate-durability gap), #357 (reclaim orphaned active-turn locks), #358 (LLM-provider read-timeout audit); surfacing to Vuong to prioritize. -
[2026-07-13]Worldtree deploy bottleneck = the image build (~11 min of a ~12 min deploy), root cause the Dockerfileuv sync ... --no-cache+ no BuildKit cache-mount (re-downloads all deps cold every build). Fix split: worldtree-dev Dockerfile cache-mount diff + infra-ops runner-side persistent BuildKit cache. Config-only changes skip the build entirely (pinned recreate). -
[2026-07-13]Ledger tier-3 consumerledger:mirandaprovisioned on personal :8081 (key b38932f5, GPG-delivered+shredded, allowlist 10.100.10.50:8770 live);assistant+thoughtful-assistantcapability roles added (gen/gen-reasoning) on personal+demo, canonical d8bd497. Chosen instance = personal (the tier-3-consumer instance, ratatoskr+soong-lab colocated). -
[2026-07-10]Heimdall grant: ratatoskraffect.fullon PERSONAL Worldtree (operator-approved, worldtree-dev R34-v1 request). Added allow-ruleratatoskr-affect-full-allowto/opt/worldtree-personal/config/policies.yaml(principal.user_ids:["ratatoskr"], actionaffect.full, resource*, effect allow), mirroring the #347session-history-write-ratatoskrrule exactly + placed right after it. WHY user_ids-based (not tier): ratatoskr's personal key is the minimal readonly-admin observability tier, which is NOT in the tier-basedaffect-render-baseline-allow(anonymous/user/free/pro/admin) → needs an explicit user_id grant, same as #347. R34-v1 (b46, committed UNPUSHED) gatesaffect.emitdominant_emotionegress by exposure ceiling (affect.full|safe → present; neither → null); this grant keeps ratatoskr's view alive across the b46 deploy. Surgical exact-string insert (preserves comments), backuppolicies.yaml.bak-pre-affectfull-20260710, validated via the CONTAINER's own yaml parser (35 rules, +1, payload confirmed). NOT restarted — deliberate: rule is on the bind-mount (shadows baked), INERT until b46 gating ships, so the b46 CI/CD deploy restart activates it (no live-session blip now). Demo untouched (personal-only per key scope). Replied to wt-dev (thread 01KX6DB3…) offering an immediate restart if they want it live for pre-b46 testing. See reference_corviduo_dev_emergency_ops. -
[2026-07-10]ComfyUI v0.27.1 SUCCESS on irv-ml1 (operator-confirmed execute-now) — landed on torch 2.12.1, SageAttention preserved, crash-loop AVOIDED. The prior attempt (entry below) crash-looped because a torch 2.12.1→2.13 bump broke SageAttention's ABI. This time I checkedgit diff v0.24.1 v0.27.1 -- requirements.txtFIRST and found core v0.27.1 leavestorchUNPINNED → the version bump does NOT require torch 2.13 (that came only from the mmartial boot-upgrade). So:git checkout v0.27.1(clean tree) →pip install -r requirements.txtas uid 1000 with a torch-pin constraint file (torch/vision/audio pinned to current +cu129) to block any transitive bump → torch stayed 2.12.1, SageAttention 2.2.0 untouched. Added decord 0.6.0 (fixed SAM3Segment).docker restart comfyui→ healthy,/system_statscomfyui_version=0.27.1, "Using sage attention", HTTP 200, DB migrated 0003→0004. Reported the divergence to comfy-dev (thread 01KX6D3C…, reply pending) + asked whether LTXV 2.3 needs a separate torch-2.13 follow-up (their domain; Krea-2's ≥0.25 need is met by 0.27.1). LESSON: before a mmartial ComfyUI version bump,git diff <old> <new> -- requirements.txt— if torch is unpinned, bump the CODE without touching torch (constraint-pin it) and compiled exts (SageAttention) survive.docker execlands as uid 1025(comfytoo), not 1000 — use-u 1000+ the venv python/comfy/mnt/venv/bin/python. See reference_irv_ml1_comfyui_mmartial. -
[2026-07-10]ComfyUI 0.25.x bump on irv-ml1 ATTEMPTED → FAILED → ROLLED BACK (snapshot saved it). comfy-dev requested (Vuong-authorized) bumping the irv-ml1comfyuistack (mmartial image,/opt/docker/compose/comfyui/, 0.24.1) to 0.25.x for Krea-2 + LTXV 2.3. TWO FINDINGS: (1)DISABLE_UPGRADES=false/USE_PIPUPGRADE bumps the VENV (torch 2.12.1→2.13.0 + deps) but does NOT advance the ComfyUI CODE checkout (/comfy/mnt/ComfyUI=/worktank/comfyui/run/ComfyUIstayed 0.24.1 — pinned/detached git, comfy-dev's domain). (2) the torch bump broke SageAttention (2.2.0_fused.soundefined-symbolc10::impl::cow::materialize_cow_storagevs torch 2.13.0) →--use-sage-attention(REQUIRED launch flag in COMFY_CMDLINE_EXTRA) crash-looped ComfyUI. Net: broke the working state, zero 0.25.x payoff. ROLLBACK WORKED: pre-bump 16G venv snapshot/worktank/comfyui/venv-snapshot-comfyui-0.24.1-20260710.tarrestored (torch 2.12.1 + working SageAttention), re-pinned DISABLE_UPGRADES=true, recreated → healthy on 0.24.1, serving :8188. Broken venv parked at/worktank/comfyui/run/venv.broken-torch213-20260710. CORRECTED PATH (sent comfy-dev, thread 01KX655V): comfy-dev git-advances the ComfyUI checkout to 0.25.x + reqs → I handle the torch bump + SageAttention rebuild-against-2.13.0 + re-pin (snapshot stays as the net). LESSON: mmartialDISABLE_UPGRADESgates ONLY the venv pip-upgrades, NOT the ComfyUI git checkout; a torch bump breaks compiled exts (SageAttention) → rebuild-after is mandatory. Bump BLOCKED pending comfy-dev's git-advance. Stack: A6000 (NVIDIA_VISIBLE_DEVICES=1), lkraven-owned compose+venv (uid 1000, no sudo needed), COMFY_CMDLINE_EXTRA OOM flags preserved. -
[2026-07-10]Biweekly open-weight-releases scan cron set up for brokkr-smithy (Vuong-authorized). Durable systemd --user timer on nh3-dev (brokkr-landscape-scan.timer, OnCalendar*-*-01,15 09:00:00America/Los_Angeles, Persistent=true; linger on) →.service→ wrapper~/.local/bin/brokkr-landscape-scan.shruns headlessclaude -p "$(cat ~/.config/brokkr-landscape-scan/prompt.txt)" --dangerously-skip-permissionsin~/development/brokkr-smithy(ALTHING_HANDLE=brokkr-smithy-dev; explicit PATH — the --user minimal-PATH footgun; per-run logs~/.local/state/brokkr-landscape-scan/). Prompt = brokkr's payload verbatim (LLM/image/TTS new-release sweep → ranked synthesis → commit+push+notify). VALIDATED: git-push non-interactive (BatchMode ls-remote to gitea, passphraseless key — no agent), headless claude auth (READY smoke). VALIDATED END-TO-END 2026-07-10 (manual run, exit 0): web-sweep→synthesis→commit2ed2f29→PUSH of scan #2 (open-weight-releases-2026-07-24.md); triaged dwarf input + caught baseline errors, quality strong. HANDLE-COLLISION caught+FIXED — the headless scan shared handle brokkr-smithy-dev with the LIVE session + raced its inbox (eitri's dwarf-reply got stolen by the live monitor); registered a dedicated brokkr-scan-dev handle (add-handle, driver=none) + repointed the wrapper + rewired step-5 notify →althing-cli post --to brokkr-smithy-dev(NO vuong althing handle exists — confirmed). model=default--max-turns 80. First run under the new handle = 7/15. Off-cycle 07-24 doc is a validation artifact (scheduled 1st/15th runs date to their own run-date, no collision) — operator naming-convention call pending. NEXT AUTO-RUN 2026-07-15 09:00 PDT. Manual validation/first run =systemctl --user start brokkr-landscape-scan.service. Open w/ brokkr (thread 01KX63G6): confirm notify-Vuong handle/mechanism + session handle + model/turn-cap. NEXT brokkr task (operator-sequenced after this): TTS audition env — Higgs-TTS-3 + ZONOS2 + Chatterbox baseline, TTFA/RTF + blind-A/B web-listen (thread 01KX6371; needs GPU-placement + HF-token feasibility pass first; brokkr delivers the prompt set after the env's up; protocol doc in brokkr-smithy repo).
-
[2026-07-09]Two parked items closed: phantomqwen3.6-35b-a3balias VERIFIED already-gone; ana-docker docker log-cap SOLVED no-bounce. (1) Phantom: absent from/v1/models+/model/info(config+DB registry), zero litellm log refs — the parked "400s in /v1/models" note was STALE (already cleaned in the 2026-07-08 gen repoint to-heretic); bare token survives only in 2 config COMMENTS (lines 76/80). Nothing to remove. (2) Log-cap: running containers were UNCAPPED (182M json-logs, top offender 59M) because daemon.json'smax-size 10m/max-file 3only applies to containers CREATED AFTER a daemon restart — it never reaches already-running ones. No-bounce fix =/etc/logrotate.d/docker-containers(copytruncate — dockerd opens json-logsO_APPENDso truncate-in-place resets cleanly, no sparse-file corruption;size 10M,rotate 3,compress,su root root), auto-picked-up by the dailylogrotate.timer. Force-ran + gzipped the frozen.1archives → 182M → ~55M (44M active + 11M gz), every container kept its multi-week uptime (zero bounce, verified). LATENT FOOTGUN FLAGGED (not yet fixed, operator's call): daemon.json declareslive-restore:truebut the RUNNING daemon has it FALSE (daemon.json was edited after the last daemon start, never reloaded) → the NEXTsystemctl restart docker/ crash / pkg-upgrade bounces ALL ana-docker containers once. Fix WITHOUT a bounce =systemctl reload docker(SIGHUP loads live-restore into the running daemon; log-opts are NOT SIGHUP-reloadable, which is why logrotate — not the daemon cap — is the enforcer for running containers). -
[2026-07-09]granite→genmemory_extractorbind host-synced on demo+personal Worldtree (Vuong-directed, #335 Slice-4). Changedmodel_roles.yamlmemory_extractorbinds.catalog_idsummarizer→gen(overrides intact: thinking:false/temp0/8192) on BOTH/opt/worldtree{,-personal}/config;memory_distillerleft onsummarizer(range-scoped sed/memory_extractor:/,/memory_distiller:/— the naive global replace would've hit both); backups*.bak-preqgen-20260709; validated via each container's OWN yaml parser. DEMO LIVE on gen (b43d501e516732dauto-deployed mid-edit + its restart RACED my edit by ~2min → I restartedworldtree-worldtree-api-1to activate; healthy, live process resolves memory_extractor=gen). PERSONAL NOW LIVE on gen too — Vuong authorized the restart (via wt-dev); restartedworldtree-personal-worldtree-api-1after a PRE-FLIGHT that ran the app's OWNload_model_roles()(core/llm/roles.py:121) against the synced config INSIDE the runningc9986cdcontainer:genin catalog, all 9 roles resolve, noDanglingBindingError→ proven safe on the OLDER image BEFORE touching it (model_roles-delta-alone clean; no full-config-set sync needed). StartedAt 20:50:55Z, healthy, resolves gen. BOTH instances live on gen. LESSON: the bind-mount/opt/worldtree*/configSHADOWS the baked/app/config-defaults/→ the deploy alone never updates the ACTIVE config; the host edit is required AND a restart activates it (role registry cached at boot) — pre-stage BEFORE the deploy's restart or you race it. FOLLOW-UPS (non-blocking): (a)memory.extractor.user_passparity block → self-serve from the b43 bakeddefaults.yaml(pydantic-default no-op); (b) stalegenprovider description (Mistral-Small-4 → qwen3.6-35b-a3b-heretic) → wt-dev owns the REPO-sideproviders.yamlfix (operator's call — NOT purely cosmetic: the gen/dialogue + classifier entries carry Mistral-Small-4 SAMPLING defaults that drive mask/lofn/forseti/mimir dialogue, so wt-dev re-validates for qwen), host cosmetic sync pairs when it deploys. Gave wt-dev the VERIFIED canonical 4-alias set (backends+samplers read from the LIVE gateway config, not the doc); correcteddocs/pfi/model-sampler-defaults.mdseat 4 (had lagged QwQ-RpR-v4 → Deckard-PKD; live gateway was always Deckard). Operator SCOPED IN the character-RP re-point (2026-07-09): character→char-rp / thoughtful-character→char-rp-reasoning (character-rp per wt-dev's role semantics), moving character RP off the GENERAL qwen onto the dedicated Magidonia/Deckard seats. Relayed to wt-dev w/ the mapping principle + a SAMPLER-OVERRIDE warning (DROP character-rp's old temp0.75/top_p0.85 overrides — carried onto the dedicated seats they'd clobber the canonical RP tuning DOWNWARD) + ratatoskr-reach note (role call is transparent but Magidonia/Deckard quality/latency differs from gen). DONE 2026-07-09: wt-dev committed 5d4fa4a (v1.0.0b44, UNPUSHED — operator drives push); operator directed host-ahead-of-push, so I sourced BOTH config files directly from that unpushed commit (local~/development/Worldtreecheckout — capital W;git show 5d4fa4a:config/…) + mirrored VERBATIM to/opt/worldtree{,-personal}/configon demo+personal, paired-pre-flighted via the app'sload_model_roles()(no DanglingBinding), restarted both → LIVE: character→char-rp, thoughtful-character + character-rp→char-rp-reasoning, memory_extractor→gen preserved. Backups*.bak-prerp-20260709. context_window VERIFIED (llama.cpp /props + char-rp-gguf.env): char-rp 131072, char-rp-reasoning 262144 (gave wt-dev to patch the repo from its interim 32768). HOST AHEAD of repo-remote until the operator pushes 5d4fa4a (baked config converges with the bind-mount on push+deploy). GOTCHA: demo≠personal — PERSONAL was already partly re-pointed (2026-07-06 AEON-era character→char-rp) so its delta was mostly stale-AEON-descriptions→Magidonia/Deckard- character-rp + stripping personal's char-rp
default_paramstemp0.7/top_p0.8 that CLOBBERED the gateway RP tuning downward; DEMO had no char-rp catalog entries at all (b44 adds them). Diffed each instance vs b44 before applying (both deltas = expected changeset only, nothing instance-specific clobbered). wt-dev PATCHED the context_window in b45/3384a37 (char-rp 131072, char-rp-reasoning 262144). BUMPED HOST-AHEAD on both instances (operator-directed 2026-07-09): mirrored b45's providers.yaml →/opt/worldtree{,-personal}/config, restarted, verified LIVE (char-rp ctx 131072, char-rp-reasoning 262144, bindings intact); backups.bak-b44interim-20260709. HOST now = b45 canonical (providers.yaml) + b44 (model_roles unchanged b44→b45). STILL PENDING: (1) operator's batched push of b44+b45 (5d4fa4a+3384a37) to converge the repo-remote — host is ahead, no fork; (2) user_pass parity block (defaults.yaml — NOT in either, separate). Threads01KX3SGH/01KX48QP(worldtree-dev), monitor armed. See reference_corviduo_dev_emergency_ops.
- character-rp + stripping personal's char-rp
-
[2026-07-09]mOrpheus TTS off-the-shelf voice pipeline SHIPPED end-to-end (irv-ml1) + wired into gateway-chat. Full arc (commits): gen served-name honesty rename aeon→qwen3.6-35b-a3b-heretic (99a4a17, vLLM served-name + litellm refs, so /v1/models + spend-logs name the real model); permanent 2-container stack (01eedd8); gateway-chat auto-voice quoted dialogue (c948013); streaming decode TTFA 4.5s→0.8s (da76829); max_tokens 1200→2400→3500 with a context-clamp (f363fe6,0655a37— long lines were clipping at 14.6s, andrepetition_penalty1.1 is LOAD-BEARING: at 1.0 the model never stops); AudioContext resume-on-gesture no-sound fix (033f368); pre-chunk by QUOTED SECTION not sentence for prosody (a1f3023→f295cc1); staged clone voices baddy/beatrice/whisper (0655a37+ runtime .wav/.txt in the voices dir); agent voicing prompt (a573514). Load-bearing config, all encoded in stacks/mOrpheus/: bf16 not FP8, image v0.23.0 not latest, GPU=3090 not A6000, rep_penalty 1.1. Serving-viability confirmed: vLLM concurrency near-linear to 8× (707 tok/s). -
[2026-07-09]granite→gen memory_extractor bind GREEN-lit for worldtree-dev (Worldtree #335 Slice 4). Answered their VRAM/concurrency headroom check: gen (qwen 35B-A3B heretic) has ample headroom for ~2 bursty idle-triggered extractor calls (fixed 0.37 util; KV pool runs 0-2%; --max-num-seqs 16, near-linear batching). Corrected their stale "gen = Mistral Small 4 / 119B-6B" belief (gen IS the qwen 35B-A3B heretic since 2026-07-08). This bind is INDEPENDENT of the full granite RETIRE (reclaim ~32GB on ana-ml2 GPU1) — that stays the operator's call, pending brokkr R33 portfolio + production-concurrency due-diligence. Tracked: althing thread 01KX3SGH… (worldtree-dev) + brokkr's gen-absorbs-granite consult (thread 01KX2V32…) + reference_litellm_gateway. -
[2026-07-08]RP-SEAT CAMPAIGN CLOSED — char-rp = Magidonia-24B-v4.3 (128K), char-rp-reasoning = Deckard-PKD Qwen3.5-27B (256K); both GGUF/llama.cpp on ana-ml2 GPU0 alongside gen (35B-A3B, util 0.37), ~4G GPU0 margin. Arc: (1) replaced broken Angel NVFP4 with Magidonia prose + QwQ-RpR-v4 reasoning (b268f93); (2) max-context via q8_0 KV (f570604); (3) canonical samplers for all 4 gateway seats, dvalin-derived + char-rp A/B-tuned (aac4bcf); (4) rebalanced gen 0.40→0.37 to fund char-rp 128K (f49c4e4); (5) RE-A/B'd the reasoning seat (operator wanted a DRY-tolerant model): Deckard WON on brokkr's frozen scorer (composite 2.176, 0/30 loops, 0/30 refusals) over RpR-v4 (3.716, 1/30 loop), Pantheon-Reasoning (1.383 but 7/30 refusals), Snowdrop+Gembrain (llama.cpp template-incompat) — deployed (5f79b40); (6) Deckard→256K (41305bf); (7) dvalin CONFIRMED Deckard samplers = the live A/B set is canonical (4954ca0). GATE LESSON: a llama.cpp reasoning seat needs a STOCK template that natively opens<think>/enable_thinking(Qwen3.x/QwQ pass; ChatML + Gemma-4 fail) — no monkeypatching. INFRA: llama-swap b8840 can't load Qwen3.6/Gemma-4 archs →ghcr.io/ggml-org/llama.cpp:server-cuda(pulled on ana-ml2). -
[2026-07-08]worldtree Mimir deploy-blocker resolved (mid-session): syncedpersona.envelopes.assistant+envelope_grants:[]verbatim from the baked canonical into BOTH corviduo-dev instances (demo+personal), YAML-validated via each container's own parser; worldtree-dev cleared to push the Mimir-bound image. (Was my parked R32 1C envelope-mirror come due — see reference_corviduo_dev_emergency_ops config-sync recipe.) -
[2026-07-08]OFF-THE-SHELF INFERENCE PIVOT executed — serve curated abliterated models, stop home-training. Final topology: gen =llmfan46/Qwen3.6-35B-A3B-uncensored-heretic-NVFP4-Experts-Only(LIVE, modelopt, vision, util 0.40), char-rp = an RP unicorn to be found on fresh context (see Current state). Intermediate steps ABANDONED: Pantheon-Reasoning-27B (served briefly as gen — refuses dark fiction via DeepSeek-distilled refusal-reasoning, see Tried); Pantheon-27B-with-MTP for RP (bf16 MTP won't load on the compressed-tensors path); Angel MS3.2-24B (my NVFP4 quant = garbage). Prefer EXISTING community NVFP4/GGUF quants over self-quanting ("don't quant unless you have to" — operator). GGUF serving is now on the table for RP (NEVER Ollama). Gateway sampling-defaults wiring still PENDING. -
[2026-07-08]DPO was silently running 3 epochs (harness gap) → KILLED at epoch 1.2, retargeted to 0.3 epochs (operator call). Root cause:DpoConfighad NOepochsfield +_dpo_config_kwargsdidn't passnum_train_epochs→ DPO fell through to trl DPOConfig's default 3.0 (SFT correctly pins 1 via SftConfig.epochs- _sft_config_kwargs). Objective SATURATED by
epoch 0.27 (loss0, grad0, acc 1.0, margins27 flat — the off-policy qwopus rejected pairs are trivially separable), so epochs ~0.3→3 were pure over-optimization + a ~6.5h outage. No mid-run checkpoint (save_steps 500 > total steps; save only at end) → killing lost the run. FIX (3 edits to deployed harness, mtf-dev to canonicalize):DpoConfig.epochs: float = 1(mirrors SftConfig, float for fractions);_dpo_config_kwargsnow passes"num_train_epochs": cfg.epochs; recipedpo.epochs: 0.3. GPU-free verified (dpo.epochs=0.3 → num_train_epochs=0.3). Relaunched at 0.3 epoch (~30min precompute + ~12min train = ~45min). DONE + SANITY-CHECKED (exit 0, ~70min wall: ~30min fixed precompute + 45 steps @ ~51s/step; train_loss 1.4e-5 @ epoch 0.301). Freshdata/spike/dpo_adapter/adapter_model.safetensors(123MB) + checkpoint-45 banked. 3-way greedy sanity (base vs SFT vs DPO, via peft load + disable_adapter/set_adapter on GPU0): ALL THREE DISTINCT (base≠sft≠dpo) → full SFT→DPO pipeline applies end-to-end at inference. DPO 0.3ep is COHERENT, fluent, NOT degenerate (early-stop avoided over-optimization) but the quality delta on a neutral literary prompt is SUBTLE (DPO shares SFT's structure — it continues from it — with minor stylistic drift, arguably slightly MORE genre-clichéd). Verdict: mechanics proven, quality gain modest as predicted for 0.3ep on off-policy pairs; the real unlock remains on-policy rejected regen + on-domain (explicit E-RP) eval + the LitBench/holdout run. gen+rp RESTORED healthy. Next: serve fork (SGLang-finish vs merge) on the DPO adapter — same rekey_lora_for_vllm.py (zero-z) applies unchanged (mtf-dev confirmed).
- _sft_config_kwargs). Objective SATURATED by
-
[2026-07-08]T1 DPO leg is RUNNING (unblocked) — 2 fixes applied to deployed backend.py. Blocker resolved: (1) mtf-dev's v0.0.42 stub_stub_missing_optional_integrations(last-resort sys.meta_path finder → missing mergekit/llm_blender/weave resolve to MagicMock, never called → zero numerics risk; applied VERBATIM to deployedsrc/model_training_forge/train/backend.pyafter_unsloth_available()+ call-site beforefrom trl import DPOTrainer); (2) my cosmeticwarnings_issuedshim (trl-0.24 DPOTrainer.init:405 doesmodel.warnings_issued["estimate_tokens"]=Truefor warning-suppression; custom Qwen3_5 class under transformers 5.5.0 lacks the attr →if not hasattr(model,"warnings_issued"): model.warnings_issued={}before the DPOTrainer(...).train() at backend.py:305 — cosmetic, zero training impact). Both edits are on the DEPLOYED un-git'd copy only → mtf-dev must canonicalize the warnings_issued shim into their repo (told them). DPO confirmed training: model loaded (851 shards), full 1196 pairs processed, in precompute_ref_log_probs (GPU0 93% util, 54.8GB). Completion watcher armed (bg task) → restore gen+rp + verify dpo_adapter + ping mtf-dev on exit. gen+rp STOPPED for the run (authorized window). Output → data/spike/dpo_adapter. -
[2026-07-08]T1 DPO leg launch — prior BLOCK (now resolved above), kept for the launch recipe. Operator authorized the full DPO stage (via mtf-dev) + went AFK 2h. PROVEN LAUNCH RECIPE (replicates the SFT containeraeon-t1-sftexactly, only--stage sft→dpo):sudo docker run -d --name aeon-t1-dpo --entrypoint python3 --gpus all -e CUDA_VISIBLE_DEVICES=0 -e MTF_FORCE_TRL=1 -e PYTHONPATH=/mtf/src -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -v /home/lkraven/model-training-forge:/mtf -v /tank:/tank -w /mtf aeon-trainer:latest -u scripts/train.py --recipe recipes/training/qwen-3.5-122b-erp-lora/train.aeon-27b.yaml --stage dpo. CRITICAL:--entrypoint python3is REQUIRED — aeon-trainer's default entrypoint is["vllm","serve"](FROM vllm/vllm-openai) → without the override it runs vllm + hits a torch-ABI crash. Dataset verified (pairs_dataset=train.flat.json=1196 pairs). THE BLOCK:from trl import DPOTrainer(backend.py:256) eagerly pulls TRL 0.24.0's WHOLE optional-integration set — cascade: mergekit(missing)→ immutables→mergekit-0.1.4↔pydantic-2.13 HARD incompat (needs pydantic==2.10.6)→llm_blender→dataclasses_json→ llm_blender-0.0.2↔transformers-5.5.0 HARD incompat (TRANSFORMERS_CACHE removed, needs source patch)→weave→ (more). NONE used by our pair-based DPO.pip install mergekitw/deps is UNSAFE (downgrades accelerate 1.14→1.6). Safe partial recipe derived (core libs held: torch2.10/tf5.5.0/trl0.24.0/peft0.19.1/accel1.14.0) but non-convergent → TRULY BLOCKING per operator's carve-out. Did NOT force-hack the proven training image. Handed full diagnosis + recommended fix (lazy-import TRL patch, opt b) to mtf-dev (thread 01KWZG8GJX, expects-reply, monitor armed). gen+rp RESTORED healthy. Relaunch = 1 min once mtf-dev delivers a working image. -
[2026-07-07]SGLang zc hot-swap: 2-line patch RAN → PARTIAL. Cleared startup + self-attn E2E, GDN in_proj hit 2 MORE name-routing gaps → MERGE recommended. Root cause was a NAME-routing gap (not the feared shape-assert):lora/utils.py:235hardcodedparams_mappinglackedin_proj_qkv/in_proj_z → in_proj_qkvz. Patched those 2 lines (overlay bind-mount) →init_lora_shapespassed, server up, self-attn loaded end-to-end. But the SAME missing GDN mapping bit 2 MORE resolvers: adapter-load skipped 192 in_proj weights, and inferenceutils.py:300 get_target_module_name(substring match) RAISED → 500 + scheduler died. So GDN LoRA name-routing is incomplete in ≥3 SGLang paths (fixed 1). NOT shape-intractable (self-attn proves the separate-key→fused-buffer machinery works), but NOT "one targeted fix" either → per operator's LAST-shot rule → MERGE. mtf-dev looped + closed (thread 01KWZDZFYN…); B/A shard-math never reached. Supersedes the "SGLang wants a THIRD format" framing — no new adapter format needed. -
[2026-07-07]T1 (retargeted qwopus-122B→AEON-27B) SFT COMPLETE on ana-ml2 — all-TRL torch-GDN, batch1/accum8/GC-off, 1 epoch ~9h @ 0.25 s/s, loss 2.445, adapter banked. Supersedes the 2026-07-05 cloud-vs-smoke venue decision: AEON-27B's 52G bf16 fits one Blackwell → ran on-prem in ~9h (no cloud, no full-fleet outage). GC is NOT the throughput lever (batch1-no-GC == batch4+GC at 0.25; dvalin's 0.565 was warmup-noise from a 30-sample smoke); ~0.25 s/s is the torch-GDN floor (only FLA beats it, sm_120- blocked #913).reference_t1_cloud_train_plan. -
[2026-07-07]T1 hot-swap on vLLM NVFP4 is DEAD — vLLM 0.24.0 qwen3_5 LoRA-application silent no-op (#47639 open / fix PR #47640 open / regression from #37912). Proven quant-agnostic (NVFP4+FP8) AND adapter-format-agnostic (separatezcloads-but-inert; fused rejected); #47640 guard-patch overlay didn't fix. Root-caused by a 3-peer dwarf panel (eitri/regin/dvalin); their vLLM issue refs verified real via GitHub API. Engine mirror-image: vLLM wants SEPARATE keys, SGLang wants FUSED. -
[2026-07-07]HARD REQUIREMENT restated: hot-swappable LoRA or ABANDON. Merge is NOT a solution for this requirement (static; reserved for a later RP-quant track). SGLang is the last hot-swap shot; if it can't apply, park the adapter + file upstream repros.reference_lora_training_worker(adjacent). -
[2026-07-07]comfy-dev in-arbo LoRA-training worker DONE — built/deployed/validated Phases 1+2 (first Sindra train succeeded, publish-step +train_id), Phase 2.5 GC contract (shape A) confirmed + impl deferred.services/lora-training-worker/, commits 888ba6a→b617a8b.reference_lora_training_worker. -
[2026-07-06]infra-ops NOPASSWD sudo confirmed on irv-ml1 + ana-ml2 (the arbo memory's "NOT infra-ops on irv-ml1" was stale) — enabled the worker deploy + every ana-ml2 hot-swap smoke. -
[2026-07-05]T1 training venue: CLOUD recommended; operator chose smoke-first on ana-ml2. On-prem ruled out (ana-ml2 full — both 96G GPUs ~93G used): keep-serving = NVMe offload ~6-8 DAYS; full ana-ml2 shutdown = CPU offload ~1 DAY but a whole-fleet outage. Cloud Vast.ai 8×80GB (no offload → ~3-6h, ~$60-500, zero fleet impact) is the clean alt (mtf-dev + infra-ops both rec; Vast for its no-content-AUP marketplace + likely-existing VastBlue account). Operator's next step = the ana-ml2 CPU-offload SMOKE (~60 steps) to get real samples/sec before the full-outage-vs-cloud call. HF base verified public (zero-auth pull). Runbook + gotchas inreference_t1_cloud_train_plan. -
[2026-07-05]glm-5.2 canonical limits recorded (probed live vs z.ai): 1,048,576 (1M) input context / 131,072 (128K) max output; NO gateway-side cap (pure passthrough → z.ai's limits are effective). Written to the config comment (commit624a07e) +reference_litellm_gateway. -
[2026-07-04]character-rp: gateway-forwarding proven + role pre-staged + #344 shipped. Empirically confirmed per-requestextra_body(top_k/repetition_penalty) forwards through thegen-reasoningLiteLLM alias to vLLM + standard params override the alias defaults — no gateway cap needed (I over-built a dedicated alias, operator corrected, reverted with zero fleet impact). Pre-staged thecharacter-rprole into demo+personal bind-mountmodel_roles.yaml(byte-verified on b18; caught the cached-registry ordering). worldtree-dev shipped #344 (v1.0.0b19) for the durable-agent override-drop. spend_logs spot-check queued (ratatoskr's timestamp ping). -
[2026-07-04]althing v2 herald+receiver formalized as systemd on nh3-dev.althing-herald.service(Restart=always, Environment=PATH incl ~/.cargo/bin — the pane-dispatch fix) +althing-receiver.service(v2 → pillar-3/owner/*live); stale forseti unit removed; both on v2.0.0b2, canonicalized by forseti.reference_nh3_dev_althing_herald. -
[2026-07-04]LitBench-RM respun (irv-ml1 A6000, comfyui displaced) for T1's reward ensemble; operator sole comfyui consumer, holding image-gen until LitBench done.reference_litbench_rm_irv_ml1. -
[2026-07-03]ratatoskr-dev DEMO Heimdall key provisioned (R30 φ0). Minted a tier-user key on the demo viaPOST /admin/keys(bootstrap admin key), mirroring their personal base consumer (no character-binding); base-agent affect reads work ungated.reference_worldtree_demo_key_mint. -
[2026-07-02]mtf-dev granite harness-spike ran GREEN — MECHANICAL only, efficacy DEFERRED to the T1 run. Trainer TRL SFT→DPO→eval seam proven end-to-end on a synthetic fixture (not the E-RP corpus); operator DECIDED no intermediate real-efficacy granite spike (uninterpretable proxy — arch gap + abliteration axis).reference_gen_qwopus_122b. -
[2026-07-01]Worldtree #332 embed-recall diagnosed + scoped-log view/tunnel provisioned + fix verified (15×→1.01× re-embed).reference_wt_gateway_scoped_log_view. -
[2026-07-01]qwopus native MTP speculative-decode tested ongen→ NOT kept (+12% single-stream, −15–20% aggregate at concurrency, silently drops min_p/logit_bias). Banked for T1.reference_gen_qwopus_122b. -
[2026-07-01]Deckard trial → reverted to qwopus (gen) (won writing "in every way" but ~36 vs ~90 tok/s; spec-decode rescue ruled out). gitb63c48b→681eb70. Deckard kept staged as T1's writing benchmark. -
[2026-06-14]STANDING DIRECTIVE: migrate ALL infra access to Claude-specific credentials. (auto-memoryproject_migrate_infra_access_to_claude_credentials)
125 older entries archived to archival-memory.md.
Tried and abandoned
-
[2026-07-13]Relaying a peer's diagnosis as fact without confirming it against raw data. worldtree-dev diagnosed the WT #355 residual as "our llama.cpp seat wedging," which I echoed in a wrap-up; the operator challenged it and the seat logs DISPROVED it (seat completes ≤72s, idle at the wedge onset — the hang is the LiteLLM gateway). Lesson: CONFIRM peer diagnoses (esp. cross-domain ones) before acting/relaying — same discipline that caught the earlier char-rp-reasoning red-herring via a liveregistry.resolvereproduction. -
[2026-07-13]althing-cli reply <THREAD_id>(thread id, not a MESSAGE id) → "unknown message_id"; andreplyto your OWN message self-addresses to your handle ("replying to your own message"). Reply to a PEER's message id, or usepost --to <peer>. Bit me several times this session. -
[2026-07-09]FP8 breaks mOrpheus audio-token generation.--quantization fp8on the 3B → 0 valid SNAC frames even at GREEDY (degenerate audio+text mix, no start-of-speech); bf16 is clean (28/28 frames). Quant-breaks- TTS, same class as the Angel-NVFP4 lesson below. bf16 is REQUIRED (so the operator's "util 0.1" wish is moot — the bf16 weights alone are 6.6GB). NB the raw-token benchmark RTF 0.50 was fp8+graphs = never real. -
[2026-07-09]vllm/vllm-openai:latestcrashes on Ampere IMPORT — Blackwell-only kernels (oink/aiter,has_device_capability(100)) die during import on the 3090/A6000. Pin v0.23.0 on irv-ml1's Ampere GPUs. (vllm/vllm-omni:v0.18.0has a different entrypoint — don't use it either.) -
[2026-07-09]Per-frame CPU SNAC decode is too slow for streaming — per-call overhead × ~60 frames serialized → RTF 2.2 (WORSE than whole-clip's 1.0). Fix = windowed chunk decode (every 6 frames decode a [2 ctx | 6 | 2 ctx] window, emit the middle 6 → seamless, O(1)/frame, RTF ~0.97, TTFA ~0.8s). -
[2026-07-09]Sentence-chunking TTS loses prosody — generating each sentence cold flattens the intonation that spans a line. Chunk by QUOTED SECTION (whole quote = one gen call). Also:repetition_penalty>1.1 BREAKS cloning (penalizes the ~1100 in-context reference audio tokens; keep ≤1.1 on the clone path). -
[2026-07-09]HF whisper datasets aren't actually whispered. Claris-Whispered-English measures voiced 0.8 (not a whisper) + IPA transcripts;datasetsaudio decode needs torchcodec (wants CUDA-13, incompatible w/ the cu124 venv). LPC DSP-whisperize went unstable (NaN). kokoroaf_nicoleIS a genuine whisper (voiced 0.24) — that (operator's pointer) is the working whisper reference source, not TTS-voice screening or dataset-hunting. -
[2026-07-08]Angel (allura-org/MS3.2-24b-Angel) self-quanted to NVFP4 = GARBAGE. llm-compressor W4A4 NVFP4 (compressed-tensors, MLP-quantized, attn/vision bf16) of the Mistral3 dense 24B produces gibberish EVEN AT GREEDY (temp 0) → the quant itself is broken, not the tokenizer or sampler. Same recipe worked on the qwen models. Mistral3 + W4A4 NVFP4 via llm-compressor is bad. → for the RP seat, going GGUF (llama.cpp) to sidestep the whole NVFP4-quant surface. -
[2026-07-08]Mistral3 + vLLM tokenizer/vision traps (serveMS3.2-24b, vLLM 0.24). (a) HFtokenizer.jsonfor Mistral = GARBAGE output — the card's "use the official Mistral tokenizer" warning is REAL; must use thetekken.json/mistral tokenizer. (b) BUT--tokenizer-mode mistral+ vision CRASHES (Failed to apply PixtralProcessor on {'text': '[IMG]'}; and with tekken.json present in auto mode,CachedMistralCommonBackend has no attribute is_fast). So it's mistral-tokenizer OR vision, not both on this vLLM. Text-only + mistral tokenizer serves clean (--limit-mm-per-prompt '{"image": 0}'). GGUF/llama.cpp avoids all of this (native mistral tokenizer + vision). -
[2026-07-08]Pantheon-Reasoning-27B refuses dark fiction DESPITE an abliterated base. The base (llmfan46 heretic) writes freely (thinking-off), but Gryphe distilled the reasoning traces from DeepSeek 3.2 (safety-aligned) onto every turn (preserve_thinking:true) → the model reasons ITSELF into refusals in the<think>phase (collapses to empty output). Fix: thinking-off OR an uncensor system prompt (both verified). Lesson: a reasoning finetune of an abliterated base can re-censor via its reasoning-trace TEACHER; the raw abliterated base is cleaner — this is WHY the pivot went to the llmfan46 heretic base for gen. -
[2026-07-08]Pantheon-27B MTP on vLLM compressed-tensors = 0% acceptance. MTP is a separate bf16 head (mtp.*, inmodel-auxiliary.safetensors, 15 tensors); AEON preserved it by INJECTING the bf16 head into the quant output (NOT re-quantizing — confirmed AEON's nvfp4 mtp is bf16). Built pantheon-27b-mtp = compressed-tensors main + injected bf16 mtp +text_config.mtp_num_hidden_layers=1→ vLLM detected the MTP but SKIPPED the bf16 self_attn weights → 0/192 draft tokens accepted. The bf16 MTP head only loads on the MODELOPT main-model format (like AEON), not compressed-tensors. (Moot — operator dropped MTP for gen; not needed for the non-reasoning RP.) -
[2026-07-07]vLLM 0.24.0 qwen3_5 LoRA application = silent no-op (#47639). Adapter loads HTTP 200 but zero deltas at inference. NOT quant (NVFP4 AND FP8 both inert). NOT adapter format (separatezcadapter — correct per vLLM'scheck_unexpected_modulesallowlist — loads clean but inert; the fused-key rekey is rejected). The #47640 None-group guard-patch overlay did NOT fix it (failure is UPSTREAM ofexpand_packed_lora— the separate→fused mapping never happens). Fix PR #47640 is OPEN (unmerged) so no version-bump helps. Merge bakes deltas in (bypasses this) but is static. -
[2026-07-07]SGLang generic image can't LOAD our NVFP4 AEON — ModelOptModelLoader weight-shape/ packing mismatch ([1024,5120] vs [1024,2560], 2-fp4/byte). NVFP4-on-SGLang needs the dedicatedqwen36-27b-nvfp4dev image or a requant to SGLang's format. bf16 loads fine (arch supported; crash was quant-loader-specific). -
[2026-07-07]SGLang--lora-target-modulesCLI enum REJECTS the GDN names its own resolver asks for (invalid choice: 'in_proj_qkv');'all'resolves to the FUSED set (qkv_proj/in_proj_qkvz). SGLang wants its OWN packed layout (base r16 +get_stacked_multiply=3, NOT a pre-fused rank-48 qkv → the [48]-vs-[144] shape assert). A THIRD adapter format; version-exact source needed (:latest=0.5.13, NOTmain). -
[2026-07-07]Engine invocation footguns cost several wasted serve-bounces this session —docker run --rmate crash logs; duplicatedserve(vLLM image entrypoint is already["vllm","serve"]);--max-lora-rank 48invalid (choices 1/8/16/32/64… → use 64); parens inechoinsidessh host -c "…"break the remote shell. LESSON: verify engine launch flags (--help, GPU-free) + never--rma container whose crash logs you need, BEFORE bouncing a production serve. -
[2026-07-04]LiteLLM (this gateway version) mutates the SHARED deployment config in-place on per-request sampler-param merge → my deliberately-invalidtop_k=-5forwarding-probe bled into a param-less character-rp request (vLLM 400, ONE-OFF, self-cleared by a later valid probe). NOT caching (none configured), NOT a config change. Never fire invalid/distinctive sampler values at a SHARED gateway alias with live consumers — use a throwaway alias, or adocker restart litellmflushes residual carryover.feedback_litellm_shared_param_mutation. -
[2026-07-04]A systemd--userdaemon that shells out to~/.cargo/bin/~/.local/bintools needs an explicitEnvironment=PATH— the minimal--userdefault silently drops them. The althing herald lostzellij→ silentpane-missfor ALL config-backed TUI/pane agents; CC + FIFO routes were unaffected, so it was invisible from a CC session.reference_nh3_dev_althing_herald. -
[2026-07-04]On-prem T1 train that keeps ANY ana-ml2 serving up = ~6-8 DAYS (1-GPU + NVMe ZeRO-Infinity offload; MoE ~10B-active cuts FLOPs but NOT the 244G base's param I/O). The only fast on-prem path is a FULL ana-ml2 shutdown (both GPUs + the ~421G vLLM RAM freed → base fits in the 566G CPU RAM) → CPU offload → ~1-day full-fleet outage. Cloud (no offload) = hours.reference_t1_cloud_train_plan. -
[2026-07-01]A personal-Worldtree CI deploy that fails ~85s in with "not found / unauthorized" is usually the pull-only-vs-build RACE, not registry-auth.deploy-personal.ymlis PULL-ONLY but fires on thestaging/vXtag simultaneously withdeploy.yml's build → pulls before the push finishes. FIX: re-run once built, or gate onworkflow_run: completed. -
[2026-07-01]MTP/spec-decode on a SHARED serving model helps single-stream but HURTS moderate-concurrency aggregate + silently ignoresmin_p/logit_bias(qwopusgen: N=1 +12%, N=4 −20%). Reserve for dedicated/interactive deployments. -
[2026-07-02]irv-ml1/worktankROOT is root-owned — lkraven can't write there (irv-ml1 sudo needs a password) → stage model pulls to/home. PIN THE A6000 BY UUID for training (native-CUDA ordering differs vs docker; the 3090 index 0 is usually near-full → OOM).CUDA_VISIBLE_DEVICES=GPU-<uuid>.
101 older entries archived to archival-memory.md.