Say which hop broke: the two fault screens v1 actually needs #59
Labels
No labels
needs-info
needs-triage
ready-for-agent
ready-for-human
v2
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wayfinder:ticket
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aiko/denpa#59
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
When something breaks, say which hop broke and what it actually said. The v1 slice of
#15.#15holds five fault screens; three of them cannot be built correctly yet, and the two that can are the two you hit while simply trying to use her. This is those two, at the fidelity v1 needs — which is legible, not complete.In scope
6a — the socket will not open.
どこにも繋がらない, primary actionアドレスを直す. Fully client-side and real: the client knows its own socket state. This is what a wrong address, a go-between that is not running, or a machine that is asleep looks like. Today it presents aserror.websocketNotOpenwith no explanation and no action.5a — she could not answer.
上流が応答しない, primary action再同調.#15's reality audit already downgraded this from a live health readout to a post-failure state built from theerrormessage the go-between sends — the client cannot know the upstream is down before a turn. That downgrade stands, and is what makes it buildable now.Both need only the parts that carry information:
詳細holding the real error text the go-between sent — inventing likely causes the client cannot substantiate is explicitly ruled out by#15's auditDeliberately not in scope
The full six-part card treatment, the texture block, and the other three faults, all of which stay in
#15:#26/#40.姿を選ぶassumes a picker that#52establishes needs rebuilding first.#57to give it a gap length to name.Acceptance
error.websocketNotOpen.詳細.Related
#15— the rest of the taxonomy,v2#57— reconnect, which 6a should not paper over#41— the wayfinder map this is scoped againstDone in
3f9fd61(implementation376bd0c), merged tomain.What was built
6a — the socket will not open.
どこにも繋がらない, from this client's own socket phase and nothing else. The chain says✕ 中継局 socket 開けない/— 上流 HERMES 確認できない— hop two is unverifiable rather than blamed, because with our own socket shut it is. 詳細 carries the address we are dialling, which is the factアドレスを直すacts on. The key opens 調整 on 局, where the address row actually is (settings-sheet.tsx:483Station) — it opened 電波 until I pressed it in a running client and landed on the tuning tab with no field.5a — she could not answer.
上流が応答しない, from the pushedupstream-statusand from a turn that did not come back. 詳細 quotes the go-between verbatim or says中継局からの説明はない. No likely-cause list, per this issue's constraint and#15's audit; and nothing anywhere reads the error text to decide anything — ADR-0011's rule applied to the go-between's prose as well as hers (fault-wired.test.tsasserts it).Both stand down for 調整 and for an outstanding 承認, so neither primary key buries its own destination.
Acceptance
error.websocketNotOpenWhat "verified" means here
Run against a real client, not a flag:
圏外, andアドレスを直すopened 調整 on 局 with the address field pre-filled.upstream-status {"attached": false}and answering atext-inputwith the realreport_undeliveredstring, 5a drew withNo adapter is attached, so the turn was not delivered.under 詳細, and再同調dropped, redialled and cleared it.That second peer was a 30-line stand-in sending the two frames copied from
conversation_handler.py:79andwebsocket_handler.py:145. I did not run the Hermes stack.Two defects the run found that reading would not have
Both silent, both fixed here:
two-hopcalls a CONNECTING socket unknown, which is right for a cold start and for onboarding's calm 同調中 — but the backoff spends most of its time there, and an unreachable host holds CONNECTING for the whole TCP timeout. The screen appeared and vanished on a loop.faultAfternow holds it across a retry that has not landed.setAiStatereaches the message handler's closure — so 詳細 said it had been told nothing while it had just been told exactly what happened.AiStateContextnow publishesaiStateRef, written by the setter, for handlers that cannot wait for a render.Not done
error.websocketNotOpentoast. The acceptance is met — that toast is no longer what you get — but it is still reachable, and the toast is deliberately kept because it is the pal's only fault signal at 0.7×.なぜbutton still has no handler (pal-container.tsxpasses noonWhy), so 7e's way into the full screen is unwired. Pre-existing, out of this slice.Gate: 801 vitest across 54 files (was 770/50), 18 Rust.
npx tsc --noEmitis at 584 errors, none in any file this touched.