Source discovery, closure, and currentness#

A discovery is a bounded query of an archive—not a statement that every relevant observation in physical reality has been found.

The Lab routes requests through its same-origin server adapter to the fixed NASA Lunar ODE endpoint. The browser cannot supply an arbitrary upstream URL or redirect the service into a general-purpose proxy.

Fixed source profile#

The initial implementation targets:

Field

Value

Target

Moon

Mission

LRO

Instrument

LROC

Product type

CDRNAC4

Source

NASA Lunar ODE live2 REST service

Spatial relation

Source product intersects the requested point box or surrounding rectangle

This is a deliberate scope, not an implied universal planetary catalog. Adding another source requires its own normalization and scientific applicability analysis.

Retrieval sequence#

The adapter performs count-first requests, requests bounded metadata pages, and checks counts again when the preceding retrieval supports a completion claim. It records the actual response bytes and their SHA-256 identities.

Current Lab bounds are:

Budget

Limit

Source rows requested per capture

300

Metadata page size

Up to 100

Upstream requests

10

Response bytes per request

2 MiB

Total captured metadata bytes

6 MiB

Source operation elapsed budget

35 seconds

Individual request timeout

At most 12 seconds, bounded by remaining operation time

These are implementation resource limits. They are not scientific selection rules. Reaching a limit must not silently produce a complete-looking population.

There are no automatic unbounded retries. A failed page can leave a partial capture whose retained rows and limitations remain inspectable. A failed initial count does not produce fabricated empty observations.

What closure means#

COMPLETE means a single-segment bounded retrieval reconciled its count witnesses with normalized unique rows and did not encounter a known normalization or pagination loss.

PARTIAL means a known failure, omission, changed count, or budget prevented that reconciliation.

UNKNOWN means the available witnesses do not establish the unique population, such as a split-meridian union with potentially overlapping counts.

Even COMPLETE is not a transactional archive snapshot: the external archive may change during pagination. Count agreement is a useful bounded witness, not proof that every intermediate source state was identical.

Currentness is not capture time#

queriedAt and receivedAt say when the adapter interacted with the source. They do not say how recent the archive’s indexed data is.

The Lab currently reports indexedThrough: null. It does not replace an unknown indexing horizon with the current date. The canonical Python acquisition path has its own currentness machinery; its existence does not make the browser’s horizon established.

Normalization without invention#

The adapter preserves durable PDS identity, available acquisition times and angles, source spatial metadata, a source locator, a browse locator, and per-row issues.

Missing or invalid angles do not become zero. Invalid footprints do not become bounding-box approximations. Unsupported geometry remains absent while the raw metadata response is retained. Source resolution values remain raw because their units have not been admitted by this adapter for screening.

A row without a durable PDS identity cannot be made into one using ODE’s numeric locator. Conflicting identities must be surfaced as ambiguity rather than silently selecting a preferred row.

Captured bytes and rendered values#

The receipt retains exact source-response bytes as base64 with byte length and SHA-256. The normalized observation projection has a separate digest. These are different identities with different purposes.

The browser projection digest is not the Python canonical digest_value of a scientific model. The Python bridge can audit the captured raw bytes without pretending the entire JavaScript projection is a canonical archive capture.

Empty results and failures#

A zero result supports only a bounded statement such as: no qualifying records were returned for this source query under its observed closure and currentness limits.

It does not establish that an event did not occur, that a surface phenomenon is absent, or that no relevant observation exists elsewhere.

The client preserves its last reconciled capture through later request failure. Editing the query makes that capture stale with respect to the draft, rather than relabeling the old rows as results of the new request.

Public-service limits#

The adapter bounds each request and allows limited in-flight work per Worker isolate. That is not a distributed account-wide rate limit or an abuse-resistance guarantee. Larger public traffic requires an independently qualified operational budget and source-use policy.