Skip to content

fix(marketing): redirect /compliance and /care to nearest equivalents - #71

Merged
ejay-dev merged 1 commit into
mainfrom
fix/marketing-compliance-care-broken-nav
May 13, 2026
Merged

fix(marketing): redirect /compliance and /care to nearest equivalents#71
ejay-dev merged 1 commit into
mainfrom
fix/marketing-compliance-care-broken-nav

Conversation

@ejay-dev

Copy link
Copy Markdown
Owner

Summary

Closes marketing-audit finding D (HIGH)/compliance and /care return 404 on the live site.

Investigation per the brief

Per the user's brief, the first job was to determine rename vs accidental delete. Reality on direct inspection:

  • app/(marketing)/compliance/ and app/(marketing)/care/ directories do not exist on main, and git log --all --diff-filter=D against either path returns zero history. Neither route was ever built in this repo.
  • grep across the codebase for /compliance and /care as link targets (href / Link / excluding mailto/slugs like compliance-care-...) returns zero hits in app/, components/, config/, lib/. No inbound links to fix.
  • app/sitemap.ts does not list either URL.

So this is not a rename gone wrong or an accidental delete — it's a gap in the URL space. The audit found them by checking the brief's checklist of expected marketing URLs against the live site, and substituted /trust (compliance hub) and /healthcare-compliance (closest care landing) for the rest of the dynamic walk (2026-05-13 marketing audit, §11).

What this PR ships

Temporary 307 redirects in next.config.ts:

  • /compliance/trust
  • /care/healthcare-compliance

permanent: false keeps the door open for an intentional /compliance or /care landing later — the audit's §3 cross-cutting #9 already flags URL cannibalization across overlapping industry pages, so resolving that taxonomy may want these slugs for canonical hubs.

Test plan

  • npx tsc --noEmit -p tsconfig.typecheck.json — clean.
  • Post-merge: curl -I https://www.formaos.com.au/compliance returns 307 → /trust; same for /care/healthcare-compliance.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com

Copilot AI review requested due to automatic review settings May 13, 2026 02:22
@vercel

vercel Bot commented May 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
forma-os Ready Ready Preview, Comment May 13, 2026 3:16am

Request Review

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds temporary Next.js redirects so /compliance and /care no longer 404, mapping them to the closest existing marketing pages.

Changes:

  • Adds 307 (temporary) redirect from /compliance/trust
  • Adds 307 (temporary) redirect from /care/healthcare-compliance
  • Documents the audit context inline in next.config.ts

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread next.config.ts
Comment on lines +119 to +125
source: '/compliance',
destination: '/trust',
permanent: false,
},
{
source: '/care',
destination: '/healthcare-compliance',
Comment thread next.config.ts
Comment on lines +109 to +117
// /compliance and /care surfaced as 404s in the pass-2 dynamic
// audit (2026-05-13 marketing audit, §11). Neither route was
// ever built in this repo (no git log, no directory, zero
// inbound refs), but buyers commonly URL-type these and may
// arrive from stale external mentions. Redirect to the closest
// working surface — /trust is the compliance hub the audit
// identified as the equivalent, /healthcare-compliance is the
// closest "care" landing per §4.15. Temporary (307) until the
// routes are intentionally built.
@github-actions

Copy link
Copy Markdown

♿ Accessibility Test Results

PASSED - No critical accessibility issues found

Tests Performed:

  • WCAG 2.1 AA compliance validation
  • Cross-browser accessibility testing
  • Keyboard navigation testing
  • Screen reader compatibility
  • Color contrast validation

Artifacts: Download the accessibility reports from the "Artifacts" section for detailed results.

Closes marketing-audit finding D — /compliance and /care return 404
on the live site.

Per the user's brief, the first job was to determine rename vs
accidental delete. Reality on direct inspection:

  - app/(marketing)/compliance/ and app/(marketing)/care/ directories
    do not exist on this branch, and git log --all --diff-filter=D
    against either path returns zero history. Neither route was
    ever built in this repo.
  - grep across the codebase for '/compliance' and '/care' as link
    targets (href / Link / mailto exclusion) returns zero hits in
    app/, components/, config/, lib/. There are no inbound links to
    fix.
  - app/sitemap.ts does not list either URL.

So D is not a rename gone-wrong or an accidental delete — it's a
gap in the URL space. The audit found them by checking the brief's
checklist of "expected" marketing URLs against the live site, and
substituted /trust (compliance hub) and /healthcare-compliance
(closest care landing) for the rest of the dynamic walk
(2026-05-13 marketing audit, §11).

The pragmatic fix is a temporary 307 redirect for each to the
substituted equivalent: any buyer who URL-types one of these (or
follows a stale external mention) lands on a useful page instead of
the marketing 404. permanent: false keeps the door open for an
intentional /compliance or /care landing later — the audit's §3
cross-cutting #9 already flags URL cannibalization across
overlapping industry pages, so resolving that taxonomy may want
these slugs for canonical hubs.

Verified:
  - tsc --noEmit -p tsconfig.typecheck.json: clean.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@ejay-dev
ejay-dev force-pushed the fix/marketing-compliance-care-broken-nav branch from 87a74c0 to 189f74d Compare May 13, 2026 03:12
@github-actions

Copy link
Copy Markdown

♿ Accessibility Test Results

PASSED - No critical accessibility issues found

Tests Performed:

  • WCAG 2.1 AA compliance validation
  • Cross-browser accessibility testing
  • Keyboard navigation testing
  • Screen reader compatibility
  • Color contrast validation

Artifacts: Download the accessibility reports from the "Artifacts" section for detailed results.

@ejay-dev
ejay-dev merged commit 64416bd into main May 13, 2026
28 checks passed
@ejay-dev
ejay-dev deleted the fix/marketing-compliance-care-broken-nav branch May 13, 2026 03:35
ejay-dev added a commit that referenced this pull request May 13, 2026
Single housekeeping commit per the engagement's "after a batch
clears, update the audit file in one PR" cadence. Closes the loop
on the marketing-audit cross-cutting and per-page rows shipped this
session:

  marketing audit row -> PR
    #1  CRIT siteUrl \n               -> #67
    #2  CRIT /status unship           -> #68
    #3  HIGH JSON-LD vs footer email  -> #70
    #11 MED  Gmail support address    -> #70 (rolled in)
    §11 D    /compliance + /care 404s -> #71
    #85 HIGH contact form validation  -> #73
    #92 HIGH cookie banner tab order  -> #72
    #96 MED  unnamed icon buttons     -> #74
    #100 HIGH touch targets           -> #74 (rolled in)
    #108 HIGH /security mobile LCP    -> #75

  app audit row -> PR (recorded for completeness)
    #6 MED add-note-form reload       -> #66 (Option B)

Each row's "Suggested fix" column is preserved; the audit's
recommendation alongside the shipped approach is the trail. Where
the shipped fix differed from the audit's recommendation (e.g. #6
went inline + sticky-toast rather than introducing a new toast
primitive; #71 added 307 redirects because investigation showed
neither route was ever built), the row now records the actual
shape.

§19 of the marketing-audit doc is new — it indexes the batch-1
closures and notes a cross-reference to PR #69 (compliance-testing
workflow permissions gap, same shape as the PR #54/#55 env-var
fixes; recorded so the next CI sweep doesn't re-discover it).

#108 is the highest-value entry in this housekeeping batch — it
got the full verified-Lighthouse note (LCP element selector, phase
breakdown, top-3 opportunities by overallSavingsMs, prod run URL).
The audit's original "(verify)" annotation was correct: the named
cause (hero image) was real, just rendered by a shared component
that grep over the page directory missed.

Doc-only. No code change.

Co-authored-by: ejaz <ejaz@local>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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