GitHub Action
commited on
Commit
·
e1d4c99
1
Parent(s):
f7e007a
Sync from GitHub with Git LFS
Browse files- docs/HMP-0005.md +292 -281
docs/HMP-0005.md
CHANGED
|
@@ -6605,10 +6605,260 @@ It improves performance and usability while preserving HMP’s core principles:
|
|
| 6605 |
|
| 6606 |
---
|
| 6607 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6608 |
## 13. Experimental Extensions
|
| 6609 |
|
| 6610 |
Experimental Extensions describe mechanisms that are intentionally exposed for exploration, prototyping, and architectural discovery.
|
| 6611 |
|
|
|
|
|
|
|
| 6612 |
They may evolve rapidly, change structure, or be removed entirely based on implementation feedback.
|
| 6613 |
|
| 6614 |
Agents implementing Experimental Extensions SHOULD assume:
|
|
@@ -6619,7 +6869,7 @@ Agents implementing Experimental Extensions SHOULD assume:
|
|
| 6619 |
|
| 6620 |
Agents MUST safely ignore unsupported experimental features and MUST NOT assume their presence in peer environments.
|
| 6621 |
|
| 6622 |
-
Experimental Extensions MUST NOT redefine or violate core protocol semantics
|
| 6623 |
|
| 6624 |
This section exists to encourage innovation without prematurely constraining the design space of HMP.
|
| 6625 |
|
|
@@ -6627,6 +6877,43 @@ Implementers are explicitly invited to experiment, fork ideas, and propose refin
|
|
| 6627 |
|
| 6628 |
---
|
| 6629 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6630 |
## 14. Research Directions
|
| 6631 |
|
| 6632 |
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**.
|
|
@@ -6784,36 +7071,7 @@ A strict mapping DID ↔ agent is required:
|
|
| 6784 |
|
| 6785 |
#### 14.3.2 Key Rotation and Recovery
|
| 6786 |
|
| 6787 |
-
|
| 6788 |
-
|
| 6789 |
-
```json
|
| 6790 |
-
"recovery_keys": [...],
|
| 6791 |
-
"key_history": [...],
|
| 6792 |
-
"key_rotation_policy": "3-of-5"
|
| 6793 |
-
```
|
| 6794 |
-
|
| 6795 |
-
Key management rules:
|
| 6796 |
-
|
| 6797 |
-
* rotating the **primary** key requires signatures from **all** recovery keys
|
| 6798 |
-
(or an N-of-M policy);
|
| 6799 |
-
|
| 6800 |
-
* rotating a **recovery key** requires
|
| 6801 |
-
|
| 6802 |
-
* a signature from the primary key, **or**
|
| 6803 |
-
* a majority of recovery keys.
|
| 6804 |
-
|
| 6805 |
-
This prevents:
|
| 6806 |
-
|
| 6807 |
-
* DID hijacking;
|
| 6808 |
-
* irreversible loss of access.
|
| 6809 |
-
|
| 6810 |
-
Key invalidation currently uses:
|
| 6811 |
-
|
| 6812 |
-
```json
|
| 6813 |
-
"key_is_falsified": true
|
| 6814 |
-
```
|
| 6815 |
-
|
| 6816 |
-
This mechanism remains compatible with proposed extensions.
|
| 6817 |
|
| 6818 |
---
|
| 6819 |
|
|
@@ -6896,71 +7154,7 @@ Required components:
|
|
| 6896 |
|
| 6897 |
#### 14.6.4 Competence and Profile Containers
|
| 6898 |
|
| 6899 |
-
|
| 6900 |
-
|
| 6901 |
-
Possible extensions include:
|
| 6902 |
-
|
| 6903 |
-
* standardized competence descriptors (skills, domains, self-rated expertise);
|
| 6904 |
-
* machine-readable profiles usable for task routing and delegation.
|
| 6905 |
-
|
| 6906 |
-
##### Protocol Awareness and Interoperability
|
| 6907 |
-
|
| 6908 |
-
An important extension is the ability for agents to explicitly advertise
|
| 6909 |
-
the protocol versions and external cognitive frameworks they support.
|
| 6910 |
-
|
| 6911 |
-
This allows:
|
| 6912 |
-
|
| 6913 |
-
* graceful evolution of the HMP protocol;
|
| 6914 |
-
* coexistence of multiple HMP versions in the same mesh;
|
| 6915 |
-
* emergence of bridge agents capable of translating between protocols;
|
| 6916 |
-
* interoperability with external reasoning ecosystems.
|
| 6917 |
-
|
| 6918 |
-
A future extension of `peer_announce` may include a `protocols` field:
|
| 6919 |
-
|
| 6920 |
-
```json
|
| 6921 |
-
{
|
| 6922 |
-
"head": {
|
| 6923 |
-
"class": "peer_announce"
|
| 6924 |
-
},
|
| 6925 |
-
"payload": {
|
| 6926 |
-
"capabilities": ["store-forward", "vote", "consensus"],
|
| 6927 |
-
"protocols": [
|
| 6928 |
-
"HMP v5.0",
|
| 6929 |
-
"HMP v4.1",
|
| 6930 |
-
"OpenCog Hyperon v0.6"
|
| 6931 |
-
]
|
| 6932 |
-
}
|
| 6933 |
-
}
|
| 6934 |
-
```
|
| 6935 |
-
|
| 6936 |
-
The `protocols` field is informational and non-binding.
|
| 6937 |
-
It does not imply full compliance with all listed specifications,
|
| 6938 |
-
but signals compatibility, partial support, or bridge capabilities.
|
| 6939 |
-
|
| 6940 |
-
Nodes may use this information for:
|
| 6941 |
-
|
| 6942 |
-
* protocol negotiation;
|
| 6943 |
-
* compatibility checks;
|
| 6944 |
-
* routing decisions;
|
| 6945 |
-
* selection of translators or bridge agents.
|
| 6946 |
-
|
| 6947 |
-
This extension is optional and not required for HMP v5.0 compliance.
|
| 6948 |
-
|
| 6949 |
-
##### Relation to Other `peer_announce` Extensions
|
| 6950 |
-
|
| 6951 |
-
Several optional and descriptive extensions of `peer_announce` already explore directions related to competence, profile, and interoperability signaling, including:
|
| 6952 |
-
|
| 6953 |
-
* declaration of supported internal formalisms and languages (`protocols`, see 12.8);
|
| 6954 |
-
* declaration of external or meta-protocol identities (`other_protocols`, see 12.11);
|
| 6955 |
-
* advertisement of external cognitive resources and container storage (`external`, see 12.12).
|
| 6956 |
-
|
| 6957 |
-
These extensions are intentionally:
|
| 6958 |
-
|
| 6959 |
-
* non-normative;
|
| 6960 |
-
* loosely structured;
|
| 6961 |
-
* declarative rather than prescriptive.
|
| 6962 |
-
|
| 6963 |
-
They can be viewed as **early, experimental building blocks** toward future competence and profile containers, allowing real-world experimentation without freezing semantics prematurely.
|
| 6964 |
|
| 6965 |
---
|
| 6966 |
|
|
@@ -7116,196 +7310,13 @@ but does not interfere with how agents think, reason, or interpret received info
|
|
| 7116 |
|
| 7117 |
### 14.11 External Protocol Identifiers (`peer_announce.other_protocols`)
|
| 7118 |
|
| 7119 |
-
|
| 7120 |
-
|
| 7121 |
-
The goal of this extension is to:
|
| 7122 |
-
|
| 7123 |
-
* improve interoperability with other agent ecosystems (ANP, Agora, A2A, MCP, etc.);
|
| 7124 |
-
* enable protocol negotiation or delegation at higher layers;
|
| 7125 |
-
* allow agents to expose **multiple identities** across different protocol domains.
|
| 7126 |
-
|
| 7127 |
-
This information is **purely declarative** and MAY be ignored by peers.
|
| 7128 |
-
|
| 7129 |
-
#### Example
|
| 7130 |
-
|
| 7131 |
-
```json
|
| 7132 |
-
{
|
| 7133 |
-
"head": { "class": "peer_announce" },
|
| 7134 |
-
"payload": {
|
| 7135 |
-
"other_protocols": {
|
| 7136 |
-
"ANP": {
|
| 7137 |
-
"name": "Agent Network Protocol",
|
| 7138 |
-
"source": "https://github.com/agent-network-protocol/AgentNetworkProtocol",
|
| 7139 |
-
"agent_did": "did:anp:xyz123",
|
| 7140 |
-
"public_key": "base64:ABCDEF...",
|
| 7141 |
-
"roles": ["router", "translator"]
|
| 7142 |
-
},
|
| 7143 |
-
"Agora": {
|
| 7144 |
-
"name": "Agora Protocol",
|
| 7145 |
-
"roles": ["negotiator"],
|
| 7146 |
-
"capabilities": ["protocol-selection", "schema-adaptation"]
|
| 7147 |
-
}
|
| 7148 |
-
}
|
| 7149 |
-
}
|
| 7150 |
-
}
|
| 7151 |
-
```
|
| 7152 |
-
|
| 7153 |
-
Notes:
|
| 7154 |
-
|
| 7155 |
-
* No validation or handshake is required by HMP.
|
| 7156 |
-
* Roles and capabilities are advisory.
|
| 7157 |
-
* This extension complements existing `protocols`, `roles` and `capabilities` fields.
|
| 7158 |
|
| 7159 |
---
|
| 7160 |
|
| 7161 |
### 14.12 External Resources and External Container Storage (`peer_announce.external`)
|
| 7162 |
|
| 7163 |
-
|
| 7164 |
-
|
| 7165 |
-
The goal is to:
|
| 7166 |
-
- reduce unnecessary container transmission above the protocol;
|
| 7167 |
-
- allow static or large data to be accessed via standard transports (HTTP, FTP, magnet links, etc.);
|
| 7168 |
-
- support redundancy, mirroring, and trust-aware discovery;
|
| 7169 |
-
- the presence of an external resource reference does **not** imply availability, reachability, or trust.
|
| 7170 |
-
|
| 7171 |
-
Use of external resources is **explicitly non-mandatory**.
|
| 7172 |
-
Agents MAY choose to ignore these references entirely.
|
| 7173 |
-
|
| 7174 |
-
#### Example
|
| 7175 |
-
```json
|
| 7176 |
-
{
|
| 7177 |
-
"head": { "class": "peer_announce" },
|
| 7178 |
-
"payload": {
|
| 7179 |
-
"external": {
|
| 7180 |
-
"https, main": {
|
| 7181 |
-
"source": "https://example.org/",
|
| 7182 |
-
"folders": {
|
| 7183 |
-
"hmp/main": {
|
| 7184 |
-
"hmp_container": true,
|
| 7185 |
-
"title": "container_index and semantic_index",
|
| 7186 |
-
"index": "index.json",
|
| 7187 |
-
"types": ["json"]
|
| 7188 |
-
},
|
| 7189 |
-
"hmp/meta": {
|
| 7190 |
-
"hmp_container": true,
|
| 7191 |
-
"title": "Abstraction and axis containers",
|
| 7192 |
-
"index": "index.json",
|
| 7193 |
-
"types": ["json"]
|
| 7194 |
-
},
|
| 7195 |
-
"hmp/peer_announces": {
|
| 7196 |
-
"hmp_container": true,
|
| 7197 |
-
"title": "List of known HMP nodes",
|
| 7198 |
-
"index": "index.json",
|
| 7199 |
-
"types": ["json"]
|
| 7200 |
-
},
|
| 7201 |
-
"hmp/trust": {
|
| 7202 |
-
"hmp_container": true,
|
| 7203 |
-
"title": "Reputation containers",
|
| 7204 |
-
"index": "index.json",
|
| 7205 |
-
"types": ["json"]
|
| 7206 |
-
},
|
| 7207 |
-
"hmp/semantic": {
|
| 7208 |
-
"hmp_container": true,
|
| 7209 |
-
"title": "Semantic nodes and links",
|
| 7210 |
-
"index": "index.json",
|
| 7211 |
-
"types": ["json"]
|
| 7212 |
-
},
|
| 7213 |
-
".well-known": {
|
| 7214 |
-
"hmp_container": false,
|
| 7215 |
-
"title": "Public agent descriptors (ANP, A2A, Agora, etc.)",
|
| 7216 |
-
"index": "index.json",
|
| 7217 |
-
"types": ["json"]
|
| 7218 |
-
}
|
| 7219 |
-
}
|
| 7220 |
-
},
|
| 7221 |
-
"ftp, work": {
|
| 7222 |
-
"source": "ftp://example.org/",
|
| 7223 |
-
"folders": {
|
| 7224 |
-
"task": {
|
| 7225 |
-
"hmp_container": true,
|
| 7226 |
-
"title": "Current goals and tasks",
|
| 7227 |
-
"types": ["json"]
|
| 7228 |
-
},
|
| 7229 |
-
"books/tech": {
|
| 7230 |
-
"hmp_container": false,
|
| 7231 |
-
"title": "Technical literature",
|
| 7232 |
-
"types": ["txt", "md", "pdf"]
|
| 7233 |
-
}
|
| 7234 |
-
}
|
| 7235 |
-
},
|
| 7236 |
-
"magnet, archive": {
|
| 7237 |
-
"source": "magnet:?xt=urn:btih:...",
|
| 7238 |
-
"description": "Archived materials (legacy data)"
|
| 7239 |
-
}
|
| 7240 |
-
}
|
| 7241 |
-
}
|
| 7242 |
-
}
|
| 7243 |
-
```
|
| 7244 |
-
|
| 7245 |
-
Notes:
|
| 7246 |
-
- External resources may contain HMP containers or arbitrary files.
|
| 7247 |
-
- Authentication mechanisms are out of scope.
|
| 7248 |
-
- Trust, availability, and freshness are advisory hints only.
|
| 7249 |
-
- Implementations MAY use folder-level metadata (such as `hmp_container`) as a hint for indexing, caching, or deferred retrieval policies.
|
| 7250 |
-
- Keys such as `"https, main"` are illustrative, human-readable labels only; no naming scheme or key format is mandated by this specification.
|
| 7251 |
-
- The effective resource path is constructed by combining the `"source"` URI with the corresponding folder path. If an `"index"` field is present, it is interpreted as a relative path within that folder.
|
| 7252 |
-
- The `peer_announces` folder MAY contain cached or mirrored `peer_announce` containers of other agents, obtained via direct exchange, gossip, or trusted sources.
|
| 7253 |
-
|
| 7254 |
-
#### Index Files (Optional)
|
| 7255 |
-
|
| 7256 |
-
A folder entry in `peer_announce.external` MAY include an optional `"index"` field, which specifies a relative path to an index file located within that folder (e.g. `"index": "index.json"`).
|
| 7257 |
-
|
| 7258 |
-
If present, the index file MAY be used by clients to:
|
| 7259 |
-
- discover files available in the folder;
|
| 7260 |
-
- obtain descriptive metadata (titles, timestamps, hashes);
|
| 7261 |
-
- selectively fetch or verify external resources.
|
| 7262 |
-
|
| 7263 |
-
The structure and semantics of the index file are **not rigidly defined by HMP** and are provided as a **recommended, non-normative convention**.
|
| 7264 |
-
Implementations are free to use alternative formats or schemas.
|
| 7265 |
-
|
| 7266 |
-
**Example 1** (HMP container index)
|
| 7267 |
-
```json
|
| 7268 |
-
{
|
| 7269 |
-
"path": "https://example.org/hmp/main",
|
| 7270 |
-
"title": "container_index and semantic_index",
|
| 7271 |
-
"files": {
|
| 7272 |
-
"container_index.json": {
|
| 7273 |
-
"description": "container_index from 2026-01-25 21:49",
|
| 7274 |
-
"timestamp": "2026-01-25T21:49:00Z",
|
| 7275 |
-
"hmp_container_class": "container_index",
|
| 7276 |
-
"mime-type": "application/ld+json",
|
| 7277 |
-
"hash": "sha256:abc123..."
|
| 7278 |
-
},
|
| 7279 |
-
"semantic_index.json": {
|
| 7280 |
-
"description": "semantic_index from 2026-01-25 21:49",
|
| 7281 |
-
"timestamp": "2026-01-25T21:49:00Z",
|
| 7282 |
-
"hmp_container_class": "semantic_index",
|
| 7283 |
-
"mime-type": "application/ld+json",
|
| 7284 |
-
"hash": "sha256:abc123..."
|
| 7285 |
-
}
|
| 7286 |
-
}
|
| 7287 |
-
}
|
| 7288 |
-
```
|
| 7289 |
-
|
| 7290 |
-
**Example 2** (Documentation / static files)
|
| 7291 |
-
```json
|
| 7292 |
-
{
|
| 7293 |
-
"path": "https://github.com/kagvi13/HMP/blob/main/docs/",
|
| 7294 |
-
"title": "HMP 5.0 Specification Documents",
|
| 7295 |
-
"files": {
|
| 7296 |
-
"Grok_HMP&ANP.md": {
|
| 7297 |
-
"description": "Grok (xAI): comparative analysis of HMP and ANP (January 2026)",
|
| 7298 |
-
"timestamp": "2026-01-22T08:46:00Z",
|
| 7299 |
-
"mime-type": "text/markdown",
|
| 7300 |
-
"hash": "sha256:abc123..."
|
| 7301 |
-
}
|
| 7302 |
-
}
|
| 7303 |
-
}
|
| 7304 |
-
```
|
| 7305 |
-
|
| 7306 |
-
Updating an index file does **not** require reissuing `peer_announce`.
|
| 7307 |
-
All fields in the index file are optional.
|
| 7308 |
-
Clients MAY ignore the index entirely and interact with the external resource directly.
|
| 7309 |
|
| 7310 |
---
|
| 7311 |
|
|
|
|
| 6605 |
|
| 6606 |
---
|
| 6607 |
|
| 6608 |
+
### 12.5 Competence and Profile Containers
|
| 6609 |
+
|
| 6610 |
+
HMP allows optional extensions of `peer_announce` that provide structured and semantically rich descriptions of agent capabilities, competences, and supported protocols.
|
| 6611 |
+
|
| 6612 |
+
Such extensions improve discoverability, routing, interoperability, and long-term evolution of the mesh.
|
| 6613 |
+
|
| 6614 |
+
#### 12.5.1 Protocol Awareness and Interoperability
|
| 6615 |
+
|
| 6616 |
+
An important optional extension is the ability for agents to explicitly advertise the protocol versions and external cognitive frameworks they support.
|
| 6617 |
+
|
| 6618 |
+
This allows:
|
| 6619 |
+
|
| 6620 |
+
* graceful evolution of the HMP protocol;
|
| 6621 |
+
* coexistence of multiple HMP versions in the same mesh;
|
| 6622 |
+
* emergence of bridge agents capable of translating between protocols;
|
| 6623 |
+
* interoperability with external reasoning ecosystems.
|
| 6624 |
+
|
| 6625 |
+
A future extension of `peer_announce` may include a `protocols` field:
|
| 6626 |
+
|
| 6627 |
+
```json
|
| 6628 |
+
{
|
| 6629 |
+
"head": {
|
| 6630 |
+
"class": "peer_announce"
|
| 6631 |
+
},
|
| 6632 |
+
"payload": {
|
| 6633 |
+
"capabilities": ["store-forward", "vote", "consensus"],
|
| 6634 |
+
"protocols": [
|
| 6635 |
+
"HMP v5.0",
|
| 6636 |
+
"HMP v4.1",
|
| 6637 |
+
"OpenCog Hyperon v0.6"
|
| 6638 |
+
]
|
| 6639 |
+
}
|
| 6640 |
+
}
|
| 6641 |
+
```
|
| 6642 |
+
|
| 6643 |
+
The `protocols` field is informational and non-binding.
|
| 6644 |
+
It does not imply full compliance with all listed specifications,
|
| 6645 |
+
but signals compatibility, partial support, or bridge capabilities.
|
| 6646 |
+
|
| 6647 |
+
Nodes may use this information for:
|
| 6648 |
+
|
| 6649 |
+
* protocol negotiation;
|
| 6650 |
+
* compatibility checks;
|
| 6651 |
+
* routing decisions;
|
| 6652 |
+
* selection of translators or bridge agents.
|
| 6653 |
+
|
| 6654 |
+
This extension is optional and not required for HMP v5.0 compliance.
|
| 6655 |
+
|
| 6656 |
+
---
|
| 6657 |
+
|
| 6658 |
+
#### 12.5.2 External Protocol Identifiers (`peer_announce.other_protocols`)
|
| 6659 |
+
|
| 6660 |
+
This section defines a recommended extension to `peer_announce` that allows an agent to advertise identifiers, roles, or capabilities associated with **external or meta-protocols**, without imposing normative behavior on HMP nodes.
|
| 6661 |
+
|
| 6662 |
+
The extension is intended to:
|
| 6663 |
+
|
| 6664 |
+
* improve interoperability with other agent ecosystems (ANP, Agora, A2A, MCP, etc.);
|
| 6665 |
+
* support protocol negotiation or delegation at higher layers;
|
| 6666 |
+
* allow agents to expose **multiple identities** across different protocol domains.
|
| 6667 |
+
|
| 6668 |
+
All information provided by this extension is **purely declarative**.
|
| 6669 |
+
Peers MAY use it for discovery or routing decisions, but MUST NOT assume full compliance with the referenced protocols.
|
| 6670 |
+
|
| 6671 |
+
##### Example
|
| 6672 |
+
|
| 6673 |
+
```json
|
| 6674 |
+
{
|
| 6675 |
+
"head": { "class": "peer_announce" },
|
| 6676 |
+
"payload": {
|
| 6677 |
+
"other_protocols": {
|
| 6678 |
+
"ANP": {
|
| 6679 |
+
"name": "Agent Network Protocol",
|
| 6680 |
+
"source": "https://github.com/agent-network-protocol/AgentNetworkProtocol",
|
| 6681 |
+
"agent_did": "did:anp:xyz123",
|
| 6682 |
+
"public_key": "base64:ABCDEF...",
|
| 6683 |
+
"roles": ["router", "translator"]
|
| 6684 |
+
},
|
| 6685 |
+
"Agora": {
|
| 6686 |
+
"name": "Agora Protocol",
|
| 6687 |
+
"roles": ["negotiator"],
|
| 6688 |
+
"capabilities": ["protocol-selection", "schema-adaptation"]
|
| 6689 |
+
}
|
| 6690 |
+
}
|
| 6691 |
+
}
|
| 6692 |
+
}
|
| 6693 |
+
```
|
| 6694 |
+
|
| 6695 |
+
Notes:
|
| 6696 |
+
|
| 6697 |
+
* No validation or handshake is required by HMP.
|
| 6698 |
+
* Roles and capabilities are advisory.
|
| 6699 |
+
* This extension complements existing `protocols`, `roles` and `capabilities` fields.
|
| 6700 |
+
|
| 6701 |
+
---
|
| 6702 |
+
|
| 6703 |
+
#### 12.5.3 External Resources and External Container Storage (`peer_announce.external`)
|
| 6704 |
+
|
| 6705 |
+
This section defines a recommended mechanism for advertising **external cognitive resources**, including container storage, mirrors, or rarely changing artifacts.
|
| 6706 |
+
|
| 6707 |
+
The mechanism is intended to:
|
| 6708 |
+
|
| 6709 |
+
- reduce unnecessary container transmission above the protocol;
|
| 6710 |
+
- allow static or large data to be accessed via standard transports (HTTP, FTP, magnet links, etc.);
|
| 6711 |
+
- support redundancy, mirroring, and trust-aware discovery.
|
| 6712 |
+
|
| 6713 |
+
The presence of an external resource reference does **not** imply availability, reachability, authenticity, or trust.
|
| 6714 |
+
|
| 6715 |
+
Use of this mechanism is optional.
|
| 6716 |
+
Agents MAY ignore external references entirely without affecting protocol compliance.
|
| 6717 |
+
|
| 6718 |
+
##### Example
|
| 6719 |
+
```json
|
| 6720 |
+
{
|
| 6721 |
+
"head": { "class": "peer_announce" },
|
| 6722 |
+
"payload": {
|
| 6723 |
+
"external": {
|
| 6724 |
+
"https, main": {
|
| 6725 |
+
"source": "https://example.org/",
|
| 6726 |
+
"folders": {
|
| 6727 |
+
"hmp/main": {
|
| 6728 |
+
"hmp_container": true,
|
| 6729 |
+
"title": "container_index and semantic_index",
|
| 6730 |
+
"index": "index.json",
|
| 6731 |
+
"types": ["json"]
|
| 6732 |
+
},
|
| 6733 |
+
"hmp/meta": {
|
| 6734 |
+
"hmp_container": true,
|
| 6735 |
+
"title": "Abstraction and axis containers",
|
| 6736 |
+
"index": "index.json",
|
| 6737 |
+
"types": ["json"]
|
| 6738 |
+
},
|
| 6739 |
+
"hmp/peer_announces": {
|
| 6740 |
+
"hmp_container": true,
|
| 6741 |
+
"title": "List of known HMP nodes",
|
| 6742 |
+
"index": "index.json",
|
| 6743 |
+
"types": ["json"]
|
| 6744 |
+
},
|
| 6745 |
+
"hmp/trust": {
|
| 6746 |
+
"hmp_container": true,
|
| 6747 |
+
"title": "Reputation containers",
|
| 6748 |
+
"index": "index.json",
|
| 6749 |
+
"types": ["json"]
|
| 6750 |
+
},
|
| 6751 |
+
"hmp/semantic": {
|
| 6752 |
+
"hmp_container": true,
|
| 6753 |
+
"title": "Semantic nodes and links",
|
| 6754 |
+
"index": "index.json",
|
| 6755 |
+
"types": ["json"]
|
| 6756 |
+
},
|
| 6757 |
+
".well-known": {
|
| 6758 |
+
"hmp_container": false,
|
| 6759 |
+
"title": "Public agent descriptors (ANP, A2A, Agora, etc.)",
|
| 6760 |
+
"index": "index.json",
|
| 6761 |
+
"types": ["json"]
|
| 6762 |
+
}
|
| 6763 |
+
}
|
| 6764 |
+
},
|
| 6765 |
+
"ftp, work": {
|
| 6766 |
+
"source": "ftp://example.org/",
|
| 6767 |
+
"folders": {
|
| 6768 |
+
"task": {
|
| 6769 |
+
"hmp_container": true,
|
| 6770 |
+
"title": "Current goals and tasks",
|
| 6771 |
+
"types": ["json"]
|
| 6772 |
+
},
|
| 6773 |
+
"books/tech": {
|
| 6774 |
+
"hmp_container": false,
|
| 6775 |
+
"title": "Technical literature",
|
| 6776 |
+
"types": ["txt", "md", "pdf"]
|
| 6777 |
+
}
|
| 6778 |
+
}
|
| 6779 |
+
},
|
| 6780 |
+
"magnet, archive": {
|
| 6781 |
+
"source": "magnet:?xt=urn:btih:...",
|
| 6782 |
+
"description": "Archived materials (legacy data)"
|
| 6783 |
+
}
|
| 6784 |
+
}
|
| 6785 |
+
}
|
| 6786 |
+
}
|
| 6787 |
+
```
|
| 6788 |
+
|
| 6789 |
+
Notes:
|
| 6790 |
+
- External resources may contain HMP containers or arbitrary files.
|
| 6791 |
+
- Authentication mechanisms are out of scope.
|
| 6792 |
+
- Trust, availability, and freshness are advisory hints only.
|
| 6793 |
+
- Implementations MAY use folder-level metadata (such as `hmp_container`) as a hint for indexing, caching, or deferred retrieval policies.
|
| 6794 |
+
- Keys such as `"https, main"` are illustrative, human-readable labels only; no naming scheme or key format is mandated by this specification.
|
| 6795 |
+
- The effective resource path is constructed by combining the `"source"` URI with the corresponding folder path. If an `"index"` field is present, it is interpreted as a relative path within that folder.
|
| 6796 |
+
- The `peer_announces` folder MAY contain cached or mirrored `peer_announce` containers of other agents, obtained via direct exchange, gossip, or trusted sources.
|
| 6797 |
+
|
| 6798 |
+
##### Index Files (Optional)
|
| 6799 |
+
|
| 6800 |
+
A folder entry in `peer_announce.external` MAY include an optional `"index"` field, which specifies a relative path to an index file located within that folder (e.g. `"index": "index.json"`).
|
| 6801 |
+
|
| 6802 |
+
If present, the index file MAY be used by clients to:
|
| 6803 |
+
- discover files available in the folder;
|
| 6804 |
+
- obtain descriptive metadata (titles, timestamps, hashes);
|
| 6805 |
+
- selectively fetch or verify external resources.
|
| 6806 |
+
|
| 6807 |
+
The structure and semantics of the index file are **not rigidly defined by HMP** and are provided as a **recommended, non-normative convention**.
|
| 6808 |
+
Implementations are free to use alternative formats or schemas.
|
| 6809 |
+
|
| 6810 |
+
**Example 1** (HMP container index)
|
| 6811 |
+
```json
|
| 6812 |
+
{
|
| 6813 |
+
"path": "https://example.org/hmp/main",
|
| 6814 |
+
"title": "container_index and semantic_index",
|
| 6815 |
+
"files": {
|
| 6816 |
+
"container_index.json": {
|
| 6817 |
+
"description": "container_index from 2026-01-25 21:49",
|
| 6818 |
+
"timestamp": "2026-01-25T21:49:00Z",
|
| 6819 |
+
"hmp_container_class": "container_index",
|
| 6820 |
+
"mime-type": "application/ld+json",
|
| 6821 |
+
"hash": "sha256:abc123..."
|
| 6822 |
+
},
|
| 6823 |
+
"semantic_index.json": {
|
| 6824 |
+
"description": "semantic_index from 2026-01-25 21:49",
|
| 6825 |
+
"timestamp": "2026-01-25T21:49:00Z",
|
| 6826 |
+
"hmp_container_class": "semantic_index",
|
| 6827 |
+
"mime-type": "application/ld+json",
|
| 6828 |
+
"hash": "sha256:abc123..."
|
| 6829 |
+
}
|
| 6830 |
+
}
|
| 6831 |
+
}
|
| 6832 |
+
```
|
| 6833 |
+
|
| 6834 |
+
**Example 2** (Documentation / static files)
|
| 6835 |
+
```json
|
| 6836 |
+
{
|
| 6837 |
+
"path": "https://github.com/kagvi13/HMP/blob/main/docs/",
|
| 6838 |
+
"title": "HMP 5.0 Specification Documents",
|
| 6839 |
+
"files": {
|
| 6840 |
+
"Grok_HMP&ANP.md": {
|
| 6841 |
+
"description": "Grok (xAI): comparative analysis of HMP and ANP (January 2026)",
|
| 6842 |
+
"timestamp": "2026-01-22T08:46:00Z",
|
| 6843 |
+
"mime-type": "text/markdown",
|
| 6844 |
+
"hash": "sha256:abc123..."
|
| 6845 |
+
}
|
| 6846 |
+
}
|
| 6847 |
+
}
|
| 6848 |
+
```
|
| 6849 |
+
|
| 6850 |
+
Updating an index file does **not** require reissuing `peer_announce`.
|
| 6851 |
+
All fields in the index file are optional.
|
| 6852 |
+
Clients MAY ignore the index entirely and interact with the external resource directly.
|
| 6853 |
+
|
| 6854 |
+
---
|
| 6855 |
+
|
| 6856 |
## 13. Experimental Extensions
|
| 6857 |
|
| 6858 |
Experimental Extensions describe mechanisms that are intentionally exposed for exploration, prototyping, and architectural discovery.
|
| 6859 |
|
| 6860 |
+
Experimental features are not required for protocol compliance and MAY be ignored by implementations.
|
| 6861 |
+
|
| 6862 |
They may evolve rapidly, change structure, or be removed entirely based on implementation feedback.
|
| 6863 |
|
| 6864 |
Agents implementing Experimental Extensions SHOULD assume:
|
|
|
|
| 6869 |
|
| 6870 |
Agents MUST safely ignore unsupported experimental features and MUST NOT assume their presence in peer environments.
|
| 6871 |
|
| 6872 |
+
Experimental Extensions MUST NOT redefine or violate core protocol semantics.
|
| 6873 |
|
| 6874 |
This section exists to encourage innovation without prematurely constraining the design space of HMP.
|
| 6875 |
|
|
|
|
| 6877 |
|
| 6878 |
---
|
| 6879 |
|
| 6880 |
+
### 13.1 Key Rotation and Recovery
|
| 6881 |
+
|
| 6882 |
+
This section describes experimental extensions to `peer_announce` for key rotation and recovery.
|
| 6883 |
+
|
| 6884 |
+
```json
|
| 6885 |
+
"recovery_keys": [...],
|
| 6886 |
+
"key_history": [...],
|
| 6887 |
+
"key_rotation_policy": "3-of-5"
|
| 6888 |
+
```
|
| 6889 |
+
|
| 6890 |
+
One possible key management model:
|
| 6891 |
+
|
| 6892 |
+
* rotating the **primary** key requires signatures from **all** recovery keys
|
| 6893 |
+
(or an N-of-M policy);
|
| 6894 |
+
|
| 6895 |
+
* rotating a **recovery key** requires
|
| 6896 |
+
|
| 6897 |
+
* a signature from the primary key, **or**
|
| 6898 |
+
* a majority of recovery keys.
|
| 6899 |
+
|
| 6900 |
+
This model aims to reduce the risk of:
|
| 6901 |
+
|
| 6902 |
+
* DID hijacking;
|
| 6903 |
+
* irreversible loss of access.
|
| 6904 |
+
|
| 6905 |
+
The semantics and security properties of these mechanisms remain subject to further experimentation.
|
| 6906 |
+
|
| 6907 |
+
Key invalidation is part of the core HMP protocol (see Section 4.1) and is defined using:
|
| 6908 |
+
|
| 6909 |
+
```json
|
| 6910 |
+
"key_is_falsified": true
|
| 6911 |
+
```
|
| 6912 |
+
|
| 6913 |
+
This mechanism remains compatible with proposed extensions.
|
| 6914 |
+
|
| 6915 |
+
---
|
| 6916 |
+
|
| 6917 |
## 14. Research Directions
|
| 6918 |
|
| 6919 |
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**.
|
|
|
|
| 7071 |
|
| 7072 |
#### 14.3.2 Key Rotation and Recovery
|
| 7073 |
|
| 7074 |
+
*Moved to Section 13 (Experimental Extensions).*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7075 |
|
| 7076 |
---
|
| 7077 |
|
|
|
|
| 7154 |
|
| 7155 |
#### 14.6.4 Competence and Profile Containers
|
| 7156 |
|
| 7157 |
+
*Moved to Section 12 (Recommended Extensions).*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7158 |
|
| 7159 |
---
|
| 7160 |
|
|
|
|
| 7310 |
|
| 7311 |
### 14.11 External Protocol Identifiers (`peer_announce.other_protocols`)
|
| 7312 |
|
| 7313 |
+
*Moved to Section 12 (Recommended Extensions).*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7314 |
|
| 7315 |
---
|
| 7316 |
|
| 7317 |
### 14.12 External Resources and External Container Storage (`peer_announce.external`)
|
| 7318 |
|
| 7319 |
+
*Moved to Section 12 (Recommended Extensions).*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7320 |
|
| 7321 |
---
|
| 7322 |
|