Describe the finals gate that ships, not the one that broke - #106
Closed
mspinola wants to merge 1 commit into
Closed
Describe the finals gate that ships, not the one that broke#106mspinola wants to merge 1 commit into
mspinola wants to merge 1 commit into
Conversation
WINDOWS_SCHEDULING.md still explained --require-final as a wall-clock check: norgatedata.last_database_update_time() for both databases against --final-cutoff, default 20:55. That has not been the mechanism since the gate went data-driven, and the cutoff flag is accepted-but-ignored in the code. The doc was describing a version that was replaced precisely because it failed. It is also load-bearing in a way most stale prose is not. Nobody reads this file casually: they read it while wiring a producer, and then they build what it says. It was read that way last week, by someone specifying an equivalent gate for marketdata, who correctly reproduced the description and would have reproduced the 2026-07-27 outage with it. So the replacement paragraph leads with the rule that actually runs, states the ES/CL/ZC quorum, and gives the two consequences an operator can check against behaviour: no trading calendar is needed because a weekend and an unsettled session are the same answer, and Norgate publishes no in-progress bar, so bar presence is already a settled-session signal. The 2026-07-27 failure moves into a blockquote on --final-cutoff, kept rather than deleted because a reader with that flag in an existing wrapper needs to know it does nothing now and why removing it is safe. Two smaller corrections in the same pass. The restart-on-failure paragraph described each retry as a last_database_update_time check, naming the dead mechanism in a sentence otherwise about scheduling. And the testing section said a daytime run "only proves the wrapper resolves", which stopped being unconditional: under a date comparison a daytime run defers only if last night captured, so a missed or failed night now self-heals at the next trigger instead of waiting for the evening. That is a real operational property the old wording hid. The design doc's Problem section still describes the cutoff in the present tense and is deliberately left alone: it records what was true when the change was argued, and rewriting it would destroy the reasoning it exists to preserve. The example wrapper needed no change, being mechanism-agnostic already. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Owner
Author
|
Superseded by #105, which rewrote this doc for the post-step-2 world (the nightly job is now Two of the three corrections here are NOT in #105 and are worth keeping, so they follow as a small PR against current main: the restart-on-failure paragraph still names |
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.
WINDOWS_SCHEDULING.mdstill explained--require-finalas a wall-clock check:norgatedata.last_database_update_time()for both databases against--final-cutoff, default20:55. That has not been the mechanism since the gatewent data-driven, and the cutoff flag is accepted-but-ignored in the code. The doc
was describing the version that was replaced precisely because it failed.
It is also load-bearing in a way most stale prose is not. Nobody reads this file
casually. They read it while wiring a producer, and then they build what it says.
It was read exactly that way last week, by someone specifying an equivalent gate
for
marketdata: the description was reproduced faithfully, and the 2026-07-27outage would have been reproduced along with it.
What the paragraph says now
The rule that actually runs, first:
across the
ES/CL/ZCquorum, all of which must have advanced. Then the twoconsequences an operator can check against observed behaviour: no trading calendar
is needed, because a weekend and an unsettled session give the same answer; and
Norgate publishes no in-progress bar, so bar presence is already a
settled-session signal.
The 2026-07-27 failure moves into a blockquote on
--final-cutoff, kept ratherthan deleted. A reader with that flag sitting in an existing wrapper needs to know
it does nothing now, and why taking it out is safe.
Two smaller corrections in the same pass
The restart-on-failure paragraph described each retry as a
last_database_update_timecheck, naming the dead mechanism in a sentenceotherwise about scheduling.
The testing section said a daytime run "only proves the wrapper resolves". That
stopped being unconditional: under a date comparison a daytime run defers only if
last night captured, so a missed or failed night now self-heals at the next
trigger rather than waiting for the evening. That is a real operational property
the old wording hid.
Deliberately not touched
docs/design/finals_ready_data_driven.mdstill describes the cutoff in the presenttense in its Problem section. That is the record of what was true when the change
was argued, and rewriting it would destroy the reasoning the doc exists to
preserve.
docs/examples/windows/run-prices.cmdneeded no change, beingmechanism-agnostic already.
🤖 Generated with Claude Code