Skip to content

feat(discovery): add opt-in local destination presets and address book #324

Closed

Description

@abruption

Problem

Users working across multiple machines and Codex homes repeatedly reconstruct the same host/home/agent/recipient arguments. Session-peer already supports those routes and explicit target selection; the missing piece is a convenient local way to remember destinations and choose the intended current session.

Reference baseline: Python v1.2.1, source f19f2b5e9ac17d392375507bc753548cdfc0e751. This is a presentation and selection feature, not a team identity service.

Proposed scope

Design an opt-in, user-owned local address book or destination presets. A user supplies a friendly person/project label and supported route/agent/target selectors. Group explicitly requested discovery results by those labels and display the concrete resolved destination before use. CLI/config spelling and override precedence remain design choices.

Reason Network's person/machine/session directory is the UX reference: design. Start with local configuration and explicitly selected destinations; no shared roster, always-on daemon or transcript-derived work summaries.

Acceptance criteria

  • Specify a bounded configuration schema, owner-only storage, validation, update/removal behavior and precedence between presets and explicit CLI options. Store no credentials, executable commands or receipt secrets.
  • Reuse existing local/SSH/paired route validation; do not allow presets to introduce alternate SSH hooks, implicit pairing, policy changes or automatic native-home selection.
  • Distinguish reusable route presets from snapshot-bound recipient bindings. A friendly label is not authenticated person identity, a generation token or proof of current ownership.
  • Show canonical target and route context; reject ambiguous/conflicting matches. Preserve explicit home selection and existing writer/storage checks.
  • Never silently rebind an originally pinned recipient, inherit old mail into a replacement session, or reuse approval for a changed destination. Require explicit reselection where the saved binding no longer applies.
  • Revalidate before actual submission; preserve unsupported generation and unknown/no-resend semantics. This feature must not claim atomic Codex ownership guarantees.
  • Query only destinations the operator explicitly selects, with existing finite limits and visible partial failures. Do not scan a network or automatically publish local session metadata.
  • Cover duplicate labels, missing/invalid config, changed host/home/recipient, conflicting overrides, partial discovery and malicious labels with offline fixtures.
  • Document the supported initial route scope and four-language examples. No automatic MCP/hook installation or group broadcast.

Relationship and planning

Use #323 for capability/readiness explanations and #296 for already-created handoff intent status. Reuse existing guided setup (#211) rather than reopening its completed work. #180/#268 remain independent identity/storage investigations; this address book cannot substitute for their guarantees.

Priority P2; v1.3.0 planning candidate, second among the Reason-inspired UX slices. Research remains the owner's current priority. Registration does not authorize implementation, new live experiments, deployment or release.

Activity

  1. added this to the v1.3.0 milestone on Oct 22, 2026
  2. added
    enhancementNew feature or request
    priority:P2Planned reliability, acceptance or feature work; priority does not authorize implementation.
    on Oct 22, 2026
  3. abruption commented on Oct 23, 2026

    @abruption
    OwnerAuthor

    The owner-approved additional implementation is now in PR #328 at d004928f7eeb9f9985f23730d90b0bfd80f92ddd.

    This adds a separate saved-recipient store, explicit observation/revision/target confirmation, CAS reselection, grouped bounded discovery, verified SSH host-key pinning, and existing native ownership/generation guards. Mac/Linux local/SSH Claude/Codex is the approved scope; Windows, paired-device and Antigravity address bindings are excluded rather than advertised as implemented. Codex generation remains unsupported, and writer observations are not atomic incarnation or SQLite-attestation guarantees.

    Claude Opus 5.5 and Codex CLI independent reviews were completed before the push. Confirmed findings were corrected with regressions, and Gemini 3.8 Flash Medium reviewed the four-language documentation. The PR describes exact versions, evidence hashes and limits.

    Focused tests: 59 pass on Python 3.9 and 3.13; documentation: 65 pass; generated standalone and diff checks pass. Current-head CI and isolated sibling-feature integration are being checked separately. Local native permission tests are constrained by the required external volume; the PR explicitly separates controlled-metadata fixtures and reproduced baseline failures from ownership-enforcing CI.

    This issue remains open pending normal review/merge and explicit disposition of excluded follow-up scope. No release, live delivery experiment, global installation or operations change was performed.

  4. abruption commented on Oct 26, 2026

    @abruption
    OwnerAuthor

    v1.3.0 release closeout — 2026-10-26

    Closing as completed for the owner-approved release scope, following the owner's milestone cleanup instruction. The original proposal/checklist is retained as history; this is not a blanket assertion of every platform or broader research guarantee.

    Route presets and a separate recipient address book are published for the approved Mac/Linux local/SSH Claude Code and Codex scope. Bounded private storage, explicit target/revision confirmation, CAS reselection, grouped discovery and effect-boundary writer checks are covered.

    Evidence: merged PR #328; published v1.3.0 scope, source 938630063b69bf6e0ae69d4b11e2095c30f289f4; successful publication and artifact/install verification. Static source/test-definition recheck today: tests/core/test_addresses_storage.py; tests/core/test_address_selection.py; tests/core/test_address_send_guards.py. Two read-only subagent audits independently reviewed the split issue groups; no new mandatory closure blocker was found. No new tests/live experiments or deployment were performed during this closeout.

    Remaining boundaries: Explicit disposition of excluded scope: Windows, paired-device and Antigravity address bindings remain unsupported and unscheduled, not completed by this issue. No current requirement warrants creating duplicate expansion issues. Friendly labels/writer observations are not identity or atomic-generation/storage proofs; #180/#268 remain open.

    Retain the closed issue in v1.3.0 as the release record. Optional excluded expansions are not automatically promised for another release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority:P2Planned reliability, acceptance or feature work; priority does not authorize implementation.

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions