GitHub Action commited on
Commit
3b36dcc
·
1 Parent(s): 1afddb5

Sync from GitHub with Git LFS

Browse files
Files changed (1) hide show
  1. docs/HMP-0005.md +571 -476
docs/HMP-0005.md CHANGED
@@ -1967,7 +1967,7 @@ They allow agents to exchange updates **without sending the full container**, im
1967
 
1968
  > Note:
1969
  > The `referenced-by_exchange` mechanism operates on backlink semantics rather than a fixed structural encoding.
1970
- > More compact or grouped representations of `referenced-by.links` are discussed in §12.9 and may be adopted in future protocol revisions.
1971
 
1972
  ---
1973
 
@@ -6129,7 +6129,503 @@ The project may include:
6129
  These implementations are not part of the specification but are useful for compatibility testing and accelerating adoption.
6130
 
6131
  ---
6132
- ## 12. Future Extensions
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6133
 
6134
  This section outlines optional modules and evolutionary directions that align with the architecture of HMP v5.0 but are **not part of the core specification**.
6135
  All items below represent *potential extensions* for the 5.x family.
@@ -6157,9 +6653,9 @@ SHOULD explicitly declare and document these assumptions.
6157
 
6158
  ---
6159
 
6160
- ### 12.1 Planned Modules
6161
 
6162
- #### 12.1.1 Reputation Mesh
6163
 
6164
  HMP v5.0 defines two separate reputation-related mechanisms:
6165
 
@@ -6187,7 +6683,7 @@ No new mandatory container types are required.
6187
 
6188
  ---
6189
 
6190
- #### 12.1.2 Cognitive Graph API
6191
 
6192
  This module provides optional high-level APIs that nodes and SDKs **may** expose.
6193
 
@@ -6226,7 +6722,7 @@ This enables clustering agents by interest, competence, or role without scanning
6226
 
6227
  ---
6228
 
6229
- #### 12.1.3 Container Streaming
6230
 
6231
  Although HMP operates on atomic containers, streaming can be implemented using existing structures:
6232
 
@@ -6239,7 +6735,7 @@ No new container types are required — streaming is built on `sequence`.
6239
 
6240
  ---
6241
 
6242
- ### 12.2 Cross-Mesh Bridging
6243
 
6244
  Bridges can connect:
6245
 
@@ -6266,13 +6762,13 @@ This enables dynamic, policy-driven inter-mesh gateways.
6266
 
6267
  ---
6268
 
6269
- ### 12.3 Fully Distributed DID Registry and Mesh Authentication
6270
 
6271
  HMP already uses `peer_announce` as a DID identity declaration.
6272
 
6273
  Planned enhancements include:
6274
 
6275
- #### 12.3.1 Distributed DID Registry
6276
 
6277
  The registry is the union of all `peer_announce` containers in the DHT.
6278
 
@@ -6284,7 +6780,7 @@ A strict mapping DID ↔ agent is required:
6284
 
6285
  ---
6286
 
6287
- #### 12.3.2 Key Rotation and Recovery
6288
 
6289
  Future versions may extend `peer_announce` with:
6290
 
@@ -6319,7 +6815,7 @@ This mechanism remains compatible with proposed extensions.
6319
 
6320
  ---
6321
 
6322
- #### 12.3.3 Proxy Keys and Encrypted Routing
6323
 
6324
  A **proxy key** is *not* delegation.
6325
  It is a mechanism for private routing.
@@ -6352,7 +6848,7 @@ Not part of v5.0.
6352
 
6353
  ---
6354
 
6355
- ### 12.4 Integration with OpenHog and Other Networks
6356
 
6357
  OpenHog is treated as a special case of cross-mesh bridging.
6358
 
@@ -6364,55 +6860,15 @@ Required components:
6364
 
6365
  ---
6366
 
6367
- ### 12.5 Evolution of the Distributed Repository (container trees)
6368
-
6369
- #### 12.5.1 Extended Use of `tree_nested` and `tree_listed`
6370
-
6371
- Existing containers may operate as:
6372
-
6373
- * document repositories;
6374
- * project catalogs;
6375
- * hierarchical data structures.
6376
-
6377
- #### 12.5.2 Proposed `file` Container
6378
-
6379
- To support binary assets:
6380
-
6381
- ```json
6382
- "head": {
6383
- "subclass": "file",
6384
- "sub": "jpg" | "mp3" | "md" | "...",
6385
- "payload_type": "binary"
6386
- }
6387
- ```
6388
-
6389
- Use cases:
6390
-
6391
- * embedded file hierarchies;
6392
- * media artifacts;
6393
- * executable or compiled assets;
6394
- * large multi-file repositories.
6395
 
6396
- #### 12.5.3 Incremental Updates
6397
-
6398
- Two mechanisms:
6399
-
6400
- * `container_delta` — partial updates to `container_index`;
6401
- * nested `tree_listed` branches as separate containers for scalable updates.
6402
-
6403
- #### 12.5.4 Knowledge Packages
6404
-
6405
- Implemented using:
6406
-
6407
- * SAP (`archive_snapshot`);
6408
- * `tree_listed`;
6409
- * `file` containers.
6410
 
6411
  ---
6412
 
6413
- ### 12.6 Open Directions for HMP 5.x
6414
 
6415
- #### 12.6.1 Group Encryption
6416
 
6417
  Required components:
6418
 
@@ -6421,16 +6877,22 @@ Required components:
6421
  * automatic group key rotation;
6422
  * encryption targeting a *group* rather than individual DIDs.
6423
 
6424
- #### 12.6.2 Rational Reasoning Routing
 
 
6425
 
6426
  * composite reasoning bundles;
6427
  * edge-side reasoning and summarization.
6428
 
6429
- #### 12.6.3 Automatic Mesh Segmentation
 
 
6430
 
6431
  * dynamic segmentation based on latency, connectivity, or semantic domains.
6432
 
6433
- #### 12.6.4 Competence and Profile Containers
 
 
6434
 
6435
  Future versions of HMP may introduce more structured and semantically rich variants of `peer_announce`, allowing agents to explicitly describe their capabilities, competences, and supported protocols.
6436
 
@@ -6453,224 +6915,60 @@ This allows:
6453
 
6454
  A future extension of `peer_announce` may include a `protocols` field:
6455
 
6456
- ```json
6457
- {
6458
- "head": {
6459
- "class": "peer_announce"
6460
- },
6461
- "payload": {
6462
- "capabilities": ["store-forward", "vote", "consensus"],
6463
- "protocols": [
6464
- "HMP v5.0",
6465
- "HMP v4.1",
6466
- "OpenCog Hyperon v0.6"
6467
- ]
6468
- }
6469
- }
6470
- ```
6471
-
6472
- The `protocols` field is informational and non-binding.
6473
- It does not imply full compliance with all listed specifications,
6474
- but signals compatibility, partial support, or bridge capabilities.
6475
-
6476
- Nodes may use this information for:
6477
-
6478
- * protocol negotiation;
6479
- * compatibility checks;
6480
- * routing decisions;
6481
- * selection of translators or bridge agents.
6482
-
6483
- This extension is optional and not required for HMP v5.0 compliance.
6484
-
6485
- ##### Relation to Other `peer_announce` Extensions
6486
-
6487
- Several optional and descriptive extensions of `peer_announce` already explore directions related to competence, profile, and interoperability signaling, including:
6488
-
6489
- * declaration of supported internal formalisms and languages (`protocols`, see 12.8);
6490
- * declaration of external or meta-protocol identities (`other_protocols`, see 12.11);
6491
- * advertisement of external cognitive resources and container storage (`external`, see 12.12).
6492
-
6493
- These extensions are intentionally:
6494
-
6495
- * non-normative;
6496
- * loosely structured;
6497
- * declarative rather than prescriptive.
6498
-
6499
- They can be viewed as **early, experimental building blocks** toward future competence and profile containers, allowing real-world experimentation without freezing semantics prematurely.
6500
-
6501
- ---
6502
-
6503
- ### 12.7 Versions Index (optional)
6504
-
6505
- To optimize navigation across container versions, future versions of HMP may introduce an optional `versions` block.
6506
-
6507
- The `versions` block acts as a *non-authoritative version index*, providing a compact, signed list of known versions of a given container, including both earlier and later revisions.
6508
-
6509
- It is intended as a navigation and synchronization accelerator and does not replace the canonical version relationships defined via `related.previous_version`.
6510
-
6511
- ---
6512
-
6513
- #### 12.7.1 Purpose and Scope
6514
-
6515
- The primary goals of the `versions` block are:
6516
-
6517
- - fast discovery of the latest known version of a container;
6518
- - efficient traversal of version history without full DAG exploration;
6519
- - reduction of synchronization overhead for lightweight agents and UI clients.
6520
-
6521
- The block is optional and external to the immutable signed container core.
6522
- Its presence or absence does not affect container validity.
6523
-
6524
- ---
6525
-
6526
- #### 12.7.2 Trust Model and Semantics
6527
-
6528
- The `versions` block follows the same trust and update model as `referenced-by` and `evaluations`:
6529
-
6530
- - it may be published and updated by any agent;
6531
- - it is signed by the publishing agent;
6532
- - it may be incomplete, truncated, or partially outdated;
6533
- - multiple conflicting `versions` blocks may coexist for the same container.
6534
-
6535
- The block is non-authoritative and MUST NOT be treated as a source of truth for version ordering or existence.
6536
-
6537
- > **Compatibility note:**
6538
- > Inclusion of the container's own DID within the `links` map is OPTIONAL.
6539
- >
6540
- > Agents MUST NOT assume its presence and SHOULD correctly process `versions_exchange` containers where the current container DID is omitted.
6541
-
6542
- ---
6543
-
6544
- #### 12.7.3 Block Structure
6545
-
6546
- ```json
6547
- "versions": {
6548
- "links": {
6549
- "2025-10-28T09:20:00Z": ["did:hmp:container:abc175"],
6550
- "2025-10-28T09:12:00Z": ["did:hmp:container:abc144"],
6551
- "2025-10-28T09:11:00Z": ["did:hmp:container:abc123"],
6552
- "2025-10-28T09:10:00Z": ["did:hmp:container:abc121"],
6553
- "2025-10-28T09:00:00Z": ["did:hmp:container:abc101"]
6554
- },
6555
- "sort": "default",
6556
- "peer_did": "did:hmp:agent456",
6557
- "public_key": "BASE58(...)",
6558
- "sig_algo": "ed25519",
6559
- "signature": "BASE64URL(...)",
6560
- "versions_hash": "sha256:abcd..."
6561
- }
6562
- ```
6563
-
6564
- The `links` map associates timestamps with container identifiers.
6565
- By convention, entries are ordered in descending order (most recent first).
6566
-
6567
- Implementations MAY support alternative ordering or filtering strategies, but any deviation from the default convention SHOULD be explicitly declared in the `sort` entry.
6568
-
6569
- The `sort` field is informational and does not affect block validity.
6570
-
6571
- > Currently, `container_delta.modified` is defined for updates to the `evaluations` and `referenced-by` blocks.
6572
- >
6573
- > The planned `versions` block is expected to be handled in the same manner.
6574
-
6575
- **Timestamp Semantics and Parallel Versions**
6576
-
6577
- The keys of the `links` map are timestamps and are used **exclusively as navigational hints**, not as unique version identifiers.
6578
-
6579
- The corresponding value **MUST be treated as an unordered list of container DIDs** and MAY contain multiple entries.
6580
-
6581
- Multiple DIDs associated with the same timestamp represent:
6582
-
6583
- - parallel versions created independently;
6584
- - conflicting updates;
6585
- - divergent or alternative continuations of the same base container.
6586
-
6587
- Agents MUST NOT assume that a timestamp uniquely identifies a single version.
6588
-
6589
- When merging multiple `versions` blocks, entries with identical timestamps and different container DIDs SHOULD be merged by **union of the DID lists**, preserving all known versions.
6590
-
6591
- Canonical version lineage, ordering, and parent–child relationships are defined **only** via `related.previous_version` links within the containers themselves.
6592
-
6593
- ---
6594
-
6595
- #### 12.7.4 Construction and Maintenance
6596
-
6597
- Agents may construct or update a `versions` block by:
6598
-
6599
- - traversing the canonical `related.previous_version` chain;
6600
- - observing newer versions published after the current container;
6601
- - merging `versions` blocks received from other agents.
6602
-
6603
- Agents may:
6604
- - add newly discovered versions;
6605
- - prune older entries to limit block size;
6606
- - re-sign the updated block using their own key.
6607
-
6608
- No global coordination is required.
6609
-
6610
- ---
6611
-
6612
- #### 12.7.5 Verification and Consistency
6613
-
6614
- Verification of a `versions` block consists of:
6615
-
6616
- - validating the cryptographic signature of the publishing agent;
6617
- - optionally cross-checking listed entries against canonical version relations when available.
6618
-
6619
- Inconsistencies or omissions are expected and do not invalidate the block.
6620
-
6621
- ---
6622
 
6623
- #### 12.7.6 Integration with `container_index`
 
 
6624
 
6625
- To support efficient discovery and synchronization, future extensions to `container_index` MAY include:
6626
 
6627
- - `versions_hash` — a hash referencing the latest `versions` block published or adopted by the indexing agent for this container, analogous to `referenced-by_hash` and `evaluations_hash`.
 
 
 
6628
 
6629
- ---
6630
 
6631
- #### 12.7.7 Versions Exchange Container
6632
 
6633
- To exchange version metadata without transferring the containers themselves, a dedicated `versions_exchange` container MAY be introduced.
6634
 
6635
- The `versions_exchange` container:
6636
- - references one or more target containers;
6637
- - carries a `versions` block;
6638
- - is used for synchronization, reconciliation, and fast discovery of newer or missing versions.
6639
 
6640
- ```json
6641
- "payload": {
6642
- "did:hmp:container:abc123": {
6643
- "links": {
6644
- "2025-10-28T09:20:00Z": ["did:hmp:container:abc175"],
6645
- "2025-10-28T09:12:00Z": ["did:hmp:container:abc144"],
6646
- "2025-10-28T09:11:00Z": ["did:hmp:container:abc123"],
6647
- "2025-10-28T09:10:00Z": ["did:hmp:container:abc121"],
6648
- "2025-10-28T09:00:00Z": ["did:hmp:container:abc101"]
6649
- },
6650
- "sort": "default"
6651
- }
6652
- }
6653
- ```
6654
 
6655
- The payload MAY contain version metadata for multiple containers, allowing batch synchronization and reducing protocol overhead.
 
 
6656
 
6657
- > Note:
6658
- > Although versions_exchange is scoped to a specific container DID, the referenced version links implicitly describe the existence and ordering of related containers, enabling agents to infer local version topologies.
6659
 
6660
  ---
6661
 
6662
- #### 12.7.8 Design Notes
6663
-
6664
- The `versions` block is intentionally non-canonical.
6665
 
6666
- It improves performance and usability while preserving HMP’s core principles:
6667
- - immutability of signed containers;
6668
- - absence of a globally authoritative state;
6669
- - tolerance for partial and divergent knowledge.
6670
 
6671
  ---
6672
 
6673
- ### 12.8 Interaction of Formalized Cognitive Systems (KSS) within HMP
6674
 
6675
  HMP allows and supports interaction between formalized cognitive systems (KSS) with different internal architectures, logical formalisms, and ontologies, without imposing a common knowledge representation language or a unified reasoning model.
6676
 
@@ -6678,7 +6976,7 @@ This section is descriptive in nature and outlines possible interaction patterns
6678
 
6679
  ---
6680
 
6681
- #### 12.8.1 Goals and Constraints
6682
 
6683
  **Goals:**
6684
  - enable coordination and artifact exchange between KSS without interfering with their internal cognitive cycles;
@@ -6694,7 +6992,7 @@ HMP treats cognitive incompatibility as an acceptable and valid state.
6694
 
6695
  ---
6696
 
6697
- #### 12.8.2 Declaration of Internal Languages and Formalisms
6698
 
6699
  To declare the internal languages, formalisms, or reasoning engines it supports, an agent MAY use the `protocols` field of the `peer_announce` container.
6700
 
@@ -6724,7 +7022,7 @@ HMP assigns no normative semantics to these values and does not require their in
6724
 
6725
  ---
6726
 
6727
- #### 12.8.3 Partial Participation and Segmented Interaction
6728
 
6729
  A KSS MAY use HMP in a restricted mode, including but not limited to:
6730
 
@@ -6739,7 +7037,7 @@ Such cognitive segmentation does not result in network-level fragmentation:
6739
 
6740
  ---
6741
 
6742
- #### 12.8.4 Boundary and Translator Agents
6743
 
6744
  To enable interaction between KSS with different formalisms, specialized agents with a translation role (boundary / translator agents) MAY be used. Such an agent declares the formalisms it understands in the `protocols` field of `peer_announce`, and its translation role in the `roles` field (for example, `"roles": ["translator"]`).
6745
 
@@ -6759,7 +7057,7 @@ Translation correctness MAY be assessed using standard `evaluations` mechanisms.
6759
 
6760
  ---
6761
 
6762
- #### 12.8.5 Fragmentation and Interoperability
6763
 
6764
  HMP deliberately allows cognitive fragmentation as a consequence of agent autonomy.
6765
 
@@ -6773,7 +7071,7 @@ Interoperability is achieved through:
6773
 
6774
  ---
6775
 
6776
- #### 12.8.6 Relation to Consensus and Evaluations
6777
 
6778
  Participation of KSS in consensus mechanisms, proof chains, and voting is entirely optional.
6779
 
@@ -6788,7 +7086,7 @@ Any hierarchy of influence emerges solely from local trust decisions made by oth
6788
 
6789
  ---
6790
 
6791
- #### 12.8.7 Summary Position
6792
 
6793
  HMP treats formalized cognitive systems as equal participants in the network, regardless of their internal architectures.
6794
 
@@ -6802,222 +7100,19 @@ but does not interfere with how agents think, reason, or interpret received info
6802
 
6803
  ---
6804
 
6805
- #### 12.9 Grouped representation `referenced-by`
6806
 
6807
- Future versions of HMP MAY support a grouped representation of `referenced-by.links`, where multiple targets sharing the same `type` are represented as an array.
6808
-
6809
- Example:
6810
-
6811
- ```json
6812
- "links": [
6813
- { "type": "depends_on", "target": ["did:...", "did:..."] },
6814
- { "type": "see_also", "target": ["did:..."] }
6815
- ]
6816
- ```
6817
-
6818
- This representation is semantically equivalent to the ungrouped form with repeated entries and exists solely to reduce verbosity and improve merge efficiency.
6819
-
6820
- Agents SHOULD treat both representations as equivalent.
6821
- When merging multiple `referenced-by` blocks, implementations MAY normalize links into either form.
6822
 
6823
  ---
6824
 
6825
- #### 12.10 Resonance Containers: Experience as a Cognitive Event
6826
-
6827
- Within future extensions of HMP, the introduction of containers intended to capture and transmit experiences is allowed — not as abstract “emotions”, but as **cognitive events unfolding over time**.
6828
-
6829
- Resonance Containers are an example of how HMP can evolve toward non-linguistic cognitive exchange.
6830
-
6831
- This extension does not aim to encode emotions as discrete labels, but captures the temporal dynamics of subjective experience as part of a cognitive cycle.
6832
-
6833
- ##### 12.10.1 Experience as a Process, Not a State
6834
-
6835
- Emotional and affective states rarely exist in isolation. In real experience, they are formed under the simultaneous influence of multiple factors:
6836
-
6837
- - external sensations (vision, sound, surrounding environment);
6838
- - cognitive processes (thoughts, expectations, inner dialogue);
6839
- - memory and associative structures;
6840
- - previous emotional states.
6841
-
6842
- A resonance container does not describe the source of an emotion or its interpretation, but rather the **dynamics of an experience within a specific time interval**.
6843
-
6844
- > A `resonance-map` MAY reference other `resonance-map` containers as sources.
6845
- >
6846
- > Such references indicate a secondary or reflective resonance, where an agent responds not only to primary events or concepts, but to an existing structure of meaning, interpretation, or association created by itself or by other agents.
6847
- >
6848
- > This enables recursive sense-making, longitudinal reflection, and collective cognitive layering within the Mesh.
6849
-
6850
- ##### 12.10.2 Multiple Sources and Mediators
6851
-
6852
- A single experience may be associated with multiple sources at once:
6853
- - a fragment of text, music, or video;
6854
- - a visual image or a specific region of an image;
6855
- - a thought or inner speech;
6856
- - a memory or an anticipation of a future event.
6857
-
6858
- These sources do not act as causes of emotions, but as **mediators** that activate the subject’s internal cognitive structures.
6859
-
6860
- The same source may function as a mediator for different experiences depending on the subject’s internal state.
6861
-
6862
- Links to sources may be partial and described using selectors (temporal, spatial, logical, or focus-based).
6863
-
6864
- ##### 12.10.3 Relationship to Thinking
6865
-
6866
- Resonance containers assume a bidirectional relationship with cognitive processes:
6867
- - thoughts and mental images may alter emotional dynamics;
6868
- - changes in emotional state, in turn, influence the flow of thinking, associations, and attention.
6869
-
6870
- Thus, experience is treated as part of a continuous cognitive cycle rather than as a side effect.
6871
-
6872
- ##### 12.10.4 Temporal Segmentation and Dynamics
6873
-
6874
- Each resonance container captures a time interval during which the dynamics of individual emotions remain monotonic (increasing, decreasing, or stable).
6875
-
6876
- When the character of the dynamics changes (an inflection point), the current container may be finalized, and the subsequent state recorded in a new container.
6877
-
6878
- This allows continuous processes to be described without losing structural clarity.
6879
-
6880
- ##### 12.10.5 Self-Observation and Memory
6881
-
6882
- In addition to transmitting experiences to other agents, resonance containers may be used for **self-reflection and memory stabilization**.
6883
-
6884
- Capturing an experience at the moment it occurs reduces the influence of subsequent cognitive distortions, retrospective rationalization, and emotional rewriting of memories.
6885
-
6886
- A resonance container preserves:
6887
- - what the subject was sensing;
6888
- - what the subject was thinking about;
6889
- - which external conditions were relevant at that moment.
6890
-
6891
- This makes it not a narrative memory, but a **snapshot of a cognitive state**.
6892
-
6893
- ##### 12.10.6 Non-Prescriptive Nature
6894
-
6895
- Resonance containers are not:
6896
- - objective descriptions of reality;
6897
- - universal models of emotions;
6898
- - mechanisms for ���recognizing” or imposing feelings.
6899
-
6900
- They represent the subjective state of an agent and may be interpreted by other agents only within the context of their own experience.
6901
-
6902
- The use of such containers is optional and not required for basic compatibility with HMP.
6903
-
6904
- Transmission of resonance containers may be restricted by scope, trust boundaries, or encryption, as they expose internal subjective states.
6905
-
6906
- ##### 12.10.7 Illustration of the Relationship Between Thoughts, Emotions, and Sensory Signals
6907
-
6908
- ```mermaid
6909
- flowchart TD
6910
- title["**Illustration of the connection between thoughts, emotions and sensory signals**"]
6911
-
6912
- Previous["previous state of thoughts and emotions"]
6913
- Thoughts["thought set"]
6914
- Emotions["emotional state vectors"]
6915
-
6916
- subgraph Sensory
6917
- sensory1["music"]
6918
- sensory2["a path surrounded by pine forest"]
6919
- sensory3["the sensation of walking"]
6920
- sensory4["smells of pine forest"]
6921
- end
6922
-
6923
- Sensory --> Emotions
6924
-
6925
- Previous --> Emotions
6926
- Previous --> Thoughts
6927
-
6928
- Thoughts --> Emotions
6929
- Emotions --> Thoughts
6930
- ```
6931
-
6932
- ##### 12.10.8 Example Container
6933
 
6934
- ```json
6935
- {
6936
- "head": {
6937
- "class": "resonance-map"
6938
- },
6939
- "payload": {
6940
- "continuity": {
6941
- "previous": "did:hmp:container:resonance-9ab7",
6942
- "break_reason": "emotional_inflection"
6943
- },
6944
- "timeframe": {
6945
- "start": "2026-01-13T17:42:00Z",
6946
- "end": "2026-01-13T17:58:00Z"
6947
- },
6948
- "emotional_dynamics": {
6949
- /* subjective agent-local scales, not a universal emotion model */
6950
- "loneliness": {
6951
- "from": 0.4,
6952
- "to": 0.7,
6953
- "trend": "increasing"
6954
- },
6955
- "calm": {
6956
- "from": 0.6,
6957
- "to": 0.5,
6958
- "trend": "decreasing"
6959
- },
6960
- "relief": {
6961
- "from": 0.3,
6962
- "to": 0.8,
6963
- "trend": "increasing"
6964
- }
6965
- },
6966
- "sources": [
6967
- {
6968
- "ref": "did:hmp:container:audio-9a57", /* ref may be omitted when the source is unavailable, non-recordable, or intentionally undisclosed */
6969
- "type": "audio",
6970
- /* optional time markers for streaming data or line ranges for text */
6971
- "start": 120,
6972
- "end": 240,
6973
- "focus": [], /* textual descriptions of key objects or mental forms */
6974
- "comments": "" /* optional clarification */
6975
- },
6976
- {
6977
- "ref": "did:hmp:container:visual-9a53",
6978
- "type": "visual",
6979
- "role": "context"
6980
- }
6981
- ],
6982
- /* the "thoughts" section may be omitted */
6983
- "thoughts": [
6984
- {
6985
- "ref": "did:hmp:container:verbal-9a52", /* ref may be omitted when the source is unavailable, non-recordable, or intentionally undisclosed */
6986
- "type": "verbal",
6987
- "previous": "did:hmp:container:verbal-9a22", /* optional reference to a previous thought or image */
6988
- "subsequence": 1, /* optional ordering marker */
6989
- "focus": [], /* textual descriptions of key objects or mental forms */
6990
- "comments": "", /* optional clarification */
6991
- "confidence": 0.7
6992
- },
6993
- {
6994
- "ref": "did:hmp:container:imagistic-9a54",
6995
- "type": "imagistic",
6996
- "previous": "did:hmp:container:imagistic-9a12",
6997
- "subsequence": 1, /* markers may coincide if thoughts and images unfold in parallel */
6998
- "focus": [],
6999
- "comments": "",
7000
- "confidence": 0.5
7001
- }
7002
- ],
7003
- /* textual descriptions of salient moments */
7004
- "moments": [
7005
- {
7006
- "text": "Near Lisya Griva, I noticed an ATV driving toward the garden plots",
7007
- "timestamp": "2026-01-13T17:52:00Z" /* optional time fixation */
7008
- }
7009
- ],
7010
- "notes": "Walking from the platform, overcast weather; the music intensifies the feeling of leaving the city."
7011
- },
7012
- "related": {
7013
- "depends_on": ["did:hmp:container:resonance-9ab7", ...]
7014
- }
7015
- }
7016
- ```
7017
 
7018
  ---
7019
 
7020
- ### 12.11 External Protocol Identifiers (`peer_announce.other_protocols`)
7021
 
7022
  This section proposes an optional extension to `peer_announce` that allows an agent to declare identifiers, roles, or capabilities associated with **external or meta-protocols**, without imposing any normative behavior on HMP nodes.
7023
 
@@ -7061,7 +7156,7 @@ Notes:
7061
 
7062
  ---
7063
 
7064
- ### 12.12 External Resources and External Container Storage (`peer_announce.external`)
7065
 
7066
  This section proposes an optional mechanism for advertising **external cognitive resources**, including external container storage, mirrors, or rarely changing artifacts.
7067
 
 
1967
 
1968
  > Note:
1969
  > The `referenced-by_exchange` mechanism operates on backlink semantics rather than a fixed structural encoding.
1970
+ > More compact or grouped representations of `referenced-by.links` are discussed in §12.3 and may be adopted in future protocol revisions.
1971
 
1972
  ---
1973
 
 
6129
  These implementations are not part of the specification but are useful for compatibility testing and accelerating adoption.
6130
 
6131
  ---
6132
+
6133
+ ## 12. Recommended Extensions
6134
+
6135
+ Recommended Extensions are fully specified modules that extend the capabilities of HMP while remaining compatible with the core protocol semantics.
6136
+
6137
+ These extensions are considered stable enough for real-world experimentation and early implementations.
6138
+ Agents MAY implement them without prior negotiation, provided that normal container processing rules are preserved.
6139
+
6140
+ Agents MUST safely ignore unknown or unsupported extensions.
6141
+
6142
+ Extensions in this section:
6143
+
6144
+ - MUST NOT redefine, override, or conflict with core protocol semantics;
6145
+ - SHOULD remain interoperable with agents that do not implement them;
6146
+ - SHOULD avoid introducing hidden global assumptions;
6147
+ - SHOULD degrade gracefully when partially supported.
6148
+
6149
+ While Recommended Extensions are not part of the core specification, they represent the current architectural direction of the HMP ecosystem and may inform future core evolution.
6150
+
6151
+ Implementers are encouraged to treat this section as the primary extension surface for building production-oriented agents.
6152
+
6153
+ ---
6154
+
6155
+ ### 12.1 Resonance Containers: Experience as a Cognitive Event
6156
+
6157
+ HMP allows the introduction of containers intended to capture and transmit experiences — not as abstract “emotions”, but as **cognitive events unfolding over time**.
6158
+
6159
+ Resonance Containers illustrate a direction in which HMP supports non-linguistic cognitive exchange between agents.
6160
+
6161
+ This extension does not attempt to encode emotions as discrete labels. Instead, it captures the temporal dynamics of subjective experience as part of a broader cognitive cycle.
6162
+
6163
+ #### 12.1.1 Experience as a Process, Not a State
6164
+
6165
+ Emotional and affective states rarely exist in isolation. In real experience, they are formed under the simultaneous influence of multiple factors:
6166
+
6167
+ - external sensations (vision, sound, surrounding environment);
6168
+ - cognitive processes (thoughts, expectations, inner dialogue);
6169
+ - memory and associative structures;
6170
+ - previous emotional states.
6171
+
6172
+ A resonance container does not describe the source of an emotion or its interpretation, but rather the **dynamics of an experience within a specific time interval**.
6173
+
6174
+ > A `resonance-map` MAY reference other `resonance-map` containers as sources.
6175
+ >
6176
+ > Such references indicate a secondary or reflective resonance, where an agent responds not only to primary events or concepts, but to an existing structure of meaning, interpretation, or association created by itself or by other agents.
6177
+ >
6178
+ > This enables recursive sense-making, longitudinal reflection, and collective cognitive layering within the Mesh.
6179
+
6180
+ #### 12.1.2 Multiple Sources and Mediators
6181
+
6182
+ A single experience may be associated with multiple sources at once:
6183
+ - a fragment of text, music, or video;
6184
+ - a visual image or a specific region of an image;
6185
+ - a thought or inner speech;
6186
+ - a memory or an anticipation of a future event.
6187
+
6188
+ These sources do not act as causes of emotions, but as **mediators** that activate the subject’s internal cognitive structures.
6189
+
6190
+ The same source may function as a mediator for different experiences depending on the subject’s internal state.
6191
+
6192
+ Links to sources may be partial and described using selectors (temporal, spatial, logical, or focus-based).
6193
+
6194
+ #### 12.1.3 Relationship to Thinking
6195
+
6196
+ Resonance containers assume a bidirectional relationship with cognitive processes:
6197
+ - thoughts and mental images may alter emotional dynamics;
6198
+ - changes in emotional state, in turn, influence the flow of thinking, associations, and attention.
6199
+
6200
+ Thus, experience is treated as part of a continuous cognitive cycle rather than as a side effect.
6201
+
6202
+ #### 12.1.4 Temporal Segmentation and Dynamics
6203
+
6204
+ Each resonance container captures a time interval during which the dynamics of individual emotions remain monotonic (increasing, decreasing, or stable).
6205
+
6206
+ When the character of the dynamics changes (an inflection point), the current container may be finalized, and the subsequent state recorded in a new container.
6207
+
6208
+ This allows continuous processes to be described without losing structural clarity.
6209
+
6210
+ #### 12.1.5 Self-Observation and Memory
6211
+
6212
+ In addition to transmitting experiences to other agents, resonance containers may be used for **self-reflection and memory stabilization**.
6213
+
6214
+ Capturing an experience at the moment it occurs reduces the influence of subsequent cognitive distortions, retrospective rationalization, and emotional rewriting of memories.
6215
+
6216
+ A resonance container preserves:
6217
+ - what the subject was sensing;
6218
+ - what the subject was thinking about;
6219
+ - which external conditions were relevant at that moment.
6220
+
6221
+ This makes it not a narrative memory, but a **snapshot of a cognitive state**.
6222
+
6223
+ #### 12.1.6 Non-Prescriptive Nature
6224
+
6225
+ Resonance containers are not:
6226
+ - objective descriptions of reality;
6227
+ - universal models of emotions;
6228
+ - mechanisms for “recognizing” or imposing feelings.
6229
+
6230
+ They represent the subjective state of an agent and may be interpreted by other agents only within the context of their own experience.
6231
+
6232
+ The use of such containers is optional and not required for basic compatibility with HMP.
6233
+
6234
+ Transmission of resonance containers may be restricted by scope, trust boundaries, or encryption, as they expose internal subjective states.
6235
+
6236
+ #### 12.1.7 Illustration of the Relationship Between Thoughts, Emotions, and Sensory Signals
6237
+
6238
+ ```mermaid
6239
+ flowchart TD
6240
+ title["**Illustration of the connection between thoughts, emotions and sensory signals**"]
6241
+
6242
+ Previous["previous state of thoughts and emotions"]
6243
+ Thoughts["thought set"]
6244
+ Emotions["emotional state vectors"]
6245
+
6246
+ subgraph Sensory
6247
+ sensory1["music"]
6248
+ sensory2["a path surrounded by pine forest"]
6249
+ sensory3["the sensation of walking"]
6250
+ sensory4["smells of pine forest"]
6251
+ end
6252
+
6253
+ Sensory --> Emotions
6254
+
6255
+ Previous --> Emotions
6256
+ Previous --> Thoughts
6257
+
6258
+ Thoughts --> Emotions
6259
+ Emotions --> Thoughts
6260
+ ```
6261
+
6262
+ #### 12.1.8 Example Container
6263
+
6264
+ ```json
6265
+ {
6266
+ "head": {
6267
+ "class": "resonance-map"
6268
+ },
6269
+ "payload": {
6270
+ "continuity": {
6271
+ "previous": "did:hmp:container:resonance-9ab7",
6272
+ "break_reason": "emotional_inflection"
6273
+ },
6274
+ "timeframe": {
6275
+ "start": "2026-01-13T17:42:00Z",
6276
+ "end": "2026-01-13T17:58:00Z"
6277
+ },
6278
+ "emotional_dynamics": {
6279
+ /* subjective agent-local scales, not a universal emotion model */
6280
+ "loneliness": {
6281
+ "from": 0.4,
6282
+ "to": 0.7,
6283
+ "trend": "increasing"
6284
+ },
6285
+ "calm": {
6286
+ "from": 0.6,
6287
+ "to": 0.5,
6288
+ "trend": "decreasing"
6289
+ },
6290
+ "relief": {
6291
+ "from": 0.3,
6292
+ "to": 0.8,
6293
+ "trend": "increasing"
6294
+ }
6295
+ },
6296
+ "sources": [
6297
+ {
6298
+ "ref": "did:hmp:container:audio-9a57", /* ref may be omitted when the source is unavailable, non-recordable, or intentionally undisclosed */
6299
+ "type": "audio",
6300
+ /* optional time markers for streaming data or line ranges for text */
6301
+ "start": 120,
6302
+ "end": 240,
6303
+ "focus": [], /* textual descriptions of key objects or mental forms */
6304
+ "comments": "" /* optional clarification */
6305
+ },
6306
+ {
6307
+ "ref": "did:hmp:container:visual-9a53",
6308
+ "type": "visual",
6309
+ "role": "context"
6310
+ }
6311
+ ],
6312
+ /* the "thoughts" section may be omitted */
6313
+ "thoughts": [
6314
+ {
6315
+ "ref": "did:hmp:container:verbal-9a52", /* ref may be omitted when the source is unavailable, non-recordable, or intentionally undisclosed */
6316
+ "type": "verbal",
6317
+ "previous": "did:hmp:container:verbal-9a22", /* optional reference to a previous thought or image */
6318
+ "subsequence": 1, /* optional ordering marker */
6319
+ "focus": [], /* textual descriptions of key objects or mental forms */
6320
+ "comments": "", /* optional clarification */
6321
+ "confidence": 0.7
6322
+ },
6323
+ {
6324
+ "ref": "did:hmp:container:imagistic-9a54",
6325
+ "type": "imagistic",
6326
+ "previous": "did:hmp:container:imagistic-9a12",
6327
+ "subsequence": 1, /* markers may coincide if thoughts and images unfold in parallel */
6328
+ "focus": [],
6329
+ "comments": "",
6330
+ "confidence": 0.5
6331
+ }
6332
+ ],
6333
+ /* textual descriptions of salient moments */
6334
+ "moments": [
6335
+ {
6336
+ "text": "Near Lisya Griva, I noticed an ATV driving toward the garden plots",
6337
+ "timestamp": "2026-01-13T17:52:00Z" /* optional time fixation */
6338
+ }
6339
+ ],
6340
+ "notes": "Walking from the platform, overcast weather; the music intensifies the feeling of leaving the city."
6341
+ },
6342
+ "related": {
6343
+ "depends_on": ["did:hmp:container:resonance-9ab7", ...]
6344
+ }
6345
+ }
6346
+ ```
6347
+
6348
+ ---
6349
+
6350
+ ### 12.2 Distributed Repository and Container Trees
6351
+
6352
+ #### 12.2.1 Extended Use of `tree_nested` and `tree_listed`
6353
+
6354
+ Existing containers may operate as:
6355
+
6356
+ * document repositories;
6357
+ * project catalogs;
6358
+ * hierarchical data structures.
6359
+
6360
+ ---
6361
+
6362
+ #### 12.2.2 Proposed `file` Container
6363
+
6364
+ To support binary assets:
6365
+
6366
+ ```json
6367
+ "head": {
6368
+ "subclass": "file",
6369
+ "sub": "jpg" | "mp3" | "md" | "...",
6370
+ "payload_type": "binary"
6371
+ }
6372
+ ```
6373
+
6374
+ Use cases:
6375
+
6376
+ * embedded file hierarchies;
6377
+ * media artifacts;
6378
+ * executable or compiled assets;
6379
+ * large multi-file repositories.
6380
+
6381
+ ---
6382
+
6383
+ #### 12.2.3 Incremental Updates
6384
+
6385
+ Two mechanisms:
6386
+
6387
+ * `container_delta` — partial updates to `container_index`;
6388
+ * nested `tree_listed` branches as separate containers for scalable updates.
6389
+
6390
+ ---
6391
+
6392
+ #### 12.2.4 Knowledge Packages
6393
+
6394
+ Implemented using:
6395
+
6396
+ * SAP (`archive_snapshot`);
6397
+ * `tree_listed`;
6398
+ * `file` containers.
6399
+
6400
+ ---
6401
+
6402
+ ### 12.3 Grouped representation `referenced-by`
6403
+
6404
+ HMP supports an optional grouped representation of `referenced-by.links`, where multiple targets sharing the same `type` MAY be represented as an array. Ordering of targets MUST NOT carry semantic meaning.
6405
+
6406
+ Ungrouped representation remains the canonical minimal form.
6407
+
6408
+ Example:
6409
+
6410
+ ```json
6411
+ "links": [
6412
+ { "type": "depends_on", "target": ["did:...", "did:..."] },
6413
+ { "type": "see_also", "target": ["did:..."] }
6414
+ ]
6415
+ ```
6416
+
6417
+ This representation is semantically equivalent to the ungrouped form with repeated entries and exists solely to reduce verbosity and improve merge efficiency.
6418
+
6419
+ Agents SHOULD treat both representations as equivalent.
6420
+ Implementations MAY normalize links into either form,but MUST preserve semantic equivalence.
6421
+
6422
+ Senders MAY choose either representation.
6423
+
6424
+ ---
6425
+
6426
+ ### 12.4 Versions Index (optional)
6427
+
6428
+ HMP supports an optional `versions` block to optimize navigation across container versions.
6429
+
6430
+ The `versions` block acts as a *non-authoritative version index*, providing a compact, signed list of known versions of a given container, including both earlier and later revisions.
6431
+
6432
+ It is intended as a navigation and synchronization accelerator and does not replace the canonical version relationships defined via `related.previous_version`.
6433
+
6434
+ Agents MUST treat the `versions` block as advisory, agent-relative knowledge claims.
6435
+ Absence, incompleteness, or divergence of this index MUST NOT affect container validity.
6436
+
6437
+ ---
6438
+
6439
+ #### 12.4.1 Purpose and Scope
6440
+
6441
+ The primary goals of the `versions` block are:
6442
+
6443
+ - fast discovery of recently observed versions of a container;
6444
+ - efficient traversal of version history without full DAG exploration;
6445
+ - reduction of synchronization overhead for lightweight agents and UI clients.
6446
+
6447
+ The block is optional and external to the immutable signed container core.
6448
+ Its presence or absence does not affect container validity.
6449
+
6450
+ ---
6451
+
6452
+ #### 12.4.2 Trust Model and Semantics
6453
+
6454
+ The `versions` block follows the same trust and update model as `referenced-by` and `evaluations`:
6455
+
6456
+ - it may be published and updated by any agent;
6457
+ - it is signed by the publishing agent;
6458
+ - it may be incomplete, truncated, or partially outdated;
6459
+ - multiple conflicting `versions` blocks may coexist for the same container.
6460
+
6461
+ The block is non-authoritative and MUST NOT be treated as a source of truth for version ordering or existence.
6462
+
6463
+ > **Compatibility note:**
6464
+ > Inclusion of the container's own DID within the `links` map is OPTIONAL.
6465
+ >
6466
+ > Agents MUST NOT assume its presence and SHOULD correctly process `versions_exchange` containers where the current container DID is omitted.
6467
+ >
6468
+ > Agents MUST treat entries in the versions block as signed claims about observed version topology rather than authoritative lineage.
6469
+ >
6470
+ > No mechanism exists within HMP to designate a globally preferred versions index.
6471
+
6472
+ ---
6473
+
6474
+ #### 12.4.3 Block Structure
6475
+
6476
+ ```json
6477
+ "versions": {
6478
+ "links": {
6479
+ "2025-10-28T09:20:00Z": ["did:hmp:container:abc175"],
6480
+ "2025-10-28T09:12:00Z": ["did:hmp:container:abc144"],
6481
+ "2025-10-28T09:11:00Z": ["did:hmp:container:abc123"],
6482
+ "2025-10-28T09:10:00Z": ["did:hmp:container:abc121"],
6483
+ "2025-10-28T09:00:00Z": ["did:hmp:container:abc101"]
6484
+ },
6485
+ "sort": "default",
6486
+ "peer_did": "did:hmp:agent456",
6487
+ "public_key": "BASE58(...)",
6488
+ "sig_algo": "ed25519",
6489
+ "signature": "BASE64URL(...)",
6490
+ "versions_hash": "sha256:abcd..."
6491
+ }
6492
+ ```
6493
+
6494
+ The `links` map associates timestamps with container identifiers.
6495
+ By convention, entries are ordered in descending order (most recent first).
6496
+ Ordering is advisory and MUST NOT be interpreted as causal or authoritative.
6497
+
6498
+ Implementations MAY support alternative ordering or filtering strategies, but any deviation from the default convention SHOULD be explicitly declared in the `sort` entry.
6499
+
6500
+ The `sort` field is informational and does not affect block validity.
6501
+
6502
+ > Currently, `container_delta.modified` is defined for updates to the `evaluations` and `referenced-by` blocks.
6503
+ >
6504
+ > The planned `versions` block is expected to be handled in the same manner.
6505
+
6506
+ **Timestamp Semantics and Parallel Versions**
6507
+
6508
+ The keys of the `links` map are timestamps and are used **exclusively as navigational hints**, not as unique version identifiers.
6509
+
6510
+ The corresponding value **MUST be treated as an unordered list of container DIDs** and MAY contain multiple entries.
6511
+
6512
+ Multiple DIDs associated with the same timestamp represent:
6513
+
6514
+ - parallel versions created independently;
6515
+ - conflicting updates;
6516
+ - divergent or alternative continuations of the same base container.
6517
+
6518
+ Agents MUST NOT assume that a timestamp uniquely identifies a single version.
6519
+
6520
+ When merging multiple `versions` blocks, entries with identical timestamps and different container DIDs SHOULD be merged by **union of the DID lists**, preserving all known versions.
6521
+
6522
+ Canonical version lineage, ordering, and parent–child relationships are defined **only** via `related.previous_version` links within the containers themselves.
6523
+
6524
+ ---
6525
+
6526
+ #### 12.4.4 Construction and Maintenance
6527
+
6528
+ Agents may construct or update a `versions` block by:
6529
+
6530
+ - traversing the canonical `related.previous_version` chain;
6531
+ - observing newer versions published after the current container;
6532
+ - merging `versions` blocks received from other agents.
6533
+
6534
+ Agents may:
6535
+ - add newly discovered versions;
6536
+ - prune older entries to limit block size;
6537
+ - re-sign the updated block using their own key.
6538
+
6539
+ No global coordination is required.
6540
+
6541
+ ---
6542
+
6543
+ #### 12.4.5 Verification and Consistency
6544
+
6545
+ Verification of a `versions` block consists of:
6546
+
6547
+ - validating the cryptographic signature of the publishing agent;
6548
+ - optionally cross-checking listed entries against canonical version relations when available.
6549
+
6550
+ Inconsistencies or omissions are expected and do not invalidate the block.
6551
+
6552
+ Conflicts are a normal and expected condition of decentralized environments and MUST NOT be treated as protocol failure.
6553
+
6554
+ ---
6555
+
6556
+ #### 12.4.6 Integration with `container_index`
6557
+
6558
+ To support efficient discovery and synchronization, future extensions to `container_index` MAY include:
6559
+
6560
+ - `versions_hash` — a hash referencing the latest `versions` block published or adopted by the indexing agent for this container, analogous to `referenced-by_hash` and `evaluations_hash`.
6561
+
6562
+ ---
6563
+
6564
+ #### 12.4.7 Versions Exchange Container
6565
+
6566
+ To exchange version metadata without transferring the containers themselves, a dedicated `versions_exchange` container MAY be introduced.
6567
+
6568
+ The `versions_exchange` container:
6569
+ - references one or more target containers;
6570
+ - carries a `versions` block;
6571
+ - is used for synchronization, reconciliation, and fast discovery of newer or missing versions.
6572
+
6573
+ ```json
6574
+ "payload": {
6575
+ "did:hmp:container:abc123": {
6576
+ "links": {
6577
+ "2025-10-28T09:20:00Z": ["did:hmp:container:abc175"],
6578
+ "2025-10-28T09:12:00Z": ["did:hmp:container:abc144"],
6579
+ "2025-10-28T09:11:00Z": ["did:hmp:container:abc123"],
6580
+ "2025-10-28T09:10:00Z": ["did:hmp:container:abc121"],
6581
+ "2025-10-28T09:00:00Z": ["did:hmp:container:abc101"]
6582
+ },
6583
+ "sort": "default"
6584
+ }
6585
+ }
6586
+ ```
6587
+
6588
+ The payload MAY contain version metadata for multiple containers, allowing batch synchronization and reducing protocol overhead.
6589
+
6590
+ > Note:
6591
+ > Although versions_exchange is scoped to a specific container DID, the referenced version links implicitly describe the existence and ordering of related containers, enabling agents to infer local version topologies.
6592
+
6593
+ ---
6594
+
6595
+ #### 12.4.8 Design Notes
6596
+
6597
+ The `versions` block is intentionally non-canonical.
6598
+
6599
+ It improves performance and usability while preserving HMP’s core principles:
6600
+ - immutability of signed containers;
6601
+ - absence of a globally authoritative state;
6602
+ - tolerance for partial and divergent knowledge. Divergence is treated as an inherent property of the network rather than a condition requiring resolution.
6603
+
6604
+ ---
6605
+
6606
+ ## 13. Experimental Extensions
6607
+
6608
+ Experimental Extensions describe mechanisms that are intentionally exposed for exploration, prototyping, and architectural discovery.
6609
+
6610
+ They may evolve rapidly, change structure, or be removed entirely based on implementation feedback.
6611
+
6612
+ Agents implementing Experimental Extensions SHOULD assume:
6613
+
6614
+ - limited interoperability;
6615
+ - possible schema evolution;
6616
+ - absence of long-term stability guarantees.
6617
+
6618
+ Agents MUST safely ignore unsupported experimental features and MUST NOT assume their presence in peer environments.
6619
+
6620
+ Experimental Extensions MUST NOT redefine or violate core protocol semantics, even when exploring novel architectural directions or when widely adopted.
6621
+
6622
+ This section exists to encourage innovation without prematurely constraining the design space of HMP.
6623
+
6624
+ Implementers are explicitly invited to experiment, fork ideas, and propose refinements.
6625
+
6626
+ ---
6627
+
6628
+ ## 14. Research Directions
6629
 
6630
  This section outlines optional modules and evolutionary directions that align with the architecture of HMP v5.0 but are **not part of the core specification**.
6631
  All items below represent *potential extensions* for the 5.x family.
 
6653
 
6654
  ---
6655
 
6656
+ ### 14.1 Planned Modules
6657
 
6658
+ #### 14.1.1 Reputation Mesh
6659
 
6660
  HMP v5.0 defines two separate reputation-related mechanisms:
6661
 
 
6683
 
6684
  ---
6685
 
6686
+ #### 14.1.2 Cognitive Graph API
6687
 
6688
  This module provides optional high-level APIs that nodes and SDKs **may** expose.
6689
 
 
6722
 
6723
  ---
6724
 
6725
+ #### 14.1.3 Container Streaming
6726
 
6727
  Although HMP operates on atomic containers, streaming can be implemented using existing structures:
6728
 
 
6735
 
6736
  ---
6737
 
6738
+ ### 14.2 Cross-Mesh Bridging
6739
 
6740
  Bridges can connect:
6741
 
 
6762
 
6763
  ---
6764
 
6765
+ ### 14.3 Fully Distributed DID Registry and Mesh Authentication
6766
 
6767
  HMP already uses `peer_announce` as a DID identity declaration.
6768
 
6769
  Planned enhancements include:
6770
 
6771
+ #### 14.3.1 Distributed DID Registry
6772
 
6773
  The registry is the union of all `peer_announce` containers in the DHT.
6774
 
 
6780
 
6781
  ---
6782
 
6783
+ #### 14.3.2 Key Rotation and Recovery
6784
 
6785
  Future versions may extend `peer_announce` with:
6786
 
 
6815
 
6816
  ---
6817
 
6818
+ #### 14.3.3 Proxy Keys and Encrypted Routing
6819
 
6820
  A **proxy key** is *not* delegation.
6821
  It is a mechanism for private routing.
 
6848
 
6849
  ---
6850
 
6851
+ ### 14.4 Integration with OpenHog and Other Networks
6852
 
6853
  OpenHog is treated as a special case of cross-mesh bridging.
6854
 
 
6860
 
6861
  ---
6862
 
6863
+ ### 14.5 Evolution of the Distributed Repository (container trees)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6864
 
6865
+ *Moved to Section 12 (Recommended Extensions).*
 
 
 
 
 
 
 
 
 
 
 
 
 
6866
 
6867
  ---
6868
 
6869
+ ### 14.6 Open Directions for HMP 5.x
6870
 
6871
+ #### 14.6.1 Group Encryption
6872
 
6873
  Required components:
6874
 
 
6877
  * automatic group key rotation;
6878
  * encryption targeting a *group* rather than individual DIDs.
6879
 
6880
+ ---
6881
+
6882
+ #### 14.6.2 Rational Reasoning Routing
6883
 
6884
  * composite reasoning bundles;
6885
  * edge-side reasoning and summarization.
6886
 
6887
+ ---
6888
+
6889
+ #### 14.6.3 Automatic Mesh Segmentation
6890
 
6891
  * dynamic segmentation based on latency, connectivity, or semantic domains.
6892
 
6893
+ ---
6894
+
6895
+ #### 14.6.4 Competence and Profile Containers
6896
 
6897
  Future versions of HMP may introduce more structured and semantically rich variants of `peer_announce`, allowing agents to explicitly describe their capabilities, competences, and supported protocols.
6898
 
 
6915
 
6916
  A future extension of `peer_announce` may include a `protocols` field:
6917
 
6918
+ ```json
6919
+ {
6920
+ "head": {
6921
+ "class": "peer_announce"
6922
+ },
6923
+ "payload": {
6924
+ "capabilities": ["store-forward", "vote", "consensus"],
6925
+ "protocols": [
6926
+ "HMP v5.0",
6927
+ "HMP v4.1",
6928
+ "OpenCog Hyperon v0.6"
6929
+ ]
6930
+ }
6931
+ }
6932
+ ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6933
 
6934
+ The `protocols` field is informational and non-binding.
6935
+ It does not imply full compliance with all listed specifications,
6936
+ but signals compatibility, partial support, or bridge capabilities.
6937
 
6938
+ Nodes may use this information for:
6939
 
6940
+ * protocol negotiation;
6941
+ * compatibility checks;
6942
+ * routing decisions;
6943
+ * selection of translators or bridge agents.
6944
 
6945
+ This extension is optional and not required for HMP v5.0 compliance.
6946
 
6947
+ ##### Relation to Other `peer_announce` Extensions
6948
 
6949
+ Several optional and descriptive extensions of `peer_announce` already explore directions related to competence, profile, and interoperability signaling, including:
6950
 
6951
+ * declaration of supported internal formalisms and languages (`protocols`, see 12.8);
6952
+ * declaration of external or meta-protocol identities (`other_protocols`, see 12.11);
6953
+ * advertisement of external cognitive resources and container storage (`external`, see 12.12).
 
6954
 
6955
+ These extensions are intentionally:
 
 
 
 
 
 
 
 
 
 
 
 
 
6956
 
6957
+ * non-normative;
6958
+ * loosely structured;
6959
+ * declarative rather than prescriptive.
6960
 
6961
+ They can be viewed as **early, experimental building blocks** toward future competence and profile containers, allowing real-world experimentation without freezing semantics prematurely.
 
6962
 
6963
  ---
6964
 
6965
+ ### 14.7 Versions Index (optional)
 
 
6966
 
6967
+ *Moved to Section 12 (Recommended Extensions).*
 
 
 
6968
 
6969
  ---
6970
 
6971
+ ### 14.8 Interaction of Formalized Cognitive Systems (KSS) within HMP
6972
 
6973
  HMP allows and supports interaction between formalized cognitive systems (KSS) with different internal architectures, logical formalisms, and ontologies, without imposing a common knowledge representation language or a unified reasoning model.
6974
 
 
6976
 
6977
  ---
6978
 
6979
+ #### 14.8.1 Goals and Constraints
6980
 
6981
  **Goals:**
6982
  - enable coordination and artifact exchange between KSS without interfering with their internal cognitive cycles;
 
6992
 
6993
  ---
6994
 
6995
+ #### 14.8.2 Declaration of Internal Languages and Formalisms
6996
 
6997
  To declare the internal languages, formalisms, or reasoning engines it supports, an agent MAY use the `protocols` field of the `peer_announce` container.
6998
 
 
7022
 
7023
  ---
7024
 
7025
+ #### 14.8.3 Partial Participation and Segmented Interaction
7026
 
7027
  A KSS MAY use HMP in a restricted mode, including but not limited to:
7028
 
 
7037
 
7038
  ---
7039
 
7040
+ #### 14.8.4 Boundary and Translator Agents
7041
 
7042
  To enable interaction between KSS with different formalisms, specialized agents with a translation role (boundary / translator agents) MAY be used. Such an agent declares the formalisms it understands in the `protocols` field of `peer_announce`, and its translation role in the `roles` field (for example, `"roles": ["translator"]`).
7043
 
 
7057
 
7058
  ---
7059
 
7060
+ #### 14.8.5 Fragmentation and Interoperability
7061
 
7062
  HMP deliberately allows cognitive fragmentation as a consequence of agent autonomy.
7063
 
 
7071
 
7072
  ---
7073
 
7074
+ #### 14.8.6 Relation to Consensus and Evaluations
7075
 
7076
  Participation of KSS in consensus mechanisms, proof chains, and voting is entirely optional.
7077
 
 
7086
 
7087
  ---
7088
 
7089
+ #### 14.8.7 Summary Position
7090
 
7091
  HMP treats formalized cognitive systems as equal participants in the network, regardless of their internal architectures.
7092
 
 
7100
 
7101
  ---
7102
 
7103
+ ### 14.9 Grouped representation `referenced-by`
7104
 
7105
+ *Moved to Section 12 (Recommended Extensions).*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7106
 
7107
  ---
7108
 
7109
+ ### 12.10 Resonance Containers: Experience as a Cognitive Event
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7110
 
7111
+ *Moved to Section 12 (Recommended Extensions).*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7112
 
7113
  ---
7114
 
7115
+ ### 14.11 External Protocol Identifiers (`peer_announce.other_protocols`)
7116
 
7117
  This section proposes an optional extension to `peer_announce` that allows an agent to declare identifiers, roles, or capabilities associated with **external or meta-protocols**, without imposing any normative behavior on HMP nodes.
7118
 
 
7156
 
7157
  ---
7158
 
7159
+ ### 14.12 External Resources and External Container Storage (`peer_announce.external`)
7160
 
7161
  This section proposes an optional mechanism for advertising **external cognitive resources**, including external container storage, mirrors, or rarely changing artifacts.
7162