Repository navigation
Conversation
… and pins An error settles the async its node asked for, so a hold never waits on it; but settled is not shown. A value landing on a held node is staged until the frame reveals, an error publishes at once. F-1 and F-2 already decide this; D-40 states it as a narrowing of F-12, S-41/S-42 are the screens, Q-6 puts the two columns to the maintainer, Q-7 the loadingValue contract question #3886 raised beside it. Pinned it.fails. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Q7JD9PktsxtBJJbWmtuwr
|
Size (brotli, eager entry chunk)
|
Coverage Report for CI Build 38303347887Warning Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes. Coverage remained the same at 77.429%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsNo coverage regressions found. Coverage Stats
💛 - Coveralls |
Merging this PR will degrade performance by 12.55%
|
| Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|
| ❌ | memo + sync render effect only (reference) |
26.7 ms | 30.6 ms | -12.55% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing docs/errors-are-answers (0a44c6c) with next (49a765c)
…tus error Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015Q7JD9PktsxtBJJbWmtuwr
|
The size Generated by Claude Code |
|
CodSpeed reports "memo + sync render effect only (reference)" at −12.55% on this head; the previous run of this same PR reported it at +15.74%, and the diff is docs plus a pinned test, so it cannot move a benchmark. The report also flags different runtime environments between base and head. Nothing to fix here; it needs an acknowledgement on CodSpeed, which I cannot do from this session. Generated by Claude Code |
Requested by Ryan · project thread
Summary
Docs and pins only; no engine change. The principled answer to #3886, laid out the way the async rules are.
Before: the rules say what a value does under a hold (F-2: staged until the frame reveals) and what an error is (F-12: a boundary returning to its fallback), but nothing says when an error shows. The engine publishes an error straight into the node's working status, which is also what reads, effect arms and boundaries look at, so an error has one state where a value has two (staged, committed). Under a hold that is the torn screen F-1 forbids: the error fallback (content, F-4) beside the previous frame's sibling content.
After: D-40 (proposed) states the narrowing of F-12: an error is an answer; it ends the wait like a value and it shows when a value would. What a hold waits on does not change. S-41 and S-42 are the screens (a held rejection; a held recovery, including recovery to the last good value). Q-6 puts the two columns to the maintainer; Q-7 carries the
loadingValuecontract question #3886 raised beside it, to decide on its own. F-12's "what it does not say" points at D-40.Pinned
it.failsintests/error-is-an-answer.test.ts, failing at the deviation: with no boundary the effect's error arm runs before the sibling lands; with a boundary the screen holds but the untracked read throws; during a retry the untracked read of a shown error serves the pre-error value. The no-hold case (an async landing equal to the last good value never reaches the effect) is pinned too; it is a plain bug and gets its own fix.How did you test this change?
tests/error-is-an-answer.test.ts: 5 expected failures, each at the assertion the scenario names (checked by flipping them toit).🤖 Generated with Claude Code
https://claude.ai/code/session_015Q7JD9PktsxtBJJbWmtuwr
Generated by Claude Code