feat: publish Dever core with project scaffolding and versioned AI skills

This commit is contained in:
Antigravity committed 2026-10-04 13:37:30 +00:00
1 parent 70fa73cdc2
commit ac458ffa7f
960 files changed
+221319 -1163

No files matched your search

@@ -0,0 +1,4 @@
{"file":".trellis/spec/backend/quality-guidelines.md","reason":"parser、native process 和 bounded resource 定向测试"}
{"file":".trellis/spec/backend/error-handling.md","reason":"business error 与 runtime fault 不得混淆"}
{"file":".trellis/spec/backend/directory-structure.md","reason":"compiler/runtime/CLI owner 和测试目录规则"}
{"file":".trellis/tasks/09-29-external-lib-protocol/prd.md","reason":"协议子任务验收标准"}
@@ -0,0 +1,23 @@
# Design
## Compiler Model
HIR `Adapter` 增加 closed implementation kind:`Dever` 或 `External`. `External` 保存 ecosystem、entry、capabilities 和 compiler-generated Port wire schema。Port 仍是唯一 Function ID;dependency/effect/failure owners 看到外部实现的显式摘要,不解析外语源码。
Parser 仅在 Adapter role 把 `external`、`lib` 和 `allow` 识别为 contextual syntax。首个子任务只接受 `external exec`,但 AST/HIR ecosystem 使用封闭 enum,后续 pip/npm/go 不复制 parser 或 dispatch。
## Wire
每帧为 `u32 big-endian length + UTF-8 JSON`,最大正文复用 runtime wire 16 MiB 限制。消息包含固定 `kind` 与按 kind 严格字段;payload 使用 compiler-generated concrete codec,不把动态 Node 交给业务。
启动序列:supervisor 启动进程 -> `hello` -> Worker `ready` -> admission。关闭序列:停止 admission -> cancel pending -> `shutdown` -> join -> bounded kill。协议 EOF、非法 frame 或进程退出关闭全部 pending request,并保留第一个 runtime fault。
## Process Ownership
新增 runtime `component` owner,封装 Child、stdin writer、stdout reader、stderr bounded logger、pending request table 和 Scope guard。所有 task 注册到现有结构化作用域;Drop 只能触发已有 supervisor 清理,不能 detached kill/reap。
不使用 shell、PATH 或应用环境变量。entry 由构建器规范化为当前项目/产物拥有的文件;运行器传入专用管道和固定协议参数。初期 sandbox adapter 提供统一拒绝/允许合同,平台强化放在后续生态/打包子任务,不假装纯 Rust 检查等于 OS sandbox。
## Failure Semantics
Worker 返回的业务 error 必须匹配 Port declared error identity。启动、协议、timeout、crash 和 sandbox 失败转为 source-located runtime fault,不伪造业务 variant,不自动重放请求。崩溃后允许下一次调用创建新 Worker,但有固定启动频率上限。
@@ -0,0 +1,4 @@
{"file":".trellis/spec/backend/compiler-contracts.md","reason":"external Adapter 必须复用 Port、role、failure/effect 和 test fake 合同"}
{"file":".trellis/spec/backend/toolchain-and-library.md","reason":"wire、native emission、settings 和 structured lifecycle 合同"}
{"file":".trellis/tasks/09-20-port-adapter/design.md","reason":"现有 Adapter registration、closed dispatch 和 setting 设计"}
{"file":".trellis/tasks/09-29-external-libs/design.md","reason":"父任务协议、source 和安全边界"}
@@ -0,0 +1,40 @@
# Implementation Plan
- [x] 扩展 syntax/parser/formatter/Markdown,仅在 Adapter role 接受 external 声明并保持精确诊断。
- [x] 扩展 HIR/Port 注册、role matrix、dependencies/effects/failures/specialization,复用现有 Adapter owner。
- [x] 从 Port/setting 类型生成 Component Protocol schema hash 和 native codecs。
- [x] 在 runtime 增加有界 frame codec、消息状态机和严格请求 ID 管理。
- [x] 实现结构化 Worker supervisor、stdin/stdout/stderr、timeout/cancel/shutdown 和 crash cleanup。
- [x] 将 external Port dispatch 接入 native emitter;reference 明确拒绝。
- [x] 在仓库根 `test/` 增加 parser/contract/protocol/lifecycle/Port 回归,fixture 只使用测试自有可执行程序。
- [x] 更新 LANGUAGE、IMPLEMENTATION、compiler/toolchain/directory/error specs。
- [x] 运行受影响 crate check 及 external protocol、port_adapter、application_testing 定向测试;不运行全量或外部服务。
## Review Gates
2026-10-02补充:以下09-29记录为历史切片。当前Rust/LLVM入口共用Scope-owned Worker与Linux namespace/seccomp;kernel能力/资源/后代清理、协议及LLVM定向已通过。GPU/其他平台拒绝,受限AppArmor非root入口尚未收口。准确日志与最终组合状态见`09-29-language-production-closure/implement.md`。
- 不新增第二套 JSON parser、effect graph、Adapter registry 或进程作用域。
- 不允许外语 entry、Lib 或 capability 成为 App 可见类型。
- 不使用 shell command string、PATH lookup、环境变量配置、detached process 或自动 retry。
## Implementation Record (2026-09-29)
- Adapter-only `external exec` syntax、format 和 Markdown declaration contract 已接通;entry 只接受领域内的可移植相对路径,capability 固定为 `network/file/process/gpu`。
- checker 从同领域唯一 Port 合成完整实现,复用原有 Adapter 选择、setting、wire、effect、failure、dependency 和 specialization owner;schema checksum 绑定 setting、操作、顶层 wire 字段名、具体类型和业务错误 payload。
- native 生成具体输入/输出/error codec,正式调用统一进入 runtime Component Protocol;reference 对可达外部实现明确报不支持。
- runtime Worker 使用显式 canonical entry、清空环境和固定参数启动,具有有界队列、启动频率、frame/JSON 限额、严格消息字段/request id、health、timeout/cancel drain、crash restart 和 bounded shutdown。关闭时先封闭 admission,再取消在途调用并丢弃排队调用;所有协议写入有期限,fault 和 shutdown 都在 supervisor 内显式 kill/wait。协议 fault 先关闭旧 receiver,再允许下一次调用重建 Worker,不继续复用已失配流。
- 生成应用入口在 success、business error 和 runtime fault 后统一调用 `component::shutdown()`,随后才关闭数据库;主错误不被 cleanup error 覆盖。
- capability 当前保证为编译期固定集合/effect 汇总以及 `ready` 精确回显校验;没有实现或宣称 OS 级 syscall/network/filesystem/GPU sandbox。
- 未实现 resolver、`dever.lock`、机器级共享缓存、最终 build 资源嵌入、shell/PATH/env fallback、detached process 或 FFI。
## Verification Record (2026-09-29)
- 初次 native 复验因根盘仅余约 156 MiB 无法暂存 runtime;仅删除仓库内可重建的 `target/debug/incremental` 后释放约 8.7 GiB,随后完成下列复验。未删除 Cargo 依赖缓存、native runtime 缓存、源码或用户数据。
- PASS: `cargo check --offline -p dever-runtime --features wire`。
- PASS: `cargo check --offline -p dever-core`。
- PASS: `external_component` 1/1;覆盖 setting handshake、health、两次调用、业务 error、主动 cancel、timeout、crash/restart、fault cleanup、shutdown、80 个并发/排队调用的 admission closure、重复字段、乱序 ID、未知 kind、超大和截断 frame。
- PASS: 完整 `port_adapter` target 14/14;覆盖 Adapter-only parser/check/format/Markdown、setting 与顶层 wire 名称的 schema 漂移、effect/failure、test fake、native Worker 端到端 dispatch 和 cleanup。
- PASS: `application_testing` 8/8;application-test 发现、隔离、错误和 native suite 回归通过。
- UNAVAILABLE: `cargo fmt --all -- --check` 与 Clippy;stable toolchain 未安装 rustfmt/cargo-fmt 和 cargo-clippy component。
- NOT RUN: 全量、外部服务、数据库和性能测试;遵守本任务定向验证范围。
@@ -0,0 +1,32 @@
# Dever Lib 协议与 Worker
## Goal
在不引入任何具体语言包管理器的前提下,完成外部 Adapter 的语言合同、统一进程协议、通用 `exec` Worker 和安全生命周期,为所有后续生态提供唯一运行边界。
## Requirements
- 仅 Adapter role 接受一个 contextual `external exec "relative/entry"` 声明;它可与一个现有 `setting` record 共存,不可与 Dever 实现函数混合。
- 外部 Adapter 自动完整实现其对应 Port;缺 Port、多个 Port identity、非法 entry、Lib/capability 字段或不完整 Worker handshake 均在入口前失败。
- 初始 capability 固定为 `network`、`file`、`process`、`gpu`;未知、重复或与平台不兼容的 capability 拒绝。
- 复用 Port 的类型/failure/effect/setting schema,不向 App 暴露 Worker/JSON/进程类型。
- 实现版本化、长度分帧、预算受限的 Component Protocol,并拒绝重复字段、未知消息、重复/未知请求 ID、错误 schema 和非法 error variant。
- Worker 由应用 Scope 拥有,使用显式可执行路径和清理后的环境,不通过 shell 或 PATH 查找。
- Test 继续要求 case-local Port fake,不启动生产 Worker,不读取 Adapter setting。
- reference backend 对 external Adapter 返回明确不支持;native backend 完成正式执行,不增加模拟 fallback。
## Acceptance Criteria
- [ ] 合法 external Adapter 通过 check/format/Markdown 合同,并参与现有 Port effect/failure/specialization。
- [ ] 通用 fixture Worker 完成 setting handshake、两次调用、业务 error、取消、健康检查和正常关闭。
- [ ] schema/Port/Adapter/protocol 不匹配、超大/截断/重复/乱序消息均在有界时间失败。
- [ ] Worker 启动失败、崩溃、超时、调用取消和主程序退出不遗留子进程或悬挂任务。
- [ ] stdout 只能承载协议,stderr 日志不会破坏响应;Secret 和输入值不进入协议错误。
- [ ] 未声明 capability 的受控操作被 supervisor 拒绝;声明 capability 进入 Port 保守 effect。
- [ ] 现有 Dever Adapter 选择和 application-test fake 回归保持通过。
## Out Of Scope
- pip/npm/go resolver、SDK、联网下载和项目 lock。
- 把 Worker 资源嵌入最终 build 产物。
- FFI、动态库、任意 shell 和远程 Worker。
@@ -0,0 +1,26 @@
{
"id": "external-lib-protocol",
"name": "external-lib-protocol",
"title": "Dever Lib 协议与 Worker",
"description": "实现 external Adapter 合同、统一组件协议、通用 exec Worker 与安全生命周期",
"status": "in_progress",
"dev_type": null,
"scope": null,
"package": null,
"priority": "P1",
"creator": "Antigravity",
"assignee": "Antigravity",
"createdAt": "2026-09-29",
"completedAt": null,
"branch": "main",
"base_branch": "main",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": "09-29-external-libs",
"relatedFiles": [],
"notes": "2026-10-02:external Adapter、统一协议/Scope生命周期已接Rust及LLVM。Linux exec/managed共用OS namespace/seccomp边界,真实内核拒绝、线程/子进程/取消回收与协议回归通过;不再只有capability回显。GPU和未支持平台明确拒绝,受限AppArmor非root验收未通过。当前证据统一见09-29-language-production-closure/implement.md,保留未完成平台边界。",
"meta": {}
}