feat(signals): ABANDONED_FLIGHTS, FALLBACK_FLASH, STACKED_HOLDS as findings - #3608
Merged
Merged
Conversation
🦋 Changeset detectedLatest commit: 3d5cd0c The changes in this PR will be included in the next version bump. This PR includes changesets to release 11 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Coverage Report for CI Build 35963056164Coverage remained the same at 73.134%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Merging this PR will not alter performance
Comparing Footnotes
|
ryansolid
marked this pull request as ready for review
September 24, 2026 00:45
ryansolid
force-pushed
the
feat/feedback-findings
branch
from
September 24, 2026 01:34
56d6784 to
f94b8d2
Compare
… feedback-table facts as findings `feedback()` already counted abandoned flights per source, fallback flashes per boundary and holds per interaction, but only for a consumer that imported the fold and read the tables. These are the same facts on the diagnostics channel at a threshold, as they happen: - ABANDONED_FLIGHTS (warn): one async source abandoned `count` flights in `windowMs` (3 / 1000ms), each superseded by the next before it landed — the request-per-keystroke signature. Once per window per source; the window lives in an engine WeakMap, not on the node. - FALLBACK_FLASH (info): a Loading fallback displayed and hidden inside FALLBACK_FLASH_MS (150ms, now exported and shared with the fold), judged at hide on the same display clock the `fallback` record uses. The open is kept for the check even with no fold and no listener. - STACKED_HOLDS (warn): `count` or more interactions (3) waiting in one hold when it commits — the person kept clicking or typing while the first answer was in the air. Counted over the open interactions at hold settle, before they are released. Three options (`abandonedFlights`, `fallbackFlashes`, `stackedHolds`) merged most-demanding like the rest; none is under `checks`, since these are verdicts on records, not cost accounting. Size: engine +756 B (cap 29.00 -> 29.80 KB); the tier moved 35 B with byte-count-identical core artifacts — the package-wide property mangler reassigns the core's short names whenever the engine's `_`-property usage changes — noted as drift (cap 17.45 -> 17.50 KB). Co-Authored-By: Claude via Cursor <cursoragent@cursor.com> Co-authored-by: Cursor <cursoragent@cursor.com>
…0 -> 31.45 KB Co-authored-by: Claude via Cursor <noreply@cursor.com>
ryansolid
force-pushed
the
feat/feedback-findings
branch
from
September 24, 2026 06:08
f94b8d2 to
3d5cd0c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Item 4 of
documentation/plans/responsiveness-findings-plan.md.feedback()already counts abandoned flights per source, fallback flashes per boundary and holds per interaction — but only for a consumer that imports the fold and reads the tables afterwards. These are the same facts emitted on the diagnostics channel at a threshold, while they happen, so an issue tracker hears them without shipping the fold.ABANDONED_FLIGHTS(warn) — one async source abandonedcountflights withinwindowMs(defaults 3 / 1000 ms), each superseded by the next before it landed: the request-per-keystroke signature. Once per window per source; the window is an engineWeakMap, so the node carries nothing.FALLBACK_FLASH(info) — aLoadingfallback displayed and hidden insideFALLBACK_FLASH_MS(150 ms, now exported and shared with the fold). Judged at hide on the display clock thefallbackrecord andfeedback().fallbacks[].flashesalready use; the open is kept for the check even with no fold and no record listener.STACKED_HOLDS(warn) —countor more interactions (default 3) were waiting in one hold when it committed. Counted over the open interactions at hold settle, beforesettleInteractionsHeldreleases them;datais the hold's plusinteractions.Options
abandonedFlights: { count, windowMs } | false,fallbackFlashes: boolean,stackedHolds: { count } | false— merged most-demanding like the rest (demandinghandles them generically:countmin,windowMsmax, boolean OR). Not underchecks: these are verdicts on records, not cost accounting, same asholds/longHolds.Public API
DiagnosticCodegains"ABANDONED_FLIGHTS","FALLBACK_FLASH","STACKED_HOLDS".AttributionOptionsgains the three options above.FALLBACK_FLASH_MSexported fromsolid-js/attribution(was a private constant in the feedback fold).Size
Engine +756 B (29.00 → 29.80 KB), mostly the three repair texts. The tier moved +35 B with byte-count-identical core artifacts: the package-wide terser
nameCacheruns files in sorted order andcore/attribution.jsprecedescore/core.js, so any change to_-property usage in the engine reassigns the short names the core's files receive — brotli drift, not code. Noted in the cap (17.45 → 17.50 KB); worth knowing for every engine PR. #3604 and #3607 also move the engine cap; whichever merges last re-measures.Tests: 6 new (fires-once-per-window / below-count-and-disabled for each). signals 3602 / web 898 / solid 685 green.