From dff4a42a86d8dc2922c0571d189a0305df457bcb Mon Sep 17 00:00:00 2001 From: istos Date: Mon, 3 Aug 2026 07:02:41 +0200 Subject: [PATCH] site: the redirect is a 307, and card 43's line numbers had moved MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two small corrections found while checking 0.4-alpha's deploy. wrangler.jsonc claimed the slashless form redirects with a 301; measured against the live site it is a 307. The code is the host's choice rather than anything this repo sets, so the post-deploy check now says to confirm that it redirects at all — the property the site depends on — and records the observed code beside it rather than asserting one. Card 43 already describes the two test_boards_sync failures a team-mode checkout sees, and still describes them correctly; only its pointer into the test file had drifted — reload() sits at 598 now, not 481. config.py:53-69 is still exact. Co-Authored-By: Claude Opus 5 --- site/README.md | 4 +++- site/wrangler.jsonc | 2 +- .../backlog/43-config-tests-read-the-developers-own-env.md | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/site/README.md b/site/README.md index deb4832..dabac05 100644 --- a/site/README.md +++ b/site/README.md @@ -127,7 +127,9 @@ answers rather than files: 1. `https://bench.12vectors.com/` serves the landing page over TLS. 2. `https://bench.12vectors.com/concepts/claiming-a-card` redirects to the same path with a trailing slash, and no url anywhere ends in - `.html`. + `.html`. Measured, the redirect is a **307** — the host's choice, not + a setting this repo holds, so check that it redirects at all rather + than which code it picks. 3. A path that does not exist — `/nope/` — renders the site's own 404 page **with a 404 status**, not the landing page with a 200. 4. `curl -sI https://bench.12vectors.com/` shows diff --git a/site/wrangler.jsonc b/site/wrangler.jsonc index b41eb2b..7f149db 100644 --- a/site/wrangler.jsonc +++ b/site/wrangler.jsonc @@ -19,7 +19,7 @@ // so a deploy from a clean checkout builds first. "directory": "./dist", - // /concepts/claiming-a-card -> 301 -> /concepts/claiming-a-card/, + // /concepts/claiming-a-card -> 307 -> /concepts/claiming-a-card/, // which is the url the pages link and the one // names. One page, one address: the slashless form redirects rather // than serving a second copy, and no url ever ends in .html. diff --git a/tasks/backlog/43-config-tests-read-the-developers-own-env.md b/tasks/backlog/43-config-tests-read-the-developers-own-env.md index 30daa3e..b1b67fd 100644 --- a/tasks/backlog/43-config-tests-read-the-developers-own-env.md +++ b/tasks/backlog/43-config-tests-read-the-developers-own-env.md @@ -18,7 +18,7 @@ tests are about — the assertion reads that file and fails. CI has no a dict and then does `values.update(os.environ)`. Process environment beats the file, and the file beats the defaults. That precedence is right and documented; what follows from it is not obvious. -- `tests/test_boards_sync.py:481-496` — `TheGateImpliesCommitMoves.reload()` +- `tests/test_boards_sync.py:598-613` — `TheGateImpliesCommitMoves.reload()` **pops** `BOARD_SYNC` and `BOARD_COMMIT_MOVES` from `os.environ` and reloads `config`, to stand for a machine that has set neither. Popping removes the only layer that was overriding `local/.env`, so the reload @@ -52,8 +52,8 @@ tests, `tests/test_boards_sync.py` first. `tests/__init__.py`, which every run imports — that sets the override before `config` is first imported, so no individual test has to remember. Note that several test modules import `config` at module - scope (`test_boards_sync.py:27`), so wherever this lands it has to - happen first. + scope (`tests/test_boards_sync.py:27`), so wherever this lands it has + to happen first. - **Say it where it will be read.** One line in the `_load_env()` docstring: the process environment is the only layer above the file, so removing a variable does not reveal the default, it reveals the