Skip to content
Draft
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
12 changes: 11 additions & 1 deletion 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 / 0276 / 0277 / 0278 / 0279 / 0280 / 0281 / 0282 / 0283 / 0284 / 0285 / 0286 / 0287 / 0288 / 0289 / 0290 / 0291 / 0292 / 0293 / 0294 / 0295 / 0296 / 0297 / 0298 / 0299 / 0300 / 0301 / 0302 / 0303 / 0304 / 0305 / 0306 / 0307 / 0308 / 0309 / 0310 / 0311 / 0312 / 0313 / 0314 / 0315 / 0316 / 0317 / 0318 / 0319 / 0320 / 0321 / 0322 / 0323 / 0324) 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 / 0280 / 0281 / 0282 / 0283 / 0284 / 0285 / 0286 / 0287 / 0288 / 0289 / 0290 / 0291 / 0292 / 0293 / 0294 / 0295 / 0296 / 0297 / 0298 / 0299 / 0300 / 0301 / 0302 / 0303 / 0304 / 0305 / 0306 / 0307 / 0308 / 0309 / 0310 / 0311 / 0312 / 0313 / 0314 / 0315 / 0316 / 0317 / 0318 / 0319 / 0320 / 0321 / 0322 / 0323 / 0324 / 0325) 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 @@ -661,6 +661,13 @@ values `σ_k` when leftoverMapPlotAxisBadge returns a usable leftover-map axis c
Distinct accessible name `leftover-map axis {axis} σ {value} ({share}%)`. Share and
singular value omit independently. Rank-0 unused axes still name leftover-map axis
`σ 0.00`. Do not invent leftover-map singular values from leftover-map axis share.
ADR 0325 captions leftover-axis report badges with persisted leftover-map singular
values `σ_k` independently of leftover-map axis share when leftoverMapAxisBadge
returns a usable leftover-axis caption. Distinct accessible name
`leftover axis {axis} σ {value}`. Share and singular value omit independently.
Rank-0 unused axes still name leftover-axis `σ 0.00`. Do not invent leftover-map
singular values from leftover-map axis share. Do not invent leftover-map axis
share from leftover-map singular values.
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
Expand Down Expand Up @@ -768,6 +775,9 @@ singular values `σ_k` when leftoverMapCompareAxisBadge returns a usable leftove
Leftover-map graphic-display leftover-map singular values (ADR 0324) captions leftover-map
graphic-display axes with persisted leftover-map singular values `σ_k` when leftoverMapPlotAxisBadge
returns a usable leftover-map axis caption.
Leftover-axis report badge leftover-map singular values independently of leftover-map axis share
(ADR 0325) captions leftover-axis report badges with persisted leftover-map singular values
`σ_k` when leftoverMapAxisBadge returns a usable leftover-axis caption.
Item complete-case coverage
(ADR 0282) captions the leftover-map graphic with how many scored criteria
entered the map. Item complete-case coverage on the pair list (ADR 0285)
Expand Down
5 changes: 4 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -756,6 +756,8 @@ ADR 0323 captions leftover-axis report badges on the grouping comparison strip
with persisted leftover-map singular values `σ_k`.
ADR 0324 captions leftover-map graphic-display axes with persisted leftover-map
singular values `σ_k`.
ADR 0325 captions leftover-axis report badges with persisted leftover-map
singular values `σ_k` independently of leftover-map axis share.
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
Expand Down Expand Up @@ -809,7 +811,8 @@ graphic (ADR 0320), leftover-map singular values on the grouping comparison left
graphic (ADR 0321), leftover-map singular values on leftover-axis report badges
(ADR 0322), leftover-map singular values on leftover-axis report badges on the
grouping comparison strip (ADR 0323), leftover-map singular values on leftover-map
graphic-display axes (ADR 0324);
graphic-display axes (ADR 0324), leftover-map singular values on leftover-axis
report badges independently of leftover-map axis share (ADR 0325);
`POST .../rebuild` scores every grouping kind (post_admin). `make seed`
folds A-100/B-200 Event Lineage fixtures (and the Riverbend calendar
post) that already have constructed IRT cells into the same shared
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.d/2.82.0-leftover-map-axis-singular-only.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## 2.82.0 — Leftover-map singular values on leftover-axis report badges independently of leftover-map axis share

- Caption leftover-axis report badges with persisted leftover-map singular
values `σ_k` independently of leftover-map axis share (ADR 0325). After
`make seed`, leftover-axis report badges name persisted leftover-map
singular values when finite even when leftover-map axis share is omitted;
click a leftover pair opens that post. A missing or non-finite leftover-map
axis share omits that share caption and keeps `leftover axis {k} σ {value}`.
A missing, non-finite, or negative singular value omits that `σ` badge and
keeps `leftover axis {k} {share}%`. Rank-0 unused axes still name `σ 0.00`.
Leftover-axis report badges stay `leftover axis {k} σ {value}` when share is
omitted so they stay distinct from leftover-axis
`leftover axis {k} σ {value} {share}%`, from hyphen
`leftover-map axis {k} σ {value}`, from comparison leftover-axis
`leftover map comparison leftover axis {k} σ {value}`, and from comparison
graphic `leftover map comparison graphic leftover-map axis {k} σ {value}`.
Do not invent `σ_k` from leftover-map axis share. Do not invent leftover-map
axis share from `σ_k`. This increment does not change leftover-map singular
values on leftover-map graphic-display axes or on leftover-axis report badges
on the grouping comparison strip. A finite negative leftover is shown, never
clamped. Never invent a leftover score. Never invent a theta. No new columns.
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,26 @@ All notable changes to this project are documented here. Format follows

### Added

- Period leftover pairs now caption leftover-axis report badges with persisted
leftover-map singular values `σ_k` independently of leftover-map axis share
(ADR 0325 / v2.82.0). After `make seed`, leftover-axis report badges name
persisted leftover-map singular values when finite even when leftover-map
axis share is omitted; click a leftover pair opens that post. A missing or
non-finite leftover-map axis share omits that share caption and keeps
`leftover axis {k} σ {value}`. A missing, non-finite, or negative singular
value omits that `σ` badge and keeps `leftover axis {k} {share}%`. Rank-0
unused axes still name `σ 0.00`. Leftover-axis report badges stay
`leftover axis {k} σ {value}` when share is omitted so they stay distinct
from leftover-axis `leftover axis {k} σ {value} {share}%`, from hyphen
`leftover-map axis {k} σ {value}`, from comparison leftover-axis
`leftover map comparison leftover axis {k} σ {value}`, and from comparison
graphic `leftover map comparison graphic leftover-map axis {k} σ {value}`.
Do not invent `σ_k` from leftover-map axis share. Do not invent leftover-map
axis share from `σ_k`. This increment does not change leftover-map singular
values on leftover-map graphic-display axes or on leftover-axis report badges
on the grouping comparison strip. A finite negative leftover is shown, never
clamped. Never invent a leftover score or a theta. No new columns.

- Period leftover pairs now caption leftover-map graphic-display axes with persisted
leftover-map singular values `σ_k` (ADR 0324 / v2.81.0). After `make seed`, leftover-map
graphic-display axes name persisted leftover-map singular values when finite together
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 / 0276 / 0277 / 0278 / 0279 / 0280 / 0281 / 0282 / 0283 / 0284 / 0285 / 0286 / 0287 / 0288 / 0289 / 0290 / 0291 / 0292 / 0293 / 0294 / 0295 / 0296 / 0297 / 0298 / 0299 / 0300 / 0301 / 0302 / 0303 / 0304 / 0305 / 0306 / 0307 / 0308 / 0309 / 0310 / 0311 / 0312 / 0313 / 0314 / 0315 / 0316 / 0317 / 0318 / 0319 / 0320 / 0321 / 0322 / 0323 / 0324), 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 / 0280 / 0281 / 0282 / 0283 / 0284 / 0285 / 0286 / 0287 / 0288 / 0289 / 0290 / 0291 / 0292 / 0293 / 0294 / 0295 / 0296 / 0297 / 0298 / 0299 / 0300 / 0301 / 0302 / 0303 / 0304 / 0305 / 0306 / 0307 / 0308 / 0309 / 0310 / 0311 / 0312 / 0313 / 0314 / 0315 / 0316 / 0317 / 0318 / 0319 / 0320 / 0321 / 0322 / 0323 / 0324 / 0325), 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
4 changes: 3 additions & 1 deletion docs/adr/0148-leftover-map-axis-share.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
[ADR 0323](0323-leftover-map-compare-axis-singular.md)
(leftover-map singular values on leftover-axis report badges on the grouping comparison strip);
[ADR 0324](0324-leftover-map-plot-axis-singular.md)
(leftover-map singular values on leftover-map graphic-display axes)
(leftover-map singular values on leftover-map graphic-display axes);
[ADR 0325](0325-leftover-map-axis-singular-only.md)
(leftover-map singular values on leftover-axis report badges independently of leftover-map axis share)

## Context

Expand Down
5 changes: 4 additions & 1 deletion docs/adr/0322-leftover-map-axis-singular.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,10 @@ values on leftover-axis badges on the grouping comparison strip with a
distinct name
([ADR 0323](0323-leftover-map-compare-axis-singular.md)). This increment does
not caption leftover-map singular values on leftover-map graphic-display axes
([ADR 0324](0324-leftover-map-plot-axis-singular.md)).
([ADR 0324](0324-leftover-map-plot-axis-singular.md)). This increment does not
caption leftover-map singular values on leftover-axis report badges independently
of leftover-map axis share
([ADR 0325](0325-leftover-map-axis-singular-only.md)).

## References

Expand Down
3 changes: 3 additions & 0 deletions docs/adr/0323-leftover-map-compare-axis-singular.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ Independent of leftover-map singular values on leftover-axis report badges
in the period-report panel ([ADR 0322](0322-leftover-map-axis-singular.md)).
Independent of leftover-map singular values on leftover-map graphic-display
axes ([ADR 0324](0324-leftover-map-plot-axis-singular.md)).
Independent of leftover-map singular values on leftover-axis report badges
independently of leftover-map axis share
([ADR 0325](0325-leftover-map-axis-singular-only.md)).

## References

Expand Down
4 changes: 3 additions & 1 deletion docs/adr/0324-leftover-map-plot-axis-singular.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,9 @@ Independent of leftover-map singular values on leftover-axis report badges
singular values on leftover-axis report badges on the grouping comparison
strip ([ADR 0323](0323-leftover-map-compare-axis-singular.md)). Independent of
leftover-map singular values on the grouping comparison leftover-map graphic
([ADR 0321](0321-leftover-map-compare-plot-singular.md)).
([ADR 0321](0321-leftover-map-compare-plot-singular.md)). Independent of leftover-map
singular values on leftover-axis report badges independently of leftover-map axis
share ([ADR 0325](0325-leftover-map-axis-singular-only.md)).

## References

Expand Down
120 changes: 120 additions & 0 deletions docs/adr/0325-leftover-map-axis-singular-only.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# ADR 0325 — Name leftover-map singular values on leftover-axis report badges independently of leftover-map axis share

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

Amends leftover-map singular values on leftover-axis report badges
([ADR 0322](0322-leftover-map-axis-singular.md)), leftover-map axis share
persistence ([ADR 0148](0148-leftover-map-axis-share.md)). Independent of leftover-map
singular values on leftover-map graphic-display axes
([ADR 0324](0324-leftover-map-plot-axis-singular.md)), leftover-map singular
values on leftover-axis report badges on the grouping comparison strip
([ADR 0323](0323-leftover-map-compare-axis-singular.md)), leftover-map
singular values on the grouping comparison leftover-map graphic
([ADR 0321](0321-leftover-map-compare-plot-singular.md)).

## Context

ADR 0148 already persists leftover-map singular values `σ_k` and leftover-map
axis share `σ_k² / Σ_j σ_j²`. ADR 0322 captions leftover-axis report badges
with `leftover axis {axis} σ {value} {share}%` when `σ_k` is finite, and
falls back to `leftover axis {axis} {share}%` when `σ_k` is omitted. Those
badges still couple leftover-map singular values to leftover-map axis share:
a missing, non-finite leftover-map axis share is formatted as `NaN%` beside
a finite `σ_k`, so Gabriel (1971) singular values appear to invent leftover-map
axis share. ADR 0323 already omits share and singular value independently on
grouping comparison leftover-axis badges. ADR 0324 already omits share and
singular value independently on leftover-map graphic-display axes. Period
leftover-axis badges still hide the σ-only copy `leftover axis {k} σ {value}`.
A missing, non-finite, or negative singular value is not a leftover score and
must omit independently of leftover-map axis share. Rank-0 unused axes still
persist `σ_k = 0`. A finite negative leftover is shown, never clamped. Do not
invent `σ_k` from leftover-map axis share. Do not invent leftover-map axis
share from `σ_k`.

This increment captions leftover-axis report badges with already persisted
leftover-map singular values independently of leftover-map axis share.
Leftover-axis report badges stay `leftover axis {k} σ {value}` when share is
omitted so they stay distinct from leftover-axis `leftover axis {k} σ {value} {share}%`
(ADR 0322), from hyphen `leftover-map axis {k} σ {value}` (ADR 0324), from
comparison leftover-axis `leftover map comparison leftover axis {k} σ {value}`
(ADR 0323), and from comparison graphic
`leftover map comparison graphic leftover-map axis {k} σ {value}`.
It does not add columns. Do not invent a leftover score. Do not invent a
theta.

This protected increment uses **0325** so it does not collide with leftover-map
singular values on leftover-map graphic-display axes (0324), leftover-map
singular values on leftover-axis report badges on the grouping comparison
strip (0323), leftover-map singular values on leftover-axis report badges
(0322), leftover-map singular values on the grouping comparison leftover-map
graphic (0321), leftover-map axis share persistence (0148), or the dashboard
stacks.

## Decision

On leftover-axis report badges, caption leftover-map axis `k` with persisted
leftover-map singular value `σ_k` when that singular value is finite and
non-negative, including rank-0 zero singular values. Share and singular
value omit independently: no share and no `σ_k` omits that leftover-axis
report badge; share only is `leftover axis {k} {share}%`; `σ_k` only is
`leftover axis {k} σ {value}`; both is `leftover axis {k} σ {value} {share}%`.
A missing or non-finite leftover-map axis share omits that share caption and
does not invent leftover-map axis share from `σ_k`. A missing, non-finite, or
negative singular value omits that `σ` badge and keeps a usable leftover-axis
share caption. Rank-0 unused axes still name `σ 0.00`. Click a leftover pair
to open that post.

Leftover-axis report badge leftover-map singular values omit independently of
leftover-map graphic-display leftover-map axis singular values and leftover-map
comparison leftover-axis singular values. A missing leftover-map axis share
omits that leftover-axis share caption and keeps a usable leftover-axis `σ`
caption, leftover-map graphic leftover-map axis `σ` caption, leftover-map
comparison leftover-axis `σ` caption, leftover-map comparison graphic leftover-map
axis `σ` caption, leftover-map graphic leftover-map axis ticks, leftover-map
distance caption, leftover-map rank caption, leftover expected `E`, leftover
observed `Y`, leftover residual `R`, leftover-map unexplained leftover `U`,
leftover-map reconstruction `R̂`, and leftover-map graphic coverage notes.

This increment does not change leftover-map singular values on leftover-map
graphic-display axes. Those leftover-map graphic axes stay
`leftover-map axis {axis} σ {value} ({share}%)` (ADR 0324). This increment does
not change leftover-map singular values on leftover-axis report badges on the
grouping comparison strip (ADR 0323). This increment does not persist leftover-map
inner product, cosine, or length.

Do not add SQL. Do not edit shipped migrations. Do not invent a leftover
score. Do not invent a theta.

## Consequences

After `make seed`, leftover-axis report badges name persisted leftover-map
singular values when finite even when leftover-map axis share is omitted;
click a leftover pair opens that post. Hidden posts stay hidden. Rank-0 unused
axes still name leftover-axis `σ 0.00`. Leftover-map graphic-display leftover-map
singular values (ADR 0324), leftover-axis report badge leftover-map singular
values with share (ADR 0322), and grouping comparison leftover-axis report
badge leftover-map singular values (ADR 0323) remain.

## Related

Independent of leftover-map singular values on leftover-map graphic-display
axes ([ADR 0324](0324-leftover-map-plot-axis-singular.md)). Independent of
leftover-map singular values on leftover-axis report badges on the grouping
comparison strip ([ADR 0323](0323-leftover-map-compare-axis-singular.md)).
Independent of leftover-map singular values on leftover-axis report badges
that still require leftover-map axis share in the combined caption
([ADR 0322](0322-leftover-map-axis-singular.md)).

## 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.)
19 changes: 19 additions & 0 deletions docs/product-technical-gap-baseline.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Product & Technical Gap Baseline

> Exact-head loop overlay: 2026-08-31 11:25 KST. Protected `main` is
> `cb187cadee5fb6c46d8a944815ccc154a1e028d1`. Writes work. Do not
> self-approve. #865 leftover-map singular values on leftover-map graphic-display
> axes (v2.81.0 / ADR 0324) is `a3613ac`, stacked on #863 @ `52b3597`. Independent
> APPROVE is missing. Next buyer increment on this cycle: leftover-map singular
> values on leftover-axis report badges independently of leftover-map axis share
> (ADR 0325 / v2.82.0) delivered locally on
> `feat/leftover-map-axis-singular-only-v2820`. Caption persisted leftover-map
> singular values `σ_k` on leftover-axis report badges when leftover-map axis
> share is omitted. Distinct accessible name `leftover axis {axis} σ {value}`.
> Rank-0 unused axes still name `σ 0.00`. Share and singular value omit
> independently. Do not invent `σ_k` from leftover-map axis share. Do not invent
> leftover-map axis share from `σ_k`. Do not change leftover-map singular values
> on leftover-map graphic-display axes or on leftover-axis report badges on the
> grouping comparison strip this increment. Stack onto #865. Leave open for
> independent review. Do not squash-merge. Do not self-approve. Issues #79 and
> #87 stay open. Do not merge #808 without independent APPROVE. Never
> self-approve.

> Exact-head loop overlay: 2026-08-31 11:05 KST. Protected `main` is
> `cb187cadee5fb6c46d8a944815ccc154a1e028d1`. Writes work. Do not
> self-approve. #863 leftover-map singular values on leftover-axis report badges
Expand Down
2 changes: 1 addition & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
"version": "2.81.0",
"version": "2.82.0",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
Loading