Skip to content

Check the nine published pages, and give the Taguette export a head - #25

Merged
Varnasr merged 1 commit into
mainfrom
claude/outdated-repos-maintenance-nbxnae
Sep 22, 2026
Merged

Varnasr merged 1 commit into
mainfrom
claude/outdated-repos-maintenance-nbxnae

Conversation

@Varnasr

@Varnasr Varnasr commented Sep 22, 2026

Copy link
Copy Markdown
Owner

The gap

tests.yml runs the Python and R suites, 120 checks across four suites in two languages. It says nothing about the nine HTML files this repository serves at https://varnasr.github.io/InsightStack/.

Every trap below is already written down in CLAUDE.md. None was checked by anything.

The one real defect

taguette_coding/tag_summary_export.html began:

<html><body>
<h2>Tagged Summary: CHW Interview – Chhattisgarh</h2>

No head at all. No viewport, no charset, no title, no lang.

  • Without a viewport, a phone lays the page out at desktop width and zooms out, so the text arrives too small to read. It looks correct on the machine it was built on, and only a visitor on a phone ever sees it.
  • Without a charset, the curly quotes and the en dash in the exported transcript depend entirely on the server's default.

Fixed by adding a head above the export. The exported content is untouched — it is a Taguette artefact and stays byte-identical.

scripts/check_site.py, 40 checks over 8 pages

Three are worth naming, and all three come straight out of CLAUDE.md:

A folder becomes a page only if it holds a README.md. GitHub Pages runs jekyll-readme-index. The index links two folders, data_starters/dhs-south-asia/ and data_starters/plfs-india/, and both work only because they hold one. A folder link without a README is a 404 in production and a 200 under python -m http.server, which generates a directory listing. CLAUDE.md records that mistake shipping once.

_config.yml must set no theme and must keep applying the default layout. Before that layout existed, the config set theme: minima and any rendered README opened in stock styling, so a click-through stopped looking like the site.

No page may carry its own <style> block. The house style is one file shared verbatim across the stack repositories; a page reaching for its own CSS is how that quietly stops being true, and the drift is invisible until two sites look different.

Fault injection

--- the viewport removed again ---
  - taguette_coding/tag_summary_export.html sets a viewport: a phone lays this out at desktop width

--- a folder link with no README (404 in production, 200 locally) ---
  - every folder the index links holds a README.md: ['stata_snippets/stata_mel/nope/']
    would 404 in production and 200 under python -m http.server

--- a theme reintroduced in _config.yml ---
  - _config.yml sets no theme: a theme makes every rendered README open in stock styling

Verified and not changed

CLAUDE.md says to load the landing page at 390×844 and compare documentElement.scrollWidth against clientWidth, because .row span's white-space: nowrap once pushed the page to 1384px against a 390px viewport. I measured it, in headless Chromium, on the landing page and all six calculators:

index.html                                    scrollWidth=390 clientWidth=390
calculators/block_level_development/...       scrollWidth=390 clientWidth=390
calculators/district_health_indicators/...    scrollWidth=390 clientWidth=390
calculators/education_needs/...               scrollWidth=390 clientWidth=390
calculators/environmental_change/...          scrollWidth=390 clientWidth=390
calculators/financial_inclusion/...           scrollWidth=390 clientWidth=390
calculators/population_projection/...          scrollWidth=390 clientWidth=390

The nowrap scoping is holding. The only element outside the viewport is the skip link at -999px, which is where it belongs. The same measurement on FieldStack, EquityStack and SignalStack landing pages is clean too.

Also confirmed while checking: CLAUDE.md's inventory of 9 HTML files is exactly right. I initially thought the calculators were missing because ls calculators/*.html returns nothing — they sit one level deeper, in calculators/<name>/<name>_calculator.html.

Checks

$ python3 scripts/check_site.py
PASS: 40 checks (8 pages)

🤖 Generated with Claude Code

https://claude.ai/code/session_01MrvR2NXsJFVRCeJZFCPuNL


Generated by Claude Code

tests.yml runs the Python and R suites and says nothing about the nine HTML
files this repository serves. The traps are all written down in CLAUDE.md and
none of them was checked by anything.

taguette_coding/tag_summary_export.html opened with <html><body> and had no
head at all: no viewport, no charset, no title, no lang. Without a viewport a
phone lays the page out at desktop width and zooms out, so the text arrives too
small to read, and it looks correct on the machine it was built on. Without a
charset the curly quotes and the en dash in the exported transcript depend
entirely on the server's default. The exported content is untouched; only a
head is added above it.

scripts/check_site.py runs 40 checks over the eight pages. Three are worth
naming.

GitHub Pages runs jekyll-readme-index, so a folder becomes a page only if it
holds a README.md. The index links two folders, data_starters/dhs-south-asia/
and data_starters/plfs-india/, and both work only because they hold one. A
folder link without a README is a 404 in production and a 200 under
python -m http.server, which generates a directory listing; CLAUDE.md records
that mistake shipping once.

_config.yml must set no theme and must keep applying the default layout.
Before that layout existed the config set theme: minima, and any rendered
README opened in stock styling, so a click-through stopped looking like the
site.

And no page may carry its own <style> block, because the house style is one
file shared verbatim across the stack repositories and a page reaching for its
own CSS is how that quietly stops being true.

Three checks were fault-injected against a real failure to confirm they bite.

Also verified while doing this, and not changed because nothing was wrong: the
landing page and all six calculators render at 390x844 with
documentElement.scrollWidth equal to clientWidth, so the white-space: nowrap
fix CLAUDE.md describes is holding. The only element outside the viewport is
the skip link at -999px, which is where it belongs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrvR2NXsJFVRCeJZFCPuNL
@Varnasr
Varnasr merged commit 2bf4412 into main Sep 22, 2026
3 checks passed
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.

2 participants