Corrective Action: RPG Walkthrough Microsite Shipped with 44% Broken URLs
Date: March 16, 2026 Category: Verification Failure (Cross-System Assumption) Impact: 7 of 16 URLs broken in production RPG walkthrough microsite; Chris caught them manually Resolution Time: Same session — URLs corrected after filesystem and Sanity verification
Incident
What Happened
The RPG walkthrough microsite was built by a multi-agent pipeline (Oracle providing methodology content, Sage providing relationship framing, Concierge-Consulting providing URL recommendations, and the builder agent assembling the final JSX). The microsite shipped to production with 7 of 16 external URLs pointing to nonexistent pages on valuefirstteam.com. Chris found the broken links during review.
The broken URLs fell into two categories:
- Wrong path prefix:
/articles/slugand/shows/sluginstead of/media/articles/slugand/media/shows/slug - Nonexistent top-level routes:
/value-pathand/unified-viewsinstead of/what-we-solve/the-value-pathand/presentations/four-unified-views
Timeline
| Time | Event |
|---|---|
| Session start | Multi-agent pipeline generates RPG walkthrough microsite content |
| Build | Builder agent assembles JSX with URLs from methodology agents |
| Deploy | Microsite pushed to production on valuefirstteam.com |
| Chris review | 7 broken URLs identified in production |
| Fix | URLs corrected via filesystem check + Sanity slug verification |
Root Cause
Three agents (Oracle, Sage, Concierge-Consulting) provided URL recommendations based on methodology knowledge and logical assumptions about URL structure. The builder agent consumed these URLs without verification. No agent in the pipeline checked whether the URLs resolved to actual pages.
The mechanism: agents inferred URL paths from domain knowledge ("articles are typically at /articles/") rather than verifying against the actual website route structure (apps/website/src/pages/ shows articles live at /media/articles/). This is the same pattern as guessing HubSpot property existence from record null values, or assuming calendar invitees are attendees.
Category: Verification Failure (Cross-System Assumption)
This is a recurring pattern class in this system: assuming data from one system (methodology knowledge, framework docs, Sanity schemas) accurately represents the state of another system (live website routes, HubSpot properties, Google Calendar attendance). The assumption feels correct because it is plausible. Plausibility is not verification.
Specific URL failures:
| Generated URL | Actual Route | Why the Assumption Felt Correct |
|---|---|---|
/articles/slug |
/media/articles/slug |
Most websites serve articles at /articles/ |
/shows/slug |
/media/shows/slug |
Show names are intuitive top-level paths |
/value-path |
/what-we-solve/the-value-path |
Value Path is a core concept — surely it has a clean URL |
/unified-views |
/presentations/four-unified-views |
Unified Views is a framework — likely has its own page |
Every one of these is a training data pattern. Training data says articles live at /articles/. This website organizes them under /media/articles/. The only way to know the difference is to check.
Fix Applied
Immediate Resolution
All 7 URLs corrected to match actual routes. Verification was performed against two sources:
- Filesystem:
apps/website/src/pages/directory structure confirms/media/articles/,/media/shows/,/what-we-solve/,/presentations/as the real route prefixes - Sanity CMS:
scripts/sanity/query.jsconfirmed article and show slugs exist in the content database
Code/Configuration Changes
| File | Change |
|---|---|
| RPG walkthrough JSX | 7 URLs corrected: /articles/ to /media/articles/, /shows/ to /media/shows/, /value-path to /what-we-solve/the-value-path, /unified-views to /presentations/four-unified-views |
Verification
Each corrected URL verified to resolve to a real page by checking the corresponding file exists in apps/website/src/pages/ or matches a dynamic route pattern with confirmed Sanity content.
Prevention Measures
Rules Added
| Layer | File | Rule |
|---|---|---|
| Enforcement | skills/enforcement/vf-self-correction.md |
Infrastructure Trigger: Writing valuefirstteam.com URLs without verifying against apps/website/src/pages/ directory structure |
| Incident Log | agents/instruction-optimizer/data/incident-log.json |
Incident logged for pattern analysis |
Detection Triggers
Added to vf-self-correction.md Infrastructure Triggers:
If you're writing a URL to valuefirstteam.com without checking the route exists in
apps/website/src/pages/— you are assuming URL structure from training data. Articles are at/media/articles/, shows at/media/shows/. There is no/articles/,/shows/,/value-path, or/unified-viewsroute. Check the filesystem or Dewey index (111) before writing any internal URL.
Future Prevention
- Any agent generating content with valuefirstteam.com links must verify each URL against the actual route structure (Dewey 111:
apps/website/src/pages/) - After writing any JSX/HTML with external links, run a verification pass checking each href against known routes
- The Dewey index (111) already documents the website route structure — agents should consult it before generating URLs
Lessons
Any time an agent generates content that references an external system — URLs, HubSpot properties, API endpoints, calendar data — the reference must be verified against the actual system, not assumed from domain knowledge. Training data patterns ("articles are usually at /articles/") are wrong often enough to require verification every time. This is not a new principle; it is the same principle behind every verification failure in this system's history. The pattern keeps recurring because the assumptions feel correct. Plausibility is the enemy of verification.
Related Incidents
| Date | Incident | Same Pattern |
|---|---|---|
| Mar 8, 2026 | Calendar invitees reported as attendees | Assumed one system (Calendar invites) represented another (actual attendance from transcripts) |
| Mar 10, 2026 | Paragon account data drift | Assumed HubSpot records created correctly at setup remained correct 6 weeks later |
| Mar 14, 2026 | All-Hands duplicate properties | Assumed null property values meant property doesn't exist (null = no data, not nonexistent) |
| Mar 11, 2026 | Sanity write post-compaction | Assumed remembered procedure was correct after context compaction |
| Mar 12, 2026 | HubSpot course integrity | Assumed TypeScript types matched live HubSpot schema without verification |
All five share the root mechanism: knowledge from System A was assumed to be accurate in System B without cross-system verification.