Skip to content

fix: exclude path prefixes, root icon bytes, release media gate, redirect compiler, forms that post elsewhere - #7

Merged
ethanplusai merged 16 commits into
mainfrom
fix/exclude-forms-redirects
Oct 23, 2026
Merged

ethanplusai merged 16 commits into
mainfrom
fix/exclude-forms-redirects

Conversation

@ethanplusai

Copy link
Copy Markdown
Owner

What

Findings from the harvard.edu (WordPress multisite) and sxsw.com (WordPress VIP block theme) runs.

capture-site

  • --exclude <prefix>[,...]: nothing under an excluded prefix is requested from any source (sitemaps, REST, links, redirects, Wayback); sitemap indexes under it are listed as skipped; links to it stay in the HTML and are listed apart in links.json; meta.json and the baseline carry the prefixes, and the links, sitemaps and redirects gates treat those paths like external ones. Prefixes compare in one canonical form (non-ASCII, percent case). A prefix added on --resume removes what was already captured under it. Intake records excludePaths; the capture command passes it.
  • Root /favicon.ico and /apple-touch-icon.png bytes are saved (assets/root-*), meta.json icons records { status, file, contentType, bytes }, and assets/index.json lists them as root-icon so the build ships them. The assets step no longer requests them itself (supersedes that part of fix: capture, upload, gates and visual review for a large WordPress site #5).

parity-gates

  • Release media check: with live-temporary media, only files under the prefix fail on a release build; files outside it are checked in dist/ as in staging.
  • build-redirects: captured sources are literal (every : and * escaped for Vercel; a source with no valid form is dropped to redirects-skipped.json beside the csv); decision rows keep their parameters. The redirects gate and verify-live accept a listed dropped row or a redirect exception with action: "none" (requires approvedBy and date).
  • Forms: a POST form that already posts to another registrable domain (Mailchimp, HubSpot, Formspree) is kept as captured and needs no endpoint; www, http, protocol-relative, subdomain, managed-WordPress staging hosts and WordPress handler paths all count as the old site and still require rewiring.
  • Sitemaps gate normalises both sides of the percent-escape comparison.

Docs: capture-site and parity-gates SKILL.md, intake, phases, build-rules, forms, exceptions, the site templates.

Verified

  • npm test: 795 pass, 0 fail. npm run hygiene OK, no trailers.
  • Each task implemented with failing tests first, reviewed separately, one fix round, re-review approved.

… requested, sitemaps listed skipped, links kept and listed apart, meta.json and the baseline carry the prefixes
…ytes (assets/root-*), record { status, file, contentType, bytes } in meta.json icons, and list them in assets/index.json as root-icon
…eta.excluded; reconcile reads the meta.json icons objects; build-rules ships root-icon assets
…x added on --resume removes what was captured under it; stylesheets and root icons never follow a redirect under a prefix
…files under the prefix; files outside it are checked in dist
… a source with no valid form into redirects-skipped.json; the redirects gate accepts a listed row or a no-redirect exception
…as captured; the forms gate compares it like live and needs no endpoint for it
…terisk escaped for Vercel, dropped on Cloudflare; only decision rows take parameters, never before a digit
…; www, http, subdomains, protocol-relative hosts and WordPress form handlers are the old site and need the endpoint
… no-redirect exception covers, naming the reason
…nger requests them; sitemaps gate normalises both sides of the escape comparison
@ethanplusai
ethanplusai force-pushed the fix/exclude-forms-redirects branch from 8bcbec0 to d32484e Compare October 23, 2026 05:11
@ethanplusai
ethanplusai merged commit 69bfe17 into main Oct 23, 2026
4 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.

1 participant