Repository navigation
Handoff: claim ADR-0007 step 2, with a re-measurement that moved the wrong way - #101
Merged
Merged
Conversation
…wrong way Claimed, not started. A work order and a measurement, no code. ADR-0007 accepted the direction on 2026-07-27 and step 2 has not started since. crowdmon CLAUDE.md records it as on ice with nobody owning it, and says not to start without confirming that changed. It changed: asked for directly on 2026-08-04 while deciding which machine publishes the crowdmon damage panel. Re-measured, and step 2 grew 11% while sitting on ice: 1,721 lines to 1,901, with both price providers and prices.py growing and neither CFTC provider moving. The ADR predicted exactly that and the drift is now measured rather than anticipated. It is also not a file move. marketdata/providers/ holds only yfinance.py; the futures domain is declared in adjust.DOMAIN_TIERS so error messages are right, but nothing implements it. Step 2 WRITES a Norgate futures provider using cotdata as the reference. Consumers enumerated: crowdmon is 6 modules and 10 call sites, and contract_master.py:34 already documents itself as the site ADR-0007 will repoint. Section 4 is the finding the handoff exists for, and nothing had composed it before. crowdmon needs unadj AND propadj; propadj is derived on read from unadj + backadj; databento owes exactly one series per symbol by ADR-0007 scoping. So a databento-backed store cannot feed crowdmon at all, and only the Windows box can write a store it reads. Not for a Python reason: the Mac runs 3.11 under uv and builds the full panel today. That makes ADR-0007 open question 3 answerable. A synced store is not a temporary state pending step 2, it is the answer, unless the servers interpreter is raised AND a full-tier non-Norgate vendor appears. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Claimed, not started. A work order and a re-measurement. No code.
Executes crucible-stack ADR-0007, accepted 2026-07-27. Proposes no new decision and asks for none.
crowdmon'sCLAUDE.mdrecords step 2 as "on ice… nobody owns it. Do not start it without confirming that has changed." It changed: asked for directly on 2026-08-04, while deciding which machine publishes the crowdmon damage panel.Step 2 grew ~11% while sitting on ice
Measured against
wc -lonmainat49ebc45:providers/databento.pyproviders/norgate.pyprices.pyproviders/yfinance.pyBoth price providers grew,
prices.pygrew, neither CFTC provider moved. ADR-0007 predicted exactly this — "databento.py arriving after this ADR was written makes cotdata more price-heavy… and enlarges step 2 at the same time" — so the drift is now measured rather than anticipated.That is an argument for doing it sooner, not an argument for doing it. The ADR already made the second one.
It is not a file move
marketdata/src/marketdata/providers/contains__init__.pyandyfinance.py. That is all. Thefuturesdomain is declared inadjust.DOMAIN_TIERS— ADR-0007 notes that was done so error messages are correct from day one — but nothing implements it.So step 2 writes a Norgate futures provider, using
cotdata's as reference. 1,901 lines to read; the deliverable is a provider that did not exist. Worth pricing in before estimating.§4 is the finding, and nothing had composed it before
Three facts, each already written down separately in three different repos:
notionalrefuses anything butunadj,riskunitsanything butpropadj, andpropadjis derived on read fromunadj+backadj.ContractMaster.coverage()already encodes it.norgatedatatalks to a locally installed Norgate Data Updater application, not an API (providers/norgate.py:207,325, both commented "Windows producer only").backadj, because ADR-0007 scopes it to the Linux dashboard and says its coverage "should not be broadened toward parity with Norgate".Composed: a databento-backed futures store cannot feed
crowdmonat all. One stored tier cannot producepropadj, and the refusal is araiserather than a warning precisely because the error survives a spot check —backadjpercent vol is 201x too high for soybeans and 0.47x for gold, which never goes negative and passes every implausibility screen.The trap for whoever executes: if the new provider ships databento-first, or ships Norgate storing only
backadjto match the server's needs, crowdmon stops working — as araiseinside a weekly scheduled job.unadjandbackadjboth stored is a hard requirement of the new provider, not a coverage nicety. §4 says so where its author will be reading.It also answers one of ADR-0007's own open questions
2026-08-04 answered it de facto: the crowding page ships as a synced artifact because that box runs Python 3.9 against crowdmon's
>=3.10floor. Combined with §4, it could not produce a crowdmon-consumable store even with a raised interpreter, because it has no Norgate either.So "synced store" is not a temporary state pending step 2. It is the answer, unless the server's interpreter is raised and a full-tier non-Norgate vendor appears. §5.3 suggests marking it resolved in ADR-0007 rather than leaving it reading as undecided — that edit is not made here, since ADR-0007 lives in another repo.
What it deliberately does not decide
marketdata. ADR-0007 saysmarketdataand is accepted; a session wanting otherwise writes a superseding ADR rather than quietly building something else.livebook— step 3, deferred on purpose, live book behind it.Companion
crowdmon/docs/design/amendments-2026-08-04.md§D14 records §4 consumer-side, so the constraint is discoverable from the repo it binds. Opened as mspinola/crowdmon#67.🤖 Generated with Claude Code