Version 0.50
July 16, 2026
Pending sends stay unique beyond 80 requests
A student can no longer open a second approval request for the same card when the first unresolved request is older than the newest 80 transfer-request records.
Why it matters
- - David receives one pending decision per student and card instead of duplicate approval rows after a long-running class.
- - An older unresolved request remains authoritative even after many newer transfer requests have been recorded.
- - The duplicate is rejected before any transaction or Activity write begins.
Verification
- - All 456 unit tests pass across 46 files, including the row-81 pending request, complete-query assertion, rejection copy, and no-transaction/no-write boundary.
- - Critical-source coverage remains at 85.59% statements, 72.55% branches, 96.13% functions, and 94.50% lines.
- - The production complete transfer-request read reports no duplicate unresolved class, student, and card keys without writing classroom or Auth data.
- - Typecheck, full lint, zero-warning static security lint, production build, backendless demo, 10 skeleton states, theme contrast, npm audit with zero vulnerabilities, and git diff validation pass.
- - The Version 0.50 draft was recorded on PI-213 before this public page entry; browser, visual, exact-SHA staging, and canonical-ledger proof follow the final commit.
Source: Linear release ledger document, PI-213
- Removed the 80-row limit from the indexed class transfer-request read used before approval-required sends.
- Kept dashboard and student Activity displays intentionally bounded; only the mutation precondition became complete.
- Added an 81-row regression with the blocking pending request beyond the former ceiling and an assertion that the query has no limit.
- Added a production read-only invariant check for duplicate unresolved class, student, and card request keys.