fix: refute (ar)'s intake finding; fix the D20 gloss class; add X-Robots-Tag on *.pdf
Build and deploy / build-and-deploy (push) Failing after 4s
Build and deploy / build-and-deploy (push) Failing after 4s
Pouya's rulings of 2026-09-03, in five parts. 1. THE INTAKE FORM IS NOT BROKEN. (ar) was wrong. docs/09 §7.1 verbatim — POST /api/intake with an Origin header — returns 303 to /contact/could-not-send/ with access-control-allow-origin echoed; the same probe without Origin returns 403. A bare POST 403s BY DESIGN and §7.1 says so three lines below the probe it prescribes: "403 means the Origin header did not arrive". The earlier finding read a status code without reading the document that defines it. Second time in two days. CLAUDE.md's instrument list goes eight to nine. D20 findings 12 and 19 fall with it; §7.2 (that both emails arrive) is still owed. The correction is APPENDED as entry (as); (ar) stands unedited. 2. The privacy retention comment was stale, not a defect — superseded by his decision to publish and confirm after launch, reading from 2026-09-04. Reworded; the TODO(pouya) came off with the gate it enforced. The mechanism finding survives: it was a JSX comment, stripped by Astro, so no build or deploy path could see it. A publication gate that lives only in a stripped comment is not a gate. §9 Q60 corrected. 3. The gloss class is fixed — 15 of the 20 D20 findings, 14 distinct edits across 9 files, under the rule "the gloss may say no more than the extract says; no new claims, no new sources". Swept three unpublished insights drafts too, and corrected the wrong CAA attribution at its source in docs/reference/, which is where a fixed page re-seeds. /bio/ changed, so the committed PDF is regenerated (89,549 B, 1 page asserted). Three findings outstanding: 10 needs a ruling, 11 is ruled and owed via Q60, 13 needs him to have said it. R1 is not one of the twenty. 4. X-Robots-Tag cannot be done with S3 object metadata — --metadata writes user metadata, returned as x-amz-meta-x-robots-tag, which no crawler reads. Built as the CloudFront response-headers policy docs/06 has specified all along: configure.mjs section 4. It needs a --apply run, not a deploy. The policy is cloned from whatever is attached at run time and reconciled on every run, because a response-headers policy replaces rather than merges. 5. Headshot deferred as an open non-defect. The master and the srcset ladder are both fine; Astro passes no quality, so AVIF encodes at sharp's default 50 and is served first. Two review rounds, 29 findings, all resolved, none declined; stopped at two per D19. NINE of round 2's fourteen were defects in round 1's own repairs — including a fix that harmonised both /fees/ rows onto wording that was itself unregistered, publishing an unsourced fee term twice where it had been once. Gates, exit status read for each: check 0 (0 errors, 0 warnings, 0 hints), build 0 (23 pages), check:claims 0, check:intake 0, og:proof 0, lint 0, minifier grep exit 1, router.test.mjs 30/30. Lighthouse NOT run. Nothing deployed and nothing applied to the distribution. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Md3GndFqWPzK78xAoebsg5
This commit is contained in:
co-authored by
Claude Opus 5
parent
b9523817e2
commit
02739adac9
@@ -44,8 +44,12 @@
|
||||
* record is ever deleted.** Only a record written with a near-future `ttl`
|
||||
* and watched to vanish proves that. docs/05's definition of done carries
|
||||
* "TTL set and verified by test record" and `docs/06`'s cutover checklist
|
||||
* names this page as what that item protects. **Both halves before this page
|
||||
* is public.** See the TODO(pouya) on the retention section below, and §9 Q60.
|
||||
* names this page as what that item protects. ⚠️ **This read "both halves
|
||||
* before this page is public" and the page went public first — Pouya's
|
||||
* ruling of 2026-09-03: publish, then confirm the deletion, reading from
|
||||
* 2026-09-04.** So the second half is now owed rather than pending, which is
|
||||
* a weaker position and is recorded as one. See the comment on the retention
|
||||
* section below, and §9 Q60.
|
||||
*
|
||||
* ⚠️ **NO LICENSURE CLAIM AND NO ANSWER TO THE CAPACITY QUESTION.** A privacy
|
||||
* policy is where "legal advice" phrasing arrives by convention. §4 records
|
||||
@@ -81,7 +85,7 @@ const RETENTION_MONTHS = 24;
|
||||
|
||||
/** Bump this on ANY substantive edit. A privacy policy with a stale date is a
|
||||
* policy a reader cannot tell they are reading an old version of. */
|
||||
const LAST_UPDATED = '2 September 2026';
|
||||
const LAST_UPDATED = '3 September 2026';
|
||||
|
||||
/* Rendered from the form's own field list, so the two cannot drift. `consent`
|
||||
and the honeypot are absent from `INTAKE_FIELDS` deliberately and are
|
||||
@@ -226,15 +230,15 @@ const COLLECTED = INTAKE_FIELDS.map((field) => field.label);
|
||||
|
||||
<h2>How long it is kept</h2>
|
||||
{
|
||||
/* TODO(pouya): has a test record been written to the intake table with a
|
||||
near-future `ttl` and OBSERVED TO DISAPPEAR? AGENTS.md §9 Q60. The
|
||||
sentence below asserts a MECHANISM, not just a period, and the
|
||||
setting being on does not prove the mechanism runs. The table
|
||||
setting is confirmed — §7 holds that status and this comment does
|
||||
not restate it, because it did restate it once and went stale within
|
||||
the day (§12 R19). Do not answer this from the handler code, which
|
||||
only writes the attribute. This page must not go public until a
|
||||
deletion has actually been seen. */
|
||||
/* The sentence below asserts a MECHANISM, not just a period, and the
|
||||
mechanism is still unobserved — AGENTS.md §9 Q60, open. **Pouya
|
||||
ruled 2026-09-03 that the page publishes now and the deletion is
|
||||
confirmed after launch**; the observation window opened 2026-09-02
|
||||
and the earliest useful reading is 2026-09-04 (`docs/09` Part 10).
|
||||
That decision is why this is no longer a `TODO(pouya)`. The table
|
||||
setting lives in §7 and is deliberately not restated here — it was
|
||||
once, and went stale within the day (§12 R19). Do not answer Q60
|
||||
from the handler code, which only writes the attribute. */
|
||||
}
|
||||
<p>
|
||||
<strong>{RETENTION_MONTHS} months from the date you send it</strong>,
|
||||
@@ -307,15 +311,18 @@ const COLLECTED = INTAKE_FIELDS.map((field) => field.label);
|
||||
{ANALYTICS.provider === 'plausible' ? 'Plausible' : 'Fathom'},
|
||||
which is cookieless and collects no personal information and no
|
||||
cross-site identifiers. There is nothing to consent to and no
|
||||
banner, because nothing is stored on your device.
|
||||
banner, because it sets no cookies and stores no identifier on
|
||||
your device.
|
||||
</p>
|
||||
) : (
|
||||
<p>
|
||||
<strong>This site sets no cookies and runs no analytics.</strong>
|
||||
There is no tracking script on any page, nothing is stored on your
|
||||
device, and there is therefore nothing to consent to and no
|
||||
banner. If that changes, this page changes on the same day and its
|
||||
last updated date moves with it.
|
||||
There is no tracking script on any page, and there is therefore
|
||||
nothing to consent to and no banner. If cookies or analytics are
|
||||
ever introduced, this page changes on the same day and its last
|
||||
updated date moves with it. Your browser does cache this site's
|
||||
fonts, stylesheets and images for up to a year so a return visit
|
||||
loads faster, and those are the same files for every visitor.
|
||||
</p>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user