Onboarding — six steps gated on a real two-hop verify #13
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#13
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?
What to build
Six screens (card 3a): 待受 → 周波数 → 集音 → 姿 → 重ねて表示 (Android only) → 開局.
周波数 is the only gate, and it gates on real responses from both hops, not on the address field being non-empty:
✓ 中継局 — socket openand✓ 上流 HERMES — /health 200, joined by a dashed connector. Address plus an optional token (blank is fine on a LAN).Steps 2–4 are all skippable and each states what you lose. 集音 previews the mic meter before asking for permission. 姿 lists models from the go-between with installed / downloading / not-fetched states. 重ねて表示 only appears on Android.
開局 ends live, with the first transmission on screen.
Design reference:
docs/design/denpa-receiver/README.md(card ids1a,4a… index intoDenpa Receiver.dc.html, openable in a browser).Acceptance criteria
Blocked by
Reality audit
Governing rule: build to reality, Hermes leads. Not doing something is acceptable if it does not break core functionality. Breaking the design is acceptable. Building UI that does nothing is not.
Audited against the actual wire surface:
hermes-agent 0.19.0, verified running):/health,/v1/models,/v1/runs,/v1/runs/{id},/v1/runs/{id}/events,/v1/runs/{id}/stop,/v1/runs/{id}/approvalmessage.delta,tool.started,tool.completed,run.completed,run.cancelled,run.failed/run.errored,reasoning.available,approval.request(carries a per-requestchoicesarray and sets run statuswaiting_for_approval; the go-between discards it today — see #19)full-text,audio,control,error,set-model-and-conf,config-switched,config-files,background-files,history-list,history-data,new-history-created,history-deleted,user-input-transcription,backend-synth-complete,force-new-message,tool_call_status,interrupt-signal,heartbeat-ack,group-updatetext-input,mic-audio-data,mic-audio-end,raw-audio-data,ai-speak-signal,interrupt-signal,fetch-history-list,fetch-and-set-history,create-new-history,delete-history,fetch-configs,switch-config,fetch-backgrounds,audio-play-start,request-init-config,heartbeatRescoped: verify by transmission, not by health check
周波数 cannot verify the upstream before a turn happens — there is no health message. Gating on "both hops responded" is unbuildable as drawn.
Replace it with something better and real: send a test transmission. The probe is a real
text-inputround-trip. If afull-textreply comes back, both hops are proven — the socket opened and Hermes answered. That is a stronger guarantee than two status checks, and it is exactly the failure the current app hides.Render it as the two-hop chain still: socket confirms immediately, upstream confirms when her reply arrives, with the probe visible as a real first transmission rather than a spinner.
Also cut: model download progress. 姿 lists what the go-between offers via
config-files/set-model-and-conf. There is no download-progress message, so the "downloading, progress bar over tuning static" state is not buildable. Show installed and selectable only; drop the three-state card.Everything else in this issue is unchanged. 集音 (mic permission) is real and client-side. The Android step depends on #23.
Closing in favour of #28, rewritten against the ADRs.
This issue's premise changed with ADR-0001: Denpa is a Hermes gateway Platform adapter and the
api_serverHTTP surface is abandoned entirely. Patching the body would have left a trail of corrections on top of a stale audit block - the same pattern that got 承認 wrongly cut once already.Decisions now live in
docs/adr/in the go-between repo (branchdocs/hermes-platform-adrs). The replacement issue references them rather than restating them.