GitHub Action
commited on
Commit
·
3b36dcc
1
Parent(s):
1afddb5
Sync from GitHub with Git LFS
Browse files- 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.
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
###
|
| 6161 |
|
| 6162 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
###
|
| 6243 |
|
| 6244 |
Bridges can connect:
|
| 6245 |
|
|
@@ -6266,13 +6762,13 @@ This enables dynamic, policy-driven inter-mesh gateways.
|
|
| 6266 |
|
| 6267 |
---
|
| 6268 |
|
| 6269 |
-
###
|
| 6270 |
|
| 6271 |
HMP already uses `peer_announce` as a DID identity declaration.
|
| 6272 |
|
| 6273 |
Planned enhancements include:
|
| 6274 |
|
| 6275 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
###
|
| 6356 |
|
| 6357 |
OpenHog is treated as a special case of cross-mesh bridging.
|
| 6358 |
|
|
@@ -6364,55 +6860,15 @@ Required components:
|
|
| 6364 |
|
| 6365 |
---
|
| 6366 |
|
| 6367 |
-
###
|
| 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 |
-
|
| 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 |
-
###
|
| 6414 |
|
| 6415 |
-
####
|
| 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 |
-
|
|
|
|
|
|
|
| 6425 |
|
| 6426 |
* composite reasoning bundles;
|
| 6427 |
* edge-side reasoning and summarization.
|
| 6428 |
|
| 6429 |
-
|
|
|
|
|
|
|
| 6430 |
|
| 6431 |
* dynamic segmentation based on latency, connectivity, or semantic domains.
|
| 6432 |
|
| 6433 |
-
|
|
|
|
|
|
|
| 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 |
-
|
|
|
|
|
|
|
| 6624 |
|
| 6625 |
-
|
| 6626 |
|
| 6627 |
-
|
|
|
|
|
|
|
|
|
|
| 6628 |
|
| 6629 |
-
|
| 6630 |
|
| 6631 |
-
|
| 6632 |
|
| 6633 |
-
|
| 6634 |
|
| 6635 |
-
|
| 6636 |
-
|
| 6637 |
-
|
| 6638 |
-
- is used for synchronization, reconciliation, and fast discovery of newer or missing versions.
|
| 6639 |
|
| 6640 |
-
|
| 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 |
-
|
|
|
|
|
|
|
| 6656 |
|
| 6657 |
-
|
| 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 |
-
|
| 6663 |
-
|
| 6664 |
-
The `versions` block is intentionally non-canonical.
|
| 6665 |
|
| 6666 |
-
|
| 6667 |
-
- immutability of signed containers;
|
| 6668 |
-
- absence of a globally authoritative state;
|
| 6669 |
-
- tolerance for partial and divergent knowledge.
|
| 6670 |
|
| 6671 |
---
|
| 6672 |
|
| 6673 |
-
###
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
####
|
| 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 |
-
|
| 6806 |
|
| 6807 |
-
|
| 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 |
-
|
| 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 |
-
|
| 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 |
-
###
|
| 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 |
-
###
|
| 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 |
|