AgentPlane Appendix B31

Appendix B

2 min read Section 31 of 34

Appendix B. Decision Records and Interface Contracts

Use these templates to record choices in the implementation repository. They are proposed AgentPlane contracts, not upstream API definitions.

Architecture decision record

Title: Customer-owned local policy envelope
Status: Proposed / Accepted / Superseded
Context: The SaaS can send commands over an outbound connection.
Decision: Local bounds cannot be widened by normal SaaS commands.
Alternatives: Full SaaS authority; completely disconnected operation.
Consequences: Some changes require customer-side administration.
Verification: Attempt an authenticated command outside local bounds.
Recovery: Explain how an administrator repairs an invalid envelope.
Owner: Assign in the real implementation repository.

Asynchronous operation envelope

{
  "operation_id": "op-example",
  "organization_id": "org-example",
  "project_id": "project-example",
  "resource_id": "session-example",
  "desired_state": "running",
  "observed_state": "provisioning",
  "observed_at": "2026-10-10T00:00:00Z",
  "status": "pending",
  "reason_code": "AWAITING_RUNTIME_READINESS"
}

These identifiers are illustrative strings. A real API must validate its chosen identifier format, tenant scope and timestamps. Avoid exposing raw cluster error objects or credential-bearing messages in reason_code.

Dependency verification record

Field What to record
Component Controller, router, runtime server or SDK
Exact artifact Release, commit and image digest
API surface CRD version and supported fields
Required capabilities Execution, file operations, suspend, snapshots
Local changes Configuration and patches, preferably none
Tests Specific commands, cluster profile and results
Failure policy Reject, degrade or disable unsupported features
Review date Date the record was actually checked

Keep rows independent. A controller and runtime server may have different release cadences. Do not infer SDK compatibility from an unrelated repository tag.

Command envelope invariants

A command identity binds organization, project, cluster, operation ID, payload hash, protocol revision, expiry and connection epoch. Authenticating the stream is necessary but does not replace checking those fields. Every effect-capable recipient needs a defined replay and stale-authority behavior.

Result vocabulary

Use results that distinguish accepted, in-progress, succeeded, failed, unsupported, expired, rejected and unknown. Include a safe machine-readable reason and a correlation identifier. Do not turn unsupported into succeeded merely because a provider returned no error.

Threat-to-test record

Invariant: Tenant A cannot subscribe to tenant B's output stream.
Attempt: Use a valid A credential with B's stream ticket and session ID.
Expected: Rejection before subscribing to runtime output.
Evidence: API result, safe audit metadata and stream-access counter.
Variants: Expired ticket, changed project, revoked user, reconnect.
Limit: Does not prove runtime isolation or host security.

AgentPlane Book contributors · Text and diagrams CC BY-SA 4.0 · Original code MIT. Licensing and attribution