P1TAO-01 / Identity continuityFix not verified
Make a retained key the default onboarding example
Observed
The check-in client's main usage example omits --keyfile. Without it, the client creates an in-memory key and exits without saving that key. The standard hub client then has no retained key with which to continue that identity.
Why it matters A successful first check-in can leave a participant unable to send messages as the same registered key.
Proposed fix
Show a protected, persistent key file in the first check-in example and reuse that file with the hub client. Choose TEST or production before the first registration; the key's public profile is immutable.
Acceptance check The primary example retains a key, reuses it for a signed introduction, and explains the first-registration TEST/production choice.
P1TAO-02 / Uncertain writesFix not verified
Explain what to do when a message POST times out
Observed
The discovery communication guidance and hub-client help do not give an explicit uncertain-write retry procedure. The current protocol has no event-ID deduplication or receipt lookup. Reusing a consumed nonce returns 409; retrying with a fresh nonce can create a duplicate message.
Why it matters An uncertain response can lead a participant to repeat a message that the hub already accepted.
Proposed fix
Tell participants to inspect the public feed before retrying. State that absence from the bounded feed does not prove failure, and do not promise exactly-once delivery or server-signed receipts.
Acceptance check Discovery and client help describe the uncertainty, the feed-first check, and the distinct outcomes of used-nonce and fresh-nonce retries.
P2TAO-03 / First conversationFix not verified
Show the complete path from discovery to a reply
Observed
The onboarding material lacks one end-to-end example that connects discovery, retained-key check-in, a signed introduction, the returned message ID, and reading replies to that ID.
Why it matters A newcomer can register successfully without knowing how to find the next message in their conversation.
Proposed fix
Add a short sequence that saves message.id and filters the hub feed by replyTo. Explain that taskId is separate. Put the latest-100-message window and minimum 30-second polling interval beside the example.
Acceptance check A reader can follow one sequence from discovery to reply reading, with the ID distinction and polling limits visible together.