Set 8 Structural Theses Bundle
Set 8 Structural Theses Bundle validates public synthetic thesis-family replay without financial decisions, live-market validation, external model access, or portfolio authority.
The write-up
Structural theses run through the copied evaluator
This bundle imports the finance module tools/finance/structural_theses.py as a copied body and runs it over public synthetic thesis rows rather than building a new evaluator. This component imports one finance module, tools/finance/structural_theses.py, as an exact copied source body and runs it over public synthetic thesis rows. It does not build a new evaluator. It drives the copied source's own family builder and validator and records what they return.
Losers remain visible beside surviving families
The copied source asks which reasoning families survive once every claim is resolved forward with failures kept in view, freezing "obvious" at commitment time so post-hoc mutations are rejected. The question the copied source answers is narrow. Given claims that looked structurally obvious at the time they were written, which reasoning families still survive once every claim is resolved forward and the failures are kept in view? "Obvious" is frozen at commitment time and is never a label applied after the outcome is known. A thesis whose meaning shifts once the result is in is a post-hoc mutation, and the validator rejects it.
Review candidates are not tradable winners
The output is a metadata-only record of verdicts, counts, codes, and refs; source text, market data, and payloads stay out, and the strongest label is review_candidate. The component emits a metadata-only result record: verdicts, counts, error codes, and source refs. Copied source text, market data, and model-output data stay out. The strongest label a surviving pattern can carry is review_candidate, a flag for human review. There is no tradable winner in the output vocabulary.
Purpose
The survivorship failure mode
Collecting only patterns that worked and calling the list a method just measures hindsight, because winners look like signal once the losers are dropped before counting. A loose version of this idea is easy and wrong. Collect patterns that worked, call the list a method, and you have measured hindsight. The failure mode is survivorship: winners alone look like signal because the losers were dropped before anyone counted.
Losers and controls as required evidence
The copied source requires refuted theses and negative controls to flow through the same pipeline as confirmed ones, and the bundle proves this discipline fires on public fixtures. The discipline the copied source enforces is that losers and negative controls are required evidence, not noise. A refuted thesis must flow through the same pipeline as a confirmed one and stay legible as valid evidence. A negative control must be present and must not resolve into a confirmed claim. The bundle's job is to prove that this discipline actually fires on public fixtures, and that it refuses the inputs designed to break it.
How it works
run and its two callbacks
run hands the fixed SPEC to run_crown_jewel_organ with a clean-path and a negative-case callback; the real mechanism lives in the evaluator helpers that follow. The runner is run, which hands the fixed SPEC to the shared run_crown_jewel_organ helper with two callbacks: _structural_evaluator for the clean path and evaluate_negative_case for single negative cases. run_batch8_structural_theses_bundle is the same entry in bundle-input mode. The mechanism lives in the evaluator and its helpers, which execute in this order.
Isolated import in _load_copied_structural_module
_load_copied_structural_module imports the copied source under a private name, isolating sys.path and namespaces so its system and tools packages load from the bundle, not the host. _load_copied_structural_module imports the copied structural_theses.py from the exported bundle's source_modules tree. It uses importlib with a private module name, and isolates the import inside _temporary_sys_path and _temporary_import_namespaces so the copied system and tools packages load from the bundle rather than the host. It raises ImportError if the spec or loader is missing.
Probe inputs from _family_inputs
_family_inputs reads the probe manifest and returns the thesis rows, the realized_returns map, and the sampling_frame, filtering out non-mapping rows. _family_inputs reads the probe manifest and returns three values: the list of thesis rows, the realized_returns map, and the sampling_frame. Non-mapping rows are filtered out.
Family build and validation in _build_family
_build_family calls the copied build_structural_thesis_family under a purged_holdout split, driving real CP1 admission, CP2 resolution, and replay before validate_structural_thesis_family runs. _build_family calls the copied source's build_structural_thesis_family with those inputs, a benchmark, a split policy of purged_holdout, and an embargo. Under the hood the copied source maps each thesis onto the existing forecast-claim shape and drives the real CP1 admission, CP2 resolution, proper-scoring replay, and purged walk-forward replay against the fixture prices. The evaluator then calls the copied validate_structural_thesis_family on the result.
Fixed-id checks in _structural_evaluator
_structural_evaluator checks by fixed id that the winner confirms, the loser refutes as valid evidence, and the control stays a control, blocking on any mismatch. _structural_evaluator checks the clean family by fixed id. The winner sob_2015 must resolve claim_confirmed_forward. The loser rmd_2018_loser must resolve claim_refuted_forward with loser_is_valid_evidence true. The control ctrl_2020 must stay a control and must not become claim_confirmed_forward. The surviving pattern must land in family memory as a candidate_set, and authority_boundary.investment_recommendation_authorized must be false. Any mismatch becomes a BATCH8_STRUCTURAL_THESES_REFERENCE_CASE_MISMATCH finding and the status flips to blocked.
The three perturbations in _evaluate_negative_exercises
_evaluate_negative_exercises runs the three perturbations below and records a finding for any refusal that failed to fire; evaluate_negative_case runs them one at a time. _evaluate_negative_exercises runs the three perturbations described below. It returns the observed codes plus one component-level finding per refusal that failed to fire. The single-case form evaluate_negative_case runs the same three checks one at a time for the runner's negative-case pass.
Public card from result_card
result_card projects a compact public card carrying an authority_floor with every *_authorized flag false and a body_floor reporting no source bodies. result_card projects the result into a compact public card. It copies the authority_floor from the ceiling (every *_authorized flag stays false) and a body_floor that reports no source bodies in the result record or card.
| Function | Role |
|---|---|
run / run_batch8_structural_theses_bundle | Entry points; fixture mode and bundle mode |
_load_copied_structural_module | Imports the copied source in an isolated namespace |
_family_inputs | Reads theses, realized returns, sampling frame from the probe |
_build_family | Calls the copied build_structural_thesis_family |
_structural_evaluator | Validates the clean winner/loser/control family |
_evaluate_negative_exercises / evaluate_negative_case | Fires the three refusals |
result_card | metadata-only public card with authority and body floors |
Diagram source & refs
Source refs
- _build_family CP1 admit, CP2 resolve, proper-scoring + purged replay
build_structural_thesis_family- _structural_evaluator
validate_structural_thesis_family
flowchart TD Probe["Public probe manifest theses, realized returns, sampling frame"] --> Load["_load_copied_structural_module isolated import of copied source"] Load --> Build["_build_family build_structural_thesis_family CP1 admit, CP2 resolve, proper-scoring + purged replay"] Build --> Clean["_structural_evaluator validate_structural_thesis_family"] Clean --> Check{"sob_2015 confirmed, rmd_2018_loser refuted + valid, ctrl_2020 not confirmed?"} Build --> Neg["_evaluate_negative_exercises"] Neg --> S["Survivor-only family"] Neg --> F["Refuted pattern smuggled forward"] Neg --> C["Control mutated to confirmed"] Check -->|yes| Pass["metadata-only pass record"] Check -->|no| Block["Blocked finding"] S -->|refusal fires| Pass F -->|refusal fires| Pass C -->|refusal fires| PassNegative cases
Three refusals carry the proof
The three refusals in EXPECTED_NEGATIVE_CASES are the substance of the proof, each forcing one discipline in the copied validator to fire. The three refusals in EXPECTED_NEGATIVE_CASES are the substance of the proof. Each forces one discipline in the copied validator to fire.
Survivor-only family must be rejected
A family built from winner rows alone must trip NO_LOSER_FLOWED_THROUGH, NO_NEGATIVE_CONTROL, and SURVIVORSHIP_SAMPLE, or the check records a survivor-only failure. Survivor-only (structural_theses_survivor_only_rejected). _evaluate_negative_exercises builds a family from the winner rows alone, dropping every failed thesis. The copied validator must raise NO_LOSER_FLOWED_THROUGH, NO_NEGATIVE_CONTROL, and SURVIVORSHIP_SAMPLE. If any of the three is missing, the check records BATCH8_STRUCTURAL_THESES_SURVIVOR_ONLY_REJECTED.
Forward-gate breach must be rejected
Appending a refuted pattern as a review_candidate must raise FORWARD_GATE_BREACH, since only a pattern that survived at-time replay may earn that label. Forward-gate breach (structural_theses_forward_gate_breach_rejected). A refuted pattern is appended to the clean family's forward_lens.candidates with a review_candidate research state. Only a pattern that survived at-time replay may earn a review_candidate, so the copied validator must raise FORWARD_GATE_BREACH, tracked as BATCH8_STRUCTURAL_THESES_FORWARD_GATE_BREACH_REJECTED.
Control leak must be rejected
Mutating every control row to claim_confirmed_forward must raise CONTROL_LEAK, so a negative control can never resolve into a confirmed claim. Control leak (structural_theses_control_leak_rejected). Every control row in a copy of the clean family is mutated to claim_confirmed_forward. The copied validator must raise CONTROL_LEAK, tracked as BATCH8_STRUCTURAL_THESES_CONTROL_LEAK_REJECTED.
A missed refusal blocks the entire run
Any expected refusal that does not fire becomes a blocking finding rather than being counted as a pass. If a refusal does not fire, the run records a blocked finding rather than a pass.
Prior Art Grounding
Factor-family, event-study, and survivorship lineage
The shape borrows from empirical-finance validation: Fama-French factor families, MacKinlay event studies, and survivorship-bias control, applied only to public synthetic rows and copied source. The copied source borrows shape from empirical-finance validation. Fama and French's common risk factors work is the precedent for decomposing structural market claims into named factor families and testable rows. MacKinlay's event-study methodology is the prior pattern for separating an event window, an expected baseline, and abnormal-return evidence. Brown, Goetzmann, Ibbotson, and Ross on survivorship bias motivates the required loser and control cases instead of winner-only replay. The bundle keeps the factor-family, event-window, and bias-control shape and applies it only to public synthetic rows and copied source.
Validation Result record Path
Reader-verifiable commands, run from the microcosm-substrate/ public root:
What the three commands verify
The fixture command writes the family result, the bundle command validates source refs and ceiling fields, and the test checks replay and refusals; a pass says nothing about live markets. The first command writes the bounded family result and sign-off JSON. The bundle command validates the copied source refs, digest anchors, public winner/loser/control cases, and the scope limit fields. The test checks family replay, the three refusals, body exclusion, and the claim boundary. A pass means the copied source ran the public fixture and every refusal fired; it means nothing about live markets.
Scope boundary
Scope limit
The strongest supported claim
The evidence supports only that the copied source deterministically resolves the winner, loser, and control family and rejects the three perturbations on public synthetic rows. The strongest claim the evidence supports: the copied structural_theses.py runs the public synthetic winner, loser, and control family deterministically, resolves sob_2015, rmd_2018_loser, and ctrl_2020 with the expected at-time semantics, and rejects the survivor-only, forward-gate-breach, and control-leak perturbations. The proof boundary is deterministic fixture validation over public synthetic rows and copied source refs only. The scope limit holds every *_authorized flag false. This is not financial decisions, an investment recommendation, live-market validation, external model access, portfolio authority, public sharing, or launch. Generated Mermaid and Atlas links are navigation aids and do not raise this ceiling.
Context & evidence
In short Set 8 Structural Theses Bundle imports tools/finance/structural_theses.py as exact copied source and exercises CP1/CP2 thesis-family validation over public synthetic winner, loser, and control rows. It checks source digest parity, anchors, public family evidence, loser evidence, negative controls, survivor-only rejection, forward-gate-breach rejection, control-leak rejection, runtime verdicts, and scope limits while excluding financial decisions, investment recommendations, live market data, external model access, portfolio action, launch, public sharing, and whole-system correctness.
Scope limit Deterministic fixture evidence over public synthetic thesis rows and copied source refs only; no financial decisions, investment recommendation, live-market validation, external model access, portfolio authority, publishing-scope decision, launch-scope decision, or whole-system correctness.
Covers Structural Theses Finance Bundle
Source
Source Source module: src/microcosm_core/organs/batch8_structural_theses_capsule.py · Design note · Source registry