Rejestr capability IDs¶
Ten dokument jest ludzkoczytelnym rejestrem capability IDs używanych na granicy Node <-> Node oraz Node <-> Seed Directory.
Nie jest to pełna macierz zdolności rozwiązania. To węższy artefakt:
- mapuje
capability_idna jego semantykę, - pokazuje odpowiadającą rolę lub klasę runtime,
- wskazuje wire-visible name,
- pomaga utrzymać spójność między
orbidocs,nodei kontraktami passportów.
Zakres¶
Rejestr obejmuje capability IDs używane jako:
- identyfikatory w
capability-passport.v1, - identyfikatory w
capability-advertisement.v1, - kryteria routingu lub odkrywania capability w Node.
Nie obejmuje host-local capabilities typu recovery.sign czy
catalog.local.query. Te należą do lokalnej powierzchni hosta, nie do
federacyjnego rejestru capability IDs.
Warstwy deklarowania capability¶
Capability advertisement i capability passport są powiązane, ale nie są wymienne.
Używamy następujących warstw:
| Warstwa | Artefakt | Znaczenie | Podstawa zaufania | Przykłady |
|---|---|---|---|---|
| Capability natywna dla protokołu | capability-advertisement.v1 z self-issued passport-form assertion |
"ten peer aktualnie mówi tą bazową powierzchnią protokołu" | podpis node'a, self-issued capability passport i poprawnie zestawiona sesja peer | core/messaging, core/keepalive |
| Capability oparta o passport | capability-passport.v1 niesiony w advertisement albo indeksowany przez Seed Directory |
"ten node jest uprawniony albo zaakceptowany dla tego profilu capability" | profilowa polityka passportu, podpis wystawcy, sprawdzenie revocation | network-ledger, seed-directory, escrow |
| Usługa rekomendowana w federacji | passport-backed capability plus polityka federacji | "ta passport-backed capability jest rekomendowana lub bezpieczna w tej federacji" | wystawca wysokiej atestacji, allowlist federacji, lokalna polityka | zatwierdzony ledger, zaufany seed directory, certyfikowany offer catalog |
| Capability suwerenna/prywatna | sovereign capability id, opcjonalnie oparta o passport | "ten node oferuje capability zakotwiczoną w tożsamości poza globalnym bare-name namespace" | tożsamość kotwicząca plus opcjonalny passport i lokalna polityka | audio-transcription@participant:did:key:..., ~audio-transcription@participant:did:key:... |
| Custom capability ogłoszona samodzielnie | capability-advertisement.v1 z self-issued passport-form assertion |
"ten node twierdzi, że to potrafi; weryfikuj przez użycie protokołu albo lokalną politykę" | podpis node'a plus self-issued passport; bez endorsementu federacji, jeśli nie jest dołączony osobno | eksperymentalny plugin, niekrytyczna wskazówka discovery |
W konsekwencji:
capability-advertisement.v1jest żywym widokiem discovery i routingu i może być wymieniany bezpośrednio bez Seed Directory,capability-passport.v1jest trwałym dowodem uprawnienia, zgody albo endorsementu dla profili capability, które tego wymagają,capability-schema.v1jest opcjonalnym kontraktem maszynowo-czytelnym dla profilu capability i jest wskazywana przez content-addressedschema/ref,- Seed Directory indeksuje passport-backed capabilities dla discovery sieciowego,
- a konsumenci muszą zastosować lokalną politykę, zanim potraktują jakąkolwiek advertised capability jako zaufaną.
Klasy publicznych passportów¶
Rejestr rozróżnia publikację w publicznej sieci od zamkniętych katalogów deploymentowych.
Dla publicznie rozgłaszanych capability passports:
| Klasa | Passport capability_id |
Projekcja wire/query | Oczekiwanie wobec wystawcy |
|---|---|---|---|
| Oficjalna / rozpoznana przez społeczność | zarejestrowany formalny bare id, np. network-ledger, seed-directory, offer-catalog |
stabilna nazwa mapowana, np. core/network-ledger, role/seed-directory, role/offer-catalog |
klucz participanta, organizacji, rady albo federacji z najwyższą atestacją wymaganą przez politykę społeczności |
| Kompatybilna implementacja sovereign | sovereign id bez ~, np. offer-catalog@participant:did:key:..., plus capability_profile.compatible_with |
sovereign/... plus filtrowanie po anchorze |
tożsamość kotwicząca albo delegowany signer; konsumenci weryfikują deklarację kompatybilności względem schematu/profilu i lokalnej polityki |
| Custom / operatorska | sovereign id z ~, np. ~article-review@participant:did:key:... albo ~article-review@org:did:key:... |
sovereign/... plus filtrowanie po anchorze |
tożsamość kotwicząca albo delegowany signer; konsumenci stosują lokalną politykę endorsementu i reputacji; schema/ref opisuje własny protokół |
Publiczna usługa customowa NIE POWINNA tworzyć nowego niezakotwiczonego
formalnego bare capability_id i publikować go tak, jakby był capability
rozpoznaną przez społeczność. Powinna użyć istniejącego zarejestrowanego
formalnego id albo sovereign id zakotwiczonego w tożsamości.
Zamknięte deploymenty operatorskie są inną kategorią. Mogą używać lokalnego
Seed Directory jako katalogu deploymentowego dla znanego zestawu formalnych
capabilities, gdzie zaufanie wynika z jawnej konfiguracji, allowlisty node ids
i ustanowionych sesji peer, a nie z publicznego endorsementu federacji.
Story-009 używa tej zamkniętej reguły deploymentowej dla passportów
offer-catalog na node B/C.
Źródła prawdy¶
Ten dokument ma pozostać zsynchronizowany co najmniej z:
node:capability/src/lib.rsorbidocs:doc/project/60-solutions/000-node/000-node.mdorbidocs:doc/project/60-solutions/CAPABILITY-MATRIX.md- odpowiednimi proposalami capability lub attached roles
Jeżeli zmienia się:
capability_id,- wire name,
- semantyka capability,
- albo jej główny owner runtime,
to ten rejestr również powinien zostać zaktualizowany.
Capability Registry¶
| capability_id | Wire name | Klasa | Rola semantyczna | Typowy owner runtime | Passport w MVP | Uwagi |
|---|---|---|---|---|---|---|
core/messaging |
core/messaging |
infrastrukturalna natywna dla protokołu | bazowa szyfrowana komunikacja peer/session wymagana dla sesji peer | protokół Node / peer supervisor | self-issued advertisement/passport-form assertion | Obowiązkowa bazowa capability; peer bez niej jest odrzucany podczas walidacji handshake/sesji. |
core/discovery |
core/discovery |
infrastrukturalna natywna dla protokołu | bazowa powierzchnia peer discovery i wymiany advertisementów | protokół Node / discovery runtime | self-issued advertisement/passport-form assertion | Używana dla semantyki discovery i advertisementów; formalny wpis utrzymuje zgodność stałych kodu z dokumentacją. |
core/keepalive |
core/keepalive |
infrastrukturalna natywna dla protokołu | bazowa powierzchnia keepalive/reconnect dla żywotności sesji | protokół Node / peer supervisor | self-issued advertisement/passport-form assertion | Capability natywna dla protokołu; nie jest attached service role. |
network-ledger |
core/network-ledger |
infrastrukturalna | zdalny autorytet settlement ledger dla innych node'ów | settlement-capable Node | tak | Capability oznacza autorytet księgi, nie tylko pojedynczy hold czy politykę. |
seed-directory |
role/seed-directory |
infrastrukturalna | katalog capability passports, revocations i advertisementów używany do bootstrapu i discovery | Seed Directory service lub embedded Node service | tak | Capability dotyczy katalogu i zaufanego publikowania/odczytu wpisów katalogowych. |
node-primary-operator |
role/node-primary-operator |
binding / governance | wystawione przez participanta wiązanie autorytetu wskazujące primary operator node'a | capability / Seed Directory / ścieżka akceptacji daemona | tak | Capability wyłącznie wiążąca; konsumenci muszą weryfikować artefakt node-operator binding, a nie traktować jej jak zwykłą usługę. |
offer-catalog |
role/offer-catalog |
rola domenowa | federacyjna powierzchnia ofertowa używana do responder-side fetch i discovery | Dator jako strona podaży, Arca jako strona popytu/discovery | tak, jeśli capability jest delegowane przez passport | Capability jest domenowa; konkretna implementacja może rozdzielać supply i observed/discovery na różne moduły. |
contact-catalog |
role/contact-catalog |
rola domenowa | opt-in contact discovery zwracające route candidates albo invitation-required results dla zewnętrznych uchwytów kontaktowych | Contact Catalog middleware | tak | Seed Directory może reklamować providerów Contact Catalog, ale nie może przechowywać surowych map people-directory. MVP lookup jest invitation-only z uwierzytelnionymi callerami. |
email-attestation |
role/email-attestation |
rola usługi contact-control | usługa, która wykonuje challenge kanału email i orkiestruje wystawienie passportów email-control@v1 |
attestation service odkrywany przez Seed Directory | tak | Capability autoryzuje rolę providera atestacji, nie kontrolę konkretnego adresu email. |
phone-attestation |
role/phone-attestation |
rola usługi contact-control | usługa, która wykonuje challenge kanału telefonicznego i orkiestruje wystawienie passportów phone-control@v1 |
attestation service odkrywany przez Seed Directory | tak | Capability autoryzuje rolę providera atestacji, nie kontrolę konkretnego numeru telefonu. |
email-control |
proof/email-control |
dowód kontroli kontaktu | dowód, że subject aktualnie kontroluje jeden adres email dla wybranych celów | attestation service odkrywany przez Seed Directory | tak | To dowód kontroli kontaktu, nie legal identity assurance. Contact Catalog admission traktuje go jako freshness-bound input evidence. |
phone-control |
proof/phone-control |
dowód kontroli kontaktu | dowód, że subject aktualnie kontroluje jeden numer telefonu dla wybranych celów | attestation service odkrywany przez Seed Directory | tak | To dowód kontroli kontaktu, nie legal identity assurance. Oczekiwane są krótkie TTL-e i polityka świadoma reassignment. |
agora-vault |
app/agora-vault |
zaszyfrowany storage artefaktów | zakresowa authority do put, list, get albo delete opaque zaszyfrowanych artefaktów pod subjectem Agora Vault | Agora service / daemon host capability bridge | tak | Używa profilu agora-vault@v1. Publiczny lookup działa tylko po opaque artifact/id; vault subject, participant, nym, topic i metadane plaintext nie są publiczną częścią entry. |
messaging.accept |
app/messaging.accept |
advertisement aplikacyjny | advertisement node'a, że aktualnie przyjmuje dostarczanie wiadomości z użyciem kanonicznego profilu zgody odbioru messaging-receive@v1 |
messaging middleware / Node capability advertisement | self-issued advertisement plus evidence profilu odbioru | Publikowane tylko wtedy, gdy messaging service i inbound acceptor są gotowe. Domyślna polityka trasy to privacy = private-direct, a konsumenci lookup mogą filtrować po tej capability przed wysłaniem contact request. |
messaging-receive |
app/messaging-receive |
zgoda aplikacyjna | wąska authority wystawiana przez recipienta, pozwalająca jednemu sender subject dostarczać wiadomości do jednej zaakceptowanej trasy | messaging middleware / Contact Catalog contact-request acceptor | tak | Używana w Story 010 jako konkretny passport mintowany po zaakceptowaniu contact request. Nie przyznaje friend-class capabilities. |
messaging-send |
app/messaging-send |
autorstwo aplikacyjne | authority po stronie participanta do podpisywania i kolejkowania outbound messaging envelopes dla lokalnego klienta wiadomości | messaging middleware / host podpisujący Node | tak | Delegacja podpisu używa signing/messaging-send; zgoda odbiorcy pozostaje osobnym passportem messaging-receive. |
escrow |
role/escrow |
attached supervisory role | nadzorca hold, release, refund, freeze i dispute path dla settlement kontraktów | escrow supervisor node lub attached service | tak | Capability oznacza nadzór nad losem środków zarezerwowanych dla kontraktu, nie pełny autorytet całej księgi. |
oracle |
plugin/oracle |
attached role / plugin | bounded external judgment, verification lub adjudication surface | przyszły oracle service | planowane | Na obecnym etapie to zarezerwowany identyfikator i kierunek rozszerzenia, nie pełny hard-MVP runtime slice. |
Rozróżnienie semantyczne¶
network-ledger vs escrow¶
network-ledgerodpowiada na pytanie: "kto jest autorytetem księgi?"escrowodpowiada na pytanie: "kto nadzoruje warunkowe uwolnienie środków dla tego kontraktu?"
Te role mogą być współlokowane, ale nie są tożsame semantycznie.
offer-catalog¶
offer-catalog jest capability domenową, nie nazwą konkretnego procesu.
W obecnym MVP:
- Dator odpowiada za stronę podaży i responder-side fetch,
- Arca odpowiada za stronę popytu, observed catalog i discovery.
Capability pozostaje jedna, choć runtime może ją realizować przez więcej niż jeden moduł.
contact-catalog¶
contact-catalog odkrywa opt-in contact routes, nie ludzi. Provider może być
odkrywany przez Seed Directory, ale domenowa polityka katalogu odpowiada za:
- dopuszczone dowody kontroli kontaktu,
- indeksy lookup,
- ujawnianie route candidates,
- rate limiting,
- audyt no-match,
- oraz revocation albo expiry contact claims.
Profil MVP jest invitation-only. Konsumenci powinni oczekiwać, że
contact-lookup-result.v1 nazwie routing-subject, contact_nym albo ścieżkę
zaproszenia, nigdy surowego root participanta jako domyślnej odpowiedzi.
Następne kroki¶
- Rozszerzyć ten rejestr, gdy pojawią się kolejne capability IDs o stabilnym znaczeniu między-node.
- Dopisać bardziej precyzyjną tabelę
issuer -> consumer -> scope, jeżeli attached-role passports zaczną mieć bogatsze zakresy (scope) niż obecne MVP.