0.6 prerelease checklist: stabilize guest-agent API and SDKs
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 42/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- go, javascript, python, rust, typescript
- 领域
- api, backend, documentation
调研方向
先从此检查清单中未勾选的 SDK 和版本化 API 项开始,然后阅读 docs/guest-api-v1.md、docs/guest-api-v0.md 以及 #1124 中尚未完成的工作。检查剩余的 SDK 发布和每个 SDK 的文档任务、opaque JSON 字段名以及 protobuf 字节表示。完成的标准是:已更改的 SDK 以 0.6.0 发布、v1 schema 得到修正,并且参考文档已重新生成。
由索引模型根据 Issue 内容生成。
描述
Objective
Ship dstack 0.6 with a stable, versioned guest-agent API and consistent Go, JavaScript/TypeScript, Python, and Rust SDKs. Existing 0.5.x clients must continue to work against a 0.6 agent.
Compatibility
- Keep the unversioned API fully compatible with 0.5.x, verified with v0.5.10 generated clients and SDKs. — #1121 runs the released SDK suites against the current agent in CI. The pinned tags are v0.5.8 and v0.5.11, not v0.5.10:
v0.5.10:sdkandv0.5.11:sdkare the same tree object, so running both bought nothing. Note the limit — old JSON clients ignore unknown keys, so this job catches breaking changes to the frozen surface but not additive ones; the shape freeze infrozen_surfaceis what covers additions. - Keep
GetQuoteunchanged: the v0.5 response fields and semantics remain the complete contract. Cross-platform attestation is exposed throughAttest, notGetQuote. - Keep
GetKeywire- and behavior-compatible. Publish a normative specification for path, purpose, supported algorithms, defaults, output encoding, and signature-chain verification. — spec in #1123 (docs/guest-api-v0.md), byte-level: HKDF salt, what enters the KDF vs only the claim, both chain-link preimages, all three signing modes, and the hazard thatalgorithmdoes not domain-separate. - Make
EmitEventreturn 404 with informative error message (deprecated method) - Unknown algorithms must be rejected.
Attestation
- Make
Attestthe single API for platform and GPU attestation
SDKs
- Release all changed SDKs as 0.6.0 and apply semantic versioning consistently.
- Expose the same
TlsKeyOptionsfields and defaults in every SDK.usage_server_authdefaults totrue; remove the unusedpathoption. — #1120 - Represent the TLS private key as PEM and provide an explicit
toPkcs8Der()conversion. Remove ambiguous byte-conversion APIs. — resolved differently, deliberately. The ambiguous accessor is gone from v1 (#1120) and notoPkcs8Der()replaced it: v1 returns PEM and nothing else. The accessor existed to feed the key into the blockchain adapters, v1 has no chain-flavored surface, and DER is one standard-library call away for anyone who wants it. v0 keeps the accessor, because the adapters are v0-typed and that surface is frozen. Reopen this if a v1 caller turns up who needs DER from the SDK itself. - Represent protobuf byte fields as bytes in Rust, not hex strings. — #1124 (open), and in every SDK rather than Rust alone: eleven response fields plus
report_data, with thedecode_*helpers deleted. The JSON wire is unchanged. - Make all SDKs report non-2xx responses consistently, including the server error and HTTP status. — #1120, pinned by tests in #1120 that assert the exact status an image without nvattest answers.
- Regenerate and review the protobuf, HTTP, and SDK reference documentation. — v1 and v0 both have written specs now (
docs/guest-api-v1.md,docs/guest-api-v0.md) andsdk/curl/api.mdwas corrected, but the per-SDK reference docs have not been regenerated.
Versioned API (future)
- Introduce the long-term API under a versioned URL/service namespace such as
/prpc/v1/...and protobuf packagedstack.guest.v1. API selection must not depend on request headers. — #1116; selection is by URL path alone. - Use
*Requestand*Responseconsistently for new messages. Keep the method nameAttest. - Give opaque JSON fields explicit
*_jsonnames in v1, or use typed messages where the schema is stable. — not done.InfoResponsestill carriesapp_compose,vm_configandkey_provider_infoas barestringfields whose comments say they are JSON documents passed through unparsed. v1 is unreleased, so this is still cheap to change.
Signing (future)
- Provide
Signwith an explicit key specification containing path, purpose, and algorithm. — v1 has noSign; the frozen v0Signis now specified indocs/guest-api-v0.md. - Add
GetSigningKeyto return the corresponding public key and certification chain without signing a message. — v1GetKeyreturnspublic_keyandsignature_chainalongside the key, which covers the use case but not as a separate method. - Provide signature verification as SDK functionality rather than an agent RPC. — #1110. v0's
VerifyRPC is still served for 0.5.x clients and is documented as frozen. - Specify the exact Ed25519 and secp256k1 message and prehashed modes. — done for the frozen v0 surface in #1123, including
secp256k1_prehashedrequiring the caller to supply the digest. v1 has no signing surface to specify.
- 主要语言
- Rust
- 星标
- 555
- 派生
- 97
- 平均合并
- 1 天 3 小时
- 30 天内合并 PR
- 199
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Dstack-TEE/dstack 的其他 Issue
-
难度 5/5 一周以上 新手友好度 35/100
Dstack-TEE/dstack#1384 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 30/100
Dstack-TEE/dstack#1301 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 55/100
Dstack-TEE/dstack#1300 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 48/100
Dstack-TEE/dstack#1299 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 48/100
Dstack-TEE/dstack#1298 ·
维护者通常 1 天内回复
查看 Dstack-TEE/dstack 的全部 Issue
相似的 Issue
-
security-scan
难度 1/5 1 小时以内 新手友好度 85/100
维护者通常 1 天内回复
-
content good first issue
难度 2/5 1-3 小时 新手友好度 75/100
StudentSuite/awesome-skills-plugins-for-students#293 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
app bug
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
xberg-io/html-to-markdown#743 ·
维护者通常 1 天内回复