Skip to content

Tack Harness V0.0.15

Choose a tag to compare

@github-actions github-actions released this 07 Oct 07:24
· 11 commits to master since this release

中文

  • 新增: 「非必要的反向描述不保留」升级为全仓库硬约束——tack/AGENTS.md 核心约束新增第 13 条,源仓库根 AGENTS.md 新增「文档与注释写作纪律」节:生成或修改任何 markdown 文件与代码注释时,事实被取消且无明确禁止意图即直接删除相关描述,不留「不再做 X」式反向描述、不追加否定补丁,否定表述只用于当下仍可能发生且必须阻止的真实禁令;evolution 的 cleanup 候选改为引用该硬约束,规则单一事实源
  • 优化: evolution 审查新增两项要求——① 新增 cleanup 候选:被取消的事实若无明确禁止意图,相关描述整段删除,不保留「不再做 X」式反向描述、不追加否定句补丁(删除前 grep 确认无真实消费者、删除后校验无悬空引用);② sh 脚本审查从跨平台兼容升级为按 harness/rule/coding-standards-shell.md 全量编码规范审查,不符合项发现即当场修正(保持行为与退出码语义不变、改完必跑 sh -n),不再走候选确认,仅涉及行为/逻辑选择的修法降级为 script 候选
  • 优化: README 联系方式二维码改用 GitHub raw 绝对链接(https://raw.githubusercontent.com/frcoder-lh/tack-harness/master/contact.png),安装包、本机升级与空间初始化不再分发或物化 contact.png——物化到 harness/ 的 README 在任意目录阅读均可直接显示图片;contact.png 源文件保留在仓库根供链接引用
  • 新增: harness/rule/update-check.md 统一版本检查口径——调用时机(close/evolution/record/help 收尾执行、会话加载时不检查)、三行输出协议(无输出静默 / 首行版本提醒加区间更新摘要 / 非零退出静默忽略)与双节流(7 天一次、同版本只提醒一次)收敛为单一事实源,四个命令文件中的重复说明瘦身为一行引用
  • 新增: work-status.sh 新增 guidance 子命令——guidance 条目 distilled/dismissed 回写脚本化:替换或补写状态行与中文「落点:」行,distilled 必须带 ≥1 个落点、dismissed 拒绝落点,条目不存在返回退出码 3 并同步刷新 updated_at;close/record/evolution 中手工编辑 YAML 的步骤统一改为脚本调用
  • 新增: project.sh 新增三个结构化回写子命令——keywords(覆盖写项目关键词)、service-repo(追加服务↔仓库映射,空 [] 自动展开为列表块)、work-services(回写 work 条目服务列表并可同步 status.yaml 顶层 services);init/create-repo/worktree 中「直接编辑项目信息区块 YAML」的步骤全部改为脚本调用,区块维护入口收敛到 project.sh
  • 优化: lint-harness.sh 新增 frontmatter 完整性检查(ERROR 级)——首行非 ---(缺 frontmatter)、fence 仅出现一次(未闭合)均检出;reference/rule 等本无 frontmatter 的文件豁免,不误报
  • 优化: code-review 方法论收敛为单一框架——统一以 reference/code-review.md 的「双轴」(改动内容事实组织 / Spec 轴含 bug 深化 / Standards 轴含安全性能兼容)为准,审查三视角(规范符合度 / bug 与正确性 / 约定与安全)明确标注为双轴的执行分解,命令文件、agent 文件与工作流映射不再两套框架并列
  • 优化: 工作区状态回写口径对齐——testing/bugfix/merge-conflict 三工作流的「状态回写要求」统一为 status 按状态流转表加 current.stage 经 work-status.sh 回写的双写口径;run 命令 init 模式不再误置 progress.run,完成检验补 progress.run=true;work-status.yaml 模板 stage 枚举补 bugfix(reproduce/diagnose/fix/verify)与 merge-conflict(fetch/merge/resolve/push)取值
  • 优化: rule/security.md 新增「工作区凭据落位」节(敏感数据落 run/local/、入库文档只标来源不写真值),run/test/development-workflow 等处散落说明收敛为引用;rule/git-boundary.md 明确「提交统一由 commit 命令完成、框架不代提代码仓库、空间仓库与代码仓库两类提交不合并」,六个命令文件的边界半句统一改为引用该规则
  • 优化: spec/plan/code/testcode/fix 五个命令文件的「输入源与加载策略」重复样板收敛——统一口径(输入源清单、三级降级、防循环放大)以 development 工作流「上下文加载原则」节为单一事实源,各命令只保留本环节特化(首环节输入、复用搜索、任务级定位、修正点定位等)
  • 优化: tack/AGENTS.md 核心约束第 7 条与第 11 条的 guidance 自动采集描述去重(第 7 条保留触发点、口径归第 11 条);项目信息区块说明文字与 project.sh 内置模板同步
  • 修复: 6 个脚本的 POSIX 兼容性问题(scan-routes.sh、work-status.sh 的 awk FNR 判定与分支闭合、git-bug-trace.sh、repo.sh、work.sh、git-diff-context.sh),Git for Windows(GNU 工具)与 macOS(BSD 工具)下行为一致
  • 修复: 一批文档结构与悬空引用——study.md 三处失效的 $root/SKILL.md 引用、commit.md frontmatter 未闭合、development-workflow 环节映射表重编号(补「7 按需命令」行)、testcode.md 步骤交叉引用、tack/AGENTS.md 脚本清单漏列 git-fetch-helper、ask.md 残留的 progress.analysis 字段、context-loading.md 引用方数量;同步删除四处已失效的「跳过标记」反向描述
  • 优化: 全仓 24 个 shell 脚本的变量引用统一为 "${VAR}"(双引号加花括号),按 harness/rule/coding-standards-shell.md 保留刻意分词、命令位置变量、awk 字段引用等豁免项,全部脚本 sh -n 通过;源仓库取消「存量代码不批量追溯」条款,evolution 的 sh 脚本审查即修边界升级为同一脚本内存量不符合项一次性全量修正

English

  • Added: "No needless negative descriptions" is now a repository-wide hard constraint—core constraint #13 is added to the shipped tack/AGENTS.md and a "Documentation and comment writing discipline" section to the source-repo root AGENTS.md: when generating or modifying any markdown file or code comment, if a fact has been removed with no intent to forbid the behavior, the description is deleted directly—no "X is no longer done"-style statements and no negation patches; negation is reserved for real prohibitions of behavior that can still happen; the evolution cleanup candidates now reference this constraint as the single source of truth
  • Improved: The evolution review gains two requirements—(1) new cleanup candidates: when a fact has been removed and there is no intent to explicitly forbid it, its descriptions are deleted wholesale instead of keeping "X is no longer done"-style negative statements or appending negation patches (grep confirms no real consumers before deletion and no dangling references afterward); (2) the shell review is upgraded from cross-platform compatibility to a full coding-standard review against harness/rule/coding-standards-shell.md—violations are fixed on the spot without candidate confirmation (behavior and exit-code semantics stay unchanged, sh -n must pass after each fix), and only fixes involving behavioral or logical choices fall back to script candidates
  • Improved: The contact QR code in both READMEs now uses an absolute GitHub raw URL (https://raw.githubusercontent.com/frcoder-lh/tack-harness/master/contact.png), so installation, local skill upgrade, and space initialization no longer distribute or materialize contact.png—READMEs materialized under harness/ render the image directly from any directory; the source contact.png stays in the repository root to back the link
  • Added: harness/rule/update-check.md unifies the version-check protocol—when it runs (at the end of close/evolution/record/help, never at session load), the three-line output contract (silent with no output / version reminder on the first line plus in-range update summary / silently ignored on non-zero exit), and the double throttle (once per 7 days, once per version) are now a single source of truth; duplicated explanations in the four command files are reduced to a one-line reference
  • Added: work-status.sh gains a guidance subcommand—distilled/dismissed write-back for guidance entries is now scripted: it replaces or adds the status line and the Chinese "落点:" (landing-point) line, requires ≥1 landing point for distilled while rejecting points for dismissed, returns exit code 3 when the entry does not exist, and refreshes updated_at; manual YAML editing in close/record/evolution is uniformly replaced by script calls
  • Added: project.sh gains three structured write-back subcommands—keywords (overwrites project keywords), service-repo (appends a service↔repository mapping, expanding an empty [] into a list block), and work-services (writes a work entry's services and optionally syncs status.yaml's top-level services); the "edit the project info block YAML directly" steps in init/create-repo/worktree are all replaced by script calls, converging block maintenance on project.sh
  • Improved: lint-harness.sh now checks frontmatter integrity (ERROR level)—a first line other than --- (missing frontmatter) and a lone fence (unclosed block) are both detected; files that legitimately have no frontmatter (reference/rule, etc.) are exempt and produce no false positives
  • Improved: The code-review methodology converges to a single framework—everything follows the "two axes" in reference/code-review.md (fact organization of the change / Spec axis including bug deepening / Standards axis including security, performance, compatibility), and the three review perspectives (spec compliance / bugs and correctness / conventions and security) are explicitly defined as the execution decomposition of the two axes; the command file, agent file, and workflow mapping no longer present two parallel frameworks
  • Improved: Status write-back conventions are aligned—the "status write-back" sections of the testing/bugfix/merge-conflict workflows uniformly use the dual-write contract: status follows the state-transition table and current.stage is written via work-status.sh; run init mode no longer sets progress.run prematurely and the completion checklist gains progress.run=true; the work-status.yaml template's stage enum gains bugfix values (reproduce/diagnose/fix/verify) and merge-conflict values (fetch/merge/resolve/push)
  • Improved: rule/security.md gains a "Workspace credential placement" section (sensitive data goes to run/local/; committed documents mark the source only, never the secret value), with scattered explanations in run/test/development-workflow converging to references; rule/git-boundary.md now states that commits are made exclusively through the commit command, the framework never commits in code repositories on the user's behalf, and the two kinds of commits (space repo vs code repo) are never mixed—half-sentence boundary notes in six command files uniformly reference the rule
  • Improved: The duplicated "input sources and loading strategy" boilerplate in five command files (spec/plan/code/testcode/fix) is converged—the common contract (input source list, three-level fallback, anti-circular-amplification) lives solely in the "Context loading principles" section of the development workflow, and each command keeps only its stage-specific notes (first-stage inputs, reuse search, task-level locating, fix-point locating, etc.)
  • Improved: The duplicated guidance-collection wording between core constraints #7 and #11 in the shipped tack/AGENTS.md is deduplicated (#7 keeps the trigger point, the protocol lives in #11); the project-info block note is synchronized with project.sh's built-in template
  • Fixed: POSIX compatibility issues in six scripts (scan-routes.sh; awk FNR checks and branch closing in work-status.sh; git-bug-trace.sh; repo.sh; work.sh; git-diff-context.sh)—behavior is now identical under Git for Windows (GNU tools) and macOS (BSD tools)
  • Fixed: A batch of documentation structure issues and dangling references—three stale $root/SKILL.md references in study.md, an unclosed frontmatter in commit.md, renumbered stage mapping in the development workflow (adding the "7 on-demand commands" row), cross-step references in testcode.md, the missing git-fetch-helper in tack/AGENTS.md's script list, a leftover progress.analysis field in ask.md, and the referenced-by count in context-loading.md; four obsolete "skip marker" negative descriptions were removed as well
  • Improved: Variable references in all 24 shell scripts repository-wide now uniformly use "${VAR}" (double quotes plus braces) per harness/rule/coding-standards-shell.md, keeping the deliberate exemptions (word-splitting loops, command-position variables, awk field references); every script passes sh -n; the source repo removes the "no bulk retrofit for legacy code" clause—the evolution shell review now fixes all legacy violations in a script in one pass

Full Changelog: V0.0.14...V0.0.15