chore(0135): correct two stale criteria and split the outlier decision to 0217 - #239
Merged
stkrolikiewicz merged 3 commits intoAug 21, 2026
Merged
Conversation
… 0217 The criteria still described the carry bound as applying to price_usd and measured against the asset's newest candle; the final revision does neither. Failure mode 1 - whether price_usd goes through the 5.5 keep-mask, which is the question this task is named for - moves to 0217. It is blocked by sequencing 0135 itself recorded (after 0118, evidenced by 0123, both in backlog), so carrying it would hold the task open on a question it is not allowed to answer while its two shipped fixes wait to be archived.
…he rollback The two target metrics moved as intended (zero_but_vwap_ok 36->0, zero_price_usd 1129->376) but empty_sources went 1096->3380: 2,284 assets lost sources and had vwap_24h zeroed, because the 2h bound was calibrated on the enrichment schedule while enrichment has been down for two days, so almost no venue has a priced close younger than 2h. Rolled back and verified. The design lesson is recorded: the bound should be conditional - drop stale venues only when a fresh one survives - since the defect it guards against needs a live venue to evict.
… function names Two failures from the 0135 rollout, both general rather than specific to that change. Step 1b: step 1 measures what the new SELECT costs and says nothing about what it publishes. 0135 shipped on a green step 1 and was rolled back an hour later - it fixed 753 assets while blanking sources and vwap on 2,284. Every number needed for that call was available beforehand, from artifacts step 0 already produces; nobody thought to run the old definition forwards. Step 3: SHOW CREATE re-renders the definition, so INTERVAL 2 HOUR comes back as toIntervalHour(2). Grepping the source spelling reports a working apply as failed - it did exactly that mid-deploy. Function names survive verbatim and are the reliable discriminator.
karczuRF
approved these changes
Aug 21, 2026
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.
Summary
price_usd(it does not — it lives only inper_source) and measured it against the asset's own newest candle (the reference moved tonow(), because the old one spans quote legs enrichment can never price and therefore never resolves).price_usdshould go through the §5.5 keep-mask — into task 0217. That is the question 0135 is named for, and it is the one thing here that cannot be settled by working harder: 0135's own sequencing note puts it after 0118, which changes which sources reach the median and therefore what "outlier" means, with 0123 as its evidence base. Both are still in backlog.Carrying it would hold 0135 open indefinitely on a question it is not allowed to answer, while the two failure modes it did fix — the un-enriched-tip zero and C2's enrichment-timing-dependent
sourcesmembership — sit shipped and unarchived.0217 also inherits a consequence worth naming rather than discovering later: by skipping to the newest priced close, 0135 made the outlier case more reachable, not less. Previously an un-enriched tip often landed
price_usdon a 0, which was loudly broken; now it can land on the thin outlier venue the mask rejected, which is quietly wrong and passes every0-means-unavailable consumer guard.Remaining before 0135 can be archived (not in this PR): prod apply per the 0072 runbook,
zero_but_vwap_ok = 0, XLM publishing a real price — which may be blocked by 0215 rather than by this change — and a green 0120 re-run.