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: 12 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,15 @@ and leftover-map comparison graphic incomplete items when those helpers return u
leftover-map rank from plotted coordinates, leftover-map distance, leftover expected, leftover observed, leftover residual, leftover-map unexplained leftover, leftover-map reconstruction, leftover-map axis share, leftover-map post coverage, leftover-map item coverage,
leftover-map incomplete post coverage, leftover-map incomplete item coverage, leftover pair
count, or the count of unused axes.
ADR 0319 captions leftover-map distance on that grouping comparison leftover-map
graphic when formatLeftoverMapDistance returns a usable badge; a missing or
non-finite `d` omits that leftover-map comparison graphic leftover-map distance caption and keeps
leftover-map rank, leftover expected `E`, leftover observed `Y`, leftover residual `R`, leftover-map unexplained leftover `U`, leftover-map cross share `x`, leftover-map unexplained leftover share `s`, leftover-map explained leftover share `e`, leftover-map reconstruction `R̂`, leftover-map comparison graphic coverage,
leftover-map comparison graphic item coverage, leftover-map comparison graphic incomplete posts,
and leftover-map comparison graphic incomplete items when those helpers return usable integers. Do not invent
leftover-map distance from plotted coordinates, leftover-map rank, leftover expected, leftover observed, leftover residual, leftover-map unexplained leftover, leftover-map reconstruction, leftover-map axis share, leftover-map post coverage, leftover-map item coverage,
leftover-map incomplete post coverage, leftover-map incomplete item coverage, leftover pair
count, or the count of unused axes.
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 @@ -709,6 +718,9 @@ that grouping comparison leftover-map graphic with persisted leftover expected
Grouping comparison leftover-map rank (ADR 0318) captions
that grouping comparison leftover-map graphic with persisted leftover-map rank
when formatLeftoverMapRank returns a usable badge.
Grouping comparison leftover-map distance (ADR 0319) captions
that grouping comparison leftover-map graphic with persisted leftover-map distance
`d` when formatLeftoverMapDistance returns a usable badge.
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
6 changes: 5 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,9 @@ badge.
ADR 0318 captions leftover-map rank on that grouping
comparison leftover-map graphic when formatLeftoverMapRank returns a usable
badge.
ADR 0319 captions leftover-map distance on that grouping
comparison leftover-map graphic when formatLeftoverMapDistance returns a usable
badge.
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 @@ -790,7 +793,8 @@ graphic (ADR 0314), leftover residual on the grouping comparison leftover-map
graphic (ADR 0315), leftover observed on the grouping comparison leftover-map
graphic (ADR 0316), leftover expected on the grouping comparison leftover-map
graphic (ADR 0317), leftover-map rank on the grouping comparison leftover-map
graphic (ADR 0318);
graphic (ADR 0318), leftover-map distance on the grouping comparison leftover-map
graphic (ADR 0319);
`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
15 changes: 15 additions & 0 deletions CHANGELOG.d/2.76.0-leftover-map-compare-plot-distance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## 2.76.0 — Leftover-map distance on grouping comparison leftover-map graphic

- Caption leftover-map distance on the grouping comparison leftover-map
graphic (ADR 0319). After `make seed`, closest and farthest leftover pairs
sit above the member list with leftover-map distance `d` on that grouping
comparison leftover-map graphic when formatLeftoverMapDistance returns a usable
badge; click a post marker or a pair button opens that post. A missing or
non-finite `d` omits that leftover-map comparison graphic leftover-map
distance caption and keeps leftover-map rank. Rank-0 origin
cells still name `d 0.00` when that persisted leftover-map distance is finite.
Comparison copy uses `leftover map comparison graphic leftover-map distance {label}`
so it stays distinct from `leftover-map distance {label}`. This increment does not
caption leftover-map coordinate ticks on the comparison graphic with a distinct name.
Do not invent leftover-map distance from plotted coordinates. A finite negative leftover
is shown, never clamped. 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 name leftover-map distance on the grouping
comparison leftover-map graphic (ADR 0319 / v2.76.0). After `make seed`,
closest and farthest leftover pairs sit above the member list with leftover-map
distance `d` on that grouping comparison leftover-map graphic when
formatLeftoverMapDistance returns a usable badge; click a post marker or a pair
button opens that post. A missing or non-finite `d` omits that leftover-map
comparison graphic leftover-map distance caption and keeps leftover-map rank.
Rank-0 origin cells still name `d 0.00` when that persisted leftover-map distance
is finite. Comparison copy uses
`leftover map comparison graphic leftover-map distance {label}` so it stays
distinct from `leftover-map distance {label}`. This increment does not caption leftover-map
coordinate ticks on the comparison graphic with a distinct name. Do not invent leftover-map
distance from plotted coordinates. A finite negative leftover is shown, never clamped.
Never invent a leftover score or a theta. No new columns.

- Period leftover pairs now name leftover-map rank on the grouping
comparison leftover-map graphic (ADR 0318 / v2.75.0). After `make seed`,
closest and farthest leftover pairs sit above the member list with leftover-map
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), 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), 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
8 changes: 6 additions & 2 deletions docs/adr/0318-leftover-map-compare-plot-rank.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
**Decision status:** Accepted
**Date:** 2026-08-31

**Amended by:** [ADR 0319](0319-leftover-map-compare-plot-distance.md)
(leftover-map distance on the grouping comparison leftover-map graphic)

Amends leftover-map rank on graphic-display pair segments
([ADR 0280](0280-leftover-map-segment-rank.md)), leftover-map rank
on grouping comparison strip pair rows
Expand Down Expand Up @@ -75,8 +78,9 @@ Leftover-map rank omits independently of leftover expected captions and leftover
A missing leftover-map rank omits leftover-map comparison graphic leftover-map rank and keeps
a usable leftover expected caption and a usable leftover observed caption.

This increment does not caption leftover-map distance on the comparison graphic
with a distinct comparison-graphic name. That leftover-map distance already sits
This increment does not caption leftover-map coordinate ticks on the comparison graphic
with a distinct comparison-graphic name. Leftover-map distance on that comparison
graphic is [ADR 0319](0319-leftover-map-compare-plot-distance.md). That leftover-map distance already sits
on the period-report graphic through ADR 0271.

Do not add SQL migrations. Do not edit shipped migrations. Do not invent a leftover
Expand Down
94 changes: 94 additions & 0 deletions docs/adr/0319-leftover-map-compare-plot-distance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# ADR 0319 — Name leftover-map distance on the grouping comparison leftover-map graphic

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

Amends leftover-map distance on graphic-display pair segments
([ADR 0271](0271-leftover-map-segment-distance.md)), leftover-map rank
on the grouping comparison leftover-map graphic
([ADR 0318](0318-leftover-map-compare-plot-rank.md)), leftover expected
on the grouping comparison leftover-map graphic
([ADR 0317](0317-leftover-map-compare-plot-expected.md)), leftover-map graphic
display on the grouping comparison strip
([ADR 0304](0304-leftover-map-compare-graphic.md)), leftover-map coordinates
([ADR 0267](0267-leftover-map-coordinates.md)). Independent of leftover-map
coordinate ticks on the grouping comparison leftover-map graphic.

## Context

ADR 0267 already persists leftover-map distance `d = ‖ξ_{1:2} − ζ_{1:2}‖`.
ADR 0271 already captions period-report leftover-map pair segments with
`leftover-map distance {label}` when that leftover-map distance is finite.
ADR 0318 already captions leftover-map rank on the grouping comparison leftover-map
graphic. The comparison graphic still reuses `leftover-map distance {label}`, so a
buyer who compares leftover pairs can treat the period-report graphic caption as
the comparison graphic leftover-map distance even after the strip names coordinates.
Hiding a distinct comparison-graphic leftover-map distance caption lets leftover-map
rank or leftover-map reconstruction `R̂` be read as leftover-map distance without a
next action. When coordinates, reconstruction, and distance are finite,
`R̂ = ξ · ζ` and `d = ‖ξ − ζ‖`; the comparison graphic must name the same persisted
`d` the pair row already shows. A finite negative leftover is shown, never clamped.

This increment captions leftover-map distance on the grouping comparison leftover-map
graphic from already-named leftover-map distance through formatLeftoverMapDistance.
Comparison copy uses the accessible name
`leftover map comparison graphic leftover-map distance {label}` so it stays
distinct from `leftover-map distance {label}` on the period-report graphic. It does
not add columns. It does not recompute leftover-map distance from plotted pixel
length or from coordinates. Do not invent a leftover score. Do not invent a theta.

This protected increment uses **0319** so it does not collide with leftover-map
rank on the grouping comparison leftover-map graphic (0318), leftover expected on
that graphic (0317), leftover-map distance on pair segments (0271), leftover-map
coordinates (0267), leftover-map graphic display (0268), leftover-map coordinate
ticks (0270), or the dashboard stacks.

## Decision

On the grouping comparison leftover-map graphic, caption each pair segment
with persisted leftover-map distance when formatLeftoverMapDistance returns a usable
badge, next to leftover-map rank. Use the distinct accessible name
`leftover map comparison graphic leftover-map distance {label}` so the graphic
caption is not the period-report graphic caption (`leftover-map distance {label}`).
A missing or non-finite `d` omits that leftover-map comparison graphic leftover-map
distance caption and keeps leftover-map rank when formatLeftoverMapRank returns a
usable badge, leftover expected `E`, leftover observed `Y`, leftover residual `R`, leftover-map unexplained leftover `U`, leftover-map cross share `x`, leftover-map unexplained leftover share `s`, leftover-map explained leftover share `e`, leftover-map reconstruction `R̂`, leftover-map comparison graphic coverage notes, leftover-map rank, plus the pair-row leftover-map distance badge.
Rank-0 origin cells still name `d 0.00` when that persisted leftover-map distance is
finite. A finite negative leftover is shown, never clamped. Do not invent leftover-map
distance from plotted coordinates, leftover-map rank, leftover expected, leftover observed, leftover residual, leftover-map reconstruction, leftover-map unexplained leftover, leftover-map axis share, leftover-map post coverage, leftover-map item coverage, leftover-map incomplete post coverage, leftover-map incomplete item coverage, leftover pair count, or the count of unused axes. Click a post marker to open that post.

Leftover-map distance omits independently of leftover-map rank captions.
A missing leftover-map distance omits leftover-map comparison graphic leftover-map distance and keeps
a usable leftover-map rank caption.

This increment does not caption leftover-map coordinate ticks on the comparison graphic
with a distinct comparison-graphic name. Those ticks already sit on the period-report
graphic through ADR 0270.

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

## Consequences

After `make seed`, grouping comparison leftover pairs that already show
the leftover-map graphic of persisted `ξ` / `ζ` also name leftover-map
distance on that graphic when formatLeftoverMapDistance returns a usable badge.
Rank-0 unused axes still plot at the origin and still name `d 0.00` when that
persisted leftover-map distance is finite. Click a post marker or a
pair button opens that post. When coordinates, reconstruction, and distance are
finite, `R̂ = ξ · ζ` and `d = ‖ξ − ζ‖`.

## Related

Independent of leftover-map coordinate ticks on the grouping comparison leftover-map graphic.

## References

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

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

> Exact-head loop overlay: 2026-08-31 09:25 KST. Protected `main` is
> `cb187cadee5fb6c46d8a944815ccc154a1e028d1`. Writes work. Do not
> self-approve. #858 leftover-map rank on the grouping comparison leftover-map
> graphic (v2.75.0 / ADR 0318) is `4b9184f`, stacked on #857 @ `9f34d2c`. Independent
> APPROVE is missing. Next buyer increment on this
> cycle: leftover-map distance on the grouping comparison leftover-map
> graphic (ADR 0319 / v2.76.0) delivered locally on
> `feat/leftover-map-compare-plot-distance-v2760`. Caption persisted leftover-map
> distance `d` on that comparison graphic from already-named leftover_distance.
> Distinct accessible name `leftover map comparison graphic leftover-map
> distance {label}`. Omit when formatLeftoverMapDistance fail-closes.
> Do not caption leftover-map coordinate ticks on that comparison graphic with a distinct name this
> increment. Do not invent leftover-map distance from plotted coordinates.
> Stack onto #858. 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 09:19 KST. Protected `main` is
> `cb187cadee5fb6c46d8a944815ccc154a1e028d1`. Writes work. Do not
> self-approve. #857 leftover expected on the grouping comparison leftover-map
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.75.0",
"version": "2.76.0",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
10 changes: 10 additions & 0 deletions frontend/src/App.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4653,6 +4653,16 @@ describe("App, authenticated", () => {
"Leftover map comparison rank",
),
).toHaveLength(1);
expect(
within(screen.getByLabelText("Grouping comparison")).getByLabelText(
"leftover map comparison graphic leftover-map distance d 0.12",
),
).toHaveTextContent("d 0.12");
expect(
within(screen.getByLabelText("Grouping comparison")).queryByLabelText(
"leftover-map distance d 0.12",
),
).not.toBeInTheDocument();
expect(
within(screen.getByLabelText("Grouping comparison")).getAllByLabelText(
/leftover-map axis \d tick/,
Expand Down
Loading