Skip to content

Commit 34657ac

Browse files
userclaude
andcommitted
fix(spec): address PR review feedback on security specification
- Rewrite to Requirement:/Scenario: format with RFC 2119 keywords (SHALL/MUST/SHOULD) - Fix broken GFM table (double pipe in Design Decisions header separator) - Remove implementation details (file paths, function names) from spec - Use "Project" consistently instead of "namespace" for Ambient boundary; add terminology note - Register api/ and security/ domains in specs/index.spec.md - Fix BOOKMARKS.md domain label (sessions -> api) - Remove Draft/Authors/Last Updated metadata header to match other specs - Replace fragile §N anchors with descriptive anchor links in model spec cross-refs 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 798123e commit 34657ac

4 files changed

Lines changed: 280 additions & 322 deletions

File tree

BOOKMARKS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Desired state of the system, organized by capability domain.
2525

2626
| Spec | Domain | Purpose |
2727
|------|--------|---------|
28-
| [Ambient Data Model](specs/api/ambient-model.spec.md) | sessions | Platform-wide data model: projects, agents, sessions, credentials, RBAC |
28+
| [Ambient Data Model](specs/api/ambient-model.spec.md) | api | Platform-wide data model: projects, agents, sessions, credentials, RBAC |
2929
| [Control Plane](specs/control-plane/control-plane.spec.md) | control-plane | CP architecture, runner structure, K8s provisioning |
3030
| [Runner](specs/agents/runner.spec.md) | agents | Runner subprocess lifecycle, bridges, gRPC/HTTP endpoints |
3131
| [MCP Server](specs/integrations/mcp-server.spec.md) | integrations | MCP tool definitions, sidecar and public endpoint modes |

specs/api/ambient-model.spec.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ GET /api/ambient/v1/projects/{id}/credentials/{cred_id}/token fetch
747747

748748
`token` is accepted on `POST` and `PATCH` but **never returned** by standard read endpoints.
749749
`GET .../token` is gated by `credential:token-reader`. See
750-
[Security Spec §4](../security/security.spec.md#4-credential-authorization-model) for
750+
[Security Spec — Token Reader Role Grant](../security/security.spec.md#requirement-token-reader-role-grant) for
751751
runtime authorization semantics.
752752

753753
#### Provider Enum
@@ -790,7 +790,7 @@ Effective permissions = union of all applicable bindings (global ∪ project ∪
790790
#### Credential Access — Project-Scoped by Default
791791

792792
Credentials belong to a project. All agents in the project share them automatically.
793-
See [Security Spec §4](../security/security.spec.md#4-credential-authorization-model) for
793+
See [Security Spec — Project-Scoped Credential Sharing](../security/security.spec.md#requirement-project-scoped-credential-sharing) for
794794
sharing model, K8s analogy, and named patterns.
795795

796796
### Built-in Roles
@@ -843,7 +843,7 @@ GET /api/ambient/v1/sessions/{id}/role_bindings
843843
```
844844

845845
The `credential:token-reader` role is platform-internal. See
846-
[Security Spec §4](../security/security.spec.md#credentialtoken-reader-runtime-grant) for
846+
[Security Spec — Token Reader Role Grant](../security/security.spec.md#requirement-token-reader-role-grant) for
847847
grant semantics and CRUD authorization rules.
848848

849849
---
@@ -869,7 +869,7 @@ GET /api/ambient/v1/projects/{id}/scheduled-sessions/{sched_id}/runs
869869

870870
All backend paths not mapped to a native `/api/ambient/v1/...` endpoint are forwarded
871871
verbatim to the backend service. See
872-
[Security Spec §4](../security/security.spec.md#api-server-proxy-authentication) for
872+
[Security Spec — Proxy Authentication](../security/security.spec.md#requirement-proxy-authentication) for
873873
authentication and credential injection behavior.
874874

875875
This allows SDK and CLI clients to reach the full backend surface through a single
@@ -1087,7 +1087,7 @@ This structure means you can define and compose bespoke agent suites — entire
10871087
| This document is the spec | A reconciler will compare the spec (this doc) against code status and surface gaps |
10881088
| `labels` / `annotations` are JSONB, not strings | Enables GIN-indexed key/value queries (`@>` operator) without joins; every row carries its own metadata without a separate EAV table. `labels` = queryable tags; `annotations` = freeform notes. Applied to first-class Kinds: User, Project, Agent, Session. Not applied to Inbox, SessionMessage, Role/RoleBinding. |
10891089

1090-
Security and credential design decisions (RBAC scoping, write-only tokens, role catalog rationale) are in [Security Spec §5](../security/security.spec.md#5-design-decisions).
1090+
Security and credential design decisions (RBAC scoping, write-only tokens, role catalog rationale) are in the [Security Spec — Design Decisions](../security/security.spec.md#design-decisions).
10911091

10921092
---
10931093

@@ -1136,7 +1136,7 @@ acpctl apply -f credential.yaml
11361136

11371137
## Design Decisions — Credential
11381138

1139-
See [Security Spec §5](../security/security.spec.md#5-design-decisions) for credential
1139+
See the [Security Spec — Design Decisions](../security/security.spec.md#design-decisions) for credential
11401140
design rationale (storage, rotation, provider serialization, migration).
11411141

11421142
---

specs/index.spec.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,11 @@ specs/
7979

8080
| Domain | Covers |
8181
|--------|--------|
82-
| `sessions/` | Lifecycle, initialization, status, messages, events, data model |
82+
| `api/` | Platform data model: projects, agents, sessions, credentials, RBAC, CLI |
83+
| `sessions/` | Lifecycle, initialization, status, messages, events |
8384
| `agents/` | Agent model, runtime registry, prompts, runners |
8485
| `control-plane/` | Reconciliation, operator, scheduling |
8586
| `frontend/` | UI rendering, session views, markdown, navigation |
8687
| `integrations/` | MCP, Gerrit, external services |
88+
| `security/` | Identity boundaries, credential authorization, per-session isolation |
8789
| `standards/` | Cross-cutting engineering constraints by component |

0 commit comments

Comments
 (0)