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
24 changes: 21 additions & 3 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 / 0274 / 0275) are computed in `lineageweave/leftover_pairs.py` from the
0163 / 0164 / 0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273 / 0274 / 0275 / 0276 / 0277 / 0278 / 0279) 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 @@ -317,8 +317,26 @@ the pair-row `U²/R²` badge matches the graphic; a missing or non-finite
segments with persisted leftover-map cross share `x` so
the pair-row `2R̂U/R²` badge matches the graphic; a missing or non-finite
`x` omits that leftover-map cross share caption and does not invent
`x` from `R̂`, `U`, and `R` or from plotted coordinates. When `R`, `R̂`, `U`, `x`,
`s`, and `e` are finite, `e + s + x = 1`. When coordinates,
`x` from `R̂`, `U`, and `R` or from plotted coordinates. ADR 0276 captions leftover-map pair
segments with persisted leftover-map unexplained leftover `U` so
the pair-row `U` badge matches the graphic; a missing or non-finite
`U` omits that unexplained leftover caption and does not invent
`U` from `R` and `R̂` or from plotted coordinates. ADR 0277 captions leftover-map pair
segments with persisted leftover residual `R` so the pair-row residual
badge matches the graphic; a missing or non-finite `R` omits that leftover
residual caption and does not invent `R` from `Y` and `E`, from `U` and
`R̂`, or from plotted coordinates. ADR 0278 captions leftover-map pair
segments with persisted leftover observed `Y` so the pair-row `Y` badge
matches the graphic; a missing or non-finite `Y` omits that leftover
observed caption and does not invent `Y` from `R` and `E` or from plotted
coordinates. ADR 0279 captions leftover-map pair
segments with persisted leftover expected `E` so the pair-row `E` badge
matches the graphic; a missing or non-finite `E` omits that leftover
expected caption and does not invent `E` from `Y` and `R` or from plotted
coordinates. When `R`, `R̂`, `U`, `x`,
`s`, and `e` are finite, `e + s + x = 1`. When `Y`, `E`, and `R` are
finite, `Y − E = R`. When `R`, `R̂`, and `U` are
finite, `U + R̂ = R`. When coordinates,
reconstruction, and distance are finite, `R̂ = ξ · ζ` and
`d = ‖ξ − ζ‖`. The pairs sit above the member
list so a click opens that post with the leftover criterion current
Expand Down
8 changes: 6 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 / 0274 / 0275) persist to `report_leftover_pair` with signed residual `R`,
0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273 / 0274 / 0275 / 0276 / 0277 / 0278 / 0279) 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 @@ -653,7 +653,11 @@ captions leftover-map pair segments with persisted leftover-map
explained leftover share `e`. ADR 0274 captions leftover-map pair
segments with persisted leftover-map unexplained leftover share `s`.
ADR 0275 captions leftover-map pair segments with persisted leftover-map
cross share `x`. Click a post marker or a pair button
cross share `x`. ADR 0276 captions leftover-map pair segments with persisted leftover-map
unexplained leftover `U`. ADR 0277 captions leftover-map pair segments with persisted leftover
residual `R`. ADR 0278 captions leftover-map pair segments with persisted leftover
observed `Y`. ADR 0279 captions leftover-map pair segments with persisted leftover
expected `E`. 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
17 changes: 17 additions & 0 deletions CHANGELOG.d/2.33.0-leftover-map-segment-unexplained-leftover.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## 2.33.0 — Leftover-map unexplained leftover on graphic-display pair segments

- Caption leftover-map graphic-display pair segments with persisted
leftover-map unexplained leftover `U = R − R̂` (ADR 0276). 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, pair segments that match `U²/R²` on the
pair row, pair segments that match `2R̂U/R²` on the pair row, and
pair segments that match `U` on the pair row; click a post marker or
a pair button opens that post. A missing or non-finite `U` omits that
unexplained leftover caption. A finite negative leftover is shown;
do not clamp to nonnegative. Do not invent `U` from `R` and `R̂` or
from plotted coordinates. Never invent a leftover score. Never invent
a theta. No new columns.
18 changes: 18 additions & 0 deletions CHANGELOG.d/2.34.0-leftover-map-segment-residual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## 2.34.0 — Leftover residual on graphic-display pair segments

- Caption leftover-map graphic-display pair segments with persisted
leftover residual `R = Y − E[Y|θ, item]` (ADR 0277). 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, pair segments that match `U²/R²` on the
pair row, pair segments that match `2R̂U/R²` on the pair row, pair
segments that match `U` on the pair row, and pair segments that match
`R` on the pair row; click a post marker or a pair button opens that
post. A missing or non-finite `R` omits that leftover residual caption.
A finite negative leftover is shown; do not clamp to nonnegative. Do
not invent `R` from `Y` and `E`, from `U` and `R̂`, or from plotted
coordinates. Never invent a leftover score. Never invent a theta. No
new columns.
18 changes: 18 additions & 0 deletions CHANGELOG.d/2.35.0-leftover-map-segment-observed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## 2.35.0 — Leftover observed Y on graphic-display pair segments

- Caption leftover-map graphic-display pair segments with persisted
leftover observed `Y` (ADR 0278). 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, pair segments that match `U²/R²` on the pair row,
pair segments that match `2R̂U/R²` on the pair row, pair segments
that match `U` on the pair row, pair segments that match `R` on the
pair row, and pair segments that match `Y` on the pair row; click a
post marker or a pair button opens that post. A missing or
non-finite `Y` omits that leftover observed caption. A finite
negative observed is shown; do not clamp to nonnegative. Do not
invent `Y` from `R` and `E` or from plotted coordinates. Never invent
a leftover score. Never invent a theta. No new columns.
19 changes: 19 additions & 0 deletions CHANGELOG.d/2.36.0-leftover-map-segment-expected.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## 2.36.0 — Leftover expected E on graphic-display pair segments

- Caption leftover-map graphic-display pair segments with persisted
leftover expected `E[Y|θ, item]` (ADR 0279). 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, pair segments that match `U²/R²` on the pair row,
pair segments that match `2R̂U/R²` on the pair row, pair segments
that match `U` on the pair row, pair segments that match `R` on the
pair row, pair segments that match `Y` on the pair row, and pair
segments that match `E` on the pair row; click a post marker or a
pair button opens that post. A missing or non-finite `E` omits that
leftover expected caption. A finite negative expected is shown; do
not clamp to nonnegative. Do not invent `E` from `Y` and `R` or from
plotted coordinates. Never invent a leftover score. Never invent a
theta. No new columns.
69 changes: 69 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,75 @@ 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 expected `E[Y|θ, item]` (ADR 0279 /
v2.36.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, pair segments that
match `U²/R²` on the pair row, pair segments that match `2R̂U/R²` on
the pair row, pair segments that match `U` on the pair row, pair
segments that match `R` on the pair row, pair segments that match `Y`
on the pair row, and pair segments that match `E` on the pair row;
click a post marker or a pair button opens that post. A missing or
non-finite `E` omits that leftover expected caption. A finite
negative expected is shown; do not clamp to nonnegative. Do not
invent `E` from `Y` 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 observed `Y` (ADR 0278 / v2.35.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, pair segments that
match `U²/R²` on the pair row, pair segments that match `2R̂U/R²` on
the pair row, pair segments that match `U` on the pair row, pair
segments that match `R` on the pair row, and pair segments that match
`Y` on the pair row; click a post marker or a pair button opens that
post. A missing or non-finite `Y` omits that leftover observed
caption. A finite negative observed is shown; do not clamp to
nonnegative. Do not invent `Y` from `R` and `E` 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 residual `R = Y − E[Y|θ, item]`
(ADR 0277 / v2.34.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, pair
segments that match `U²/R²` on the pair row, pair segments that match
`2R̂U/R²` on the pair row, pair segments that match `U` on the pair
row, and pair segments that match `R` on the pair row; click a post
marker or a pair button opens that post. A missing or non-finite `R`
omits that leftover residual caption. A finite negative leftover is
shown; do not clamp to nonnegative. Do not invent `R` from `Y` and
`E`, 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 unexplained leftover
`U = R − R̂` (ADR 0276 / v2.33.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, pair segments that match `U²/R²` on the pair row,
pair segments that match `2R̂U/R²` on the pair row, and pair
segments that match `U` on the pair row; click a post marker or a
pair button opens that post. A missing or non-finite `U` omits that
unexplained leftover caption. A finite negative leftover is shown;
do not clamp to nonnegative. Do not invent `U` from `R` 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 cross share
`x = 2 R̂ U / R²` (ADR 0275 / v2.32.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 / 0274 / 0275), occupational construct catalog search
(ADR 0048–0164 / 0182 / 0185 / 0201 / 0233 / 0266 / 0267 / 0268 / 0269 / 0270 / 0271 / 0272 / 0273 / 0274 / 0275 / 0276 / 0277 / 0278 / 0279), 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
14 changes: 12 additions & 2 deletions docs/adr/0048-persist-lsirm-leftover-pairs.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@
[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 0274](0274-leftover-map-segment-unexplained-share.md) (leftover-map unexplained leftover share on pair segments);
[ADR 0275](0275-leftover-map-segment-cross-share.md) (leftover-map cross share on pair segments)
[ADR 0275](0275-leftover-map-segment-cross-share.md) (leftover-map cross share on pair segments);
[ADR 0276](0276-leftover-map-segment-unexplained-leftover.md) (leftover-map unexplained leftover on pair segments);
[ADR 0277](0277-leftover-map-segment-residual.md) (leftover residual on pair segments);
[ADR 0278](0278-leftover-map-segment-observed.md) (leftover observed Y on pair segments);
[ADR 0279](0279-leftover-map-segment-expected.md) (leftover expected E on pair segments)

## Context

Expand Down Expand Up @@ -84,7 +88,13 @@ leftover-map pair segments with persisted leftover-map explained leftover
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. ADR 0275 captions leftover-map pair segments with
persisted leftover-map cross share `x`; it adds no columns.
persisted leftover-map cross share `x`; it adds no columns. ADR 0276
captions leftover-map pair segments with persisted leftover-map
unexplained leftover `U`; it adds no columns. ADR 0277 captions leftover-map
pair segments with persisted leftover residual `R`; it adds no columns.
ADR 0278 captions leftover-map pair segments with persisted leftover
observed `Y`; it adds no columns. ADR 0279 captions leftover-map pair
segments with persisted leftover expected `E`; 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
20 changes: 18 additions & 2 deletions docs/adr/0049-leftover-pair-report-ui.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
[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 0274](0274-leftover-map-segment-unexplained-share.md) (leftover-map unexplained leftover share on pair segments);
[ADR 0275](0275-leftover-map-segment-cross-share.md) (leftover-map cross share on pair segments)
[ADR 0275](0275-leftover-map-segment-cross-share.md) (leftover-map cross share on pair segments);
[ADR 0276](0276-leftover-map-segment-unexplained-leftover.md) (leftover-map unexplained leftover on pair segments);
[ADR 0277](0277-leftover-map-segment-residual.md) (leftover residual on pair segments);
[ADR 0278](0278-leftover-map-segment-observed.md) (leftover observed Y on pair segments);
[ADR 0279](0279-leftover-map-segment-expected.md) (leftover expected E on pair segments)

## Context

Expand Down Expand Up @@ -51,7 +55,11 @@ 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). Pair segments name persisted leftover-map
unexplained leftover share `s` (ADR 0274). Pair segments name persisted leftover-map
cross share `x` (ADR 0275). The pair renders every available finite measurement.
cross share `x` (ADR 0275). Pair segments name persisted leftover-map
unexplained leftover `U` (ADR 0276). Pair segments name persisted leftover
residual `R` (ADR 0277). Pair segments name persisted leftover observed
`Y` (ADR 0278). Pair segments name persisted leftover expected
`E` (ADR 0279). 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 @@ -92,6 +100,14 @@ Leftover-map unexplained leftover share on pair segments is
[ADR 0274](0274-leftover-map-segment-unexplained-share.md).
Leftover-map cross share on pair segments is
[ADR 0275](0275-leftover-map-segment-cross-share.md).
Leftover-map unexplained leftover on pair segments is
[ADR 0276](0276-leftover-map-segment-unexplained-leftover.md).
Leftover residual on pair segments is
[ADR 0277](0277-leftover-map-segment-residual.md).
Leftover observed Y on pair segments is
[ADR 0278](0278-leftover-map-segment-observed.md).
Leftover expected E on pair segments is
[ADR 0279](0279-leftover-map-segment-expected.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
8 changes: 6 additions & 2 deletions docs/adr/0182-leftover-map-unexplained.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
**Date:** 2026-08-24

**Amended by:** [ADR 0201](0201-leftover-map-reconstruction.md)
(two-axis reconstruction R̂)
(two-axis reconstruction R̂);
[ADR 0276](0276-leftover-map-segment-unexplained-leftover.md)
(leftover-map unexplained leftover on graphic-display pair segments)

Amends [ADR 0048](0048-persist-lsirm-leftover-pairs.md) and
[ADR 0049](0049-leftover-pair-report-ui.md).
Expand Down Expand Up @@ -73,7 +75,9 @@ score. Do not invent a theta.
`GET /api/reports/{grouping}/{period}` returns
`leftover_map_unexplained`. After `make seed`, closest and farthest
leftover pairs sit above the member list with named `U` next to `d`;
click opens that post. Hidden posts stay hidden.
click opens that post. Hidden posts stay hidden. ADR 0276
captions leftover-map graphic-display pair segments with the same
persisted leftover-map unexplained leftover; it adds no columns.

## Related

Expand Down
Loading