Verification

Does everything actually work?

CollectSEA checks itself in production every two hours, and every release is tested end to end against the live site in a real browser. Results are published here as they come, failures included.

Five layers of testing

From every commit to every two hours in production. Test traffic identifies itself and is left out of the usage figures.

  1. Step 1Unit and integration testsClassifier, matcher, benchmark floor, server rendering, MCP protocol and telemetry privacy. They gate every deploy.
  2. Step 2Staging load testConcurrent page, API and analysis requests against a pre-release copy must all succeed.
  3. Step 3Live release suitesEvery route, API endpoint and MCP tool over HTTP, plus real visitor journeys in Chrome.
  4. Step 4Self-checks every 2 hoursThe platform tests itself in production and publishes the result on this page.
  5. Step 5Uptime probesPages, analysis and MCP are probed twice an hour from outside; failures alert the maintainer.

Continuous production self-checks

Last run on release 2026.10.17-seo-visuals: 16 of 17 checks passed in 3.1 s. Machine-readable: /api/verification.

125 of 140 recorded runs passed every check.

  1. 2026-10-10T14:00:24.717Z: 17 of 17 passed
  2. 2026-10-10T16:01:27.085Z: 17 of 17 passed
  3. 2026-10-10T18:01:21.698Z: 17 of 17 passed
  4. 2026-10-10T20:01:16.399Z: 17 of 17 passed
  5. 2026-10-11T00:27:55.978Z: 17 of 17 passed
  6. 2026-10-11T02:20:21.570Z: 17 of 17 passed
  7. 2026-10-11T04:41:11.641Z: 17 of 17 passed
  8. 2026-10-11T06:40:59.770Z: 17 of 17 passed
  9. 2026-10-11T18:40:32.466Z: 17 of 17 passed
  10. 2026-10-11T20:40:31.944Z: 17 of 17 passed
  11. 2026-10-11T22:40:55.525Z: 17 of 17 passed
  12. 2026-10-12T00:40:45.358Z: 17 of 17 passed
  13. 2026-10-12T02:40:46.473Z: 17 of 17 passed
  14. 2026-10-12T04:40:44.563Z: 17 of 17 passed
  15. 2026-10-12T06:40:52.616Z: 17 of 17 passed
  16. 2026-10-12T08:41:18.061Z: 16 of 17 passed
  17. 2026-10-12T10:41:08.849Z: 17 of 17 passed
  18. 2026-10-12T12:41:23.054Z: 17 of 17 passed
  19. 2026-10-12T14:41:24.484Z: 17 of 17 passed
  20. 2026-10-12T16:41:28.665Z: 16 of 17 passed
  21. 2026-10-12T18:41:19.602Z: 16 of 17 passed
  22. 2026-10-12T20:41:04.307Z: 17 of 17 passed
  23. 2026-10-12T22:40:53.440Z: 17 of 17 passed
  24. 2026-10-13T00:40:39.417Z: 17 of 17 passed
  25. 2026-10-13T02:40:47.118Z: 17 of 17 passed
  26. 2026-10-13T04:40:43.925Z: 17 of 17 passed
  27. 2026-10-13T06:42:44.259Z: 17 of 17 passed
  28. 2026-10-13T08:41:15.452Z: 16 of 17 passed
  29. 2026-10-13T10:41:28.927Z: 17 of 17 passed
  30. 2026-10-13T12:44:15.748Z: 17 of 17 passed
  31. 2026-10-13T16:43:58.772Z: 16 of 17 passed
  32. 2026-10-13T20:41:52.330Z: 17 of 17 passed
  33. 2026-10-13T22:41:12.903Z: 17 of 17 passed
  34. 2026-10-14T00:40:14.184Z: 17 of 17 passed
  35. 2026-10-14T02:41:01.876Z: 17 of 17 passed
  36. 2026-10-14T04:41:02.610Z: 16 of 17 passed
  37. 2026-10-14T06:41:02.682Z: 17 of 17 passed
  38. 2026-10-14T08:41:03.562Z: 17 of 17 passed
  39. 2026-10-14T10:41:02.702Z: 17 of 17 passed
  40. 2026-10-14T12:41:02.643Z: 16 of 17 passed
  41. 2026-10-14T14:41:06.562Z: 16 of 17 passed
  42. 2026-10-14T16:41:03.726Z: 16 of 17 passed
  43. 2026-10-14T18:41:05.700Z: 17 of 17 passed
  44. 2026-10-14T20:41:03.834Z: 17 of 17 passed
  45. 2026-10-14T22:41:01.062Z: 17 of 17 passed
  46. 2026-10-15T00:41:01.185Z: 16 of 17 passed
  47. 2026-10-15T01:59:22.173Z: 17 of 17 passed
  48. 2026-10-15T02:40:40.601Z: 17 of 17 passed
  49. 2026-10-15T04:40:40.303Z: 17 of 17 passed
  50. 2026-10-15T06:40:23.517Z: 17 of 17 passed
  51. 2026-10-15T08:40:22.524Z: 17 of 17 passed
  52. 2026-10-15T10:40:22.172Z: 17 of 17 passed
  53. 2026-10-15T12:40:22.655Z: 17 of 17 passed
  54. 2026-10-15T14:40:36.766Z: 17 of 17 passed
  55. 2026-10-15T16:40:34.257Z: 17 of 17 passed
  56. 2026-10-15T18:40:34.857Z: 17 of 17 passed
  57. 2026-10-15T20:40:31.261Z: 17 of 17 passed
  58. 2026-10-15T22:40:28.268Z: 17 of 17 passed
  59. 2026-10-16T00:40:29.658Z: 17 of 17 passed
  60. 2026-10-16T02:40:31.534Z: 17 of 17 passed
  61. 2026-10-16T04:40:29.672Z: 17 of 17 passed
  62. 2026-10-16T06:40:29.710Z: 17 of 17 passed
  63. 2026-10-16T08:40:30.739Z: 17 of 17 passed
  64. 2026-10-16T10:40:31.803Z: 16 of 17 passed
  65. 2026-10-16T12:40:36.872Z: 17 of 17 passed
  66. 2026-10-16T14:40:36.066Z: 17 of 17 passed
  67. 2026-10-16T16:40:34.114Z: 17 of 17 passed
  68. 2026-10-16T18:40:35.215Z: 17 of 17 passed
  69. 2026-10-16T20:40:30.474Z: 17 of 17 passed
  70. 2026-10-16T22:40:28.914Z: 17 of 17 passed
  71. 2026-10-17T00:40:27.955Z: 17 of 17 passed
  72. 2026-10-17T02:40:35.500Z: 17 of 17 passed
  73. 2026-10-17T04:40:31.138Z: 17 of 17 passed
  74. 2026-10-17T06:40:30.855Z: 16 of 17 passed
  75. 2026-10-17T08:40:30.092Z: 17 of 17 passed
  76. 2026-10-17T10:40:30.629Z: 17 of 17 passed
  77. 2026-10-17T12:40:34.616Z: 17 of 17 passed
  78. 2026-10-17T14:40:33.748Z: 17 of 17 passed
  79. 2026-10-17T16:40:35.188Z: 17 of 17 passed
  80. 2026-10-17T18:40:34.334Z: 17 of 17 passed
  81. 2026-10-17T20:40:28.972Z: 17 of 17 passed
  82. 2026-10-17T22:40:29.255Z: 17 of 17 passed
  83. 2026-10-18T00:40:29.310Z: 16 of 17 passed
  84. 2026-10-18T02:40:29.896Z: 16 of 17 passed

Slowest checks in the latest run

Measured duration in milliseconds, including failed checks. This measures the self-check run, not visitor page-load speed.

  • Refund agent → duplicate-charge and approval precedents486 ms
  • Agent reading GitHub issues → prompt-injection safeguard458 ms
  • MCP server negotiates the protocol445 ms
  • Cloud cleanup job → deletion-without-recovery precedents405 ms
  • Unrelated design returns no padded results390 ms
  • Home page is server-rendered with the analyzer353 ms
All 17 checks in the latest run
CheckAreaObservedTimeResult
Home page is server-rendered with the analyzerPagesHeadline, analyzer and hydration data present353 msPass
Incident page shows the record and its sourcePagesCrowdStrike record with source link5 msPass
Failure-pattern page lists real incidentsPagesPrompt-injection pattern links its incidents15 msPass
Framework crosswalk page renders every itemPagesOWASP Agentic ASI01–ASI10 present8 msPass
Unknown pages return a real 404Search enginesHTTP 404 with noindex6 msPass
Old URLs redirect permanentlySearch engines/stats → 301 /impact0 msPass
Pages carry canonical URLs and structured dataSearch enginesCanonical URL and Article JSON-LD9 msPass
Sitemap lists documented incidentsSearch engines179 URLs4 msPass
Refund agent → duplicate-charge and approval precedentsAnalysis6 precedents · Hybrid486 msPass
Agent reading GitHub issues → prompt-injection safeguardAnalysisSafeguard for indirect prompt injection among 5458 msPass
Cloud cleanup job → deletion-without-recovery precedentsAnalysis6 precedents405 msPass
Unrelated design returns no padded resultsAnalysisCoverage "none", 0 matches390 msPass
MCP server negotiates the protocolMCPprotocolVersion 2025-06-18445 msPass
MCP analyze_design returns structured precedentsMCP3 precedents341 msPass
Public API serves the corpusAPI & data1649 records4 msPass
Dataset downloads in CSVAPI & data1649 rows3 msPass
Advisory feeds refreshed recentlyOperationsfeeds stale186 msFail

Release test report

Run against https://collectsea.com on 2026-10-17 (release 2026.10.17-seo-visuals, commit b6e5100; Google Chrome (headless) via Playwright, macOS; HTTP suite on Node v26.7.0). 137 of 137 live cases passed; 263 of 263 automated unit and integration tests passed.

HTTP suite: pages, search engines, analysis, MCP, API and security

Every public route, redirect, API endpoint and MCP tool, called over the internet like a client would.

77/77 passed

Pages 16/16

Search engines 19/19

Analysis 11/11

MCP 11/11

API & data 12/12

Security 4/4

Performance 1/1

Existing apps 3/3

Every case, with what was expected and observed
IDTestExpectedObservedResult
P-01/ renders on the serverPagesHTTP 200, server-rendered content contains "Learn from real software failures"HTTP 200 in 562 ms, 79 KB of HTMLPass
P-02/incidents renders on the serverPagesHTTP 200, server-rendered content contains "How real software and AI systems failed"HTTP 200 in 109 ms, 179 KB of HTMLPass
P-03/incidents/SEA-SEC-003 renders on the serverPagesHTTP 200, server-rendered content contains "CrowdStrike"HTTP 200 in 98 ms, 46 KB of HTMLPass
P-04/incidents/SEA-AI-001 renders on the serverPagesHTTP 200, server-rendered content contains "Replit"HTTP 200 in 59 ms, 59 KB of HTMLPass
P-05/patterns renders on the serverPagesHTTP 200, server-rendered content contains "The 14 ways software keeps failing"HTTP 200 in 74 ms, 184 KB of HTMLPass
P-06/patterns/duplicate-action-after-timeout renders on the serverPagesHTTP 200, server-rendered content contains "Duplicate action after an ambiguous result"HTTP 200 in 71 ms, 72 KB of HTMLPass
P-07/frameworks renders on the serverPagesHTTP 200, server-rendered content contains "Standards, mapped to the incidents behind them"HTTP 200 in 55 ms, 26 KB of HTMLPass
P-08/frameworks/nist-sp-800-53 renders on the serverPagesHTTP 200, server-rendered content contains "SA-15(8)"HTTP 200 in 60 ms, 144 KB of HTMLPass
P-09/impact renders on the serverPagesHTTP 200, server-rendered content contains "Who CollectSEA reaches"HTTP 200 in 1459 ms, 93 KB of HTMLPass
P-10/verification renders on the serverPagesHTTP 200, server-rendered content contains "Does everything actually work?"HTTP 200 in 239 ms, 222 KB of HTMLPass
P-11/integrations renders on the serverPagesHTTP 200, server-rendered content contains "claude mcp add"HTTP 200 in 41 ms, 38 KB of HTMLPass
P-12/docs renders on the serverPagesHTTP 200, server-rendered content contains "API and MCP reference"HTTP 200 in 69 ms, 54 KB of HTMLPass
P-13/methodology renders on the serverPagesHTTP 200, server-rendered content contains "How CollectSEA finds precedents"HTTP 200 in 155 ms, 66 KB of HTMLPass
P-14/dataset renders on the serverPagesHTTP 200, server-rendered content contains "The CollectSEA incident dataset"HTTP 200 in 64 ms, 83 KB of HTMLPass
P-15/changelog renders on the serverPagesHTTP 200, server-rendered content contains "What has changed"HTTP 200 in 44 ms, 30 KB of HTMLPass
P-16/about renders on the serverPagesHTTP 200, server-rendered content contains "Software keeps failing the same ways"HTTP 200 in 42 ms, 39 KB of HTMLPass
S-01Canonical URL, description and Open Graph tagsSearch enginesEach page has canonical, description, og:image (PNG)canonical, description and og:image presentPass
S-02Structured data on home and incident pagesSearch enginesFAQPage, SoftwareApplication, Article and BreadcrumbList JSON-LDAll expected schema.org types presentPass
S-03Dataset page is discoverable by Google Dataset SearchSearch enginesschema.org Dataset with license and downloadsDataset with CC BY 4.0 license and 3 downloadsPass
S-04Unknown page returns 404Search enginesHTTP 404 with noindexHTTP 404, noindexPass
S-05Unknown incident ID returns 404Search enginesHTTP 404HTTP 404Pass
S-06https://www.collectsea.com/incidents redirects permanentlySearch engines301 → https://collectsea.com/incidents301 → https://collectsea.com/incidentsPass
S-07https://docs.collectsea.com/ redirects permanentlySearch engines301 → https://collectsea.com/docs301 → https://collectsea.com/docsPass
S-08/stats redirects permanentlySearch engines301 → /impact301 → /impactPass
S-09/research redirects permanentlySearch engines301 → /methodology#evaluation301 → /methodology#evaluationPass
S-10/incidents?id=SEA-SEC-003 redirects permanentlySearch engines301 → /incidents/SEA-SEC-003301 → /incidents/SEA-SEC-003Pass
S-11/incidents/sea-sec-003 redirects permanentlySearch engines301 → /incidents/SEA-SEC-003301 → /incidents/SEA-SEC-003Pass
S-12/patterns/SEA-FM-004 redirects permanentlySearch engines301 → /patterns/indirect-prompt-injection301 → /patterns/indirect-prompt-injectionPass
S-13/incidents/ redirects permanentlySearch engines301 → /incidents301 → /incidentsPass
S-14Sitemap lists every documented incident, pattern and frameworkSearch enginesValid XML with ≥ 80 URLs; no advisories or private pages179 URLsPass
S-15robots.txt points to the sitemapSearch enginesSitemap directive; /review disallowedSitemap and Disallow presentPass
S-16llms.txt summarises the site for AI assistantsSearch enginesLists patterns, frameworks and incidents160 linesPass
S-17Atom feed of new incidentsSearch enginesValid Atom with entries50 entriesPass
S-18Social preview imageSearch enginesPNG served at 1200×630PNG 1200×630Pass
S-19Product tour videoSearch enginesBoth MP4 renditions and the poster are served; byte ranges return 206 (required by Safari); VideoObject on home1080p 16.9 MB, 720p 7.7 MB; poster and VideoObject presentPass
A-01Refund agent designAnalysisPrecedents with idempotency or approval-boundary patterns; coverage strong6 precedents, coverage strong, 630 msPass
A-02Agent reading public GitHub issuesAnalysisGitHub/Supabase MCP prompt-injection incidents; prompt-injection safeguardMatched SEA-AI-003, SEA-AI-004, SEA-AI-007, SEA-AI-008Pass
A-03Global configuration pushAnalysisCDN/edge outage precedents (Cloudflare, Fastly, CrowdStrike)SEA-SEC-003, SEA-POST-006, SEA-POST-005, SEA-SEC-010Pass
A-04Cloud cleanup jobAnalysisDeletion-without-recovery precedents (GitLab, Atlassian, UniSuper)SEA-POST-009, SEA-POST-004, SEA-POST-010, SEA-SEC-012Pass
A-05Multi-tenant shared cacheAnalysisA cross-tenant precedent in the top 3SEA-PUB-059, SEA-CVE-2026-108606, SEA-SEC-015Pass
A-06Unrelated design is not paddedAnalysisNo precedents; coverage "none"coverage none, 0 matchesPass
A-07Semantic retrieval activeAnalysisretrieval_algorithm reports Workers AI embeddingsHybrid: Workers AI embeddings (bge-base-en-v1.5) + Weighted Capability OverlapPass
A-08At most one illustrative scenario per resultAnalysis≤ 1 SEA-PUB record among matches1 illustrative of 10Pass
A-09Exclusion list for "show more precedents"AnalysisExcluded IDs never returnedSEA-POST-001 excludedPass
A-10Input validationAnalysisEmpty → 400, malformed JSON → 400, oversize → 413400 / 400 / 413Pass
A-11Legacy "idea" field still acceptedAnalysisHTTP 200 with matchesHTTP 200Pass
M-01initialize negotiates the protocol versionMCPEchoes 2025-06-18; serverInfo and instructions presentserver 2026.10.17-seo-visualsPass
M-02Notifications acknowledgedMCPHTTP 202 without bodyHTTP 202Pass
M-03GET for SSE stream refusedMCPHTTP 405 (stateless server)HTTP 405Pass
M-04tools/listMCP6 read-only tools with input schemasanalyze_design, analyze_existing_app, search_incidents, get_incident, list_failure_patterns, get_safeguardsPass
M-05analyze_designMCPMarkdown summary plus structured precedents4 precedentsPass
M-06search_incidentsMCPKeyword search returns CrowdStrike for "channel file"70 resultsPass
M-07get_incidentMCPFull record with source for SEA-POST-009GitLab record returnedPass
M-08list_failure_patternsMCP14 patterns14 patternsPass
M-09get_safeguardsMCPAGENTS.md content citing precedents6283 charactersPass
M-10Errors are reported correctlyMCPUnknown tool → -32602; unknown method → -32601; bad JSON → 400-32602 / -32601 / 400Pass
M-11Legacy endpoint and tool namesMCP/api/mcp with analyze_architecture_proposal worksworksPass
D-01Health endpoint (deployment contract)API & datastatus operational with corpus counts1649 records, feeds healthyPass
D-02Incident list (full and summary views)API & dataincidents array; summary view is smaller1649 records; summary 927 KB vs full 7631 KBPass
D-03Single record and unknown recordAPI & data200 for SEA-SEC-003, 404 for unknown200 / 404Pass
D-04Patterns and frameworks endpointsAPI & data14 patterns; 7 frameworks14 patterns, 7 frameworksPass
D-05OpenAPI schemaAPI & dataOpenAPI 3.1 with analyzeDesign operation11 pathsPass
D-06Dataset download (JSON)API & dataAttachment with all served records7631 KBPass
D-07Dataset download (CSV)API & dataAttachment with all served records1844 KBPass
D-08Dataset download (JSONL)API & dataAttachment with all served records2281 KBPass
D-09Impact report and CSVAPI & dataJSON report with 30 daily points; CSV headertracking since 2026-10-01Pass
D-10Self-check results publishedAPI & dataLatest run with all checks passing17/17 at 2026-10-17T18:40Pass
D-11Feedback validationAPI & dataMissing message → 400; record report needs a valid ID → 400400 / 400Pass
D-12Unknown API routeAPI & dataJSON 404 listing endpointsJSON 404Pass
O-01Security headers on pagesSecurityCSP with script hash, HSTS, nosniff, frame protectionCSP (no unsafe-inline scripts), HSTS, nosniff, X-Frame-OptionsPass
O-02Private review API rejects unauthorized requestsSecurityHTTP 401 without token or 503 when review is disabledHTTP 401: unauthorized or disabledPass
O-03Manual feed sync requires a tokenSecurityHTTP 401 without tokenHTTP 401Pass
O-04Record text cannot inject scriptSecurityRecord page escapes HTML in dataEmbedded data escapes "<"Pass
O-05Pages served quickly under concurrencyPerformance40 parallel page and API requests succeed; median < 1.5 s0 failures; median 286 ms, max 693 msPass
A-EX-01Files-only existing-app analysisExisting appsReturns source context, app mode and refund behavior4 precedents; submitted source and evidence limits returnedPass
M-EX-01MCP existing-app toolExisting appsReturns structured app context and safeguards to verifyMCP app review returns precedents, safeguards and evidence limitsPass
A-EX-02Public repository context importExisting appsReturns inspectable files and a pinned public repository revision3 selected files at dd32ce8; arbitrary host rejectedPass

Browser suite: real user journeys in Google Chrome

Desktop and mobile flows driven by Playwright, with screenshots as evidence.

43/43 passed

Home 3/3

Analysis 7/7

Incidents 5/5

Patterns 2/2

Frameworks 1/1

Integrations 1/1

Navigation 2/2

Accessibility 3/3

Mobile 2/2

Feedback 1/1

Data 1/1

Transparency 1/1

Errors 1/1

Motion 1/1

Existing apps 11/11

Quality 1/1

Every case, with what was expected and observed
IDTestExpectedObservedResult
U-01Home page loads and hydrates without errorsHomeHero, analyzer and corpus figures visible; no console errorsHydrated cleanly; figures: Documented incidents0Postmortems, filings, court recordsLive security advisories…screenshotPass
U-02Live behavior detection while typingHomeDetected capability chips appear under the inputRuns code or shell commands; Changes infrastructure; Changes data; Handles credentials or secrets; AI agent that calls toolsscreenshotPass
U-03Example prompts run an editable analysisHomeClicking "Cloud cleanup job" opens results with an editable proposalA nightly background job that finds unused cloud databases and virtual machines and deletes them to save cost.screenshotPass
U-04Run an analysis end to endAnalysisSafeguards, ranked precedents and profile panel render5 safeguards, 8 precedents; proposal kept out of the URLscreenshotPass
U-05Score breakdown is inspectableAnalysis"How scored" reveals score componentsComposite score 0.80. How scoring worksscreenshotPass
U-06Export AGENTS.md for a coding agentAnalysisDownload produces an AGENTS.md citing precedentsAGENTS.md (7429 characters)screenshotPass
U-07Mark a safeguard as already in placeAnalysisTicked safeguard moves to "Already in place" in exportsSection jumps, refresh and reading evidence preserve choices; export includes "Already in place"screenshotPass
U-08Share link reproduces the analysisAnalysisCopied ?q= link opens the same proposal and resultsShared link restored the proposal and resultsscreenshotPass
U-09Edit and re-runAnalysisEdited proposal produces different precedentsTop precedent changed to "Engineer deletes the production database directory and every backup me"screenshotPass
U-10Unrelated design shows an honest empty stateAnalysis"No close precedent" message, no padded resultsEmpty state shownscreenshotPass
U-11Search the incident databaseIncidentsTyping "redis" filters results and updates the URL60 → 3 records; URL ?q=outagescreenshotPass
U-12Evidence-type tabs, pattern filter and AI filterIncidentsEach filter narrows the listadvisories 60, prompt-injection 5, AI systems 15screenshotPass
U-13Open an incident by client-side navigationIncidentsCard click opens the record without a full reload; title updates/incidents/SEA-POST-005 — "Cloudflare bot-management outage (Nov 2025) | CollectSEA…"screenshotPass
U-14Incident page shows evidence, source, safeguards and citationIncidentsSource link, trust panel, safeguards, related incidents, citation copySource, safeguards, related incidents and BibTeX citation presentscreenshotPass
U-15Report-a-problem form validates inputIncidentsEmpty report is rejected with a messageValidation message shown (no report submitted)screenshotPass
U-16Failure pattern pagePatternsDefinition, prevention guidance and real incidents17 incident cardsscreenshotPass
U-17Framework crosswalk deep linkFrameworksAnchor to ASI01 lands on the item with linked incidentsASI01 shows 5 incidentsscreenshotPass
U-18MCP setup switches per client and copies configIntegrationsCursor tab shows .cursor/mcp.json; copy succeedsCursor config copiedscreenshotPass
U-19Command palette search (⌘K)NavigationSearching "crowdstrike" and pressing Enter opens the recordOpened /incidents/SEA-SEC-003Pass
U-20Browser back and forwardNavigationHistory navigation restores pagesBack and forward restored the right pagesPass
U-21Theme toggle persists without a flashAccessibilityDark mode set before first paint after reloadDark class applied by inline script on reloadscreenshotPass
U-22Keyboard: skip link and focusAccessibilityFirst Tab reveals "Skip to content"; Enter moves focus to mainSkip link worksPass
U-23Images and controls are labelledAccessibilityEvery button and link has an accessible name; one h1 per page6 pages: no unnamed controls, exactly one h1, all images have alt textPass
U-24Mobile layout and menuMobileNo horizontal scrolling; menu opens and navigates9 pages fit 390 px; menu navigation worksscreenshotPass
U-25Mobile analysisMobileAnalysis results usable on a phoneResults fit (390 px)screenshotPass
U-26Feedback dialog submitsFeedbackMessage accepted and confirmation shownConfirmation shownscreenshotPass
U-27Dataset download from the pageDataCSV download starts from /datasetcollectsea-incidents-2026.10.17.csv (1649 rows)screenshotPass
U-28Impact and verification pages render live dataTransparencyCharts with table fallback; self-check table30-day table view and self-check results visiblescreenshotPass
U-29Unknown pageErrorsFriendly 404 with navigationHTTP 404 page with linksscreenshotPass
U-31Scroll animations reveal content without hiding itMotionOn-screen content animates in on arrival; below-the-fold cards reveal on scroll and settle fully visible; with reduced motion nothing moves (fades only)17 arrival animations; 12 elements revealed on scroll; 0 hidden above the fold; reduced motion: fades onlyscreenshotPass
U-32Animated pattern explainer plays and is interactivePatternsOne timeline advances; safeguard steps update the diagram and caption; index previews stay stillOne timeline advances, safeguard step 3 shows "The retry reuses the same key, so the API recognises it and returns the first result.", 14 static previews on /patternsscreenshotPass
U-33Files-only analysis, reload, editing and exportExisting appsUploaded context stays private, existing-app mode survives reload and edits, exports include source contextFiles-only review, reload, editing, export and removal passed; context absent from URLscreenshotPass
U-34Input errors and mode-specific cachingExisting appsInvalid files are rejected and identical text retains the selected analysis modeInvalid archive rejected; same description analyzed in both modes with correct labelsscreenshotPass
U-35Quick review without uploadsExisting appsBehavior choices start an app review with no file or description requiredReview created from behavior choices, with safeguards and no uploaded filesscreenshotPass
U-36Public GitHub import, source preview and reviewExisting appsA repo link imports pinned context and preserves provenance through reload and exportPublic repository imported, sources previewed, commit preserved after reload and in exportscreenshotPass
U-37Unfinished review survives refresh and return navigationExisting appsNotes and behavior choices remain editable after reload and after reviewingMode, notes and removable behavior choices survive refresh and returnscreenshotPass
U-38Shared file review preserves sources in a fresh tabExisting appsSharing retains file names, contents and app mode without context in the HTTP queryFresh recipient retains app mode, file name, contents and export provenancescreenshotPass
U-39Mixed source provenance and file removalExisting appsUploaded notes are separate from GitHub files; removing imported files clears the revisionGitHub and uploaded files remain distinct; revision clears with last imported filescreenshotPass
U-40Narrow phone layoutExisting appsEvery analyzer element fits a 320 px screenAll three context paths fit a 320 px dark screenscreenshotPass
U-41Import error recoveryExisting appsA rejected repository link leaves quick review usableActionable import error followed by a successful upload-free reviewscreenshotPass
U-42Offline review fallbackExisting appsBrowser matching retains existing-app context when the API is unavailableBrowser fallback displays its limitations and retains existing-app modescreenshotPass
U-43Malformed shared contextExisting appsBad share links show an error and allow returning to the analyzerInvalid share fragment rejected with recovery navigation and no crashscreenshotPass
U-30No console errors across the siteQualityZero JavaScript errors recorded during the whole suiteNo console errorsPass

Production self-checks (latest scheduled run)

Run by the platform itself every two hours; this run 2026-10-17 18:40 UTC.

17/17 passed

Pages 4/4

Search engines 4/4

Analysis 4/4

MCP 2/2

API & data 2/2

Operations 1/1

Every case, with what was expected and observed
IDTestExpectedObservedResult
SC-01Home page is server-rendered with the analyzerPagesPassHeadline, analyzer and hydration data presentPass
SC-02Incident page shows the record and its sourcePagesPassCrowdStrike record with source linkPass
SC-03Failure-pattern page lists real incidentsPagesPassPrompt-injection pattern links its incidentsPass
SC-04Framework crosswalk page renders every itemPagesPassOWASP Agentic ASI01–ASI10 presentPass
SC-05Unknown pages return a real 404Search enginesPassHTTP 404 with noindexPass
SC-06Old URLs redirect permanentlySearch enginesPass/stats → 301 /impactPass
SC-07Pages carry canonical URLs and structured dataSearch enginesPassCanonical URL and Article JSON-LDPass
SC-08Sitemap lists documented incidentsSearch enginesPass179 URLsPass
SC-09Refund agent → duplicate-charge and approval precedentsAnalysisPass6 precedents · HybridPass
SC-10Agent reading GitHub issues → prompt-injection safeguardAnalysisPassSafeguard for indirect prompt injection among 5Pass
SC-11Cloud cleanup job → deletion-without-recovery precedentsAnalysisPass6 precedentsPass
SC-12Unrelated design returns no padded resultsAnalysisPassCoverage "none", 0 matchesPass
SC-13MCP server negotiates the protocolMCPPassprotocolVersion 2025-06-18Pass
SC-14MCP analyze_design returns structured precedentsMCPPass3 precedentsPass
SC-15Public API serves the corpusAPI & dataPass1649 recordsPass
SC-16Dataset downloads in CSVAPI & dataPass1649 rowsPass
SC-17Advisory feeds refreshed recentlyOperationsPasshealthy; last full success 2026-10-17 17:05 UTCPass

Defects found and fixed

Testing is only useful if it finds problems. Each of these was found on the live site or in its data, fixed, redeployed and re-tested. Newest last.

IDIssueFixVerified by
DEF-01The home page's own "Cloud cleanup job" example returned no precedents, although GitLab, Atlassian, UniSuper and AWS S3 deletion incidents are in the corpus.Found by HTTP suite probe A-04 (live site). A core example produced an empty result.Broadened the behavior classifier for deletion wording ("deletes", "tears down", "drops tables"), infrastructure ("virtual machines", "cloud databases") and scheduled jobs ("nightly", "background job"). Internal benchmark recall@5 rose from 0.43 to 0.50.A-04, U-09, self-check analysis-deletion, unit test
DEF-02For a shared multi-tenant cache, unrelated breaches (e.g. an unpatched web framework) ranked above cross-tenant precedents.Found by HTTP suite probe A-05 (live site). Less relevant precedents were shown first.Added a bounded likely-pattern signal: behaviors in the design imply failure patterns (a multi-tenant cache implies cross-tenant access), which re-ranks records that already qualify but can never qualify a record alone. Recall@5 0.50 → 0.525, precision@3 0.47 → 0.50; unrelated designs still return nothing.A-05, A-06, unit tests
DEF-03Typing or clicking immediately after a page loaded could be lost, because the page's code was fetched only after the HTML arrived.Found by Browser suite U-11, U-18, U-20 (first run). Fast first interactions could do nothing on slow connections.The Worker now reads the build manifest and adds modulepreload links for the current page's code, so pages become interactive sooner; the app marks when it is ready.U-11, U-18, U-20 (re-run)
DEF-04The edge cache key used only the release name, so for up to five minutes after a deploy, cached pages could reference the previous build's script files.Found by Manual check of preload tags after deploy. Possible broken pages immediately after a deployment.Cache keys now include a fingerprint of the deployed build.Post-deploy HTML inspection; P-01 to P-16
DEF-05Automated test and self-check traffic would have been counted as real visitors and analyses.Found by Test design review. Usage figures would be inflated.Requests identifying as CollectSEA test or self-check clients, and maintainer browsers carrying an internal cookie, are excluded from all usage counters.Unit test (telemetry exclusion)
DEF-06The GitHub advisory feed failed with HTTP 403 and the NVD feed timed out.Found by Service status panel during pre-release QA. New advisories were not being added.NVD query narrowed to a 7-day window (1.5 s instead of timing out); GitHub requests send the recommended API headers and accept an optional token. All three feeds succeeded on the next sync.D-01, self-check feeds
DEF-07Code samples and long labels made the home and analysis pages wider than a phone screen.Found by Mobile overflow scan during pre-release QA. Sideways scrolling on mobile.Grid columns may now shrink below their content width; long pattern names wrap.U-24, U-25
DEF-08An internet-wide security scanner (CensysInspect) was listed as an AI client connected over MCP, and its handshakes counted as MCP calls.Found by review of live usage data (October 17, 2026). The impact page overstated MCP use; all three lifetime MCP calls came from the scanner.Security scanners are now detected by user agent and counted only as automated traffic, never as visitors, analyses, MCP calls or AI clients; past scanner entries are left out of the client list.tests/telemetry_scanner.test.ts

Evidence screenshots

Captured automatically by the browser test suite on the live site.

  • U-01: Home page loads and hydrates without errors

    U-01

    Home page loads and hydrates without errors

  • U-02: Live behavior detection while typing

    U-02

    Live behavior detection while typing

  • U-03: Example prompts run an editable analysis

    U-03

    Example prompts run an editable analysis

  • U-04: Run an analysis end to end

    U-04

    Run an analysis end to end

  • U-05: Score breakdown is inspectable

    U-05

    Score breakdown is inspectable

  • U-06: Export AGENTS.md for a coding agent

    U-06

    Export AGENTS.md for a coding agent

  • U-07: Mark a safeguard as already in place

    U-07

    Mark a safeguard as already in place

  • U-08: Share link reproduces the analysis

    U-08

    Share link reproduces the analysis

  • U-09: Edit and re-run

    U-09

    Edit and re-run