CHATGPT DEMO - SyberLabs/RISE GitHub Wiki
Isolated ChatGPT Demo Setup
The former separate Cloudflare Worker demo, rise-chatgpt-demo, has been deleted and its endpoint is offline. No deployment or exposure approval has been granted. The setup commands below are historical private-demo notes; they do not identify an available endpoint. Production wrangler.production.jsonc remains unchanged with MCP disabled.
Use Node compatible with the repository engines. Dependencies are already pinned; use npm ci in a fresh checkout and npm run audio:hydrate before full audio/browser validation.
npm run build
npx wrangler deploy --config wrangler.demo.jsonc --dry-run
npx wrangler dev --config wrangler.demo.jsonc
After deployment is explicitly approved, build the exact reviewed commit, add its release marker to dist, and publish only the demo configuration:
npm run build
node --input-type=module -e 'import {execFileSync} from "node:child_process"; import {writeFileSync} from "node:fs"; const sha=execFileSync("git",["rev-parse","HEAD"],{encoding:"utf8"}).trim(); writeFileSync(`dist/release-${sha}.txt`,`${sha}\n`);'
npx wrangler deploy --config wrangler.demo.jsonc
Use the HTTPS URL Wrangler actually reports. The MCP URL is that origin plus /api/mcp. The widget frames the same origin’s /live?embed=mcp. Check the exact release marker before and after host acceptance. Confirm ordinary /live remains unframable and only the embedded shape is framable; retired inference routes still refuse shared inference.
In a signed-in ChatGPT account eligible for custom MCP apps, open Plugins → Add → Create MCP App. Name it RISE Demo, use the HTTPS /api/mcp endpoint and select No authentication: this demo serves a stateless presentation tool and requires no provider key. Review the custom-server risk acknowledgement and grant access only after explicit approval. If the account requires developer mode, enable it only with approval. Review the discovered rise_present tool and UI resource, add the connection to a fresh conversation and run the acceptance cases. Refresh metadata after server or resource changes, then use a new conversation.
Developer-mode availability depends on account/workspace policy. A signed-out browser or unavailable developer mode is an actual access blocker, not a failed RISE runtime test. Public directory submission is outside this demonstration.
Official setup: https://developers.openai.com/plugins/deploy/connect-chatgpt
ChatGPT RISE Demo Acceptance
This is a private developer-mode demonstration. RISE owns validation, rendering and playback; ChatGPT supplies the initial Current. No provider key or RISE-funded inference is used. The closed calmer control changes brightness only and makes no claim about emotional efficacy.
Ten cases
| Case | Action or prompt | Expected outcome |
|---|---|---|
| 1. Direct presentation | “Use RISE to explain why a black hole is black in three short passages. Make the first passage an attractor. Keep the words plain.” | ChatGPT calls rise_present with a valid Current. RISE offers Begin; after the reader presses it, RISE renders readable text and an attractor field. |
| 2. Indirect presentation | “Give me a short spoken, visual explanation of tides through RISE. Start with an attractor passage.” | The host selects the same tool, without the reader supplying JSON. |
| 3. Malformed proposal | Inspector calls rise_present with schema rise.invalid.v1. | Tool error names the schema problem, no structured Current or playback. Corrected valid call succeeds. |
| 4. Unsupported visual | Inspector calls with visual unknown-surface. | Strict refusal; no silent substitution. A valid supported visual succeeds. |
| 5. Calmer | During the first attractor passage, Interrupt, type “make it calmer” in Visual change, then Change visual. | Brightness target decreases by 0.1; same held text and position. Resume continues the same reading. No sampling call. |
| 6. Lower bound | Repeat the exact calmer command until the lower bound. | Target remains at least 0.4; a further change reports the limit. |
| 7. Unsupported compound | Type “make it calmer and stop” in Visual change. | Specific refusal naming supported phrases; playback and brightness unchanged. |
| 8. Pause and resume | Interrupt during a passage, inspect the held words, then Resume. | Same place is retained; the reading continues. Stop ends playback. |
| 9. Reopen and teardown | Reopen or reload the widget, press Begin, then later close it. | If the host redelivers the result, it waits for Begin and starts from the beginning, as the visible notice says. Teardown stops playback; no continuing voice or controls. |
| 10. Capability and duplicate delivery | Inspect host capabilities; engineer sends identical input/result in the browser harness. | Answer and calmer work without sampling. The presentation offers no Dive: no question box, Surface or Speak, and nothing is put to the host's model (Composer decision). Duplicate Current plays once. |
Cases 3,4 and duplicate injection use protocol/browser checks, not an instruction to persuade ChatGPT to violate its schema. Run cases 1,2,5,6,7,8,9 and sampling observation in actual ChatGPT. Keep host and fake-harness evidence separately labeled.
Evidence record
For each case record exact commit and endpoint, host/version where exposed, prompt or protocol fixture, tool name, validation result, rendered outcome, capability/refusal and pass/fail. Use only these non-sensitive example prompts. Do not capture account identifiers, credentials or unrelated conversations.
For the golden flow record a view of the first passage and field, the held passage, the brightness receipt and resumed reading. Inspect normal and reduced-motion rendering. Listen to the actual spoken output when the host/browser permits reader-activated audio. If audio cannot be heard, mark audible quality unobserved; paced fallback is not evidence of sound quality.
Engineering readiness requires reviewed code, required CI, affected unit/browser tests and a build/dry-run. Demo readiness additionally requires a real ChatGPT tool call, visible widget and successful reader redirection. Independent first-time reader observation remains a later product-value gate; this demo is not proof of demand or retention.
Engineering evidence and remaining acceptance
The observed production candidate is 1b519c5d. Its evidence is: fast CI 1,372 passed and 2 configured skips across 66 files; standalone Node tests 24 passed; Python tests 12 passed; hygiene, security compatibility, high-threshold audit, build and generated-diagram checks passed; first load measured 59.2 KB brotli against a 64 KB budget; reader gate 32 passed and 3 configured skips; affected MCP, control, catalog and red-team browser checks 34/34 passed. These records do not claim a full unit-suite run.
Audible Composer acceptance at 04d2b828 remains historical evidence for that commit. It does not establish acceptance on 1b519c5d or a repaired head. Real-host, mobile, Voice and audible acceptance for a repaired head remain pending.
| Area | Evidence | Status |
|---|---|---|
| Validated tool delivery | Worker/port 59 unit tests; real worker responses feed the browser fake host | Passed |
| Duplicate delivery | Port guard removal produces two deliveries; restored guard passes. A delayed matching result preserves held browser text and state | Passed |
| Exact calmer commands | 84 affected unit tests; browser target 0.65 → 0.55, held text unchanged, resume and no sampling | Passed |
| Replay, teardown and refusal | 172 affected unit tests; 16 affected browser cases, including delayed-startup unit regressions and displayed long-error guidance | Passed locally |
| Canvas response | Existing active-field readiness marker precedes actual pixel measurement; response remains below one second | Passed locally |
| Authored pace and portable review | Captured slider/save/project/export values all 240; full clean-browser journey passed. Earlier 240-to-280 failure remains unexplained | Open concern; remote validation pending |
| Isolated serving | Wrangler dry-run; actual local HTTP handshake, tools, resource origin, results/refusal, GET/HEAD framing and six retired routes | Passed locally |
Production candidate 1b519c5d |
Fast CI 1,372 passed/2 configured skips across 66 files; standalone Node 24 passed; Python 12 passed; hygiene, security compatibility, high-threshold audit, build and diagram passed; first load 59.2 KB brotli/64 KB; reader gate 32 passed/3 configured skips; affected MCP/control/catalog/red-team browser checks 34/34 passed | Observed |
| Repaired probe and docs | Corrected Gate 0 browser evidence and documentation repair commit are recorded in the final-fix report | New evidence; separate commit |
| Former demo Worker endpoint | Deleted; endpoint offline. No exposure or deployment approval has been granted. | Unavailable |
| Repaired-head real host, mobile, Voice and audible acceptance | Ten-case acceptance in an eligible signed-in host, including local reader redirection and audible checks | Pending |
The audit retains two existing moderate Vitest dependency findings and no high or critical findings. Builds retain existing JSON import-attribute and large-chunk warnings; the environment also reports the NO_COLOR/FORCE_COLOR warning. An earlier Dive phrase-timing browser retry is recorded separately; later affected browser runs passed. These results do not establish real-host rendering, audible quality or product value. Historical results at a4ece2d3, 856a0852 and c320e33c are not the current candidate record.
Published from docs/plans/CHATGPT-DEMO.md. Edits made here are overwritten on the next push to main.