# DHM golden-track-b — session report, 2026-08-06 → 08-07
Chris Brown (Voltage Labs) + Claude. From "final polish on v1?" to a locked,
production-specced v3 in ~36 hours.

## Headline results
| Milestone | Metric (avg|dL| vs editor beat) |
|---|---|
| v1 LoRA @1.6, fixed prompt, old bases (start of session) | s009 held-out **5.06**; wall dL residual ~6.9 |
| track-b2 (tuned bases + refit LUT, v1 LoRA) | 25-scene mean **3.11** |
| **v3-ablation @1.0, per-scene captions (PRODUCTION, v3.1)** | s009 **5.36**; 3 unseen properties, 112 scenes: **4.29** |
| v3-main (archived reference) | s009 **4.84**; unseen aggregate 4.34 |
Key point: v3 runs at scale 1.0 with honest per-scene prompts and generalizes to
never-seen properties with no distribution cliff — the architecture goal.

## What was built (chronological)
1. **Day 1 AM — v1 polish:** detail-composite experiments; discovered v1's tonal
   error is a global transform -> calibrated percentile LUT (halved residual).
   LUT-pack bake-off (27 commercial cubes: none beat the fitted curve).
   s009 established as standing canary + showcase pages workflow.
2. **Golden-track-b locked (v1 era):** near-lost LoRA weights recovered from
   /tmp and archived to NAS with checksums (v1+v2). SPEC.md created.
3. **track-b2 (v2):** fresh Stage 0 from RAW — tuned enfuse (eo .42), VM-bbox
   window composite from darkest bracket, WB neutralize, 2496-capable. Full
   25-scene run: mean 3.11, s007-class window hallucinations eliminated at the
   source. Locked as v2 with runs-of-record on NAS.
4. **VM re-baseline:** fal-vs-local discrepancy root-caused (resolution primary:
   768px thumbs hid casts full-res sees; NVFP4 quant secondary; provider jitter
   minor). New contract: fal any-llm/vision, qwen3-vl-30b-a3b, temp 0, full-res.
   56-scene property re-annotated in 4 min at concurrency 8. Local NVFP4 stack
   deprecated after CUDA crash. fal spend moved to dedicated dhm-fal account.
5. **Resolution:** FLUX.2 accepts 2496x1664 (largest /64-aligned 3:2 under 4MP);
   struct damage halves at 4MP; >1MP detail is generative (corr ~0) — deliverable
   sharpness via detail-transfer from 7MP merges, not model output. Trainer
   conditions ~1MP regardless.
6. **v3 dataset (the big build):** 2,288-scene corpus recap (old caps as
   pre-filter, 68% cost cut); 7-shard Stage 0 fleet across prometheus + legion
   CT250/251 (unstuck a dead vzdump) + monsta-mash Ryzen; tripod shift fast-path
   (skip align when <2px); 1,911 bases. Human curation station
   (/curate, keyboard-driven, server-persisted): 1,705 reviewed -> 1,543 keeps.
   Auto-filters validated (34/34 verticals matched human; property exclusions;
   near-dup guard). ECC registration gate: 66 misaligned pairs dropped.
   **Final: 1,433 triplets** (2496 base + registered beat + caption).
7. **Caption architecture:** VM enrichment pass (window verification incl
   mirror/cabinet-glass judgment + view contents + surface inventory) ->
   deterministic assembler, object-grounded prose, locked v4 after four
   iterations (global-lift blowouts -> palette overboard -> passive removal ->
   count-anchored). Principle: captions state VM-verified facts and constraints;
   the LoRA supplies style. Train/inference symmetry mandatory.
8. **Training:** both trainers on identical data — flux-2-trainer 1000 steps
   (~$12) and trainer-v2 1500 steps (~$71). Auto-archived to NAS on completion.
9. **Evaluation:** Scotch Pine holdout (36 scenes, per-LoRA LUT refits, s009
   never in any fit) + sneak peek from RAW on 2 virgin PICKS properties +
   full e2e on 3 untouched properties (112 scenes x 2 models).
   Report: https://raw-process.solamp.online/showcase/lora/v3-e2e/
10. **v3.1 decision:** ablation ties main on unseen data -> **$12-class model is
    production**; retrain iteration now 6x cheaper. main archived as reference.

## Production path (parallel workstream)
dhm-production branch `exp/fly-serverless-pipeline`: BRIEF.md supersedes
DHM-STACK v1.0 compute (RunPod OUT; fal + Fly Machines IN), full per-scene
state machine, triage rules, cost ledger, phased plan with acceptance criteria.
Golden fixture (s009 brackets + reference base/caption/sidecars) staged to
Tigris (interim bucket, migration flagged). Claude Code prompt: one line.
Per-image production cost: ~$0.12-0.13 (edit dominates); ~$5/property inference;
CPU ~$0.003/scene on Fly Machines.

## Spend (dhm-fal account, this session, approx)
Annotation+enrichment ~$30-45 · trainings $83 · eval/peek/caption-test edits
~$35-45 · **total ~$150-175** (plus ~$60-70 pre-cutover on the old account).

## Open items (none blocking)
- Corpus-wide LUT refit (e2e used Scotch-Pine-only calibration — free tenths).
- Base-build attrition on new properties (~23%) — retry-then-flag path specced.
- WB overshoot fix in Stage 0 (VM-as-judge sweep on canary) — queued.
- scene-032-class VM parse fails — strict-JSON retry shipped; monitor.
- Tranche 2 (4,073 uncapped scenes -> ~3k+ pairs) for v4; style priors; VM
  fine-tune (JSON schema reserved).
- Visual ablation-vs-main pass over the 112 e2e scenes (spot-check standing).

## Artifact index
NAS `Voltage Labs/clients/DHM/golden-track-b-generative/`: SPEC.md (v1->v3.1),
notes, assembler, all LUTs (+cubes), run archives, v3-train.zip.
`models/`: v1, v2, v3-ablation (PROD), v3-main + fal result JSONs.
Pages: /curate · /showcase/lora/{canary,caption-test,v3-peek,v3-e2e,track-b2,v1-fitted}