docs: record that CI, the registry and the deploy moved to Gitea
CI / Typecheck, test, feed (push) Successful in 17s
CI / Build site (push) Successful in 9s
CI / Container image (push) Failing after 18s

The pipeline change made a set of sentences false, and they are the only
record of why things are the way they are, so they move with it: the CI
section and deploy target in README, the cron and BASE_PATH notes in
ARCHITECTURE, the documented User-Agent in INGESTION, and the contact
URL in SOURCES.

Two comments in source were false in the same way and are fixed here
rather than left for the next reader. `serve.ts` said compression was
"the whole difference between the Docker image and the deployed site" —
the image *is* the deployed site now, so that negotiation is the only
compression any reader gets. `robots.ts` justified product-token
matching with "our contact URL contains the string StereotypicalCat",
which it no longer does; the hazard is the arbitrary substring, not that
one, so the comment now says so and the regression test keeps the URL
that actually caused it.

What is deliberately NOT rewritten: game8.co's refusal stays in the past
tense with the Gitea result marked unverified, in AGENTS.md, README,
SOURCES and FEEDBACK alike. A new runner address is the variable that
failure turns on, so it may well be served — but "may well be" is not
evidence, and the four places that would have to change are named
together so they change together once a cycle has actually run.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
Lucas Winther
2026-09-16 04:32:51 +02:00
co-authored by Claude Opus 5
parent 5b8109b556
commit f32eb93289
10 changed files with 111 additions and 58 deletions
+9 -6
View File
@@ -142,12 +142,15 @@ export function agentToken(userAgent: string): string {
*
* RFC 9309 § 2.2.1 matches the *product token* — the header up to the first
* `/` — not the header text. Matching anywhere in the header is actively
* dangerous here: our contact URL contains the string `StereotypicalCat`, so a
* `User-agent: cat` group elsewhere in the file would be treated as naming us,
* and because a named group replaces the `*` group outright, that unrelated
* group's rules would *discard* every rule the site actually wrote for us.
* Erring towards obeying more rules means never letting a coincidence take a
* `*` group away.
* dangerous here, because our header carries a contact URL and a URL is a long
* string of arbitrary substrings. The case that caught it: the contact URL was
* once `…/StereotypicalCat/…`, so a `User-agent: cat` group elsewhere in the
* file was treated as naming us, and because a named group replaces the `*`
* group outright, that unrelated group's rules *discarded* every rule the site
* actually wrote for us. The URL has since changed and that particular
* coincidence is gone; the hazard is not, since the next contact URL is just as
* arbitrary. Erring towards obeying more rules means never letting a
* coincidence take a `*` group away.
*
* A robots.txt that names us with a version (`gacha-event-tracker/1.0`) is
* still honoured: the group's own product token is compared too.