From df41c50fedeb8451816e97c910bf6b1b43eeac54 Mon Sep 17 00:00:00 2001 From: "@permadeath.com" Date: Thu, 3 Sep 2026 01:31:22 -0400 Subject: [PATCH] docs(didbot-pds): say that no deployment serves on NoPolicyGate It is the `Provisioner` default and every non-policy test's gate, but `didbot-dev` now installs a real one, so the sentence claiming a deployment starts on it was wrong. Co-Authored-By: Claude Opus 5 (1M context) --- crates/didbot-pds/src/policy.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/didbot-pds/src/policy.rs b/crates/didbot-pds/src/policy.rs index cf8e7ea9..67ae41ea 100644 --- a/crates/didbot-pds/src/policy.rs +++ b/crates/didbot-pds/src/policy.rs @@ -393,12 +393,18 @@ pub trait PolicyGate: Send + Sync { } } -/// The gate a deployment starts with, and the one every test not exercising -/// policy itself uses. +/// [`crate::provision::Provisioner`]'s default gate, and the one every test +/// not exercising policy itself uses. `didbot-dev` -- the only binary that +/// builds a `Provisioner` -- replaces it at startup with a +/// [`crate::policy_tree::TreePolicyGate`], so no deployment actually serves +/// on this one. /// /// Admits everything: "an empty policy set permits everything", from -/// `plan/policy.md`'s "What a policy is". A deployment that never configures -/// `didbot-policy` runs exactly as it did before this module existed. +/// `plan/policy.md`'s "What a policy is". A gate over a tree with no +/// policies in it is indistinguishable from this one on every channel a +/// write reads -- the same `Allow`, the same empty observation surface -- +/// differing only in the [`PolicyVersion`] it names, which nothing on the +/// write path records yet. #[derive(Debug, Default, Clone, Copy)] pub struct NoPolicyGate; -- 2.51.2