scorecompute
SCORECOMPUTE DISCOVERY / OBSERVATION DESIGN

Where should we
look next?

Start with the angles you have. Compare the viewpoints you could add. Let the geometry show which observation is expected to help.

Synthetic Paris-area case

2 supplied tracks · 22 angular samples.
No target truth is sent to the planner.

Set up the comparison
WHAT DO WE KNOW?Synthetic demonstration
WestEastLOCAL TOP VIEW · supplied station positions

Preparing the observation scene…

Supplied sight lines
What is drawn — and what is not

Coordinates use equal kilometre scales in a local Earth-fixed frame. The spherical reference surface is not a terrain map. Sensor models are enlarged. Sight lines use the supplied angles; their drawn lengths do not measure range. Replay advances recorded sample indices without generating or aligning new observations.

01 / WHERE SHOULD WE OBSERVE NEXT?

Same horizon.
Different viewpoints.

Explicit model: independent new angular errors, exact stations and clocks, constant velocity in spherical ECEF. Visibility is geometric only.

Original angles and complete request

This synthetic fixture is supplied explicitly. Candidate series contain times and expected precision, never invented measured angles.

{
  "observations": {
    "observers": [
      {
        "lat": 48.85,
        "lon": 2.35,
        "elevation_m": 35,
        "clock_offset_s": 0,
        "sigma_az_deg": 0.2,
        "sigma_el_deg": 0.2,
        "samples": [
          {
            "t_s": 0,
            "azimuth_deg": 101.991260935,
            "elevation_deg": 14.447682585
          },
          {
            "t_s": 10,
            "azimuth_deg": 93.467590277,
            "elevation_deg": 14.732612639
          },
          {
            "t_s": 20,
            "azimuth_deg": 84.786897815,
            "elevation_deg": 14.70245413
          },
          {
            "t_s": 30,
            "azimuth_deg": 76.336410848,
            "elevation_deg": 14.362974947
          },
          {
            "t_s": 40,
            "azimuth_deg": 68.446289854,
            "elevation_deg": 13.773863939
          },
          {
            "t_s": 50,
            "azimuth_deg": 61.324990456,
            "elevation_deg": 13.022637731
          },
          {
            "t_s": 60,
            "azimuth_deg": 55.051414611,
            "elevation_deg": 12.194843666
          },
          {
            "t_s": 70,
            "azimuth_deg": 49.607028444,
            "elevation_deg": 11.356342386
          },
          {
            "t_s": 80,
            "azimuth_deg": 44.917906873,
            "elevation_deg": 10.549458666
          },
          {
            "t_s": 90,
            "azimuth_deg": 40.888140057,
            "elevation_deg": 9.79700007
          },
          {
            "t_s": 100,
            "azimuth_deg": 37.420214884,
            "elevation_deg": 9.108372913
          }
        ]
      },
      {
        "lat": 48.85,
        "lon": 2.45,
        "elevation_m": 35,
        "clock_offset_s": 0,
        "sigma_az_deg": 0.2,
        "sigma_el_deg": 0.2,
        "samples": [
          {
            "t_s": 0,
            "azimuth_deg": 258.008739065,
            "elevation_deg": 14.447682585
          },
          {
            "t_s": 10,
            "azimuth_deg": 266.532409723,
            "elevation_deg": 14.732612639
          },
          {
            "t_s": 20,
            "azimuth_deg": 275.213102185,
            "elevation_deg": 14.70245413
          },
          {
            "t_s": 30,
            "azimuth_deg": 283.663589152,
            "elevation_deg": 14.362974947
          },
          {
            "t_s": 40,
            "azimuth_deg": 291.553710146,
            "elevation_deg": 13.773863939
          },
          {
            "t_s": 50,
            "azimuth_deg": 298.675009544,
            "elevation_deg": 13.022637731
          },
          {
            "t_s": 60,
            "azimuth_deg": 304.948585389,
            "elevation_deg": 12.194843666
          },
          {
            "t_s": 70,
            "azimuth_deg": 310.392971556,
            "elevation_deg": 11.356342386
          },
          {
            "t_s": 80,
            "azimuth_deg": 315.082093127,
            "elevation_deg": 10.549458666
          },
          {
            "t_s": 90,
            "azimuth_deg": 319.111859943,
            "elevation_deg": 9.79700007
          },
          {
            "t_s": 100,
            "azimuth_deg": 322.579785116,
            "elevation_deg": 9.108372913
          }
        ]
      }
    ]
  },
  "candidates": [
    {
      "id": "extend-west",
      "station": {
        "id": "observer_1",
        "lat": 48.85,
        "lon": 2.35,
        "elevation_m": 35
      },
      "sample_times_s": [
        110,
        120,
        130
      ],
      "sigma_az_deg": 0.2,
      "sigma_el_deg": 0.2,
      "cost_units": 1
    },
    {
      "id": "new-north",
      "station": {
        "id": "north",
        "lat": 48.92,
        "lon": 2.4,
        "elevation_m": 35
      },
      "sample_times_s": [
        110,
        120,
        130
      ],
      "sigma_az_deg": 0.2,
      "sigma_el_deg": 0.2,
      "cost_units": 2
    },
    {
      "id": "over-budget",
      "station": {
        "id": "east",
        "lat": 48.85,
        "lon": 2.5,
        "elevation_m": 35
      },
      "sample_times_s": [
        110,
        120,
        130
      ],
      "sigma_az_deg": 0.2,
      "sigma_el_deg": 0.2,
      "cost_units": 6
    }
  ],
  "objective": {
    "horizon_s": 140
  },
  "constraints": {
    "max_cost_units": 3,
    "min_elevation_deg": -2
  },
  "assumptions": {
    "independent_new_errors": true,
    "exact_stations_and_clocks": true,
    "constant_velocity": true
  }
}
03 / WHAT CHANGED?

Now add observations.
Does the forecast hold up?

The prediction did not contain new angles. This next call adds three fixed synthetic readings and fits all supplied observations again. They were generated independently, before any candidate was evaluated.

First compare the proposed viewpoints.The selected admissible series becomes available here.

This demonstration does not activate a real sensor. The new readings are explicitly marked synthetic; the server does not authenticate their origin.

A prediction earns a comparison.

Keep before, predicted and refitted uncertainty separate. New data can help, disagree, or make the estimate less certain.

04 / TRY TO BREAK A DECLARED CLAIM

What if one track
is slightly wrong?

Apply a fixed set of hypothetical angle and clock changes to the east observer, then fit each case again. A counterexample challenges your stated stability limit; it does not explain the cause of a real observation.

Six explicit cases: unchanged control, ±azimuth bias, +elevation bias and ±clock correction. Same original tracks, same motion model, evaluation at 140 s. No new evidence is acquired.

A claim needs a boundary.

Declare a position-shift limit, run the six cases, and inspect the returned counterexamples.

THE SAME QUESTION, A DIFFERENT DOMAIN

What would make
this plan work?

Keep the essential work. Explore an extra few minutes or one optional task. Check the smallest supported change against a fresh simulation.

120 minutesThree synthetic tasks · no calendar data
Set your requirements

One extra minute costs 1 unit. Removing the preview costs 15 units of lost value. Building and checking are always required.

THE NOMINAL WORKLOAD120 min deadline
deadline
Build the feature60 min
Run the checks40 min
Polish the preview20 min
04080120160 min

Bar lengths show nominal minutes. The experiment applies the declared variation independently to each retained task.

Search, then check again.

All permitted changes are declared before sampling. One finalist receives a separately seeded confirmation.

The model stays visible.

  • Conditional local linear forecast under a spherical constant-velocity model.
  • The original observations are fitted once; candidates add predicted information without invented angles.
  • Independent errors, exact clocks and station positions are explicit assumptions.
  • Terrain, weather, access and actual sensor availability are not established.
Call these tools independently through MCP