Skip to content

Review 1/5 — Tooling: CI, ESLint, pure utilities with tests - #25

Merged
ArneeMe merged 3 commits into
mainfrom
claude/review-1-tooling
Jul 18, 2026
Merged

ArneeMe merged 3 commits into
mainfrom
claude/review-1-tooling

Conversation

@ArneeMe

@ArneeMe ArneeMe commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Part 1 of the review-ordered stack (1 tooling → 2 content → 3 public UX+tests → 4 org features → 5 core & security). This restructures the previous nine draft PRs (#16#24) so everything can be reviewed in one sitting: easy approvals first, deep-investigation material concentrated in part 5. Merge order: this one first, then cascade.

Contents — no behavior changes, nothing wired in yet

  • CI (.github/workflows/ci.yml): typecheck, ESLint, vitest, production build on every push/PR.
  • ESLint flat config (next/core-web-vitals + next/typescript); the existing codebase passes with zero errors.
  • Pure, unit-tested utilities that later parts wire in — reviewable as standalone functions: retention TTL math (src/util/retention.ts), form-field validation (src/util/validateFormField.ts).
  • URL↔endpoint contract tests (src/util/verifyUrlContract.test.ts): pins the printed-QR contract for BOTH verify flows — legacy /verify (positional string round trip through an exact emulation of the page parser + frozen SHA-512 golden digest) and new /org/<slug>/verify (issuer URL → verifier parse → identical canonicalHash, special-character encoding). Also asserts all four route files the printed URLs point at exist on disk. If a future refactor breaks already-printed certificates, these tests fail.
  • export {} on two argv-style scripts so tsc global scope doesn't collide.

Per review feedback: the rate limiter was dropped from this PR (and will be stripped from the later PRs that wired it in when we get to them).

Verification

Typecheck, lint, 111 unit tests, production build all pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB

…ests

Review tier 1 of 5 — no behavior changes, nothing wired in yet:

- GitHub Actions CI: typecheck, lint, unit tests, production build.
- ESLint flat config (next/core-web-vitals + next/typescript); the
  codebase passes with zero errors.
- Pure, unit-tested utilities that later tiers wire in: fixed-window
  rate limiter, submission-retention TTL math, form-field validation.
- export {} on the two argv-style scripts so their top-level consts
  don't collide in tsc global scope.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB
The in-memory rate limiter isn't needed at this stage — per-isolate
state on the edge runtime made it best-effort anyway, and the input
size caps on the public POST routes remain in place.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 16, 2026

Copy link
Copy Markdown

Deploying inf319-certificate with  Cloudflare Pages  Cloudflare Pages

Latest commit: 1ac8467
Status: ✅  Deploy successful!
Preview URL: https://577713d1.inf319-certificate.pages.dev
Branch Preview URL: https://claude-review-1-tooling.inf319-certificate.pages.dev

View logs

Pins the printed-QR contract for legacy /verify (positional string,
page-parser emulation, frozen SHA-512 golden digest) and the new
/org/<slug>/verify (generateURL → OrgVerifyClient parse → canonicalHash
round trip, special-character encoding), plus route-file existence for
all four pages/endpoints the printed URLs point at.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB
@ArneeMe
ArneeMe merged commit 21a6252 into main Jul 18, 2026
2 checks passed
@ArneeMe
ArneeMe deleted the claude/review-1-tooling branch July 18, 2026 19:49
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