Skip to content

Port Calder's predicted-surface / guided-disambiguation subsystem (prior-depth offset + CUBE_PRIOR/POSTERIOR) #48

Description

@rolker

Summary

Tracking issue (from the #30 comparison against Calder's original CUBE). Calder's
predicted-surface / spatial-guide subsystem was not ported. The current port
runs pure data-driven CUBE. This is fine today but is a known gap to port when
a prior/predicted surface becomes available.

Part of #30. Feeds / fed by the chart-prior importer #44 and the bathymetric data
store epic rolker/unh_marine_autonomy#86.

What's missing

The port has a predicted_depth_ member (node.h:198) initialized to
INVALID_DATA and no setter — it is read in three guards but never assigned a
real value. Consequently:

  1. Prior-depth propagation offset (node.cpp:116-124, commented out) is moot —
    its precondition predicted_depth_ != no_data_value can never be true. In Calder
    the node's pred_depth is set from a predicted/prior surface
    (cube_node.c:1091) and used to refer a sounding to that surface
    (offset = pred_depth - range) and to bound blunders / capture.
  2. Guided disambiguation — Calder's CUBE_PRIOR (closest-to-guide) and
    CUBE_POSTERIOR (guide-weighted log-posterior) hypothesis selectors
    (cube_node.c:2037, :2136) are not ported; only the data-driven most-samples
    selector + nomination override exist. The unused DEFAULT_EXTRACTOR = CUBE_LHOOD
    constant reflects this gap.

These are one subsystem: both need an external predicted/prior surface.

Scope when picked up

  • A mechanism to supply a per-node predicted depth + variance (from a chart prior
    / GGGS bathy store / previous-epoch surface).
  • Wire the propagation offset and predicted-surface blunder/capture bounds.
  • Port CUBE_PRIOR / CUBE_POSTERIOR extractors and make the disambiguation
    method selectable.
  • Tests covering guided init, propagation, and prior/posterior selection (the
    comparison agents drafted a canonical guided-vs-most-samples regression case).

Not in scope now

No code changes in the near term — the current pure data-driven behavior is
documented as an intentional divergence (#30 doc). This issue exists so the gap is
on the roadmap rather than buried.


Authored-By: Claude Code Agent
Model: Claude Opus 4.8 (1M context)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions