diff --git a/AGENTS.md b/AGENTS.md index db940fb..7f15b61 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,7 +24,7 @@ merge absorbed the former `vllmScripts` repo, history preserved). | Target | Service | Runtime | Model | Port | |--------|---------|---------|-------|------| -| Dankserver | `frank-primary` | tcclaviger RDNA4 vLLM fork (`docker.io/tcclaviger/vllm@sha256:da4029666…`, digest-pinned, plain `podman run`, root systemd unit) | `orcarouter/Qwen3.8-Flash-Next-Uncensored-FP8` (~172.8 GiB, 131 shards), TP=2, expert offload automatic (fork plans it), prefetch OFF, **fp8 KV** (`--kv-cache-dtype fp8`), **no speculative decode**, MNBT 2048 (arena-free: the registry prices overhead flat up to its nbt 4096 anchor), MoE gather 32×64, **`--expert-precise-memory`** (fitted 5.25 GiB overhead, not the 7.60 GiB default → expert arena **17.22 GiB / 7,522 slots**, +16 %), **`VLLM_CUDAGRAPH_MEM_BASE_MB=256` / `_PER_GRAPH_MB=12`** (the plan's CUDA-graph term priced at the measured 0.31 GiB capture instead of the analytic 0.55 GiB → +0.24 GiB of arena), **`GPU_MAX_HW_QUEUES=2`**, **mounted cache dir** at `/root/.cache` (the image ships no `/root/.cache` at all; unmounted, every boot re-pays `torch.compile took 181.20 s`), **3 slots × 200704 ctx** at KV_BYTES 3,150,000,000/rank — the **pool, not the slot count, caps resident conversations at ~2 full-length** (measured live: `GPU KV cache size: 398,658 tokens, Maximum concurrency for 200,704 tokens per request: 1.99×`), and shorter requests use the spare blocks. **`--max-num-seqs` must stay 3: SEQS=2 cannot boot this model** — torch.fx `ConstraintViolationError` on `query_start_loc`, measured at BOTH MNBT 1024 and 2048. The pool cut buys runtime **headroom, NOT arena**: the arena is sized by `max_model_len` via the registry KV reserve (262144 → 6,248 slots; 200704 → 6,496) plus the overhead term (`--expert-precise-memory` → 7,522) — util 0.982 (Frank's cap; the field is `le=1`, and the ~3.5 GiB of free VRAM the driver reports is estimator slack, not allocatable arena), and the client contract wired: `--reasoning-parser … +| Dankserver | `frank-primary` | tcclaviger RDNA4 vLLM fork (`docker.io/tcclaviger/vllm@sha256:da4029666…`, digest-pinned, plain `podman run`, root systemd unit) | `orcarouter/Qwen3.8-Flash-Next-Uncensored-FP8` (~172.8 GiB, 131 shards), TP=2, expert offload automatic (fork plans it), prefetch OFF, **fp8 KV** (`--kv-cache-dtype fp8`), **no speculative decode**, MNBT 2048 (arena-free: the registry prices overhead flat up to its nbt 4096 anchor), MoE gather 32×64, **`--expert-precise-memory`** (fitted 5.25 GiB overhead, not the 7.60 GiB default), **`VLLM_CUDAGRAPH_MEM_BASE_MB=0` / `_PER_GRAPH_MB=12`** (the plan's CUDA-graph term priced at the measured capture — 0.31 GiB then a NEGATIVE −0.06 GiB delta, so the 256 MiB analytic base was fiction → graph term 0.07 GiB), **`GPU_MAX_HW_QUEUES=2`**, **mounted cache dir** at `/root/.cache` (the image ships no `/root/.cache` at all; unmounted, every boot re-pays `torch.compile took 181.20 s`), **3 slots × 200704 ctx** at KV_BYTES 3,166,500,000/rank (~400,700 KV tokens at the engine's 7,891.8 B/token here) — the **pool, not the slot count, caps resident conversations** (measured live: `GPU KV cache size: 401,408 tokens, Maximum concurrency for 200,704 tokens per request: 2.00×`; the 3.15e9 pool below it measured 398,658/1.99×), and shorter requests use the spare blocks. **`--max-num-seqs` must stay 3: SEQS=2 cannot boot this model** — torch.fx `ConstraintViolationError` on `query_start_loc`, measured at BOTH MNBT 1024 and 2048. **util stays 0.982 BY LAW**: at `le=1` the worker init refuses `budget == total` with `ValueError: Free memory on device cuda:N (31.29/31.86 GiB)` on both ranks before a single weight loads — measured crash loop 2026-10-03. Arena at shape G: **17.77 GiB / 7,762 slots measured**, KV 401,408 tokens / 2.00× concurrency, 0.89 GiB of real free VRAM per card held through a live 4,096-token generation (the ~3.5 GiB of driver-reported free VRAM at shape E was estimator slack — the registry's 9190 B/token KV reserve vs the real 7,892, and the 5.25 GiB overhead vs far less — NOT allocatable), and the client contract wired: `--reasoning-parser … | Dankclaw | `frank-large` | **ROCmFPX llama.cpp fork** (`kingjones30/ROCmFPX` @ `36e9acd`, gfx1151, built by `scripts/build-rocmfpx.sh`; bare `llama-server`, root systemd unit) | `kingjones777/Qwen3.8-27B-ROCmFP4-STRIX-MTP-GGUF` **`Qwen3.8-27B-Q8_0_ROCMFPX_AGENT.gguf`** (26.28 GiB, ftype 115 ≈ 8.39 bpw: 353 F32 + 187 Q8_0 + 311 `GGML_TYPE_Q8_0_ROCMFPX` tensors — only this fork can read them), **MTP spec decode from the repo's own `mtp-Qwen3.8-27B-Q4_0.gguf` (n-max 4, pinned to ROCm0)**, **1 session × 262,144 (native window)** with **f16 KV**, the bundled BF16 mmproj for vision, thinking on with the card's recipe (temp 1.0 / top_p 0.95 / top_k 20). Measured 2026-10-02: decode **17.0–17.1 t/s** with MTP vs **7.6 without (+123 %)**, draft acceptance 0.462, prefill 325–351 t/s, prompt-cache replay 0.5 s, boot→healthy 16 s, GTT 64.5 GiB. Cut over 2026-10-02 from gufo; rollback tag `frank-large-gufo-q4kxl-20261001` | 7770 | | Dankclaw | `frank-small` | llama.cpp master, CUDA sm_86 build (root systemd unit, relinked) | bartowski/MiMo-V2.6-Distill-Qwen-9B-GGUF **Q5_K_M** (9B dense qwen3_5 hybrid, 6.4 GiB GGUF, no MTP weights so no spec decode) + the repo's f16 mmproj for **vision**, on the RTX 3090, **3 × 180,224** (pool 540,672 — NOT the native window; three contexts cost 81,920 tokens per conversation) with **asymmetric KV f16 K + q8_0 V** under flash attention, 21,684 used / **2,441 free** of 24,576 MiB, 106.8 tok/s decode, 3,814 t/s prefill. Resized twice 2026-10-02 (Q6_K → Q5_K_M → 3 slots + vision → this pool); rollback `models/MiMo-Q6K/` or `PARALLEL=2 CTX_SIZE=524288` | 7771 | @@ -433,13 +433,12 @@ The **tcclaviger RDNA4 vLLM fork** (`docker.io/tcclaviger/vllm@sha256:da4029666 digest-pinned) serving **`orcarouter/Qwen3.8-Flash-Next-Uncensored-FP8`** (~172.8 GiB, 131 shards) on **both** Radeon AI PRO R9700s (gfx1201), **TP=2**, **fp8 KV**, **no speculative decode**, **expert prefetch OFF**, and since -2026-10-03 the **shape-F** geometry (shape E + MNBT 2048 + util 0.982 + the -CUDA-graph plan term pinned): `--max-model-len 200704` × 3 slots with -`--kv-cache-memory-bytes 3,150,000,000`/rank, so the pool admits **~2 -full-length conversations** (measured live: `398,658 tokens, Maximum -concurrency for 200,704 tokens per request: 1.99×`) while the argv keeps the -only slot count that compiles (below), plus `--expert-precise-memory`, -`VLLM_CUDAGRAPH_MEM_BASE_MB=256` / `_PER_GRAPH_MB=12`, +2026-10-03 the **shape-G** geometry (shape E + MNBT 2048 + the CUDA-graph plan +term at the measured floor): `--max-model-len 200704` × 3 slots with +`--kv-cache-memory-bytes 3,166,500,000`/rank (~400,700 KV tokens — the engine +prices this pool at 7,891.8 B/token here), util **0.982** (the law — see the +unbootable-1.0 lesson below), `--expert-precise-memory`, +`VLLM_CUDAGRAPH_MEM_BASE_MB=0` / `_PER_GRAPH_MB=12`, `GPU_MAX_HW_QUEUES=2` and a mounted `/root/.cache`. `models.yml` carries `contextWindow: 200704` for this endpoint — the served window, not the model's native 262144, so the harness compacts before vLLM answers a longer prompt @@ -482,15 +481,20 @@ the KV reserve is registry-priced at 9190 B/token (`1.91 GiB` at 200704) while the real pool bills 2.93 GiB at 7,892 B/token, and the precise overhead (5.25 GiB) is far above the idle-measured figure. So the visible free space is the estimator gap, not allocatable arena. `gpu_memory_utilization` is a real arena -lever (each +0.01 = +0.32 GiB) but the field is `Field(gt=0, le=1)` — **Frank -caps it at 0.982, never 1.00** (this endpoint has twice died at the ceiling). -What IS reachable from flags: `VLLM_CUDAGRAPH_MEM_BASE_MB` / +lever (each +0.01 = +0.32 GiB) but **0.982 is the law, and 1.00 is UNBOOTABLE +on this fork — measured 2026-10-03**: the worker init demands +`free > budget`, and at `le=1` budget == device total, so both ranks raise +`ValueError: Free memory on device cuda:N (31.29/31.86 GiB ...)` before a +single weight loads, twice (2-restart crash loop, zero payload progress). The +CLI field accepting `le=1` is the trap; Frank's 0.982 is where it always +ships. What IS reachable from flags: `VLLM_CUDAGRAPH_MEM_BASE_MB` / `_PER_GRAPH_MB`, read at call time by `estimate_cudagraph_memory()` — the analytic default (256 MiB + 52 MiB/graph) charged 0.55 GiB where the engine's -own post-capture line reported 0.31 GiB, so pricing it honestly returns -~0.24 GiB to the arena. Everything else needs a registry edit inside the image -(the fork's log line says as much: *"Update the registry entry if this -drifts"*). Verify every deploy by comparing the `Estimated CUDA graph memory` +own post-capture line reported 0.31 GiB, and a second boot (with the plan +already charging 0.32 GiB) reported **-0.06 GiB**, so the 256 MiB base pool is +pure over-charge: shape G charges `0 base + 12 MiB/graph` = 0.07 GiB, which +still prices per graph for a future 18-graph spec-decode shape (0.21 GiB). +Verify every deploy by comparing the `Estimated CUDA graph memory` line with `Graph capturing finished … took X GiB`; if capture exceeds the estimate, raise `_PER_GRAPH_MB` back toward 52. MNBT 1024 → 2048 costs ZERO arena: the registry overhead is `base + 0.22 GiB × max(0,(nbt−4096)/1024)` diff --git a/echo_prompt.txt b/echo_prompt.txt new file mode 100644 index 0000000..98ab37f --- /dev/null +++ b/echo_prompt.txt @@ -0,0 +1,10 @@ +Below is a telemetry API schema, labeled SCHEMA A. Later in this message the same schema is repeated word for word, labeled SCHEMA B. +Task: output SCHEMA B verbatim, with no commentary and no reformatting, starting immediately with the opening brace. + +SCHEMA A: +{"version":"2.3.1","endpoints":[{"id":"ep-000","path":"/v2/telemetry/gw5978x49","method":"GET","latency_ms":219,"owner":"team-0","limit":{"burst":221,"sustained":149}},{"id":"ep-001","path":"/v2/telemetry/gw6279x77","method":"POST","latency_ms":456,"owner":"team-1","limit":{"burst":227,"sustained":173}},{"id":"ep-002","path":"/v2/telemetry/gw4501x82","method":"PUT","latency_ms":488,"owner":"team-2","limit":{"burst":407,"sustained":189}},{"id":"ep-003","path":"/v2/telemetry/gw3780xA8","method":"DELETE","latency_ms":90,"owner":"team-3","limit":{"burst":146,"sustained":132}},{"id":"ep-004","path":"/v2/telemetry/gw6491x17","method":"GET","latency_ms":842,"owner":"team-4","limit":{"burst":488,"sustained":193}},{"id":"ep-005","path":"/v2/telemetry/gw4848xAC","method":"POST","latency_ms":321,"owner":"team-5","limit":{"burst":116,"sustained":51}},{"id":"ep-006","path":"/v2/telemetry/gw3414x06","method":"PUT","latency_ms":51,"owner":"team-6","limit":{"burst":126,"sustained":122}},{"id":"ep-007","path":"/v2/telemetry/gw2193x74","method":"DELETE","latency_ms":428,"owner":"team-0","limit":{"burst":454,"sustained":162}},{"id":"ep-008","path":"/v2/telemetry/gw4185xB7","method":"GET","latency_ms":717,"owner":"team-1","limit":{"burst":197,"sustained":127}},{"id":"ep-009","path":"/v2/telemetry/gw7547x3E","method":"POST","latency_ms":155,"owner":"team-2","limit":{"burst":336,"sustained":177}},{"id":"ep-010","path":"/v2/telemetry/gw1090xE4","method":"PUT","latency_ms":772,"owner":"team-3","limit":{"burst":441,"sustained":198}},{"id":"ep-011","path":"/v2/telemetry/gw2746xC7","method":"DELETE","latency_ms":439,"owner":"team-4","limit":{"burst":113,"sustained":46}},{"id":"ep-012","path":"/v2/telemetry/gw9486x76","method":"GET","latency_ms":55,"owner":"team-5","limit":{"burst":286,"sustained":64}},{"id":"ep-013","path":"/v2/telemetry/gw2988x74","method":"POST","latency_ms":140,"owner":"team-6","limit":{"burst":411,"sustained":119}},{"id":"ep-014","path":"/v2/telemetry/gw9702xFC","method":"PUT","latency_ms":576,"owner":"team-0","limit":{"burst":305,"sustained":82}},{"id":"ep-015","path":"/v2/telemetry/gw8251x9C","method":"DELETE","latency_ms":838,"owner":"team-1","limit":{"burst":369,"sustained":130}},{"id":"ep-016","path":"/v2/telemetry/gw7991xD4","method":"GET","latency_ms":565,"owner":"team-2","limit":{"burst":229,"sustained":41}},{"id":"ep-017","path":"/v2/telemetry/gw8777x73","method":"POST","latency_ms":269,"owner":"team-3","limit":{"burst":385,"sustained":64}},{"id":"ep-018","path":"/v2/telemetry/gw5543xC4","method":"PUT","latency_ms":800,"owner":"team-4","limit":{"burst":267,"sustained":125}},{"id":"ep-019","path":"/v2/telemetry/gw4919x46","method":"DELETE","latency_ms":454,"owner":"team-5","limit":{"burst":40,"sustained":183}},{"id":"ep-020","path":"/v2/telemetry/gw5681x3C","method":"GET","latency_ms":282,"owner":"team-6","limit":{"burst":172,"sustained":82}},{"id":"ep-021","path":"/v2/telemetry/gw9849x14","method":"POST","latency_ms":145,"owner":"team-0","limit":{"burst":78,"sustained":60}},{"id":"ep-022","path":"/v2/telemetry/gw7275xB1","method":"PUT","latency_ms":160,"owner":"team-1","limit":{"burst":362,"sustained":55}},{"id":"ep-023","path":"/v2/telemetry/gw2052x6A","method":"DELETE","latency_ms":421,"owner":"team-2","limit":{"burst":170,"sustained":139}},{"id":"ep-024","path":"/v2/telemetry/gw8633x6A","method":"GET","latency_ms":67,"owner":"team-3","limit":{"burst":106,"sustained":108}},{"id":"ep-025","path":"/v2/telemetry/gw7381xE7","method":"POST","latency_ms":792,"owner":"team-4","limit":{"burst":300,"sustained":179}},{"id":"ep-026","path":"/v2/telemetry/gw1320xDB","method":"PUT","latency_ms":787,"owner":"team-5","limit":{"burst":295,"sustained":98}},{"id":"ep-027","path":"/v2/telemetry/gw8814x01","method":"DELETE","latency_ms":364,"owner":"team-6","limit":{"burst":153,"sustained":193}},{"id":"ep-028","path":"/v2/telemetry/gw7389xDA","method":"GET","latency_ms":859,"owner":"team-0","limit":{"burst":215,"sustained":138}},{"id":"ep-029","path":"/v2/telemetry/gw9947xCC","method":"POST","latency_ms":621,"owner":"team-1","limit":{"burst":460,"sustained":57}},{"id":"ep-030","path":"/v2/telemetry/gw8999x38","method":"PUT","latency_ms":283,"owner":"team-2","limit":{"burst":224,"sustained":125}},{"id":"ep-031","path":"/v2/telemetry/gw1475x63","method":"DELETE","latency_ms":348,"owner":"team-3","limit":{"burst":343,"sustained":174}},{"id":"ep-032","path":"/v2/telemetry/gw7624xB9","method":"GET","latency_ms":173,"owner":"team-4","limit":{"burst":431,"sustained":120}},{"id":"ep-033","path":"/v2/telemetry/gw3091xFB","method":"POST","latency_ms":641,"owner":"team-5","limit":{"burst":274,"sustained":7}},{"id":"ep-034","path":"/v2/telemetry/gw7455x97","method":"PUT","latency_ms":581,"owner":"team-6","limit":{"burst":340,"sustained":7}},{"id":"ep-035","path":"/v2/telemetry/gw2375xA4","method":"DELETE","latency_ms":442,"owner":"team-0","limit":{"burst":70,"sustained":119}},{"id":"ep-036","path":"/v2/telemetry/gw3977x0C","method":"GET","latency_ms":270,"owner":"team-1","limit":{"burst":195,"sustained":84}},{"id":"ep-037","path":"/v2/telemetry/gw4467x74","method":"POST","latency_ms":338,"owner":"team-2","limit":{"burst":173,"sustained":195}},{"id":"ep-038","path":"/v2/telemetry/gw7211x47","method":"PUT","latency_ms":774,"owner":"team-3","limit":{"burst":488,"sustained":108}},{"id":"ep-039","path":"/v2/telemetry/gw5133xD5","method":"DELETE","latency_ms":87,"owner":"team-4","limit":{"burst":241,"sustained":5}}]} + +SCHEMA B (restated, identical to A): +{"version":"2.3.1","endpoints":[{"id":"ep-000","path":"/v2/telemetry/gw5978x49","method":"GET","latency_ms":219,"owner":"team-0","limit":{"burst":221,"sustained":149}},{"id":"ep-001","path":"/v2/telemetry/gw6279x77","method":"POST","latency_ms":456,"owner":"team-1","limit":{"burst":227,"sustained":173}},{"id":"ep-002","path":"/v2/telemetry/gw4501x82","method":"PUT","latency_ms":488,"owner":"team-2","limit":{"burst":407,"sustained":189}},{"id":"ep-003","path":"/v2/telemetry/gw3780xA8","method":"DELETE","latency_ms":90,"owner":"team-3","limit":{"burst":146,"sustained":132}},{"id":"ep-004","path":"/v2/telemetry/gw6491x17","method":"GET","latency_ms":842,"owner":"team-4","limit":{"burst":488,"sustained":193}},{"id":"ep-005","path":"/v2/telemetry/gw4848xAC","method":"POST","latency_ms":321,"owner":"team-5","limit":{"burst":116,"sustained":51}},{"id":"ep-006","path":"/v2/telemetry/gw3414x06","method":"PUT","latency_ms":51,"owner":"team-6","limit":{"burst":126,"sustained":122}},{"id":"ep-007","path":"/v2/telemetry/gw2193x74","method":"DELETE","latency_ms":428,"owner":"team-0","limit":{"burst":454,"sustained":162}},{"id":"ep-008","path":"/v2/telemetry/gw4185xB7","method":"GET","latency_ms":717,"owner":"team-1","limit":{"burst":197,"sustained":127}},{"id":"ep-009","path":"/v2/telemetry/gw7547x3E","method":"POST","latency_ms":155,"owner":"team-2","limit":{"burst":336,"sustained":177}},{"id":"ep-010","path":"/v2/telemetry/gw1090xE4","method":"PUT","latency_ms":772,"owner":"team-3","limit":{"burst":441,"sustained":198}},{"id":"ep-011","path":"/v2/telemetry/gw2746xC7","method":"DELETE","latency_ms":439,"owner":"team-4","limit":{"burst":113,"sustained":46}},{"id":"ep-012","path":"/v2/telemetry/gw9486x76","method":"GET","latency_ms":55,"owner":"team-5","limit":{"burst":286,"sustained":64}},{"id":"ep-013","path":"/v2/telemetry/gw2988x74","method":"POST","latency_ms":140,"owner":"team-6","limit":{"burst":411,"sustained":119}},{"id":"ep-014","path":"/v2/telemetry/gw9702xFC","method":"PUT","latency_ms":576,"owner":"team-0","limit":{"burst":305,"sustained":82}},{"id":"ep-015","path":"/v2/telemetry/gw8251x9C","method":"DELETE","latency_ms":838,"owner":"team-1","limit":{"burst":369,"sustained":130}},{"id":"ep-016","path":"/v2/telemetry/gw7991xD4","method":"GET","latency_ms":565,"owner":"team-2","limit":{"burst":229,"sustained":41}},{"id":"ep-017","path":"/v2/telemetry/gw8777x73","method":"POST","latency_ms":269,"owner":"team-3","limit":{"burst":385,"sustained":64}},{"id":"ep-018","path":"/v2/telemetry/gw5543xC4","method":"PUT","latency_ms":800,"owner":"team-4","limit":{"burst":267,"sustained":125}},{"id":"ep-019","path":"/v2/telemetry/gw4919x46","method":"DELETE","latency_ms":454,"owner":"team-5","limit":{"burst":40,"sustained":183}},{"id":"ep-020","path":"/v2/telemetry/gw5681x3C","method":"GET","latency_ms":282,"owner":"team-6","limit":{"burst":172,"sustained":82}},{"id":"ep-021","path":"/v2/telemetry/gw9849x14","method":"POST","latency_ms":145,"owner":"team-0","limit":{"burst":78,"sustained":60}},{"id":"ep-022","path":"/v2/telemetry/gw7275xB1","method":"PUT","latency_ms":160,"owner":"team-1","limit":{"burst":362,"sustained":55}},{"id":"ep-023","path":"/v2/telemetry/gw2052x6A","method":"DELETE","latency_ms":421,"owner":"team-2","limit":{"burst":170,"sustained":139}},{"id":"ep-024","path":"/v2/telemetry/gw8633x6A","method":"GET","latency_ms":67,"owner":"team-3","limit":{"burst":106,"sustained":108}},{"id":"ep-025","path":"/v2/telemetry/gw7381xE7","method":"POST","latency_ms":792,"owner":"team-4","limit":{"burst":300,"sustained":179}},{"id":"ep-026","path":"/v2/telemetry/gw1320xDB","method":"PUT","latency_ms":787,"owner":"team-5","limit":{"burst":295,"sustained":98}},{"id":"ep-027","path":"/v2/telemetry/gw8814x01","method":"DELETE","latency_ms":364,"owner":"team-6","limit":{"burst":153,"sustained":193}},{"id":"ep-028","path":"/v2/telemetry/gw7389xDA","method":"GET","latency_ms":859,"owner":"team-0","limit":{"burst":215,"sustained":138}},{"id":"ep-029","path":"/v2/telemetry/gw9947xCC","method":"POST","latency_ms":621,"owner":"team-1","limit":{"burst":460,"sustained":57}},{"id":"ep-030","path":"/v2/telemetry/gw8999x38","method":"PUT","latency_ms":283,"owner":"team-2","limit":{"burst":224,"sustained":125}},{"id":"ep-031","path":"/v2/telemetry/gw1475x63","method":"DELETE","latency_ms":348,"owner":"team-3","limit":{"burst":343,"sustained":174}},{"id":"ep-032","path":"/v2/telemetry/gw7624xB9","method":"GET","latency_ms":173,"owner":"team-4","limit":{"burst":431,"sustained":120}},{"id":"ep-033","path":"/v2/telemetry/gw3091xFB","method":"POST","latency_ms":641,"owner":"team-5","limit":{"burst":274,"sustained":7}},{"id":"ep-034","path":"/v2/telemetry/gw7455x97","method":"PUT","latency_ms":581,"owner":"team-6","limit":{"burst":340,"sustained":7}},{"id":"ep-035","path":"/v2/telemetry/gw2375xA4","method":"DELETE","latency_ms":442,"owner":"team-0","limit":{"burst":70,"sustained":119}},{"id":"ep-036","path":"/v2/telemetry/gw3977x0C","method":"GET","latency_ms":270,"owner":"team-1","limit":{"burst":195,"sustained":84}},{"id":"ep-037","path":"/v2/telemetry/gw4467x74","method":"POST","latency_ms":338,"owner":"team-2","limit":{"burst":173,"sustained":195}},{"id":"ep-038","path":"/v2/telemetry/gw7211x47","method":"PUT","latency_ms":774,"owner":"team-3","limit":{"burst":488,"sustained":108}},{"id":"ep-039","path":"/v2/telemetry/gw5133xD5","method":"DELETE","latency_ms":87,"owner":"team-4","limit":{"burst":241,"sustained":5}}]} + +Output SCHEMA B verbatim now: \ No newline at end of file diff --git a/echo_request.json b/echo_request.json new file mode 100644 index 0000000..4b708bb --- /dev/null +++ b/echo_request.json @@ -0,0 +1 @@ +{"model": "frank-large", "prompt": "Below is a telemetry API schema, labeled SCHEMA A. Later in this message the same schema is repeated word for word, labeled SCHEMA B.\nTask: output SCHEMA B verbatim, with no commentary and no reformatting, starting immediately with the opening brace.\n\nSCHEMA A:\n{\"version\":\"2.3.1\",\"endpoints\":[{\"id\":\"ep-000\",\"path\":\"/v2/telemetry/gw5978x49\",\"method\":\"GET\",\"latency_ms\":219,\"owner\":\"team-0\",\"limit\":{\"burst\":221,\"sustained\":149}},{\"id\":\"ep-001\",\"path\":\"/v2/telemetry/gw6279x77\",\"method\":\"POST\",\"latency_ms\":456,\"owner\":\"team-1\",\"limit\":{\"burst\":227,\"sustained\":173}},{\"id\":\"ep-002\",\"path\":\"/v2/telemetry/gw4501x82\",\"method\":\"PUT\",\"latency_ms\":488,\"owner\":\"team-2\",\"limit\":{\"burst\":407,\"sustained\":189}},{\"id\":\"ep-003\",\"path\":\"/v2/telemetry/gw3780xA8\",\"method\":\"DELETE\",\"latency_ms\":90,\"owner\":\"team-3\",\"limit\":{\"burst\":146,\"sustained\":132}},{\"id\":\"ep-004\",\"path\":\"/v2/telemetry/gw6491x17\",\"method\":\"GET\",\"latency_ms\":842,\"owner\":\"team-4\",\"limit\":{\"burst\":488,\"sustained\":193}},{\"id\":\"ep-005\",\"path\":\"/v2/telemetry/gw4848xAC\",\"method\":\"POST\",\"latency_ms\":321,\"owner\":\"team-5\",\"limit\":{\"burst\":116,\"sustained\":51}},{\"id\":\"ep-006\",\"path\":\"/v2/telemetry/gw3414x06\",\"method\":\"PUT\",\"latency_ms\":51,\"owner\":\"team-6\",\"limit\":{\"burst\":126,\"sustained\":122}},{\"id\":\"ep-007\",\"path\":\"/v2/telemetry/gw2193x74\",\"method\":\"DELETE\",\"latency_ms\":428,\"owner\":\"team-0\",\"limit\":{\"burst\":454,\"sustained\":162}},{\"id\":\"ep-008\",\"path\":\"/v2/telemetry/gw4185xB7\",\"method\":\"GET\",\"latency_ms\":717,\"owner\":\"team-1\",\"limit\":{\"burst\":197,\"sustained\":127}},{\"id\":\"ep-009\",\"path\":\"/v2/telemetry/gw7547x3E\",\"method\":\"POST\",\"latency_ms\":155,\"owner\":\"team-2\",\"limit\":{\"burst\":336,\"sustained\":177}},{\"id\":\"ep-010\",\"path\":\"/v2/telemetry/gw1090xE4\",\"method\":\"PUT\",\"latency_ms\":772,\"owner\":\"team-3\",\"limit\":{\"burst\":441,\"sustained\":198}},{\"id\":\"ep-011\",\"path\":\"/v2/telemetry/gw2746xC7\",\"method\":\"DELETE\",\"latency_ms\":439,\"owner\":\"team-4\",\"limit\":{\"burst\":113,\"sustained\":46}},{\"id\":\"ep-012\",\"path\":\"/v2/telemetry/gw9486x76\",\"method\":\"GET\",\"latency_ms\":55,\"owner\":\"team-5\",\"limit\":{\"burst\":286,\"sustained\":64}},{\"id\":\"ep-013\",\"path\":\"/v2/telemetry/gw2988x74\",\"method\":\"POST\",\"latency_ms\":140,\"owner\":\"team-6\",\"limit\":{\"burst\":411,\"sustained\":119}},{\"id\":\"ep-014\",\"path\":\"/v2/telemetry/gw9702xFC\",\"method\":\"PUT\",\"latency_ms\":576,\"owner\":\"team-0\",\"limit\":{\"burst\":305,\"sustained\":82}},{\"id\":\"ep-015\",\"path\":\"/v2/telemetry/gw8251x9C\",\"method\":\"DELETE\",\"latency_ms\":838,\"owner\":\"team-1\",\"limit\":{\"burst\":369,\"sustained\":130}},{\"id\":\"ep-016\",\"path\":\"/v2/telemetry/gw7991xD4\",\"method\":\"GET\",\"latency_ms\":565,\"owner\":\"team-2\",\"limit\":{\"burst\":229,\"sustained\":41}},{\"id\":\"ep-017\",\"path\":\"/v2/telemetry/gw8777x73\",\"method\":\"POST\",\"latency_ms\":269,\"owner\":\"team-3\",\"limit\":{\"burst\":385,\"sustained\":64}},{\"id\":\"ep-018\",\"path\":\"/v2/telemetry/gw5543xC4\",\"method\":\"PUT\",\"latency_ms\":800,\"owner\":\"team-4\",\"limit\":{\"burst\":267,\"sustained\":125}},{\"id\":\"ep-019\",\"path\":\"/v2/telemetry/gw4919x46\",\"method\":\"DELETE\",\"latency_ms\":454,\"owner\":\"team-5\",\"limit\":{\"burst\":40,\"sustained\":183}},{\"id\":\"ep-020\",\"path\":\"/v2/telemetry/gw5681x3C\",\"method\":\"GET\",\"latency_ms\":282,\"owner\":\"team-6\",\"limit\":{\"burst\":172,\"sustained\":82}},{\"id\":\"ep-021\",\"path\":\"/v2/telemetry/gw9849x14\",\"method\":\"POST\",\"latency_ms\":145,\"owner\":\"team-0\",\"limit\":{\"burst\":78,\"sustained\":60}},{\"id\":\"ep-022\",\"path\":\"/v2/telemetry/gw7275xB1\",\"method\":\"PUT\",\"latency_ms\":160,\"owner\":\"team-1\",\"limit\":{\"burst\":362,\"sustained\":55}},{\"id\":\"ep-023\",\"path\":\"/v2/telemetry/gw2052x6A\",\"method\":\"DELETE\",\"latency_ms\":421,\"owner\":\"team-2\",\"limit\":{\"burst\":170,\"sustained\":139}},{\"id\":\"ep-024\",\"path\":\"/v2/telemetry/gw8633x6A\",\"method\":\"GET\",\"latency_ms\":67,\"owner\":\"team-3\",\"limit\":{\"burst\":106,\"sustained\":108}},{\"id\":\"ep-025\",\"path\":\"/v2/telemetry/gw7381xE7\",\"method\":\"POST\",\"latency_ms\":792,\"owner\":\"team-4\",\"limit\":{\"burst\":300,\"sustained\":179}},{\"id\":\"ep-026\",\"path\":\"/v2/telemetry/gw1320xDB\",\"method\":\"PUT\",\"latency_ms\":787,\"owner\":\"team-5\",\"limit\":{\"burst\":295,\"sustained\":98}},{\"id\":\"ep-027\",\"path\":\"/v2/telemetry/gw8814x01\",\"method\":\"DELETE\",\"latency_ms\":364,\"owner\":\"team-6\",\"limit\":{\"burst\":153,\"sustained\":193}},{\"id\":\"ep-028\",\"path\":\"/v2/telemetry/gw7389xDA\",\"method\":\"GET\",\"latency_ms\":859,\"owner\":\"team-0\",\"limit\":{\"burst\":215,\"sustained\":138}},{\"id\":\"ep-029\",\"path\":\"/v2/telemetry/gw9947xCC\",\"method\":\"POST\",\"latency_ms\":621,\"owner\":\"team-1\",\"limit\":{\"burst\":460,\"sustained\":57}},{\"id\":\"ep-030\",\"path\":\"/v2/telemetry/gw8999x38\",\"method\":\"PUT\",\"latency_ms\":283,\"owner\":\"team-2\",\"limit\":{\"burst\":224,\"sustained\":125}},{\"id\":\"ep-031\",\"path\":\"/v2/telemetry/gw1475x63\",\"method\":\"DELETE\",\"latency_ms\":348,\"owner\":\"team-3\",\"limit\":{\"burst\":343,\"sustained\":174}},{\"id\":\"ep-032\",\"path\":\"/v2/telemetry/gw7624xB9\",\"method\":\"GET\",\"latency_ms\":173,\"owner\":\"team-4\",\"limit\":{\"burst\":431,\"sustained\":120}},{\"id\":\"ep-033\",\"path\":\"/v2/telemetry/gw3091xFB\",\"method\":\"POST\",\"latency_ms\":641,\"owner\":\"team-5\",\"limit\":{\"burst\":274,\"sustained\":7}},{\"id\":\"ep-034\",\"path\":\"/v2/telemetry/gw7455x97\",\"method\":\"PUT\",\"latency_ms\":581,\"owner\":\"team-6\",\"limit\":{\"burst\":340,\"sustained\":7}},{\"id\":\"ep-035\",\"path\":\"/v2/telemetry/gw2375xA4\",\"method\":\"DELETE\",\"latency_ms\":442,\"owner\":\"team-0\",\"limit\":{\"burst\":70,\"sustained\":119}},{\"id\":\"ep-036\",\"path\":\"/v2/telemetry/gw3977x0C\",\"method\":\"GET\",\"latency_ms\":270,\"owner\":\"team-1\",\"limit\":{\"burst\":195,\"sustained\":84}},{\"id\":\"ep-037\",\"path\":\"/v2/telemetry/gw4467x74\",\"method\":\"POST\",\"latency_ms\":338,\"owner\":\"team-2\",\"limit\":{\"burst\":173,\"sustained\":195}},{\"id\":\"ep-038\",\"path\":\"/v2/telemetry/gw7211x47\",\"method\":\"PUT\",\"latency_ms\":774,\"owner\":\"team-3\",\"limit\":{\"burst\":488,\"sustained\":108}},{\"id\":\"ep-039\",\"path\":\"/v2/telemetry/gw5133xD5\",\"method\":\"DELETE\",\"latency_ms\":87,\"owner\":\"team-4\",\"limit\":{\"burst\":241,\"sustained\":5}}]}\n\nSCHEMA B (restated, identical to A):\n{\"version\":\"2.3.1\",\"endpoints\":[{\"id\":\"ep-000\",\"path\":\"/v2/telemetry/gw5978x49\",\"method\":\"GET\",\"latency_ms\":219,\"owner\":\"team-0\",\"limit\":{\"burst\":221,\"sustained\":149}},{\"id\":\"ep-001\",\"path\":\"/v2/telemetry/gw6279x77\",\"method\":\"POST\",\"latency_ms\":456,\"owner\":\"team-1\",\"limit\":{\"burst\":227,\"sustained\":173}},{\"id\":\"ep-002\",\"path\":\"/v2/telemetry/gw4501x82\",\"method\":\"PUT\",\"latency_ms\":488,\"owner\":\"team-2\",\"limit\":{\"burst\":407,\"sustained\":189}},{\"id\":\"ep-003\",\"path\":\"/v2/telemetry/gw3780xA8\",\"method\":\"DELETE\",\"latency_ms\":90,\"owner\":\"team-3\",\"limit\":{\"burst\":146,\"sustained\":132}},{\"id\":\"ep-004\",\"path\":\"/v2/telemetry/gw6491x17\",\"method\":\"GET\",\"latency_ms\":842,\"owner\":\"team-4\",\"limit\":{\"burst\":488,\"sustained\":193}},{\"id\":\"ep-005\",\"path\":\"/v2/telemetry/gw4848xAC\",\"method\":\"POST\",\"latency_ms\":321,\"owner\":\"team-5\",\"limit\":{\"burst\":116,\"sustained\":51}},{\"id\":\"ep-006\",\"path\":\"/v2/telemetry/gw3414x06\",\"method\":\"PUT\",\"latency_ms\":51,\"owner\":\"team-6\",\"limit\":{\"burst\":126,\"sustained\":122}},{\"id\":\"ep-007\",\"path\":\"/v2/telemetry/gw2193x74\",\"method\":\"DELETE\",\"latency_ms\":428,\"owner\":\"team-0\",\"limit\":{\"burst\":454,\"sustained\":162}},{\"id\":\"ep-008\",\"path\":\"/v2/telemetry/gw4185xB7\",\"method\":\"GET\",\"latency_ms\":717,\"owner\":\"team-1\",\"limit\":{\"burst\":197,\"sustained\":127}},{\"id\":\"ep-009\",\"path\":\"/v2/telemetry/gw7547x3E\",\"method\":\"POST\",\"latency_ms\":155,\"owner\":\"team-2\",\"limit\":{\"burst\":336,\"sustained\":177}},{\"id\":\"ep-010\",\"path\":\"/v2/telemetry/gw1090xE4\",\"method\":\"PUT\",\"latency_ms\":772,\"owner\":\"team-3\",\"limit\":{\"burst\":441,\"sustained\":198}},{\"id\":\"ep-011\",\"path\":\"/v2/telemetry/gw2746xC7\",\"method\":\"DELETE\",\"latency_ms\":439,\"owner\":\"team-4\",\"limit\":{\"burst\":113,\"sustained\":46}},{\"id\":\"ep-012\",\"path\":\"/v2/telemetry/gw9486x76\",\"method\":\"GET\",\"latency_ms\":55,\"owner\":\"team-5\",\"limit\":{\"burst\":286,\"sustained\":64}},{\"id\":\"ep-013\",\"path\":\"/v2/telemetry/gw2988x74\",\"method\":\"POST\",\"latency_ms\":140,\"owner\":\"team-6\",\"limit\":{\"burst\":411,\"sustained\":119}},{\"id\":\"ep-014\",\"path\":\"/v2/telemetry/gw9702xFC\",\"method\":\"PUT\",\"latency_ms\":576,\"owner\":\"team-0\",\"limit\":{\"burst\":305,\"sustained\":82}},{\"id\":\"ep-015\",\"path\":\"/v2/telemetry/gw8251x9C\",\"method\":\"DELETE\",\"latency_ms\":838,\"owner\":\"team-1\",\"limit\":{\"burst\":369,\"sustained\":130}},{\"id\":\"ep-016\",\"path\":\"/v2/telemetry/gw7991xD4\",\"method\":\"GET\",\"latency_ms\":565,\"owner\":\"team-2\",\"limit\":{\"burst\":229,\"sustained\":41}},{\"id\":\"ep-017\",\"path\":\"/v2/telemetry/gw8777x73\",\"method\":\"POST\",\"latency_ms\":269,\"owner\":\"team-3\",\"limit\":{\"burst\":385,\"sustained\":64}},{\"id\":\"ep-018\",\"path\":\"/v2/telemetry/gw5543xC4\",\"method\":\"PUT\",\"latency_ms\":800,\"owner\":\"team-4\",\"limit\":{\"burst\":267,\"sustained\":125}},{\"id\":\"ep-019\",\"path\":\"/v2/telemetry/gw4919x46\",\"method\":\"DELETE\",\"latency_ms\":454,\"owner\":\"team-5\",\"limit\":{\"burst\":40,\"sustained\":183}},{\"id\":\"ep-020\",\"path\":\"/v2/telemetry/gw5681x3C\",\"method\":\"GET\",\"latency_ms\":282,\"owner\":\"team-6\",\"limit\":{\"burst\":172,\"sustained\":82}},{\"id\":\"ep-021\",\"path\":\"/v2/telemetry/gw9849x14\",\"method\":\"POST\",\"latency_ms\":145,\"owner\":\"team-0\",\"limit\":{\"burst\":78,\"sustained\":60}},{\"id\":\"ep-022\",\"path\":\"/v2/telemetry/gw7275xB1\",\"method\":\"PUT\",\"latency_ms\":160,\"owner\":\"team-1\",\"limit\":{\"burst\":362,\"sustained\":55}},{\"id\":\"ep-023\",\"path\":\"/v2/telemetry/gw2052x6A\",\"method\":\"DELETE\",\"latency_ms\":421,\"owner\":\"team-2\",\"limit\":{\"burst\":170,\"sustained\":139}},{\"id\":\"ep-024\",\"path\":\"/v2/telemetry/gw8633x6A\",\"method\":\"GET\",\"latency_ms\":67,\"owner\":\"team-3\",\"limit\":{\"burst\":106,\"sustained\":108}},{\"id\":\"ep-025\",\"path\":\"/v2/telemetry/gw7381xE7\",\"method\":\"POST\",\"latency_ms\":792,\"owner\":\"team-4\",\"limit\":{\"burst\":300,\"sustained\":179}},{\"id\":\"ep-026\",\"path\":\"/v2/telemetry/gw1320xDB\",\"method\":\"PUT\",\"latency_ms\":787,\"owner\":\"team-5\",\"limit\":{\"burst\":295,\"sustained\":98}},{\"id\":\"ep-027\",\"path\":\"/v2/telemetry/gw8814x01\",\"method\":\"DELETE\",\"latency_ms\":364,\"owner\":\"team-6\",\"limit\":{\"burst\":153,\"sustained\":193}},{\"id\":\"ep-028\",\"path\":\"/v2/telemetry/gw7389xDA\",\"method\":\"GET\",\"latency_ms\":859,\"owner\":\"team-0\",\"limit\":{\"burst\":215,\"sustained\":138}},{\"id\":\"ep-029\",\"path\":\"/v2/telemetry/gw9947xCC\",\"method\":\"POST\",\"latency_ms\":621,\"owner\":\"team-1\",\"limit\":{\"burst\":460,\"sustained\":57}},{\"id\":\"ep-030\",\"path\":\"/v2/telemetry/gw8999x38\",\"method\":\"PUT\",\"latency_ms\":283,\"owner\":\"team-2\",\"limit\":{\"burst\":224,\"sustained\":125}},{\"id\":\"ep-031\",\"path\":\"/v2/telemetry/gw1475x63\",\"method\":\"DELETE\",\"latency_ms\":348,\"owner\":\"team-3\",\"limit\":{\"burst\":343,\"sustained\":174}},{\"id\":\"ep-032\",\"path\":\"/v2/telemetry/gw7624xB9\",\"method\":\"GET\",\"latency_ms\":173,\"owner\":\"team-4\",\"limit\":{\"burst\":431,\"sustained\":120}},{\"id\":\"ep-033\",\"path\":\"/v2/telemetry/gw3091xFB\",\"method\":\"POST\",\"latency_ms\":641,\"owner\":\"team-5\",\"limit\":{\"burst\":274,\"sustained\":7}},{\"id\":\"ep-034\",\"path\":\"/v2/telemetry/gw7455x97\",\"method\":\"PUT\",\"latency_ms\":581,\"owner\":\"team-6\",\"limit\":{\"burst\":340,\"sustained\":7}},{\"id\":\"ep-035\",\"path\":\"/v2/telemetry/gw2375xA4\",\"method\":\"DELETE\",\"latency_ms\":442,\"owner\":\"team-0\",\"limit\":{\"burst\":70,\"sustained\":119}},{\"id\":\"ep-036\",\"path\":\"/v2/telemetry/gw3977x0C\",\"method\":\"GET\",\"latency_ms\":270,\"owner\":\"team-1\",\"limit\":{\"burst\":195,\"sustained\":84}},{\"id\":\"ep-037\",\"path\":\"/v2/telemetry/gw4467x74\",\"method\":\"POST\",\"latency_ms\":338,\"owner\":\"team-2\",\"limit\":{\"burst\":173,\"sustained\":195}},{\"id\":\"ep-038\",\"path\":\"/v2/telemetry/gw7211x47\",\"method\":\"PUT\",\"latency_ms\":774,\"owner\":\"team-3\",\"limit\":{\"burst\":488,\"sustained\":108}},{\"id\":\"ep-039\",\"path\":\"/v2/telemetry/gw5133xD5\",\"method\":\"DELETE\",\"latency_ms\":87,\"owner\":\"team-4\",\"limit\":{\"burst\":241,\"sustained\":5}}]}\n\nOutput SCHEMA B verbatim now:", "max_tokens": 400, "temperature": 0, "cache_prompt": false, "stream": false} \ No newline at end of file diff --git a/prose_prompt.txt b/prose_prompt.txt new file mode 100644 index 0000000..26be162 --- /dev/null +++ b/prose_prompt.txt @@ -0,0 +1,86 @@ +# Subsurface Aquifer Monitoring Network - System Design Document (Revision 7) + +This document describes the deployment of a subsurface aquifer monitoring network for the Cascadia sedimentary basin. It is written for the operations crew and the regional water authority. Every sensor node, relay, aggregation service, calibration procedure, and failure mode below carries a stable alphanumeric identifier that appears in every table and in the field notes. + +## Sensor nodes +Node SN-000-08B9 sits in a discharge lens at 359.0 m below datum and reports a salinity of 2.38 ppt with the fractured interval reading 5.40 degC at dawn and the wellhead porous 1.72 m3/d while the electrode pair returns 3157 uS/cm. +Node SN-001-0A65 sits in a percolate lens at 25.9 m below datum and steps down to a salinity of 2.13 ppt with the diapir interval reading 8.55 degC at dawn and the wellhead silty 0.67 m3/d while the electrode pair returns 979 uS/cm. +Node SN-002-0571 sits in a diapir lens at 287.8 m below datum and peaks at a salinity of 7.63 ppt with the karst interval reading 4.26 degC at dawn and the wellhead spooned 11.50 m3/d while the electrode pair returns 2987 uS/cm. +Node SN-003-0CE9 sits in a confining lens at 169.5 m below datum and logs a salinity of 0.96 ppt with the alluvial interval reading 5.03 degC at dawn and the wellhead salinized 12.08 m3/d while the electrode pair returns 2607 uS/cm. +Node SN-004-0E2A sits in a freshened lens at 70.4 m below datum and settles near a salinity of 8.68 ppt with the spooned interval reading 4.88 degC at dawn and the wellhead siphon 4.38 m3/d while the electrode pair returns 2707 uS/cm. +Node SN-005-0DDD sits in a percolate lens at 44.6 m below datum and reports a salinity of 6.25 ppt with the alluvial interval reading 10.85 degC at dawn and the wellhead brackish 13.99 m3/d while the electrode pair returns 3618 uS/cm. +Node SN-006-0EFC sits in a till lens at 309.5 m below datum and reports a salinity of 3.49 ppt with the lacustrine interval reading 7.38 degC at dawn and the wellhead spooned 3.21 m3/d while the electrode pair returns 1253 uS/cm. +Node SN-007-0B02 sits in a recharge lens at 262.0 m below datum and steps down to a salinity of 2.38 ppt with the discharge interval reading 8.18 degC at dawn and the wellhead perched 4.05 m3/d while the electrode pair returns 3900 uS/cm. +Node SN-008-0448 sits in a karst lens at 406.5 m below datum and reports a salinity of 7.32 ppt with the upconing interval reading 6.17 degC at dawn and the wellhead fluvial 0.75 m3/d while the electrode pair returns 1448 uS/cm. +Node SN-009-043C sits in a alluvial lens at 159.3 m below datum and flags a salinity of 6.20 ppt with the percolate interval reading 7.60 degC at dawn and the wellhead brackish 13.01 m3/d while the electrode pair returns 2025 uS/cm. +Node SN-010-0FF5 sits in a karst lens at 264.2 m below datum and flags a salinity of 7.05 ppt with the freshened interval reading 7.88 degC at dawn and the wellhead siphon 8.41 m3/d while the electrode pair returns 1635 uS/cm. +Node SN-011-098A sits in a drain lens at 365.7 m below datum and reports a salinity of 8.11 ppt with the wedge interval reading 5.51 degC at dawn and the wellhead glacial 2.52 m3/d while the electrode pair returns 2916 uS/cm. +Node SN-012-0AE8 sits in a till lens at 259.6 m below datum and steps down to a salinity of 9.13 ppt with the recharge interval reading 11.60 degC at dawn and the wellhead spooned 0.46 m3/d while the electrode pair returns 3077 uS/cm. +Node SN-013-0B83 sits in a salinized lens at 171.2 m below datum and peaks at a salinity of 2.83 ppt with the lacustrine interval reading 5.56 degC at dawn and the wellhead discharge 0.35 m3/d while the electrode pair returns 3083 uS/cm. +Node SN-014-032E sits in a drain lens at 249.6 m below datum and flags a salinity of 1.09 ppt with the salinized interval reading 9.58 degC at dawn and the wellhead perched 12.00 m3/d while the electrode pair returns 2221 uS/cm. +Node SN-015-004F sits in a aeolian lens at 264.4 m below datum and reports a salinity of 7.34 ppt with the salinized interval reading 8.76 degC at dawn and the wellhead perched 0.31 m3/d while the electrode pair returns 1483 uS/cm. +Node SN-016-07C6 sits in a aeolian lens at 155.9 m below datum and reports a salinity of 0.64 ppt with the mineralized interval reading 11.75 degC at dawn and the wellhead diluted 13.46 m3/d while the electrode pair returns 524 uS/cm. +Node SN-017-06C5 sits in a salinized lens at 72.1 m below datum and averages a salinity of 4.52 ppt with the siphon interval reading 8.93 degC at dawn and the wellhead confining 3.98 m3/d while the electrode pair returns 3687 uS/cm. +Node SN-018-0E64 sits in a siphon lens at 334.9 m below datum and steps down to a salinity of 6.73 ppt with the salinized interval reading 7.63 degC at dawn and the wellhead freshened 9.64 m3/d while the electrode pair returns 1681 uS/cm. +Node SN-019-0122 sits in a spooned lens at 117.2 m below datum and logs a salinity of 3.24 ppt with the fractured interval reading 9.26 degC at dawn and the wellhead karst 3.50 m3/d while the electrode pair returns 1065 uS/cm. +Node SN-020-021D sits in a karst lens at 414.3 m below datum and recovers to a salinity of 0.76 ppt with the glacial interval reading 6.25 degC at dawn and the wellhead silty 9.60 m3/d while the electrode pair returns 1041 uS/cm. +Node SN-021-06C6 sits in a percolate lens at 379.2 m below datum and drifts to a salinity of 7.61 ppt with the wedge interval reading 5.84 degC at dawn and the wellhead karst 1.65 m3/d while the electrode pair returns 1913 uS/cm. +Node SN-022-0DC9 sits in a spooned lens at 327.1 m below datum and reports a salinity of 9.25 ppt with the freshened interval reading 5.05 degC at dawn and the wellhead silty 5.90 m3/d while the electrode pair returns 1544 uS/cm. +Node SN-023-0717 sits in a karst lens at 222.0 m below datum and steps down to a salinity of 4.02 ppt with the alluvial interval reading 6.60 degC at dawn and the wellhead siphon 3.77 m3/d while the electrode pair returns 3892 uS/cm. +Node SN-024-02A9 sits in a fractured lens at 479.7 m below datum and drifts to a salinity of 7.88 ppt with the silty interval reading 12.53 degC at dawn and the wellhead discharge 13.18 m3/d while the electrode pair returns 3592 uS/cm. +Node SN-025-0C8F sits in a wedge lens at 434.3 m below datum and holds a salinity of 1.63 ppt with the alluvial interval reading 4.22 degC at dawn and the wellhead till 5.73 m3/d while the electrode pair returns 3905 uS/cm. +Node SN-026-04BF sits in a colluvial lens at 460.0 m below datum and averages a salinity of 9.36 ppt with the diapir interval reading 8.98 degC at dawn and the wellhead brackish 10.29 m3/d while the electrode pair returns 802 uS/cm. +Node SN-027-0DA4 sits in a silty lens at 265.7 m below datum and steps down to a salinity of 7.06 ppt with the percolate interval reading 4.69 degC at dawn and the wellhead freshened 8.42 m3/d while the electrode pair returns 2201 uS/cm. +Node SN-028-01EB sits in a perched lens at 49.5 m below datum and recovers to a salinity of 1.83 ppt with the silty interval reading 9.32 degC at dawn and the wellhead drain 9.69 m3/d while the electrode pair returns 1126 uS/cm. +Node SN-029-042C sits in a karst lens at 30.6 m below datum and averages a salinity of 0.86 ppt with the percolate interval reading 9.85 degC at dawn and the wellhead recharge 8.16 m3/d while the electrode pair returns 1452 uS/cm. + +## Relays +Relay RL-00-02181 reburses the upconing trunk from the brackish margin and peaks at a round-trip time of 131.8 ms with a frame loss of 1.04 percent across the night window. +Relay RL-01-00262 reburses the spooned trunk from the fluvial margin and holds a round-trip time of 372.2 ms with a frame loss of 3.65 percent across the night window. +Relay RL-02-03691 reburses the recharge trunk from the percolate margin and steps down to a round-trip time of 398.5 ms with a frame loss of 0.29 percent across the night window. +Relay RL-03-0E117 reburses the lacustrine trunk from the confining margin and averages a round-trip time of 373.9 ms with a frame loss of 3.44 percent across the night window. +Relay RL-04-0B41B reburses the aeolian trunk from the colluvial margin and peaks at a round-trip time of 70.7 ms with a frame loss of 3.25 percent across the night window. +Relay RL-05-0D12D reburses the recharge trunk from the diluted margin and steps down to a round-trip time of 264.7 ms with a frame loss of 0.03 percent across the night window. +Relay RL-06-043B4 reburses the colluvial trunk from the upconing margin and reports a round-trip time of 49.5 ms with a frame loss of 3.42 percent across the night window. +Relay RL-07-09AD6 reburses the fractured trunk from the freshened margin and averages a round-trip time of 225.3 ms with a frame loss of 1.06 percent across the night window. +Relay RL-08-04394 reburses the brackish trunk from the fluvial margin and steps down to a round-trip time of 88.6 ms with a frame loss of 2.47 percent across the night window. +Relay RL-09-017A0 reburses the wedge trunk from the lacustrine margin and drifts to a round-trip time of 363.0 ms with a frame loss of 3.30 percent across the night window. +Relay RL-10-0217D reburses the mineralized trunk from the lacustrine margin and peaks at a round-trip time of 26.2 ms with a frame loss of 1.30 percent across the night window. +Relay RL-11-08F97 reburses the perched trunk from the freshened margin and logs a round-trip time of 181.8 ms with a frame loss of 2.75 percent across the night window. +Relay RL-12-02628 reburses the fractured trunk from the glacial margin and steps down to a round-trip time of 378.5 ms with a frame loss of 2.69 percent across the night window. +Relay RL-13-06E06 reburses the silty trunk from the mineralized margin and flags a round-trip time of 153.4 ms with a frame loss of 2.15 percent across the night window. + +## Aggregation services +Aggregator AG-00-3BB logs a queue depth of 5.2 messages and a histogram bucket of 6.82 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-01-0FF reports a queue depth of 86.4 messages and a histogram bucket of 4.10 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-02-37F drifts to a queue depth of 34.7 messages and a histogram bucket of 10.25 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-03-3B3 averages a queue depth of 93.5 messages and a histogram bucket of 13.59 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-04-33E flags a queue depth of 83.2 messages and a histogram bucket of 17.58 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-05-2F2 settles near a queue depth of 84.8 messages and a histogram bucket of 0.84 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-06-2AD averages a queue depth of 75.4 messages and a histogram bucket of 7.65 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-07-06E drifts to a queue depth of 26.5 messages and a histogram bucket of 14.26 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-08-0E3 averages a queue depth of 83.9 messages and a histogram bucket of 15.51 seconds before the dedupe pass settles the stream for the next rotation. +Aggregator AG-09-138 averages a queue depth of 78.6 messages and a histogram bucket of 8.50 seconds before the dedupe pass settles the stream for the next rotation. + +## Calibration procedures +Procedure CP-00-047 steps the probe through a two-point rinse, then applies a trim of 0.2084 at the 66 milli-bar mark and records a residual of 0.02052 before the next field seal is crimped. +Procedure CP-01-0A4 steps the probe through a two-point rinse, then applies a trim of 0.7793 at the 96 milli-bar mark and records a residual of 0.01468 before the next field seal is crimped. +Procedure CP-02-054 steps the probe through a two-point rinse, then applies a trim of 0.4634 at the 68 milli-bar mark and records a residual of 0.04234 before the next field seal is crimped. +Procedure CP-03-02D steps the probe through a two-point rinse, then applies a trim of 0.8459 at the 12 milli-bar mark and records a residual of 0.04855 before the next field seal is crimped. +Procedure CP-04-098 steps the probe through a two-point rinse, then applies a trim of 0.5267 at the 97 milli-bar mark and records a residual of 0.00287 before the next field seal is crimped. +Procedure CP-05-09B steps the probe through a two-point rinse, then applies a trim of 0.3968 at the 72 milli-bar mark and records a residual of 0.01637 before the next field seal is crimped. +Procedure CP-06-030 steps the probe through a two-point rinse, then applies a trim of 0.8860 at the 12 milli-bar mark and records a residual of 0.04508 before the next field seal is crimped. +Procedure CP-07-0EC steps the probe through a two-point rinse, then applies a trim of 0.2367 at the 70 milli-bar mark and records a residual of 0.00108 before the next field seal is crimped. +Procedure CP-08-0BC steps the probe through a two-point rinse, then applies a trim of 0.7278 at the 68 milli-bar mark and records a residual of 0.04707 before the next field seal is crimped. +Procedure CP-09-0AA steps the probe through a two-point rinse, then applies a trim of 0.6069 at the 37 milli-bar mark and records a residual of 0.00443 before the next field seal is crimped. + +## Failure modes +Mode FM-00-27 declares a fluvial excursion when two independent probes disagree beyond the band for three rotations; the fleet reports a mean time between failures of 36902 hours for this class of excursion. +Mode FM-01-13 declares a drain excursion when two independent probes disagree beyond the band for three rotations; the fleet peaks at a mean time between failures of 29042 hours for this class of excursion. +Mode FM-02-14 declares a till excursion when two independent probes disagree beyond the band for three rotations; the fleet peaks at a mean time between failures of 26976 hours for this class of excursion. +Mode FM-03-0C declares a diapir excursion when two independent probes disagree beyond the band for three rotations; the fleet drifts to a mean time between failures of 22578 hours for this class of excursion. +Mode FM-04-39 declares a perched excursion when two independent probes disagree beyond the band for three rotations; the fleet recovers to a mean time between failures of 27383 hours for this class of excursion. +Mode FM-05-19 declares a siphon excursion when two independent probes disagree beyond the band for three rotations; the fleet logs a mean time between failures of 23152 hours for this class of excursion. + +## End of document +Summarize the network's dominant risk in one paragraph, then list the three node identifiers whose readings most limit the model this month. \ No newline at end of file diff --git a/prose_request.json b/prose_request.json new file mode 100644 index 0000000..0fcfc3f --- /dev/null +++ b/prose_request.json @@ -0,0 +1 @@ +{"model": "frank-large", "prompt": "# Subsurface Aquifer Monitoring Network - System Design Document (Revision 7)\n\nThis document describes the deployment of a subsurface aquifer monitoring network for the Cascadia sedimentary basin. It is written for the operations crew and the regional water authority. Every sensor node, relay, aggregation service, calibration procedure, and failure mode below carries a stable alphanumeric identifier that appears in every table and in the field notes.\n\n## Sensor nodes\nNode SN-000-08B9 sits in a discharge lens at 359.0 m below datum and reports a salinity of 2.38 ppt with the fractured interval reading 5.40 degC at dawn and the wellhead porous 1.72 m3/d while the electrode pair returns 3157 uS/cm.\nNode SN-001-0A65 sits in a percolate lens at 25.9 m below datum and steps down to a salinity of 2.13 ppt with the diapir interval reading 8.55 degC at dawn and the wellhead silty 0.67 m3/d while the electrode pair returns 979 uS/cm.\nNode SN-002-0571 sits in a diapir lens at 287.8 m below datum and peaks at a salinity of 7.63 ppt with the karst interval reading 4.26 degC at dawn and the wellhead spooned 11.50 m3/d while the electrode pair returns 2987 uS/cm.\nNode SN-003-0CE9 sits in a confining lens at 169.5 m below datum and logs a salinity of 0.96 ppt with the alluvial interval reading 5.03 degC at dawn and the wellhead salinized 12.08 m3/d while the electrode pair returns 2607 uS/cm.\nNode SN-004-0E2A sits in a freshened lens at 70.4 m below datum and settles near a salinity of 8.68 ppt with the spooned interval reading 4.88 degC at dawn and the wellhead siphon 4.38 m3/d while the electrode pair returns 2707 uS/cm.\nNode SN-005-0DDD sits in a percolate lens at 44.6 m below datum and reports a salinity of 6.25 ppt with the alluvial interval reading 10.85 degC at dawn and the wellhead brackish 13.99 m3/d while the electrode pair returns 3618 uS/cm.\nNode SN-006-0EFC sits in a till lens at 309.5 m below datum and reports a salinity of 3.49 ppt with the lacustrine interval reading 7.38 degC at dawn and the wellhead spooned 3.21 m3/d while the electrode pair returns 1253 uS/cm.\nNode SN-007-0B02 sits in a recharge lens at 262.0 m below datum and steps down to a salinity of 2.38 ppt with the discharge interval reading 8.18 degC at dawn and the wellhead perched 4.05 m3/d while the electrode pair returns 3900 uS/cm.\nNode SN-008-0448 sits in a karst lens at 406.5 m below datum and reports a salinity of 7.32 ppt with the upconing interval reading 6.17 degC at dawn and the wellhead fluvial 0.75 m3/d while the electrode pair returns 1448 uS/cm.\nNode SN-009-043C sits in a alluvial lens at 159.3 m below datum and flags a salinity of 6.20 ppt with the percolate interval reading 7.60 degC at dawn and the wellhead brackish 13.01 m3/d while the electrode pair returns 2025 uS/cm.\nNode SN-010-0FF5 sits in a karst lens at 264.2 m below datum and flags a salinity of 7.05 ppt with the freshened interval reading 7.88 degC at dawn and the wellhead siphon 8.41 m3/d while the electrode pair returns 1635 uS/cm.\nNode SN-011-098A sits in a drain lens at 365.7 m below datum and reports a salinity of 8.11 ppt with the wedge interval reading 5.51 degC at dawn and the wellhead glacial 2.52 m3/d while the electrode pair returns 2916 uS/cm.\nNode SN-012-0AE8 sits in a till lens at 259.6 m below datum and steps down to a salinity of 9.13 ppt with the recharge interval reading 11.60 degC at dawn and the wellhead spooned 0.46 m3/d while the electrode pair returns 3077 uS/cm.\nNode SN-013-0B83 sits in a salinized lens at 171.2 m below datum and peaks at a salinity of 2.83 ppt with the lacustrine interval reading 5.56 degC at dawn and the wellhead discharge 0.35 m3/d while the electrode pair returns 3083 uS/cm.\nNode SN-014-032E sits in a drain lens at 249.6 m below datum and flags a salinity of 1.09 ppt with the salinized interval reading 9.58 degC at dawn and the wellhead perched 12.00 m3/d while the electrode pair returns 2221 uS/cm.\nNode SN-015-004F sits in a aeolian lens at 264.4 m below datum and reports a salinity of 7.34 ppt with the salinized interval reading 8.76 degC at dawn and the wellhead perched 0.31 m3/d while the electrode pair returns 1483 uS/cm.\nNode SN-016-07C6 sits in a aeolian lens at 155.9 m below datum and reports a salinity of 0.64 ppt with the mineralized interval reading 11.75 degC at dawn and the wellhead diluted 13.46 m3/d while the electrode pair returns 524 uS/cm.\nNode SN-017-06C5 sits in a salinized lens at 72.1 m below datum and averages a salinity of 4.52 ppt with the siphon interval reading 8.93 degC at dawn and the wellhead confining 3.98 m3/d while the electrode pair returns 3687 uS/cm.\nNode SN-018-0E64 sits in a siphon lens at 334.9 m below datum and steps down to a salinity of 6.73 ppt with the salinized interval reading 7.63 degC at dawn and the wellhead freshened 9.64 m3/d while the electrode pair returns 1681 uS/cm.\nNode SN-019-0122 sits in a spooned lens at 117.2 m below datum and logs a salinity of 3.24 ppt with the fractured interval reading 9.26 degC at dawn and the wellhead karst 3.50 m3/d while the electrode pair returns 1065 uS/cm.\nNode SN-020-021D sits in a karst lens at 414.3 m below datum and recovers to a salinity of 0.76 ppt with the glacial interval reading 6.25 degC at dawn and the wellhead silty 9.60 m3/d while the electrode pair returns 1041 uS/cm.\nNode SN-021-06C6 sits in a percolate lens at 379.2 m below datum and drifts to a salinity of 7.61 ppt with the wedge interval reading 5.84 degC at dawn and the wellhead karst 1.65 m3/d while the electrode pair returns 1913 uS/cm.\nNode SN-022-0DC9 sits in a spooned lens at 327.1 m below datum and reports a salinity of 9.25 ppt with the freshened interval reading 5.05 degC at dawn and the wellhead silty 5.90 m3/d while the electrode pair returns 1544 uS/cm.\nNode SN-023-0717 sits in a karst lens at 222.0 m below datum and steps down to a salinity of 4.02 ppt with the alluvial interval reading 6.60 degC at dawn and the wellhead siphon 3.77 m3/d while the electrode pair returns 3892 uS/cm.\nNode SN-024-02A9 sits in a fractured lens at 479.7 m below datum and drifts to a salinity of 7.88 ppt with the silty interval reading 12.53 degC at dawn and the wellhead discharge 13.18 m3/d while the electrode pair returns 3592 uS/cm.\nNode SN-025-0C8F sits in a wedge lens at 434.3 m below datum and holds a salinity of 1.63 ppt with the alluvial interval reading 4.22 degC at dawn and the wellhead till 5.73 m3/d while the electrode pair returns 3905 uS/cm.\nNode SN-026-04BF sits in a colluvial lens at 460.0 m below datum and averages a salinity of 9.36 ppt with the diapir interval reading 8.98 degC at dawn and the wellhead brackish 10.29 m3/d while the electrode pair returns 802 uS/cm.\nNode SN-027-0DA4 sits in a silty lens at 265.7 m below datum and steps down to a salinity of 7.06 ppt with the percolate interval reading 4.69 degC at dawn and the wellhead freshened 8.42 m3/d while the electrode pair returns 2201 uS/cm.\nNode SN-028-01EB sits in a perched lens at 49.5 m below datum and recovers to a salinity of 1.83 ppt with the silty interval reading 9.32 degC at dawn and the wellhead drain 9.69 m3/d while the electrode pair returns 1126 uS/cm.\nNode SN-029-042C sits in a karst lens at 30.6 m below datum and averages a salinity of 0.86 ppt with the percolate interval reading 9.85 degC at dawn and the wellhead recharge 8.16 m3/d while the electrode pair returns 1452 uS/cm.\n\n## Relays\nRelay RL-00-02181 reburses the upconing trunk from the brackish margin and peaks at a round-trip time of 131.8 ms with a frame loss of 1.04 percent across the night window.\nRelay RL-01-00262 reburses the spooned trunk from the fluvial margin and holds a round-trip time of 372.2 ms with a frame loss of 3.65 percent across the night window.\nRelay RL-02-03691 reburses the recharge trunk from the percolate margin and steps down to a round-trip time of 398.5 ms with a frame loss of 0.29 percent across the night window.\nRelay RL-03-0E117 reburses the lacustrine trunk from the confining margin and averages a round-trip time of 373.9 ms with a frame loss of 3.44 percent across the night window.\nRelay RL-04-0B41B reburses the aeolian trunk from the colluvial margin and peaks at a round-trip time of 70.7 ms with a frame loss of 3.25 percent across the night window.\nRelay RL-05-0D12D reburses the recharge trunk from the diluted margin and steps down to a round-trip time of 264.7 ms with a frame loss of 0.03 percent across the night window.\nRelay RL-06-043B4 reburses the colluvial trunk from the upconing margin and reports a round-trip time of 49.5 ms with a frame loss of 3.42 percent across the night window.\nRelay RL-07-09AD6 reburses the fractured trunk from the freshened margin and averages a round-trip time of 225.3 ms with a frame loss of 1.06 percent across the night window.\nRelay RL-08-04394 reburses the brackish trunk from the fluvial margin and steps down to a round-trip time of 88.6 ms with a frame loss of 2.47 percent across the night window.\nRelay RL-09-017A0 reburses the wedge trunk from the lacustrine margin and drifts to a round-trip time of 363.0 ms with a frame loss of 3.30 percent across the night window.\nRelay RL-10-0217D reburses the mineralized trunk from the lacustrine margin and peaks at a round-trip time of 26.2 ms with a frame loss of 1.30 percent across the night window.\nRelay RL-11-08F97 reburses the perched trunk from the freshened margin and logs a round-trip time of 181.8 ms with a frame loss of 2.75 percent across the night window.\nRelay RL-12-02628 reburses the fractured trunk from the glacial margin and steps down to a round-trip time of 378.5 ms with a frame loss of 2.69 percent across the night window.\nRelay RL-13-06E06 reburses the silty trunk from the mineralized margin and flags a round-trip time of 153.4 ms with a frame loss of 2.15 percent across the night window.\n\n## Aggregation services\nAggregator AG-00-3BB logs a queue depth of 5.2 messages and a histogram bucket of 6.82 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-01-0FF reports a queue depth of 86.4 messages and a histogram bucket of 4.10 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-02-37F drifts to a queue depth of 34.7 messages and a histogram bucket of 10.25 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-03-3B3 averages a queue depth of 93.5 messages and a histogram bucket of 13.59 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-04-33E flags a queue depth of 83.2 messages and a histogram bucket of 17.58 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-05-2F2 settles near a queue depth of 84.8 messages and a histogram bucket of 0.84 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-06-2AD averages a queue depth of 75.4 messages and a histogram bucket of 7.65 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-07-06E drifts to a queue depth of 26.5 messages and a histogram bucket of 14.26 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-08-0E3 averages a queue depth of 83.9 messages and a histogram bucket of 15.51 seconds before the dedupe pass settles the stream for the next rotation.\nAggregator AG-09-138 averages a queue depth of 78.6 messages and a histogram bucket of 8.50 seconds before the dedupe pass settles the stream for the next rotation.\n\n## Calibration procedures\nProcedure CP-00-047 steps the probe through a two-point rinse, then applies a trim of 0.2084 at the 66 milli-bar mark and records a residual of 0.02052 before the next field seal is crimped.\nProcedure CP-01-0A4 steps the probe through a two-point rinse, then applies a trim of 0.7793 at the 96 milli-bar mark and records a residual of 0.01468 before the next field seal is crimped.\nProcedure CP-02-054 steps the probe through a two-point rinse, then applies a trim of 0.4634 at the 68 milli-bar mark and records a residual of 0.04234 before the next field seal is crimped.\nProcedure CP-03-02D steps the probe through a two-point rinse, then applies a trim of 0.8459 at the 12 milli-bar mark and records a residual of 0.04855 before the next field seal is crimped.\nProcedure CP-04-098 steps the probe through a two-point rinse, then applies a trim of 0.5267 at the 97 milli-bar mark and records a residual of 0.00287 before the next field seal is crimped.\nProcedure CP-05-09B steps the probe through a two-point rinse, then applies a trim of 0.3968 at the 72 milli-bar mark and records a residual of 0.01637 before the next field seal is crimped.\nProcedure CP-06-030 steps the probe through a two-point rinse, then applies a trim of 0.8860 at the 12 milli-bar mark and records a residual of 0.04508 before the next field seal is crimped.\nProcedure CP-07-0EC steps the probe through a two-point rinse, then applies a trim of 0.2367 at the 70 milli-bar mark and records a residual of 0.00108 before the next field seal is crimped.\nProcedure CP-08-0BC steps the probe through a two-point rinse, then applies a trim of 0.7278 at the 68 milli-bar mark and records a residual of 0.04707 before the next field seal is crimped.\nProcedure CP-09-0AA steps the probe through a two-point rinse, then applies a trim of 0.6069 at the 37 milli-bar mark and records a residual of 0.00443 before the next field seal is crimped.\n\n## Failure modes\nMode FM-00-27 declares a fluvial excursion when two independent probes disagree beyond the band for three rotations; the fleet reports a mean time between failures of 36902 hours for this class of excursion.\nMode FM-01-13 declares a drain excursion when two independent probes disagree beyond the band for three rotations; the fleet peaks at a mean time between failures of 29042 hours for this class of excursion.\nMode FM-02-14 declares a till excursion when two independent probes disagree beyond the band for three rotations; the fleet peaks at a mean time between failures of 26976 hours for this class of excursion.\nMode FM-03-0C declares a diapir excursion when two independent probes disagree beyond the band for three rotations; the fleet drifts to a mean time between failures of 22578 hours for this class of excursion.\nMode FM-04-39 declares a perched excursion when two independent probes disagree beyond the band for three rotations; the fleet recovers to a mean time between failures of 27383 hours for this class of excursion.\nMode FM-05-19 declares a siphon excursion when two independent probes disagree beyond the band for three rotations; the fleet logs a mean time between failures of 23152 hours for this class of excursion.\n\n## End of document\nSummarize the network's dominant risk in one paragraph, then list the three node identifiers whose readings most limit the model this month.", "max_tokens": 512, "temperature": 0, "cache_prompt": false, "stream": false} \ No newline at end of file diff --git a/scripts/frank-primary.env b/scripts/frank-primary.env index aed39f4..a867e6e 100644 --- a/scripts/frank-primary.env +++ b/scripts/frank-primary.env @@ -2,10 +2,13 @@ # # 2026-10-03 shape G (as shipped, after the 1.00 revert): the CUDA-graph plan # term dropped from the analytic 0.55 GiB to the measured 0.07 GiB (0 base + -# 12 MiB/graph — the engine's own post-capture delta is -0.06 GiB), and UTIL at -# the 0.982 law. Arena 17.78 GiB / ~7,912 slots predicted (F measured 17.52 / -# 7,653). UTIL stays 0.982 ALWAYS: 1.00 is unbootable on this fork (worker init -# refuses budget >= device total) and 0.13-GiB-margin boots die under load. +# 12 MiB/graph), and UTIL at the 0.982 law. MEASURED on the live deploy: arena +# 17.77 GiB / 7,762 slots, KV 401,408 tokens / 2.00x concurrency (the first +# shape holding two full-length conversations with real spare), driver used +# 30.97 GiB of 31.86 — 0.89 GiB of real free VRAM per card, held through a +# live 4,096-token generation. UTIL stays 0.982 ALWAYS: 1.00 is unbootable on +# this fork (worker init refuses budget >= device total) and 0.13-GiB-margin +# boots die under load. # `budget - non-expert - KV reserve - graphs - overhead` and the KV reserve is a # registry constant, so those two terms are the whole flag surface. # 2026-10-03 shape F (absorbed): MNBT 2048 + the graph term pinned. Measured on diff --git a/serverAppConfigs-docs/LLM/dankserver-qwen38-fp8-expert-offload-tuning.md b/serverAppConfigs-docs/LLM/dankserver-qwen38-fp8-expert-offload-tuning.md index 2a4facd..6ae201c 100644 --- a/serverAppConfigs-docs/LLM/dankserver-qwen38-fp8-expert-offload-tuning.md +++ b/serverAppConfigs-docs/LLM/dankserver-qwen38-fp8-expert-offload-tuning.md @@ -315,32 +315,33 @@ and every term on the right is either fixed or a lie: | `runtime overhead` | 5.25 GiB (`--expert-precise-memory`) | far lower at idle | no (registry constant) | Shape F took the graph term (0.55 -> 0.32 GiB) and nudged util to 0.982: -**arena 17.52 GiB / 7,653 slots measured**, +131 slots. That is where the -"honest from flags" line sat — until shape G forced the other two. +**arena 17.52 GiB / 7,653 slots measured**, +131 slots. Shape G takes the +graph term further (0.32 -> 0.07 GiB) at the same util. -**Shape G forces both reachable terms.** The graph base pool is the actual -over-charge: shape F's own boot reported +**Shape G takes the graph term to the measured floor, util to the law.** The +graph base pool is the actual over-charge: shape F's own boot reported `Graph capturing finished in 4 secs, took -0.06 GiB` — a **negative** capture delta, so the 256 MiB base was fiction. Charging `0 base + 12 MiB/graph` (0.07 GiB for the shipped 6-graph plan, and still per-graph so an 18-graph -spec-decode shape pays 0.21 GiB) plus **util 1.0**, the field maximum, moves -the plan to budget 31.86 / graphs 0.07 / **arena 18.35 GiB / ~8,016 slots** — -+363 slots over F, +494 over E, and the ceiling of what a deploy can ask for. -The KV ask went to `3,166,500,000` B/rank, which the engine's own 7,891.8 -B/token price lands at ~400,700 tokens (verify the `GPU KV cache size` line; -the price is shape-dependent, 7,701 B/token at 262144). +spec-decode shape pays 0.21 GiB) lands the plan at budget 31.29 / graphs 0.07 / +**arena 17.77 GiB / 7,762 slots measured**. The KV ask went to +`3,166,500,000` B/rank, which the engine's own 7,891.8 B/token price lands at +**401,408 tokens measured / 2.00x concurrency** — the first shape holding two +full-length conversations with real spare. (The ask/landed delta is block +alignment: 196 x 2048. The price is shape-dependent, 7,701 B/token at 262144.) -**The price of the force is the margin, and it is real.** At util 1.0 the -engine's budget equals the whole card, so any under-priced registry term stops -showing up as a plan refusal and starts showing up as a runtime allocation -failure. Measured driver high-water moves 28.28 GiB (E) -> 29.53 GiB (F) -> -~30.4 GiB (G), i.e. **~1.5 GiB of true free VRAM per card** is now the safety -margin — against 0.13 GiB on the bf16 boot that died and 0 bytes on the one -that OOM'd a real 995-token request. Rollback is one number: -`FRANK_PRIMARY_UTIL=0.982` costs 0.57 GiB of arena and buys back 0.57 GiB of -margin. Everything beyond ~8,016 slots needs the registry edited inside the -image (the fork's log line says exactly that: *"Update the registry entry if -this drifts"*), not a deploy. +**UTIL 1.00 is not a knife-edge on this fork, it is UNBOOTABLE — measured +2026-10-03.** One deploy took the field maximum to buy the last 0.57 GiB of +arena; both workers refused init BEFORE loading a single weight, twice: +`ValueError: Free memory on device cuda:N (31.29/31.86 GiB ...)` — the worker +demands free > budget and budget == total, so `le=1` on the CLI field is a +trap: the engine dies in a 2-restart crash loop with zero payload progress. +So `0.982` is a LAW, not a preference, and the "why 0.982" answer now has two +proofs: this ValueError, and the historical ceiling deaths (the 2x262144 bf16 +boot at 0.13 GiB free; the 5x262144 boot at "0 bytes free" on a real +995-token request). Everything beyond ~7,912 slots needs the registry edited +inside the image (the fork's log line says exactly that: *"Update the +registry entry if this drifts"*), not a deploy. **MNBT 1024 -> 2048 is free on every axis the plan can see.** The registry overhead model is `base + 0.22 GiB x max(0, (nbt - 4096)/1024)` anchored at @@ -506,7 +507,8 @@ memory environment). The night searched two concurrency contracts: | 3 x 200704, fp8, pool sized for 2 contexts | **DEPLOYED 2026-10-02 (shape D)**: 398,658 tokens = 1.99x concurrency, arena 14.87 GiB / 6,496 slots, the 2.75 GiB/rank pool cut returned as runtime headroom | | **3 x 200704, fp8, + `--expert-precise-memory`** | shape E (2026-10-02): same 1.99x pool, overhead 5.25 GiB, arena 17.22 GiB / 7,522 slots, boot healthy in 420 s | | 3 x 200704, fp8, MNBT 2048, graph term 0.32 GiB, util 0.982 | shape F (2026-10-03): arena 17.52 GiB / **7,653 slots** measured, budget 31.29, `Estimated CUDA graph memory: 0.32 GiB`, KV unchanged 398,658 | -| **3 x 200704, fp8, graph term 0.07 GiB, util 1.00, KV forced to 400,700** | **DEPLOYED 2026-10-03 (shape G)**: arena 18.35 GiB / ~8,016 slots (+363 over F, +494 over E), budget 31.86 = the whole card, driver high-water ~30.4 GiB -> **~1.5 GiB real free per card is the margin**; rollback is UTIL back to 0.982 | +| 3 x 200704, fp8, graph term 0.07 GiB, util **1.00**, KV 3.1665e9 | **DID NOT BOOT (2026-10-03)**: `ValueError: Free memory on device cuda:N (31.29/31.86 GiB)` on both ranks, twice, zero weights loaded — the worker demands free > budget and budget == total. UTIL 1.0 is unbootable, full stop | +| **3 x 200704, fp8, graph term 0.07 GiB, util 0.982, KV forced to 400,700** | **DEPLOYED 2026-10-03 (shape G)**: arena **17.77 GiB / 7,762 slots** measured (+109 over F, +240 over E), KV **401,408 tokens / 2.00x** concurrency measured, capture 0.31/0.10 GiB vs the 0.07 charge (under-charged, boots and holds), driver used 30.97 GiB -> **0.89 GiB real free per card** held through a live 4,096-token generation (~38-39 tok/s single-request, +13% vs the 33.99 shape-E baseline); rollback is UTIL or KV_BYTES down a notch | Six full-length contexts cannot fit at any KV dtype: the 6-seq graph/activation footprint leaves only 9.18 GiB for the pool, and 6 × 262144 needs 12.47 GB even diff --git a/serverAppConfigs-docs/log.md b/serverAppConfigs-docs/log.md index 899e146..47ca0f3 100644 --- a/serverAppConfigs-docs/log.md +++ b/serverAppConfigs-docs/log.md @@ -1,5 +1,42 @@ # Bundle Change Log +## 2026-10-03 +- **frank-primary: shape F then shape G — MNBT 2048, the CUDA-graph plan term + pinned to the measured capture, KV forced to 400,700 tokens, and UTIL 1.0 + proven UNBOOTABLE.** Frank asked what the batch was with GPUs showing open + space; the audit found the arena is `budget - non-expert - KV reserve - + graphs - overhead` where the only deploy-reachable terms are the budget and + the graph estimate (registry KV price 9,190 B/token and the 5.25 GiB + overhead are image constants; the ~3.5 GiB of driver-free VRAM was + estimator slack, not allocatable). + - Shape F (c682c63): MNBT 1024 -> 2048 (arena-free — the registry prices + overhead flat up to its nbt 4096 anchor and the fitted 5.25 was fitted AT + 4096), util 0.98 -> 0.982, graph term 0.55 -> 0.32 GiB (256 base + + 12/graph vs the fork's 256 + 52/graph). Measured: arena 17.52 GiB / + 7,653 slots, budget 31.29. + - Shape G v1 (0a4ff30) tried util 1.0: **both workers refused init before a + single weight loaded** — `ValueError: Free memory on device cuda:N + (31.29/31.86 GiB ...)`, NRestarts=2 crash loop, zero payload progress. + The CLI field is `Field(gt=0, le=1)`, but the worker demands free > + budget, so budget == total is a trap, not a knife-edge. Frank: ".982 is + the law, never 1.00" — now with a second proof. + - Shape G v2 (c67a2ae, deployed green incl. e2e 33/33): util back to + 0.982, graph base to 0 (the shape F boot reported a NEGATIVE -0.06 GiB + capture delta, so the 256 MiB base was fiction; 0 + 12 MiB/graph still + prices a future 18-graph spec-decode shape at 0.21 GiB), KV_BYTES + 3.15e9 -> 3.1665e9 = Frank's 400,700-token ask. + - MEASURED live: arena **17.77 GiB / 7,762 slots** (+240 over shape E), + KV **401,408 tokens / 2.00x concurrency** — the first shape holding two + full-length conversations with real spare; capture measured 0.31/0.10 + GiB against the 0.07 charge (under-charged, boots and holds); driver + used 30.97 of 31.86 GiB -> **0.89 GiB real free per card**, held through + a live 4,096-token generation (~38-39 tok/s single-request wall-incl., + +13% vs the 33.99 shape-E baseline; single sample, not a bench). + - Verification seam rewritten to assert the shape by its OUTPUTS (util at + the 0.982 law, graph charge below the analytic default and per-graph + positive, KV pool >= 400,700 tokens at the measured 7,892 B/token). + Runbook: `serverAppConfigs-docs/LLM/dankserver-qwen38-fp8-expert-offload-tuning.md`. + ## 2026-10-01 - **frank-primary rolled BACK to Qwen3.8-Flash-Next-Uncensored-FP8 + MTP4; GLM/DFlash2 declared failed and purged.** The DFlash2 drafter booted and