Skip to content

Mover v3 round 17: resolve the cross-family pre-outcome review (5 majors, 2 minors); GPT-6 delta review ready_to_freeze — not frozen - #351

Merged
seathatflowsinourveins merged 3 commits into
mainfrom
claude/mover-v3-round17-20260926
Sep 26, 2026
Merged

seathatflowsinourveins merged 3 commits into
mainfrom
claude/mover-v3-round17-20260926

Conversation

@seathatflowsinourveins

Copy link
Copy Markdown
Owner

Status (2026-09-26): cross-family pre-outcome review passed (ready_to_freeze), not frozen

This PR resolves the findings from the 2026-09-26 cross-family (GPT-6) pre-outcome review of the Mover v3 core at main 19092db0. That review returned not_ready with 5 majors and 1 minor. The protocol stays a draft: status: draft_pending_independent_pre_outcome_review, frozen_before_outcomes: false. No outcome dataset, sealed file or result has been opened, and no market data was fetched.

Path to a freeze (unchanged by this PR):

  1. Cross-family pre-outcome review passed at 935c32d2 (below).
  2. Set the F12 budget values after the native dry run, by a reviewed PR. The dry run needs Alpaca market-data access, which currently returns 401 until the keys are rotated.
  3. The freeze commit, once freeze_preconditions hold.

Round 17

Finding Severity Resolution Commit
F1: H3-c counted unadjusted splits as returns major h3c_event calls record_exclusion once per overnight leg (t+1..t+5) before counting or valuing any leg b45f24b
F2: corporate-action exclusions lost issuer identity after a rename major Ctx.issuer_records chains the as-known symbol through dated name_change records (same-date chains are independent of row order) before matching split, spin-off and merger records b45f24b
F3: an exhausted terminal-actions request read as "no actions" major terminal_records raises HoldoutRefused; the planner stops expanding past an incomplete terminal request b45f24b
F4: F12 calibration accepted a dry run with zero timed pages major driver._fetch times each transport call; stores carry elapsed_seconds; runner refuses without a valid page calibration b45f24b
F5: a collector retry could overwrite a sealed snapshot major Store.write refuses (SealError) over existing pages or a ledger, and writes the ledger atomically; holdout collection gains recover-if-matching b45f24b
F6: settlement treated exchange closures as clearing closures minor SETTLEMENT_OPEN_EXCHANGE_CLOSED = {2018-12-05, 2025-01-09} from Nasdaq's notices; settlement advances by calendar day in the QuantLib advance(Days) style b45f24b
Re-review minor: the rename diagnostic still matched old_symbol == sym minor Issuer-aware terminal-zero rename diagnostic through Ctx.issuer_records, with a matching protocol rule 935c32d

1961e23 edits protocol-core-draft.json to describe each fixed rule. It also adds seven round-17 review_record entries: six from b45f24b and one from 935c32d.

Evidence

  • Study suite (the study's test_command, uv run --no-project --managed-python --python 3.13.15 --with-requirements .../study/runtime-requirements.txt python -m unittest discover ...): 333 tests OK at the base, 358 at 1961e23 and 362 OK at 935c32d. scripts/validate.py passed at 935c32d.
  • Test-first fixes: 25 new regressions for the six findings, each failing before its fix. The re-review minor added 4 regressions, 2 of which fail on 1961e23; the other two are boundary guards that pass on both.
  • Mutation verification (independent Claude Sonnet, one verifier per finding, each in its own worktree): each verifier reverted its fix's production code. Every finding was fully resolved, with 3 to 8 new tests failing per revert and no regressions.
  • Cross-family re-review at 1961e23 (GPT-6 gpt-6-astra, effort max, read-only): F1 and F3 to F6 resolved. F2's original major was resolved, but it found the one wording minor above. 935c32d fixed that in code rather than by narrowing the text.
  • Cross-family delta review of 1961e23f..935c32d2 (GPT-6, read-only): VERDICT: ready_to_freeze. It found "no new defect, leak, re-roll path, or analyst degree of freedom". It independently ran the 49 trade tests in the pinned runtime, and running the four new regressions against the pre-fix source reproduced exactly two failures.

Residuals recorded, not blocking (named by the verifiers and judged by the re-review)

  • F1: no H3-c test puts the split on the last leg (t+4, t+5], and none mixes a split and a spin-off on different legs. The re-review called these "useful additional coverage, not evidence of an incomplete fix".
  • F2: a name_change dated exactly on the event's own asof session is not tested. It follows the stated "after t" rule.
  • F3: the exhausted-terminal tests catch HoldoutRefused without asserting its reason.
  • F4: runner.py's "no valid page calibration" guard has no direct test.
  • F5: after a SealError, count_only dry runs and transport_check refuse a retry into a used directory, and there is no recovery path. This fails closed. Only holdout collection gained recover-if-matching; the others are a follow-up.

SOTA sources

🤖 Generated with Claude Code

Scout and others added 3 commits September 26, 2026 11:19
…eview findings (5 majors, 1 minor)

GPT-6 (gpt-6-astra, effort max) reviewed main 19092db and returned not_ready:
1. H3-c counted unadjusted splits;
2. corporate-action exclusions lost the issuer after a rename;
3. incomplete terminal-action acquisition was treated as no actions;
4. F12 calibration accepted a missing or unsuccessful dry run and undercounted elapsed time;
5. a collector retry could overwrite a sealed snapshot;
6. settlement days conflated exchange closures with clearing closures.

Each fix was implemented test-first by a GPT-6 implementer in its own worktree. Each of the 25 new regressions failed before its fix. Integrated here, with the one store.py docstring overlap merged. The study test_command gives 358 tests OK (baseline 333).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d in review_record

Eight edits make protocol-core-draft.json describe what the round-17 code does: F12 calibration from summed sealed
attempt durations with refusal of absent or unsuccessful calibration; settlement eligibility separate from exchange
sessions with two sourced settlement-open closures; per-leg H3-c split and spin-off exclusions; dated rename chains for
corporate-action matching; refusal of incomplete terminal-action acquisition; immutable collection seals bound to the
authorization, batch and study identity. Six review_record entries (round 17) map each cross-family finding to its code,
tests and text. An independent Sonnet verification (one verifier per finding, each mutation-checked in its own worktree)
found all six fully resolved with no regressions, and the protocol edits were checked to apply cleanly. Study suite: 358
tests OK. Status stays draft_pending_independent_pre_outcome_review until the cross-family re-review.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ss-family re-review minor)

The GPT-6 re-review of 1961e23 verified all six round-17 resolutions and found one minor: the protocol said the
terminal-zero rename count used the dated issuer resolver, but the diagnostic still matched old_symbol == sym, missing a
chained rename (OLD -> MID on the entry day, MID -> NEW during the hold). Implemented the issuer-aware alternative
(GPT-6 implementer, test-first): four regressions, of which the chained-rename and other-issuer cases fail on 1961e23
(coordinator mutation check: the new tests on the pre-fix code give FAILED (failures=2)). Protocol rule sentence and a
round-17 review_record entry added. Study suite: 362 tests OK.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@seathatflowsinourveins seathatflowsinourveins added the lane:trading Trading lane: sim, paper and live north star label Sep 26, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@seathatflowsinourveins
seathatflowsinourveins merged commit 803bc35 into main Sep 26, 2026
24 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the claude/mover-v3-round17-20260926 branch September 26, 2026 17:02
seathatflowsinourveins pushed a commit that referenced this pull request Sep 26, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

# Conflicts:
#	manifests/evidence.json
seathatflowsinourveins added a commit that referenced this pull request Sep 26, 2026
…351, #355, #356) (#361)

- paper lane: the cross-family engine fixes (#350), startup-fill durability
  (#356) and per-execution loss booking (#355) are merged. The 1x ladder
  stays blocked on the paper keys (HTTP 401). Flat.
- mover-early-entry-studies gate: v3 round 17 is GPT-6 ready_to_freeze
  (#351) but not frozen; the dry run needs data keys. evidence_ref now
  points at the v3 README.

Co-authored-by: Scout <scout@local>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:trading Trading lane: sim, paper and live north star

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant