Repository navigation
feat(gateway): /gateway, a candidate front door: the record, the plan, install, join (MAJOR, draft) - #654
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Strix Security Review✅ No open security findings. PR summary: Adds a new `noindex` `/gateway` page that documents seven sourced AI failure cases, pairs each part of the product plan with what runs today versus what is not built yet, gives install instructions for the CLI, npm package and MCP server, and includes an email-and-note join form that writes to the existing v15 signup table. Review summaryReviewed all seven changed files: the new The page renders only build-time constants — The join form is the only write path: an explicit three-field insert ( Two suspicions were raised during review and both were rejected on validation: the client-only note-length cap and the test harness's Ruled out (2)
Review history (2)
Review 2 on this PR · Reviewed by Strix |
There was a problem hiding this comment.
Reviewed all seven changed files in the pull request: the new /gateway page, the install and join components, the incident data module, the added npm script, and the two new tests. The page is a server component that renders only repository-authored copy; every outbound link and transaction hash is a hard-coded constant, and no user input reaches a rendering sink, so React's escaping covers the whole surface. The single untrusted input is the join form, which sends an email and an optional note through a parameterized supabase-js insert with a fixed column set into the signup table; inserts are validated as failures on both error and thrown exceptions, so a failed write is never shown as success. No authentication, authorization, cryptographic, deserialization, path, redirect, or command-execution logic is added or removed, and static analysis of the changed source files returned no results. No security vulnerabilities were confirmed in the changed code.
Reviewed by Strix
Configure security review settings
…, install, join (MAJOR, draft) A new page, not a replacement for the home page or hero. Kept out of search (robots noindex) until Sean decides whether it becomes the landing page. - The record: seven documented AI failures from 2024-2025, each with its source link, date, a paraphrase from the source and a quote matched word for word against the fetched text (lib/ai-incidents.ts). - The plan, in Sean's voice: HAL, RepID, receipts, x402, testnet and portability, each with a "Today" line true of the shipped code and live engine and a "Not yet" line, following the 2026-10-23 claims audit. - Install: the CLI (Inspect and the sentence check), the npm package and the MCP server, reusing the home page's own install constants, then the six-stage ramp (/agents to /leaderboard). - Join: email plus an optional note into a new gateway_signups table (SQL for Sean in the report). Not waitlist: its insert trigger mails a TrustTrader promotion. Fails closed until the table exists. Tests: tests/gateway-page.test.ts renders the page (20 checks, two mutants caught); tests/e2e/gateway-walk.mjs drives it in Chromium with a stubbed Supabase origin (21/21). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eeded trustshell_v15_waitlist already exists and fits [MEASURED 2026-10-24]: RLS on, anon may insert and has no read policy, no triggers, every column but email defaulted, and the site's own v15 form wrote to it from the browser in production on 2026-09-19. The note goes in its metadata column. This drops the DDL step the first commit needed. Still never `waitlist`, whose insert trigger mails a TrustTrader promotion. Unit test 20/20 and browser walk 21/21 rerun against the new table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…double-escaping) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8ec6c9c to
5e07efd
Compare
There was a problem hiding this comment.
Reviewed all seven changed files: the new /gateway page, the install and join client components, the incident data module, the test script added to package.json, and the two new test files. No security vulnerabilities found.
The page renders only build-time constants — AI_INCIDENTS, the PIECES array, and the BaseScan transaction literals — with no request, URL, cookie, or user-derived value anywhere on the path, so there is no tainted input reaching a text node or an href; every external link is a literal https URL and the source links are pinned by assertions in the new test suite. The install component copies fixed npm and MCP strings to the local clipboard on click only, and none of them contains a credential, while the client never fetches on load.
The join form is the only write path: an explicit three-field insert (email, source, metadata.note) into trustshell_v15_waitlist through the browser publishable key. It adds no new capability — that table and key were already writable anonymously from production code — narrows the payload compared with the two existing signup forms, keeps the service-role key out of the client bundle, and fails closed to a fixed "Not saved" message instead of surfacing raw PostgREST errors. Nothing in the repository reads the table, so the stored note has no rendering sink. The CodeQL double-escaping alert is test-only and decodes entities in the safe order.
Two suspicions were raised during review and both were rejected on validation: the client-only note-length cap and the test harness's --base write path. Formal verdict is approve.
Reviewed by Strix
Configure security review settings
Weight: MAJOR (new public copy and launch language, r31). Sean approves explicitly; no self-merge. A new page at
/gateway. It does not touch the home page or hero, and it isnoindexuntil Sean decides whether it becomes the landing page.Full report:
E:\dev\reports\2026-10-24\GATEWAY_PAGE.md.What the page does
The record. Seven documented AI failures from 2024–2025: Air Canada's chatbot (tribunal, Feb 2024), Google AI Overviews (Google's own post, May 2024), Cursor's support bot (Ars Technica, Apr 2025), Replit's agent deleting a database (The Register, Jul 2025), the AI-written fake reading list (NPR, May 2025), Deloitte's report for the Australian government (AP, Oct 2025), and the UK High Court's 18 fake citations (National Archives, Jun 2025). Each shows its source link and date, a paraphrase of the source, and a quote. Every source was fetched on 2026-10-24, and every quote was matched word for word against the fetched text (
lib/ai-incidents.tslists the traps we avoided).The plan, in Sean's voice. HAL, RepID, receipts, x402, testnet, and portability/privacy. Each shows the idea, a Today line that is true of the shipped code and the live engine, and a Not yet line. The wording follows the 2026-10-23 claims audit (fix(site): narrow claims strangers meet tonight to what the code does (keys, extension, model families, /inspect) #615, fix: say only what the code does (Inspect commit label), credit what we build on, one copyright holder (LOW + Sean-approved licence) #619, fix(site,docs): narrow deeper-page claims to what the code does (replays #616 on main; LOW) #644).
Install. The CLI (Inspect plus the sentence check), the npm package (the README's
verifyOutputsnippet) and the MCP server. All of it reusescomponents/home-agent.tsxconstants, so/and/gatewaypin the same version. Below that, the six-stage ramp from/agentsto/leaderboard.Join. An email plus an optional note, saved to
trustshell_v15_waitlistwith no new table. That table is clean:Not
waitlist. Its insert trigger emails a TrustTrader welcome ("Drawdown: 0% vs 49.63%", "$499/mo value"), and another trigger posts the address to Telegram. Any failure reads "Not saved" and points to GitHub; it never shows success.For Sean
waitlistwelcome email;trinity-prefix;Verified
npx jest tests/gateway-page.test.ts: 20/20. It renders the page with fetch stubbed and confirms zero requests. Two deliberate mutants were caught: a write towaitlist, and the copy "hallucination-free".npx tsc --noEmit: exit 0.npm run test:gateway-walk(Chromium, Supabase origin stubbed): 21/21. It covers:{email, source, metadata:{note}}, and only totrustshell_v15_waitlist;@hyperdag/trustshell@1.8.1from npm:guardedX402Paymentgot "Payment verification failed". No transaction was sent, so there are no new tx hashes.Windows
npm testshows 8 env-only failures in 7 suites (CRLF, path join, timing), none in this PR's files. Linux CI is the gate.🤖 Generated with Claude Code