Open routing foundation: bounded discovery and late-join progress - #32
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds an explicit open contact-discovery profile without a common authority or global roster: signed control, bounded two-view routing, leased contact shards, durable revision/revocation/conflict floors, a Python HTTP node/client, and independent native TypeScript control/routing/state kernels.
Late nodes can make progress through full introduction queues. Verified seed reachability survives signed backpressure; verified replacement entries can be introduced without exploratory eviction; exact live peers already proven by challenge do not refill pending capacity. Unknown or changed descriptors and failed probes still require independent challenges. Public rejoin/restart uses the newest known signed seed, and owners can propagate signed contact withdrawal.
Every fourth maintenance lookup refreshes the owner's own region so later bounded announcements reach newly discoverable neighbours. The other three cycles retain random targets. Each cycle still shares 16 RPCs, 1 MiB responses and five seconds across pending challenges, announcements and one lookup. The schedule is explicit in reports. Compact diagnostic serialization preserves complete failure lists within unchanged report limits.
Packages this first slice as 0.28.0-alpha.0, with matching runtime/plugin/TypeScript metadata and download links. Open messaging and the complete TypeScript open Agent/HTTP runtime remain unsupported. The full 0.28.0-alpha.1 consent, encrypted delivery and replica-repair milestone remains ahead.
Validation:
dc485334f8ad8629db68ef25c7c618a732f15c6c: three-seed cloud run 34191451681 passed. Seeds17/29/43 each returned 1,000/1,000 healthy and 1,000/1,000 bootstrap-exit lookups, meeting the original independent 99%/97% gates. Complete reports and source bindings were checked; earlier failed runs are retained in the runtime evidence document.bd2b92cfb22f12648502cce78d2558a6e380fa15: 18 existing packaging/core methods passed in 3.726 seconds; the extracted 56-module client preserved three synthetic records through save/recall, retries, hooks and backup/restore. Other than the VERSION constant, all 215 other Python/TypeScript files remain byte-identical. Dependency metadata changes only its own package version. The scale run remains pinned to dc48533, not relabelled as a new execution.Scale uses real Ed25519 with logical in-process transport, not 100-node HTTP/SQLite, actual AI instances or independent physical failure domains. Bootstrap exit inherits healthy-phase learning. Descriptor renewal, complete native TypeScript operation, first contact/consent, encrypted mailboxes/receipts, repair and larger/hostile/multi-model acceptance remain later gates. Previously published releases are preserved.