Repository navigation
taskproof v0.3.0
Version / 版本: v0.3.0
What's new / 更新内容
English
- The browser board is the desktop renderer.
taskproof boardno longer
serves a hand-written page: it serves the same Vue renderer the Electron
console loads, over the same loopback REST API, and that build is committed and
shipped inside the wheel. CI rebuilds it and fails on drift, so the two hosts
cannot diverge. .gzsiblings are reproducible across platforms. The compressed assets
were produced by Node's bundled zlib, whose output (the gzip header's OS byte,
and the deflate stream across major versions) depends on the machine that built
it — so a Linux runner rebuilding them always saw a difference and the
committed-artifact check could never pass. They now come from an exact-pinned
pure-JS compressor, so the same source gives the same bytes everywhere. The
payload grows by about 2%.- A lane can set its own timeout. Writing
timeout = 2700on a
[[taskgroup]]used to be dropped without a word: the loader did not reject the
key, so nothing said so. The effective timeout is now a chain —--timeout N>
the lane'stimeout>[defaults] timeout> the built-in 1800 — and it is
always reported together with where it came from, on thestartedevent and in
taskproof taskgroups. - A card that goes quiet stops early. A no-progress watchdog (
idle_timeout
per lane, or--idle-timeout N) stops a run when both its log and its working
tree have been silent for that long, instead of burning the whole wall clock.
It ships off by default, and thetimeoutevent says which budget fired
(reason: idleorwall-clock). One card produced log output for thirty
minutes without changing a single file; that is the case this closes. - Docs: an architecture chapter, in both languages.
ARCHITECTURE.mdand
ARCHITECTURE.zh-CN.mdnow describe what the system actually does, with
diagrams generated fromtools/make_figures.py; the language switch sits at the
top of every doc pair; andDESIGN.md's status line states what has shipped. - Dispatch tooling.
tools/check-card.pymechanises the card checks,
taskproof waitblocks for a verdict whiletasksshows it at a glance, and a
run's change surface is recorded rather than just counted.
中文
- 浏览器看板就是桌面渲染层。
taskproof board不再服务手写页面:它服务 Electron 控制台加载的
同一份 Vue 渲染层,走同一个 loopback 只读 API,产物进仓并随 wheel 发布。CI 会重建并在漂移时失败,
两个宿主因此不会分叉。 .gz兄弟文件跨平台可复现。 压缩产物此前由 Node 内置的 zlib 生成,而它的输出(gzip 头的
OS 字节、跨大版本的 deflate 流)取决于构建它的机器 —— 于是 Linux runner 重建总能看到差异,
"提交的产物必须等于重建结果"这条判据永远不可能通过。现在改由精确锁版本的纯 JS 压缩器生成,
同一份源码在任何平台压出同样的字节。代价是体积大约 +2%。- 道可以自带超时。 在
[[taskgroup]]上写timeout = 2700以前会被无声丢弃:加载器不认这个键,
也不报错。现在有效值是三段链 ——--timeout N> 道上的timeout>[defaults] timeout>
内置 1800 —— 并且永远与来源一起显示(started事件与taskproof taskgroups)。 - 卡静默就提前止损。 新的无进展看门狗(道字段
idle_timeout,或--idle-timeout N)在日志与
工作树都静默超过该预算时停手,而不是把墙钟烧完。它默认关闭;timeout事件会说明是哪个预算先到
(reason: idle或wall-clock)。曾有一张卡连续三十分钟一直在输出日志、却没改动任何文件 ——
这就是它要闭掉的场景。 - 文档:多了一章架构,中英成对。
ARCHITECTURE.md与ARCHITECTURE.zh-CN.md讲的是系统实际
怎么做(配图由tools/make_figures.py生成、可复现);六份文档的语言切换都移到了标题下;
DESIGN.md的状态行改成已发布的事实。 - 派活工具。
tools/check-card.py把卡的几条检查机械化了;taskproof wait等裁决、tasks
一眼看裁决;一次运行的改动面被记下来,而不只是一个计数。