Skip to content

ADR-0007: fully implemented — the databento deviation is closed - #23

Merged
mspinola merged 1 commit into
mainfrom
claude/adr7-fully-implemented
Aug 9, 2026
Merged

ADR-0007: fully implemented — the databento deviation is closed#23
mspinola merged 1 commit into
mainfrom
claude/adr7-fully-implemented

Conversation

@mspinola

@mspinola mspinola commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Follow-up to #22, which recorded databento as the one part of the Decision that had not been implemented. It has been: marketdata#15 ported the provider, cotdata#108 removed it. Both merged.

cotdata 0.5.0 has no bar API, no price producer of any kind, no vendor mapping in its registry, and no optional data dependency.

Doc only — 407 tests pass, and docs/adr/ is excluded from the prose guard.

The deviation section becomes history, not a deletion

The gap was real for a few hours, and an earlier reader would have been told to plan around it. So the section stays and records what it cost while it lasted — and what closing it bought:

cotdata's store is now COT-only, not just its public API. store.write_prices/read_prices, config.prices_dir() as a live path, the [databento] extra, the cotdata-prices entry point and the whole producer-half machinery went with the provider; the registry lost its vendor columns and resolve_source. Two packages can no longer both write futures bars — the coupling the contract-specs amendment argued against under "one vendor integration, one home".

One finding promoted from anecdote to expectation

The port turned up three rules that were correct in a single-domain package and wrong in a two-domain one:

  1. the store's tier axis — one frame per symbol cannot hold backadj and unadj
  2. the manifest's vendor key
  3. databento's symbol-root default, which would have handed every equity a GLBX root and let resolve_source route SPY to a vendor that cannot serve it

A single-domain package encodes assumptions its author never had to name, and each surfaces only when a second domain exists to contradict it. Worth expecting on the next extract in this style, rather than meeting three times as a surprise. That now sits beside the existing finding from #22 (a call-site census is not a coverage census).

Open questions

Two of the three original ones are resolved; store-root convergence is what remains, and it is no longer only cosmetic — a launcher now has two roots to get right, and one was already found half-wired.

The Linux-server question is simpler than it was (a databento-sourced server now reads the same store as everyone else) but it carries a concrete action: that box's run-prices.sh still calls cotdata-prices, which no longer exists. It has to be repointed at marketdata-update --ingest-databento / --build-databento whichever way the question is settled.

The livebook/bin/daily.sh finding is marked fixed (livebook#11).


Generated by Claude Code

The previous revision recorded databento as the one part of the Decision that had
not been implemented, and called it outstanding work rather than a boundary this
ADR drew. It is done: marketdata #15 ported the provider, cotdata #108 removed it.
cotdata 0.5.0 has no bar API, no price producer, no vendor mapping in its registry
and no optional data dependency.

The deviation section becomes history rather than disappearing, because the gap was
real and an earlier reader would have been told to plan around it. What it cost
while it lasted is recorded, and so is what closing it bought: cotdata's STORE is
now COT-only and not just its public API, and two packages can no longer both write
futures bars -- the coupling the contract-specs amendment argued against.

One finding is promoted from an anecdote to something to expect. The port turned up
THREE rules that were correct in a single-domain package and wrong in a two-domain
one: the store's tier axis (one frame per symbol cannot hold backadj and unadj), the
manifest's vendor key, and databento's symbol-root default (which would have handed
every equity a GLBX root). A single-domain package encodes assumptions its author
never had to name, and each surfaces only when a second domain exists to contradict
it. Worth expecting on the next extract rather than meeting three times as a
surprise.

Open questions: two of the three original ones are now resolved, leaving store-root
convergence. The Linux-server question is simpler than it was -- a databento-sourced
server now reads the same store as everyone else -- but it carries a concrete action:
that box's run-prices.sh still calls cotdata-prices, which no longer exists. The
livebook daily.sh finding is marked fixed (livebook #11).

407 tests pass; docs/adr/ is excluded from the prose guard either way.
@mspinola
mspinola marked this pull request as ready for review August 9, 2026 17:07
@mspinola
mspinola merged commit f8967ae into main Aug 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants