Follow-up to the full docs sweep (#416), which brought two managed-governance subsystems from undocumented to minimally documented. Both now have a schema block + a short section, which is enough to discover and configure them — but each is a substantial subsystem that warrants a dedicated page once it stabilizes / grows.
1. Managed PDP (Policy Decision Point) — #399
Current coverage: a pdp: block in docs/reference/forge-yaml-schema.md and a "Managed PDP" section in docs/security/platform-policy.md.
What a dedicated page (docs/security/policy-decisions.md or pdp.md) should add:
- The decide-request/response wire contract (what Forge POSTs to
endpoint, what a verdict looks like: allow / deny / modify, and how modify rewrites args).
- Where it sits relative to the other R4 controls (intent alignment R3 → step-up R4b → MODIFY R4a → the PDP/DEFER decision → tool executes) and how it composes with / replaces the static
security.defer map.
- The audit trail of a PDP decision (which event,
invocation_id attribution, deny/modify fields) — cross-link audit-logging.md.
- Fail-closed behavior end-to-end (unreachable/slow PDP, timeout, malformed verdict) and the §14.5 rationale.
- A platform-integrator runbook: standing up a PDP endpoint, the bearer +
Org-Id/Workspace-Id callout contract, and a worked allow/deny/modify example.
- Scope precisely: which tools are governed (namespaced
<server>__<op> / <name>__<op>) vs. builtins/scripts.
2. Per-operation API tools — apis.servers — #400
Current coverage: an apis: block in docs/reference/forge-yaml-schema.md and a "Per-operation API tools" subsection in docs/core-concepts/tools-and-builtins.md.
What a dedicated page (or an expanded section) should add:
- The full
APIServer/APIOp shape: operations[].input_schema (how the OpenAPI arg schema maps to the tool's typed input), {path} templating substitution rules, method/verb handling, and the per-op description.
- How entries are platform-materialized from admitted OpenAPI specs (the admission →
apis.servers[] path) vs. hand-authored.
- Auth: bearer/static via
token_env (and why oauth is rejected for API entries).
- Egress: the
base_url host must be on the allowlist; how it interacts with the egress enforcer.
- PDP/governance: because each op is its own
<name>__<op> tool, rules key per operation — worked example.
- Migration note for anyone who used the removed
openapi_call generic adapter.
Acceptance
Refs
Follow-up to the full docs sweep (#416), which brought two managed-governance subsystems from undocumented to minimally documented. Both now have a schema block + a short section, which is enough to discover and configure them — but each is a substantial subsystem that warrants a dedicated page once it stabilizes / grows.
1. Managed PDP (Policy Decision Point) — #399
Current coverage: a
pdp:block indocs/reference/forge-yaml-schema.mdand a "Managed PDP" section indocs/security/platform-policy.md.What a dedicated page (
docs/security/policy-decisions.mdorpdp.md) should add:endpoint, what a verdict looks like: allow / deny / modify, and howmodifyrewrites args).security.defermap.invocation_idattribution, deny/modify fields) — cross-linkaudit-logging.md.Org-Id/Workspace-Idcallout contract, and a worked allow/deny/modify example.<server>__<op>/<name>__<op>) vs. builtins/scripts.2. Per-operation API tools —
apis.servers— #400Current coverage: an
apis:block indocs/reference/forge-yaml-schema.mdand a "Per-operation API tools" subsection indocs/core-concepts/tools-and-builtins.md.What a dedicated page (or an expanded section) should add:
APIServer/APIOpshape:operations[].input_schema(how the OpenAPI arg schema maps to the tool's typed input),{path}templating substitution rules, method/verb handling, and the per-opdescription.apis.servers[]path) vs. hand-authored.token_env(and whyoauthis rejected for API entries).base_urlhost must be on the allowlist; how it interacts with the egress enforcer.<name>__<op>tool, rules key per operation — worked example.openapi_callgeneric adapter.Acceptance
input_schema, path templating, materialization, auth, egress, and PDP interaction./sync-docsmapping updated soforge-cli/runtime/pdp_resolver.go/forge-core/types/config.go(APIConfig/PdpConfig) andforge-core/tools/adapters/*api*map to the new pages.Refs
forge-cli/runtime/pdp_resolver.go,forge-core/types/config.go(PdpConfig,APIConfig/APIServer/APIOp/APIAuth),forge-cli/build/tools API adapter (adapters.NewAPITool).