
TBPプロトコルの理論と実装による、小規模ネットワークからオープンWebネットワークにおけるネットワーク化されたAIの保護
Teleological Bounding Protocol (TBP) のネットワークレベル実装 — 単一マシンから WWW 規模までのエンタープライズ展開に至るまで、ネットワーク上での AI エージェントの行動を証明付きで統治する。
« 既存のアクセス制御は、あなたが中に入れるかどうかを決める。TBP は、中に入った後で何を許されるかを決め — それを証明する。我々が統治するのはケイパビリティであり、モデルではない。 »
信頼によるパートナーシップは決してない — あるのは証明付きハンドシェイクのみ。 このリポジトリが提供するのはまさにそれである。すなわち、エンティティ間ハンドシェイク(仕様 §3)とその周辺のすべて — NAC、PEP、セルレジストリ — であり、これらによって TBP のガバナンスは単一マシンから、単に互いを信頼することなく互いを信頼しなければならないエンティティのネットワークへと拡張される。
言語に関する注記: 参照仕様は現在 docs/spec-en-v1.0.md(英語)である — これがドキュメントコードであり、監査はこれに対して構築されるべきである。著者による作業ノート — より密度が高く、より非線形で、設計根拠を掘り下げるには有用だが、引用すべきものではない — は 2 言語で存在する:
docs/spec-v1.4.10.md(英語)および
docs/spec-v1.4.10.fr.md(オリジナルのフランス語)。
同じ慣例がリポジトリ全体に適用される。すなわち、もともとフランス語で書かれたすべてのドキュメントは、元のパスに英語のプライマリ版を持ち、フランス語のオリジナルは <name>.fr.md としてその隣に保持される。用語集
(docs/glossaire.md)は依然としてフランス語を出典とし(フランス語ドキュメントの §14 がその用語の信頼できる情報源である)、可読性のために英語の対訳列を持つ — これは変更されていない。
完全な仕様は docs/spec-en-v1.0.md である
— これはこのリポジトリにおけるあらゆる設計または構成の決定に対する信頼できる情報源である。この README は方向づけに必要なものだけを要約しているにすぎず、疑わしい場合は仕様が優先する。作業ノート
(docs/spec-v1.4.10.md、フランス語オリジナルの英訳)は内容的に置き換えられたものではない — 同じプロトコルであり、そちらで先に発展した — が、今後引用可能な参照ではない。
読む際に役立つ道標:
docs/glossaire.md — 概念ごとに 1 つの正規用語。このリポジトリのコードとドキュメント全体で一貫して使用される(CONTRIBUTING.md を参照)。プロトコルそのもの — 仕様、形式的ドクトリン、敵対的監査、コア実装(HSM 署名、Merkle 監査チェーン、OPA ポリシーエンジン) — は Responsible-Alliance-Protocol にあり、Apache 2.0(オープン)でライセンスされ、ここでは tbp4.2.1/ に特定のコミットに固定された git サブモジュールとしてツリー内にベンダリングされている — これはポインタであり、フォークではない。このリポジトリは、そのコードに対して issue や PR を提出する場所では決してなく、以下に示すネットワーク展開の部分に対してのみ提出する場所である。このリポジトリは、同じプロトコルのネットワーク規模の展開である。すなわち、NAC、ローカル PEP、セルレジストリ、エンティティ間ハンドシェイク — TBP を単一の統治されたマシンから統治されたネットワークへと引き上げるために必要な部分である。この告知の時点で、このリポジトリ自身のコードも Apache 2.0 である(下記のライセンスを参照) — コアプロトコルと同じライセンスであり、両リポジトリで 1 つのライセンスであり、2 つではない。以前は初期パイロット段階でクローズドライセンスを使用していたが、その段階は終了した。
サブモジュールを最新に保つ: tbp4.2.1/ は自動的に更新されない —
Responsible-Alliance-Protocol のより新しいコミットへとそれを進めることは、意図的でレビューされた行為である(cd tbp4.2.1 && git checkout <commit> && cd .. && git add tbp4.2.1 && git commit)、決して自動ではない。上流のセキュリティ修正に黙って遅れを取る固定されたサブモジュールは、サブモジュールがまったくないよりも悪い — それを進める際は他の依存関係の更新と同様の注意を払い、まずコアリポジトリ自身の変更履歴を確認すること。
tbp4.2.1/ Git submodule: the core protocol (Responsible-Alliance-Protocol,
pinned commit) — working implementation, tests, live at
invarian.fr; includes tbp-v4-hard-shield/ (the OPA policy
engine this repo's PEPs enforce against). Not copied: run
git submodule update --init to fetch it; source of truth
and issue tracker for this code stay in that repository.
docs/ Specification (spec-en-v1.0.md, reference; spec-v1.4.10.md +
spec-v1.4.10.fr.md, working note EN/FR), glossary, audits
figs/ Figures referenced by the spec (see MANIFEST.md)
policies/
├── README.md How to generate capabilities.json correctly
├── gen_capabilities.sh + validate_determinism.go Generation + determinism gate
└── rego/ Illustrative example Rego policies
config/
├── nftables/ Local PEP redirection + P1 router rules (§4.1, §5.1)
├── freeradius/ 802.1X / EAP-TLS + enrolment/revocation scripts (§5.1)
└── sysctl/ Generic kernel hardening
src/
├── pep/ Local policy enforcement point (§4.1, §4.1-bis, §4.3):
│ CWT/COSE token validation (Ed25519), memory-bounded
│ fail-closed anti-replay, clock-status degraded mode,
│ execution quotas, plan-as-contract gate, monitor→closed
│ modes, pepd daemon
│ └── postgres-extension/ Two-hook in-process PEP for PostgreSQL (§4.4)
├── broker/ Cell broker (§5.1): single entry point of the decision
│ flow — orchestration, token issuer, emission envelope,
│ HTTP server (brokerd), epoch/quorum/plan-contract wiring
├── cluster/ Multi-cell fencing (§7.2–§7.5): single-authority epochs
│ (m-of-n verified, monotone, equivocation-detected),
│ k-of-n quorum for class W, mirror/canary promotion
├── registry/ Cell registry (§6): Tessera POSIX cell log with signed
│ checkpoints, disk backpressure, anchoring + TSA,
│ attested state manifest, measured boot (§6.3)
├── supervision/ Independent monitor (§2, §6.2, §7.1): verified chain
│ reading (ChainWatcher), divergence alerting, failover
│ detection, read-only console, supervisord
├── telemetry/ Flow metadata exporters, anti-dribble (§4.1-bis)
└── translator/ Translator (§4.5): runtime hardening (hardened systemd
unit, seccomp allowlist, confinement audit) + controlled
degradation state machine (structured-only, no cloud
fallback; mirror failover / human escalation /
default-deny per system class) + quality measurement
(corpus replay, per-class FNR/FPR gate blocking CI,
stratified human sampling, TBTM1 registry leaf)
deploy/ Multi-machine deployment guides (router, cell, server,
supervisor) with per-machine checklists, monitor→closed
posture switch, and an executable selftest (82 controls)
scripts/genesis/ Genesis ceremony tooling (epoch 0, controller keys §12)
lab/ docker-compose PoC + containerlab P1 topology + netns
tests (802.1X fail-closed, MAB/IoT VLAN, OCSP remediation)
tests/
├── p1_friction/ Friction budget (§9.1): thresholds + Go harness + leading indicators
└── p2_redteam/ Attack scenarios (§13) + evidence-producing runner
.github/ Issue templates, CI (Rego determinism gate + lint)
**現在のステータス(2026-09-22時点):ロールアウトコードは全経路——genesis → fencing → registry → broker → PEP → supervision → translator → deployment——にわたって実装・テスト済みである。** 各 `src/` パッケージは独自のテストスイート(Goのユニット/統合テスト、監査および計測ツール用のPython)を備えており、`deploy/selftest/` はデプロイガイドをエンドツーエンドで実行する(**82コントロール、失敗0件**——コードから乖離したガイドはそこで壊れ、運用者の手元では壊れない)。現在このリポジトリに対してオープンなPRはない——進行中だったバックログ(T25 制御された縮退、T38 有界非同期レジストリ耐久性、T26 翻訳品質計測)はすべてマージ済みである。意図的にオープンのまま追跡されている項目が2つあり、いずれもパイロットを妨げるものではない:残るフランス語ドキュメントの英語翻訳([#83](https://github.com/philippeabraxas-jpg/TBP-NETWORK/issues/83)、進行中——`deploy/` と `docs/` の大半はすでに英語を主としている。上記「言語に関する注記」を参照)と、ドメイン間レイヤー(仕様 §13——仕様自体によって先送りされ、[#33](https://github.com/philippeabraxas-jpg/TBP-NETWORK/issues/33) で追跡されている。「先送り」が黙って欠落するのではなく可視のままであるように)である。それ以外に意図的に**まだ**存在しないもの:言語ごとのネイティブ翻訳コーパス(パイロット時に構成予定、§15——それを再生してゲートするパイプラインは構築済み)と、人間による仲裁エスカレーション経路(brokerd v1 は `structured` トランスレータのみを受け付ける)。`config/` をそのままデプロイしないこと——そこにあるすべてのファイルが明示的にそう述べており、ここでも繰り返す価値がある。このロールアウトコードが準拠するプロトコルもまた骨組みではない:`tbp4.2.1/` は動作するコア(HSM署名器、Merkle監査チェーン、OPAポリシーエンジン、テスト、敵対的レビュープロセス)をgitサブモジュール経由でツリー内にベンダリングし、特定のコミットに固定している——コピーや複製をすることなく、ここに存在している。
## 設定ガイダンス——どこから始めるか
実装順序(§13)とパイロットP1スコープ(§13、§9.1:1サーバーVLAN、Debianルーター、2セル、802.1X、中央レジストリ、計測されたユーザー体験の劣化=0)に基づく:
1. **Genesisと鍵**(§7.2、§3.2)——何よりも先に:コントローラクォーラム(m-of-n、HSM)によって署名され、帯域外でアンカーされたgenesisセレモニー。[`scripts/genesis/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/scripts/genesis) がエポック0のツール(開発経路を含む)を提供する。セレモニー自体は手続きであってコードではない——このリポジトリのいかなるものもそれを置き換えない。
2. **クラスタフェンシング**(§7、§13 ステップ2)——エポックの発行とローテーション、クラスWアクションに対するコントローラクォーラム(k-of-n)、ミラー/カナリア昇格。マルチセルのデプロイ、以下に示す2セルのP1パイロットを含め、その前に必須——単一セルならこれを先送りできるが、パイロットはできない。[`src/cluster/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/cluster) に実装されており(単一権威のエポックトラッカー、クォーラム、受領証明による昇格——そこに秘密鍵は保持されない)、ブローカー([`src/broker/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/broker))に配線されている。
3. **OPA + レジストリ**——OPAをインストールし、[`policies/README.md`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/policies/README.md) に従って `policies/capabilities.json` を生成し(デプロイの前に `http.send` と `time.now_ns` を除去すること。決して後ではない。`validate_determinism.go` と決定性CIゲートがこれを強制する)、`lab/docker-compose.yml` で起動してローカルでルールを反復する。証明済みマニフェストと計測ブート(§6.3、§13 ステップ3)——セル自身の状態はその決定の前に証明可能でなければならない——は、セルログ、バックプレッシャー、アンカリングとともに [`src/registry/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/registry) に実装されている。
4. **PEP**——最初の真に統治された境界(§13)。[`src/pep/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/pep) に実装されている:トークン検証(CWT/COSE、Ed25519)、メモリ有界のフェイルクローズドなアンチリプレイ、クロックステータス縮退モード、実行クォータ、そしてプラン・アズ・コントラクトゲート(§4.2、§13 ステップ4——トークン検証だけでは単一のアクションを統治するのであって、運用者が実際に署名するマルチステップのプランを統治するのではない)。[`src/pep/README.md`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/pep/README.md) と、Debian側のネットワークリダイレクションについては [`config/nftables/pep-redirect.nft`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/config/nftables/pep-redirect.nft) を読むこと。**最初はモニターモードでデプロイする**(ログのみ、ブロックなし)——初回ロールアウトで決して `closed` にしない(ドクトリン §5.3)。ポスチャ切替手順は [`deploy/monitor-to-closed.md`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/deploy/monitor-to-closed.md)。PostgreSQLについては、インプロセスの2フックPEPが [`src/pep/postgres-extension/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/pep/postgres-extension) にある(§4.4)。
5. **NACを並行して**——[`config/freeradius/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/config/freeradius):ハンドシェイクと同じPKIを再利用する802.1X/EAP-TLS(§3)、フェイルクローズドはスイッチレベルで強制される(RADIUS側だけでなく)、v1ではRADIUS割り当てVLANなし。`lab/tests/` のnetnsスイートがフェイルクローズド、MAB/IoT-VLAN、OCSP修復の各経路を検証する。
6. **ホストハードニング**——TBPコンポーネント(ブローカー、PEP、レジストリ)を実行するすべてのマシンに [`config/sysctl/99-tbp-hardening.conf`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/config/sysctl/99-tbp-hardening.conf)。
7. **トランスレータは最後**(§13)——他がすべて安定してから。[`src/translator/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/src/translator) に提供:ランタイムハードニング(非root、cap-drop、seccomp——`dm-verity` とは別物で、これは保存時のイメージを保護するのであってランタイムではない)、制御された縮退の状態機械(structuredのみ、クラウドフォールバックなし)、品質計測(`measure.py` がコーパスを再生し、FNR/FPR回帰でCIをゲートする。`tmetrics` が結果をレジストリリーフとして刻む。T26、§4.5)——コーパス自体はパイロット時に構成され、ここには同梱されない。
8. **マルチマシンデプロイ**——[`deploy/apercu.md`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/deploy/apercu.md) がエントリポイントである(何を、どこに、なぜ、前提条件)。ロール別ガイド(ルーター、セル、サーバー、スーパーバイザ)とそのマシン別受け入れチェックリストを統合している。`deploy/selftest/` はガイドを**実行する**(`bash deploy/selftest/selftest.sh`、82コントロール、フェイルクローズド)——実機に触る前に実行すること。
各ステップで、フリクションバジェット(§9.1)に対して計測する——正確な閾値と実行可能なハーネスについては [`tests/p1_friction/`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/tests/p1_friction) を参照。レイテンシまたは仲裁率がこれらの閾値を超えれば、他がすべて機能していてもパイロットは失敗する。
## ロードマップ:適正規模のデプロイスケール
TBPは複雑でフルスケールのガバナンスシステムである——クラスタフェンシング、クォーラム、独立したスーパーバイザ、ハードニングされたトランスレータ、エンティティ間ハンドシェイク。すべてのデプロイがそのすべてを必要とするわけではない。「証明可能でログに残る理由なしにAIエージェントが行動しない」ことを望む単一サーバーの中小企業は、家庭ネットワークがSOCを必要としないのと同じくらい、2セルのフェイルオーバーを必要としない。計画は、このリポジトリにすでに存在するものを**4つのデプロイスケール**にパッケージすることである。各スケールは前のものの厳密なスーパーセットであり——全体を通じて同じプリミティブ(フェイルクローズド、ハッシュのみのリーフ、closedの前にmonitor)、スケールが上がるにつれてより多くが配線され、セキュリティポスチャ——そしてそれを買う運用上の複雑さ——もそれに応じて増大する:
- **スケール1——単一マシン。** 1ホスト、1つの統治された境界:サービスの前段に `pepd`、ローカルOPAサイドカー、単一の `CellLog` レジストリ。クラスタフェンシングなし(1セルではフェンスするものがない)、NACなし(ネットワークにアドミットするものがない——1台の箱である)、ブローカーやスーパーバイザデーモンなし。Genesisは単一の運用者鍵ペアに集約され、クォーラムセレモニーではないものをそう装うのではなく、そのように文書化される。運用上の複雑さは最小:OPAルールを正しくし、モニターモードでデプロイし、フリクションバジェットを監視し、`closed` を獲得する。
- **スケール2——小規模チーム/単一サイト。** 1つの `brokerd` の背後にある1つのLAN上の数台のマシン、依然として単一レジストリ(まだフェンシングなし——この規模では1つの権威セルで十分)、マシンをセグメントにアドミットするためにNACを追加(`config/freeradius/`、スイッチでの802.1X)、ホストハードニングをすべてに適用。デーモンが1つ増え、サブシステムが1つ増えるが、レジストリモデルはスケール1と同じ。
- **スケール3——レジリエントなマルチセル。** 上記のパイロットP1デプロイとしてすでに完全に構築・文書化されているもの:2+セル、クラスタフェンシング(エポック発行/ローテーション、クラスWアクションに対するk-of-nクォーラム、ミラー/カナリア昇格)、読み取り専用コンソールを備えた独立スーパーバイザ、制御された縮退を備えたハードニング済みトランスレータ、完全な `deploy/` ガイドシーケンスとその82コントロールのselftest。単一セルのダウンを許容できない組織、または統治されたエージェントが追加マシンを正当化する組織向け。
- **スケールfull——マルチエンティティ。** エンティティ間ハンドシェイク(§3):同一組織のセル間だけでなく、組織境界を越えてポリシー、履歴の連続性、ライブネスを証明すること——互いを信頼することなく互いを信頼しなければならない、独立に統治されたTBPデプロイ間のフェデレーション。意図的にまだ着手していない。[#33](https://github.com/philippeabraxas-jpg/TBP-NETWORK/issues/33)(T32)で追跡されており、黙って欠落するのではなく、後発の独立したフェーズとして可視のままであるようにしている。これは真に新しいプロトコル作業であり、既存のものを動かすマシンが増えるだけではない。
**これがどこに立っているかについての正直さ**:スケール3は、このREADME全体で使われているパイロットP1の名前の下で今日提供されている。スケール1と2はまだ独自のガイドとしてパッケージ化されていない——文書化されているもののサブセットをデプロイすることで今日到達可能である(スケール1ではクラスタフェンシングとNACをスキップ、スケール2ではNACを追加しつつ1セルを維持)が、その経路はまだ書き下されておらず、同じドクトリンに従うことを条件に誰かが自分で正しく配線するのを現在妨げるものは何もない。スケールfullは、新しいガイドだけでなく、実際の新しいコード(§3の3つの証明)を必要とする。
### 次に計画されている作業
2つのワークストリームがあり、異なる種類の労力であるため別々のissueとして追跡されている:
1. **スケール別デプロイガイド、および各スケールに合わせた管理ツール**([#86](https://github.com/philippeabraxas-jpg/TBP-NETWORK/issues/86))。上記のスケールを `deploy/scale-1.md` / `deploy/scale-2.md` に変えること——スケール3にはすでにガイドシーケンスがあり、それは `deploy/apercu.md` とそれが統合するロール別ガイドである——がこの半分である:「パイロットガイドから、スキップすべきと自分で判断したものを引いたもの」ではなく、スケールごとに文書化されselftestでカバーされた経路。もう半分は運用者向けツールであり、今日では読み取り専用JSON API(`src/supervision/console.go`:`/v1/arbitration`、`/v1/epoch`、`/v1/indicators`)に加えて生のファイルとCLI(Regoポリシーは手で編集、デプロイ前に検証・除去する `policies/gen_capabilities.sh` / `validate_determinism.go`、レジストリは `ChainWatcher` の検証済みスキャンで読まれ、テストとselftestで行使されるが閲覧UIはない)である。既存のものの上に3つの専用ツールが計画されており、それぞれが所与のスケールが実際に必要とするものにスコープされている(スケール1の運用者はマルチセル仲裁ビューを必要としない。スケール3の運用者は必要とする):
- 既存の読み取り専用コンソールの上に載る**スーパービジョンダッシュボード**——人間向けであり、構造上依然として読み取り専用(§7.1「スーパーバイザはすべてを見て、何も触れない」はそのまま引き継がれる、D81)。
- OPA Regoバンドル用の**ルール/ポリシーエディタ**——編集し、`validate_determinism.go` がすでに強制しているのと同じ決定性およびケイパビリティ除去ゲートに対してテストし、デプロイ済みのものと差分を取ってから、何かが本番に到達する前に。
- レジストリ用の**監査ブラウザ**——リーフ履歴(`KindDecision`、`KindTelemetry`、`KindQuorum`、…)を検索・フィルタし、`ChainWatcher` がすでにプログラム的に行っているのと同じ第三者検証可能なチェックポイント証明を、テストのアサーションではなく人間の監査者にとって読みやすい形にする。
2. **標準への整合——独自のポリシーモデルから相互運用可能なものへ**([#87](https://github.com/philippeabraxas-jpg/TBP-NETWORK/issues/87))。TBPのルール分類(クラスF/I/W/OUT、§5.3)、その監査証跡(ハッシュのみのMerkleログリーフ、§6.2)、そのコントロールセット(フェイルクローズド、closedの前にmonitor、高リスクアクションに対するクォーラム)は今日TBP固有である——内部的に一貫しテストされているが、監査者や規制当局がすでに認識するであろう外部フレームワークにはマッピングされていない。作業は、これがどの既存(および新興)の標準にマッピングされるか、そしてギャップがどこにあるかを特定することである——そのマッピングを先に行うことなく、これらのいずれかが適用されると仮定したり、TBPがすでにそれらを満たしていると仮定したりすることではない。出発点として評価に値する候補:**ISO/IEC 42001**(AIマネジメントシステム標準——「AIガバナンス」の主張に最も適合)、**NIST AI Risk Management Framework**、**EU AI Act** の高リスクシステムに対するログ記録と人間による監視の義務(§4.1の決定ごとのリーフと§4.2のプラン・アズ・コントラクト仲裁は、第12条/第14条が求めるものと構造的に近い——未検証であり、仮定ではなく実際のマッピングが必要)、**NIST SP 800-207**(Zero Trust Architecture——仕様はすでに §3.3 でTBPをZero Trustに対して位置づけており、コントロールごとの正式な比較が自然な次のステップである)、そして **OSCAL**(NISTの機械可読なコントロール/アセスメント形式——TBP自身の監査証跡が専用リーダーを必要とせず標準的なコンプライアンスツールに供給できる、もっともらしいエクスポート先)。これはコードになる前の研究および仕様作業である:成果物はギャップ分析であり、実際のマッピングが存在する場合はアダプタコードまたは文書化された等価性——ルールエンジンの書き直しではない。
## ライセンス
サブツリーごとのデュアルライセンス:
- **`docs/` と `figs/`**:[CC BY 4.0](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/docs/LICENSE)——表示付きで自由に共有・改変可能。
- **それ以外すべて**(`config/`、`src/`、`policies/`、`lab/`、`tests/`、`deploy/`、`scripts/`、`.github/`):[Apache 2.0](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/LICENSE)——[Responsible-Alliance-Protocol](https://github.com/philippeabraxas-jpg/Responsible-Alliance-Protocol) のコアプロトコルと同じライセンス。このコードは初期パイロットフェーズの間クローズドライセンスであった。そのフェーズは終わった——プロジェクトは単独で構築しても成立せず、自らのドクトリンが「決して信頼によってではなく、常に検証可能な証明によって」であるガバナンスプロトコルが、自らの実装について信頼を求めるべきではない。
貢献の方法——今やドキュメントだけでなくコードも含む——と、仕様を編集する際に従うべきルール(用語の正規化、検証済み引用、変更履歴)については [`CONTRIBUTING.md`](https://github.com/philippeabraxas-jpg/tbp-network/blob/main/CONTRIBUTING.md) を参照。