Skip to content

Series build: the session gate has a ceiling as well as a floor - #37

Merged
mspinola merged 1 commit into
mainfrom
claude/series-gate-ceiling
Sep 25, 2026
Merged

mspinola merged 1 commit into
mainfrom
claude/series-gate-ceiling

Conversation

@mspinola

Copy link
Copy Markdown
Owner

Where this came from

Ported from the producer box's working tree, where it was uncommitted and invisible to every other checkout. The box's git status shows sixty-three modified files from the share's line endings, so the real change is only these three; I extracted it with --ignore-cr-at-eol and applied it to a clean checkout.

The ceiling

The gate only had a floor, so a bar newer than the expected session passed it. A routine firing before 16:30 ET gets the day in progress, and on the put/call ratios the vendor serves it a whole bar ahead of the breadth counts. That Close still moves, and because the build never rewrites a stored bar, storing it once would refuse every later build of that session until someone cleaned the store by hand.

Both sides now refuse and neither writes. Older is stale and the later routine is the retry; newer is unsettled and the message says to pull again after the close.

This is live, not hypothetical. At 14:45 ET today the box's put/call raw files carry a 2026-09-25 bar against an expected session of 2026-09-24, so the pending --accept-restatement for those two symbols would have stored a moving value. Verified against the box's actual raw files on a copy of the live store:

CBOE_PCC: REFUSED -- newest bar is 2026-09-25, past the expected session 2026-09-24.
That session has not closed, so the bar is still moving; nothing written.
Pull again after 16:30 ET.

A defect the port surfaced

The accepted-overwrite lines printed during the merge, before the gate ran. With the ceiling that produced an ACCEPTED line directly above a refusal that wrote nothing, which reads as history having been rewritten when the store was never opened. The lines are now held until the write actually happens. There is a test for that exact shape.

Scope

The ceiling does not explain the 2026-09-17 restatement. That bar's session had closed hours before capture and the vendor revised it after 22:34 ET anyway, per the box's 49-pair measurement, which also found the thirteen breadth series never revise at all. Accepting stays the only remedy for that class. Two different hazards; this closes one.

Test plan

  • Three new tests: a bar past the gate refuses with nothing written; the default gate refuses the session still in progress (clock monkeypatched to 13:45 ET); a refusal after an accepted bar announces nothing.
  • Full suite 316 passed, 14 skipped. Ruff clean.
  • Rehearsed against the box's live raw files on a copy of the store, both with and without --accept-restatement; the store is untouched in both.

Wrapper header pairs with mspinola/cotdata#120.

Sequencing this changes

The accept command for the two put/call symbols must wait for a pull whose newest bar is the expected session. Run before the close, it now refuses rather than storing a moving bar.

🤖 Generated with Claude Code

Ported from the producer box's working tree, where it was uncommitted and
invisible to every other checkout, plus a defect the port surfaced.

THE CEILING. The gate only had a floor, so a bar NEWER than the expected session
passed it. A routine that fires before 16:30 ET gets the day in progress, and on
the put/call ratios the vendor serves it a whole bar ahead of the breadth counts.
Its Close still moves, and because the build never rewrites a stored bar, storing
it once would refuse every later build of that session until a human cleaned the
store by hand. Both sides now refuse and neither writes: older is stale and the
routine's later run is the retry, newer is unsettled and the message says to pull
again after the close.

This is live, not hypothetical: at 14:45 ET today the box's put/call raw files
carry a 2026-09-25 bar against an expected session of 2026-09-24, so the pending
--accept-restatement for those two symbols would have stored a moving value.

THE DEFECT THE PORT SURFACED. The accepted-overwrite lines printed during the
merge, before the gate ran. Combined with the ceiling that produced an ACCEPTED
line directly above a refusal that wrote nothing, which reads as history having
been rewritten when the store was never opened. The lines are held until the
write actually happens, with a test for that exact shape.

Scope note: the ceiling does NOT explain the 2026-09-17 restatement. That bar's
session had closed hours before it was captured and the vendor revised it after
22:34 ET anyway, per the box's 49-pair measurement, which also found the thirteen
breadth series never revise. Accepting remains the only remedy for that class.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mspinola
mspinola merged commit e4920fc into main Sep 25, 2026
5 checks passed
@mspinola
mspinola deleted the claude/series-gate-ceiling branch September 25, 2026 18:56
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.

1 participant