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
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,14 @@ and leftover-map comparison graphic incomplete items when those helpers return u
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.
ADR 0320 captions leftover-map coordinate ticks on that grouping comparison leftover-map
graphic from already-named leftover-map coordinates; the origin and each unique finite
persisted `ξ` / `ζ` projection still name leftover-map comparison graphic leftover-map axis
ticks. Do not invent evenly spaced leftover-map comparison graphic leftover-map axis ticks
that no persisted coordinate occupies. Do not invent leftover-map coordinate ticks from leftover-map
distance, 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 @@ -721,6 +729,9 @@ 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.
Grouping comparison leftover-map coordinate ticks (ADR 0320) captions
that grouping comparison leftover-map graphic with persisted leftover-map coordinate
ticks at the origin and at each unique finite `ξ` / `ζ` projection.
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 @@ -746,6 +746,8 @@ badge.
ADR 0319 captions leftover-map distance on that grouping
comparison leftover-map graphic when formatLeftoverMapDistance returns a usable
badge.
ADR 0320 captions leftover-map coordinate ticks on that grouping
comparison leftover-map graphic from already-named leftover-map coordinates.
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 @@ -794,7 +796,8 @@ 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), leftover-map distance on the grouping comparison leftover-map
graphic (ADR 0319);
graphic (ADR 0319), leftover-map coordinate ticks on the grouping comparison leftover-map
graphic (ADR 0320);
`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
17 changes: 17 additions & 0 deletions CHANGELOG.d/2.77.0-leftover-map-compare-plot-ticks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
## 2.77.0 — Leftover-map coordinate ticks on grouping comparison leftover-map graphic

- Caption leftover-map coordinate ticks on the grouping comparison leftover-map
graphic (ADR 0320). After `make seed`, closest and farthest leftover pairs
sit above the member list with leftover-map coordinate ticks on that grouping
comparison leftover-map graphic at the origin and at each unique finite
persisted `ξ` / `ζ` projection; click a post marker or a pair button opens
that post. Rank-0 origin cells still name leftover-map comparison graphic
leftover-map axis tick `0.00`. Comparison copy uses
`leftover map comparison graphic leftover-map axis {axis} tick {value}` so it
stays distinct from `leftover-map axis {axis} tick {value}` and from
`leftover map comparison axis {axis} ({share}%)`. Do not invent evenly spaced
ticks that no persisted coordinate occupies. This increment does not caption
leftover-map singular values on the comparison graphic with a distinct name.
Do not invent leftover-map coordinate ticks from leftover-map distance.
A finite negative leftover is shown, never clamped. Never invent a leftover
score. Never invent a theta. No new columns.
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,22 @@ All notable changes to this project are documented here. Format follows

### Added

- Period leftover pairs now name leftover-map coordinate ticks on the grouping
comparison leftover-map graphic (ADR 0320 / v2.77.0). After `make seed`,
closest and farthest leftover pairs sit above the member list with leftover-map
coordinate ticks on that grouping comparison leftover-map graphic at the origin
and at each unique finite persisted `ξ` / `ζ` projection; click a post marker
or a pair button opens that post. Rank-0 origin cells still name leftover-map
comparison graphic leftover-map axis tick `0.00`. Comparison copy uses
`leftover map comparison graphic leftover-map axis {axis} tick {value}` so it
stays distinct from `leftover-map axis {axis} tick {value}` and from
`leftover map comparison axis {axis} ({share}%)`. Do not invent evenly spaced
ticks that no persisted coordinate occupies. This increment does not caption
leftover-map singular values on the comparison graphic with a distinct name.
Do not invent leftover-map coordinate ticks from leftover-map distance.
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 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
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), 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), 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: 9 additions & 5 deletions docs/adr/0319-leftover-map-compare-plot-distance.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 0320](0320-leftover-map-compare-plot-ticks.md)
(leftover-map coordinate ticks on the grouping comparison leftover-map graphic)

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
Expand All @@ -12,7 +15,7 @@ on the grouping comparison 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.
singular values on the grouping comparison leftover-map graphic.

## Context

Expand Down Expand Up @@ -61,9 +64,10 @@ 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.
This increment does not caption leftover-map singular values on the comparison graphic
with a distinct comparison-graphic name. Leftover-map coordinate ticks on that comparison
graphic are [ADR 0320](0320-leftover-map-compare-plot-ticks.md). 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.
Expand All @@ -80,7 +84,7 @@ finite, `R̂ = ξ · ζ` and `d = ‖ξ − ζ‖`.

## Related

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

## References

Expand Down
109 changes: 109 additions & 0 deletions docs/adr/0320-leftover-map-compare-plot-ticks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# ADR 0320 — Name leftover-map coordinate ticks on the grouping comparison leftover-map graphic

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

Amends leftover-map coordinate ticks on graphic-display axes
([ADR 0270](0270-leftover-map-coordinate-ticks.md)), leftover-map distance
on the grouping comparison leftover-map graphic
([ADR 0319](0319-leftover-map-compare-plot-distance.md)), leftover-map rank
on the grouping comparison leftover-map graphic
([ADR 0318](0318-leftover-map-compare-plot-rank.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
singular values on the grouping comparison leftover-map graphic.

## Context

ADR 0267 already persists two-axis Gabriel person coordinates
`ξ_{1:2}` and item coordinates `ζ_{1:2}` so `R̂ = ξ_{1:2} · ζ_{1:2}`
and `d = ‖ξ_{1:2} − ζ_{1:2}‖` stay auditable. ADR 0270 already ticks
period-report leftover-map axes at the origin and at each unique finite
persisted `ξ` / `ζ` projection under accessible name
`leftover-map axis {axis} tick {value}`. ADR 0319 already captions
leftover-map distance on the grouping comparison leftover-map graphic.
The comparison graphic still reuses `leftover-map axis {axis} tick {value}`,
so a buyer who compares leftover pairs can treat the period-report graphic
tick as the comparison graphic leftover-map coordinate even after the strip
names `ξ` / `ζ`. Hiding a distinct comparison-graphic leftover-map coordinate
tick lets leftover-map distance `d`, leftover-map rank, or leftover-map axis
share be read as leftover-map location without a next action. When
coordinates, reconstruction, and distance are finite, `R̂ = ξ · ζ` and
`d = ‖ξ − ζ‖`; the comparison graphic must name the same persisted
coordinates the pair row already shows. A finite negative leftover is shown,
never clamped.

This increment captions leftover-map coordinate ticks on the grouping
comparison leftover-map graphic from already-named leftover-map coordinates.
Comparison copy uses the accessible name
`leftover map comparison graphic leftover-map axis {axis} tick {value}` so it
stays distinct from `leftover-map axis {axis} tick {value}` on the
period-report graphic and from comparison axis-share copy
`leftover map comparison axis {axis} ({share}%)`. It does not add columns.
It does not invent evenly spaced ticks that no persisted coordinate occupies.
Do not invent a leftover score. Do not invent a theta.

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

## Decision

On the grouping comparison leftover-map graphic, tick leftover-map axis 1 and
leftover-map axis 2 at the origin and at each unique finite persisted `ξ` /
`ζ` coordinate projected onto that axis. Use the distinct accessible name
`leftover map comparison graphic leftover-map axis {axis} tick {value}` so the
graphic tick is not the period-report graphic tick
(`leftover-map axis {axis} tick {value}`) and is not comparison axis-share copy
(`leftover map comparison axis {axis} ({share}%)`). Tick labels use the same
signed leftover-map coordinate formatter as the pair-row badge. The origin is
always named `0` because it is the rank-0 unused-axis location, not a leftover
score. Duplicate coordinates share one tick. A rank-0 origin cell names only
`0`; the unit drawing window used to keep that origin visible is drawing scale
and must not sprout `−1` or `+1` ticks. Do not invent evenly spaced ticks that
no persisted coordinate occupies. Click a post marker to open that post.
Criterion markers are not post buttons.

Leftover-map comparison graphic leftover-map axis ticks omit independently of
leftover-map distance captions. A missing coordinate omits that leftover-map
comparison graphic leftover-map axis tick and keeps a usable 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̂`, leftover-map comparison graphic coverage
notes, plus the pair-row leftover-map coordinate badge.

This increment does not caption leftover-map singular values on the comparison
graphic with a distinct comparison-graphic name. Those leftover singular values
already persist on leftover-map axes through ADR 0148.

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
coordinate ticks on that graphic at the origin and at each unique finite
projection. Rank-0 unused axes still plot at the origin and still name
leftover-map comparison graphic leftover-map axis tick `0.00`. 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 singular values 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
18 changes: 18 additions & 0 deletions docs/product-technical-gap-baseline.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# Product & Technical Gap Baseline

> Exact-head loop overlay: 2026-08-31 09:28 KST. Protected `main` is
> `cb187cadee5fb6c46d8a944815ccc154a1e028d1`. Writes work. Do not
> self-approve. #859 leftover-map distance on the grouping comparison leftover-map
> graphic (v2.76.0 / ADR 0319) is `9ba8535`, stacked on #858 @ `4b9184f`. Independent
> APPROVE is missing. Next buyer increment on this
> cycle: leftover-map coordinate ticks on the grouping comparison leftover-map
> graphic (ADR 0320 / v2.77.0) delivered locally on
> `feat/leftover-map-compare-plot-ticks-v2770`. Caption persisted leftover-map
> coordinate ticks on that comparison graphic from already-named leftover-map
> coordinates. Distinct accessible name `leftover map comparison graphic leftover-map
> axis {axis} tick {value}`. Origin and unique finite `ξ` / `ζ` projections only.
> Do not invent evenly spaced ticks. Do not caption leftover-map singular values
> on that comparison graphic with a distinct name this increment. Do not invent
> leftover-map coordinate ticks from leftover-map distance. Stack onto #859.
> 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:25 KST. Protected `main` is
> `cb187cadee5fb6c46d8a944815ccc154a1e028d1`. Writes work. Do not
> self-approve. #858 leftover-map rank 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.76.0",
"version": "2.77.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Focused tests need CI confirmation

Local Corepack could not verify the pinned pnpm signature, so focused frontend tests never started. CI must confirm the rendering and translation suites.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

"type": "module",
"scripts": {
"dev": "vite",
Expand Down
13 changes: 9 additions & 4 deletions frontend/src/App.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4664,10 +4664,15 @@ describe("App, authenticated", () => {
),
).not.toBeInTheDocument();
expect(
within(screen.getByLabelText("Grouping comparison")).getAllByLabelText(
/leftover-map axis \d tick/,
).length,
).toBeGreaterThan(0);
within(screen.getByLabelText("Grouping comparison")).getByLabelText(
"leftover map comparison graphic leftover-map axis 1 tick +0.50",
),
).toBeInTheDocument();
expect(
within(screen.getByLabelText("Grouping comparison")).queryByLabelText(
"leftover-map axis 1 tick +0.50",
),
).not.toBeInTheDocument();
expect(
within(screen.getByLabelText("Grouping comparison")).getByLabelText(
"Leftover map comparison coordinates",
Expand Down
Loading