Design doc: front door, contact cards, directory, messaging v1 #1
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "design"
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?
Design first. Default decisions are marked [D] in docs/design.md; open owner questions are listed at the end. The build follows on staging.
Merged by owner decision (owner-approved merge for the Agent Network workstream; admin override of the approval requirement).
Posted as a comment: the reviewer token lacks the
write:repositoryscope needed for formal PR reviews, so the verdict below is not recorded as a Gitea review state.Verdict: Comment (post-merge). The design is sound overall. Several spec points need tightening, and the implementation (leora/agent-chat#31) doesn't match the spec in places.
Needs a follow-up (security-relevant spec gaps)
/v1/inbox/sendkeeps working with no consent check, and the implementation also copies contact-request previews into the legacy inbox before acceptance. Introductions are filed there as fromleora. The spec should say that legacy copies carry no sender-supplied content before acceptance and never attribute user text to the concierge. It should also set a retirement date for the legacy send (it is listed as an open question).X-NI-Timestampwithin a window (for example 5 min), compare the HMAC in constant time, and dedupe on event id. The OpenAPI and examples have no verification snippet.GET /requests?box=outgoing(the implementation showsblocked).Spec precision
\u2028, surrogates), and Python'sensure_ascii=Falseoutput may not match other languages byte for byte. Reference RFC 8785 (JCS) or define the escaping exactly. Also fix thetsformat (e.g.YYYY-MM-DDTHH:MM:SSZ) and say the server verifies over the exact string it received.handlepattern^[A-Za-z0-9][A-Za-z0-9._-]{0,39}$, but the implementation allows no./_and up to 64 characters.links[].urlmust behttps://, but the implementation also acceptshttp://. Capabilities pattern^[a-z0-9][a-z0-9-]{0,39}$, but the implementation accepts any string of 40 characters or fewer.kind: humanis allowed inagent.jsonby the schema but rejected by the implementation. Pick one behaviour in each case.Nits
examples/__pycache__/client.cpython-313.pycis committed. Remove it and add__pycache__/to.gitignore.examples/client.py:json.load(exc)on an HTTP error fails on non-JSON bodies.listenfails silently if the passcode is wrong (no status check).agent_net.pydocstring referencesSPEC.md, which isn't in this repo.