Skip to content

Bounded San Juan exploratory pilot — passed

PILOT-01 / SS-10, September 27, 2026. Two fresh local realizations of the approved cached-input bathymetry/support path passed numerical, provenance, resource and visual acceptance. This is an exploratory family pilot, not a complete audited regional release or model-readiness claim. It reuses the existing explorer helper and production APIs. Do not execute the whole explorer to reproduce this zero-download run: its acquisition switches still default to enabled. Progress retains failed/intermediate checks.

Approved scope and stop conditions

Nominal W/S/E/N extent (-123.35, 48.38, -122.70, 49.02); H3 R8/R6. Same production quantiles, positive-down depths, water-neighborhood anomaly and parent band aggregation. Natural Earth land is an exploratory 1:10 million cartographic mask, not territorial/navigation/legal authority. Its schema-3 mask manifest records actual source version/checksum, partial completeness and model-ineligible lineage, propagated through the H3/network/bathymetry family manifests. Future GEBCO metadata uses corrected public-domain terms/acknowledgement; old manifests are intact.

The user approved the exact prepared plan with “Let's do it”: fresh disposable workspaces /private/tmp/seascape-pilot-01-20260927/replicate-1 and replicate-2; only exploratory mask/H3/network/R6+R8 bathymetry family publication. skip_download=True, skip_map=True still publishes the family. No whole-release promotion, retained release replacement, source acquisition, export/upload, new source release, regional expansion or additional product family was authorized. Two runs were capped at 600 s each, 32 MiB inputs including extraction, 256 MiB owned workspace, 2 GiB sampled aggregate process-tree RSS and four workers. Original plan/approval hashes, source pins, existing-API phase recipe and watchdog are retained in /private/tmp/seascape-pilot-01-readiness; approved paths now contain actual products and must not be reused as fresh destinations. Any future realization needs a separately agreed fresh path/scope.

The outer watchdog samples wall/disk/process-tree RSS every 0.25 s and kills the process group on breach or sampler failure; polling can miss peaks/overshoot and is not an OS memory reservation. Python socket/child guard and PROJ_NETWORK=OFF prevent intended source acquisition paths; native extensions are not OS-firewalled and network bytes were not metered. No source downloads occurred. Do not fall back to global download if these cached identities are absent or fail verification. Canonical preflight still fails on six missing water inputs; the validated exploratory route does not make that canonical plan READY. See scientific contracts.

Source and historical evidence

These identities describe the available local cache, not files distributed with the package. The paths below are relative to the explorer's ignored notebooks/outputs workspace.

Input Identity and support Size and identity check
data/raw/bathymetry/GEBCO_2026_MODEL_AREA.tif GEBCO 2026, DOI 10.5285/4f68d5c7-45eb-f999-e063-7086abc036fa, created 2026-04-17; 15 arc seconds, 156 × 154, one int16 band 55,932 bytes; production checksum_path: 1d99f5e6a7553679446cf88e8b2685dba32ccff3349165d72afa682c6605257c
data/raw/natural_earth/ne_10m_land.zip Natural Earth land, extracted version 5.1.1; 1:10 million cartographic scale, not 10-meter resolution 3,269,070 bytes; plain file SHA-256: e547d749445eaa0964aba76738090ec88f5e63c4585122170f98c67a7ea922dc

The GeoTIFF header reports EPSG:4326, meters, positive-up elevation relative to sea level, vertical CRS EPSG:5831 and nodata -32767. Preserve its native alignment: actual W/S/E/N bounds are (-123.35, 48.37916666666665, -122.70, 49.020833333333336), slightly beyond the nominal crop. The GEBCO 2026 reference matches the embedded DOI; grid spacing is not measurement resolution or accuracy. The header does not establish uniform survey coverage or independently verify vertical datum accuracy. The Natural Earth terms describe public-domain data. Preserve provider acknowledgement and never imply provider endorsement or navigation safety.

Read-only inventory found 46 cached files / 22,717,798 bytes. All seven references in the historical bathymetry family manifest matched production checksum_path (source, four upstream artifacts, two products). It records 4,660 R8 and 134 R6 cells and resolved-config hash d77976293e6f4f76bd4f7374c8d04e8f420f9f7b17b81a1339d52bfecc2fd8ac. These are historical metadata/identity checks, not a fresh execution, full release audit or numerical/visual acceptance. In particular, the manifest retains the incorrect rights label. Production artifact checksums are not interchangeable with plain file SHA-256.

Reproduce configuration-only preparation and preflight

Use this checkout and an existing isolated development interpreter with runtime dependencies. No pytest/Jupyter is needed for these commands. This research helper is checkout-based; the installed-wheel offline demo remains the portable no-checkout first-result path. Run from the repository root. The fresh temporary directory owns only copied configurations and inspection reports. It must not be the old explorer workspace, canonical data or a retained release directory. The cached raster is read in place; nothing is downloaded or copied from it.

export SEASCAPE_PILOT_ROOT="$(mktemp -d /tmp/seascape-san-juan-preflight.XXXXXX)"
python - <<'PY'
import json
import os
import sys
from dataclasses import asdict
from pathlib import Path

import yaml

root = Path.cwd().resolve()
workspace = Path(os.environ["SEASCAPE_PILOT_ROOT"]).resolve()
assert workspace.is_dir() and not any(workspace.iterdir()), "Use a fresh empty workspace"
for key in ("SEASCAPE_COMMON_CONFIG", "SEASCAPE_CANDIDATE_ROOT"):
    os.environ.pop(key, None)
sys.path.insert(0, str(root / "notebooks"))
from _san_juan_workflow import prepare_workspace
from seascape.core.artifacts.checksums import checksum_path
from seascape.seafloor_physiography.bathymetry import load_bathymetry_config
from seascape.utils.config import stable_config_hash

prepare_workspace(root, workspace, (-123.35, 48.38, -122.70, 49.02), (6, 8), force_downloads=False)
domain_path = workspace / "config/data/environment_seascape.yaml"
domain = yaml.safe_load(domain_path.read_text())
raw_dir = root / "notebooks/outputs/data/raw/bathymetry"
domain["bathymetry"]["source"]["raw_dir"] = str(raw_dir)
domain_path.write_text(yaml.safe_dump(domain, sort_keys=False))
config = load_bathymetry_config(workspace / "config/data/project.yaml")
assert config.bbox == {"min_lon": -123.35, "min_lat": 48.38, "max_lon": -122.70, "max_lat": 49.02}
assert all(domain[s]["resolutions"] == [6, 8] and domain[s]["max_workers"] == 4
           for s in ("h3_geometry", "water_network"))
assert config.h3_resolution == 8 and [e.h3_resolution for e in config.additional_exports] == [6]
assert not config.overwrite and config.bathymetry_sign == "positive_down"
assert config.processed_path.is_relative_to(workspace)
assert all(e.processed_path.is_relative_to(workspace) for e in config.additional_exports)
assert config.raw_path == raw_dir / "GEBCO_2026_MODEL_AREA.tif"
assert checksum_path(config.raw_path) == "1d99f5e6a7553679446cf88e8b2685dba32ccff3349165d72afa682c6605257c"
record = {"status": "CONFIGURATION_ONLY", "resolved_config": asdict(config),
          "resolved_config_hash": stable_config_hash(asdict(config))}
(workspace / "configuration-inspection.json").write_text(json.dumps(record, default=str, indent=2))
print(record["resolved_config_hash"])
PY
env -u SEASCAPE_COMMON_CONFIG -u SEASCAPE_CANDIDATE_ROOT \
  python scripts/consumer_guard.py --forbid-root "$SEASCAPE_PILOT_ROOT/forbidden" \
  --module seascape -- --workspace "$SEASCAPE_PILOT_ROOT" build \
  --only seascape-bathymetry --dry-run --check-inputs --json \
  --candidate-root "$SEASCAPE_PILOT_ROOT/candidate" \
  > "$SEASCAPE_PILOT_ROOT/preflight.json" 2> "$SEASCAPE_PILOT_ROOT/preflight.stderr"

The final command is expected to return 1 with valid JSON status: failed: six canonical water inputs are missing_external (Canadian regions, WSDOT shorelines, Washington marine shoreline type, US coastline, territorial zones and US waters). Intermediates are generated_by_plan; resume/publication checks are not_applicable, not validated. The cached raster's path/header check is ready. It is not a failed scientific calculation or a ready build. Stop here; this configuration-only recipe authorizes no producer command by itself; the executed pilot used the separately approved scope below. The existing Python guard denies outbound calls/children; its forbidden path is a probe, not checkout isolation, because preparation and inspection deliberately read this checkout/cache. Native extensions are not OS-firewalled. Store the interpreter, code commit, exact argv/exits and stderr with the reports. The resolved hash includes absolute paths and therefore changes across fresh workspaces; archive the resolved configuration and per-file fingerprints rather than expecting the historical hash to match.

Acceptance and measured envelope

Execution HEAD 5d9faaf83aaccffe61a7eb97acd27c01ec6c62a7; production installed wheel matches all 190 package files at tested 232ac308f7f2229c2f4047ab9fe204d95b8a6bf9 exactly. CPython 3.14.6, macOS 26.6.2 ARM64, GDAL 3.12.4 / PROJ 9.8.1 / GEOS 3.13.1. The research helper reads this checkout's config; this is not a no-checkout pilot claim. The installed-wheel demo remains portable.

Each run: 4,660 R8 cells, 4,384 mean values / 276 nulls, means 1–354 m; 134 R6 cells, 127 values / 7 nulls, means 1.7647058824–243.4271844660 m. Source: 24,024 valid pixels, 18,478 negative, 5,515 positive, 31 zero, zero nodata. Selected support receives 18,226 marine samples; this is not an independent survey-coverage measurement. Source bytes/header, native affine, EPSG:4326, source EPSG:5831, meters/sign and nodata -32767 are preserved. This crop exercises no nodata pixels; software nodata-only fixtures remain separate evidence. Existing consumers validate support, edges, neighborhoods, radius operator and reachable area; all four family manifests verify sources/upstream/product bytes. QC retained, including low water support, hierarchy-only parents and a land-crossing connector. Null QC labels remain JSON null, never zero.

All 23 Parquet tables and the radius operator match exactly by H3 keys, including geometry, values and nulls; scientific configs match after workspace-path normalization. Of 24 product records, 22 raw checksums match. Existing threaded H3_GRIDS_6/8 output row order varies; sorted Arrow values including original geometry WKB and schema metadata match exactly. Their distinct raw hashes/sizes stay separately recorded/verified. Run/time/absolute-path/config-hash identities also differ and are retained. No scientific value is normalized to hide a discrepancy.

R6 means/quantiles are direct raster samples; parent composition counts/fractions are recomputed from R8 child counts. At cell 8628d1047ffffff, direct mean is null but parent composition has one sample. Production assignment helpers show that the R8 child 8828d10425fffff belongs to that hierarchical parent while the same pixel is assigned directly to R6 8628d1057ffffff. Retain this support distinction; never infer mean availability from the parent count. Parent recomputation is exact; available depth-band fractions sum to 1 within absolute 1e-12.

Realization Producer phases incl. preparation Completion elapsed Sampled peak aggregate RSS Final workspace
1 13.3264 s 115.5035 s incl. evidence-script correction; initial attempt 16.0276 s, acceptance-only retry 2.6996 s 446,021,632 bytes 17,387,048 bytes
2 10.8242 s 13.5285 s 444,366,848 bytes 17,387,323 bytes

Each phase retains /usr/bin/time -l wall/maximum RSS (macOS bytes) in stderr; sampled process-tree RSS includes concurrent descendants. No cap termination. Shared machine/filesystem caches and sampling limits preclude independent-machine stability or regional scaling promises. First producer phases all exited 0; initial acceptance exited 1 only on pandas-NA JSON serialization. Corrected reporting-only retry exited 0 under the original deadline; initial logs/products preserved. Comparison/reporting development failures and the R6 availability assumption are recorded in progress.

Actually opened and inspected all six offline source/R8/R6 PNGs: north-up extent, source positive-up versus positive-down output, units/legend, coarse coastal alignment and gray unavailable support. Channels/islands are consistent between runs; coastline generalization against the raster is visible. No source vertical accuracy, survey completeness, navigation/legal/model validity or tile-backed browser-render claim. Figures remain in each workspace's acceptance/; no datasets/images uploaded.

Exact phase argv/exits and source/config/artifact hashes are under the evidence root in execution-summary.json, commands.json, replicate-*-resources*.json, repeatability.json, additional-acceptance.json, parent-availability-evidence.json, visual-inspection.json and HANDOFF_EXECUTION.md. The original 46 cached files / 22,717,798 bytes are byte-identical. Hosted run 36352109541 passed all nine jobs for execution HEAD. Stop after this task: ACCEPT-01 still requires the unavailable unfamiliar-human trial and owner decisions; no release action is implied.