ADR-0007: fully implemented — the databento deviation is closed - #23
Merged
Conversation
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
marked this pull request as ready for review
August 9, 2026 17:07
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
cotdata0.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, thecotdata-pricesentry point and the whole producer-half machinery went with the provider; the registry lost its vendor columns andresolve_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:
backadjandunadjresolve_sourceroute SPY to a vendor that cannot serve itA 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.shstill callscotdata-prices, which no longer exists. It has to be repointed atmarketdata-update --ingest-databento/--build-databentowhichever way the question is settled.The
livebook/bin/daily.shfinding is marked fixed (livebook#11).Generated by Claude Code