Skip to content

0.5.239: a contact resolves to their node — adopt CIRISEdge v43.2.1 (#907) - #824

Merged
emooreatx merged 3 commits into
mainfrom
feat/contact-owner-records-pull
Oct 27, 2026
Merged

emooreatx merged 3 commits into
mainfrom
feat/contact-owner-records-pull

Conversation

@emooreatx

Copy link
Copy Markdown
Contributor

Why

Five-platform run 40415548665, on 0.5.238. The contact add from linux to android now converges in 20 s, but the next step, request:android<-linux, stayed red.

  • After the add, linux held android's owner key but not their announced owner→node binding (delegates_to owner → node, at federation). So the directed consent grant had no node to reach.
  • The canonical held that binding (checked read-only), but couldn't hand it over:
    • Subject Pull: the Attestation plane was not publicly subject-pullable, so the canonical refused.
    • Advertise: with 38,362 rows sent 1,024 per round from the oldest, a fresh node would reach today's rows after about 20 minutes.
  • Filed as CIRISEdge#907.

What

  • Edge v43.2.1 (approved by Eric). A conferred server now answers a stranger's Attestation subject Pull with the subject's live, announced, federation-scope owner-bindings and root acceptances. Persist and verify are unchanged.
  • Pending contacts. After a contact is added, the server tracks them until their person resolves to a node (announced_nodes_of). Every 10 s pass, it subject-Pulls the person's records from each consent peer (pull_subject_testimony). Once the person resolves, it also pulls the node's key, occurrence and route, then nudges replication so the grant travels.
  • Warning. contacts: CONTACT UNRESOLVED fires after 60 s and names the hop to check next.
  • The fix only takes effect where the canonical runs it. Rolling the canonical (the bridge, on Eric's go) is part of shipping this.

Tests

tests/contact_key_pull_e2e.rs::a_contacts_announced_owner_binding_arrives_on_a_subject_pull covers the fix:

  • The canonical holds the contact's announced binding and carries the production announced_relay selector. The asker holds only the contact's keys.
  • One Attestation subject Pull follows.
  • It fails on v43.2.0 with the production refusal line and passes on v43.2.1.

Local runs, all green:

  • clippy -D warnings
  • unit tests: 634 server and 374 lens-core
  • contacts_chat (41)
  • release_gates and substrate_contract_gate
  • field_conformance, log_citations and localization_gate

The localization guard also passes against client 0.5.233.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QriZxPx5aJvHXCGaTZmvKF

emooreatx and others added 2 commits October 26, 2026 18:37
After an add, a node behind the canonical held the contact's Key but not their
announced owner-binding, so the directed consent grant had no node to reach
(five-platform run 2026-10-26, request:android<-linux). The pending-contacts
pass now tracks an added contact until their person resolves to a node: each
pass it subject-Pulls the person's records from every consent peer, then the
resolved node's key, occurrence and route; `contacts: CONTACT UNRESOLVED`
WARNs after 60 s.

tests/contact_key_pull_e2e.rs::a_contacts_announced_owner_binding_arrives_on_a_subject_pull
is RED on edge v43.2.0 (the canonical refuses the Attestation subject Pull) and
goes green on the edge patch for CIRISEdge#907. Not to be pushed until that pin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QriZxPx5aJvHXCGaTZmvKF
…ject Pull

Edge v43.2.1 (067dbd7a; persist v59.1.0 / verify v20.2.0 unchanged): a
conferred server answers a stranger's Attestation subject Pull with the
subject's live, announced, federation-scope owner-bindings and root
acceptances, for nodes it publishes. The contact-resolution probe now passes
(red on v43.2.0, green here); its canonical bridge carries the production
announced-relay selector, without which edge serves nothing (correctly).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QriZxPx5aJvHXCGaTZmvKF
@emooreatx emooreatx added the ci:full Run the full CI matrix (macOS + Windows) on this PR label Oct 27, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-27T02:00:13.759517Z
We couldn’t complete this review. Comment @codex review to try again.
6a01d3b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

0.5.207-0.5.220 were deleted from PyPI on 2026-10-26 to get under the 10 GiB
project cap, so the lane failed at 'ciris-server==0.5.207 is not installable'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QriZxPx5aJvHXCGaTZmvKF
@emooreatx
emooreatx merged commit d80674c into main Oct 27, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:full Run the full CI matrix (macOS + Windows) on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant