Pre-alpha 文档
把 A2A Artifact 持久化为可验证事实。
配置 StateKnot 不可变 PostgreSQL Artifact Registry、私有 S3-compatible Bytes、直接 Task Poll、Authorization-first Read 与完整性校验。
沿一条证据链执行
Executing Event → 一次 A2A Send → Task Recovery Handle
→ 直接 GetTask Poll(不重发业务 Message)
→ 有界 Terminal Part → 唯一 Staging Object
→ Conditional-create Final Object → Length + SHA-256 校验
→ 不可变 PostgreSQL Registration → 已授权、完整校验的 Read Final Key 由精确 Tenant、Run、Logical Invocation、Physical Attempt、Origin Event、Tool、Remote Identity 与 Part Position 确定性生成。Exact Retry 会收敛; 已有 Object 若包含不同 Bytes,会触发 Integrity Failure,绝不允许覆盖。
分离 Metadata、Bytes 与 Authority
- 私有 Bytes
- Startup 会真实执行 Put、Conditional Copy、Read、Repeated-copy Rejection 与 Delete Probe。无法证明 Immutable Final Publication 的 Backend 会在接收 Traffic 前被拒绝。
- 不可变 Registry
- PostgreSQL 绑定 Canonical Reference Bytes/Digest、Content Length/Digest、 Origin Run/Event、Same-tenant Parent、Idempotency Key 与 Private Locator; Transaction 内不执行 Object I/O。
- Authorization First
- 在 Registry Lookup 前授权精确 Principal 与 Tenant-qualified Identity,避免 Artifact 存在性或 Locator 泄露。
- Verified Resolution
- 若 Provider 提供 Version/ETag,就应用已捕获的 Precondition;完整 Length 与 SHA-256 校验结束前不返回任何 Byte。
构建并探测精确生产 Backend
let objects = S3CompatibleBackendBuilder::from_env(bucket, region)?
.with_https_endpoint(endpoint)?
.with_conditional_copy(S3ConditionalCopy::AmazonMultipart)
.with_sha256_checksum()
.with_kms_key_id(kms_key)?
.build()?;
let artifacts = Arc::new(StateKnotArtifactStore::initialize(
objects,
Arc::new(postgres_store.clone()),
Arc::new(read_authorizer),
"production-artifacts-v1",
options,
).await?);
let remote = A2aRemoteAgent::bind_with_durable_artifacts(
descriptor, client, "answer", delivery, recovery, schemas, artifacts,
)?; AWS S3 使用 Multipart Conditional-copy Strategy。其他兼容 Provider 可能要求 文档规定的 Destination-precondition Header/Status。必须测试实际 Endpoint、Bucket Policy、Encryption Policy 与 Workload Identity,不能从 “S3-compatible” 标签推断 Atomic Behavior。
from_env 只导入 Credential-selection Variable。环境中的 Endpoint、
HTTP Enablement、Metadata Override、Unsigned Request、Retry Behavior、Bucket/Region
Selection 与 Encryption 设置无法绕过 Builder。非默认 Web-identity STS Endpoint
必须通过 with_https_sts_endpoint 显式配置。
把 URL Part 作为独立 Egress Boundary
- 只批准带显式 IP Pin 的精确生产 HTTPS Origin。
- 重新校验每一跳 Redirect;拒绝 URL Credential 与 Fragment。
- 禁用环境 Proxy、隐式 Retry、Cookie、自动 Redirect 与透明 Content Decoding。
- 要求 Identity Encoding、Media Type 一致,以及声明和实测 Length 均保持有界。
Literal Loopback HTTP 只用于测试或受控 Same-host Sidecar。Tool Limit 还会约束 Artifact Count、Total Bytes、每个 Part 与 Completion Projection。
显式限制资源并运维 Cleanup
| Limit | 默认值 | Hard Ceiling |
|---|---|---|
| Object Operation | 60 s | 10 min |
| 完整 Remote Request | 120 s | 10 min |
| Multipart Part | 8 MiB | 5–64 MiB |
| Remote Object / Resolved Read | 64 MiB | 1 GiB |
| Redirect | 3 | 3 |
| Concurrent Operation | 8 | 256 |
一个 Process-local Permit 覆盖每条完整 Ingest 或 Materialized-read
路径。必须为 Abandoned Multipart Upload 与 stateknot/staging/v1/
配置 Lifecycle Rule,并在 staging_cleanup_failures() 增长时告警。
不能对 Final Object 采用盲目按年龄删除;Registry-aware Collection 完成前,删除
疑似 Orphan 前必须与 PostgreSQL 对账。
明确证据所能证明的范围
测试覆盖 Exact Retry、Tampering、Authorization-before-lookup、URL Policy、 Multipart Ingestion、完整 Read、真实 PostgreSQL Registration、Migration 17→18, 以及 HTTP+JSON/JSON-RPC 两种 Binding 下 No-resend Terminal-task Recovery。启用前请阅读完整部署与验证指南。