Assumptions
Everything the model believes, stated before the math. If you do not buy one of these, do not buy the output.
- Edges come from documented corpus links only - shared node, shared queue request, shared sponsor. Similarity, proximity or prose resemblance never creates an edge.
- Co-movement is the withdrawal rate among resolved group members: descriptive co-exposure, never a causal claim.
- The cohort (group membership) is frozen from the graph before any outcome is read; the unit of observation is the project.
- Censored members (announced, queued, in-flight) are counted and excluded from the estimate; unresolved statuses are printed, not imputed.
- Withdrawal is attributed at the corpus as-of date; per-member event dates are not available, so timing effects within a group are not estimated.
- A missing link is unresolved - independence is never asserted.
- Below 5 resolved members a co-movement estimate is UNKNOWN, with the reason printed.
Derivation
The structural graph is built from documented links only. Each edge names its shared mechanism (exposure type and shared object) and carries evidence refs; an edge with no named mechanism or no evidence is a violation, not an edge. Groups are the projects sharing one mechanism; membership freezes before outcomes are read.
Per group, the sample accounting prints first: n members, resolved, censored, unresolved. The co-movement estimate is the withdrawal rate among resolved members with a Wilson score interval (z = 1.96):
with p = withdrawn / resolved among the group's resolved members. Below the minimum resolved sample of 5 the rate is UNKNOWN with the reason printed: co-exposure alone is not evidence of joint outcomes.
Layer concentration feeds the portfolio view: per layer, group count, top group size, and the Herfindahl-Hirschman index over group sizes:
A live run prints the graph's composition per layer - edges, exposure groups, uniquely exposed subjects, and per-layer group counts - so the reader sees the shape of the exposure map, not just a total. Projects without node linkage are printed as unresolved links.
Identification strategy
Why the estimate supports the claimed meaning - and where the model refuses to claim more than the data carries.
- The graph is identified structurally: an edge exists only where the corpus documents a shared mechanism. That is what separates this model from price-series correlation or similarity clustering - two projects correlate here because a named thing (this node, this queue request, this sponsor) binds them, and the thing is printed.
- Freezing the cohort before reading outcomes is the anti-selection gate: membership cannot be revised in light of what later happened, so the withdrawal rate cannot be contaminated by ex-post grouping.
- The estimate is a rate among resolved members only, with censored and unresolved counts printed alongside. Reading co-exposure as causation is explicitly forbidden in the assumptions block and gated in the smoke suite: the number says 'projects sharing this mechanism withdrew at this rate', nothing more.
- The Wilson interval is the honest small-sample statement: on a 5-resolved group the interval is wide, and that width is the correct report.
Inputs and outputs
Reads
- Frozen typed graph
- The shared correlation substrate: edges from documented corpus links (node, queue request, sponsor), each with evidence refs
- Cohort definitions
- Project statuses at the as-of date; resolved / censored / unresolved classification
- Coverage and method policy
- Unresolved links printed per subject with field and reason
Writes
- Shared exposure groups with per-group sample accounting (n / resolved / censored / unresolved)
- Co-movement estimates: withdrawal rate with Wilson 95% interval, or UNKNOWN with reason
- Layer concentration inputs per layer (group count, top group size, HHI) for portfolio use
- Unresolved links, printed - never read as independence
- Unique exposure count (deduplicated across layers)
Calibration and gate evidence
Validation design
- Statistical integrity gates (spec 9.18): unit of observation is the project; cohort frozen before outcomes; numerator / denominator / censored / unresolved printed for every estimate.
- Determinism gated: two runs on the same store produce identical input hashes.
Evidence on record
- Smoke gates at seal (9 m22-specific): tool registered and runs; cohort frozen before outcomes with groups printed; groups sorted by size with sample counts printed; small samples UNKNOWN with reason; estimable groups carry a Wilson interval containing the point estimate; concentration inputs per layer; unresolved links printed; determinism (identical input hash on re-run); audit row written for every run.
- The live corpus run at seal completed end-to-end with every layer printed; the figures move with the corpus and are not restated here.
Gates at seal
- smoke 19/19 at seal (9 m22 gates incl. determinism + audit row)
- capabilities 73/73; acceptance 12/12; slice 46/46; hardening 74/74; tsc clean
- standing caveat: no OpenAI key in the build box; adapter paths unexercised
Failure modes
The ways this model declines, degrades or goes UNKNOWN - and what it prints when it does.
- Group under 5 resolved members: withdrawal rate UNKNOWN with the reason printed.
- Project with no documented links: it appears in unresolved links, not in a group - and no independence is asserted.
- Missing capacity or status on a record: the member counts as unresolved, never silently as resolved or censored.
- Similarity-based grouping is architecturally impossible: there is no code path that creates an edge without a named shared mechanism and evidence refs.
Sensitivity
- The minimum resolved sample (5) is the main dial: lowering it would manufacture narrow-looking rates from noise; raising it widens UNKNOWN coverage on small groups.
- Withdrawal attribution at the as-of date means the estimate does not see within-group timing; groups whose members withdrew early versus late read identically.
Iron rules
Never price series. Never causation from co-exposure. Both are stated in the model's assumptions block and gated.
A missing link is unresolved - independence is never asserted.
Source and audit
Written from the sealed model source. Every run is recorded - model version, frozen inputs, input hash, timestamp. There is no unrecorded model execution.