<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp  "&#160;">
  <!ENTITY zwsp  "&#8203;">
  <!ENTITY nbhy  "&#8209;">
  <!ENTITY wj    "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     version="3"
     submissionType="IETF"
     docName="draft-kolomytsev-pshmp-core-overview-00"
     category="info"
     ipr="trust200902"
     xml:lang="en"
     symRefs="true"
     sortRefs="true"
     tocInclude="true"
     tocDepth="3">

  <front>
    <title abbrev="PSHMP Core">PSHMP Core: A Hybrid L4 Overlay for Proactive Self-Healing and Resilient Multi-Hop Delivery</title>
    <seriesInfo name="Internet-Draft" value="draft-kolomytsev-pshmp-core-overview-00"/>
    <author initials="A." surname="Kolomytsev" fullname="Alexander Kolomytsev">
      <organization>Independent Researcher</organization>
      <address>
        <email>giro.pandemik@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="3"/>
    <abstract>
      <t>PSHMP Core is a hybrid L4-oriented overlay designed to keep multi-hop data delivery working when individual nodes, links, or network segments become unstable. It runs above ordinary IP infrastructure and does not require changes to Layer 3 routing.</t>
      <t>Under stable conditions the system builds linear relay chains. When several nodes on a path show degradation, it can switch locally into a mesh-style recovery mode: collect alternative candidates, apply progressive fallback rules, enforce a quality gate, and replace the affected path. Continuous node assessment (K-Factor), diversity-aware selection, failure tracking, gossip and DHT discovery, and batch acknowledgements with gap recovery form the supporting mechanisms.</t>
      <t>This document describes the architecture (including component layers), operating principles, key evaluation and delivery formulas, and the relationship to an experimental implementation (PSHMP Core v3.1). Implementation-specific scoring weights, exact thresholds, and proprietary optimisations may be refined by integrators; the formulas given here represent the reference model used in the current experimental codebase.</t>
    </abstract>
  </front>

  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>
      <t>Distributed systems rarely enjoy perfect connectivity. Packet loss, jitter, overloaded links, node failures, and partial outages appear in cloud, edge, industrial, and telecommunications environments alike. Classic recovery usually waits for a hard failure and then reacts. By the time a path is declared dead, applications have already felt the impact.</t>
      <t>PSHMP Core takes a different stance. It treats progressive degradation as a first-class signal. Nodes continuously evaluate their own and their neighbours' stability using a composite metric (K-Factor). When quality falls below configurable thresholds, the system starts reconstructing the affected delivery path—often before the path is completely unusable. The result is an overlay that tries to keep traffic moving with less disruption and with less dependence on any single central controller.</t>
      <t>The overlay sits above existing IP. It does not replace routers or rewrite the Internet Protocol. It adds a logical layer that can select relays, build multi-hop chains, detect trouble early, and rebuild paths when necessary.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Scope and Positioning</name>
      <t>PSHMP Core is intended as a technology foundation, not a finished consumer product. Organisations that already operate distributed platforms can integrate it to gain an additional resilience layer. Typical target environments include:</t>
      <ul spacing="normal">
        <li>edge and multi-site computing;</li>
        <li>telecommunications and backhaul overlays;</li>
        <li>industrial and infrastructure networks;</li>
        <li>real-time or telemetry-heavy systems;</li>
        <li>geographically spread services that must tolerate partial outages;</li>
        <li>any architecture that needs multi-hop delivery with faster recovery than pure reactive failover.</li>
      </ul>
      <t>The protocol does not claim to eliminate every failure. When the underlying network is completely partitioned or when too few healthy relays remain, no overlay can invent connectivity. What it can do is use the available relays more intelligently and recover more quickly from the failures that do occur.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Architectural Position</name>
      <t>PSHMP Core lives between the application and the ordinary IP network:</t>
      <figure>
        <artwork><![CDATA[
+------------------------------------------------------+
|               Distributed Application                |
+------------------------------------------------------+
|                     PSHMP Core                       |
|  Chain Relay | K-Factor | Self-Healing | Mesh        |
|  Discovery   | Batch ACK | Diversity   | Transport   |
+------------------------------------------------------+
|                 Existing IP Network                  |
+------------------------------------------------------+
|            Physical / Virtual Infrastructure         |
+------------------------------------------------------+
]]></artwork>
      </figure>
      <t>The IP layer continues to provide basic reachability. PSHMP Core uses that reachability as a substrate for logical multi-hop paths that it can rebuild on its own terms.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Architecture Layers and Components</name>
      <t>The experimental implementation organises functionality into logical layers. The following table summarises the main components:</t>
      <figure>
        <artwork><![CDATA[
+------------------+-----------------------------------------------+
| Layer            | Components                                    |
+------------------+-----------------------------------------------+
| Control Plane    | Coordinator (optional), Raft cluster,         |
|                  | Sharding, K-Factor Engine, Self-Healing       |
|                  | Engine, Mesh State Machine                    |
+------------------+-----------------------------------------------+
| Data Plane       | Chain Relay, PathFinder, Local Mesh Recovery, |
|                  | DataPath, Batch ACK + Gap List,               |
|                  | Retransmit Cache                              |
+------------------+-----------------------------------------------+
| Decentralization | DHT (Kademlia-style), Gossip (push +          |
|                  | anti-entropy), Discovery facade, Membership   |
+------------------+-----------------------------------------------+
| Security &       | TLS/DTLS, HMAC, Rate Limiting, optional PoW,  |
| Transport        | Transport abstraction (UDP/TCP/WebRTC)        |
+------------------+-----------------------------------------------+
| Infrastructure   | Persistence (e.g. BoltDB), Config, Metrics    |
|                  | (Prometheus), Logging                         |
+------------------+-----------------------------------------------+
]]></artwork>
      </figure>
      <t>Control Plane decisions (path construction, healing priorities) influence Data Plane behaviour. Decentralization components supply candidates and state when a central coordinator is unavailable. Security and transport mechanisms protect and carry the traffic without changing the higher-level recovery logic.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Hybrid Operating Model</name>
      <t>One of the distinctive traits of the current design is the hybrid operating model.</t>
      <t>In normal conditions the system prefers linear relay chains. A chain is a simple ordered sequence of relays that carries data from source toward destination. Chains are easy to reason about, have predictable latency characteristics, and can be constructed with the help of an optional coordinator when stronger consistency is desired.</t>
      <t>When several nodes on an active chain show clear degradation (typically three or more), the system can switch into a local mesh-recovery mode for that chain. It does not tear down the entire network. It collects alternative candidates (via DHT and gossip), applies progressive fallback rules, checks a quality gate, and replaces only the affected path. Once conditions improve, operation can return to the linear style.</t>
      <t>This hybrid approach keeps the common case simple while still providing a robust escape hatch when multiple relays fail at once.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Dynamic Chain Relay</name>
      <t>A relay chain is a sequence of participating nodes that forward data. Chains are rebuilt when:</t>
      <ul spacing="normal">
        <li>a relay becomes unreachable;</li>
        <li>packet loss, latency, or jitter rises beyond useful thresholds;</li>
        <li>node quality (K-Factor) falls;</li>
        <li>a local network segment becomes unstable;</li>
        <li>several nodes on the same path degrade together.</li>
      </ul>
      <t>The goal is not merely to add hops. The goal is to keep a usable path alive by swapping out weak participants for healthier ones, without asking the underlying IP routing to change.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Node Quality Metric (K-Factor)</name>
      <t>PSHMP Core evaluates nodes with a composite metric called K-Factor. Rather than looking at a single instantaneous measurement, K-Factor combines several signals into one stability score that is used both for selecting relays and for detecting degradation early.</t>

      <section numbered="true" toc="default">
        <name>Reference Formula</name>
        <t>In the experimental implementation the reference formula is:</t>
        <figure>
          <artwork><![CDATA[
K = 0.45 * (1 - loss / 0.35)
  + 0.25 * (1 - jitter / 800)
  + 0.20 * (1 - rtt / 1200)
  + 0.10 * battery
]]></artwork>
        </figure>
        <t>where:</t>
        <ul spacing="normal">
          <li>loss is packet loss ratio in the range 0.0 .. 1.0 (clamped);</li>
          <li>jitter is measured in milliseconds (clamped at the normalisation constant);</li>
          <li>rtt is round-trip time in milliseconds (clamped);</li>
          <li>battery is an optional node-health indicator normalised to 0.0 .. 1.0 (for stationary nodes this term may be fixed at 1.0).</li>
        </ul>
        <t>Each term is clamped to the interval [0, 1] before weighting so that extreme values cannot dominate the score. The resulting K lies in approximately [0, 1].</t>
        <t>The weights (0.45 / 0.25 / 0.20 / 0.10) and the normalisation constants (0.35, 800, 1200) are the reference values used in the current codebase. Integrators may change them to match their traffic patterns and topology; the architectural requirement is only that a continuous stability estimate drives selection and recovery decisions.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Status Bands</name>
        <t>The experimental implementation maps K to qualitative status bands:</t>
        <figure>
          <artwork><![CDATA[
K >= 0.85          EXCELLENT   – preferred for new chains
0.70 <= K < 0.85   GOOD        – usable
0.55 <= K < 0.70   ACCEPTABLE  – increased monitoring
0.40 <= K < 0.55   DEGRADED    – prepare replacement
K < 0.40           CRITICAL    – exclude from new paths
no recent data     UNKNOWN     – do not use
]]></artwork>
        </figure>
        <t>These thresholds are configuration parameters, not protocol constants. A node whose K is still above the hard-failure line but is sliding downward can be scheduled for replacement before it becomes a hard failure.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Path / Candidate Scoring</name>
        <t>When ranking candidate relays for a new or replacement chain the implementation uses a weighted score of the form:</t>
        <figure>
          <artwork><![CDATA[
Score = 0.50 * KScore
      + 0.25 * LatencyScore
      + 0.15 * LossScore
      + 0.10 * GeoScore
]]></artwork>
        </figure>
        <t>where each component is normalised to [0, 1]. KScore reflects closeness of the node’s K-Factor to the desired operating region; LatencyScore and LossScore penalise high delay and loss; GeoScore (or more generally a failure-domain diversity bonus) favours candidates that improve topological spread. Exact normalisation functions are implementation-defined.</t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Proactive Self-Healing</name>
      <t>Self-healing is organised around priorities. A complete node failure is treated as critical and handled immediately. Progressive degradation is classified according to how far the K-Factor has fallen:</t>
      <figure>
        <artwork><![CDATA[
CRITICAL   full failure                     – immediate
HIGH       K < 0.40                         – ~5 s delay
MEDIUM     K < 0.55                         – ~15 s delay
LOW        K < 0.68                         – ~30 s delay
]]></artwork>
      </figure>
      <t>Each class carries its own scheduling delay and an adaptive cooldown so that the system does not thrash when many nodes fluctuate near a threshold.</t>
      <t>The typical sequence is:</t>
      <ol spacing="normal">
        <li>degradation is observed (K-Factor or reachability);</li>
        <li>the condition is evaluated and prioritised;</li>
        <li>alternative candidates are gathered from DHT and gossip;</li>
        <li>a replacement path is constructed, diversity-checked, and validated;</li>
        <li>traffic is moved onto the new path;</li>
        <li>the old path is retired.</li>
      </ol>
      <t>Because the process starts from degradation rather than from total failure, the window of visible service impact can be shortened. Prototype measurements under simulated conditions have shown recovery behaviour on the order of hundreds of milliseconds; real-world figures depend on topology, load, and configuration.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Local Mesh Recovery</name>
      <t>When three or more nodes on the same chain are degraded, the system can activate local mesh recovery for that chain. The procedure roughly follows these steps:</t>
      <ul spacing="normal">
        <li>mark the affected chain;</li>
        <li>collect candidate relays from DHT and gossip, excluding recently failed or quarantined nodes;</li>
        <li>apply a multi-level fallback ladder that gradually relaxes quality and diversity requirements;</li>
        <li>run a quality gate before accepting the new path;</li>
        <li>replace the old chain atomically.</li>
      </ul>

      <section numbered="true" toc="default">
        <name>Fallback Ladder</name>
        <t>The reference fallback levels used in the experimental implementation are:</t>
        <figure>
          <artwork><![CDATA[
Level 0:  MinAvgK >= 0.70,  diversity required
Level 1:  MinAvgK >= 0.65,  diversity required
Level 2:  MinAvgK >= 0.60,  diversity required
Level 3:  MinAvgK >= 0.52,  diversity required
Level 4:  MinAvgK >= 0.42,  diversity optional
]]></artwork>
        </figure>
        <t>Early levels insist on high average K-Factor and good spread across failure domains. Later levels accept lower quality or drop the diversity constraint, still preferring any working path over silence. The quality gate that follows construction prevents a clearly worse path from being installed simply because it is the only remaining option.</t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Diversity-Aware Selection</name>
      <t>Failures are often correlated. Nodes that share a rack, a site, a provider, or a network segment tend to suffer together. Selecting the highest-scoring individual nodes without regard to shared risk can therefore produce a new path that fails in the same way as the old one.</t>
      <t>PSHMP Core can group nodes by logical failure domain (subnet, region, provider, availability zone, or any deployment-defined label). During recovery the selection logic prefers candidates from different groups. The preference is stronger when the network is already under stress and can be relaxed when healthy diversity is simply unavailable.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Failure Tracking and Quarantine</name>
      <t>A node that has just failed is a poor candidate for immediate re-use. PSHMP Core keeps a short history of failures and can place unstable nodes into a temporary quarantine. After a period of stable behaviour the node may be rehabilitated and allowed back into the candidate pool. This simple mechanism reduces the chance of repeated recovery loops caused by the same unreliable participants.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Decentralised Discovery and State</name>
      <t>Two complementary mechanisms keep the network informed.</t>
      <t>Gossip spreads node state, K-Factor updates, and chain proposals. It supports both push dissemination and anti-entropy pull synchronisation so that information continues to flow even when some links are lossy. Message types include node-state announcements, K-Factor updates, chain proposals, and explicit pull request/response pairs.</t>
      <t>A Kademlia-style DHT supplies candidate relays when a node needs fresh options, especially useful when a coordinator is unreachable. The DHT is treated as a discovery aid rather than a generic key-value store; the values that matter are node identity, reachability, and quality hints. Typical parameters in the experimental code are 160 buckets, bucket size k = 20, and concurrency parameter alpha = 3.</t>
      <t>An optional coordinator (which may itself run as a small Raft cluster) can provide stronger consistency for initial chain construction and global views. The architecture does not make the coordinator mandatory; local mesh recovery and DHT/gossip remain available when the coordinator is absent.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Data Delivery Path and Acknowledgement Model</name>
      <t>Reliable multi-hop delivery is handled by a dedicated DataPath component. Application data is segmented into chunks. Each chunk carries a sequence number. The sender transmits batches of chunks over the current relay chain. The receiver reports progress using batch acknowledgements that include an explicit gap list.</t>

      <section numbered="true" toc="default">
        <name>Delivery Flow (Conceptual)</name>
        <figure>
          <artwork><![CDATA[
Application data
       |
       v
  Segment into chunks (sequence 1..N)
       |
       v
  Send batch over current relay chain
       |
       +-----> Relay 1 -----> Relay 2 -----> ... -----> Destination
       |
       v
  Receiver: update highest contiguous sequence
            record missing ranges as Gaps
       |
       v
  Batch ACK = { session, last_contiguous, gaps[], timestamp, MAC }
       |
       v
  Sender: retransmit only the missing sequences
          (from Retransmit Cache)
]]></artwork>
        </figure>
      </section>

      <section numbered="true" toc="default">
        <name>Batch ACK Structure</name>
        <t>A Batch ACK carries:</t>
        <ul spacing="normal">
          <li>session identifier;</li>
          <li>highest contiguous sequence number received (LastReceived);</li>
          <li>a list of missing ranges (Gaps), each described by a start and end sequence number;</li>
          <li>timestamp and optional integrity protection (e.g., HMAC).</li>
        </ul>
        <t>Conceptually the set of sequences that still need retransmission is:</t>
        <figure>
          <artwork><![CDATA[
Missing = (all sequences <= LastReceived that fall inside any Gap)
        union (sequences > LastReceived that were sent but not yet ACKed)
]]></artwork>
        </figure>
        <t>In practice the sender uses the gap list together with its outstanding-send window to decide exactly which chunks to retransmit. A short linger window (on the order of several hundred milliseconds in the reference implementation) allows late packets to arrive before gaps are declared, reducing unnecessary retransmissions.</t>
      </section>

      <section numbered="true" toc="default">
        <name>Control Traffic Reduction</name>
        <t>Under the traffic patterns examined in internal tests, batch acknowledgements with gap lists have reduced control-plane overhead substantially (in favourable cases approaching the order of 75 % compared with per-packet ACKs). Actual savings depend on loss rate, batch size, and message size. The architectural gain is that the control channel stays light even when data volume is high.</t>
      </section>
    </section>

    <section numbered="true" toc="default">
      <name>Transport Abstraction</name>
      <t>The overlay is deliberately transport-agnostic. Implementations may run over UDP, DTLS, TLS-protected TCP, WebRTC DataChannels, or other bidirectional transports. TURN assistance can be used where NAT traversal is required. The choice of transport is an engineering decision for each deployment; the path-selection and recovery logic stays the same.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>A decentralised relay system must assume that some participants may be malicious, misconfigured, or simply overloaded. The current design includes rate limiting, optional proof-of-work admission, authenticated and encrypted transport options (TLS/DTLS), HMAC-protected control messages, failure tracking, and temporary quarantine.</t>
      <t>These mechanisms are necessary but not sufficient. Deployments still need proper node identity, key management, authorisation policy, and operational monitoring. PSHMP Core is a resilience layer, not a complete security architecture.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Scalability Notes</name>
      <t>The architecture is intended to scale from small groups of nodes to several thousand participants. Distributed state (gossip), DHT-based discovery, optional sharding, and the ability to operate without a permanent central controller are the main tools. Large-scale network emulation with more than five thousand nodes has been used to exercise the implementation; those figures are experimental observations, not protocol guarantees. Real performance depends on topology, churn, and configuration.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Experimental Implementation</name>
      <t>An experimental implementation, PSHMP Core v3.1, has been written in Go. It contains the principal components described in this document:</t>
      <ul spacing="normal">
        <li>Chain Relay and PathFinder;</li>
        <li>K-Factor evaluation and adaptive probing;</li>
        <li>Self-Healing Engine with priority scheduling and mesh state machine;</li>
        <li>local mesh recovery with multi-level fallback and quality gate;</li>
        <li>diversity-aware candidate selection;</li>
        <li>Gossip (push and anti-entropy) and Kademlia-style DHT;</li>
        <li>DataPath with batch acknowledgements and gap recovery;</li>
        <li>optional Raft-based coordinator and sharding;</li>
        <li>transport support including UDP, DTLS, and WebRTC;</li>
        <li>Prometheus metrics and structured logging.</li>
      </ul>
      <t>The implementation has been exercised primarily through large-scale emulation and limited real-network experiments. It is positioned as a pilot-ready technology foundation rather than a finished mass-market product. Scoring weights, exact thresholds, and certain optimisations remain tunable by integrators.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Example Scenario</name>
      <t>Consider a six-relay chain:</t>
      <figure>
        <artwork><![CDATA[
Source → A → B → C → D → E → Destination
]]></artwork>
      </figure>
      <t>Relays B, C and D begin to show rising loss and falling K-Factor. The Self-Healing Engine marks the degradation, raises the priority, and triggers local mesh recovery for this chain. Candidates are gathered from DHT and gossip; recently failed nodes are excluded; diversity constraints prefer relays from different failure domains. A new sequence is assembled, passed through the quality gate, and installed:</t>
      <figure>
        <artwork><![CDATA[
Source → A → F → G → H → E → Destination
]]></artwork>
      </figure>
      <t>The underlying IP routes are untouched. Only the logical overlay path has changed. Traffic continues with a shorter disruption window than a pure reactive failover would typically allow.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Potential Benefits</name>
      <t>When integrated into a larger platform, PSHMP Core can offer:</t>
      <ul spacing="normal">
        <li>shorter recovery windows through proactive reconstruction;</li>
        <li>continued delivery when individual relays or segments fail;</li>
        <li>reduced dependence on any single path or controller;</li>
        <li>lower control-plane overhead via batch acknowledgements;</li>
        <li>reuse of existing IP infrastructure;</li>
        <li>adaptive behaviour that tightens or relaxes constraints according to the severity of the failure.</li>
      </ul>
    </section>

    <section numbered="true" toc="default">
      <name>Integration Model</name>
      <t>The expected use is as an embedded resilience layer inside an existing distributed system. The integrating organisation keeps ownership of application logic, identity, infrastructure, and commercial packaging. PSHMP Core supplies the adaptive multi-hop delivery and recovery machinery underneath.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Deployment Considerations</name>
      <t>Before wide deployment an organisation should examine topology density, expected loss and latency, failure-domain layout, security and identity requirements, monitoring, and capacity. Controlled pilot deployments remain the practical way to validate behaviour under real traffic. The formulas and thresholds given in this document are a starting point; they should be calibrated against the target network.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Design Principles</name>
      <ul spacing="normal">
        <li>Decentralisation — discovery and recovery must continue when a central component is unavailable.</li>
        <li>Proactive recovery — degradation is a signal, not merely a post-mortem.</li>
        <li>Dynamic paths — delivery routes adapt to changing conditions.</li>
        <li>Diversity — correlated failures are treated as a first-class risk.</li>
        <li>Layer independence — the overlay does not require changes to L3 routing.</li>
        <li>Graceful degradation — when ideal candidates are scarce, constraints are relaxed progressively rather than failing abruptly.</li>
      </ul>
    </section>

    <section numbered="true" toc="default">
      <name>Limitations</name>
      <t>PSHMP Core cannot create connectivity where none exists. Performance depends on the number and quality of available relays, the underlying network, workload, and configuration. Figures obtained from emulation or limited trials must be re-validated for each production environment. The reference formulas are part of the experimental model; production deployments may adjust weights and thresholds.</t>
    </section>

    <section numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Terminology</name>
      <t>PSHMP Core: the overlay architecture described in this document.</t>
      <t>Relay: a participating node that forwards data for others.</t>
      <t>Relay chain: an ordered sequence of relays forming a logical delivery path.</t>
      <t>K-Factor: a composite stability metric used for selection and early degradation detection.</t>
      <t>Self-healing: automatic reconstruction of degraded delivery paths.</t>
      <t>Local mesh recovery: path reconstruction performed for an affected chain using alternative candidates, fallback levels, and a quality gate.</t>
      <t>Diversity: preference for relays drawn from different failure domains.</t>
      <t>Gossip: decentralised dissemination of node and path state.</t>
      <t>DHT: distributed mechanism used primarily for candidate discovery.</t>
      <t>Gap list: explicit list of missing sequence ranges reported in a batch acknowledgement.</t>
      <t>DataPath: component responsible for chunking, transmission over a relay chain, batch acknowledgements, and retransmission of missing sequences.</t>
    </section>

    <section numbered="true" toc="default">
      <name>Conclusion</name>
      <t>PSHMP Core offers a practical hybrid overlay for environments where connectivity is imperfect and recovery time matters. Linear chains keep the common case simple; local mesh recovery, K-Factor-driven decisions, diversity awareness, and efficient acknowledgements provide the machinery needed when conditions worsen. The design deliberately stays above IP, remains transport-flexible, and can operate with or without a central coordinator.</t>
      <t>An experimental Go implementation (v3.1) demonstrates that the architecture is realisable and has been exercised at significant scale in emulation. Reference formulas for K-Factor, candidate scoring, the recovery fallback ladder, and the batch-acknowledgement delivery model are provided so that readers can understand the concrete model; integrators remain free to tune weights and thresholds to their own networks.</t>
      <t>PSHMP Core is offered as a technology foundation for organisations that need resilient multi-hop delivery and are prepared to evaluate, tune, and integrate it within their own platforms.</t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC768" target="https://www.rfc-editor.org/info/rfc768">
        <front>
          <title>User Datagram Protocol</title>
          <author fullname="J. Postel" initials="J." surname="Postel"/>
          <date month="August" year="1980"/>
        </front>
        <seriesInfo name="STD" value="6"/>
        <seriesInfo name="RFC" value="768"/>
        <seriesInfo name="DOI" value="10.17487/RFC768"/>
      </reference>
      <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
    </references>
  </back>
</rfc>
