Campfire conformance — compiled

ONCE Campfire's own Minitest suite, run against a Roundhouse emit of the same commit. A failure here mostly names a Rails construct not yet modeled; some are answers that came out wrong with nothing raised, and some have not been triaged at all. That makes their tests the worklist generator — so the ranked causes below, not the pass count, are what this page is for.

This is the compiled lane: each test file compiled to its own native binary by spinel, then run. The same emitted source runs on the interpreted lane, so a difference between the two is the compiler's, not the app's — and this lane can report a status its sibling cannot. 13 of 86 files never linked, and their tests are counted against their first compile error rather than against anything the emit got wrong.

Unpassed tests by who can act: 193 untriaged · 11 roundhouse.

campfire 11d3fb9ce01f · roundhouse 1c84d3463612 · spinel 6ca6d451b · 2026-10-21T05:02:54Z
382/586 tests pass53 of 86 files green13 never linkedemit 1,665 files, 0 errors
382 passing · 204 not passing · 13 file(s) never linked · 1 more never ran a test
What this measures. Two questions, kept apart. Whether the emit compiles is the never-linked column — spinel is a strict target, so an unmodeled construct is a compile error rather than a gap emitted through. Whether it behaves is everything else: their suite asserts test by test, so a failure below names a construct that compiled and then answered wrongly. A file in the first column has not yet been asked the second question. The emit is produced fresh by scripts/campfire-suite and is compiled by spinel 6ca6d451b.

The app is pinned at 11d3fb9ce01f; the compiler is not. This lane compiles 54 whole programs, which is too much to run per commit, so it runs on a schedule and its spinel is whatever the publisher pulled and built that morning. That makes a movement here two-sided: it belongs to a Roundhouse change or to a compiler change, and the two are told apart by the spinel version recorded above — not by this page. Read a regression by checking that version first.

The file list is theirs. Every test file campfire's own suite declares, read from the emitted Makefile's SPINEL_TESTS rather than restated here — a `find test -name '*_test.rb'` would also sweep in the scaffold's own tests, which are not campfire's.

Each run stands alone. There is no history here and no comparison to previous runs: a chart of a number that moves for a dozen reasons is not the point of a worklist.

Todos, by tests blocked

Occurrences churn; causes are the unit of work, so each carries a stable slug you can still refer to forty commits later. Owner says who can act: most of this is Roundhouse's own modeling debt.

Counts are how many tests are currently stopped by each cause, not how many will pass when it lands: a test is attributed to the first thing that stopped it, so clearing one cause routinely reveals another behind it. Each unpassed test carries its own message; a file that never ran contributes its whole count against its load error.

BlockedCauseOwner
7
Fragment / collection cache identity and bounded store
fragment-cache-identity
roundhouse
Five fails in one file: `assert_same` on the bounded MemoryStore, jbuilder HTML token state, detached-broadcast `to_html` on nil, cross-room content-validated hits, plus the `ActionView::Base` constant (also matched above when that message wins). Shared view/cache runtime — largest file-green opportunity on the tip suite.
5 of 7 tests
  • test/fragment_rendering_test · FragmentRenderingTest#test_native_collection_caching_uses_the_bounded_store_without_replacing_shared_stores
    undefined method 'stubs' for an instance of ResponseCache
  • test/fragment_rendering_test · FragmentRenderingTest#test_disabled_page_caching_retains_fresh_native_fragments_after_foreign_leaf_writes
    undefined method 'stubs' for an instance of ResponseCache
  • test/fragment_rendering_test · FragmentRenderingTest#test_message_controls_survive_creator_edits_while_the_author_is_rendered_fresh
    mocha: ActionView::Base.any_instance_expects(:form_with) with 1 chained link(s) is not a stub
  • test/fragment_rendering_test · FragmentRenderingTest#test_a_commit_in_another_room_retains_content_validated_message_collection_hits
    undefined method 'stubs' for an instance of ResponseCache
  • test/fragment_rendering_test · FragmentRenderingTest#test_a_foreign_commit_after_capture_bypasses_old_native_fragment_lookups
    undefined method 'stubs' for an instance of ResponseCache
6
The emit ran and answered differently
silent-divergence
untriaged
NOT a root cause — the bucket of tests that still need one. Nothing raised: the emitted code ran to completion and produced a different answer, so each of these has to be followed down its own chain. This is the most valuable cluster on the page and the most expensive: a missing method names itself, a wrong answer does not.
5 of 6 tests
  • test/first_runs_controller_test · FirstRunsControllerTest#test_create_is_not_vulnerable_to_race_conditions
    assert_equal failed
  • test/messages_boosts_controller_test · Messages::BoostsControllerTest#test_index_looks_up_the_boosters_of_all_boosts_at_once
    assert_equal failed
  • test/messages_caching_test · MessagesCachingTest#test_boosts_are_cached_inside_their_message_instead_of_one_fragment_each
    expected "#message_4 #boost_4" in response body
  • test/qr_code_controller_test · QrCodeControllerTest#test_show_renders_a_qr_code_as_a_cacheable_svg_image
    expected response :success, got status=302 body=""
  • test/qr_code_controller_test · QrCodeControllerTest#test_show_rejects_an_id_that_isn_t_base64
    expected response :bad_request, got status=302 body=""
2
Message create transaction — FTS index / unread / outer rollback
message-creation-tx
roundhouse
Creation commit ordering, failed index/unread rollback, outer rollback restoring counter/jobs, and searchable reindex word replace. High density if one AR transaction / after_create_commit seam is wrong.
2 tests
  • test/message_creation_commit_test · MessageCreationCommitTest#test_creation_commits_its_index_and_unread_writes_once_before_enqueuing_push
    mocha: Room::PushMessageJob.expects(:perform_later) with 1 chained link(s) is not a stub sh
  • test/message_searchable_test · Message::SearchableTest#test_bounded_search_keeps_older_reachable_hits_behind_inaccessible_matches
    no implicit conversion of Time into String
1
Room destroy — per-message txs and member connection reset broadcast
room-destroy-batching
roundhouse
`assert_broadcast_on` for connection reset after late destroy, and per-message destroy transaction interleaving. Shared cable recording + destroy batching.
1 test
  • test/room_test · RoomTest#test_a_room_destroyed_later_resets_the_connections_of_its_former_members_as_revoking_their_memberships_would
    assert_broadcast_on failed: no broadcast to "action_cable/Z2lkOi8vY2FtcGZpcm
1
Cached direct room still sorts by latest message when already unread
sidebar-cached-direct-sort
roundhouse
Silent DOM divergence: expected `data-sorted-list-number` for a cached unread direct. Peel after cache/304 work.
1 test
  • test/users_sidebars_controller_test · Users::SidebarsControllerTest#test_a_cached_direct_that_is_already_unread_still_sorts_by_its_latest_message
    no implicit conversion of Symbol into String
187
Not yet triaged
unclassified
untriaged
No rule in bench/campfire/suite-causes.json matches these. Triage, then add a rule.
12 of 187 tests
  • test/accounts_controller_test · AccountsControllerTest#test_edit_lists_a_page_of_members_and_the_next_page_carries_on_from_it
    no implicit conversion of Integer into String
  • test/active_storage_authentication_test · ActiveStorageAuthenticationTest#test_disk_service_upload_endpoint_rejects_anonymous_callers
    No route matches PUT /rails/active_storage/disk/eyJfcmFpbHMiOnsiZGF0YSI6IjRhYmVhOWZjM2YyOGNhNmFmYzUxOT
  • test/active_storage_authentication_test · ActiveStorageAuthenticationTest#test_disk_service_download_endpoint_stays_public
    undefined method 'empty?' for nil
  • test/cached_responses_test · (file did not run)
    spinel: 1 refusal, nothing written
  • test/content_filters_test · (file did not run)
    spinel: once-campfire/test/helpers/content_filters_test.rb:77: the String the value of `message_presentation` hands on as a variable's write is shared with anot
  • test/fetch_metadata_test · FetchMetadataTest#test_cross_site_reads_remain_available_and_method_overridden_writes_stay_protected
    No route matches DELETE /rooms/3
  • test/message_attachment_test · (file did not run)
    spinel: /home/rubys/spinel/bin/../packages/pathname/pathname.rb:322: this String is shared with another name, and the route does not carry the shared handle yet
  • test/message_creation_test · (file did not run)
    spinel: 3 refusals, nothing written
  • test/messages_boosts_controller_test · Messages::BoostsControllerTest#test_quick_boost_controls_submit_their_displayed_reaction_to_the_message
    no implicit conversion of Symbol into String
  • test/messages_caching_test · MessagesCachingTest#test_messages_render_their_preloaded_boosts_in_order_without_querying_them_again
    no implicit conversion of Time into String
  • test/messages_caching_test · MessagesCachingTest#test_a_page_of_messages_loads_whether_their_previews_were_made_along_with_the_messages_not_one_at_a_time
    undefined method 'const_defined?' for class TimeLimitedVideoPreviewer
  • test/messages_controller_test · (file did not run)
    spinel: test/test_helper.rb:2052: this String is shared with another name, and the route does not carry the shared handle yet: a String variable added to an Arr

Rules that matched nothing

A rule at zero is kept, not deleted: it is the tripwire that catches the fix coming undone. What it means depends on why it is at zero.

RuleWhy it reads zero
sti-becomes`becomes!` landed in f2d42854; the rule stays as a regression tripwire.
proc-call-lostspinel#4529 closed by PR #4530 (b93306b6, same day): the fast path's guard is arity-aware; spinel lane 286 -> 290/300 on the merge. The rule stays as the tripwire for the two guards disagreeing again.
deferred-preload-timingload_records runs includes unless skip_preloading!. message_test is 10/10 on Campfire 11d3fb9, and the page-preload sibling still leaves unrendered rows unloaded. The rule stays as a regression tripwire.
actiontext-attachment-from-node`from_node`, `#attachable` and `MissingAttachable` landed with the generated `ActionText::Attachable.locate` (the includer set is the registry); the rule stays as a regression tripwire.
sgid-wire-formatthe wire format is Rails' and the tolerant list is read off the reopen; the rule stays as a regression tripwire for either end drifting (a salt, digest, padding or `?expires_in` change fails the pinned literal first).
socket-interceptionserved 2026-09-17 (sequential Resolv answers + the TcpSocketStub seam); the rule stays as a regression tripwire.
globalid-sgidminting served 2026-09-22; the rule stays as the tripwire for a mint whose model the pass cannot name, which is reported rather than guessed.
turbo-streams-channelthe constant landed in fd1a3259; the rule stays as a regression tripwire.
belongs-to-autosaveserved with #818 tip-compat (FirstRun/grant_to peel); rule stays as a regression tripwire.
conditional-get`fresh_when` / `stale?` landed in 7ea262e2; the rule stays as a regression tripwire.
paginationlanded in 0ef8fb79; the rule stays as a regression tripwire.
id-zero-sentinelzero is the intended reading. This is a deliberate divergence rather than a gap, and the rule exists to catch the day it becomes visible again.
shared-cache-table-lockthe harness opens a per-test file database since 2026-09-17; the rule stays as the tripwire — a reappearance means a shim opened a shared-cache database again.
render-json-encoderthe monomorphized writer landed for the declared-readers case (campfire's only site); the rule stays as a regression tripwire, and names the shapes that would still reach the encoder.
nokogiri-css-classserved by loading ruby-vips after boot so Nokogiri keeps the libxml that accepts `*:` and css-class(). messages_helper_test is 17/17, messages_boosts_controller_test is 5/5, and rooms_refreshes_controller_test is 1/1 on Campfire 11d3fb9. The rule stays as a regression tripwire.
action-view-base-missingserved by the ActionView::Base#form_with peel (b513fa665): fragment_rendering_test is 9/9 on Campfire 11d3fb9. The rule stays as a regression tripwire.
native-validators-304served with #829; rule stays as a regression tripwire.
messages-caching-fixture-txnThe fixture frame is hidden from `transaction_open?`, and an uncommitted write moves the observer's data_version, so the cached page is dropped when the example edits a message. messages_caching_test is 4/4. The rule stays as a regression tripwire.
presentation-preload-introspectionserved 2026-10-09 (`embeds` modeled and preloaded). associations_load_together is cleared with deferred-preload-timing. The rule stays as a regression tripwire.
turbo-signed-stream-nameserved 2026-09-22 (room_messages_channel_test 6/6 + the stock-channel pair 2/2); the rule stays as a regression tripwire.
web-push-pinned-deliveryserved 2026-09-22 on both lanes (web_push_persistent_request_test 2/2 ruby and spinel, through campfire's own PersistentRequest over the real gem / the port); the rule stays as a regression tripwire.
cable-test-caseserved 2026-09-22 (test/channels 20/20 on the ruby lane); the rule stays as a regression tripwire for a harness method going missing.
view-test-caseserved 2026-09-22 (messages_helper_test 3/3); the rule stays as the tripwire for a `view` call no helper defines, which is ActionView::Base's own surface and still unmodeled.
uri-parse-conformancethe space case served upstream 2026-09-22 (matz/spinel#4806 + fd49be64); the rule stays as the tripwire for the colon-form divergences still open in the same parser, and for the guard itself being loosened again.
rails-test-support-classesserved 2026-09-22 (opengraph-embed 8/8, log_scrubbing 6/6); the rule stays as the tripwire for the next Rails test stand-in the corpus reaches for, and names the three it has needed so far.
kwargs-splat-forwardingserved 2026-09-21 (opengraph-embed 7/8, the eighth is `ActionDispatch::TestRequest`); the rule stays as a regression tripwire.
actiontext-fragment-mutationserved 2026-09-21 (Node writes, `Fragment#update`/`at_css`/`css`, and Rails' attachable-driven plain text; content_filters 12/14); the rule stays as a regression tripwire.
activesupport-string-core-ext`squish` served 2026-09-22; the rule stays as the tripwire, and names the three String core exts (`squish!`, `truncate_words`, `remove`) the corpus has not asked for yet.
ipaddr-octets-on-stdlibserved 2026-09-21 (guard 24/24 on the ruby lane); the rule stays as the tripwire for a runtime IPAddr method the stdlib facade does not mirror.
vips-image-constructionserved 2026-10-05: spinel-ruby-vips grew Image.black / #add / #cast / write_to_buffer, so the policy file reaches find_load instead of stopping on unknown. Remaining find_load nils on libvips 8.14 are vips-policy-not-applied-in-tests, not this construction wall.
tempfile-stdlibserved 2026-09-22; the rule stays as the tripwire for the next caller that reaches for a temp file, and for the port's one real difference from Ruby's — it opens by name where Ruby opens O_EXCL and retries.
vips-policy-not-applied-in-testsserved 2026-10-05: the processor wraps Vips.vips_foreign_find_load through VipsExt so a blocked loader is not selected (8.15+ already skips BLOCKED classes in vips_foreign_map; 8.14 does not). 15/15 on this orb's libvips 8.14.1 after the wrap, two skips for loaders the host never built.
test-harness-surfaceserved 2026-09-22; the rule stays as the tripwire for the next harness method the corpus reaches for — `file_fixture`, `fixture_file_upload`, `response`, `parsed_body` and the bare `assert` family are all named in the match because each hides an unknown number of assertions behind it.
attachable-partials-not-renderedboth halves landed: sgid attachables through the generated `Content.render_attachment` (fe2ce576), content-type attachables through their own `from_node` with the partial's local named `model_name.element` and `caption` delegated back through the node, plus the shared `auto_link` running Rails' body pass so the outer node is stripped around the partial on every lane; ruby 294/300, spinel 292/300. The rule stays as the tripwire for an attachment node reaching the page bare again.
test-helper-kwarg-defaultsthe skipped-slot fill landed 2026-09-19 (unfurl 7/7 both lanes); the rule stays as a regression tripwire.
direct-uploads-not-servedserved 2026-09-20 (4/4 both lanes; with the generated filter reopens deleted the anonymous POST creates a blob and the anonymous PUT is not a 401, so the guard is what the tests see); the rule stays as a regression tripwire.
mocha-stub-raisesserved 2026-09-19 (sessions 9/10 spinel, 10/10 ruby); the rule stays as a regression tripwire.
mocha-bare-mockserved 2026-09-20 (sessions 10/10 both lanes; a no-op `disconnect` fails the test with `expected 1 time(s), got 0`); the rule stays as a regression tripwire.

No explanation recorded, so these are the open question: either the cause is cleared and nobody wrote that down, or the failure's message changed and it is now being counted as untriaged above. fixture-accessors, params-object-representation, relation-vs-array, object-extend, rails-module-facade, broadcast-assertions, view-helper-in-helper-module, active-storage-attachments, route-helper-takes-a-record, out-of-scope-gems, arity-divergence, allow-browser, params-hash-in-path, ar-database-tasks, sqlite-wal-checkpoint, record-cache-admit.

What the harness compensates for

Nothing: this run spliced no stubs (--no-stubs), so the numbers above are the emit's own.

By test file

A file that never ran is not the same as a file whose tests failed: it died at load, so its whole count is charged to one error and nothing behind that error has been seen yet.

And on this lane there is a third row: a file that never linked. Its tests are charged to its first compile error, and unlike a load failure it has not been observed to do anything at all — the emit may be perfectly correct behind it. Sort the work by asking which of the three a row is: didn't link, linked and diverged, linked and agreed.

FileTestsPassFailFirst error
test/messages_controller_test20020never linked — spinel: test/test_helper.rb:2052: this String is shared with another name, and the route does not carry the shared handle yet: a String variable added to an Arr
test/content_filters_test19019never linked — spinel: once-campfire/test/helpers/content_filters_test.rb:77: the String the value of `message_presentation` hands on as a variable's write is shared with anot
test/messages_helper_test17017never linked — spinel: once-campfire/test/helpers/messages_helper_test.rb:8: the String the value of `message_presentation` hands on as a variable's write is shared with anoth
test/vips_loader_policy_test17017never linked — spinel: /home/rubys/spinel/bin/../packages/pathname/pathname.rb:322: this String is shared with another name, and the route does not carry the shared handle yet
test/sqlite_wal_checkpoint_test15015never linked — spinel: /home/rubys/spinel/bin/../packages/pathname/pathname.rb:322: this String is shared with another name, and the route does not carry the shared handle yet
test/web_push_connections_test14014never linked — spinel: once-campfire/test/test_helpers/push_service_test_helper.rb:87: unsupported multiple assignment call target no writer: node 265347 (MultiWriteNode)
test/cached_responses_test13013never linked — spinel: 1 refusal, nothing written
test/unfurl_links_controller_test12012never linked — spinel: 5 refusals, nothing written
test/message_attachment_test10010never linked — spinel: /home/rubys/spinel/bin/../packages/pathname/pathname.rb:322: this String is shared with another name, and the route does not carry the shared handle yet
test/fragment_rendering_test927FAIL FragmentRenderingTest#test_native_collection_caching_uses_the_bounded_store_without_replacing_shared_stores: undefined method 'stubs' for an instance of Re
test/room_push_test1037FAIL Room::PushTest#test_does_not_notify_for_invisible_rooms: WebPush.payload_send was expected 2 time(s), got 1
test/message_creation_test606never linked — spinel: 3 refusals, nothing written
test/web_push_persistent_request_test606never linked — spinel: once-campfire/test/test_helpers/push_service_test_helper.rb:87: unsupported multiple assignment call target no writer: node 265347 (MultiWriteNode)
test/record_cache_test505never linked — Fix the signature or the call.
test/response_cache_test404never ran —
test/room_messages_count_lifecycle_test734FAIL Room::MessagesCountLifecycleTest#test_concurrent_ensure_repairs_leave_triggers_installed_and_counts_accurate: assert_empty failed
test/room_messages_count_tasks_test404never linked — spinel: /home/rubys/spinel/bin/../packages/pathname/pathname.rb:322: this String is shared with another name, and the route does not carry the shared handle yet
test/messages_caching_test413FAIL MessagesCachingTest#test_boosts_are_cached_inside_their_message_instead_of_one_fragment_each: expected "#message_4 #boost_4" in response body
test/qr_code_controller_test303FAIL QrCodeControllerTest#test_show_renders_a_qr_code_as_a_cacheable_svg_image: expected response :success, got status=302 body=""
test/users_sidebars_controller_test633FAIL Users::SidebarsControllerTest#test_a_cached_direct_that_is_already_unread_still_sorts_by_its_latest_message: no implicit conversion of Symbol into String
test/active_storage_authentication_test422FAIL ActiveStorageAuthenticationTest#test_disk_service_upload_endpoint_rejects_anonymous_callers: No route matches PUT /rails/active_storage/disk/eyJfcmFpbHMiOn
test/messages_boosts_controller_test532FAIL Messages::BoostsControllerTest#test_index_looks_up_the_boosters_of_all_boosts_at_once: assert_equal failed
test/accounts_controller_test651FAIL AccountsControllerTest#test_edit_lists_a_page_of_members_and_the_next_page_carries_on_from_it: no implicit conversion of Integer into String
test/fetch_metadata_test761FAIL FetchMetadataTest#test_cross_site_reads_remain_available_and_method_overridden_writes_stay_protected: No route matches DELETE /rooms/3
test/first_runs_controller_test431FAIL FirstRunsControllerTest#test_create_is_not_vulnerable_to_race_conditions: assert_equal failed
test/message_creation_commit_test101FAIL MessageCreationCommitTest#test_creation_commits_its_index_and_unread_writes_once_before_enqueuing_push: mocha: Room::PushMessageJob.expects(:perform_later)
test/message_searchable_test871FAIL Message::SearchableTest#test_bounded_search_keeps_older_reachable_hits_behind_inaccessible_matches: no implicit conversion of Time into String
test/presence_channel_test761FAIL PresenceChannelTest#test_subscribing_tells_the_user_s_other_tabs_when_they_read_the_room: assert_broadcast_on failed: no broadcast to "user_1_reads" carrie
test/push_subscription_test18171FAIL Push::SubscriptionTest#test_the_badge_defaults_to_the_subscriber_s_unread_room_count: mocha: WebPush.expects(:payload_send) with 1 chained link(s) is not a
test/room_messages_count_test651FAIL Room::MessagesCountTest#test_bulk_insert_all_and_delete_all_keep_the_counter_in_step: no implicit conversion of Time into String
test/room_test11101FAIL RoomTest#test_a_room_destroyed_later_resets_the_connections_of_its_former_members_as_revoking_their_memberships_would: assert_broadcast_on failed: no broad
test/user_test541FAIL UserTest#test_memberships_granted_to_the_open_rooms_are_like_any_other: assert_equal failed
test/web_push_pool_test211FAIL WebPush::PoolTest#test_every_notification_carries_its_subscriber_s_unread_room_count_as_the_badge: mocha: WebPush.stubs(:payload_send) with 1 chained link(
test/account_joinable_test220all green
test/account_test440all green
test/accounts_bots_controller_test550all green
test/accounts_bots_keys_controller_test110all green
test/accounts_custom_styles_controller_test330all green
test/accounts_join_codes_controller_test220all green
test/accounts_logos_controller_test660all green
test/accounts_users_controller_test330all green
test/action_text__attachment_test330all green
test/action_text_attachment_opengraph_embed_test990all green
test/action_text_attachment_test330all green
test/application_cable_connection_test330all green
test/autocompletable_users_controller_test440all green
test/block_banned_requests_test330all green
test/first_run_test330all green
test/log_scrubbing_formatter_test660all green
test/membership_test990all green
test/message_mentionee_test220all green
test/message_pagination_test110all green
test/message_test10100all green
test/messages_boosts_by_bots_controller_test12120all green
test/messages_by_bots_controller_test23230all green
test/opengraph_document_test330all green
test/opengraph_fetch_test12120all green
test/opengraph_location_test770all green
test/opengraph_metadata_test11110all green
test/restricted_http_private_network_guard_test24240all green
test/rich_text_helper_test440all green
test/room_messages_channel_test660all green
test/room_messages_via_stock_turbo_channel_test220all green
test/rooms_closeds_controller_test990all green
test/rooms_controller_test10100all green
test/rooms_direct_test550all green
test/rooms_directs_controller_test660all green
test/rooms_involvements_controller_test550all green
test/rooms_open_test220all green
test/rooms_opens_controller_test990all green
test/rooms_refreshes_controller_test110all green
test/searches_controller_test770all green
test/sessions_controller_test10100all green
test/sessions_transfers_controller_test220all green
test/unread_rooms_channel_test330all green
test/user_avatar_test330all green
test/user_bannable_test110all green
test/user_bot_test440all green
test/user_role_test330all green
test/users_avatars_controller_test440all green
test/users_bans_controller_test770all green
test/users_controller_test660all green
test/users_profiles_controller_test440all green
test/users_push_subscriptions_controller_test660all green
test/webhook_test660all green
test/welcome_controller_test220all green

Emit diagnostics

From the transpile that produced the tree under test: 1,665 files, 0 errors, 52 warnings. Warnings are a modeling-debt ledger rather than a failure — the Ruby target emits through its gaps — so the COUNTS are not comparable to the test failures above.

They are not independent of them either. send_dispatch_failed in particular names a call the analyzer could not resolve, and three of the fixes on this lane came out of those lines before the suite reached them at all — the analyzer had already written the diagnosis. Read the emit log before the fail log.

DiagnosticCount
lower_residue51
unsupported1
Artifact: summary.json — every number on this page comes from it. Source: basecamp/once-campfire at 11d3fb9ce01f.