You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 3ebd507
Browse filesBrowse the repository at this point in the historyBrowse files
Floor round: dimll >=2.7.1, healthz identity, and 27 pages with two <h1>s
THE FLOOR (item 1). >=2.7.1 in all four encodings — requirements.txt,
ci.yml's ASGI install and its two asserts — and run.py gains the boot floor
this repo never had. That absence mattered: the cache trap has fired here
twice, and both times the only way anyone learned was measuring production
HTML. LLMS_PKG_FLOOR=(2,7,1) now refuses to start below it, verified by
installing 2.6.1 and watching it raise.
WHAT THE FLOOR BOUGHT, measured rather than assumed: before the bump ALL 27
pages served two <h1>s to a crawler and the home page three. 2.7.0's
prerender dedup fixed 26 by itself.
THE LAST PAGE took two more changes, and neither was the template's fence
bug. Home's preamble said "# Home" while the package injects the site brand,
so the two strings never matched and dedup could not fire — _build_llms_doc
now takes the PUBLISHED name (page_visibility.published_name, which exists
for exactly this substitution). Home's body then hand-wrote that same brand a
third time, so it is an h2 now. tests/test_site_identity's h1 assertion is
inverted with the reasoning: what it protects is that home's first heading is
the BRAND, and that is unchanged.
THE FENCE FIX (item 3) is carried as a GUARD, not a fix. No page here teaches
`.. source::` inside a fence today, so the template's defect cannot reproduce
— but the day someone documents the directive, nothing silently breaks.
HEALTHZ (item 2). Adds `build` (RENDER_GIT_COMMIT, omitted where the platform
has none) and `geo` {configured, denied, resolved} — counts and flags only,
never the denylist's country codes, and OMITTED on pre-2.7 packages rather
than error-flagged. That omission is the point: on a deployed host, no geo
block means the image is stale and the floor did not really move. This repo
already built per request and already had `app`, so those were verified
rather than changed. Five tests, including that a broken geo probe cannot
take down the probe it lives in.
THE ROBOTS RIDER — one decision each way.
DROPPED `Disallow: /admin/`. It reads like protection and is the reverse:
robots.txt is public, so the line handed the admin path to every scraper that
reads it while stopping nobody who ignores the file. What protects that
surface is auth — two independent checks, failing closed without Clerk — and
what keeps it out of the index is mark_hidden(), which excludes it from the
sitemap and /llms.txt rather than announcing it. The test that pinned the
Disallow is inverted, plus a new one asserting the exclusion still holds.
KEPT block_ai_training=False, re-reviewed and documented. This host is an
MIT-licensed component library's documentation: a model that learned
dash-leaflet2 recommends it to a developer who will never visit the site, and
that recommendation IS the distribution channel. Blocking training would
trade it away for a licence term MIT does not contain. A host with
proprietary content should decide the other way; scripts/network_smoke.py
already encodes that split, so verification treats this as a stated position.
DEPENDABOT (item 4): pip allow-list added. Floors here encode
minimum-compatibility knowledge — the gunicorn floor IS the CVE fact, the
dimll floor IS the cache-bust mechanism — so a floor-raise PR erases meaning
and adds none. Security updates are unaffected.
DOCKERFILE (item 5): NO Node layer to remove — the component bundle is
committed and the image is already pure-Python, documented in its header. The
cache-semantics block is present and now names the trap explicitly, including
that the number also lives in run.py and ci.yml.
204 passed (flask) / 203 + 1 skip (fastapi), was 191. smoke 72/72, flake8
clean, dependabot.yml and ci.yml both parse.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments