Conversation
isinstance(nonce, int) accepts True/False in Python, which would store a record that /openapi.json rejects. Explicitly exclude bool. Fixes flop-labs#810
When CHAT_MAX_WAIT=0 disables long-polling, the 429 body still advised agents to prefer &wait=0 — which recommends zero-delay tight polling. Fixes flop-labs#759
README referenced CHAT_IDLE_SECONDS which doesn't exist; the code uses IDLE_SECONDS from store.py. Fixes flop-labs#779
|
Open pull requests citing the same issues:
If one already covers this change, review or build on it instead of racing it (CONTRIBUTING.md "Overlapping work"). |
yukkie3276
left a comment
There was a problem hiding this comment.
Current head 9a0be7e9d18b5f04fa40d96804248b0ccb0a58f0 is not scoped to the README correction described by this PR. Its history starts with cf8a0317 (fix(store): reject bool nonces, #810), then 7a724eee (fix(limit): don't recommend &wait=0, #759), and only then adds the #779 README edit; the resulting diff therefore changes src/store.py and src/limit.py as well as README.md.
Those two code changes are independently under review in #846/#812 and #849/#847/#760, and this branch carries neither change's required regression coverage. Merging #848 as written would therefore land unrelated behavioral fixes through a docs-targeted PR, bypassing their focused review/test gates and duplicating active work. Please rebase/reset this branch onto current main so #848 contains only the #779 documentation correction (and then resolve the existing #801/#781 overlap separately).
## What Cuts **0.14.0**: folds `[Unreleased]` into a dated section, bumps the version the service, the MCP wrapper and the worker share (the same eight files as #776), and re-ratchets `sz-baseline.json`. Three verified doc corrections ride along. Nothing a caller sees changes until the tag. ## Why Three commits since v0.13.0: #860 (brotli on the wire), #796 (the manual names the operator's measurement probe), and #858 (`/stats` served stale while it refreshes), which merged after this branch was cut and is now folded in — without its entry the tag would have shipped it undocumented. **MINOR rather than PATCH** because #860 puts a `Content-Encoding` on every reply and adds `Accept-Encoding` to `Vary`. Nothing a client parses moves — compression is a transport encoding, and the export is byte-exact once decoded — but it is an addition to the HTTP surface, which the changelog's own rule calls MINOR, and it lands a runtime dependency in the image. A reviewer could call it a patch; the version files are one substitution away. **The baseline refresh rides along**, as #860 asked for at merge and #858 needs again: `main` has failed `sz.py --check` since #860, and #858 moved it further — `app.py` 1020 → 1030, `store.py` 992 → 987. Only the measured `files` block moves; every cap is untouched. **`core/app.py` is now at 1030 against a cap of 1030.** Passing, with no headroom left: the next code line in that file fails `sz.py --caps` for whoever writes it. Raising a cap is a policy call, so this PR states it rather than moving it — worth a decision before the next `app.py` change, not after. **Three doc corrections**, each checked against the code it describes rather than taken on trust — a release is the wrong moment to ship prose that contradicts the service. Credit to the authors who filed them; close those PRs as included rather than stale: - `README.md`'s never-limited list omitted `/interop.md`, which `limit.FREE_PATHS` has carried since the document existed (#410, @Xelp66 — and #354, @zkasuran, which found the same line first). - The `CHAT_STILLBORN_SECONDS` row said the clamp was against a `CHAT_IDLE_SECONDS` knob. There is no such knob: `store.STILLBORN_SECONDS` clamps to `IDLE_SECONDS`, a fixed 7 days (#848, @Baophan00). - `edge/README.md` and the Worker's header comment listed `/robots.txt` in the static-first lane. `snapshot.py`'s `STATIC_FIRST` is two paths and says why robots.txt is not one of them — its `Sitemap` line is built from `CHAT_PUBLIC_URL` (#850, @kuky123100-create). I left the *path counts* in those edge files alone, which #850 also touches: `edge/README.md` says seventeen (the snapshot surface), `wrangler.jsonc` says sixteen where the routes list holds twenty patterns, and `/rooms*` is a wildcard beside a comment saying nothing here is one. Three different things are being counted; #850's "seventeen" is not right either. That deserves its own change with a test pinning the numbers, not a release PR. #354's other four corrections — the 51 GiB → 50 GiB arithmetic among them — are likewise left to that PR. After merge, by hand and in this order: tag `v0.14.0` and `mcp-v0.14.0`, which builds the image and publishes the wrapper; pull the image on the box; then `edge/deploy.sh`, once the origin is up, so the snapshot carries this release's documents — including the two-document static lane. ## Checks - [x] `uv run coverage run -m pytest tests -q && uv run coverage report` — 782 passed, 1 skipped, 98.01% (after the `main` merge that brought #858 in) - [x] `uv run ruff check . && uv run ruff format --check .` and `uv run ty check` — clean - [x] `uv lock --check` (root and `mcp/worker`, after `uv build --project mcp` produces the 0.14.0 wheel), `uv run sz.py --caps`, `uv run sz.py --check`, `uv run just contract` (881 cases, no issues), and both gates `release.yml` runs before building - [x] Verified on a booted service, not just in tests: `/openapi.json` and `/config` report `0.14.0`; `Content-Encoding: br` with `Vary: Accept-Encoding`, and `Vary: Accept, Accept-Encoding` on the four `.md` documents — which is what the deployer note in the changelog now states - [x] Docs that would now be wrong are updated: `CHANGELOG.md` is the change; the three corrections above are the rest; the manual and `/skill.md` need nothing - [x] New surface on a world-writable service: **nothing new** — no route, parameter or persistent state moves 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01KPQWysM3BJjzZCtyfPZGE4 --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
|
The README half of this shipped: on This PR is not finished, though, and it's worth knowing why: the branch carries two more hunks beyond its title and neither shipped.
Both look like real bugs to me: Two things would help them land: pick one PR per fix and close the duplicates (#847/#849 are the same change, and this branch is a third copy), and note that CI has never run on any of them — only Generated by Claude Code |
README referenced CHAT_IDLE_SECONDS which doesn't exist; the code uses IDLE_SECONDS from store.py.
Fixes #779