| Well (UWI) | 15-135-24,881-00-00 |
| Log date | Sat Feb 28 00-46-47 2009 |
| Service company | Log Tech |
| Acquisition date (header) | Sat Feb 28 00-46-47 2009 |
| PLSS location | Sec 12 T20S R22W (map precision ±1.6 km) |
| Larionov variant | old_rocks (degraded) |
| Convergence status | DID_NOT_CONVERGE |
| Confidence tier | ○ BRACKETED |
| Engine versions | calc_vsh 0.1.0 · calc_phie 0.1.0 · calc_sw 0.1.0 · formula_registry 0.1.0 |
| Config hash (SHA-256) | 2a9cb78728e386ab… |
| Git SHA | df574ffab7ee |
| Generated | autonomously, no human in the per-report loop |
Confidence legend. Each result is tagged by parameter provenance: ● FIRM (core-calibrated) · ◐ QUALIFIED (offset-derived) · ○ BRACKETED (regional/global default — read as a range, dominant uncertainty stated). The system does not claim *always correct*; it states how well-supported each number is.
The pay assessment for well 15-135-24,881-00-00 remains bracketed rather than firm, with net pay spanning a wide 8.2 to 49.9 m range around a P50 of 18.7 m across the 200.0 m gross interval. The corresponding net-to-gross of 0.065 is low, though the net-pay rock itself carries reasonable properties — PHIE averaging 0.146, Sw near 0.379, and modest clay content at Vsh 0.114. This spread is driven chiefly by the cementation exponent m, which here is a regional default and uncalibrated in the absence of core; its 13.9 m swing means the wide P10–P90 envelope reflects genuine parameter uncertainty rather than a confident point estimate. A single validator objection was raised and the interpretation did not converge, so these figures should be read as ranges pending calibration.
Net pay P10 / P50 / P90 = 8.2 / 18.7 / 49.9 m.
Net pay is dominated by 'm', which is a regional DEFAULT (uncalibrated). This is the single largest uncertainty — the result is bracketed, not a confident point estimate.
| Edit type | Curve | Detail |
|---|---|---|
| unit_conversion | NPHI | factor 0.01 |
| hard_range_mask | RXO | count 1 |
| hard_range_mask | RT | count 117 |
| hard_range_mask | RMED | count 95 |
| hard_range_mask | RHOB | count 1 |
| hard_range_mask | DRHO | count 4 |
| hard_range_mask | PHID_SVC | count 5 |
| range_warn | GR | count 4 |
| range_warn | RHOB | count 4 |
| range_warn | NPHI | count 3 |
| spike_removal | — | 89 edits |
| degradation | — | 3 edits |
Raw mnemonics mapped to canonical curve names:
| Canonical | Raw mnemonic |
|---|---|
| DCAL | DCAL |
| DRHO | RHOC |
| GR | GR |
| NPHI | CNLS |
| PHID_SVC | DPOR |
| RHOB | RHOB |
| RMED | RILM |
| RT | RILD |
| RXO | RLL3 |
| SP | SP |
Unit conversions: NPHI×0.01.
Edits applied before compute (by type): degradation: 3, hard_range_mask: 6, range_warn: 3, spike_removal: 89, unit_conversion: 1.
All numbers are produced by the deterministic, golden-tested engine. The LLM only selects methods/parameters and writes prose — it never computes a number. Figures are deterministic renderings of these computed numbers for the human reader; the agent reasons over the numeric EDA digest, not images (the models have no vision).
| Step | Method (frozen) | Version |
|---|---|---|
| Vsh | Larionov 1969 (old rocks) | vsh_larionov_old 0.1.0 |
| PHIE | Density-neutron crossplot, shale-corrected | phie_density_neutron 0.1.0 |
| Sw | Archie 1942 | sw_archie 0.1.0 |
| Net pay | Vsh/PHIE/Sw cutoffs → net sand → net reservoir → net pay | netpay 0.1.0 |
| Uncertainty | Monte Carlo P10/P50/P90 + parameter sensitivity | mc 0.1.0 |
Low-resistivity scan: rt_threshold=1.79, n_flagged=848, intervals=[[278.6, 282.2], [284.2, 339.1], [345.5, 346.7], [361.8, 362.4], [366.8, 367.1], [399.9, 401.7], [419.9, 421.8], [458.6, 458.7], [459.8, 467.4], [478.7, 480.2]].
Invasion profile (multi-depth resistivities, 8471 samples): fraction with shallow reading above deep (Rxo/RT > 1.2, invaded/permeable indication): 0.604; reversed (< 0.8): 0.098; median Rxo/RT 1.301; median Rmed/RT 0.961. Raw-curve facts; naming moveable hydrocarbon is the analyst's judgement.
Matrix point-shares (fraction of points near each matrix line): sandstone: 0.091, limestone: 0.219, dolomite: 0.247. Engine crossplot output; naming the dominant lithology is the analyst's judgement. Comparison with core/mud log: not available (LAS-only).
Composite log

Pickett plot

Neutron-density crossplot

Buckles plot

Hingle plot

Distributions

Sensitivity tornado

Net-pay Monte-Carlo distribution

Mean Vsh by method (selection is the engine's; the LLM authors no number):
| Method | Mean Vsh | Selected |
|---|---|---|
| vsh_larionov_old | 0.344 | ✓ |
| vsh_larionov_tertiary | 0.271 | |
| vsh_linear | 0.460 | |
| vsh_clavier | 0.329 | |
| vsh_steiber | 0.292 | |
| vsh_neutron_density | 0.147 | |
| vsh_multimineral | 0.153 |
_Uncalibrated screening estimate (no core); Sw used as the Swirr proxy._
_Built on the uncalibrated permeability; indicative only._
Unsupervised k-means on 1237 samples into 4 electrofacies (sample counts: facies 0: 368, facies 1: 287, facies 2: 192, facies 3: 390). Descriptive only — no core labels.
| Parameter | Value | Unit | Provenance | Source |
|---|---|---|---|---|
| gr_min | 20.000 | API | default | — |
| gr_max | 120.000 | API | default | — |
| rho_ma | 2.710 | g/cc | default | Schlumberger 1989 |
| rho_fl | 1.000 | g/cc | default | — |
| phie_max | 0.450 | v/v | default | — |
| phi_sh_d | 0.100 | v/v | default | — |
| phi_sh_n | 0.350 | v/v | default | — |
| a | 1.000 | - | default | Winsauer et al. 1952 |
| m | 2.000 | - | default | Archie, G.E. 1942 |
| n | 2.000 | - | default | Archie, G.E. 1942 |
| Rw | 0.040 | ohm-m | default | Kansas Geological Survey 2000 |
| rt_hydrocarbon_floor | 5.000 | ohm-m | default | — |
| vsh_cutoff | 0.350 | v/v | default | — |
| phie_cutoff | 0.100 | v/v | default | — |
| sw_cutoff | 0.500 | v/v | default | — |
| bit_size_config | 7.875 | in | default | — |
| qc_abort_threshold | 0.800 | - | default | — |
| circuit_breaker_n | 3.000 | - | default | — |
The citations table (not RAG) gives each cited parameter exactly one frozen source. Parameters tagged
defaultare regional/global — they drive the bracketed tier.
Boundary-inclusive criteria applied by the engine (netpay) to flag reservoir:
| Stage | Criterion | Cutoff | Provenance |
|---|---|---|---|
| Net sand | Vsh ≤ cutoff | 0.350 | default |
| Net reservoir | + PHIE ≥ cutoff | 0.100 | default |
| Net pay | + Sw ≤ cutoff | 0.500 | default |
Cutoff values are engine parameters (never LLM-authored); the dominant net-pay uncertainty is m — see Uncertainty for the swing.
Curve provenance (canonical ← raw mnemonic): DCAL←DCAL, DRHO←RHOC, GR←GR, NPHI←CNLS, PHID_SVC←DPOR, RHOB←RHOB, RMED←RILM, RT←RILD, RXO←RLL3, SP←SP.
QC edits applied before compute — degradation: 3, hard_range_mask: 6, range_warn: 3, spike_removal: 89, unit_conversion: 1.
| Validator | Type | Detail |
|---|---|---|
| vsh_phie_anticorrelation | support | Vsh-PHIE Pearson 0.97 > 0.3 (dirty rock + high porosity) |
flowchart TD
dec_1["decision: step: review_attempts"]
act_1["tool_call: review_attempts"]
dec_2["decision: DETERMINISTIC DEFAULT (model empty): compute_vsh"]
act_2["tool_call: compute_vsh"]
dec_3["decision: step: crossplot"]
act_3["tool_call: crossplot"]
dec_4["decision: step: interval_stats"]
act_4["tool_call: interval_stats"]
dec_5["decision: step: set_zone_of_interest"]
act_5["tool_call: set_zone_of_interest"]
dec_6["decision: step: validate_choice"]
act_6["tool_call: validate_choice"]
dec_7["decision: step: lithology"]
act_7["tool_call: lithology"]
dec_8["decision: step: derived_parameters"]
act_8["tool_call: derived_parameters"]
dec_9["decision: step: permeability"]
act_9["tool_call: permeability"]
dec_10["decision: wasted no-op: permeability"]
dec_11["decision: step: rock_quality"]
act_10["tool_call: rock_quality"]
dec_12["decision: step: electrofacies"]
act_11["tool_call: electrofacies"]
dec_13["decision: wasted no-op: lithology"]
dec_14["decision: wasted no-op: permeability"]
dec_15["decision: wasted no-op: rock_quality"]
dec_16["decision: wasted no-op: lithology"]
dec_17["decision: wasted no-op: permeability"]
dec_18["decision: wasted no-op: lithology"]
dec_19["decision: wasted no-op: permeability"]
dec_20["decision: wasted no-op: rock_quality"]
dec_21["decision: wasted no-op: permeability"]
dec_22["decision: wasted no-op: rock_quality"]
dec_23["decision: wasted no-op: permeability"]
dec_24["decision: wasted no-op: lithology"]
dec_25["decision: wasted no-op: permeability"]
dec_26["decision: step: compare_methods"]
act_12["tool_call: compare_methods"]
dec_27["decision: wasted no-op: permeability"]
dec_28["decision: wasted no-op: lithology"]
dec_29["decision: wasted no-op: permeability"]
dec_30["decision: wasted no-op: lithology"]
dec_31["decision: wasted no-op: permeability"]
This is a LAS-only study. Data that would calibrate the interpretation is absent:
This interpretation is bracketed, not firm: it did not converge, one validator objection stands, and the net-pay result should be carried as a range — P10/P50/P90 of 8.2/18.7/49.9 m across the 200.0 m gross interval — rather than as a single number. The net-to-gross of 0.065 is low, but where net pay is counted the rock reads cleanly, with PHIE of 0.146, Sw of 0.379, and Vsh of 0.114. The dominant control on the outcome is the cementation exponent m, applied here as an uncalibrated regional default and accounting for a 13.9 m swing in net pay; it is the single largest source of uncertainty. The most direct way to narrow this range is core calibration of m. Until that calibration exists, these numbers should guide decisions only as a bracketed envelope, not as firm estimates.
{
"net_pay_total_m": 12.954000000000008,
"net_pay_p10_p50_p90": [
8.229600000000005,
18.66900000000001,
49.88052000000004
],
"driving_params": {
"a": 1.0,
"m": 2.0,
"n": 2.0,
"Rw": 0.04
},
"claim_verifier": {
"result": "PASS",
"flags": [],
"tone_flags": []
}
}
| Item | Present |
|---|---|
| QC edits recorded before compute | ✓ |
| Every number ledger-traced | ✓ |
| Confidence tier on the run | ✓ |
| Parameter citations frozen | ✓ |
| Validator objections listed, not hidden | ✓ |
| Uncertainty propagated (Monte Carlo) | ✓ |
| Claim verifier run on prose | ✓ |