Skip to content

Delete every path no live deployed app reaches (dead-code sweep round 4) - #767

Merged
sdcarlson merged 5 commits into
mainfrom
dead-code-round-4
Nov 3, 2026
Merged

sdcarlson merged 5 commits into
mainfrom
dead-code-round-4

Conversation

@sdcarlson

@sdcarlson sdcarlson commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Round 4 of the dead-code sweep, under a stricter rule from Seth: a path is dead if it isn't accessible from any live deployed app.

I walked the import graph from what is actually deployed (index.html, enterprise.html, kev-check.html, wormhole.html, worker/index.mjs, worker/plus-preview.mjs) plus what builds, deploys and gates them. Code reached only by tests counted as dead. Each candidate was then checked by hand, because the analyzers were wrong in places.

Removed

  • Authoring and evaluation scripts that no deployed app, build or CI job runs: ingest, voice-pack and recitation builders, catalog harvesters, evals, studies, the arena harness, release checks, and the Scriptorium CLI with its CI job.
  • The rise-chatgpt-demo config and Gate 0: Wrangler reports that Worker no longer exists on the account.
  • The Realtime route and client: /api/live/realtime was off in every config. PRIVACY.md loses its OpenAI Realtime paragraph and its date moves to 2 November 2026.
  • Journeys: the list was empty and the pane only said none were available. /library/journeys now redirects to /library.
  • Acquisition and project-asset code: no caller ever passed providers.
  • Dev-only Vite plugins: Curia's Apply and Workshop's dev POST. Copy changeset and the JSON download remain.
  • Test-only functions and their tests, plus kokoro-js and @huggingface/transformers.

Kept on purpose

  • Netlify config: rise-v2-symbolic-experience.netlify.app is live and builds from main, so netlify.toml, its function and their guards stay.
  • Render mill and tools/render: the owner closed Decision: remove render-mill (scripts) #330 to keep them, although the mill isn't reachable from a deployed app.
  • Feelings synthesis code: the owner's parking note says it stays for the rework.
  • /enterprise and /kev-check: both live.
  • local/ launcher and deploy/kev: the live Home page tells readers to run RISE on their own computer.
  • wrangler.staging.jsonc: rise-jev-preview still exists behind Access.
  • Plus routes: deployed, though checkout is switched off.
  • Test helpers that check live behaviour: for example certifySequence over the flash meter.

Not deleted, needs a decision

  • Image Stream (IMAGE_STREAM_ENABLED = false): unreachable, but RDR-031 is in progress under its own owner.
  • Flashing surfaces (FLASHING_ENABLED = false): unreachable, but removing them means editing the photosensitivity kill switch, which should be its own reviewed change.

Behaviour changes

  • /api/live/realtime answers the Worker's JSON 404 instead of 503.
  • /live is served by the asset layer. POST /live probably changes from 405 to 404; this could not be tested on Cloudflare.
  • /live?provider=openai falls back to the demo and says so.
  • The Journeys button is gone from the Library.
  • Curia's status text now says to apply a copied changeset by hand.

Restoring a tool

Authoring tools now live in git history. To bring one back:

git checkout a908c67c -- scripts/school-ingest.mjs scripts/school-ingest-recipes.mjs src/content/school/gutenberg.js

a908c67c is the last commit before this change. Many docs under docs/ still mention these tools as history, and I did not rewrite them.

Coverage lost

Unit tests went with their code, including acquisition's URL and rights refusals. docs/specs/RISE-SDK.md is no longer held to the code by a test. No browser test now covers Stop while connecting or literal passages over Realtime; src/live/literal.test.js still covers literal text at unit level.

Verification

  • Required CI check on this exact commit: see the checks below.
  • Local, before the final Netlify and Kev pin restoration: full unit suite clean in 4 of 4 runs (9,235 passed). Browser gate 72 passed, 3 skipped.
  • Local full browser suite, same tree: 440 passed, 4 skipped, 1 flaky (the known fit-mask-boundaries), 1 failed: e2e/home.spec.js:243, Home shows "By chance" instead of "Continue". Not from this change: repeated 6 times, main gave 2 failed and 1 flaky, this branch 1 failed and 2 flaky.
  • Local, on the final tree: ci-hygiene, roadmap:check, test:roadmap, the node --test list, deploy/kev Python tests, security:compat, build-wiki, Vite build, first-load budget, both Worker dry-run bundles.
  • Local runs that did not count: two full unit and gate reruns on the final tree failed, with timeouts and workers failing to start, while the machine was stalled (unit took 41 to 46 minutes against about 1, and the failing tests changed between runs). They are not evidence either way, which is why the clean-machine CI result decides.
  • Caught late: my first push had deleted netlify.toml although the Netlify site is live, and removed a Kev pin deploy/kev needs. Both are restored here.

🤖 Generated with Claude Code

dryrun and others added 4 commits November 2, 2026 02:43
…, the gone demo Worker, test-only modules

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eys, acquisition and dev-only plugins

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… scripts used

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@netlify

netlify Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for rise-v2-symbolic-experience ready!

Name Link
🔨 Latest commit 2718a51
🔍 Latest deploy log https://app.netlify.com/projects/rise-v2-symbolic-experience/deploys/6ae971728343f9fb6a9ed669
😎 Deploy Preview https://deploy-preview-767--rise-v2-symbolic-experience.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-02T13:31:24.810201Z eb6fd09 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

…i links

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sdcarlson
sdcarlson merged commit bce75dc into main Nov 3, 2026
9 checks passed
@sdcarlson
sdcarlson deleted the dead-code-round-4 branch November 3, 2026 05:38
sdcarlson pushed a commit that referenced this pull request Nov 4, 2026
Bring this branch up to date with main's dead-code sweeps (#765, #766,
#767) so it can merge. Two files conflicted:

- worker/mcp-server.mjs: main deleted Gate 0 and the witness log, made
  dispatch take the card as its third argument
  (dispatch(message, origin, card = null)) and deleted handleLive. All
  of that is kept as main has it. This branch's count callback becomes
  dispatch's fourth argument (count = () => {}): dispatch passes it to
  call() for rise_present, and handleMcp still derives the host with
  hostOf and writes through countEvent. No response changes.
- vitest.fast.config.js: main lowered FAST_TEST_FILES from 169 to 157
  after deleting test files, and this branch adds
  worker/telemetry.test.js. The merged list collects 158 files
  (vitest list --filesOnly, and the fast run's JSON report), so
  FAST_TEST_FILES is 158.

PRIVACY.md, public/PRIVACY.md, public/privacy.html,
worker/production-config.test.js and wrangler.production.jsonc merged
without conflict; npm run verify:legal confirms the generated copies
still match PRIVACY.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
sdcarlson pushed a commit that referenced this pull request Nov 4, 2026
Bring this branch up to date with main's dead-code sweeps (#765, #766,
#767). It merges the updated telemetry/composer-counts (8f45346), which
already merges main at bce75dc, so this one merge brings in both.

Two files conflicted:

- vitest.fast.config.js: #762's merge set FAST_TEST_FILES to 158, and
  this branch had raised it from 170 to 174 for its four test files.
  The merged list collects 162 files (vitest list --filesOnly, and the
  fast run's JSON report), so FAST_TEST_FILES is 162.
- docs/specs/ARCHITECTURE.md: only the generated diagram conflicted.
  Took main's and regenerated it with npm run docs:diagram, which adds
  this branch's src/core/telemetry.js to core's module count and its
  imports to the audio, components and live edges into core.

One break git could not see: main (#767) deleted
worker/live-realtime.mjs, whose readText worker/count.mjs imports, and
moved readText unchanged into worker/mcp-server.mjs as a private
function. worker/mcp-server.mjs now exports it and worker/count.mjs
imports it from there. It is the same function count.mjs used before,
so the 512-byte and UTF-8 limits on a beacon are unchanged.

PRIVACY.md, public/PRIVACY.md, public/privacy.html, src/audio/engine.js,
src/audio/engine.lifecycle.test.js, src/components/Home.js,
src/components/read/Chamber.js, src/core/error-boundary.js,
src/live/host/LiveHost.js, src/live/host/LiveHost.test.js,
worker/index.mjs, worker/production-config.test.js and
wrangler.production.jsonc merged without conflict; npm run verify:legal
confirms the generated legal copies still match PRIVACY.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHrJ4hmTtR1RFNpc215EK7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant