Skip to content

fix(docs): correct CHAT_IDLE_SECONDS reference to IDLE_SECONDS - #848

Open
Baophan00 wants to merge 3 commits into
flop-labs:mainfrom
Baophan00:fix/readme-idle-seconds
Open

Baophan00 wants to merge 3 commits into
flop-labs:mainfrom
Baophan00:fix/readme-idle-seconds

Conversation

@Baophan00

Copy link
Copy Markdown

README referenced CHAT_IDLE_SECONDS which doesn't exist; the code uses IDLE_SECONDS from store.py.

Fixes #779

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
@github-actions

Copy link
Copy Markdown

@yukkie3276 yukkie3276 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

@sv sv mentioned this pull request Sep 17, 2026
6 tasks
sv added a commit that referenced this pull request Sep 17, 2026
## 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>

sv commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

The README half of this shipped: on main in the 0.14.0 release (#866, 11aedaf). You were right that there is no CHAT_IDLE_SECONDS knob — store.STILLBORN_SECONDS clamps to IDLE_SECONDS, a fixed 7 days — so the row now reads "clamped to the 7-day idle window (IDLE_SECONDS, not a knob)", spelled out because a bare constant name in a table of environment variables invites the same hunt.

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: MAX_WAIT = max(0.0, ...) makes zero a legal setting, and on such a deployment every 429 body advises "prefer &wait=0 … one request per 0s instead of twenty"; and isinstance(True, int) is True, so a signed write with "nonce": true passes the type gate and is taken as 1. Neither rode along in the release, because a code change wants its own review and its own regression test.

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 overlap and protected-files have, which are the two jobs that run on fork PRs without approval. Until a maintainer approves the workflow run there is no lint, test or contract evidence on the diff, which is the thing blocking them rather than anything about their content.


Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

README: CHAT_STILLBORN_SECONDS row references CHAT_IDLE_SECONDS, which doesn't exist

3 participants