Wayfinder map — the conversation works (v1) #41
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#41
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?
Destination
The conversation works. A real voice conversation — you speak, she answers in
her own voice, Live2D renders, the log records it — held on all three surfaces:
the Windows desktop shell, the OnePlus Pad, and an Android phone. v1 ends there.
v2 is whatever the days after it surface.
Notes
Domain. Denpa is single-user: one operator, one server, many devices. The
Receiver (
denpa-client) is a Tauri app; the go-between (denpa) is a Hermesgateway plugin;
hermes-agentis NousResearch upstream and read-only.ADR-0011(denpa/docs/adr/0011-devices-pair-to-the-go-between.md) is thedecision that reshaped this effort — devices enrol with the go-between, not with
Hermes — and every ticket here sits downstream of it.
ADR-0002(
hardware-goes-through-rust) is the other standing rule.v1 is you, on your own hardware. Nobody else installs it. That is what puts
packaging, install docs and public distribution out of scope below.
Skills every session should consult:
/grillingand/domain-modelingbydefault;
/prototypefor the shape questions;/researchfor anything outsidethis working directory;
/codebase-designwhere a ticket decides a module seam.Standing preferences. Cite
file:lineor say "unverified". Reviews must RUNthe code, not read it. Paste the real test tail, never paraphrase it. Never
merge, never push — report the branch.
.denpa-work/is always safe to write;a repo with a wave in flight is not.
Execution already decided, deliberately not ticketed here. The enrolment
chain —
ollvt-hermes-bridge#25→#26→denpa#40, then closingollvt-hermes-bridge#23by deletion — is filed, sequenced and unblocked byADR-0011. It is build work, not fog. This map does not restate it.
Decisions so far
#34turned out mostly built already, and is rescoped to deleting the deadChatHistoryPanelpath plus two device checks.arm64-v8a. Surfaced #49 (onboarding is a fixed 292x600 card on device) and the NDK r28 prerequisite for#35.ws://address. Hermes-relayed enrolment stays v2.#36) is v2 and travels with the Android capture path. Accepted cost: a known ADR-0002 violation stays in the tree, and no screen sharing on tablet or phone.AudioRecordfor its echo cancellation; the Windows AEC path is unknown and is now #54.#23is disabled in place, not reverted.#35's "cpal on Android is unreliable" is refuted — the real Android question is echo cancellation, not reliability.Not yet specified
the conversation was attempted on 2026-07-30 and the answer was the compose
surface, now #53. What else must be legible in the
moment — as opposed to the full taxonomy in
#15— still waits on a proof runthat gets further than the first mic press.
overlay gone and
#36deferred to v2, nothing competes for the process — the micis the only foreground service v1 needs. But the phone runs SDK 37, newer than the
sources
#44could reach, and every release since 14 has tightened these rules.call and never revisited. "The conversation works" may or may not include it;
answerable only by listening, once the conversation runs.
ollvt-hermes-bridge#22closed the frametranslation table on a branch. Whether anything the v1 conversation needs is
still unrouted has not been checked against the merged tree.
Out of scope
denpa#30— 記録 browse. Read-through to Hermes sessions. No wire existsand the per-day paging model is unsettled. Not needed to hold a conversation.
denpa#15— failure screens. What is left of the taxonomy after foursplits: 6b (auth, waits on ADR-0011 enrolment), 6c (no model, waits on
#52),the reconnect toast (waits on
#57), and the six-part card treatment. The fogentry anticipated that some of it would return, and on 2026-07-30 it did, four
times — #53 the compose surface,
#57 reconnect,
#58 WAITING, and
#59 the two fault screens v1 needs. All four are
in v1; this remainder is not.
denpa#23— the Android overlay pal. Ruled out by #47: a second way of being present, not a way of having a conversation, and its foreground service competes with the microphone rather than helping it. Disabled in place.denpa#36— screen capture into Rust. 画面共有 works on desktop and staysin v1; only the migration waits, travelling with Android capture.
denpa#37— re-enrol / reset path. Consequence accepted: a wrongenrolment is recoverable only by editing state by hand.
by construction under ADR-0002 and no degraded-mode treatment is owed to it.
third-party audit. v1 ships to one operator on hardware they already own.
The frontier is empty.
ollvt-hermes-bridge#24— the map's last open ticket — was decided on 2026-07-30: yes, an approval is answerable on any enrolled device.Recorded as ADR-0012 in the go-between (
949a559). Option 1 taken whole: ADR-0011's per-device token is the secret #24's blocking decision was waiting on, so an ask binds to the operator rather than to a socket — offered to every authenticated connection, first valid answer wins, dismissed on the rest. ADR-0001's "answering anywhere dismisses everywhere" stands unchanged; the wire changes to keep it. The reconnect orphan closes as a side effect, so the half-measure of re-offering on reconnect while keeping connection binding is dropped rather than shipped first.#24 is now
ready-for-agentand blocked onollvt-hermes-bridge#26— building it before enrolment lands would widen the LAN exposure to every screen instead of one.Nothing on the map is waiting on a decision. What remains is build.
Three fog patches graduated and resolved, 2026-08-01. The frontier was empty and had been since 2026-07-30, so this session charted rather than worked: everything below came out of Not yet specified, not from an open ticket.
Recording it as a comment because the tracker wrapper can post and close but cannot edit an issue body. The map's Decisions so far and Not yet specified sections still read as they did; the lines to fold into them when someone next edits it are marked below.
For Decisions so far
microphoneforeground service is needed only to survive the screen going off; without one,AudioRecordkeeps returning buffers of zeros rather than failing. The on-screen key is already a legal start point because the activity is visible; a backgrounded global hotkey is not reachable as designed. Android 17's audio hardening covers playback, not capture. Build work filed as #82.denpa.turn-complete(ADR-0006's drain signal) is sent up and dropped in the adapter's unknown-frame branch;typingfires every turn and the client logs it as unknown;clarifyis offered to nobody, so an ambiguous request suspends a turn that never returns. The 思考 row is fully built with no frame behind it in either repo.camilaon the local Qwen3-TTS server; the composite is unchanged, withedge_ttsstill the backstop and_announce_fallbackstill the disclosure. The templates saidmaifor a week while the machine saidcamila; corrected in36ff9e6. Surfaced #34 — the voice cannot be switched without editing a file and restarting, which is why the question sat so long.To clear from Not yet specified
#81.denpatou#32.denpatou#33.Still fog
denpatou#32sharpens it slightly:typingis the frame the client is currently inferring rather than reading, so whatever this becomes should start there.New, and not fog
denpatou#32produced nine findings that are defects rather than decisions. They have not been filed — nine tickets is a triage session of its own and the operator was mid-decision. The list lives on that issue.The last fog patch is cleared, 2026-08-01. "What failure behaviour v1 actually needs, beyond typing" waited on a proof run that got further than the first mic press. That run happened on 2026-07-31, and the operator's verdict on what was legible in the moment was:
Which is not a treatment gap. It is that tool calls are the only thing in 受信記録 with a producer behind them — the 思考 row has no frame in either repo, and
typingarrives on every turn and is logged as an unknown message.denpatou#32found both by reading; the conversation is what made them matter.Not yet specified is now empty.
Decisions taken
denpa#58asked for this call and did not get it; taken now. Filed as denpa#83 together with reading thetypingframe, since they are the same state seen from two ends.#58fixed for 割り込み;#59left the same thing reachable on the dock. The toast stays for the pal at 0.7×, which has no fault screen. Filed as denpa#84. Deliberately not taken: making the press run the fault screen's own action — one key meaning two things by state is worse than a key plainly stood down.Graduated into tickets
For Decisions so far
#53,#57,#58and#59covered the faults, and what was left was legibility during a turn that is working. Only tool calls have a producer; her reasoning and her thinking state do not. Three tickets, no new fog.Where the map stands
Not yet specifiedis empty and the frontier isdenpa#60anddenpa#51, both build rather than decision. Nothing on this map is waiting on a decision — again, and this time with the fog gone rather than merely unticketed.