Story: Project the identities of the series a publish seeds

Table of Contents

This page documents a story in Sprint 27. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

Every market series a publish creates can be found by the resolver and listed by the picker as soon as the publish completes, without anyone running a backfill by hand.

2. Status

Field Value
State DONE
Parent sprint Sprint 27
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-12

3. Acceptance

  • One function projects the identities a tenant's series lack, and the backfill command and the publish handler both call it.
  • When a publish from the data quality area inserts or updates series, the handler projects the identities before it reports the step complete.
  • A test shows a series with no identity row gets one, a projected series is left alone, and a second call writes nothing.
  • A fresh environment's picker lists the seeded series for each party with no manual backfill.

4. Tasks

Task State Start End Description
Project the identities a publish seeds DONE 2026-10-12 2026-10-12 Extract the identity backfill into one function and call it from the data quality publish handler once the SQL function has inserted series.

5. Decisions

  • Project in the C++ handler, not in the SQL function. The data quality publish is a SQL function that inserts series directly, and SQL cannot run the codec the identity projection is read through. The codec stays the only reader of the URI grammar, so the handler that calls the function projects the identities afterwards.
  • One function does it. project_missing finds the series with no identity row and projects them, for a tenant or one party. The backfill command and the publish handler both call it, and a second call writes nothing.
  • The projection is not gated on the function's counts. They count the dataset's observation rows, so a republish whose observations are all skipped says nothing about the series. Running it every time also repairs series an earlier publish left unprojected. One republish took the Acme tenant from 25 of 78 series projected to 79 of 79.
  • A failed projection fails the publish step. A missing projection must not go unseen.
  • A series with an unreadable URI still gets a row, with its kind and no field value, so it is not retried.

Left alone. One system-tenant series that a SQL populate script seeds. No screen lists it.

A mistake the drift check caught. The change was first made in a generated header. It now lives in the model, and six marketdata services were regenerated to main's current templates.

6. Out of scope

  • The one system-tenant series that a SQL populate script seeds. It lives in the system tenant and no screen lists it.
  • Making the SQL publish function project the identity itself. It cannot run the codec, and the codec must stay the only reader of the grammar.

Emacs 29.3 (Org mode 9.6.15)