Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ stops startup instead of leaving a healthy-looking partial schema, and
application code must not compensate for a missing table.

Period leftover pairs (ADR 0017 / 0018 / 0048 / 0049 / 0119 / 0158 / 0162 /
0163 / 0164 / 0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273) are computed in `lineageweave/leftover_pairs.py` from the
0163 / 0164 / 0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273 / 0274) are computed in `lineageweave/leftover_pairs.py` from the
residual after a real GRM/GPCM score, never invented. Distances are
Euclidean on the two-dimensional Gabriel leftover map; missing cells stay
out of the factorization. Closest and farthest post–criterion pairs
Expand Down Expand Up @@ -309,7 +309,11 @@ coordinates. ADR 0273 captions leftover-map pair segments with persisted
leftover-map explained leftover share `e` so the pair-row `R̂²/R²`
badge matches the graphic; a missing or non-finite `e` omits that
explained leftover share caption and does not invent `e` from `R̂` and
`R` or from plotted coordinates. When `R`, `R̂`, `U`, `x`,
`R` or from plotted coordinates. ADR 0274 captions leftover-map pair
segments with persisted leftover-map unexplained leftover share `s` so
the pair-row `U²/R²` badge matches the graphic; a missing or non-finite
`s` omits that unexplained leftover share caption and does not invent
`s` from `U` and `R` or from plotted coordinates. When `R`, `R̂`, `U`, `x`,
`s`, and `e` are finite, `e + s + x = 1`. When coordinates,
reconstruction, and distance are finite, `R̂ = ξ · ζ` and
`d = ‖ξ − ζ‖`. The pairs sit above the member
Expand Down
5 changes: 3 additions & 2 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@ information at the group's mean θ (Lord, 1980 max-info CAT). Rankings
persist to `report_item_information`. After those IRT main effects,
residual SVD leftover pairs on two Gabriel axes (Jeon et al., 2021;
ADR 0017 / 0048 / 0049 / 0119 / 0148 / 0158 / 0162 / 0163 / 0164 / 0168 /
0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273) persist to `report_leftover_pair` with signed residual `R`,
0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273 / 0274) persist to `report_leftover_pair` with signed residual `R`,
observed `Y`, expected `E[Y|θ, item]`, full leftover-map rank, unexplained
leftover, ADR 0201 reconstruction evidence, ADR 0185 cross-share evidence,
ADR 0233 unexplained leftover share `s`, ADR 0266 explained leftover
Expand All @@ -650,7 +650,8 @@ badge matches the plot. ADR 0271 captions leftover-map pair segments
with persisted leftover-map distance `d`. ADR 0272 captions leftover-map
pair segments with persisted leftover-map reconstruction `R̂`. ADR 0273
captions leftover-map pair segments with persisted leftover-map
explained leftover share `e`. Click a post marker or a pair button
explained leftover share `e`. ADR 0274 captions leftover-map pair
segments with persisted leftover-map unexplained leftover share `s`. Click a post marker or a pair button
opens that post. Those ADRs are the normative mathematical, storage, and
display contracts. Leftover-map axis share
(Gabriel inertia of residual SVD axes 1 and 2; ADR 0148) persists to
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.d/2.31.0-leftover-map-segment-unexplained-share.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## 2.31.0 — Leftover-map unexplained leftover share on graphic-display pair segments

- Caption leftover-map graphic-display pair segments with persisted
leftover-map unexplained leftover share `s = U² / R²` (ADR 0274). After
`make seed`, closest and farthest leftover pairs sit above the member
list with the Gabriel biplot of already-named coordinates, leftover-map
axis share when finite, axis ticks that match `ξ (x, y) ζ (x, y)` on
the pair row, pair segments that match `d` on the pair row, pair
segments that match `R̂` on the pair row, pair segments that match
`R̂²/R²` on the pair row, and pair segments that match `U²/R²` on the
pair row; click a post marker or a pair button opens that post. A
missing or non-finite `s` omits that unexplained leftover share
caption. A share greater than 1 is shown, never clamped. Do not invent
`s` from `U` and `R` or from plotted coordinates. Never invent a
leftover score. Never invent a theta. No new columns.
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,21 @@ All notable changes to this project are documented here. Format follows

### Added

- Period leftover pairs now caption leftover-map graphic-display pair
segments with persisted leftover-map unexplained leftover share
`s = U² / R²` (ADR 0274 / v2.31.0). After `make seed`, closest and
farthest leftover pairs sit above the member list with the Gabriel
biplot of already-named coordinates, leftover-map axis share when
finite, axis ticks that match `ξ (x, y) ζ (x, y)` on the pair row,
pair segments that match `d` on the pair row, pair segments that
match `R̂` on the pair row, pair segments that match `R̂²/R²` on
the pair row, and pair segments that match `U²/R²` on the pair
row; click a post marker or a pair button opens that post. A
missing or non-finite `s` omits that unexplained leftover share
caption. A share greater than 1 is shown, never clamped. Do not
invent `s` from `U` and `R` or from plotted coordinates. Never
invent a leftover score or a theta. No new columns.

- Period leftover pairs now caption leftover-map graphic-display pair
segments with persisted leftover-map explained leftover share
`e = R̂² / R²` (ADR 0273 / v2.30.0). After `make seed`, closest and
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ cutoff. Global Ask optional `knowledge_cutoff` uses the same cover

Create/start endpoint rules (ADR 0017 / 0021), tie-vs-miss similarity
(ADR 0026), R&R catalog ids (ADR 0019 / 0027), leftover pairs
(ADR 0048–0164 / 0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273), occupational construct catalog search
(ADR 0048–0164 / 0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273 / 0274), occupational construct catalog search
(ADR 0257), the text-channel embedding swap and cosine
clamp (ADR 0190), per-edge channel-score persistence (ADR 0195),
token-backed status notices (ADR 0220),
Expand Down
7 changes: 5 additions & 2 deletions docs/adr/0048-persist-lsirm-leftover-pairs.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
[ADR 0270](0270-leftover-map-coordinate-ticks.md) (leftover-map coordinate ticks);
[ADR 0271](0271-leftover-map-segment-distance.md) (leftover-map distance on pair segments);
[ADR 0272](0272-leftover-map-segment-reconstruction.md) (leftover-map reconstruction on pair segments);
[ADR 0273](0273-leftover-map-segment-explained-share.md) (leftover-map explained leftover share on pair segments)
[ADR 0273](0273-leftover-map-segment-explained-share.md) (leftover-map explained leftover share on pair segments);
[ADR 0274](0274-leftover-map-segment-unexplained-share.md) (leftover-map unexplained leftover share on pair segments)

## Context

Expand Down Expand Up @@ -79,7 +80,9 @@ pair segments with persisted leftover-map distance `d`; it adds no
columns. ADR 0272 captions leftover-map pair segments with persisted
leftover-map reconstruction `R̂`; it adds no columns. ADR 0273 captions
leftover-map pair segments with persisted leftover-map explained leftover
share `e`; it adds no columns.
share `e`; it adds no columns. ADR 0274 captions leftover-map pair
segments with persisted leftover-map unexplained leftover share `s`; it
adds no columns.

Cascade the rows with `report_period_score`. A leftover post must
also be a `report_member_score` row, and the leftover criterion
Expand Down
8 changes: 6 additions & 2 deletions docs/adr/0049-leftover-pair-report-ui.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
[ADR 0270](0270-leftover-map-coordinate-ticks.md) (leftover-map coordinate ticks);
[ADR 0271](0271-leftover-map-segment-distance.md) (leftover-map distance on pair segments);
[ADR 0272](0272-leftover-map-segment-reconstruction.md) (leftover-map reconstruction on pair segments);
[ADR 0273](0273-leftover-map-segment-explained-share.md) (leftover-map explained leftover share on pair segments)
[ADR 0273](0273-leftover-map-segment-explained-share.md) (leftover-map explained leftover share on pair segments);
[ADR 0274](0274-leftover-map-segment-unexplained-share.md) (leftover-map unexplained leftover share on pair segments)

## Context

Expand Down Expand Up @@ -47,7 +48,8 @@ when finite (ADR 0269). Leftover-map axis ticks name persisted `ξ` /
`ζ` coordinates (ADR 0270). Pair segments name persisted leftover-map
distance `d` (ADR 0271). Pair segments name persisted leftover-map
reconstruction `R̂` (ADR 0272). Pair segments name persisted leftover-map
explained leftover share `e` (ADR 0273). The pair renders every available finite measurement.
explained leftover share `e` (ADR 0273). Pair segments name persisted leftover-map
unexplained leftover share `s` (ADR 0274). The pair renders every available finite measurement.
The next action uses the first available value in the priority below; no
amendment hides another badge, rank 0
explicitly names no leftover structure, and unexplained leftover names
Expand Down Expand Up @@ -84,6 +86,8 @@ Leftover-map reconstruction on pair segments is
[ADR 0272](0272-leftover-map-segment-reconstruction.md).
Leftover-map explained leftover share on pair segments is
[ADR 0273](0273-leftover-map-segment-explained-share.md).
Leftover-map unexplained leftover share on pair segments is
[ADR 0274](0274-leftover-map-segment-unexplained-share.md).

After `make seed`, closest and farthest leftover pairs sit above the
member list. Click a pair to open that post with the leftover
Expand Down
4 changes: 3 additions & 1 deletion docs/adr/0233-leftover-map-unexplained-share.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
**Date:** 2026-08-27

**Amended by:** [ADR 0266](0266-leftover-map-explained-share.md)
(explained leftover share e)
(explained leftover share e);
[ADR 0274](0274-leftover-map-segment-unexplained-share.md)
(leftover-map unexplained leftover share on graphic-display pair segments)

Amends [ADR 0048](0048-persist-lsirm-leftover-pairs.md) and
[ADR 0049](0049-leftover-pair-report-ui.md). Independent of leftover-map
Expand Down
7 changes: 5 additions & 2 deletions docs/adr/0268-leftover-map-graphic-display.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
[ADR 0272](0272-leftover-map-segment-reconstruction.md)
(leftover-map reconstruction on pair segments);
[ADR 0273](0273-leftover-map-segment-explained-share.md)
(leftover-map explained leftover share on pair segments)
(leftover-map explained leftover share on pair segments);
[ADR 0274](0274-leftover-map-segment-unexplained-share.md)
(leftover-map unexplained leftover share on pair segments)

Amends [ADR 0049](0049-leftover-pair-report-ui.md) and
[ADR 0267](0267-leftover-map-coordinates.md). Independent of leftover-map
Expand Down Expand Up @@ -89,7 +91,8 @@ leftover-map axes when finite (ADR 0269). Leftover-map axis ticks name
persisted `ξ` / `ζ` coordinates (ADR 0270). Pair segments name
persisted leftover-map distance `d` (ADR 0271). Pair segments name
persisted leftover-map reconstruction `R̂` (ADR 0272). Pair segments name
persisted leftover-map explained leftover share `e` (ADR 0273). When coordinates, reconstruction, and
persisted leftover-map explained leftover share `e` (ADR 0273). Pair segments name
persisted leftover-map unexplained leftover share `s` (ADR 0274). When coordinates, reconstruction, and
distance are all finite, `R̂ = ξ_{1:2} · ζ_{1:2}` and
`d = ‖ξ_{1:2} − ζ_{1:2}‖` remain the same identities already
persisted by ADR 0267.
Expand Down
6 changes: 5 additions & 1 deletion docs/adr/0273-leftover-map-segment-explained-share.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
**Decision status:** Accepted
**Date:** 2026-08-29

**Amended by:** [ADR 0274](0274-leftover-map-segment-unexplained-share.md)
(leftover-map unexplained leftover share on pair segments)

Amends [ADR 0268](0268-leftover-map-graphic-display.md) and
[ADR 0049](0049-leftover-pair-report-ui.md). Independent of leftover-map
reconstruction on pair segments
Expand Down Expand Up @@ -84,7 +87,8 @@ and `ζ`, leftover-map axes name persisted Gabriel inertia share when
finite, leftover-map axis ticks name the same coordinates shown on
the pair row, pair segments name persisted leftover-map distance `d`,
persisted leftover-map reconstruction `R̂`, and persisted leftover-map
explained leftover share `e`; click a post marker or a pair button
explained leftover share `e`, and pair segments name persisted leftover-map
unexplained leftover share `s` (ADR 0274); click a post marker or a pair button
opens that post. Hidden posts stay hidden. Rank-0 unused axes still
plot at the origin, still name zero leftover-map axis share with a `0`
tick, still name `d 0.00` when that distance is persisted, still name
Expand Down
132 changes: 132 additions & 0 deletions docs/adr/0274-leftover-map-segment-unexplained-share.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# ADR 0274 — Name leftover-map unexplained leftover share on graphic-display pair segments

**Decision status:** Accepted
**Date:** 2026-08-29

Amends [ADR 0268](0268-leftover-map-graphic-display.md) and
[ADR 0049](0049-leftover-pair-report-ui.md). Independent of leftover-map
explained leftover share on pair segments
([ADR 0273](0273-leftover-map-segment-explained-share.md)), leftover-map
reconstruction on pair segments
([ADR 0272](0272-leftover-map-segment-reconstruction.md)), leftover-map
distance on pair segments ([ADR 0271](0271-leftover-map-segment-distance.md)),
leftover-map coordinate ticks ([ADR 0270](0270-leftover-map-coordinate-ticks.md)),
leftover-map axis share on the graphic display
([ADR 0269](0269-leftover-map-axis-share-plot.md)), leftover-map
explained leftover share persistence
([ADR 0266](0266-leftover-map-explained-share.md)), leftover-map
unexplained leftover share persistence
([ADR 0233](0233-leftover-map-unexplained-share.md)), leftover-map
reconstruction persistence ([ADR 0201](0201-leftover-map-reconstruction.md)),
and leftover-map axis share persistence ([ADR 0148](0148-leftover-map-axis-share.md)).

## Context

ADR 0233 already persists leftover-map unexplained leftover share
`s = U² / R²` of raw residual after two-axis Gabriel reconstruction.
ADR 0182 already persists unexplained leftover `U`. ADR 0273 already
names persisted leftover-map explained leftover share `e` on the
leftover-map graphic-display pair segment. The segment still has no
unexplained leftover share label, so a buyer who reads `U²/R² 0.02`
on the pair row cannot match that square share to the graphic pair.
Hiding `s` on the segment lets leftover-map reconstruction `R̂`,
leftover residual `R`, unexplained leftover `U`, or leftover-map
explained leftover share `e` be read as the leftover the truncated map
cannot reconstruct even after `e` is named on the segment. When `R`,
`R̂`, `U`, `x`, `s`, and `e` are finite, `e + s + x = 1`; the graphic
must name the same persisted `s` the pair row already shows.

This increment names leftover-map graphic-display pair segments with
persisted leftover-map unexplained leftover share. It does not add
columns. It does not recompute `s` from `U` and `R` or from plotted
coordinates. It does not persist leftover-map inner product, cosine, or
length as separate columns. It does not land Post quality on the leftover
criterion. Leftover-map distance stays two-axis Euclidean. Do not invent
a leftover score. Do not invent a theta.

The dashboard stack already used neighbouring leftover facts under
other numbers. This protected increment uses **0274** so it does not
collide with leftover-map explained leftover share on pair segments
(0273), leftover-map reconstruction on pair segments (0272), leftover-map
distance on pair segments (0271), leftover-map coordinate ticks (0270),
leftover-map axis share on the graphic display (0269), leftover-map
graphic display (0268), leftover-map coordinates (0267 / migration 0245),
leftover-map explained leftover share persistence (0266 / migration 0244),
leftover-map unexplained leftover share persistence (0233 / migration
0233), leftover-map reconstruction persistence (0201 / migration 0206),
leftover-map cross share (0185), leftover residual disclosure, leftover
observed `Y` / expected `E`, leftover-map rank, two-axis leftover-map
distance persistence, leftover coverage, leftover-map axis share
persistence (0148), leftover interaction-map persistence, occupational
construct catalog search (0265), or the dashboard stacks.

## Decision

On the leftover-map graphic display, caption each closest or farthest
pair segment with the same persisted leftover-map unexplained leftover
share formatter as the pair-row `U²/R²` badge. A missing or
non-finite `s` omits that unexplained leftover share caption and keeps
the connecting line and any leftover-map distance, reconstruction, or
explained leftover share caption. Rank-0 origin cells still name
`U²/R² 0.00` when that persisted share is finite. A finite share
greater than 1 is shown, never clamped. Do not invent `s` from `U` and
`R` or from plotted coordinates. Click a post marker to open that post.
Criterion markers are not post buttons. The grouping comparison strip
(ADR 0149) stays on its reduced leftover payload and does not gain these
unexplained leftover share captions.

Do not add SQL. Do not edit shipped migrations. Do not persist inner
product, cosine, or length as separate columns. Do not invent a leftover
score. Do not invent a theta.

## Consequences

After `make seed`, closest and farthest leftover pairs sit above the
member list with the leftover-map graphic display of persisted `ξ`
and `ζ`, leftover-map axes name persisted Gabriel inertia share when
finite, leftover-map axis ticks name the same coordinates shown on
the pair row, pair segments name persisted leftover-map distance `d`,
persisted leftover-map reconstruction `R̂`, persisted leftover-map
explained leftover share `e`, and persisted leftover-map unexplained
leftover share `s`; click a post marker or a pair button opens that
post. Hidden posts stay hidden. Rank-0 unused axes still plot at the
origin, still name zero leftover-map axis share with a `0` tick, still
name `d 0.00` when that distance is persisted, still name `R̂ 0.00`
when that reconstruction is persisted, still name `R̂²/R² 0.00` when
that explained leftover share is persisted, and still name `U²/R² 0.00`
when that unexplained leftover share is persisted. When `R`, `R̂`, `U`,
`x`, `s`, and `e` are all finite, `e + s + x = 1` remains the same
identity already persisted by ADR 0233 and ADR 0266.

## Related

Independent of leftover interaction-map persistence, leftover-criterion
evaluation landing, leftover residual disclosure, leftover observed
`Y` / expected `E`, leftover-map complete-case coverage, leftover-map
axis share persistence, leftover pairs on the grouping comparison
strip, two-axis leftover-map distance persistence, leftover-map rank,
leftover-map inner product, leftover-map cosine, leftover-map length,
leftover-map reconstruction persistence, leftover-map unexplained
leftover, leftover-map cross share, leftover-map unexplained leftover
share persistence, leftover-map explained leftover share persistence,
leftover-map coordinate persistence, leftover-map graphic display,
leftover-map axis share on the graphic display, leftover-map coordinate
ticks, leftover-map distance on pair segments, leftover-map reconstruction
on pair segments, leftover-map explained leftover share on pair segments,
and leftover-map cross share on pair segments.

## References

Gabriel, K. R. (1971). The biplot graphic display of matrices with
application to principal component analysis. *Biometrika, 58*(3),
453–467. https://doi.org/10.1093/biomet/58.3.453

Jeon, M., Jin, I. H., Schweinberger, M., & Baugh, S. (2021). Mapping
unobserved item–respondent interactions: A latent space item response
model with interaction map. *Psychometrika, 86*(2), 378–403.
https://doi.org/10.1007/s11336-021-09762-5
(LSIRM interaction `−γ‖ξ_j − ζ_i‖` after main effects
`α_j − β_i`; typically `p = 2` for the interaction map. Gabriel
reconstruction of the leftover cell is the two-axis inner product
`R̂ = ξ_{1:2} · ζ_{1:2}`. Unexplained leftover share is the square share
`s = U² / R²` of the leftover the truncated map cannot reconstruct.)
Loading