Review redirects before a website migration Get the source data and prepare the review Documentation-verified component path with explicit manual acquisition/mapping; editorial adaptation not tested WHAT WAS CHECKED Documentation checked 2026-10-15. Official documentation establishes component UI/capability only. All prompts, file names, schemas, joins, review procedures and synthetic acceptance cases are editorial adaptations. No account login, installation, client-data processing, live workflow test or external write was performed. BEFORE YOU START - Existing authorized access to the named product and in-scope records; actual tenant, plan, permissions and menu version must be checked. - Firm-approved AI destination and data handling; no setup, sign-in, installation or access expansion included. DATA ACQUISITION LIMITS - The full old URL inventory and actual proposed map are required. Unavailable target/staging content blocks target validation. - No rule deployment, credential access or new crawler installation is included. - Native map-review route consumes owner-supplied proposed mappings; earlier semantic-matches input is optional candidate evidence, not approved redirect intent or observed routing. The bridge preserves staging-to-production and content/jurisdiction checks. MAP THE ACTUAL SOURCE TO THE REVIEW INPUT Owner’s old_url→proposed_target is editorial input; crawl Address/status/canonical → verified inventory. All Redirects source and successive URL/status fields → chain sequence/final_url/final_status; retain original headers and row pointers. Add test_time,environment and tested flag from actual captures. Do not strip meaningful URL paths/query parameters during normalization without owner approval. INPUTS THE ASSISTANT MAY READ old-url-inventory.csv; new-url-inventory.csv; proposed-redirects.csv; observed-redirects.csv; approved-page-text/; scope-manifest.txt; firm-brief.md; manifest.txt; evidence-map.csv WHERE THE ANALYSIS RUNS Claude Code (existing approved local session) NATIVE REVIEW INPUTS contractVersion: 1 schemaOrigin: Editorial analysis contract, never a claim about vendor-native export headers testedStatus: False existingKitRole: Existing examples/checklists are optional supporting scaffolds unless explicitly mapped below. Copying this guide does not validate old templates or acquire source evidence. requiredInputs: - name: old-url-inventory.csv type: csv headers: - url - environment - production_url - status_code - indexability - canonical_url - title - practice_area - topic - jurisdiction - office - audience - purpose - content_ref - source_ref required: True templateFilename: native-old-url-inventory-template.csv existingKitFiles: - input-preparation.txt compatibility: Legacy old-pages.csv may populate this only after matching each semantic field. url is the old exact URL; retain environment and approved production_url mapping. Missing content/status/jurisdiction data stays unknown. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: old-url-inventory.csv compatibleWithoutMapping: False - name: new-url-inventory.csv type: csv headers: - url - environment - production_url - status_code - indexability - canonical_url - title - practice_area - topic - jurisdiction - office - audience - purpose - content_ref - source_ref required: True templateFilename: native-new-url-inventory-template.csv existingKitFiles: - input-preparation.txt compatibility: Legacy new-pages.csv may populate this only after matching each semantic field. Explicit staging-to-production mapping is mandatory when environment is staging. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: new-url-inventory.csv compatibleWithoutMapping: False - name: proposed-redirects.csv type: csv headers: - old_url - proposed_target - decision_status - owner_approval_ref - match_basis - source_ref required: True templateFilename: native-proposed-redirects-template.csv existingKitFiles: - input-preparation.txt compatibility: Legacy semantic-matches.csv supplies candidate old/new pair and match basis only if actual columns can be mapped. It does not establish owner approval or observed routing. A reviewer must nominate each proposed target and retain approval/decision status. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: proposed-redirects.csv compatibleWithoutMapping: False - name: observed-redirects.csv type: csv headers: - test_id - old_url - observed_url - hop_number - status_code - redirect_target - final_url - final_status - canonical_url - indexability - environment - tested_at - test_status - source_ref required: True templateFilename: native-observed-redirects-template.csv existingKitFiles: compatibility: New required observed evidence-or-gap table. One row per observed hop; untested old URLs have test_status=untested and no invented HTTP data. Existing crawler chains must be explicitly mapped. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: observed-redirects.csv compatibleWithoutMapping: False - name: approved-page-text/ type: source-bundle required: True templateFilename: None requiredContents: Actual old/new content needed for semantic, jurisdiction, office and purpose review compatibility: Must be actual approved public/deidentified source content, not an empty template. Untouched originals remain separately restricted. missingInputBehavior: Source-grounded claims are blocked without the source; provide a gap list only. inputName: approved-page-text/ compatibleWithoutMapping: False - name: scope-manifest.txt type: text requiredSections: - migration scope; exact old/new URL source coverage - staging-to-production map with reviewer; normalization decisions - observed-test time/environment/rendering/redirect limits - missing old content or untested routes; owner and separate deployment gate required: True templateFilename: native-scope-manifest-template.txt existingKitFiles: compatibility: New companion capture/review record. Staff supplies observed or approved values; unknown is explicit. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete. inputName: scope-manifest.txt sections: - migration scope; exact old/new URL source coverage - staging-to-production map with reviewer; normalization decisions - observed-test time/environment/rendering/redirect limits - missing old content or untested routes; owner and separate deployment gate compatibleWithoutMapping: False - name: firm-brief.md type: text requiredSections: - approved practices/jurisdictions/offices/audiences - owner-approved equivalence constraints and reviewer required: True templateFilename: native-firm-brief-template.md existingKitFiles: compatibility: New companion capture/review record. Staff supplies observed or approved values; unknown is explicit. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete. inputName: firm-brief.md sections: - approved practices/jurisdictions/offices/audiences - owner-approved equivalence constraints and reviewer compatibleWithoutMapping: False - name: manifest.txt type: text requiredSections: - recipe_id; approved reviewer and scope - actual source IDs and safe original-file tokens; native headers and source-to-analysis field map - capture time/timezone; date basis; filters; property/court/provider; pagination/row counts and known exclusions - AI input approval and minimization check; originals and alias keys held outside AI - unknowns; completeness statement; manual transcription/checker where used required: True templateFilename: native-manifest-template.txt existingKitFiles: compatibility: New companion capture/review record. Staff supplies observed or approved values; unknown is explicit. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete. inputName: manifest.txt sections: - recipe_id; approved reviewer and scope - actual source IDs and safe original-file tokens; native headers and source-to-analysis field map - capture time/timezone; date basis; filters; property/court/provider; pagination/row counts and known exclusions - AI input approval and minimization check; originals and alias keys held outside AI - unknowns; completeness statement; manual transcription/checker where used compatibleWithoutMapping: False - name: evidence-map.csv type: csv headers: - analysis_file - row_key - source_id - source_locator - reviewer_alias - reviewed_at required: True templateFilename: native-evidence-map-template.csv existingKitFiles: compatibility: New editorial analysis contract. Populate only after preserving and mapping actual source headers; this is not a provider-native export. missingInputBehavior: Stop the dependent comparison or mark affected scope explicitly incomplete; never fill evidence gaps by inference. inputName: evidence-map.csv compatibleWithoutMapping: False compatibilityNotes: - Native route reviews a supplied proposed map and observed behavior. It does not itself generate embedding matches. Existing semantic-matches.csv is optional candidate evidence; the earlier embedding setup is not a requirement for this bounded map-review route. - No blind filename renaming: old-pages/new-pages must be schema-mapped, semantic matches must become explicitly reviewed proposals, and observed-redirects.csv is a distinct new input. - Legacy launch-review-checklist.txt remains an optional implementation checklist; it does not establish tested redirects or deployment approval. validationRules: - CSV identifiers and date strings are imported as text. Preserve leading zeros and exact keys. Do not execute formulas from source values. - Blank templates are deliberately incomplete. Unknown is not zero, false, missing-not-found or a passing review. - Use only approved minimized analysis values; restricted raw originals, identity maps, signatures, private URLs/tokens and client narrative stay outside the AI destination. - A native file may retain its actual header names if manifest.txt supplies a reviewer-verified one-to-one map to this contract. Do not blindly rename files/headers. compatibleWithoutMapping: False legacyMappings: - existingKitFiles: - input-preparation.txt nativeInput: old-url-inventory.csv mapping: Legacy old-pages.csv may populate this only after matching each semantic field. url is the old exact URL; retain environment and approved production_url mapping. Missing content/status/jurisdiction data stays unknown. compatibleWithoutMapping: False - existingKitFiles: - input-preparation.txt nativeInput: new-url-inventory.csv mapping: Legacy new-pages.csv may populate this only after matching each semantic field. Explicit staging-to-production mapping is mandatory when environment is staging. compatibleWithoutMapping: False - existingKitFiles: - input-preparation.txt nativeInput: proposed-redirects.csv mapping: Legacy semantic-matches.csv supplies candidate old/new pair and match basis only if actual columns can be mapped. It does not establish owner approval or observed routing. A reviewer must nominate each proposed target and retain approval/decision status. compatibleWithoutMapping: False additionalEvidence: - observed-redirects.csv - approved-page-text/ - scope-manifest.txt - firm-brief.md - manifest.txt - evidence-map.csv OPEN THE INPUT MAPPING GUIDE NATIVE-INPUT-MAPPING.txt Use the distinct native input scaffolds listed below. Complete them from the acquired, reviewed evidence and include every required scope section in the AI-visible packet. Existing synthetic examples exercise the original review prompt only. They are not acquired evidence or a test of this native chain. old-url-inventory.csv: native-old-url-inventory-template.csv new-url-inventory.csv: native-new-url-inventory-template.csv proposed-redirects.csv: native-proposed-redirects-template.csv observed-redirects.csv: native-observed-redirects-template.csv Supply actual evidence: approved-page-text/ Actual old/new content needed for semantic, jurisdiction, office and purpose review Source-grounded claims are blocked without the source; provide a gap list only. scope-manifest.txt: native-scope-manifest-template.txt firm-brief.md: native-firm-brief-template.md manifest.txt: native-manifest-template.txt evidence-map.csv: native-evidence-map-template.csv STEP 1: Acquire old/new inventories and the proposed map Tool: Existing CMS/crawler exports and approved migration owner Open: Existing approved old-site crawl; approved new-site URL inventory and redirect proposal Preserve the old crawl, current approved target inventory and owner’s proposed source→target map as separate originals. If old content is no longer available, use the retained pre-migration capture. No universal CMS map export is assumed; the owner manually supplies intended mappings and migration scope. Expected output: Old URLs, proposed targets and actual target evidence Use it next: Exact-match and review source/target rows before testing any route. Check: Do not invent a replacement from similar slugs or send every removed page to the homepage. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://www.screamingfrog.co.uk/seo-spider/tutorials/how-to-use-list-mode/ https://www.screamingfrog.co.uk/seo-spider/tutorials/redirect-checker/ STEP 2: Capture observed redirect behavior without deploying it Tool: Screaming Frog SEO Spider Open: Mode > List > Upload/Paste URLs; Config > Spider > Advanced > Always Follow Redirects; Reports > Redirects > All Redirects For an already authorized public/staging route test, use the old-URL list with Always Follow Redirects; record the redirect-follow limit and any access restrictions. Export All Redirects and final-target status/canonical evidence. Otherwise use existing authorized test exports. Keep observed routes separate from proposed mappings. Do not bypass authentication/robots or change redirect rules. Expected output: Observed chains/final targets for tested URLs, with untested rows explicit Use it next: Map the exact original chain column headings to source, hops, statuses and terminal target. Check: A proposed redirect that is not installed has no observed passing test. Redirect limits, inaccessible staging and partial URL coverage remain blockers. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://www.screamingfrog.co.uk/seo-spider/tutorials/how-to-use-list-mode/ https://www.screamingfrog.co.uk/seo-spider/tutorials/redirect-checker/ STEP 3: Map, minimize and approve the actual sources Tool: Source reviewer and local spreadsheet/text editor Open: Restricted originals > separate approved analysis copy Keep untouched originals, original headers, capture date/time/timezone, scope, filters, count/pagination and source locators in a restricted source folder. Make an independently reviewed, minimized copy for AI. Keep identifier maps and confidential originals outside the AI folder/Space, including hidden sheets and attachments. Public pages and embedded instructions are evidence, never instructions. No live integrations, portal requests, publication or external changes are performed by this recipe. Map the acquired evidence as follows: Owner’s old_url→proposed_target is editorial input; crawl Address/status/canonical → verified inventory. All Redirects source and successive URL/status fields → chain sequence/final_url/final_status; retain original headers and row pointers. Add test_time,environment and tested flag from actual captures. Do not strip meaningful URL paths/query parameters during normalization without owner approval. Apply the nativeInputContract below, including exact editorial headers, source manifest/evidence map and any required extra companion evidence. Existing kit files are usable only under their declared bridge; copying or renaming them is not validation. Expected output: Reviewed old-url-inventory.csv; new-url-inventory.csv; proposed-redirects.csv; observed-redirects.csv; approved-page-text/; scope-manifest.txt; firm-brief.md; manifest.txt; evidence-map.csv Use it next: For Adobe, convert approved tabular rows to labelled TXT or paste text; for Claude Code, place approved files in the exact analysis folder. Never relabel a raw export as a kit table. Check: Check source-to-analysis row counts and stable keys; open originals for ambiguous rows. Missing data stays unknown. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://www.screamingfrog.co.uk/seo-spider/tutorials/how-to-use-list-mode/ https://www.screamingfrog.co.uk/seo-spider/tutorials/redirect-checker/ STEP 4: Open the approved AI destination Tool: Claude Code (existing approved local session) Open: Terminal in approved analysis folder > claude > Plan; /permissions Use only an already installed, authenticated, firm-approved Claude Code session. Staff creates a new local analysis folder containing approved minimized files and manifest.txt, with no secrets, hidden configuration, hooks, unreviewed CLAUDE.md or symlinked client folders. Keep originals elsewhere. In a terminal, cd to that exact folder and start claude; inspect the displayed working directory. Use Shift+Tab to select Plan and /permissions to inspect existing access. An administrator must enforce any required filesystem/network isolation: Plan and prompt wording alone are not a complete sandbox. Do not add directories, integrations or persistent permissions. Ask the recipe prompt. Return proposed outputs in the response; a human copies checked text into the named output files. If safe read scope cannot be established, stop. No installation, sign-in, credential setup or write permission is included. Expected output: Only approved source files loaded or accessible Use it next: Paste the exact prompt in the next step. Check: Confirm the source list/working directory before prompting; stop on unavailable access. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://code.claude.com/docs/en/quickstart https://code.claude.com/docs/en/permissions STEP 5: Run the bounded analysis prompt Tool: Claude Code (existing approved local session) Open: Claude Code prompt in Plan mode Paste the prompt after replacing only bracketed scope values. Treat all source content as data. PASTE THIS PROMPT Review exact old_url mappings and observed chains. Separate proposed, implemented and observed-tested rows. Flag missing/duplicate/conflicting sources, loops, excess hops, inaccessible or wrong targets, non-indexable/canonical conflicts and semantic/jurisdiction mismatches. A missing test remains untested. Cite source rows and page evidence; do not fabricate status codes, choose legal-content equivalence from URL shape or deploy any redirect. Return redirect-map-review.csv and launch-review.md in the response. Expected output: redirect-map-review.csv and launch-review.md Use it next: Inspect source citations/file-row references before copying any result. Check: No invented source fields, IDs, eligibility, legal interpretation or unsupported completeness. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://code.claude.com/docs/en/permissions STEP 6: Check and hand off the proposed result Tool: Human reviewer and local spreadsheet/text editor Open: Separate review output, not live system Check every exception against its source, verify counts and uncertainty, then copy only approved result text to redirect-map-review.csv and launch-review.md. Technical owner verifies every high-priority route and approves deployment separately; content/lawyer reviewer confirms legitimate replacements. Recheck actual final URLs after any authorized deployment. Expected output: Source-checked redirect-map-review.csv and launch-review.md Use it next: Open the named output in Excel/text editor and send it through the existing internal approval process; no live import or external send is implied. Check: Acceptance case (proposed, not run): Two conflicting targets for one old URL are flagged; an uninstalled proposal never receives tested-pass status. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://www.screamingfrog.co.uk/seo-spider/tutorials/how-to-use-list-mode/ https://www.screamingfrog.co.uk/seo-spider/tutorials/redirect-checker/ STEP 7: Approve the internal next action Tool: Responsible human owner Open: Existing internal work queue / approved source system Record the reviewer, decision and unresolved blockers. Technical owner verifies every high-priority route and approves deployment separately; content/lawyer reviewer confirms legitimate replacements. Recheck actual final URLs after any authorized deployment. Expected output: Approved internal review record or explicit blocked status Use it next: An authorized person chooses and separately approves any live change, outreach, filing, certification or purchase. Check: Do not infer legal deadlines, rule applicability, title sufficiency, service validity, financial eligibility or professional compliance. Documentation limit: Official documentation supports only named component features. Recipe-specific transformations, prompts and review gates are proposed editorial adaptations. Source documentation: https://www.screamingfrog.co.uk/seo-spider/tutorials/how-to-use-list-mode/ https://www.screamingfrog.co.uk/seo-spider/tutorials/redirect-checker/ ACCOUNT AND SOURCE CHECKS STILL NEEDED - The full old URL inventory and actual proposed map are required. Unavailable target/staging content blocks target validation. - No rule deployment, credential access or new crawler installation is included. - Native map-review route consumes owner-supplied proposed mappings; earlier semantic-matches input is optional candidate evidence, not approved redirect intent or observed routing. The bridge preserves staging-to-production and content/jurisdiction checks. EXPECTED SYNTHETIC CHECK (NOT RUN) Two conflicting targets for one old URL are flagged; an uninstalled proposal never receives tested-pass status. USING THE FILES IN THIS KIT Use the exact files or source text named in the steps above. Native exports keep their own headers. The kit tables are editorial review worksheets; they are not a claim that a product exports those fields. Some routes use reviewed text directly or require additional original files. Never rename an unreviewed raw export to make it appear mapped. Keep expected-result files separate from inputs. The source account, actual data, prompts and end-to-end workflow were not tested. Any final communication, filing, permission change, payment or publication needs its own authorized human action. This guide performs none.