这个版本更新了什么#
This is the same code as v0.4.3, under a number that tells the truth about it#
0.4.3 shipped these breaking changes as a patch, which a
klode>=0.4,<0.5pin picks up automatically. That was the wrong number for them. 0.4.3 is yanked on PyPI — yanked, not deleted, so an exact pin still resolves and nobody already depending on it is broken.
git diff v0.4.3 v0.5.0over the package is one line: the version string.
⚠️ Breaking changes#
Five kinds of input that worked on 0.4.2 now raise. Every one of them was a guard failing open.
| What now raises | Was | Why |
|---|---|---|
permutations of 3, 5, 7… (constructor and [judge].permutations) |
accepted | an odd count presents one level order more often, keeping the position bias the average exists to cancel — at higher cost than the even number below it. Use 1 or an even number to 16. |
a non-integer hurdle (59.6, True, "60") via the API or the review service |
accepted, truncated | truncation only moves the bar DOWN — int(59.6) is 59, so a draft scoring 59.52 passed a bar it did not clear |
a shelf or extra_guard_dirs entry beginning with - |
accepted | it reaches git ls-files as a pathspec, where a leading dash reads as a flag and silently disables the copyright-leak guard |
an absolute --pattern to klode normalize |
accepted, scanned nothing | glob ignores root_dir for an absolute pattern, re-arming every metacharacter in the library path |
klode build when enumeration disagrees with the disk |
rewrote the board | it overwrote INDEX.md with an empty board and reported success |
| Verdicts move. The gate compared a rounded score against the hurdle, so any draft within half | ||
| a point below it passed. Go becomes Recycle at the boundary — one direction only, never the | ||
| reverse. Rubrics whose criteria share a single scale cannot produce a fractional mean and are | ||
| unaffected. | ||
Stored calibrations stop claiming coverage. Calibration now pins the judge (model, |
||
permutation policy, prompt version) as well as the rubric, and reports calibrated=False until |
||
| re-measured. |
Thirty-five defects fixed across three passes: an adversarial review of the plan before it was
written, then two independent file-by-file re-audits of the work itself. The re-audits found
22 more, ten of them inside guards added earlier in the same effort — that pattern is
documented in the changelog rather than smoothed over.
Highlights: a public address spelled as an integer walked past the plaintext-transport guard
(http://134744072 resolves to 8.8.8.8); a glob metacharacter in a library path made the
fail-closed linter exit 0 over a rotted citation; an edited rubric could not be re-approved by the
command its own error message named; normalize --check certified a corpus it had read half of;
and check.py's in-tree backup sweep had never matched anything in its life.
This line is also the first klode release whose test suite ran before publication — every tag
before v0.4.3 published without it, because tests.yml triggers on branch pushes and a tag is not
a branch.
981 tests across Python 3.11–3.14. Full detail in CHANGELOG.md.
以上是作者写在 GitHub 上的英文更新说明原文,未经翻译。查看原页面