Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions README.ar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
> ترجمة مجتمعية (مسودة) — سياسة NTARI رقم P2-002، البث العالمي متعدد اللغات. المصدر: README.md (الأصل الإنجليزي، لقطة بتاريخ 2026-07-29). مسودة مجتمعية بمساعدة آلية، في انتظار مراجعة القائم بالصيانة الإقليمي وفقًا للبند §3.1 من P2-002. تبقى المواصفات التقنية الأساسية بالإنجليزية وفقًا للبند §2.2.
>
> تصحيحات الترجمة مساهمات نرحّب بها ونقدّرها كسائر المساهمات، فإذا لاحظت خطأً
> في هذه الترجمة فيمكنك إصلاحه بنفسك عبر إنشاء fork للمستودع وفتح pull
> request: https://github.com/NTARI-RAND/sohocloud-protocol

# sohocloud-protocol

وحدة Go المشتركة التي تُعرِّف **بروتوكول تنسيق الركيزة** لشبكة
SoHoLINK / Cloudy: التعرّف على العُقد، وسرد القدرات، وتوظيف
المهام؛ وهو البروتوكول الذي يتحدثه كل مُنسِّق وكل واجهة أمامية.

## النطاق

تحكم هذه الوحدة **التنسيق فقط**. وهي **ليست** اقتصاد أعضاء JFA —
فلا ضمان مالي (escrow)، ولا رصيد يُصدره الأعضاء، ولا عهد سمعة،
ولا سجل مختوم بالحوار، ولا فصل في النزاعات. تعيش هذه الأمور في كل واجهة
أمامية، وغيابها هنا مقصود.

إنها **ورقة في شجرة الاعتماديات**: لا تستورد أي وحدة أخرى من وحدات NTARI،
ولا تستورد شيئًا غير المكتبة القياسية لـ Go. فكلٌّ من SoHoLINK (المُنسِّق
المرجعي) وCloudy (واجهة أمامية) يستورد *هذه الوحدة*؛ ولا يُستورد شيء عبرها
في الاتجاه المعاكس. وهذه الخاصية — التي يفرضها رسم بياني للاستيراد لا النصّ
النثري — هي ما يمنع أي مُنسِّق واحد من أن يصبح محورًا يجب أن تمرّ الشبكة
كلها من خلاله (المشكلة المفتوحة رقم 7).

## الأدوار

تتحدث الواجهات الأمامية بالسطح الخاص بجانب العُقدة — `SubmitListing`
و`Heartbeat` و`PollJobs` و`Decline` و`ReportJob` و`Fees` — بالنيابة عن
الأجهزة التي يساهم بها أعضاؤها؛ أما المُنسِّقون فينفّذون واجهة `Coordinator`
ويُنسِّقون الواجهات الأمامية (ويُقيمون بينها اتحادًا). ولا يظهر الأشخاص على
السلك أبدًا: فهوية العضو شأن يخص الواجهة الأمامية، والهوية الوحيدة التي
تعرفها هذه الوحدة هي هوية عبء العمل — أي NodeID مع ارتباطه المعياري بـ
SPIFFE في `identity/`.

## البنية

```
version.go protocol version (v0, unstable)
canon/ deterministic length-prefixed signing encoder
identity/ NodeID + the canonical SPIFFE binding predicate
listing/ CapabilityListing (node-signed)
liveness/ Heartbeat (node-signed)
employment/ Assignment (coordinator-signed); Decline, JobReport (node-signed)
fees/ FeeDeclaration (coordinator-signed)
coordinator/ the Coordinator interface — the pluggable role, no algorithm
anchor/ STUB, not built — witnessed employment-claim layer (#6)
transport/httpjson/ reference transport; imported by no core package
vectors/ conformance test: regenerates and checks testdata/vectors.json
testdata/vectors.json cross-language conformance vectors (normative fixture; see SPEC.md §10)
```

## الحالة (بصراحة)

- **ما تم بناؤه:** أنواع الرسائل، وبايتات التوقيع المعيارية، والتوقيع
والتحقق بـ ed25519، وواجهة `Coordinator`، ووسيلة نقل مرجعية عبر
HTTP+JSON تحت `transport/httpjson`.
- **متجهات المطابقة:** الملف `testdata/vectors.json` هو الملف المرجعي
المعياري (fixture) لمطابقة التنفيذات عبر اللغات — 25 حالة أوّلية،
بالإضافة إلى جميع أنواع الرسائل الموقَّعة الستة مع بايتاتها المعيارية
وتوقيعات ed25519 الخاصة بها. ويكون أي تنفيذ خارجي مطابقًا إذا — وفقط
إذا — أعاد إنتاج هذا الملف بايتًا ببايت انطلاقًا من المدخلات نفسها
(`SPEC.md` §10). ويعيد اختبار `vectors/` توليد الملف المرجعي من
المُرمِّزات الحالية، ويُفشل عملية البناء عند أي انحراف.
- **وسيلة نقل مرجعية، لا البروتوكول السلكي:** الحزمة `transport/httpjson`
اختيارية ولا تستوردها أي حزمة أساسية. ويجوز لأي تنفيذ مطابق أن يتحدث
بهذه الرسائل عبر أي وسيلة نقل، وذلك بتنفيذ `coordinator.Coordinator`
مقابل البايتات المعيارية الموثَّقة في `SPEC.md`.
- **بديل مؤقت (stub) غير مبني:** الحزمة `anchor/` — طبقة مطالبات التوظيف
المشهودة (المشكلة المفتوحة رقم 6). وهي موسومة بأنها بديل مؤقت؛ راجع
وثيقة الحزمة الخاصة بها.

## الرخصة

AGPL-3.0-or-later. الوثيقة `SPEC.md` جزء من المشاعات: فهي موجودة لتُقرأ،
ويُعاد تنفيذها، وتُناقَش. فالمشاعات التي لا يستطيع أحد قراءتها حريةٌ لا
يستطيع أحد استخدامها.

*Network Theory Applied Research Institute, Inc. — 501(c)(3) — EIN 92-3047136 — info@ntari.org*
78 changes: 78 additions & 0 deletions README.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
> Traducción comunitaria (borrador) — Política P2-002 de NTARI, Difusión Multilingüe Global. Fuente: README.md (original en inglés, instantánea del 2026-07-29). Borrador comunitario asistido por máquina, pendiente de revisión por el mantenedor regional conforme a P2-002 §3.1. Las especificaciones técnicas centrales permanecen en inglés conforme al §2.2.
>
> ¿Encontraste un error en esta traducción? Tu corrección es una contribución
> bienvenida y valorada: haz un fork del repositorio y abre un pull request en
> https://github.com/NTARI-RAND/sohocloud-protocol.

# sohocloud-protocol

El módulo de Go compartido que define el **protocolo de coordinación del sustrato** para la
red SoHoLINK / Cloudy: reconocimiento de nodos, listado de capacidades y empleo de
trabajos, hablado por cada coordinador y cada frontend.

## Alcance

Este módulo rige **únicamente la coordinación**. **No** es la economía de miembros
JFA — sin depósito en garantía (escrow), sin crédito emitido por miembros, sin pacto de
reputación, sin registro sellado por diálogo, sin adjudicación de disputas. Todo eso vive en
cada frontend y está deliberadamente ausente aquí.

Es una **hoja de dependencias**: no importa ningún otro módulo de NTARI ni nada más que
la biblioteca estándar de Go. Tanto SoHoLINK (el coordinador de referencia) como Cloudy
(un frontend) importan *este módulo*; nada se importa de vuelta a través de él. Esa propiedad
— impuesta por el grafo de importaciones, no por la prosa — es lo que impide que un
coordinador cualquiera se convierta en un concentrador (hub) por el que toda la red deba enrutarse
(problema abierto #7).

## Roles

Los frontends hablan la superficie del lado del nodo — `SubmitListing`, `Heartbeat`,
`PollJobs`, `Decline`, `ReportJob`, `Fees` — en nombre de las máquinas que aportan sus
miembros; los coordinadores implementan la interfaz `Coordinator` y
coordinan (y federan) los frontends. Las personas nunca aparecen en el cable (wire):
la identidad de los miembros es asunto del frontend, y la única identidad que este módulo
conoce es la identidad de carga de trabajo — el NodeID con su vínculo canónico SPIFFE en
`identity/`.

## Estructura

```
version.go protocol version (v0, unstable)
canon/ deterministic length-prefixed signing encoder
identity/ NodeID + the canonical SPIFFE binding predicate
listing/ CapabilityListing (node-signed)
liveness/ Heartbeat (node-signed)
employment/ Assignment (coordinator-signed); Decline, JobReport (node-signed)
fees/ FeeDeclaration (coordinator-signed)
coordinator/ the Coordinator interface — the pluggable role, no algorithm
anchor/ STUB, not built — witnessed employment-claim layer (#6)
transport/httpjson/ reference transport; imported by no core package
vectors/ conformance test: regenerates and checks testdata/vectors.json
testdata/vectors.json cross-language conformance vectors (normative fixture; see SPEC.md §10)
```

## Estado (honesto)

- **Construido:** los tipos de mensaje, los bytes canónicos de firma, firma/verificación
ed25519, la interfaz `Coordinator` y un transporte de referencia HTTP+JSON bajo
`transport/httpjson`.
- **Vectores de conformidad:** `testdata/vectors.json` es el fixture normativo de
conformidad entre lenguajes — 25 casos primitivos más los seis tipos de mensaje
firmados con sus bytes canónicos y firmas ed25519. Una implementación externa es
conforme si y solo si reproduce el fixture byte por byte a partir de
las mismas entradas (`SPEC.md` §10). La prueba de `vectors/` regenera el fixture
a partir de los codificadores actuales y hace fallar la compilación ante cualquier desviación.
- **Transporte de referencia, no el protocolo de cable:** `transport/httpjson` es opcional y
no es importado por ningún paquete central. Una implementación conforme PUEDE hablar estos
mensajes sobre cualquier transporte implementando `coordinator.Coordinator` contra
los bytes canónicos documentados en `SPEC.md`.
- **Stub, no construido:** `anchor/` — la capa de reclamos de empleo con testigos
(problema abierto #6). Etiquetado como sustituto provisional; véase la documentación de su paquete.

## Licencia

AGPL-3.0-or-later. `SPEC.md` es parte del procomún: existe para ser leído,
reimplementado y disputado. Un procomún que nadie puede leer es una libertad que nadie puede
usar.

*Network Theory Applied Research Institute, Inc. — 501(c)(3) — EIN 92-3047136 — info@ntari.org*
85 changes: 85 additions & 0 deletions README.fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
> Traduction communautaire (version préliminaire) — politique NTARI P2-002, Diffusion multilingue mondiale. Source : README.md (original anglais, instantané du 2026-07-29). Brouillon communautaire assisté par machine, en attente de relecture par le mainteneur régional conformément à la politique P2-002 §3.1. Les spécifications techniques fondamentales restent en anglais conformément au §2.2.
>
> Vous avez remarqué une erreur de traduction ? N'hésitez pas à la corriger
> vous-même : forkez le dépôt https://github.com/NTARI-RAND/sohocloud-protocol
> et ouvrez une pull request. Les corrections de traduction sont des
> contributions précieuses, tout autant que le code.

# sohocloud-protocol

Le module Go partagé qui définit le **protocole de coordination du substrat** du
réseau SoHoLINK / Cloudy : reconnaissance des nœuds, déclaration des capacités
et embauche pour les tâches — un protocole parlé par chaque coordinateur et
chaque frontend.

## Périmètre

Ce module régit **uniquement la coordination**. Il n'est **pas** l'économie des
membres JFA : pas de séquestre, pas de crédit émis par les membres, pas
d'engagement de réputation, pas d'enregistrement scellé par le dialogue, pas
d'arbitrage des litiges. Ces éléments résident dans chaque frontend et sont
délibérément absents ici.

C'est une **feuille de dépendances** : il n'importe aucun autre module NTARI, et
rien d'autre que la bibliothèque standard de Go. SoHoLINK (le coordinateur de
référence) comme Cloudy (un frontend) importent *ce* module ; rien n'est
réimporté à travers lui. Cette propriété — garantie par le graphe
d'importation, et non par la prose — est ce qui empêche un coordinateur
quelconque de devenir un hub par lequel tout le réseau devrait passer
(problème ouvert n° 7).

## Rôles

Les frontends parlent la surface côté nœud — `SubmitListing`, `Heartbeat`,
`PollJobs`, `Decline`, `ReportJob`, `Fees` — pour le compte des machines que
leurs membres mettent à disposition ; les coordinateurs implémentent l'interface
`Coordinator` et coordonnent (et fédèrent) les frontends. Les personnes
n'apparaissent jamais sur le réseau : l'identité des membres relève du
frontend, et la seule identité que connaît ce module est l'identité de charge de
travail (workload) — le NodeID et sa liaison SPIFFE canonique dans `identity/`.

## Arborescence

```
version.go protocol version (v0, unstable)
canon/ deterministic length-prefixed signing encoder
identity/ NodeID + the canonical SPIFFE binding predicate
listing/ CapabilityListing (node-signed)
liveness/ Heartbeat (node-signed)
employment/ Assignment (coordinator-signed); Decline, JobReport (node-signed)
fees/ FeeDeclaration (coordinator-signed)
coordinator/ the Coordinator interface — the pluggable role, no algorithm
anchor/ STUB, not built — witnessed employment-claim layer (#6)
transport/httpjson/ reference transport; imported by no core package
vectors/ conformance test: regenerates and checks testdata/vectors.json
testdata/vectors.json cross-language conformance vectors (normative fixture; see SPEC.md §10)
```

## État d'avancement (sans fard)

- **Implémenté :** les types de messages, les octets canoniques de signature, la
signature et la vérification ed25519, l'interface `Coordinator`, et un
transport HTTP+JSON de référence sous `transport/httpjson`.
- **Vecteurs de conformité :** `testdata/vectors.json` est la fixture de
conformité normative multilangages — 25 cas primitifs plus les six types de
messages signés, avec leurs octets canoniques et leurs signatures ed25519. Une
implémentation externe est conforme si et seulement si elle reproduit la
fixture octet par octet à partir des mêmes entrées (`SPEC.md` §10). Le test
`vectors/` régénère la fixture depuis les encodeurs actuels et fait échouer le
build à la moindre divergence.
- **Transport de référence, et non le protocole de transmission :**
`transport/httpjson` est facultatif et n'est importé par aucun paquet du cœur.
Une implémentation conforme PEUT véhiculer ces messages sur n'importe quel
transport, en implémentant `coordinator.Coordinator` par rapport aux octets
canoniques documentés dans `SPEC.md`.
- **Ébauche (stub), non implémenté :** `anchor/` — la couche de revendication
d'embauche avec témoins (problème ouvert n° 6). Signalé comme provisoire ;
voir la documentation de son paquet.

## Licence

AGPL-3.0-or-later. `SPEC.md` fait partie des communs : il existe pour être lu,
réimplémenté et contesté. Des communs que personne ne peut lire sont une liberté
que personne ne peut exercer.

*Network Theory Applied Research Institute, Inc. — 501(c)(3) — EIN 92-3047136 — info@ntari.org*
Loading
Loading