Skip to content

[OC-011] Implement long-term and derived identities #12

Description

@tcballard

Gate: G1 — Nostr-only product

Planning source: validated implementation plan PR #1


  • Depends on: OC-004, OC-010.
  • Deliverable: Noise static, Ed25519 signing, separate Nostr device seed, peer fingerprint/ID, per-geohash and bridge|cell secp256k1 derivation.
  • Acceptance: all identity fixtures pass, invalid secp scalars retry exactly, fallback derivation is tested, and regeneration happens only after explicit identity absence.
  • Excludes: favorites and QR.

Maintainer reconciliation — 2026-09-04

Next closure evidence/work: Close candidate: attach identity fixtures, invalid-scalar retry/fallback, bridge-domain separation and restart/no-regeneration tests before closing.

Baseline reviewed: main 87c3bcb7d65e3e2ab8ae317694b751f8efe9a8ed. Implementation presence is not a live conformance claim.

Verified closure — 2026-09-04

Checked every deliverable and acceptance criterion on main 87c3bcb7d65e3e2ab8ae317694b751f8efe9a8ed.

  • Identity implementation: independent secret roots, Noise static key, Ed25519 signing, fingerprint/peer ID, geohash derivation and separate bridge|cell domain.
  • Identity fixture tests: pinned Swift private/public/npub outputs and signing/key-role checks.
  • Inline unit tests prove exact invalid-scalar retry order, fallback only after ten invalid candidates, and bridge domain separation.
  • Persistence implementation generates only for RecordNotFound; decoding/authentication/I/O errors propagate without replacement.
  • Persistence regression proves restart-stable identity and failure on tampered ciphertext.

CI job 100951293375 explicitly records these tests passing, plus identity_outbox_and_commands_survive_restart. This is the successful pre-merge CI for #222's merged tree. No fresh local Rust run is claimed.

Closed as implemented within OC-011 scope. Secret Service host qualification, favorites and QR remain separate issues.

Activity

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions