Skip to content

v1.108.317 — CI runs the harness on every change; publishing is a dispatched workflow

Latest

Choose a tag to compare

@jgravelle jgravelle released this 04 Sep 10:17
· 50 commits to main since this release
8316cb2

Changed - CI runs the harness on every change; publishing is a dispatched workflow

The eight workflows are five: pr-gate.yml (five staged jobs, every one a
required check on main by name), main.yml (full witness + online bench
after a merge, a regression issue per failing Floor, a weekly results PR),
nightly.yml (the matrix with fresh corpora, drift issues),
security.yml (CodeQL) and release.yml (dispatch with a version: pre-flight,
build once, Test PyPI, clean-venv smoke on both OSes, tag, PyPI via trusted
publishing, post-publish smoke with the tool count recomputed, GitHub release
from the CHANGELOG block, MCP registry; dry_run defaults true). test.yml,
replay.yml, harness.yml, handshake.yml and sign-release.yml are
retired into those. Two new Floors: types.error_max (pyright ratchet) and
deps.vuln_max (pip-audit, zero; click bumped for PYSEC-2026-2132), plus a
platform-scoped suite.full_seconds_ci_windows. enforce_admins and
strict are on; the emergency path is docs/cicd/RUNBOOK.md §6.
SECURITY.md gains a reporting policy. Design, audit, findings and the
verification of every probe: docs/cicd/.

Fixed - tied search_symbols scores ranked by the order the disk was walked

The bounded ranking heap broke equal scores by encounter order, which is
os.walk order: directory order on NTFS, hash order on ext4. gin's "context
bind" has five candidates at exactly 10.202, so which three a caller got
depended on the filesystem, and the same pinned corpora gave the token
benchmark 24,044 tokens on Windows and 23,440 on CI (harness F-13). Ties now
rank by symbol id, byte order, on every platform; nothing else in the ranking
moved. tests/test_search_symbols_tie_order.py reverses the index order and
expects the same answer, and it is red against the old key.

⚠ The investigation found two more contributors, each documented rather than
papered over. A CRLF checkout serves `

inside every fetched symbol (+603 tokens on the same pins), sobenchmarks/REPRODUCING.mdnow says clone LF. And_meta.total_tokens_savedis read from~/.code-index/_savings.jsonin HOME regardless ofCODE_INDEX_PATH`, so the published count carries the
width of the measuring box's lifetime ledger (+1 search / +3 fetch tokens per
query on a nine-digit ledger) and every benchmark run grows it; that one is
open as harness F-17 because fixing it is a basis change.

Changed - the token benchmark's reference is captured on CI

benchmark.yml dispatched with reference=true runs --reference on the
ubuntu runner and uploads jcm_reference.json, results.md and
provenance/measured.json; those are committed, so the number the weekly
gate compares against was measured where the gate runs. Re-measured
2026-09-03 on the same pins: 96.5% / 28.3x against grep-top-3 (664,975
-> 23,467), 99.6% / 241.1x against read-all, per-query 7.6x to 81.2x
(median 26.1x). The six prose mirrors are re-synced.


91 tools in the full surface; Python >=3.10. Built by the Release workflow (run 33832239480), smoke-tested from Test PyPI on ubuntu and windows, uploaded to PyPI by hand because PyPI's trusted-publisher form did not persist an entry (docs/cicd/FINDINGS.md C-15).