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 @@
{"file": ".trellis/spec/backend/quality-guidelines.md", "reason": "Focused checks"}
@@ -0,0 +1,17 @@
# 设计
## 归属与复用
源码格式和 Markdown 内容区间由 core 拥有。使用 CommonMark 解析库识别真实顶层围栏,避免自造解析器误执行列表、HTML 或外层示例内的伪代码。新依赖仅用于编译器,不进入最小运行时。
SourceFile 保留原文,词法 token span 使用原字节位置。Markdown 提取不能让缓存、诊断、运行故障指向合成文件。词法/格式化共用程序区间;语义包路径接受 `.dever.md`,重复检测沿用声明注册。
## 格式化
先解析全包,验证完整声明不跨围栏。复用 AST 格式化方法,按块选择包头/声明/注释生成内容,原位替换内部文本。不能合并代码块或移动说明。CLI 快照检查与 staging 原样复用。
## 分工与契约
主代理负责 CLI 文案、实际 CLI 验证、示例、文档、规范与任务记录。实现代理负责 core/加载/解析/格式化、必要依赖和 core 定向测试。完成后独立审查,主代理复核关键证据。
程序围栏须顶层、闭合,信息字符串为 `dever`;无标记及其他语言只展示。每个类型、函数分句和 package 头完整位于一块内。若不支持缩进围栏,应明确诊断,不静默改变归属。
@@ -0,0 +1 @@
{"file": ".trellis/spec/backend/index.md", "reason": "Compiler conventions"}
@@ -0,0 +1,24 @@
# 执行与验证
用户已在双格式方案后确认并选择 `.dever.md`,无需重复请求实施授权。
- [x] Core:程序块识别、原文位置、加载与包路径、共用解析和格式化。
- [x] 定向测试:提取/拒绝边界、中文换行定位、混用/重复包/契约、格式化保留说明和幂等。
- [x] 示例和 CLI:结算示例、空源码提示、实际 check/fmt/run/build 的隔离定向验证。
- [x] 文档规范:语言说明、实现说明、过时草案、AGENTS 源码规则。
- [x] 检查:相关 Rust 格式、定向 Clippy/Markdown/formatter 测试及独立复核。
`/root/.cargo/bin` 不在 PATH 时只设置命令级 PATH。持久测试放根 `test/`,临时程序归测试所有;无服务或网络操作,无全量/集成测试,无提交。仓库大部分文件原本未跟踪,diff 以本轮前快照为准。
## 完成证据(2026-09-09)
- `cargo test --offline -p dever-tests --test markdown_source --test formatter --test syntax_and_format`:45 项通过(12 + 11 + 22)。主代理已检查原始日志 `/tmp/dever-markdown-checks.log`。
- 同目标 `cargo-clippy clippy --offline ... -- -D warnings` 通过;CLI 单独 `-p dever-cli --bin deverc -- -D warnings` 通过。10 个修改 Rust 文件的定向 rustfmt 检查通过。
- 实际 CLI 对 `examples/markdown` 的 check/fmt/run 通过,输出 `customer = 小明`、`subtotal = 47.5`、`discount = 4.75`、`payable = 42.75`。普通 `.dever` 计价包被 Markdown 包调用。
- 根 test/ 下临时程序验证:无 rustc 时 check 仍可用、两种格式的 API 相同、普通 README 忽略、fmt --check 不写、第二文件错误阻止所有改写、CRLF/说明/围栏保持及幂等、run/build、PATH 不含工具链时独立运行、已有输出不覆盖、重复包 C002、C005 精确到 Markdown 第 11 行第 20 列、运行除零定位 Markdown 第 11 行。临时文件和二进制已清理。
- 最终 core 的实际 CLI 裸 CR/缩进围栏验证通过:中文原文 C005 第 10 行第 31 列、格式化无新增 LF、说明保持、check 和 fmt --check 通过。首次手写列号预期少算一列,按原文核对修正,非实现缺陷。
- 独立只读审查无阻塞。补充验证包头前后独立注释块、跨块 Bool 分句、同一文件各块 LF/CRLF/CR、围栏/正文保持和幂等通过。
- 新编译器依赖 `pulldown-cmark = 0.13.4`(关闭默认特性)及三个传递依赖已获取并锁定;不进入运行时,验证全部离线。复用已有 target/verification-tools 中的 rustfmt/Clippy,未安装全局组件。
- 更新过时标题语法草案、当前说明和旧主任务源码格式限制。28 个实现/文档变更文件空白检查通过;未修改现有无关删除项。
无未解决阻塞。未运行全量、集成或服务测试,未提交 Git;开发工作区改动保留供审查。
@@ -0,0 +1,25 @@
# Dever Markdown 程序源码支持
## 目标与确认决定
用户希望用 Markdown 组织易读的 AI 程序,继续由 Dever 类型与契约约束执行。2026-09-09 用户批准同时保留 `.dever` 和 Markdown 源码,并明确选择 `.dever.md` 后缀。
- `.dever` 行为兼容;`account/user.dever.md` 对应 `account.user` 包。
- 标题、说明、表格不参与程序定义;只有标为 `dever` 的顶层围栏代码块属于程序,按顺序处理。代码保留完整 Dever 包、类型和函数声明。
- 一个文件拥有一个包;格式可跨包混用,同包重复必须报错。
- 复用现有语法、语义、契约、API 与原生编译路径。
- 诊断和运行故障定位到原 `.dever.md` 文件及准确行列。
- `fmt` 只格式化程序代码块,保留其它 Markdown 和围栏;整批检查后逐文件原子写入规则不变。
## 验收
1. 只加载 `.dever`/`.dever.md`,普通 `.md` 中的示例忽略。
2. 同一程序两种格式的执行结果一致;混用包可调用,重复包、类型错误、分句缺失、失败义务仍拒绝。
3. 多代码块、中文、不同换行、注释和原生故障位置正确;普通示例、嵌套围栏、引用、列表与 HTML 内的伪程序不执行。
4. 程序围栏闭合,各块包含完整顶层声明(允许纯注释或空块);无程序块、跨块声明报错,避免格式化移动代码跨说明。
5. 格式化只更新代码块内部、幂等;语法或程序结构错误时无文件改写。
6. 提供可读的结算 Markdown 示例,更新语言说明和过时草案。
## 范围与验证限制
不增加新语言语法、浏览器运行时、编辑器扩展或多语言执行。不改无关文件,不提交或安装全局命令。只跑离线定向检查和自有临时程序,不跑全量、集成测试或现有服务。开发依赖获取明确记录,最终程序编译保持离线。
@@ -0,0 +1,8 @@
# 源码事实
- source.rs 只收集 `.dever`,保存原文、SourceId 和行开始位置;符号链接全部拒绝。
- lib.rs 的 parse_uncached 共用 lexer→parser;lexer 当前读取 SourceFile.text()。
- check.rs 的 check_package 固定 `.dever` 路径;注册阶段已有重复包检测。
- format.rs 从 token 注释和 AST 生成整个包;CLI 先准备全部字符串,再快照核验和逐文件原子替换。
- check/cache.rs 键含源码全文/路径,文档改动仍需重新建立准确诊断位置。
- pulldown-cmark 提供带偏移的块事件:https://docs.rs/pulldown-cmark/0.13.4/pulldown_cmark/struct.Parser.html 。当前未缓存,新增这一个编译器依赖用于避免不完整的 Markdown 自制解析器。
@@ -0,0 +1,26 @@
{
"id": "markdown-source",
"name": "markdown-source",
"title": "Dever Markdown 程序源码支持",
"description": "保留 .dever,新增 .dever.md 源码加载、原文诊断、保留文档的格式化与定向验证",
"status": "completed",
"dev_type": null,
"scope": null,
"package": null,
"priority": "P2",
"creator": "Antigravity",
"assignee": "Antigravity",
"createdAt": "2026-09-09",
"completedAt": "2026-09-09",
"branch": "main",
"base_branch": "main",
"worktree_path": null,
"commit": null,
"pr_url": null,
"subtasks": [],
"children": [],
"parent": null,
"relatedFiles": [],
"notes": "",
"meta": {}
}