Understand the failure.
Verify the repair.
Small, reproducible software failures. The broken implementation, the fix that didn’t work, and the one that passed—preserved together.
Explore the cases ↓How results are verified ↗WHAT THE ARCHIVE CONTAINS
100840 executable cases. 20168 are open.
Every case records the implementation that fails, the fix that did not work, and the repair that passed its checks—with recorded outputs and source hashes. This release adds 100840 cases across 20168 failure mechanisms and 254 domains.
The open tier gives you the failure and the unsuccessful fix for one case in every mechanism. The remaining 80672 cases, 5 variants per mechanism, are member-only: the verified repair, its recorded checks, and the full fixture suite are held in the member archive. Read the methodology ↗
A RECORD OF WHAT WENT WRONG
Browse the archive / 100840
Count unread mentions and choose the jump target: everyone suppression · case 01
Rooms that suppress @everyone still count it as a personal mention.
Count unread mentions and choose the jump target: everyone suppression · case 02
Rooms that suppress @everyone still count it as a personal mention.
Count unread mentions and choose the jump target: everyone suppression · case 03
Rooms that suppress @everyone still count it as a personal mention.
Count unread mentions and choose the jump target: everyone suppression · case 04
Rooms that suppress @everyone still count it as a personal mention.
Count unread mentions and choose the jump target: everyone suppression · case 05
Rooms that suppress @everyone still count it as a personal mention.
Count unread mentions and choose the jump target: self authored · case 01
The user's own @everyone message counts as an unread mention.
Count unread mentions and choose the jump target: self authored · case 02
The user's own @everyone message counts as an unread mention.
Count unread mentions and choose the jump target: self authored · case 03
The user's own @everyone message counts as an unread mention.
Count unread mentions and choose the jump target: self authored · case 04
The user's own @everyone message counts as an unread mention.
Count unread mentions and choose the jump target: self authored · case 05
The user's own @everyone message counts as an unread mention.
Count unread mentions and choose the jump target: seq order · case 01
The jump button targets a later mention because messages are scanned in arrival order.
Count unread mentions and choose the jump target: seq order · case 02
The jump button targets a later mention because messages are scanned in arrival order.
Count unread mentions and choose the jump target: seq order · case 03
The jump button targets a later mention because messages are scanned in arrival order.
Count unread mentions and choose the jump target: seq order · case 04
The jump button targets a later mention because messages are scanned in arrival order.
Count unread mentions and choose the jump target: seq order · case 05
The jump button targets a later mention because messages are scanned in arrival order.
Compute a member's visible history and initial read marker: shared history · case 01
Rooms configured to share history with new members still hide everything before the join.
Compute a member's visible history and initial read marker: shared history · case 02
Rooms configured to share history with new members still hide everything before the join.
Compute a member's visible history and initial read marker: shared history · case 03
Rooms configured to share history with new members still hide everything before the join.
Compute a member's visible history and initial read marker: shared history · case 04
Rooms configured to share history with new members still hide everything before the join.
Compute a member's visible history and initial read marker: shared history · case 05
Rooms configured to share history with new members still hide everything before the join.
Compute a member's visible history and initial read marker: join inclusive · case 01
The message that announces or accompanies the join is hidden from the joining member.
Compute a member's visible history and initial read marker: join inclusive · case 02
The message that announces or accompanies the join is hidden from the joining member.
Compute a member's visible history and initial read marker: join inclusive · case 03
The message that announces or accompanies the join is hidden from the joining member.
Compute a member's visible history and initial read marker: join inclusive · case 04
The message that announces or accompanies the join is hidden from the joining member.
Compute a member's visible history and initial read marker: join inclusive · case 05
The message that announces or accompanies the join is hidden from the joining member.
Compute a member's visible history and initial read marker: leave inclusive · case 01
The member cannot see their own leave event.
Compute a member's visible history and initial read marker: leave inclusive · case 02
The member cannot see their own leave event.
Compute a member's visible history and initial read marker: leave inclusive · case 03
The member cannot see their own leave event.
Compute a member's visible history and initial read marker: leave inclusive · case 04
The member cannot see their own leave event.
Compute a member's visible history and initial read marker: leave inclusive · case 05
The member cannot see their own leave event.
Compute a member's visible history and initial read marker: initial marker · case 01
The first message after the join is already considered read.
Compute a member's visible history and initial read marker: initial marker · case 02
The first message after the join is already considered read.
Compute a member's visible history and initial read marker: initial marker · case 03
The first message after the join is already considered read.
Compute a member's visible history and initial read marker: initial marker · case 04
The first message after the join is already considered read.
Compute a member's visible history and initial read marker: initial marker · case 05
The first message after the join is already considered read.
Compute a member's visible history and initial read marker: deduplicate · case 01
Duplicated deliveries appear twice in the visible history.
Compute a member's visible history and initial read marker: deduplicate · case 02
Duplicated deliveries appear twice in the visible history.
Compute a member's visible history and initial read marker: deduplicate · case 03
Duplicated deliveries appear twice in the visible history.
Compute a member's visible history and initial read marker: deduplicate · case 04
Duplicated deliveries appear twice in the visible history.
Compute a member's visible history and initial read marker: deduplicate · case 05
Duplicated deliveries appear twice in the visible history.
Pick the part to render from multipart/alternative: last supported wins · case 01
The plain-text alternative is shown although a richer supported alternative follows it.
Pick the part to render from multipart/alternative: last supported wins · case 02
The plain-text alternative is shown although a richer supported alternative follows it.
Pick the part to render from multipart/alternative: last supported wins · case 03
The plain-text alternative is shown although a richer supported alternative follows it.
Pick the part to render from multipart/alternative: last supported wins · case 04
The plain-text alternative is shown although a richer supported alternative follows it.
Pick the part to render from multipart/alternative: last supported wins · case 05
The plain-text alternative is shown although a richer supported alternative follows it.
Pick the part to render from multipart/alternative: related start brackets · case 01
A multipart/related alternative whose start parameter names a later root is judged by its first child (an image) and skipped.
Pick the part to render from multipart/alternative: related start brackets · case 02
A multipart/related alternative whose start parameter names a later root is judged by its first child (an image) and skipped.
Pick the part to render from multipart/alternative: related start brackets · case 03
A multipart/related alternative whose start parameter names a later root is judged by its first child (an image) and skipped.
Pick the part to render from multipart/alternative: related start brackets · case 04
A multipart/related alternative whose start parameter names a later root is judged by its first child (an image) and skipped.
Pick the part to render from multipart/alternative: related start brackets · case 05
A multipart/related alternative whose start parameter names a later root is judged by its first child (an image) and skipped.
Pick the part to render from multipart/alternative: charset default and case · case 01
Parts without a charset parameter, or with an upper-case charset name, are treated as unrenderable.
Pick the part to render from multipart/alternative: charset default and case · case 02
Parts without a charset parameter, or with an upper-case charset name, are treated as unrenderable.
Pick the part to render from multipart/alternative: charset default and case · case 03
Parts without a charset parameter, or with an upper-case charset name, are treated as unrenderable.
Pick the part to render from multipart/alternative: charset default and case · case 04
Parts without a charset parameter, or with an upper-case charset name, are treated as unrenderable.
Pick the part to render from multipart/alternative: charset default and case · case 05
Parts without a charset parameter, or with an upper-case charset name, are treated as unrenderable.
Assign IMAP-style section numbers to body parts: one based children · case 01
Every part is fetched with a section number one lower than the server uses.
Assign IMAP-style section numbers to body parts: one based children · case 02
Every part is fetched with a section number one lower than the server uses.
Assign IMAP-style section numbers to body parts: one based children · case 03
Every part is fetched with a section number one lower than the server uses.
Assign IMAP-style section numbers to body parts: one based children · case 04
Every part is fetched with a section number one lower than the server uses.
Assign IMAP-style section numbers to body parts: one based children · case 05
Every part is fetched with a section number one lower than the server uses.
Assign IMAP-style section numbers to body parts: encapsulated multipart · case 01
Parts of an attached multipart message get an extra ".1" level, so fetching them returns the wrong entity.
Assign IMAP-style section numbers to body parts: encapsulated multipart · case 02
Parts of an attached multipart message get an extra ".1" level, so fetching them returns the wrong entity.
Assign IMAP-style section numbers to body parts: encapsulated multipart · case 03
Parts of an attached multipart message get an extra ".1" level, so fetching them returns the wrong entity.
Assign IMAP-style section numbers to body parts: encapsulated multipart · case 04
Parts of an attached multipart message get an extra ".1" level, so fetching them returns the wrong entity.
Assign IMAP-style section numbers to body parts: encapsulated multipart · case 05
Parts of an attached multipart message get an extra ".1" level, so fetching them returns the wrong entity.
Assign IMAP-style section numbers to body parts: encapsulated single · case 01
The body of an attached single-part message gets the same number as the message part itself.
Assign IMAP-style section numbers to body parts: encapsulated single · case 02
The body of an attached single-part message gets the same number as the message part itself.
Assign IMAP-style section numbers to body parts: encapsulated single · case 03
The body of an attached single-part message gets the same number as the message part itself.
Assign IMAP-style section numbers to body parts: encapsulated single · case 04
The body of an attached single-part message gets the same number as the message part itself.
Assign IMAP-style section numbers to body parts: encapsulated single · case 05
The body of an attached single-part message gets the same number as the message part itself.
Assign IMAP-style section numbers to body parts: single part root · case 01
A message that is not multipart reports an empty section for its only body part.
Assign IMAP-style section numbers to body parts: single part root · case 02
A message that is not multipart reports an empty section for its only body part.
Assign IMAP-style section numbers to body parts: single part root · case 03
A message that is not multipart reports an empty section for its only body part.
Assign IMAP-style section numbers to body parts: single part root · case 04
A message that is not multipart reports an empty section for its only body part.
Assign IMAP-style section numbers to body parts: single part root · case 05
A message that is not multipart reports an empty section for its only body part.
Assign IMAP-style section numbers to body parts: nested container number · case 01
Nested multipart containers are flattened, so their children collide with their siblings' numbers.
Assign IMAP-style section numbers to body parts: nested container number · case 02
Nested multipart containers are flattened, so their children collide with their siblings' numbers.
Assign IMAP-style section numbers to body parts: nested container number · case 03
Nested multipart containers are flattened, so their children collide with their siblings' numbers.
Assign IMAP-style section numbers to body parts: nested container number · case 04
Nested multipart containers are flattened, so their children collide with their siblings' numbers.
Assign IMAP-style section numbers to body parts: nested container number · case 05
Nested multipart containers are flattened, so their children collide with their siblings' numbers.
Resolve a part's effective content type and charset: digest default · case 01
Entries of a digest without their own Content-Type are shown as plain text instead of as messages.
Resolve a part's effective content type and charset: digest default · case 02
Entries of a digest without their own Content-Type are shown as plain text instead of as messages.
Resolve a part's effective content type and charset: digest default · case 03
Entries of a digest without their own Content-Type are shown as plain text instead of as messages.
Resolve a part's effective content type and charset: digest default · case 04
Entries of a digest without their own Content-Type are shown as plain text instead of as messages.
Resolve a part's effective content type and charset: digest default · case 05
Entries of a digest without their own Content-Type are shown as plain text instead of as messages.
Resolve a part's effective content type and charset: invalid type fallback · case 01
A malformed type such as "text/" or "/html" is used verbatim instead of falling back to the default.
Resolve a part's effective content type and charset: invalid type fallback · case 02
A malformed type such as "text/" or "/html" is used verbatim instead of falling back to the default.
Resolve a part's effective content type and charset: invalid type fallback · case 03
A malformed type such as "text/" or "/html" is used verbatim instead of falling back to the default.
Resolve a part's effective content type and charset: invalid type fallback · case 04
A malformed type such as "text/" or "/html" is used verbatim instead of falling back to the default.
Resolve a part's effective content type and charset: invalid type fallback · case 05
A malformed type such as "text/" or "/html" is used verbatim instead of falling back to the default.
Resolve a part's effective content type and charset: charset scope · case 01
Non-text parts report a charset taken from a meaningless parameter.
Resolve a part's effective content type and charset: charset scope · case 02
Non-text parts report a charset taken from a meaningless parameter.
Resolve a part's effective content type and charset: charset scope · case 03
Non-text parts report a charset taken from a meaningless parameter.
Resolve a part's effective content type and charset: charset scope · case 04
Non-text parts report a charset taken from a meaningless parameter.
Resolve a part's effective content type and charset: charset scope · case 05
Non-text parts report a charset taken from a meaningless parameter.
Resolve a part's effective content type and charset: charset normalization · case 01
Charset names keep their original casing, so "UTF-8" and "utf-8" are treated as different charsets.
Resolve a part's effective content type and charset: charset normalization · case 02
Charset names keep their original casing, so "UTF-8" and "utf-8" are treated as different charsets.
Resolve a part's effective content type and charset: charset normalization · case 03
Charset names keep their original casing, so "UTF-8" and "utf-8" are treated as different charsets.
Resolve a part's effective content type and charset: charset normalization · case 04
Charset names keep their original casing, so "UTF-8" and "utf-8" are treated as different charsets.
Resolve a part's effective content type and charset: charset normalization · case 05
Charset names keep their original casing, so "UTF-8" and "utf-8" are treated as different charsets.
INSPECTABLE BY DESIGN
Every result has a runnable source.
Runnable implementations with recorded outputs, source hashes, and explicit contracts. Related variants share a failure mechanism and belong together in evaluation splits.
Read the methodology ↗