================================================================================
COLLABTUNES LIVE SITE FAILURE PATTERN INDEX
Version: 1.0 | Date: 5_13_26 | Status: AUTHORITATIVE
Purpose: Fast-lookup catalog of the most likely live site failures.
         Symptom → Probable cause → Fastest fix.
================================================================================

================================================================================
BROKEN ANCHOR PATTERNS
================================================================================

PATTERN A1 — Fast-scroll does nothing on click
───────────────────────────────────────────────
Symptom:     User clicks ↑top / ↕mid / ↓bot button. Page does not scroll.
             Button is visible. No JavaScript error in console.
Probable cause: id="top", id="mid", or id="bot" is missing from page HTML.
                The scroll target doesn't exist so the jump silently fails.
Fastest fix: Add missing anchor to page HTML at correct position.
             id="top" → first element in <body>
             id="mid"  → element at approximate vertical midpoint
             id="bot"  → last element before </body>
SGC-1 signal: body_captured=True, word_count > 0, but no anchor flag raised
              (SGC-1 does not currently check mid/bot — manual verify required)

────────────────────────────────────────────────────────────────────────────────

PATTERN A2 — Fast-scroll jumps to wrong section
────────────────────────────────────────────────
Symptom:     Clicking ↑top scrolls partway up but not to top. Or mid-jump
             lands in wrong section.
Probable cause: id="top" exists but is not on the first element — it's buried
                mid-page. Or duplicate id="top" on page, browser picks first.
Fastest fix: Move id="top" to the first element after <body> opens.
             Search for duplicate id="top" and remove extras.

────────────────────────────────────────────────────────────────────────────────

PATTERN A3 — 128-nav section link jumps to wrong section
──────────────────────────────────────────────────────────
Symptom:     Clicking a 128-nav section link scrolls to the wrong section
             (lands one section above or below target).
Probable cause: Section anchor IDs are duplicated — two sections share the
                same id. Browser always targets the first occurrence.
Fastest fix: Audit all section IDs on 128-nav page for duplicates.
             Rename duplicate: add a numeric suffix (e.g. sec-mood-01, sec-mood-02).
             Update all links pointing to the renamed anchor.

────────────────────────────────────────────────────────────────────────────────

PATTERN A4 — Back button goes to wrong page
─────────────────────────────────────────────
Symptom:     User clicks back button on an inner page. Lands on unexpected
             page (not the parent/hub page they came from).
Probable cause: Back button href is hardcoded to a URL that changed or was
                deprecated. Or back button uses browser history (JS) but user
                arrived via direct link with no history.
Fastest fix: Verify back button href points to current canonical parent URL.
             Do not rely on JavaScript history for critical nav — use explicit href.

================================================================================
DEAD LINK PATTERNS
================================================================================

PATTERN D1 — AIO page link returns 404
────────────────────────────────────────
Symptom:     Clicking a Set List or Song List link from the switchboard or
             128-nav returns a 404 page.
Probable cause: URL slug changed (hyphenation, word order) but link was not updated.
                OR page was deleted without redirect.
Fastest fix: Check MASTER_URL_AUTHORITY_REGISTRY for current canonical slug.
             Update the dead link to canonical slug.
             If page genuinely missing: escalate to Tom — BLOCKS deployment.

────────────────────────────────────────────────────────────────────────────────

PATTERN D2 — Chapter page link returns 404
────────────────────────────────────────────
Symptom:     Clicking a Songbook chapter from the nav returns 404.
Probable cause: Chapter URL uses old format (/N-35-title/) but page now
                lives at (/N-of-35-title/) or vice versa. Or chapter was
                renumbered and old link was not retired.
Fastest fix: Confirm current chapter slug in MASTER_URL_AUTHORITY_REGISTRY.
             If slug changed: add 301 redirect from old slug to new slug.
             Update nav link to new slug.
SGC-1 signal: STATUS_MISMATCH flag — expected LIVE, got 404.

────────────────────────────────────────────────────────────────────────────────

PATTERN D3 — Quicklink returns 404
────────────────────────────────────
Symptom:     A quicklink panel item returns 404 when clicked.
Probable cause: Quicklink target URL was updated in the main page but
                not in the quicklink panel. Or quicklink points to
                a placeholder that was never published.
Fastest fix: Update quicklink href to current canonical URL.
             If destination is a placeholder: change quicklink label to
             "Coming Soon" or remove from panel.

────────────────────────────────────────────────────────────────────────────────

PATTERN D4 — Download / PDF link returns 404
──────────────────────────────────────────────
Symptom:     User clicks download link. Gets 404 or file not found error.
Probable cause: File moved, renamed, or deleted from server. Link not updated.
Fastest fix: Locate current file at correct path. Update href.
             If file is genuinely gone: remove link or replace with
             "not currently available" label.

================================================================================
DUPLICATE ANCHOR PATTERNS
================================================================================

PATTERN U1 — Two sections scroll to same place
────────────────────────────────────────────────
Symptom:     Clicking nav links for two different sections both scroll to
             the same position on the page.
Probable cause: Both sections have the same id value. Browser resolves to
                first occurrence for both links. Second link effectively broken.
Fastest fix: Search page HTML for duplicate id values (browser DevTools → 
             Elements → Ctrl+F → search id=). Rename the second instance.
             Update all links to the renamed ID.
SGC-1 signal: Not directly detected — manual pass required on 128-nav.

────────────────────────────────────────────────────────────────────────────────

PATTERN U2 — Switchboard quicklink goes to same place as main link
────────────────────────────────────────────────────────────────────
Symptom:     Two quicklink entries in switchboard both navigate to the
             same section or page.
Probable cause: Two quicklinks have the same href value. May be intentional
                (aliases) or a copy-paste error.
Fastest fix: Verify intent with Tom. If duplicate is unintentional: remove
             or correct the duplicate href. If intentional: add distinguishing
             label to each quicklink.

================================================================================
GATE FAILURE PATTERNS
================================================================================

PATTERN G1 — R+ page loads content before gate fires
──────────────────────────────────────────────────────
Symptom:     Visiting an R/NC-17/X page directly shows content briefly
             (flash of content) before the gate overlay appears.
Probable cause: Gate JavaScript loads after page content renders.
                Content is in DOM before gate script executes.
Fastest fix: Move gate script to <head> or add CSS that hides content
             by default (visibility:hidden or display:none) until gate
             explicitly shows it. Gate fires → CSS override shows content.
Risk level:  CRITICAL — content is briefly accessible without age check.

────────────────────────────────────────────────────────────────────────────────

PATTERN G2 — Gate appears but is bypassable with browser Back
──────────────────────────────────────────────────────────────
Symptom:     User hits gate, presses browser Back, then Forward — lands
             directly on content without seeing gate again.
Probable cause: Gate state stored in sessionStorage or memory only. Browser
                cache serves the post-gate state. No server-side enforcement.
Fastest fix: Store gate pass state in sessionStorage but also check on page
             load even if session exists. Ensure gate re-checks on popstate
             event (browser back/forward navigation).
Risk level:  CRITICAL for X/NC-17 — gate bypass = unprotected content access.

────────────────────────────────────────────────────────────────────────────────

PATTERN G3 — Gate present but wrong tier
──────────────────────────────────────────
Symptom:     An NC-17 page shows the PG-13 gate (soft acknowledgment) instead
             of the NC-17/X gate (harder age check).
Probable cause: Gate JS reads rating from wrong source. Or page metadata
                contains wrong rating value that gate logic consumes.
Fastest fix: Verify page metadata block CONTENT_RATING field matches
             MASTER_CONTENT_RATINGS_INDEX. If page metadata is wrong: correct it.
             If gate logic has hardcoded tier values: check gate decision tree.

────────────────────────────────────────────────────────────────────────────────

PATTERN G4 — Gate missing entirely on R+ page
───────────────────────────────────────────────
Symptom:     R/NC-17/X rated page loads with no gate prompt at all.
             Content fully visible to any visitor.
Probable cause: Gate script not included on page. Or gate script included
                but condition never evaluates to "show gate" (logic bug).
                Or page was regenerated without gate integration point.
Fastest fix: Verify gate <script> tag is present in page <head>.
             Check gate condition — ensure it evaluates true for this rating.
             If page was regenerated: re-add gate integration points.
SGC-1 signal: has_js_gate=False + rating=R/NC-17/X → GATE_MISSING flag raised.
Blocker:     BLOCKS deployment. Create BLOCK-L entry immediately.

================================================================================
NAV DRIFT PATTERNS
================================================================================

PATTERN N1 — Chapter nav shows wrong number
────────────────────────────────────────────
Symptom:     128-nav or switchboard displays "Chapter 19" but clicking it
             goes to /18-of-35-.../ (URL says 18).
Probable cause: Chapter drift. URL slug number ≠ nav label number.
                Known instance: BLOCK-H02 (Chapter 18/19 delta = +1).
Fastest fix: Tom decision required. Option A: rename slug to /19-of-35-.../.
             Option B: update nav label to say "Chapter 18 of 35."
             Do not resolve autonomously.
SGC-1 signal: conflict_type=CHAPTER_DRIFT, known_blocker_id=BLOCK-H02.

────────────────────────────────────────────────────────────────────────────────

PATTERN N2 — Nav link present but page is a placeholder
─────────────────────────────────────────────────────────
Symptom:     User clicks a nav link expecting content. Gets a placeholder /
             coming-soon page instead.
Probable cause: Page was added to nav before it launched. Nav not cleaned
                up after planned launch date passed without the page going live.
Fastest fix: If page is intentionally still coming: update nav label to
             indicate "Coming Soon" or remove from primary nav.
             If page should be live: escalate — it's a missing page (BLOCKS).

────────────────────────────────────────────────────────────────────────────────

PATTERN N3 — Two nav links go to same AIO page
────────────────────────────────────────────────
Symptom:     Two different nav items (e.g. "Song List 1" and "The Last Man
             Singing") both navigate to the same /song-list-1/ AIO page.
Probable cause: One nav entry uses the slug, another uses the title as href.
                Intentional alias OR copy-paste error in nav.
Fastest fix: Verify with Tom whether both links are intentional.
             If duplicate: remove redundant entry or distinguish labels clearly.

────────────────────────────────────────────────────────────────────────────────

PATTERN N4 — Lady Weaver appears twice in nav
──────────────────────────────────────────────
Symptom:     Two Lady Weaver entries in chapter nav, pointing to different URLs.
             Both may or may not be live. User confused which is canonical.
Probable cause: BLOCK-H04 — /20-35-the-lady-weaver/ vs /36-35-lady-weaver/
                Both slugs in registry. Nav may reference either or both.
Fastest fix: Do not fix autonomously. Flag as BLOCK-H04 instance.
             Tom selects canonical URL. Non-canonical gets 301 redirect.
             Remove non-canonical from nav after Tom decision.
SGC-1 signal: conflict_type=URL_DUPLICATE, known_blocker_id=BLOCK-H04.

================================================================================
MOBILE OVERLAP FAILURES
================================================================================

PATTERN M1 — Gate overlay not full-screen on mobile
──────────────────────────────────────────────────────
Symptom:     On mobile, content is visible around edges of gate overlay.
             Gate appears to float in the center instead of covering viewport.
Probable cause: Gate CSS uses fixed px dimensions instead of 100vw/100vh.
                Or z-index is insufficient on mobile browser.
Fastest fix: Set gate CSS: width:100vw; height:100vh; position:fixed;
             top:0; left:0; z-index:9999;
             Test on 375px viewport before shipping.

────────────────────────────────────────────────────────────────────────────────

PATTERN M2 — Fast-scroll buttons obscured by mobile browser chrome
───────────────────────────────────────────────────────────────────
Symptom:     On mobile, the ↑top button is hidden behind the browser's
             address bar or navigation chrome at bottom of screen.
Probable cause: Button positioned with fixed bottom: 0 — lands under browser
                UI on iOS Safari or Chrome Android.
Fastest fix: Add bottom: 60px (or env(safe-area-inset-bottom)) to
             fast-scroll button CSS. Test on real device or simulator.

────────────────────────────────────────────────────────────────────────────────

PATTERN M3 — Quicklink panel overflows on narrow screen
─────────────────────────────────────────────────────────
Symptom:     Quicklink panel items run off the right edge of screen on mobile.
             User must scroll horizontally to see all options.
Probable cause: Quicklinks laid out in a horizontal flex row without
                wrapping. Works on desktop, breaks at narrow viewport.
Fastest fix: Add flex-wrap: wrap to quicklink container CSS.
             Or switch to vertical stack at <480px breakpoint.

────────────────────────────────────────────────────────────────────────────────

PATTERN M4 — 128-nav section text unreadable on mobile
────────────────────────────────────────────────────────
Symptom:     Section labels in 128-nav are too small to read on mobile.
             Text is cut off or overflows its container.
Probable cause: Font size set in px that doesn't scale. Or container has
                overflow:hidden that clips long section names.
Fastest fix: Ensure font-size uses rem not px for section labels.
             Set overflow:visible or add text-overflow:ellipsis with
             title attribute containing full text.

────────────────────────────────────────────────────────────────────────────────

PATTERN M5 — Rating badge overlaps title on mobile
────────────────────────────────────────────────────
Symptom:     On mobile AIO page, the rating badge sits on top of the
             collection title or bleeds off the edge of the card.
Probable cause: Badge positioned absolutely relative to a container that
                collapses at narrow widths. Desktop layout assumes wider card.
Fastest fix: Switch badge to position:relative on mobile breakpoint.
             Or float:right with clearfix on the title element.

================================================================================
QUICK LOOKUP TABLE
================================================================================

SYMPTOM KEYWORD          | PATTERN  | VERDICT
-------------------------|----------|--------
Fast-scroll does nothing | A1       | Add missing anchor IDs
Scrolls to wrong place   | A2, U1   | Find and remove duplicate IDs
404 on AIO page          | D1       | Check registry for current slug
404 on chapter           | D2       | Check slug format / add redirect
404 on quicklink         | D3       | Update href to current URL
Gate bypassed (Back btn) | G2       | Fix popstate / sessionStorage logic
Flash of content pre-gate| G1       | Move gate script to <head>
Gate missing entirely    | G4       | CRITICAL — add gate script
Wrong gate tier          | G3       | Fix page metadata CONTENT_RATING
Chapter shows wrong #    | N1       | Tom decision (BLOCK-H02)
Lady Weaver duplicate    | N4       | Tom decision (BLOCK-H04)
Gate not full-screen mob | M1       | Fix CSS to 100vw/100vh/fixed
Scroll button hidden mob | M2       | Add safe-area-inset-bottom
Quicklinks overflow mob  | M3       | Add flex-wrap: wrap

================================================================================
END COLLABTUNES LIVE SITE FAILURE PATTERN INDEX
================================================================================
